Ask for a movie, show, or album. The stack finds it, downloads it, adds subtitles, and puts it in a library you can watch on your TV, phone, or browser. One command connects all eleven apps to each other.
İzlemek istediğin filmi, diziyi ya da albümü seç. Sistem onu buluyor, indiriyor, altyazısını ekliyor ve kütüphanene koyuyor. Sen de TV'den, telefondan ya da tarayıcıdan izliyorsun. On bir uygulamanın birbirine bağlanması tek bir komutla hallediliyor.
There is a well-known family of open source apps, nicknamed the "*arr" apps (Sonarr, Radarr, Lidarr, Prowlarr), that together run a personal media library. Each one does a small job: one tracks TV shows, one tracks movies, one manages search sources. Put them together with a download client and a media server, and you get something close to a private streaming service that fills itself.
The catch is that these apps don't know about each other out of the box. Every guide asks you to copy API keys from one app to another, set folder paths, add download clients, and click through a first-run wizard in each UI. It's easy to get one setting wrong and spend an hour finding out why nothing downloads.
arr-stack packs all of them into one docker-compose.yml and adds a setup script that does that wiring for you. You edit one .env file, run one command, and log in to a system that already works.
Kişisel medya kütüphanesi kurmak isteyenlerin sıkça kullandığı, "*arr" diye anılan açık kaynak uygulamalar var: Sonarr, Radarr, Lidarr, Prowlarr. Her birinin kendi görevi var. Biri dizileri, biri filmleri takip ediyor, bir diğeri arama kaynaklarını yönetiyor. Bunlara bir indirme programı ve bir medya sunucusu da eklenince, kendi kendini dolduran kişisel bir Netflix gibi bir şey ortaya çıkıyor.
İşin zor tarafı, bu uygulamaların kurulduklarında birbirinden haberi olmaması. Rehberlerin çoğu senden API anahtarlarını bir uygulamadan diğerine kopyalamanı, klasör yollarını girmeni, indirme programını tanıtmanı ve her uygulamanın kurulum ekranını tek tek geçmeni istiyor. Tek bir ayarı yanlış girmek, neden hiçbir şeyin inmediğini bulmak için saatler harcamana yetiyor.
arr-stack bu uygulamaların hepsini tek bir docker-compose.yml dosyasında topluyor. Yanına da bu bağlantıları senin yerine kuran bir script ekliyor. Sen yalnızca .env dosyasını düzenleyip tek bir komut çalıştırıyorsun. Giriş yaptığında her şey çalışır durumda oluyor.
Say you want to watch a movie that came out last month. Here is what happens after you click "Request".
Diyelim ki geçen ay vizyona girmiş bir filmi izlemek istiyorsun. "Request" düğmesine bastıktan sonra şunlar oluyor:
Seerr shows posters, trailers, and descriptions, much like a streaming app. You search for the movie and click Request. Anyone in the house with an Emby account can do this.
Seerr, tıpkı bir dizi-film platformu gibi afişleri, fragmanları ve özetleri gösteriyor. Filmi aratıp "Request" düğmesine basıyorsun. Emby hesabı olan herkes bunu yapabiliyor.
Movies go to Radarr, shows to Sonarr, music to Lidarr. The app adds the title to its watch list and decides what quality it wants. For a show, Sonarr will keep watching for new episodes as long as the show is monitored.
Filmlerle Radarr, dizilerle Sonarr, müzikle Lidarr ilgileniyor. Uygulama içeriği takip listesine alıyor ve hangi kalitede indireceğine karar veriyor. Dizilerde Sonarr, takibi bırakmadığın sürece yeni çıkan bölümleri de kendiliğinden indiriyor.
Prowlarr keeps the list of indexers (the sites that list releases) and searches all of them at once. Some sites sit behind a Cloudflare check; FlareSolverr opens those in a headless browser so the search still works.
Prowlarr, indexer'ların (yani içerikleri listeleyen sitelerin) listesini tutuyor ve hepsinde aynı anda arama yapıyor. Bazı siteler Cloudflare korumasının arkasında. FlareSolverr bu siteleri arka planda bir tarayıcıyla açıyor, böylece arama takılmadan devam ediyor.
Radarr picks the best result and hands it to qBittorrent under the movies category, so the file lands in downloads/movies. Seeding stops at ratio 1.
Radarr en iyi sonucu seçip movies kategorisiyle qBittorrent'e gönderiyor. Dosya downloads/movies klasörüne iniyor. Paylaşım oranı 1'e ulaşınca seed duruyor.
When the download is done, Radarr moves the file to media/movies with a clean name like Movie Title (2026). Bazarr notices the new file and fetches subtitles in your languages.
İndirme bitince Radarr dosyayı Film Adı (2026) gibi düzgün bir isimle media/movies klasörüne taşıyor. Bazarr yeni dosyayı fark edip seçtiğin dillerde altyazı indiriyor.
Radarr tells Emby to rescan its library. The movie shows up with poster and metadata, ready to play in a browser or in the Emby apps for TV, phone, and tablet.
Radarr, Emby'ye kütüphaneyi yeniden taramasını söylüyor. Film afişi ve bilgileriyle birlikte kütüphanede beliriyor. Artık tarayıcıdan ya da TV, telefon ve tabletteki Emby uygulamasından izleyebilirsin.
Two short-lived helper containers run setup/bootstrap.py. They do their work in a fixed order and then remove themselves.
setup/bootstrap.py script'ini, işi bitince kapanan iki yardımcı container çalıştırıyor. Adımlar her zaman aynı sırayla ilerliyor ve sonunda bu container'lar kendilerini siliyor.
Before any app starts, arr-seed generates API keys for Sonarr, Radarr, Lidarr, and Prowlarr and writes them into their config files. It also writes the qBittorrent login and tells Bazarr where Sonarr and Radarr are. Knowing the keys up front means nothing has to be copied later.
Uygulamalar daha açılmadan arr-seed devreye giriyor. Sonarr, Radarr, Lidarr ve Prowlarr için API anahtarlarını üretip ayar dosyalarına yazıyor. qBittorrent'in giriş bilgilerini de yazıyor ve Bazarr'a Sonarr ile Radarr'ın adresini veriyor. Anahtarlar en baştan belli olduğu için sonradan hiçbir şeyi kopyalamak gerekmiyor.
The apps that depend on those files wait until arr-seed has finished, then start with the keys already in place. The first start can take a few minutes while each app sets up its database.
Bu dosyalara ihtiyacı olan uygulamalar arr-seed'in işini bitirmesini bekliyor, sonra anahtarları hazır bulup açılıyor. Her uygulama ilk açılışta kendi veritabanını oluşturduğu için bu birkaç dakika sürebilir.
arr-setup waits for each app to answer, then goes through them one by one over their APIs: qBittorrent, Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Emby, Seerr, Homarr. If one step fails, it logs the error and moves on to the next.
arr-setup her uygulamanın yanıt vermesini bekliyor, ardından API'leri üzerinden sırayla hepsini ayarlıyor: qBittorrent, Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Emby, Seerr ve Homarr. Bir adımda hata çıkarsa bunu loga yazıp bir sonrakine geçiyor.
If every step worked, arr-seed and arr-setup delete their own containers so they don't clutter Docker Desktop. If something failed, arr-setup stays so you can read docker logs arr-setup.
Her şey yolunda gittiyse arr-seed ve arr-setup, Docker Desktop'ta boşuna yer kaplamasınlar diye kendilerini siliyor. Bir sorun çıktıysa arr-setup silinmiyor; docker logs arr-setup komutuyla ne olduğuna bakabilirsin.
The script checks before it changes anything, so running docker compose up -d again is safe. It adds what's missing and leaves the rest alone, including the changes you made to the Homarr board.
Script bir ayarı değiştirmeden önce mevcut duruma bakıyor. Bu yüzden docker compose up -d komutunu istediğin kadar tekrar çalıştırabilirsin. Yalnızca eksik olanları tamamlıyor, Homarr panosunda yaptığın değişiklikler de dahil olmak üzere geri kalan her şeyi olduğu gibi bırakıyor.
Every app runs in its own Docker container. The number is the port: open http://localhost:PORT in a browser on the same machine. More detail per app.
Her uygulama kendi Docker container'ında çalışıyor. Yanındaki numara port numarası; aynı bilgisayardan tarayıcıda http://localhost:PORT adresini açman yeterli. Her uygulamanın ayrıntıları.
These are the steps a typical guide walks you through by hand. Here the script does them.
Kurulum rehberlerinde elle yapman istenen adımların hepsini burada script yapıyor.
STACK_USER and STACK_PASSWORD. Seerr signs you in with the same Emby account.tv, movies, music) and its library folder as the root folder.PROWLARR_INDEXERS are added for you. One that fails its connection test is skipped with a message in the log.SUBTITLE_LANGUAGES (default Turkish, then English), and turns on providers that work without an account, including turkcealtyazi.org, YIFY Subtitles, and Gestdown.STACK_USER ve STACK_PASSWORD ile giriyorsun. Seerr'e de aynı Emby hesabınla giriş yapıyorsun.tv, movies, music) kullanıyor. Kütüphane klasörleri de hazır tanımlanıyor.PROWLARR_INDEXERS içinde yazanlar baştan ekleniyor. Bağlantı testini geçemeyen olursa atlanıyor ve loga not düşülüyor.SUBTITLE_LANGUAGES ayarına göre bir dil profili oluşturuyor (varsayılan olarak önce Türkçe, sonra İngilizce). turkcealtyazi.org, YIFY Subtitles ve Gestdown gibi üyelik istemeyen sağlayıcılar açılıyor.You need Docker: Docker Desktop on Windows or macOS, Docker Engine on Linux. Leave room on the disk for your library; downloads and media both live inside the project folder unless you point them elsewhere in .env.
İhtiyacın olan tek şey Docker: Windows ve macOS'ta Docker Desktop, Linux'ta Docker Engine. Diskte kütüphanen için yer ayırmayı unutma. .env dosyasında başka bir yer belirtmediğin sürece indirmeler de medya dosyaları da proje klasöründe tutuluyor.
git clone https://github.com/MihrimatriX/arr-stack.git && cd arr-stack
cp .env.example .env
docker compose up -d && docker logs -f arr-setup
Open .env and change STACK_PASSWORD from changeme. Check TZ and, if you want, the indexer and subtitle lists. Port numbers only need changing if something else on your machine already uses them.
.env dosyasını aç ve STACK_PASSWORD değerini varsayılan changeme şifresinden farklı bir şeyle değiştir. TZ ayarını kontrol et, istersen indexer ve altyazı dili listelerini de düzenle. Portları ancak bilgisayarında aynı portu kullanan başka bir program varsa değiştirmen gerekir.
The log ends with done. Open localhost:7575 for Homarr and sign in. Homarr requires a symbol in the password; if yours has none, use it with ! added at the end, only for Homarr.
Log, done satırıyla bitiyor. Homarr'ı açmak için localhost:7575 adresine git ve giriş yap. Homarr şifrede en az bir sembol istiyor. Şifrende sembol yoksa Homarr'a girerken sonuna ! ekle; diğer uygulamalarda şifren aynen geçerli.
Open Seerr (port 5055), sign in with your stack login, search, and click Request. You can also add titles straight in Radarr or Sonarr if you want to pick the quality profile yourself.
Seerr'i aç (port 5055), kendi kullanıcı adın ve şifrenle giriş yap, istediğin içeriği arat ve "Request" düğmesine bas. Kalite profilini kendin seçmek istersen içeriği doğrudan Radarr'a ya da Sonarr'a da ekleyebilirsin.
Seerr handles movies and shows only. For music, open Lidarr (port 8686), search for an artist, and add it. Lidarr will fetch the albums and keep watching for new ones.
Seerr yalnızca film ve dizilerle çalışıyor. Müzik için Lidarr'ı aç (port 8686), bir sanatçı arat ve ekle. Lidarr sanatçının albümlerini indiriyor, yeni albüm çıktığında onu da indiriyor.
Open Emby (port 8096) in a browser, or install the Emby app on your TV or phone and point it at your computer's address on the local network.
Emby'yi tarayıcıda aç (port 8096). TV'den ya da telefondan izlemek için Emby uygulamasını kur ve sunucu adresi olarak bilgisayarının ev ağındaki IP adresini gir.
Watchtower checks for new images every night at 04:30 and updates only this stack's containers, removing old images afterwards. Back up config/ and .env and you can rebuild the whole setup on another machine.
Watchtower her gece 04:30'da güncelleme olup olmadığına bakıyor, yalnızca bu stack'teki container'ları güncelliyor ve eski imajları siliyor. config/ klasörünü ve .env dosyasını yedeklersen kurulumun tamamını başka bir bilgisayarda aynen yeniden kurabilirsin.
arr-stack/
├── docker-compose.yml # every service
├── .env # your settings (copied from .env.example)
├── setup/bootstrap.py # first-run wiring
├── config/ # each app's settings and database
├── downloads/ # tv/ movies/ music/ categories from qBittorrent
└── media/
├── movies/ # what Emby shows as Movies
├── tv/ # Shows
└── music/ # Music
arr-stack/
├── docker-compose.yml # tüm servisler
├── .env # senin ayarların (.env.example'dan kopyalanır)
├── setup/bootstrap.py # ilk kurulum script'i
├── config/ # uygulamaların ayarları ve veritabanları
├── downloads/ # qBittorrent'in tv/ movies/ music/ klasörleri
└── media/
├── movies/ # Emby'deki film kütüphanesi
├── tv/ # dizi kütüphanesi
└── music/ # müzik kütüphanesi
Run docker logs arr-setup. Lines starting with !! name the app and the error. Fix the cause, then run docker compose up -d again; finished steps are skipped.
There is probably an older qBittorrent config in config/qbittorrent with a different password. Put that password in STACK_PASSWORD, or delete the folder and start again.
Sonarr, Radarr, Lidarr, Prowlarr, and Bazarr pick up a new STACK_PASSWORD on the next docker compose up -d. qBittorrent, Emby, and the Homarr account keep their old password, so change it in those apps first and then update .env.
Yes, on the same local network. Use your computer's LAN address instead of localhost, for example http://192.168.1.20:8096. Homarr tiles link to localhost, so edit them if you use the dashboard from another device.
Not directly. If you want access from outside, put a reverse proxy with HTTPS in front, or use a VPN into your home network.
Downloads land in downloads/ and finished, renamed files in media/. You can point both somewhere else, such as a large external disk, with the paths in .env.
The server and basic playback are free. Some features, such as hardware transcoding and some of the TV apps, need an Emby Premiere subscription.
docker logs arr-setup komutunu çalıştır. !! ile başlayan satırlarda hangi uygulamada ne hatası olduğu yazıyor. Sorunu giderdikten sonra docker compose up -d komutunu tekrar çalıştır; başarıyla tamamlanmış adımlar tekrarlanmıyor.
Büyük ihtimalle config/qbittorrent klasöründe, başka bir şifreyle yapılmış eski bir kurulumun ayarları duruyor. Ya o şifreyi STACK_PASSWORD olarak yaz ya da klasörü silip kurulumu baştan başlat.
Sonarr, Radarr, Lidarr, Prowlarr ve Bazarr, STACK_PASSWORD değerini değiştirdikten sonraki ilk docker compose up -d komutunda yeni şifreye geçiyor. qBittorrent, Emby ve Homarr ise eski şifreyle kalıyor. Bunlarda şifreyi önce uygulamanın kendi ayarlarından değiştir, sonra .env dosyasını güncelle.
Evet, aynı ev ağında olduğun sürece. localhost yerine bilgisayarının ev ağındaki IP adresini kullan, örneğin http://192.168.1.20:8096. Homarr'daki kartlar localhost adresine yönlendiriyor; paneli başka bir cihazdan kullanacaksan kartlardaki adresleri güncellemen gerekiyor.
Doğrudan açmamalısın. Dışarıdan erişmek istiyorsan önüne HTTPS destekli bir ters proxy koy ya da ev ağına VPN üzerinden bağlan.
İndirilen dosyalar downloads/ klasörüne, işlenip yeniden adlandırılanlar media/ klasörüne gidiyor. İstersen .env dosyasındaki yolları değiştirerek ikisini de örneğin büyük bir harici diske taşıyabilirsin.
Sunucunun kendisi ve temel oynatma özellikleri ücretsiz. Donanım hızlandırmalı dönüştürme (transcoding) ve bazı TV uygulamaları gibi özellikler için Emby Premiere aboneliği gerekiyor.