Compare commits
2
Commits
fa800942d2
...
548baedfaf
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
548baedfaf | ||
|
|
b2ab702f00 |
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "Gluetun VPN (Mullvad)",
|
||||
"id": "gluetun",
|
||||
"name": "Gluetun + qBittorrent (Mullvad VPN)",
|
||||
"id": "gluetun-qbittorrent",
|
||||
"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.",
|
||||
"short_desc": "Mullvad'a WireGuard ile baglanan Gluetun VPN gecidi + arkasinda calisan qBittorrent. Kill-switch dahil, tum torrent trafigi VPN'den geser.",
|
||||
"author": "y1lm0z",
|
||||
"port": 8080,
|
||||
"port": 61235,
|
||||
"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.",
|
||||
"description": "Tek dosyada iki container: Gluetun, Mullvad'a WireGuard ile baglanip kill-switch (VPN kopunca internet de kesilir) sagliyor. qBittorrent ise kendi agini kullanmiyor, Gluetun'un ag namespace'ini 'network_mode: service:gluetun' ile paylasiyor - bu sayede tum torrent trafigi zorunlu olarak VPN tunelinden geciyor. qBittorrent, Gluetun VPN'e baglanip saglikli olana kadar baslamiyor (depends_on + healthcheck). WebUI'ye Gluetun'un actigi 61235 portundan erisiliyor.",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"source": "https://github.com/qdm12/gluetun",
|
||||
@@ -35,14 +35,14 @@
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Sunucu Sehirleri (opsiyonel)",
|
||||
"hint": "Virgulle ayrilmis Mullvad sehir adlari, orn: Amsterdam,Stockholm. Bos birakirsan rastgele sunucu secilir.",
|
||||
"hint": "Virgulle ayrilmis Mullvad sehir adlari, orn: Bucharest,Amsterdam. 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.",
|
||||
"hint": "Docker ve LAN aginin WebUI'ye erisebilmesi icin izinli subnetler.",
|
||||
"default": "172.16.0.0/12,192.168.0.0/16,10.0.0.0/8",
|
||||
"required": false,
|
||||
"env_variable": "FIREWALL_OUTBOUND_SUBNETS"
|
||||
@@ -0,0 +1,56 @@
|
||||
services:
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
sysctls:
|
||||
# Debian 13 + yeni kernel'de gorulen "default route not found"
|
||||
# crash-loop hatasi icin: IPv6'yi bu container icin kapatiyoruz.
|
||||
- net.ipv6.conf.all.disable_ipv6=1
|
||||
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 - host:container, ikisi ayni numara (61235)
|
||||
- 61235:61235
|
||||
# qBittorrent torrent peer portu (TCP+UDP), asagidaki
|
||||
# TORRENTING_PORT ile ayni olmak zorunda
|
||||
- 61234:61234
|
||||
- 61234:61234/udp
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/gluetun:/gluetun
|
||||
restart: unless-stopped
|
||||
x-runtipi:
|
||||
is_main: true
|
||||
internal_port: 61235
|
||||
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
# Kendi agi yok, gluetun'un ag namespace'ini paylasiyor - tum
|
||||
# trafik VPN tunelinden geciyor (kill switch qbittorrent'i de kapsar).
|
||||
network_mode: "service:gluetun"
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=61235
|
||||
- TORRENTING_PORT=61234
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
x-runtipi:
|
||||
schema_version: 2
|
||||
@@ -0,0 +1,33 @@
|
||||
# Gluetun + qBittorrent (Mullvad VPN)
|
||||
|
||||
Tek uygulama, iki container: **Gluetun** (VPN geçidi) ve **qBittorrent** (torrent istemcisi). qBittorrent kendi ağını kullanmıyor, `network_mode: service:gluetun` ile Gluetun'un ağ namespace'ini paylaşıyor — bu yüzden tüm torrent trafiği zorunlu olarak Mullvad tüneli üzerinden geçiyor. VPN koparsa qBittorrent'in de interneti anında kesilir (kill switch).
|
||||
|
||||
## 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ı **WireGuard Addresses** alanına yapıştır.
|
||||
3. İstersen **Sunucu Şehirleri** alanına bir şehir yaz (örn. `Bucharest`), boş bırakırsan rastgele seçilir.
|
||||
4. Kur, başlat. Gluetun VPN'e bağlanana kadar qBittorrent otomatik bekliyor (`depends_on` + healthcheck), o yüzden ilk açılışta birkaç saniye WebUI'ye erişemeyebilirsin, normal.
|
||||
|
||||
## Erişim
|
||||
|
||||
```
|
||||
http://sunucu-ip:61235
|
||||
```
|
||||
|
||||
İlk girişte qBittorrent geçici bir şifre üretir, container loglarından (`docker logs qbittorrent`) görebilirsin.
|
||||
|
||||
## Portlar
|
||||
|
||||
- **61235** → WebUI (host ve container tarafında aynı numara)
|
||||
- **61234** (TCP+UDP) → torrent peer portu
|
||||
|
||||
Bu iki port bilinçli olarak yaygın kullanılan varsayılanlar (8080, 6881, 51413, 58846 gibi) ve Linux'un otomatik/ephemeral port aralığı (`32768-60999`) dışında seçildi — kalabalık bir sunucuda başka uygulamalarla çakışma ihtimalini azaltmak için.
|
||||
|
||||
## Sonarr / Radarr entegrasyonu
|
||||
|
||||
İndirme istemcisi olarak eklerken host adresi bu sunucu, port **61235**. `/downloads` klasörünü Sonarr/Radarr ile aynı host yoluyla paylaşırsan hardlink taşıma sorunsuz çalışır.
|
||||
|
||||
## İleride başka bir şeyi VPN'lemek istersen
|
||||
|
||||
Aynı `docker-compose.yml` dosyasına üçüncü bir servis ekleyip ona da `network_mode: "service:gluetun"` yazman yeterli — aynı dosyada oldukları için ekstra container ismi/proje eşleştirmesi gerekmiyor. O servisin ihtiyaç duyduğu portu **gluetun** servisinin `ports:` listesine eklemeyi unutma (ağı gerçekten sahiplenen o olduğu için port yayınlamayı da o yapmak zorunda).
|
||||
@@ -1,37 +0,0 @@
|
||||
services:
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=1
|
||||
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
|
||||
@@ -1,56 +0,0 @@
|
||||
# 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.
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"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": []
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
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
|
||||
@@ -1,29 +0,0 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user