diff --git a/Transmission-OpenVPN/.env.example b/Transmission-OpenVPN/.env.example new file mode 100644 index 0000000..fda1301 --- /dev/null +++ b/Transmission-OpenVPN/.env.example @@ -0,0 +1,30 @@ +# Transmission-OpenVPN Docker Compose Environment Variables + +# Image version tag (default: latest) +TRANSMISSION_OPENVPN_VERSION=latest + +# Transmission web UI theme (default: transmission-web-control) +TRANSMISSION_WEB_UI=transmission-web-control + +# Transmission RPC credentials +TRANSMISSION_RPC_USERNAME= +TRANSMISSION_RPC_PASSWORD= + +# Host port to expose the Transmission web UI (default: 9091) +TRANSMISSION_OPENVPN_PORT=9091 + +# Host path or NFS mount path for downloaded data +TRANSMISSION_OPENVPN_DATA= + +# VPN provider name (e.g. PIA, MULLVAD, NORDVPN) +OPENVPN_PROVIDER= + +# VPN server/region config name (e.g. ca_vancouver) +OPENVPN_CONFIG= + +# VPN provider credentials +OPENVPN_USERNAME= +OPENVPN_PASSWORD= + +# Local network CIDR to allow LAN access through the VPN (default: 172.16.0.0/16) +LOCAL_NETWORK=172.16.0.0/16 diff --git a/Transmission-OpenVPN/docker-compose-nfs.yaml b/Transmission-OpenVPN/docker-compose-nfs.yaml new file mode 100644 index 0000000..3c68265 --- /dev/null +++ b/Transmission-OpenVPN/docker-compose-nfs.yaml @@ -0,0 +1,48 @@ +services: + app: + image: haugene/transmission-openvpn:${TRANSMISSION_OPENVPN_VERSION:-latest} + container_name: transmission-openvpn-app + environment: + - TRANSMISSION_WEB_UI=${TRANSMISSION_WEB_UI:-transmission-web-control} + - TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=true + - TRANSMISSION_RPC_USERNAME=${TRANSMISSION_RPC_USERNAME} + - TRANSMISSION_RPC_PASSWORD=${TRANSMISSION_RPC_PASSWORD} + - TRANSMISSION_DOWNLOAD_DIR=/data + - TRANSMISSION_INCOMPLETE_DIR=/data + - OPENVPN_PROVIDER=${OPENVPN_PROVIDER} + - OPENVPN_CONFIG=${OPENVPN_CONFIG} + - OPENVPN_USERNAME=${OPENVPN_USERNAME} + - OPENVPN_PASSWORD=${OPENVPN_PASSWORD} + - OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 + - LOCAL_NETWORK=${LOCAL_NETWORK} + volumes: + - transmission-openvpn-config:/config + - ${TRANSMISSION_OPENVPN_DATA}:/data + ports: + - ${TRANSMISSION_OPENVPN_PORT:-9091}:9091 + cap_add: + - NET_ADMIN + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9091/transmission/web/"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + logging: + driver: json-file + options: + max-size: 10m + deploy: + resources: + limits: + memory: 512m + restart: unless-stopped + +volumes: + transmission-openvpn-config: + name: transmission-openvpn-config + driver: local + driver_opts: + type: nfs + o: "addr=${TRANSMISSION_OPENVPN_NFS_SERVER},rw,noatime,rsize=65536,wsize=65536,timeo=600,nfsvers=4" + device: "${TRANSMISSION_OPENVPN_NFS_DEVICE}"