This commit is contained in:
y1lm0z
2026-08-26 11:36:31 +03:00
parent 864d71bff1
commit 6b6d042423
6 changed files with 214 additions and 0 deletions
+51
View File
@@ -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"
}
]
}
+35
View File
@@ -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
+56
View File
@@ -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.