Your own media server, set up for you.

Kendi medya sunucun, kurulumu hazır.

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.

The idea
Fikir

What is this?

Bu proje ne yapıyor?

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.

Good fit if you

  • have a PC, mini PC, or home server that stays on
  • want movies, shows, and music in one library for the whole house
  • would rather not configure eleven apps by hand
  • are fine running a few Docker commands

Kimler için uygun?

  • Sürekli açık kalan bir bilgisayarı, mini PC'si ya da ev sunucusu olanlar
  • Film, dizi ve müziği evdeki herkes için tek bir kütüphanede toplamak isteyenler
  • On bir uygulamayı tek tek ayarlamakla uğraşmak istemeyenler
  • Birkaç Docker komutu çalıştırmaktan çekinmeyenler

What you get on day one

  • one username and password for every app
  • Movies, Shows, and Music libraries in Emby
  • a request page and a dashboard with a release calendar
  • Turkish and English subtitles by default

Kurulumdan hemen sonra

  • Bütün uygulamalara aynı kullanıcı adı ve şifreyle giriyorsun
  • Emby'de film, dizi ve müzik kütüphanelerin hazır oluyor
  • Bir istek sayfan ve yayın takvimli bir ana panelin oluyor
  • Altyazılar varsayılan olarak Türkçe ve İngilizce iniyor
The pipeline
Akış

How a request travels

Bir istek nasıl ilerliyor?

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

You ask for it

Filmi istiyorsun

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.

Radarr / Sonarr / Lidarr

The right app takes over

İş ilgili uygulamaya geçiyor

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 + FlareSolverr

It searches

Arama yapılıyor

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.

qBittorrent

It downloads

İndirme başlıyor

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.

Radarr + Bazarr

It gets tidied up

Dosya düzenleniyor

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.

Emby

You watch it

İzlemeye hazır

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.

Under the hood
Arka planda

What happens on the first boot

İlk açılışta neler oluyor?

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.

arr-seed

Config files are written first

Önce ayar dosyaları yazılıyor

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.

docker compose

The apps start

Uygulamalar açılıyor

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

Everything gets connected

Uygulamalar birbirine bağlanıyor

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.

cleanup

The helpers remove themselves

Yardımcı container'lar siliniyor

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.

The apps
Uygulamalar

What's inside

Neler var?

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ı.

Auto setup
Otomatik ayarlar

What you don't have to configure

Senin uğraşmana gerek kalmayanlar

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.

Install
Kurulum

Start in three commands

Üç komutla kurulum

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

Before the first start

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.

İlk çalıştırmadan önce

.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.

When it's done

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.

Kurulum bitince

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.

Daily use
Kullanım

Using it after setup

Kurulumdan sonra nasıl kullanılıyor?

Add a movie or show

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.

Film ya da dizi eklemek

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.

Add music

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.

Müzik eklemek

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.

Watch

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.

İzlemek

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.

Keep it running

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.

Bakım ve yedekleme

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
Questions
Sorular

Frequently asked

Sık sorulan sorular

Setup says it failed. What now?

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.

qBittorrent login failed during setup.

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.

Can I change the password later?

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.

Can I use it from my phone or another computer?

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.

Should I open these ports to the internet?

Not directly. If you want access from outside, put a reverse proxy with HTTPS in front, or use a VPN into your home network.

Where do my files go?

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.

Is Emby free?

The server and basic playback are free. Some features, such as hardware transcoding and some of the TV apps, need an Emby Premiere subscription.

Kurulum hata verdi, ne yapmalıyım?

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.

Kurulum sırasında qBittorrent'e giriş yapılamadı.

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.

Şifremi sonradan değiştirebilir miyim?

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.

Telefondan ya da başka bir bilgisayardan erişebilir miyim?

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.

Bu portları internete açmalı mıyım?

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.

Dosyalarım nerede duruyor?

İ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.

Emby ücretsiz mi?

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.