feat(store): add transmission-vpn (#1116)

This commit is contained in:
JigSaw 2023-08-31 12:21:04 +02:00 committed by GitHub
parent 61f4b3b602
commit 2ea0c242e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 304 additions and 0 deletions

View File

@ -0,0 +1,171 @@
{
"$schema": "../schema.json",
"name": "Transmission (VPN)",
"available": true,
"exposable": true,
"port": 9091,
"requirements": {
"ports": [
51413
]
},
"id": "transmission-vpn",
"tipi_version": 1,
"version": "5.0.2",
"categories": [
"utilities",
"security"
],
"description": "Transmission is running only when OpenVPN has an active tunnel. It has built-in support for many popular VPN providers to make the setup easier.",
"short_desc": "BitTorrent client with VPN support.",
"author": "haugene",
"source": "https://github.com/haugene/docker-transmission-openvpn",
"form_fields": [
{
"type": "numeric",
"label": "Container > UserID (UID)",
"placeholder": "1000",
"env_variable": "TRANSMISSION_PUID"
},
{
"type": "numeric",
"label": "Container > GroupID (PGID)",
"placeholder": "1000",
"env_variable": "TRANSMISSION_PGID"
},
{
"type": "boolean",
"label": "Container > Create TUN device",
"env_variable": "TRANSMISSION_CREATE_TUN_DEVICE"
},
{
"type": "text",
"label": "OpenVPN > Local Network",
"placeholder": "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16",
"env_variable": "TRANSMISSION_OVPN_LOCAL_NETWORK"
},
{
"type": "text",
"label": "OpenVPN > Username",
"required": true,
"env_variable": "TRANSMISSION_OVPN_USERNAME"
},
{
"type": "password",
"label": "OpenVPN > Password",
"required": true,
"env_variable": "TRANSMISSION_OVPN_PASSWORD"
},
{
"type": "text",
"label": "OpenVPN > Default Provider Config",
"required": true,
"placeholder": "france,sweden,austria,italy,belgium",
"env_variable": "TRANSMISSION_OVPN_CONFIG"
},
{
"label": "OpenVPN > Provider",
"type": "text",
"required": true,
"options": [
{ "label": "Anonine", "value": "ANONINE" },
{ "label": "AnonVPN", "value": "ANONVPN" },
{ "label": "BlackVPN", "value": "BLACKVPN" },
{ "label": "BTGuard", "value": "BTGUARD" },
{ "label": "Cryptostorm", "value": "CRYPTOSTORM" },
{ "label": "ExpressVPN", "value": "EXPRESSVPN" },
{ "label": "FastestVPN", "value": "FASTESTVPN" },
{ "label": "FreeVPN", "value": "FREEVPN" },
{ "label": "FrootVPN", "value": "FROOT" },
{ "label": "FrostVPN", "value": "FROSTVPN" },
{ "label": "Getflix", "value": "GETFLIX" },
{ "label": "GhostPath", "value": "GHOSTPATH" },
{ "label": "Giganews", "value": "GIGANEWS" },
{ "label": "HideMe", "value": "HIDEME" },
{ "label": "HideMyAss", "value": "HIDEMYASS" },
{ "label": "IntegrityVPN", "value": "INTEGRITYVPN" },
{ "label": "IPVanish", "value": "IPVANISH" },
{ "label": "IronSocket", "value": "IRONSOCKET" },
{ "label": "Ivacy", "value": "IVACY" },
{ "label": "IVPN", "value": "IVPN" },
{ "label": "Mullvad", "value": "MULLVAD" },
{ "label": "NordVPN", "value": "NORDVPN" },
{ "label": "OctaneVPN", "value": "OCTANEVPN" },
{ "label": "OVPN", "value": "OVPN" },
{ "label": "Privado", "value": "PRIVADO" },
{ "label": "Private Internet Access", "value": "PIA" },
{ "label": "PrivateVPN", "value": "PRIVATEVPN" },
{ "label": "ProtonVPN", "value": "PROTONVPN" },
{ "label": "proXPN", "value": "PROXPN" },
{ "label": "PureVPN", "value": "PUREVPN" },
{ "label": "RA4W VPN", "value": "RA4W" },
{ "label": "SaferVPN", "value": "SAFERVPN" },
{ "label": "SlickVPN", "value": "SLICKVPN" },
{ "label": "SlickVPNCore", "value": "SLICKVPNCORE" },
{ "label": "Smart DNS Proxy", "value": "SMARTDNSPROXY" },
{ "label": "SmartVPN", "value": "SMARTVPN" },
{ "label": "Surfshark", "value": "SURFSHARK" },
{ "label": "TigerVPN", "value": "TIGER" },
{ "label": "TorGuard", "value": "TORGUARD" },
{ "label": "Trust.Zone", "value": "TRUSTZONE" },
{ "label": "TunnelBear", "value": "TUNNELBEAR" },
{ "label": "VPN.AC", "value": "VPNAC" },
{ "label": "VPNArea.com", "value": "VPNAREA" },
{ "label": "VPNBook.com", "value": "VPNBOOK" },
{ "label": "VPNFacile", "value": "VPNFACILE" },
{ "label": "VPN.ht", "value": "VPNHT" },
{ "label": "VPNTunnel", "value": "VPNTUNNEL" },
{ "label": "VPNUnlimited", "value": "VPNUNLIMITED" },
{ "label": "VyprVpn", "value": "VYPRVPN" },
{ "label": "Windscribe", "value": "WINDSCRIBE" },
{ "label": "ZoogVPN", "value": "ZOOGVPN" }
],
"env_variable": "TRANSMISSION_OVPN_PROVIDER"
},
{
"type": "boolean",
"label": "OpenVPN > Use VPN DNS",
"env_variable": "TRANSMISSION_PEER_DNS"
},
{
"label": "Transmission > WebUI",
"type": "text",
"required": true,
"options": [
{ "label": "Combustion", "value": "combustion" },
{ "label": "Kettu", "value": "kettu" },
{ "label": "Web-Control", "value": "transmission-web-control" },
{ "label": "Flood", "value": "flood-for-transmission" },
{ "label": "Shift", "value": "shift" },
{ "label": "Transmissionic", "value": "transmissionic" }
],
"env_variable": "TRANSMISSION_WEBUI"
},
{
"type": "boolean",
"label": "Transmission > Enable DHT",
"env_variable": "TRANSMISSION_DHT_ENABLED"
},
{
"type": "boolean",
"label": "Transmission > Enable LPD",
"env_variable": "TRANSMISSION_LPD_ENABLED"
},
{
"type": "boolean",
"label": "Transmission > Enable PEX",
"env_variable": "TRANSMISSION_PEX_ENABLED"
},
{
"type": "boolean",
"label": "Transmission > Enable Blocklist",
"env_variable": "TRANSMISSION_BLOCKLIST_ENABLED"
},
{
"type": "text",
"label": "Transmission > Blocklist URL",
"placeholder": "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz",
"env_variable": "TRANSMISSION_BLOCKLIST_URL"
}
]
}

View File

@ -0,0 +1,79 @@
services:
transmission-vpn:
image: haugene/transmission-openvpn:5.0.2
container_name: transmission-vpn
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
dns:
- ${DNS_IP}
environment:
- PUID=${TRANSMISSION_PUID-1000}
- PGID=${TRANSMISSION_PGID-1000}
- TZ=${TZ-Europe/Paris}
- USER=${TRANSMISSION_USERNAME}
- PASS=${TRANSMISSION_PASSWORD}
- OPENVPN_PROVIDER=${TRANSMISSION_OVPN_PROVIDER-NORDVPN}
- OPENVPN_CONFIG=${TRANSMISSION_OVPN_CONFIG}
- OPENVPN_USERNAME=${TRANSMISSION_OVPN_USERNAME}
- OPENVPN_PASSWORD=${TRANSMISSION_OVPN_PASSWORD}
- OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 --pull-filter ignore ping
- LOCAL_NETWORK=${TRANSMISSION_OVPN_LOCAL_NETWORK-10.0.0.0/8,172.16.0.0/12,192.168.0.0/16}
- TRANSMISSION_WEB_UI=${TRANSMISSION_WEBUI}
- LOG_TO_STDOUT=true
- GLOBAL_APPLY_PERMISSIONS=false
- CREATE_TUN_DEVICE=${TRANSMISSION_CREATE_TUN_DEVICE-false}
- PEER_DNS=${TRANSMISSION_PEER_DNS-false}
- TRANSMISSION_DOWNLOAD_DIR=/media/torrents/complete
- TRANSMISSION_INCOMPLETE_DIR_ENABLED=true
- TRANSMISSION_INCOMPLETE_DIR=/media/torrents/incomplete
- TRANSMISSION_PREALLOCATION=1
- TRANSMISSION_DHT_ENABLED=${TRANSMISSION_DHT_ENABLED-false}
- TRANSMISSION_LPD_ENABLED=${TRANSMISSION_LPD_ENABLED-false}
- TRANSMISSION_PEX_ENABLED=${TRANSMISSION_PEX_ENABLED-false}
- TRANSMISSION_BLOCKLIST_ENABLED=${TRANSMISSION_BLOCKLIST_ENABLED-true}
- TRANSMISSION_BLOCKLIST_URL=${TRANSMISSION_BLOCKLIST_URL-http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz}
volumes:
- ${APP_DATA_DIR}/data/config:/config
- ${ROOT_FOLDER_HOST}/media/torrents:/media/torrents
ports:
- ${APP_PORT}:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
networks:
- tipi_main_network
sysctls :
- net.ipv6.conf.all.disable_ipv6=0
logging:
driver: json-file
options:
max-size: 10m
labels:
# Main
traefik.enable: true
traefik.http.middlewares.transmission-web-redirect.redirectscheme.scheme: https
traefik.http.services.transmission.loadbalancer.server.scheme: http
traefik.http.services.transmission.loadbalancer.server.port: 9091
# Web
traefik.http.routers.transmission-insecure.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.transmission-insecure.entrypoints: web
traefik.http.routers.transmission-insecure.service: transmission
traefik.http.routers.transmission-insecure.middlewares: transmission-web-redirect
# Websecure
traefik.http.routers.transmission.rule: Host(`${APP_DOMAIN}`)
traefik.http.routers.transmission.entrypoints: websecure
traefik.http.routers.transmission.service: transmission
traefik.http.routers.transmission.tls.certresolver: myresolver
# Local domain
traefik.http.routers.transmission-local-insecure.rule: Host(`transmission.${LOCAL_DOMAIN}`)
traefik.http.routers.transmission-local-insecure.entrypoints: web
traefik.http.routers.transmission-local-insecure.service: transmission
traefik.http.routers.transmission-local-insecure.middlewares: transmission-web-redirect
# Local domain secure
traefik.http.routers.transmission-local.rule: Host(`transmission.${LOCAL_DOMAIN}`)
traefik.http.routers.transmission-local.entrypoints: websecure
traefik.http.routers.transmission-local.service: transmission
traefik.http.routers.transmission-local.tls: true

View File

@ -0,0 +1,54 @@
## Recommended VPN
This container is heavily tested using
[NordVPN, get 3 months free here.](https://ref.nordvpn.com/EQNOEHVwOCW)
## Features
* Choose your Web UI !
* Support many OpenVPN providers ([complete list](https://haugene.github.io/docker-transmission-openvpn/supported-providers/))
* Works with traefik !
* Pre-configured for Tipi.
* Healthcheck
* Highly configurable.
## Documentation
Don't hesitate to read related docs available here: https://haugene.github.io/docker-transmission-openvpn/
## VPN Provider Settings
You can configure specific settings to your provider by creating a `docker-compose.yml` file in your `user-config` directory.
| Directory | File |
|-------------------------------|------------------|
| /runtipi/user-config/transmission-vpn/ | docker-compose.yml |
With the following content by e.g. for NordVPN:
```
services:
transmission-vpn:
environment:
- NORDVPN_COUNTRY=FR
- NORDVPN_CATEGORY=legacy_p2p # Servers optimized for P2P usage
- NORDVPN_PROTOCOL=tcp
- NORDVPN_SERVER=fr000.nordvpn.com
```
Instructions for NordVPN can be found here: https://haugene.github.io/docker-transmission-openvpn/provider-specific/
For other's supported providers: https://haugene.github.io/docker-transmission-openvpn/supported-providers/
## Fast, easy, and free BitTorrent client
Docker container running Transmission torrent client with WebUI over an OpenVPN tunnel
Transmission is a fast, easy, and free BitTorrent client. It comes in several flavors:
* A native macOS GUI application
* GTK+ and Qt GUI applications for Linux, BSD, etc.
* A headless daemon for servers and routers
* A web UI for remote controlling any of the above
Visit [https://transmissionbt.com/](https://transmissionbt.com/) for more information.
## Folder Info
| Root Folder | Container Folder |
|-------------------------------|------------------|
| /runtipi/app-data/transmission/data/config | /config |
| /runtipi/media/torrents | /media/torrents |

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB