diff --git a/apps/gluetun-transmission/config.json b/apps/gluetun-transmission/config.json new file mode 100644 index 0000000..be5c8e3 --- /dev/null +++ b/apps/gluetun-transmission/config.json @@ -0,0 +1,91 @@ +{ + "name": "Transmission VPN (Gluetun)", + "id": "gluetun-transmission", + "available": true, + "short_desc": "Transmission torrent client routed through a VPN via Gluetun (kill switch included).", + "author": "y1lm0z", + "port": 9091, + "categories": ["network", "utilities"], + "description": "Runs Transmission's traffic entirely through a Gluetun VPN tunnel. Gluetun connects to your VPN provider (WireGuard) and Transmission shares its network namespace, so if the VPN connection drops, Transmission instantly loses internet access too (kill switch behaviour). Supports any Gluetun-compatible VPN provider, including Mullvad, ProtonVPN, AirVPN, IVPN, and more.", + "tipi_version": 1, + "version": "4.0.5", + "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"], + "created_at": 1753600000000, + "updated_at": 1753600000000, + "form_fields": [ + { + "type": "text", + "label": "VPN Service Provider", + "hint": "Gluetun provider name, e.g. mullvad, protonvpn, airvpn, ivpn, nordvpn, surfshark", + "placeholder": "mullvad", + "default": "mullvad", + "required": true, + "env_variable": "VPN_SERVICE_PROVIDER" + }, + { + "type": "text", + "label": "VPN Type", + "hint": "wireguard or openvpn (most modern providers use wireguard)", + "placeholder": "wireguard", + "default": "wireguard", + "required": true, + "env_variable": "VPN_TYPE" + }, + { + "type": "password", + "label": "WireGuard Private Key", + "hint": "From your VPN provider's WireGuard config file (leave empty if using OpenVPN)", + "required": false, + "env_variable": "WIREGUARD_PRIVATE_KEY" + }, + { + "type": "text", + "label": "WireGuard Addresses", + "hint": "The Address field from your WireGuard config, e.g. 10.64.222.10/32", + "placeholder": "10.64.222.10/32", + "required": false, + "env_variable": "WIREGUARD_ADDRESSES" + }, + { + "type": "text", + "label": "OpenVPN Username", + "hint": "Only needed if VPN Type is openvpn", + "required": false, + "env_variable": "OPENVPN_USER" + }, + { + "type": "password", + "label": "OpenVPN Password", + "hint": "Only needed if VPN Type is openvpn", + "required": false, + "env_variable": "OPENVPN_PASSWORD" + }, + { + "type": "text", + "label": "Server Countries", + "hint": "Optional. Comma separated list, e.g. Sweden,Netherlands. Leave empty for any server.", + "required": false, + "env_variable": "SERVER_COUNTRIES" + }, + { + "type": "text", + "label": "Transmission Username", + "hint": "Optional. Leave empty to disable Transmission web UI authentication.", + "required": false, + "env_variable": "TRANSMISSION_USER" + }, + { + "type": "password", + "label": "Transmission Password", + "hint": "Optional. Only used if a username is set above.", + "required": false, + "env_variable": "TRANSMISSION_PASS" + } + ] +} diff --git a/apps/gluetun-transmission/docker-compose.yml b/apps/gluetun-transmission/docker-compose.yml new file mode 100644 index 0000000..6755fc0 --- /dev/null +++ b/apps/gluetun-transmission/docker-compose.yml @@ -0,0 +1,45 @@ +services: + gluetun: + image: qmcgaw/gluetun:latest + container_name: gluetun-transmission-gluetun + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + environment: + - VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER} + - VPN_TYPE=${VPN_TYPE} + - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} + - WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES} + - OPENVPN_USER=${OPENVPN_USER} + - OPENVPN_PASSWORD=${OPENVPN_PASSWORD} + - SERVER_COUNTRIES=${SERVER_COUNTRIES} + - TZ=${TZ} + - FIREWALL_OUTBOUND_SUBNETS=172.16.0.0/12 + volumes: + - ${APP_DATA_DIR}/data/gluetun:/gluetun + restart: unless-stopped + x-runtipi: + is_main: true + internal_port: 9091 + + transmission: + image: lscr.io/linuxserver/transmission:latest + container_name: gluetun-transmission-transmission + network_mode: service:gluetun + depends_on: + - gluetun + environment: + - PUID=1000 + - PGID=1000 + - TZ=${TZ} + - USER=${TRANSMISSION_USER} + - PASS=${TRANSMISSION_PASS} + volumes: + - ${APP_DATA_DIR}/data/config:/config + - ${APP_DATA_DIR}/data/downloads:/downloads + - ${APP_DATA_DIR}/data/watch:/watch + restart: unless-stopped + +x-runtipi: + schema_version: 2 diff --git a/apps/gluetun-transmission/metadata/description.md b/apps/gluetun-transmission/metadata/description.md new file mode 100644 index 0000000..5207375 --- /dev/null +++ b/apps/gluetun-transmission/metadata/description.md @@ -0,0 +1,28 @@ +# Transmission VPN (Gluetun) + +Bu uygulama, [Transmission](https://transmissionbt.com/) torrent istemcisini [Gluetun](https://github.com/qdm12/gluetun) VPN istemcisi üzerinden çalıştırır. + +## Nasıl çalışır? + +- **Gluetun** container'ı, seçtiğin VPN sağlayıcısına (Mullvad, ProtonVPN, AirVPN, IVPN, NordVPN vs.) bağlanır. +- **Transmission** container'ı `network_mode: service:gluetun` ile Gluetun'un ağını paylaşır. Yani tüm Transmission trafiği zorunlu olarak VPN tüneli üzerinden geçer. +- Gluetun VPN bağlantısını kaybederse, Transmission'ın da interneti anında kesilir (kill switch). Bu sayede gerçek IP adresin asla açığa çıkmaz. + +## Kurulum öncesi ihtiyacın olanlar + +1. Bir VPN sağlayıcısından (Mullvad, ProtonVPN, AirVPN, IVPN vb.) WireGuard yapılandırma bilgileri: + - `PrivateKey` → **WireGuard Private Key** alanına + - `Address` → **WireGuard Addresses** alanına +2. VPN Service Provider alanına Gluetun'un desteklediği sağlayıcı adını yaz (küçük harf, örn: `mullvad`, `protonvpn`, `airvpn`, `ivpn`). +3. OpenVPN kullanan bir sağlayıcı seçtiysen (VPN Type: `openvpn`), WireGuard alanlarını boş bırakıp OpenVPN kullanıcı adı/şifresini gir. + +## Kurulum sonrası + +- Transmission web arayüzüne uygulamanın portu üzerinden erişebilirsin (varsayılan: 9091). +- Kurulumdan sonra Gluetun loglarını kontrol ederek VPN bağlantısının başarılı şekilde kurulduğundan emin ol (Runtipi dashboard → uygulama → Logs). +- Sağlayıcıya özgü tüm ortam değişkenleri için [Gluetun Wiki](https://github.com/qdm12/gluetun-wiki) sayfasına bakabilirsin. + +## Notlar + +- Bu, tüm Gluetun ortam değişkenlerini kapsamaz. Sağlayıcına özgü ek değişkenler gerekiyorsa, Runtipi'nin "Customize compose" özelliğiyle `docker-compose.yml` dosyasını elle düzenleyebilirsin. +- Port forwarding gerekiyorsa (örn. AirVPN, IVPN gibi sağlayıcılarda), Gluetun'un `VPN_PORT_FORWARDING` değişkenini ve Transmission'ın peer portunu senkronize eden ek bir araç (örn. `tellaport`, `gluetrans`) kurman gerekebilir.