From 6b6d042423d3412f90adf9d1147f22d8a0dba1e0 Mon Sep 17 00:00:00 2001 From: y1lm0z Date: Wed, 26 Aug 2026 11:36:31 +0300 Subject: [PATCH] qbit --- apps/gluetun/config.json | 51 ++++++++++++++++++ apps/gluetun/docker-compose.yml | 35 ++++++++++++ apps/gluetun/metadata/description.md | 56 ++++++++++++++++++++ apps/qbittorrent-vpn/config.json | 20 +++++++ apps/qbittorrent-vpn/docker-compose.yml | 23 ++++++++ apps/qbittorrent-vpn/metadata/description.md | 29 ++++++++++ 6 files changed, 214 insertions(+) create mode 100644 apps/gluetun/config.json create mode 100644 apps/gluetun/docker-compose.yml create mode 100644 apps/gluetun/metadata/description.md create mode 100644 apps/qbittorrent-vpn/config.json create mode 100644 apps/qbittorrent-vpn/docker-compose.yml create mode 100644 apps/qbittorrent-vpn/metadata/description.md diff --git a/apps/gluetun/config.json b/apps/gluetun/config.json new file mode 100644 index 0000000..a12246d --- /dev/null +++ b/apps/gluetun/config.json @@ -0,0 +1,51 @@ +{ + "name": "Gluetun VPN (Mullvad)", + "id": "gluetun", + "available": true, + "short_desc": "Mullvad'a WireGuard ile baglanan, kill-switch'li tek merkezi VPN gecidi. Baska container'lar bunun agini paylasarak VPN'den gecebilir.", + "author": "y1lm0z", + "port": 8080, + "categories": ["network", "utilities"], + "description": "Gluetun, Mullvad VPN sunucularina WireGuard ile baglanan ve kill-switch (VPN kopunca internet de kesilir) saglayan tek, merkezi bir ag gecididir. Bu uygulama tek basina bir torrent istemcisi degildir; baska container'larin (orn. qBittorrent) 'network_mode: container:gluetun' ile bu container'in ag namespace'ini paylasip trafiklerini VPN uzerinden gecirmesi icin dusunulmustur. WebUI portu (8080) ve BitTorrent peer portu (6881 tcp/udp) burada host'a aciliyor, cunku ag namespace'ini gercekte sahiplenen container bu. Ileride baska bir seyi ayni VPN'e baglamak istersen, o servisin ihtiyac duydugu portu bu docker-compose.yml'e ekleyip diger projede 'network_mode: container:gluetun' kullanman yeterli - detaylar asagida.", + "tipi_version": 1, + "version": "latest", + "source": "https://github.com/qdm12/gluetun", + "website": "https://github.com/qdm12/gluetun-wiki", + "exposable": true, + "force_expose": false, + "https": false, + "no_gui": false, + "supported_architectures": ["arm64", "amd64"], + "form_fields": [ + { + "type": "password", + "label": "WireGuard Private Key", + "hint": "Mullvad hesabinda 'WireGuard configuration' sayfasindan indirdigin .conf dosyasindaki PrivateKey degeri", + "required": true, + "env_variable": "WIREGUARD_PRIVATE_KEY" + }, + { + "type": "text", + "label": "WireGuard Addresses", + "hint": "Ayni .conf dosyasindaki Address alani, IPv4 kismi (orn. 10.64.222.10/32)", + "placeholder": "10.64.222.10/32", + "required": true, + "env_variable": "WIREGUARD_ADDRESSES" + }, + { + "type": "text", + "label": "Sunucu Sehirleri (opsiyonel)", + "hint": "Virgulle ayrilmis Mullvad sehir adlari, orn: Amsterdam,Stockholm. Bos birakirsan rastgele sunucu secilir.", + "required": false, + "env_variable": "SERVER_CITIES" + }, + { + "type": "text", + "label": "Firewall Outbound Subnets", + "hint": "Docker ve LAN aginin WebUI'ye erisebilmesi icin izinli subnetler. Guvenlik icin daha dar bir araligi (orn. sadece kendi LAN'in) girebilirsin.", + "default": "172.16.0.0/12,192.168.0.0/16,10.0.0.0/8", + "required": false, + "env_variable": "FIREWALL_OUTBOUND_SUBNETS" + } + ] +} diff --git a/apps/gluetun/docker-compose.yml b/apps/gluetun/docker-compose.yml new file mode 100644 index 0000000..637724b --- /dev/null +++ b/apps/gluetun/docker-compose.yml @@ -0,0 +1,35 @@ +services: + gluetun: + image: qmcgaw/gluetun:latest + container_name: gluetun + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + environment: + - VPN_SERVICE_PROVIDER=mullvad + - VPN_TYPE=wireguard + - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} + - WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES} + - SERVER_CITIES=${SERVER_CITIES} + - FIREWALL_OUTBOUND_SUBNETS=${FIREWALL_OUTBOUND_SUBNETS:-172.16.0.0/12,192.168.0.0/16,10.0.0.0/8} + - TZ=${TZ} + ports: + # qBittorrent WebUI (qbittorrent-vpn uygulamasi bu netns'i paylasiyor) + - 8080:8080 + # qBittorrent BitTorrent peer portu (TCP + UDP ayni numara olmali) + - 6881:6881 + - 6881:6881/udp + # --- ileride baska bir seyi buraya VPN'lemek istersen --- + # o servisin host:container portunu buraya ekle, orn: + # - 9117:9117 # ornek: baska bir uygulamanin WebUI'si + # detaylar için metadata/description.md + volumes: + - ${APP_DATA_DIR}/data/gluetun:/gluetun + restart: unless-stopped + x-runtipi: + is_main: true + internal_port: 8080 + +x-runtipi: + schema_version: 2 diff --git a/apps/gluetun/metadata/description.md b/apps/gluetun/metadata/description.md new file mode 100644 index 0000000..2ca85a2 --- /dev/null +++ b/apps/gluetun/metadata/description.md @@ -0,0 +1,56 @@ +# Gluetun VPN (Mullvad) + +Bu uygulama tek başına bir "istemci" değil, merkezi bir **VPN geçidi**. [Gluetun](https://github.com/qdm12/gluetun), Mullvad'a WireGuard ile bağlanır ve kill-switch sağlar: VPN bağlantısı koparsa, bu container'ın ağını paylaşan hiçbir şey internete çıkamaz. + +## Neden ayrı bir uygulama? + +Eskiden VPN + torrent istemcisi tek `docker-compose.yml` içinde birlikteydi. Bunu ayırdık, çünkü: + +- **Yeniden kullanılabilir**: qBittorrent'i silip başka bir istemciyle değiştirebilirsin, VPN'e dokunmana gerek kalmaz. +- **Genişletilebilir**: İleride başka bir container'ı (başka bir uygulama, bir tarayıcı, başka bir indirme aracı vs.) da aynı VPN tünelinden geçirmek istersen, o container'ı buraya "bağlarsın" — Gluetun'u yeniden kurmana gerek yok. + +## Kurulum + +1. Mullvad hesabı sayfasından **WireGuard configuration** oluştur, indirilen `.conf` dosyasını aç. +2. `PrivateKey` değerini **WireGuard Private Key** alanına, `Address` değerinin IPv4 kısmını (örn. `10.64.222.10/32`) **WireGuard Addresses** alanına yapıştır. +3. İstersen **Sunucu Şehirleri** alanına bir veya birkaç şehir yaz (örn. `Amsterdam,Stockholm`); boş bırakırsan Gluetun rastgele bir Mullvad sunucusu seçer. +4. Kur ve başlat, ardından Runtipi'den bu uygulamanın loglarına bakıp `Initialization Sequence Completed` benzeri bir satır görene kadar bekle — VPN tüneli kurulduğu anlamına gelir. + +qBittorrent'in kendisi **ayrı bir uygulama**: "qBittorrent (Gluetun VPN)". Bu uygulamayı kurmadan önce Gluetun'un ayakta ve VPN'e bağlı olması gerekiyor. + +## İleride başka bir şeyi bu VPN'e bağlamak istersen + +Herhangi bir container'ı (Runtipi'de ayrı bir uygulama olarak ya da tamamen başka bir `docker-compose.yml` projesinde) bu Gluetun tünelinden geçirmek için 2 adım yeterli: + +**1. O servisin ihtiyaç duyduğu portu bu uygulamanın `docker-compose.yml` dosyasına ekle** (Runtipi'de "Customize compose" ile, ya da bu store repo'sundaki dosyayı elden düzenleyip güncelleyerek): + +```yaml +ports: + - 8080:8080 + - 6881:6881 + - 6881:6881/udp + - 9117:9117 # <- örnek: yeni eklediğin servisin portu +``` + +Bunun sebebi basit: ağ namespace'ini gerçekten sahiplenen container Gluetun olduğu için, Docker'da port yayınlamak (`ports:`) sadece o container üzerinden yapılabiliyor — namespace'i paylaşan diğer container'lar kendi başlarına port yayınlayamıyor. + +**2. Diğer projedeki servise, kendi ağı/portları yerine şunu yaz:** + +```yaml +services: + yeni-servis: + image: ... + network_mode: "container:gluetun" + # DİKKAT: bu servise "networks:" veya "ports:" EKLEME, + # network_mode ile aynı anda kullanılamıyorlar. +``` + +`network_mode: "container:gluetun"` Docker'ın yerleşik bir özelliği; aynı Docker host'unda çalışan **herhangi bir** `docker-compose.yml` projesinden, container adını (`gluetun`) referans göstererek bağlanabilirsin — Runtipi uygulaması olması bile şart değil. + +**Önemli**: Gluetun container'ı yeniden başladığında (güncelleme, restart vs.), ona bağlı servislerin de yeniden başlatılması gerekebilir; bağımlı servis Gluetun'dan önce ayağa kalkarsa hata verir. Bu yüzden her zaman önce Gluetun'u başlat, sonra ona bağlı servisleri. + +## Notlar + +- Mullvad artık sadece WireGuard destekliyor (OpenVPN 2026'da tamamen kaldırıldı), bu yüzden bu uygulama doğrudan WireGuard için yapılandırıldı. +- Mullvad port yönlendirme (port forwarding) özelliğini 2023'te kaldırdı; yani gelen (inbound) torrent bağlantıları için ekstra bir port-senkron aracına gerek yok, çıkış hızın yine de VPN sunucusunun kapasitesine bağlı olacak. +- Sağlayıcıya özgü ek ayar gerekiyorsa [Gluetun Wiki](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/mullvad.md) sayfasına bakabilirsin. diff --git a/apps/qbittorrent-vpn/config.json b/apps/qbittorrent-vpn/config.json new file mode 100644 index 0000000..9788ca0 --- /dev/null +++ b/apps/qbittorrent-vpn/config.json @@ -0,0 +1,20 @@ +{ + "name": "qBittorrent (Gluetun VPN)", + "id": "qbittorrent-vpn", + "available": true, + "short_desc": "qBittorrent torrent istemcisi. Ayri 'Gluetun' uygulamasinin ag namespace'ini paylasir, tum trafigi VPN'den geser.", + "author": "y1lm0z", + "port": 8080, + "categories": ["network", "utilities"], + "description": "qBittorrent'in kendi agi yoktur; 'network_mode: container:gluetun' ile Gluetun uygulamasinin ag namespace'ini dogrudan paylasir. Bu sayede kurulum, VPN'den bagimsiz kalir: qBittorrent'i silip baska bir istemciyle (orn. Transmission) degistirebilir, ya da baska container'lari da ayni Gluetun'a baglayabilirsin. WebUI'ye Gluetun uygulamasinin adresi/portu (8080) uzerinden erisilir, bu uygulamanin kendi ayri bir web arayuzu yoktur. ONEMLI: Bu uygulamayi kurmadan/baslatmadan once 'Gluetun VPN (Mullvad)' uygulamasinin calisir durumda olmasi gerekir, aksi halde qBittorrent baslamaz.", + "tipi_version": 1, + "version": "latest", + "source": "https://github.com/qbittorrent/qBittorrent", + "website": "https://github.com/linuxserver/docker-qbittorrent", + "exposable": false, + "force_expose": false, + "https": false, + "no_gui": true, + "supported_architectures": ["arm64", "amd64"], + "form_fields": [] +} diff --git a/apps/qbittorrent-vpn/docker-compose.yml b/apps/qbittorrent-vpn/docker-compose.yml new file mode 100644 index 0000000..654213f --- /dev/null +++ b/apps/qbittorrent-vpn/docker-compose.yml @@ -0,0 +1,23 @@ +services: + qbittorrent: + image: lscr.io/linuxserver/qbittorrent:latest + container_name: qbittorrent + # Kendi agi yok: "gluetun" uygulamasinin container'iyla ayni ag + # namespace'ini paylasiyor. Bu yuzden burada "networks:" veya + # "ports:" OLMAMALI - tum portlar gluetun'un docker-compose.yml'inde + # tanimli. Gluetun VPN baglantisini kaybederse qBittorrent'in de + # interneti aninda kesilir (kill switch). + network_mode: "container:gluetun" + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TZ} + - WEBUI_PORT=8080 + - TORRENTING_PORT=6881 + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/downloads:/downloads + restart: unless-stopped + +x-runtipi: + schema_version: 2 diff --git a/apps/qbittorrent-vpn/metadata/description.md b/apps/qbittorrent-vpn/metadata/description.md new file mode 100644 index 0000000..8878eed --- /dev/null +++ b/apps/qbittorrent-vpn/metadata/description.md @@ -0,0 +1,29 @@ +# qBittorrent (Gluetun VPN) + +[qBittorrent](https://www.qbittorrent.org/), "Gluetun VPN (Mullvad)" uygulamasının ağ namespace'ini `network_mode: container:gluetun` ile paylaşarak çalışır. Kendi ayrı bir ağı yoktur; tüm trafiği zorunlu olarak Gluetun'un VPN tüneli üzerinden geçer. + +## Kurulum sırası + +1. Önce **Gluetun VPN (Mullvad)** uygulamasını kur, başlat ve loglarından VPN'e bağlandığını doğrula. +2. Ardından bu uygulamayı (qBittorrent) kur ve başlat. + +Gluetun ayakta değilken bu uygulamayı başlatmaya çalışırsan hata alırsın — çünkü bağlanacağı ağ namespace'i mevcut değildir. + +## Erişim + +Bu uygulamanın kendi web arayüzü / Runtipi domain'i yok (`no_gui`). qBittorrent WebUI'sine **Gluetun uygulamasının** adresi ve 8080 portu üzerinden erişiyorsun: + +``` +http://sunucu-ip:8080 +``` + +İlk girişte qBittorrent, container loglarında geçici bir şifre üretir (`docker logs qbittorrent` ile görebilirsin), ilk girişten sonra WebUI üzerinden değiştir. + +## Sonarr / Radarr entegrasyonu + +Sonarr/Radarr'a bu qBittorrent'i indirme istemcisi olarak eklerken host adresine Gluetun'un çalıştığı adresi (aynı Docker host'u), portu **8080** olarak gir. Kategori bazlı klasörleri (`tv-sonarr`, `movies-radarr`) qBittorrent WebUI → Ayarlar üzerinden değil, Sonarr/Radarr'ın "İndirme İstemcisi" ayarlarından otomatik oluşturmasına izin verebilirsin. + +## Notlar + +- `/downloads` klasörü indirilen dosyaların düştüğü yer; Sonarr/Radarr ile paylaşman gerekiyorsa aynı klasör yolunu (host tarafında) onların container'larına da mount etmelisin ki "hardlink" ile taşıma çalışsın. +- BitTorrent peer portu (6881) Gluetun'un `docker-compose.yml` dosyasında tanımlı; burada değiştirmek istersen hem oradaki `ports:` girdisini hem buradaki `TORRENTING_PORT` değerini birlikte güncellemen gerekir.