From 91de209281efc513ee63d76db3cd002b7cca67a0 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Wed, 3 Sep 2025 17:04:08 -0400 Subject: [PATCH 01/21] Create docker-transmission-openvpn application --- ct/transmission-openvpn.sh | 52 +++++ .../public/json/transmission-openvpn.json | 35 +++ frontend/public/json/versions.json | 5 + install/transmission-openvpn-install.sh | 215 ++++++++++++++++++ 4 files changed, 307 insertions(+) create mode 100644 ct/transmission-openvpn.sh create mode 100644 frontend/public/json/transmission-openvpn.json create mode 100644 install/transmission-openvpn-install.sh diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh new file mode 100644 index 000000000..3864e6979 --- /dev/null +++ b/ct/transmission-openvpn.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SunFlowerOwl +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/haugene/docker-transmission-openvpn + +APP="transmission-openvpn" +var_tags="${var_tags:-torrent;vpn}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-12}" +var_unprivileged="${var_unprivileged:-1}" +var_tun="${var_tun:-1}" + +header_info "$APP" +variables +color +catch_errors + +# this only updates openvpn-transmission, not influxdb or grafana, which are upgraded with apt +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/transmission-openvpn/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if check_for_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn"; then + + fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" + + msg_info "Setup transmission-openvpn" + + msg_ok "Setup transmission-openvpn" + msg_ok "Updated Successfully" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091${CL}" diff --git a/frontend/public/json/transmission-openvpn.json b/frontend/public/json/transmission-openvpn.json new file mode 100644 index 000000000..3202fc1d8 --- /dev/null +++ b/frontend/public/json/transmission-openvpn.json @@ -0,0 +1,35 @@ +{ + "name": "Transmission-Openvpn", + "slug": "transmission-openvpn", + "categories": [ + 11 + ], + "date_created": "2025-09-04", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9091, + "documentation": null, + "config_path": "/opt/transmission-openvpn/", + "website": null, + "logo": null, + "description": "docker-transmission-openvpn is a popular Docker image that bundles the Transmission BitTorrent client with OpenVPN, ensuring all torrent traffic is routed securely through a VPN tunnel. It supports a wide range of VPN providers and includes flexible configuration options.", + "install_methods": [ + { + "type": "default", + "script": "ct/transmission-openvpn.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": -8, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file diff --git a/frontend/public/json/versions.json b/frontend/public/json/versions.json index ccd34e863..907c19074 100644 --- a/frontend/public/json/versions.json +++ b/frontend/public/json/versions.json @@ -483,5 +483,10 @@ "name": "Dolibarr/dolibarr", "version": "18.0.7", "date": "2025-07-03T08:57:21Z" + }, + { + "name": "haugene/docker-transmission-openvpn", + "version": "v5.3.2", + "date": "2025-05-28T18:23:14Z" } ] diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh new file mode 100644 index 000000000..5b56f2be1 --- /dev/null +++ b/install/transmission-openvpn-install.sh @@ -0,0 +1,215 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: SunFlowerOwl +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/haugene/docker-transmission-openvpn + +# Import Functions und Setup +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +# Installing Dependencies +msg_info "Installing Dependencies" +$STD apt-get install -y \ + dumb-init \ + tzdata dnsutils iputils-ping ufw iproute2 \ + openssh-client git jq curl wget unrar-free unzip bc systemd + +msg_ok "Installed Dependencies" + +msg_info "Installing Transmission" +# Blocking the automatic startup of all services +mkdir -p /etc/systemd/system-preset +echo "disable *" > /etc/systemd/system-preset/99-no-autostart.preset +export DEBIAN_FRONTEND=noninteractive + +# Installing transmission +$STD apt install -y transmission-daemon + +# Restoring normal systemd behavior +rm -f /etc/systemd/system-preset/99-no-autostart.preset +systemctl preset-all + +# Disabling and masking transmission so that it does not start either now or on boot +systemctl disable --now transmission-daemon +systemctl mask transmission-daemon + +msg_ok "Installed Transmission" + +msg_info "Installing Openvpn" + +$STD apt-get install -y openvpn + +msg_ok "Installed Openvpn" + +msg_info "Installing Privoxy" + +$STD apt-get install -y privoxy + +msg_ok "Installed Privoxy" + +msg_info "Installing ${APPLICATION}" +useradd -u 911 -U -d /config -s /usr/sbin/nologin abc +fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" +msg_ok "Installed ${APPLICATION}" + +msg_info "Support legacy IPTables commands" +update-alternatives --set iptables /usr/sbin/iptables-legacy +update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy + +msg_info "Installing WebUi" + +mkdir -p /opt/transmission-ui +cd /opt/transmission-ui || return + +wget -qO- https://github.com/killemov/Shift/archive/master.tar.gz | tar xz +mv Shift-master /opt/transmission-ui/shift + +wget -qO- https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.tar.gz | tar xz +mv flood-for-transmission /opt/transmission-ui/flood + +wget -qO- https://github.com/Secretmapper/combustion/archive/release.tar.gz | tar xz +mv combustion-release /opt/transmission-ui/combustion + +wget -qO- https://github.com/endor/kettu/archive/master.tar.gz | tar xz +mv kettu-master /opt/transmission-ui/kettu + +wget -q https://github.com/6c65726f79/Transmissionic/releases/download/v1.8.0/Transmissionic-webui-v1.8.0.zip +unzip -q Transmissionic-webui-v1.8.0.zip +mv web /opt/transmission-ui/transmissionic +rm -f Transmissionic-webui-v1.8.0.zip + +msg_ok "Installed WebUi" + +msg_info "Creating Service" + +OPENVPN_USERNAME=${OPENVPN_USERNAME:-} +OPENVPN_PASSWORD=${OPENVPN_PASSWORD:-} +OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-} +OPENVPN_OPTS=${OPENVPN_OPTS:-} +CUSTOM_OPENVPN_CONFIG_DIR=${CUSTOM_OPENVPN_CONFIG_DIR:-} +GLOBAL_APPLY_PERMISSIONS=${GLOBAL_APPLY_PERMISSIONS:-true} +TRANSMISSION_HOME=${TRANSMISSION_HOME:-/config/transmission-home} +TRANSMISSION_RPC_PORT=${TRANSMISSION_RPC_PORT:-9091} +TRANSMISSION_RPC_USERNAME=${TRANSMISSION_RPC_USERNAME:-} +TRANSMISSION_RPC_PASSWORD=${TRANSMISSION_RPC_PASSWORD:-} +TRANSMISSION_DOWNLOAD_DIR=${TRANSMISSION_DOWNLOAD_DIR:-/data/completed} +TRANSMISSION_INCOMPLETE_DIR=${TRANSMISSION_INCOMPLETE_DIR:-/data/incomplete} +TRANSMISSION_WATCH_DIR=${TRANSMISSION_WATCH_DIR:-/data/watch} +TRANSMISSION_WEB_UI=${TRANSMISSION_WEB_UI:-} +TRANSMISSION_UMASK=${TRANSMISSION_UMASK:-} +TRANSMISSION_RATIO_LIMIT_ENABLED=${TRANSMISSION_RATIO_LIMIT_ENABLED:-false} +TRANSMISSION_RATIO_LIMIT=${TRANSMISSION_RATIO_LIMIT:-} +TRANSMISSION_RPC_WHITELIST_ENABLED=${TRANSMISSION_RPC_WHITELIST_ENABLED:-true} +TRANSMISSION_RPC_WHITELIST=${TRANSMISSION_RPC_WHITELIST:-} +TRANSMISSION_RPC_HOST_WHITELIST_ENABLED=${TRANSMISSION_RPC_HOST_WHITELIST_ENABLED:-true} +TRANSMISSION_RPC_HOST_WHITELIST=${TRANSMISSION_RPC_HOST_WHITELIST:-} +CREATE_TUN_DEVICE=${CREATE_TUN_DEVICE:-false} +ENABLE_UFW=${ENABLE_UFW:-false} +UFW_ALLOW_GW_NET=${UFW_ALLOW_GW_NET:-false} +UFW_EXTRA_PORTS=${UFW_EXTRA_PORTS:-} +UFW_DISABLE_IPTABLES_REJECT=${UFW_DISABLE_IPTABLES_REJECT:-false} +PUID=${PUID:-911} +PGID=${PGID:-} +PEER_DNS=${PEER_DNS:-true} +PEER_DNS_PIN_ROUTES=${PEER_DNS_PIN_ROUTES:-true} +DROP_DEFAULT_ROUTE=${DROP_DEFAULT_ROUTE:-} +WEBPROXY_ENABLED=${WEBPROXY_ENABLED:-false} +WEBPROXY_PORT=${WEBPROXY_PORT:-8118} +WEBPROXY_BIND_ADDRESS=${WEBPROXY_BIND_ADDRESS:-} +WEBPROXY_USERNAME=${WEBPROXY_USERNAME:-} +WEBPROXY_PASSWORD=${WEBPROXY_PASSWORD:-} +LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} +HEALTH_CHECK_HOST=${HEALTH_CHECK_HOST:-google.com} +SELFHEAL=${SELFHEAL:-false} +LOCAL_NETWORK=${LOCAL_NETWORK:-} + +cat > "/opt/transmission-openvpn/.env" < /etc/systemd/system/openvpn-custom.service </dev/null | grep -v "$HEALTHCHECK_SCRIPT"; echo "* * * * * $HEALTHCHECK_SCRIPT") | crontab - + +msg_ok "Created Healthcheck" + +motd_ssh +customize + +# Cleanup +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" From 40225430abd4a7268db5227d1d509e3ce9467429 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Fri, 5 Sep 2025 16:01:02 -0400 Subject: [PATCH 02/21] Partially addressed review 1 --- ct/transmission-openvpn.sh | 21 ++++--- .../public/json/transmission-openvpn.json | 16 +++--- frontend/public/json/versions.json | 5 -- install/transmission-openvpn-install.sh | 57 +++++++------------ 4 files changed, 37 insertions(+), 62 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 3864e6979..21e27da12 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -20,26 +20,25 @@ variables color catch_errors -# this only updates openvpn-transmission, not influxdb or grafana, which are upgraded with apt function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /opt/transmission-openvpn/ ]]; then msg_error "No ${APP} Installation Found!" exit fi + msg_info "Updating ${APP} LXC" if check_for_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn"; then - - fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" - - msg_info "Setup transmission-openvpn" - - msg_ok "Setup transmission-openvpn" - msg_ok "Updated Successfully" - fi - exit + msg_info "Update transmission-openvpn" + fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" + msg_ok "Update transmission-openvpn" + msg_ok "Updated Successfully" + fi + $STD apt-get update + $STD apt-get -y upgrade + msg_ok "Updated ${APP} LXC" + exit } start diff --git a/frontend/public/json/transmission-openvpn.json b/frontend/public/json/transmission-openvpn.json index 3202fc1d8..fcce8ecb0 100644 --- a/frontend/public/json/transmission-openvpn.json +++ b/frontend/public/json/transmission-openvpn.json @@ -9,19 +9,19 @@ "updateable": true, "privileged": false, "interface_port": 9091, - "documentation": null, + "documentation": "https://haugene.github.io/docker-transmission-openvpn/", "config_path": "/opt/transmission-openvpn/", - "website": null, - "logo": null, - "description": "docker-transmission-openvpn is a popular Docker image that bundles the Transmission BitTorrent client with OpenVPN, ensuring all torrent traffic is routed securely through a VPN tunnel. It supports a wide range of VPN providers and includes flexible configuration options.", + "website": "https://github.com/haugene/docker-transmission-openvpn", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/transmission.webp", + "description": "This project runs Transmission + OpenVPN natively in an LXC container, using the popular docker-transmission-openvpn image as a base. It ensures all torrent traffic is securely routed through a VPN tunnel, supports a wide range of VPN providers, and offers flexible configuration options", "install_methods": [ { "type": "default", "script": "ct/transmission-openvpn.sh", "resources": { - "cpu": 1, - "ram": 512, - "hdd": -8, + "cpu": 2, + "ram": 2048, + "hdd": 8, "os": "Debian", "version": "12" } @@ -32,4 +32,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} diff --git a/frontend/public/json/versions.json b/frontend/public/json/versions.json index 907c19074..ccd34e863 100644 --- a/frontend/public/json/versions.json +++ b/frontend/public/json/versions.json @@ -483,10 +483,5 @@ "name": "Dolibarr/dolibarr", "version": "18.0.7", "date": "2025-07-03T08:57:21Z" - }, - { - "name": "haugene/docker-transmission-openvpn", - "version": "v5.3.2", - "date": "2025-05-28T18:23:14Z" } ] diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 5b56f2be1..be12f4433 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -14,44 +14,42 @@ setting_up_container network_check update_os -# Installing Dependencies msg_info "Installing Dependencies" $STD apt-get install -y \ dumb-init \ - tzdata dnsutils iputils-ping ufw iproute2 \ - openssh-client git jq curl wget unrar-free unzip bc systemd - + tzdata \ + dnsutils \ + iputils-ping \ + ufw \ + iproute2 \ + openssh-client \ + git \ + jq \ + curl \ + wget \ + unrar-free \ + unzip \ + bc \ + systemd msg_ok "Installed Dependencies" msg_info "Installing Transmission" -# Blocking the automatic startup of all services mkdir -p /etc/systemd/system-preset echo "disable *" > /etc/systemd/system-preset/99-no-autostart.preset export DEBIAN_FRONTEND=noninteractive - -# Installing transmission $STD apt install -y transmission-daemon - -# Restoring normal systemd behavior rm -f /etc/systemd/system-preset/99-no-autostart.preset systemctl preset-all - -# Disabling and masking transmission so that it does not start either now or on boot systemctl disable --now transmission-daemon systemctl mask transmission-daemon - msg_ok "Installed Transmission" msg_info "Installing Openvpn" - $STD apt-get install -y openvpn - msg_ok "Installed Openvpn" msg_info "Installing Privoxy" - $STD apt-get install -y privoxy - msg_ok "Installed Privoxy" msg_info "Installing ${APPLICATION}" @@ -62,33 +60,24 @@ msg_ok "Installed ${APPLICATION}" msg_info "Support legacy IPTables commands" update-alternatives --set iptables /usr/sbin/iptables-legacy update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy +msg_ok "Support legacy IPTables commands" -msg_info "Installing WebUi" - +msg_info "Installing WebUI" mkdir -p /opt/transmission-ui -cd /opt/transmission-ui || return - wget -qO- https://github.com/killemov/Shift/archive/master.tar.gz | tar xz mv Shift-master /opt/transmission-ui/shift - wget -qO- https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.tar.gz | tar xz mv flood-for-transmission /opt/transmission-ui/flood - wget -qO- https://github.com/Secretmapper/combustion/archive/release.tar.gz | tar xz mv combustion-release /opt/transmission-ui/combustion - wget -qO- https://github.com/endor/kettu/archive/master.tar.gz | tar xz mv kettu-master /opt/transmission-ui/kettu - wget -q https://github.com/6c65726f79/Transmissionic/releases/download/v1.8.0/Transmissionic-webui-v1.8.0.zip unzip -q Transmissionic-webui-v1.8.0.zip mv web /opt/transmission-ui/transmissionic -rm -f Transmissionic-webui-v1.8.0.zip - -msg_ok "Installed WebUi" +msg_ok "Installed WebUI" msg_info "Creating Service" - OPENVPN_USERNAME=${OPENVPN_USERNAME:-} OPENVPN_PASSWORD=${OPENVPN_PASSWORD:-} OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-} @@ -183,33 +172,25 @@ Type=simple ExecStart=/usr/bin/dumb-init /opt/docker-transmission-openvpn/openvpn/start.sh Restart=on-failure RestartSec=5 -User=root -Group=root EnvironmentFile=/opt/transmission-openvpn/.env [Install] WantedBy=multi-user.target EOF - -systemctl daemon-reload -systemctl enable openvpn-custom.service -systemctl start openvpn-custom.service - +systemctl enable --now -q openvpn-custom.service msg_ok "Created Service" msg_info "Creating Healthcheck" - HEALTHCHECK_SCRIPT="/opt/docker-transmission-openvpn/scripts/healthcheck.sh" chmod +x "$HEALTHCHECK_SCRIPT" (crontab -l 2>/dev/null | grep -v "$HEALTHCHECK_SCRIPT"; echo "* * * * * $HEALTHCHECK_SCRIPT") | crontab - - msg_ok "Created Healthcheck" motd_ssh customize -# Cleanup msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean +rm -f Transmissionic-webui-v1.8.0.zip msg_ok "Cleaned" From 781851a0b7d855839befaa3a45faa71d8d8b102a Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 06:01:22 -0400 Subject: [PATCH 03/21] Fix: Avoid .env generation error --- install/transmission-openvpn-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index be12f4433..d712c5bb8 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -119,6 +119,7 @@ HEALTH_CHECK_HOST=${HEALTH_CHECK_HOST:-google.com} SELFHEAL=${SELFHEAL:-false} LOCAL_NETWORK=${LOCAL_NETWORK:-} +mkdir -p /opt/transmission-openvpn cat > "/opt/transmission-openvpn/.env" < Date: Sat, 6 Sep 2025 06:22:12 -0400 Subject: [PATCH 04/21] Add execute right on image scripts --- install/transmission-openvpn-install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index d712c5bb8..c108b5e48 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -55,6 +55,9 @@ msg_ok "Installed Privoxy" msg_info "Installing ${APPLICATION}" useradd -u 911 -U -d /config -s /usr/sbin/nologin abc fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" +chmod +x /opt/docker-transmission-openvpn/openvpn/*.sh || true +chmod +x /opt/docker-transmission-openvpn/scripts/*.sh || true +chmod +x /opt/docker-transmission-openvpn/privoxy/scripts/*.sh || true msg_ok "Installed ${APPLICATION}" msg_info "Support legacy IPTables commands" From 7050bed860b60351323cf742051ec39f3f05a43a Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 12:48:44 -0400 Subject: [PATCH 05/21] Fix: Force transmission home var --- install/transmission-openvpn-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index c108b5e48..75868dea9 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -87,7 +87,7 @@ OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-} OPENVPN_OPTS=${OPENVPN_OPTS:-} CUSTOM_OPENVPN_CONFIG_DIR=${CUSTOM_OPENVPN_CONFIG_DIR:-} GLOBAL_APPLY_PERMISSIONS=${GLOBAL_APPLY_PERMISSIONS:-true} -TRANSMISSION_HOME=${TRANSMISSION_HOME:-/config/transmission-home} +TRANSMISSION_HOME="/config/transmission-home" TRANSMISSION_RPC_PORT=${TRANSMISSION_RPC_PORT:-9091} TRANSMISSION_RPC_USERNAME=${TRANSMISSION_RPC_USERNAME:-} TRANSMISSION_RPC_PASSWORD=${TRANSMISSION_RPC_PASSWORD:-} From 9017776245b80e0b01951614228e88b54c9c3858 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 13:15:17 -0400 Subject: [PATCH 06/21] Fix: unsupported custom app path --- install/transmission-openvpn-install.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 75868dea9..791987c1e 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -55,9 +55,14 @@ msg_ok "Installed Privoxy" msg_info "Installing ${APPLICATION}" useradd -u 911 -U -d /config -s /usr/sbin/nologin abc fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" -chmod +x /opt/docker-transmission-openvpn/openvpn/*.sh || true -chmod +x /opt/docker-transmission-openvpn/scripts/*.sh || true -chmod +x /opt/docker-transmission-openvpn/privoxy/scripts/*.sh || true +mkdir -p /etc/openvpn /etc/transmission /etc/scripts /opt/privoxy +cp -r /opt/docker-transmission-openvpn/openvpn/* /etc/openvpn/ +cp -r /opt/docker-transmission-openvpn/transmission/* /etc/transmission/ +cp -r /opt/docker-transmission-openvpn/scripts/* /etc/scripts/ +cp -r /opt/docker-transmission-openvpn/privoxy/scripts/* /opt/privoxy/ +chmod +x /etc/openvpn/*.sh || true +chmod +x /etc/scripts/*.sh || true +chmod +x /opt/privoxy/*.sh || true msg_ok "Installed ${APPLICATION}" msg_info "Support legacy IPTables commands" @@ -173,7 +178,7 @@ After=network.target [Service] Type=simple -ExecStart=/usr/bin/dumb-init /opt/docker-transmission-openvpn/openvpn/start.sh +ExecStart=/usr/bin/dumb-init /etc/openvpn/start.sh Restart=on-failure RestartSec=5 EnvironmentFile=/opt/transmission-openvpn/.env @@ -185,7 +190,7 @@ systemctl enable --now -q openvpn-custom.service msg_ok "Created Service" msg_info "Creating Healthcheck" -HEALTHCHECK_SCRIPT="/opt/docker-transmission-openvpn/scripts/healthcheck.sh" +HEALTHCHECK_SCRIPT="/etc/scripts/healthcheck.sh" chmod +x "$HEALTHCHECK_SCRIPT" (crontab -l 2>/dev/null | grep -v "$HEALTHCHECK_SCRIPT"; echo "* * * * * $HEALTHCHECK_SCRIPT") | crontab - msg_ok "Created Healthcheck" From 7f6ce183144e25575360bbafd2baf46584f96078 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 14:29:47 -0400 Subject: [PATCH 07/21] Review: Make .env generation simpler --- install/transmission-openvpn-install.sh | 119 ++++++++---------------- 1 file changed, 38 insertions(+), 81 deletions(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 791987c1e..9a4570a4c 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -86,89 +86,46 @@ mv web /opt/transmission-ui/transmissionic msg_ok "Installed WebUI" msg_info "Creating Service" -OPENVPN_USERNAME=${OPENVPN_USERNAME:-} -OPENVPN_PASSWORD=${OPENVPN_PASSWORD:-} -OPENVPN_PROVIDER=${OPENVPN_PROVIDER:-} -OPENVPN_OPTS=${OPENVPN_OPTS:-} -CUSTOM_OPENVPN_CONFIG_DIR=${CUSTOM_OPENVPN_CONFIG_DIR:-} -GLOBAL_APPLY_PERMISSIONS=${GLOBAL_APPLY_PERMISSIONS:-true} -TRANSMISSION_HOME="/config/transmission-home" -TRANSMISSION_RPC_PORT=${TRANSMISSION_RPC_PORT:-9091} -TRANSMISSION_RPC_USERNAME=${TRANSMISSION_RPC_USERNAME:-} -TRANSMISSION_RPC_PASSWORD=${TRANSMISSION_RPC_PASSWORD:-} -TRANSMISSION_DOWNLOAD_DIR=${TRANSMISSION_DOWNLOAD_DIR:-/data/completed} -TRANSMISSION_INCOMPLETE_DIR=${TRANSMISSION_INCOMPLETE_DIR:-/data/incomplete} -TRANSMISSION_WATCH_DIR=${TRANSMISSION_WATCH_DIR:-/data/watch} -TRANSMISSION_WEB_UI=${TRANSMISSION_WEB_UI:-} -TRANSMISSION_UMASK=${TRANSMISSION_UMASK:-} -TRANSMISSION_RATIO_LIMIT_ENABLED=${TRANSMISSION_RATIO_LIMIT_ENABLED:-false} -TRANSMISSION_RATIO_LIMIT=${TRANSMISSION_RATIO_LIMIT:-} -TRANSMISSION_RPC_WHITELIST_ENABLED=${TRANSMISSION_RPC_WHITELIST_ENABLED:-true} -TRANSMISSION_RPC_WHITELIST=${TRANSMISSION_RPC_WHITELIST:-} -TRANSMISSION_RPC_HOST_WHITELIST_ENABLED=${TRANSMISSION_RPC_HOST_WHITELIST_ENABLED:-true} -TRANSMISSION_RPC_HOST_WHITELIST=${TRANSMISSION_RPC_HOST_WHITELIST:-} -CREATE_TUN_DEVICE=${CREATE_TUN_DEVICE:-false} -ENABLE_UFW=${ENABLE_UFW:-false} -UFW_ALLOW_GW_NET=${UFW_ALLOW_GW_NET:-false} -UFW_EXTRA_PORTS=${UFW_EXTRA_PORTS:-} -UFW_DISABLE_IPTABLES_REJECT=${UFW_DISABLE_IPTABLES_REJECT:-false} -PUID=${PUID:-911} -PGID=${PGID:-} -PEER_DNS=${PEER_DNS:-true} -PEER_DNS_PIN_ROUTES=${PEER_DNS_PIN_ROUTES:-true} -DROP_DEFAULT_ROUTE=${DROP_DEFAULT_ROUTE:-} -WEBPROXY_ENABLED=${WEBPROXY_ENABLED:-false} -WEBPROXY_PORT=${WEBPROXY_PORT:-8118} -WEBPROXY_BIND_ADDRESS=${WEBPROXY_BIND_ADDRESS:-} -WEBPROXY_USERNAME=${WEBPROXY_USERNAME:-} -WEBPROXY_PASSWORD=${WEBPROXY_PASSWORD:-} -LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} -HEALTH_CHECK_HOST=${HEALTH_CHECK_HOST:-google.com} -SELFHEAL=${SELFHEAL:-false} -LOCAL_NETWORK=${LOCAL_NETWORK:-} - mkdir -p /opt/transmission-openvpn cat > "/opt/transmission-openvpn/.env" < /etc/systemd/system/openvpn-custom.service < Date: Sat, 6 Sep 2025 15:19:30 -0400 Subject: [PATCH 08/21] Fix: Change cron command causing error due to crlf --- install/transmission-openvpn-install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 9a4570a4c..eb20b81a9 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -149,7 +149,11 @@ msg_ok "Created Service" msg_info "Creating Healthcheck" HEALTHCHECK_SCRIPT="/etc/scripts/healthcheck.sh" chmod +x "$HEALTHCHECK_SCRIPT" -(crontab -l 2>/dev/null | grep -v "$HEALTHCHECK_SCRIPT"; echo "* * * * * $HEALTHCHECK_SCRIPT") | crontab - +mkdir -p /var/log +cat > /tmp/crontab.txt <> /var/log/healthcheck.log 2>&1 +EOF +crontab /tmp/crontab.txt msg_ok "Created Healthcheck" motd_ssh @@ -159,4 +163,5 @@ msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean rm -f Transmissionic-webui-v1.8.0.zip +rm -rf /tmp/crontab.txt msg_ok "Cleaned" From 27a834536524d53ad0fe6da896bc4506f80608bf Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 16:50:51 -0400 Subject: [PATCH 09/21] Review: Rework fetching WebUI --- install/transmission-openvpn-install.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index eb20b81a9..c30513d89 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -72,17 +72,18 @@ msg_ok "Support legacy IPTables commands" msg_info "Installing WebUI" mkdir -p /opt/transmission-ui -wget -qO- https://github.com/killemov/Shift/archive/master.tar.gz | tar xz +curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" +tar xzf Shift-master.tar.gz mv Shift-master /opt/transmission-ui/shift -wget -qO- https://github.com/johman10/flood-for-transmission/releases/download/latest/flood-for-transmission.tar.gz | tar xz -mv flood-for-transmission /opt/transmission-ui/flood -wget -qO- https://github.com/Secretmapper/combustion/archive/release.tar.gz | tar xz -mv combustion-release /opt/transmission-ui/combustion -wget -qO- https://github.com/endor/kettu/archive/master.tar.gz | tar xz +curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" +tar xzf kettu-master.tar.gz mv kettu-master /opt/transmission-ui/kettu -wget -q https://github.com/6c65726f79/Transmissionic/releases/download/v1.8.0/Transmissionic-webui-v1.8.0.zip -unzip -q Transmissionic-webui-v1.8.0.zip -mv web /opt/transmission-ui/transmissionic +fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/flood-for-transmission" +mv /opt/flood-for-transmission /opt/transmission-ui/flood +fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/combustion" +mv /opt/combustion /opt/transmission-ui/combustion +fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmissionic" +mv /opt/transmissionic /opt/transmission-ui/transmissionic msg_ok "Installed WebUI" msg_info "Creating Service" From 43ce13386c1854cf1a2e813365ef2bb227094c7c Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 6 Sep 2025 17:33:59 -0400 Subject: [PATCH 10/21] Improve cleaning up --- install/transmission-openvpn-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index c30513d89..d618cf40e 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -163,6 +163,7 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -rm -f Transmissionic-webui-v1.8.0.zip -rm -rf /tmp/crontab.txt +rm -f Shift-master.tar.gz +rm -f kettu-master.tar.gz +rm -f /tmp/crontab.txt msg_ok "Cleaned" From ab709cd19bca6cef35bd8da80945b3e0a6b613de Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sun, 7 Sep 2025 03:58:26 -0400 Subject: [PATCH 11/21] Add warning message to setup vpn provider --- frontend/public/json/transmission-openvpn.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/public/json/transmission-openvpn.json b/frontend/public/json/transmission-openvpn.json index fcce8ecb0..384030ff7 100644 --- a/frontend/public/json/transmission-openvpn.json +++ b/frontend/public/json/transmission-openvpn.json @@ -31,5 +31,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "This application requires a VPN provider to work. Please refer to your VPN provider’s documentation for setting up OpenVPN.", + "type": "warning" + } + ] } From 427c264d5dcf755bb54db7d6552487e1f2f878f8 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sun, 7 Sep 2025 04:25:54 -0400 Subject: [PATCH 12/21] Rework update function --- ct/transmission-openvpn.sh | 63 ++++++++++++++++++++++--- install/transmission-openvpn-install.sh | 1 + 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 21e27da12..f9fb85fb7 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -28,16 +28,65 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - msg_info "Updating ${APP} LXC" - if check_for_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn"; then - msg_info "Update transmission-openvpn" - fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" - msg_ok "Update transmission-openvpn" - msg_ok "Updated Successfully" + + msg_info "Updating Transmission Web UIs" + rm -rf /opt/transmission-ui/* + if check_for_gh_release "flood-for-transmission" "johman10/flood-for-transmission"; then + fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/flood-for-transmission" + mv /opt/flood-for-transmission /opt/transmission-ui/flood + fi + if check_for_gh_release "combustion" "Secretmapper/combustion"; then + fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/combustion" + mv /opt/combustion /opt/transmission-ui/combustion fi + if check_for_gh_release "transmissionic" "6c65726f79/Transmissionic"; then + fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmissionic" + mv /opt/transmissionic /opt/transmission-ui/transmissionic + fi + curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" + tar xzf Shift-master.tar.gz + mv Shift-master /opt/transmission-ui/shift + curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" + tar xzf kettu-master.tar.gz + mv kettu-master /opt/transmission-ui/kettu + msg_ok "Updated Transmission Web UIs" + + msg_info "Updating Dependencies" $STD apt-get update $STD apt-get -y upgrade - msg_ok "Updated ${APP} LXC" + msg_ok "Updated Dependencies" + + if check_for_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn"; then + msg_info "Stopping $APP" + systemctl stop openvpn-custom + msg_ok "Stopped $APP" + + msg_info "Updating ${APP} LXC" + fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" + rm -rf /etc/openvpn/* /etc/transmission/* /etc/scripts/* /opt/privoxy/* + cp -r /opt/docker-transmission-openvpn/openvpn/* /etc/openvpn/ + cp -r /opt/docker-transmission-openvpn/transmission/* /etc/transmission/ + cp -r /opt/docker-transmission-openvpn/scripts/* /etc/scripts/ + cp -r /opt/docker-transmission-openvpn/privoxy/scripts/* /opt/privoxy/ + chmod +x /etc/openvpn/*.sh || true + chmod +x /etc/scripts/*.sh || true + chmod +x /opt/privoxy/*.sh || true + msg_ok "Updated ${APP} LXC" + + msg_info "Starting $APP" + systemctl start openvpn-custom + msg_ok "Started $APP" + fi + + msg_info "Cleaning up" + $STD apt-get -y autoremove + $STD apt-get -y autoclean + rm -rf /opt/docker-transmission-openvpn + rm -f Shift-master.tar.gz + rm -f kettu-master.tar.gz + rm -f /tmp/crontab.txt + msg_ok "Cleaned" + exit } diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index d618cf40e..d8d66adfe 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -163,6 +163,7 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean +rm -rf /opt/docker-transmission-openvpn rm -f Shift-master.tar.gz rm -f kettu-master.tar.gz rm -f /tmp/crontab.txt From c731ff803895eb1480df5fc2f256c452684f2083 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sun, 7 Sep 2025 04:59:12 -0400 Subject: [PATCH 13/21] Fix: Change var_tun default value to yes --- ct/transmission-openvpn.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index f9fb85fb7..b9b6cceaf 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -13,7 +13,7 @@ var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-12}" var_unprivileged="${var_unprivileged:-1}" -var_tun="${var_tun:-1}" +var_tun="${var_tun:-yes}" header_info "$APP" variables From 59758de2ed950c2c12e26cddfa2f64f880616a53 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sun, 7 Sep 2025 09:33:15 -0400 Subject: [PATCH 14/21] Review: Remove Healthcheck cron job --- ct/transmission-openvpn.sh | 1 - install/transmission-openvpn-install.sh | 11 ----------- 2 files changed, 12 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index b9b6cceaf..7f9a088bd 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -84,7 +84,6 @@ function update_script() { rm -rf /opt/docker-transmission-openvpn rm -f Shift-master.tar.gz rm -f kettu-master.tar.gz - rm -f /tmp/crontab.txt msg_ok "Cleaned" exit diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index d8d66adfe..459a512cd 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -147,16 +147,6 @@ EOF systemctl enable --now -q openvpn-custom.service msg_ok "Created Service" -msg_info "Creating Healthcheck" -HEALTHCHECK_SCRIPT="/etc/scripts/healthcheck.sh" -chmod +x "$HEALTHCHECK_SCRIPT" -mkdir -p /var/log -cat > /tmp/crontab.txt <> /var/log/healthcheck.log 2>&1 -EOF -crontab /tmp/crontab.txt -msg_ok "Created Healthcheck" - motd_ssh customize @@ -166,5 +156,4 @@ $STD apt-get -y autoclean rm -rf /opt/docker-transmission-openvpn rm -f Shift-master.tar.gz rm -f kettu-master.tar.gz -rm -f /tmp/crontab.txt msg_ok "Cleaned" From 60309dbc8101e6ac15591e266e5f8da3e6de8f01 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sun, 7 Sep 2025 09:39:22 -0400 Subject: [PATCH 15/21] Review: Directly deploy WebUI to /opt/transmission-ui/ --- ct/transmission-openvpn.sh | 9 +++------ install/transmission-openvpn-install.sh | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 7f9a088bd..1a9cde7b4 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -32,16 +32,13 @@ function update_script() { msg_info "Updating Transmission Web UIs" rm -rf /opt/transmission-ui/* if check_for_gh_release "flood-for-transmission" "johman10/flood-for-transmission"; then - fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/flood-for-transmission" - mv /opt/flood-for-transmission /opt/transmission-ui/flood + fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/transmission-ui/flood-for-transmission" fi if check_for_gh_release "combustion" "Secretmapper/combustion"; then - fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/combustion" - mv /opt/combustion /opt/transmission-ui/combustion + fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/transmission-ui/combustion" fi if check_for_gh_release "transmissionic" "6c65726f79/Transmissionic"; then - fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmissionic" - mv /opt/transmissionic /opt/transmission-ui/transmissionic + fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmission-ui/transmissionic" fi curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" tar xzf Shift-master.tar.gz diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 459a512cd..ed22681ea 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -78,12 +78,9 @@ mv Shift-master /opt/transmission-ui/shift curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" tar xzf kettu-master.tar.gz mv kettu-master /opt/transmission-ui/kettu -fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/flood-for-transmission" -mv /opt/flood-for-transmission /opt/transmission-ui/flood -fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/combustion" -mv /opt/combustion /opt/transmission-ui/combustion -fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmissionic" -mv /opt/transmissionic /opt/transmission-ui/transmissionic +fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/transmission-ui/flood-for-transmission" +fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/transmission-ui/combustion" +fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmission-ui/transmissionic" msg_ok "Installed WebUI" msg_info "Creating Service" From 13ff7f020268b558ad8b687cfa67da0d5191c250 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Mon, 8 Sep 2025 16:29:35 -0400 Subject: [PATCH 16/21] Make custom config persistent when updating --- ct/transmission-openvpn.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 1a9cde7b4..e4d8668b4 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -58,6 +58,11 @@ function update_script() { systemctl stop openvpn-custom msg_ok "Stopped $APP" + msg_info "Saving Custom Configs" + mv /etc/openvpn/custom /opt/transmission-openvpn/ + rm -f /opt/transmission-openvpn/config-failure.sh + msg_ok "Saved Custom Configs" + msg_info "Updating ${APP} LXC" fetch_and_deploy_gh_release "docker-transmission-openvpn" "haugene/docker-transmission-openvpn" "tarball" "latest" "/opt/docker-transmission-openvpn" rm -rf /etc/openvpn/* /etc/transmission/* /etc/scripts/* /opt/privoxy/* @@ -70,6 +75,10 @@ function update_script() { chmod +x /opt/privoxy/*.sh || true msg_ok "Updated ${APP} LXC" + msg_info "Restoring Custom Configs" + cp -r /opt/transmission-openvpn/custom/* /etc/openvpn/custom/ + msg_ok "Restored Custom Configs" + msg_info "Starting $APP" systemctl start openvpn-custom msg_ok "Started $APP" From 2a1a39afe758cad11a53d7a075792aa8793bd80f Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Mon, 8 Sep 2025 16:46:55 -0400 Subject: [PATCH 17/21] Fix: fetch WebUI from correct URL (old one was invalid) --- ct/transmission-openvpn.sh | 14 ++++++++++---- install/transmission-openvpn-install.sh | 9 ++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index e4d8668b4..0bf70746b 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -30,16 +30,21 @@ function update_script() { fi msg_info "Updating Transmission Web UIs" - rm -rf /opt/transmission-ui/* if check_for_gh_release "flood-for-transmission" "johman10/flood-for-transmission"; then - fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/transmission-ui/flood-for-transmission" + rm -rf /opt/transmission-ui/flood-for-transmission + fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "prebuild" "latest" "/opt/transmission-ui/flood-for-transmission" "flood-for-transmission.tar.gz" fi if check_for_gh_release "combustion" "Secretmapper/combustion"; then - fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/transmission-ui/combustion" + rm -rf /opt/transmission-ui/combustion-release + curl -fsSL -o "combustion-release.tar.gz" "https://github.com/Secretmapper/combustion/archive/release.tar.gz" + tar xzf combustion-release.tar.gz + mv combustion-release /opt/transmission-ui/combustion-release fi if check_for_gh_release "transmissionic" "6c65726f79/Transmissionic"; then - fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmission-ui/transmissionic" + rm -rf /opt/transmission-ui/transmissionic + fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "prebuild" "latest" "/opt/transmission-ui/transmissionic" "Transmissionic-webui-v1.8.0.zip" fi + rm -rf /opt/transmission-ui/shift /opt/transmission-ui/kettu curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" tar xzf Shift-master.tar.gz mv Shift-master /opt/transmission-ui/shift @@ -90,6 +95,7 @@ function update_script() { rm -rf /opt/docker-transmission-openvpn rm -f Shift-master.tar.gz rm -f kettu-master.tar.gz + rm -f combustion-release.tar.gz msg_ok "Cleaned" exit diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index ed22681ea..23dc8c8f6 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -78,9 +78,11 @@ mv Shift-master /opt/transmission-ui/shift curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" tar xzf kettu-master.tar.gz mv kettu-master /opt/transmission-ui/kettu -fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "tarball" "latest" "/opt/transmission-ui/flood-for-transmission" -fetch_and_deploy_gh_release "combustion" "Secretmapper/combustion" "tarball" "latest" "/opt/transmission-ui/combustion" -fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "tarball" "latest" "/opt/transmission-ui/transmissionic" +curl -fsSL -o "combustion-release.tar.gz" "https://github.com/Secretmapper/combustion/archive/release.tar.gz" +tar xzf combustion-release.tar.gz +mv combustion-release /opt/transmission-ui/combustion-release +fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "prebuild" "latest" "/opt/transmission-ui/transmissionic" "Transmissionic-webui-v1.8.0.zip" +fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "prebuild" "latest" "/opt/transmission-ui/flood-for-transmission" "flood-for-transmission.tar.gz" msg_ok "Installed WebUI" msg_info "Creating Service" @@ -153,4 +155,5 @@ $STD apt-get -y autoclean rm -rf /opt/docker-transmission-openvpn rm -f Shift-master.tar.gz rm -f kettu-master.tar.gz +rm -f combustion-release.tar.gz msg_ok "Cleaned" From 44a131dfca09c6e1499c3fb2e27178a4f181a69d Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Tue, 9 Sep 2025 14:28:28 -0400 Subject: [PATCH 18/21] Fix: resolve conflicting Privoxy instance --- install/transmission-openvpn-install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 23dc8c8f6..db9f5d298 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -49,7 +49,14 @@ $STD apt-get install -y openvpn msg_ok "Installed Openvpn" msg_info "Installing Privoxy" +mkdir -p /etc/systemd/system-preset +echo "disable *" > /etc/systemd/system-preset/99-no-autostart.preset +export DEBIAN_FRONTEND=noninteractive $STD apt-get install -y privoxy +rm -f /etc/systemd/system-preset/99-no-autostart.preset +systemctl preset-all +systemctl disable --now privoxy +systemctl mask privoxy msg_ok "Installed Privoxy" msg_info "Installing ${APPLICATION}" From b75f9c846c538ab0e20759d11bb6d5c2aa8ba1e1 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Tue, 9 Sep 2025 15:02:34 -0400 Subject: [PATCH 19/21] Fix: align binary path when fetching branch vs release --- install/transmission-openvpn-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index db9f5d298..b02ebef80 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -70,6 +70,7 @@ cp -r /opt/docker-transmission-openvpn/privoxy/scripts/* /opt/privoxy/ chmod +x /etc/openvpn/*.sh || true chmod +x /etc/scripts/*.sh || true chmod +x /opt/privoxy/*.sh || true +ln -s /usr/bin/transmission-daemon /usr/local/bin/transmission-daemon msg_ok "Installed ${APPLICATION}" msg_info "Support legacy IPTables commands" From e92605b358ec5761abcca34a8b0f2c039b24ec67 Mon Sep 17 00:00:00 2001 From: SunFlowerOwl Date: Sat, 13 Sep 2025 07:09:49 -0400 Subject: [PATCH 20/21] Security: Remove old and deprecated WebUI for security reasons --- ct/transmission-openvpn.sh | 29 +------------------------ install/transmission-openvpn-install.sh | 18 --------------- 2 files changed, 1 insertion(+), 46 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 0bf70746b..88baa6ff9 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -28,31 +28,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - - msg_info "Updating Transmission Web UIs" - if check_for_gh_release "flood-for-transmission" "johman10/flood-for-transmission"; then - rm -rf /opt/transmission-ui/flood-for-transmission - fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "prebuild" "latest" "/opt/transmission-ui/flood-for-transmission" "flood-for-transmission.tar.gz" - fi - if check_for_gh_release "combustion" "Secretmapper/combustion"; then - rm -rf /opt/transmission-ui/combustion-release - curl -fsSL -o "combustion-release.tar.gz" "https://github.com/Secretmapper/combustion/archive/release.tar.gz" - tar xzf combustion-release.tar.gz - mv combustion-release /opt/transmission-ui/combustion-release - fi - if check_for_gh_release "transmissionic" "6c65726f79/Transmissionic"; then - rm -rf /opt/transmission-ui/transmissionic - fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "prebuild" "latest" "/opt/transmission-ui/transmissionic" "Transmissionic-webui-v1.8.0.zip" - fi - rm -rf /opt/transmission-ui/shift /opt/transmission-ui/kettu - curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" - tar xzf Shift-master.tar.gz - mv Shift-master /opt/transmission-ui/shift - curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" - tar xzf kettu-master.tar.gz - mv kettu-master /opt/transmission-ui/kettu - msg_ok "Updated Transmission Web UIs" - + msg_info "Updating Dependencies" $STD apt-get update $STD apt-get -y upgrade @@ -93,9 +69,6 @@ function update_script() { $STD apt-get -y autoremove $STD apt-get -y autoclean rm -rf /opt/docker-transmission-openvpn - rm -f Shift-master.tar.gz - rm -f kettu-master.tar.gz - rm -f combustion-release.tar.gz msg_ok "Cleaned" exit diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index b02ebef80..7dbcedb23 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -78,21 +78,6 @@ update-alternatives --set iptables /usr/sbin/iptables-legacy update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy msg_ok "Support legacy IPTables commands" -msg_info "Installing WebUI" -mkdir -p /opt/transmission-ui -curl -fsSL -o "Shift-master.tar.gz" "https://github.com/killemov/Shift/archive/master.tar.gz" -tar xzf Shift-master.tar.gz -mv Shift-master /opt/transmission-ui/shift -curl -fsSL -o "kettu-master.tar.gz" "https://github.com/endor/kettu/archive/master.tar.gz" -tar xzf kettu-master.tar.gz -mv kettu-master /opt/transmission-ui/kettu -curl -fsSL -o "combustion-release.tar.gz" "https://github.com/Secretmapper/combustion/archive/release.tar.gz" -tar xzf combustion-release.tar.gz -mv combustion-release /opt/transmission-ui/combustion-release -fetch_and_deploy_gh_release "transmissionic" "6c65726f79/Transmissionic" "prebuild" "latest" "/opt/transmission-ui/transmissionic" "Transmissionic-webui-v1.8.0.zip" -fetch_and_deploy_gh_release "flood-for-transmission" "johman10/flood-for-transmission" "prebuild" "latest" "/opt/transmission-ui/flood-for-transmission" "flood-for-transmission.tar.gz" -msg_ok "Installed WebUI" - msg_info "Creating Service" mkdir -p /opt/transmission-openvpn cat > "/opt/transmission-openvpn/.env" < Date: Sat, 13 Sep 2025 11:12:17 -0400 Subject: [PATCH 21/21] Review: drop unnecessary packages and optimize implementations --- ct/transmission-openvpn.sh | 6 +-- install/transmission-openvpn-install.sh | 58 +++++++++++-------------- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/ct/transmission-openvpn.sh b/ct/transmission-openvpn.sh index 88baa6ff9..f60801a14 100644 --- a/ct/transmission-openvpn.sh +++ b/ct/transmission-openvpn.sh @@ -51,9 +51,9 @@ function update_script() { cp -r /opt/docker-transmission-openvpn/transmission/* /etc/transmission/ cp -r /opt/docker-transmission-openvpn/scripts/* /etc/scripts/ cp -r /opt/docker-transmission-openvpn/privoxy/scripts/* /opt/privoxy/ - chmod +x /etc/openvpn/*.sh || true - chmod +x /etc/scripts/*.sh || true - chmod +x /opt/privoxy/*.sh || true + chmod +x /etc/openvpn/*.sh + chmod +x /etc/scripts/*.sh + chmod +x /opt/privoxy/*.sh msg_ok "Updated ${APP} LXC" msg_info "Restoring Custom Configs" diff --git a/install/transmission-openvpn-install.sh b/install/transmission-openvpn-install.sh index 7dbcedb23..62fc5934f 100644 --- a/install/transmission-openvpn-install.sh +++ b/install/transmission-openvpn-install.sh @@ -16,48 +16,40 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ - dumb-init \ - tzdata \ dnsutils \ iputils-ping \ ufw \ - iproute2 \ - openssh-client \ - git \ - jq \ - curl \ - wget \ - unrar-free \ - unzip \ - bc \ - systemd + iproute2 msg_ok "Installed Dependencies" -msg_info "Installing Transmission" +msg_info "Disabling systemd autostart" mkdir -p /etc/systemd/system-preset echo "disable *" > /etc/systemd/system-preset/99-no-autostart.preset -export DEBIAN_FRONTEND=noninteractive -$STD apt install -y transmission-daemon -rm -f /etc/systemd/system-preset/99-no-autostart.preset -systemctl preset-all -systemctl disable --now transmission-daemon -systemctl mask transmission-daemon -msg_ok "Installed Transmission" +msg_ok "Disabled systemd autostart" -msg_info "Installing Openvpn" -$STD apt-get install -y openvpn -msg_ok "Installed Openvpn" +msg_info "Installing Transmission" +$STD apt-get install -y transmission-daemon +msg_ok "Installed Transmission" msg_info "Installing Privoxy" -mkdir -p /etc/systemd/system-preset -echo "disable *" > /etc/systemd/system-preset/99-no-autostart.preset -export DEBIAN_FRONTEND=noninteractive $STD apt-get install -y privoxy +msg_ok "Installed Privoxy" + +msg_info "Enabling systemd autostart" rm -f /etc/systemd/system-preset/99-no-autostart.preset systemctl preset-all +msg_ok "Enabled systemd autostart" + +msg_info "Disabling and masking Transmission and Privoxy services" +systemctl disable --now transmission-daemon +systemctl mask transmission-daemon systemctl disable --now privoxy systemctl mask privoxy -msg_ok "Installed Privoxy" +msg_ok "Transmission and Privoxy services disabled and masked" + +msg_info "Installing Openvpn" +$STD apt-get install -y openvpn +msg_ok "Installed Openvpn" msg_info "Installing ${APPLICATION}" useradd -u 911 -U -d /config -s /usr/sbin/nologin abc @@ -67,9 +59,9 @@ cp -r /opt/docker-transmission-openvpn/openvpn/* /etc/openvpn/ cp -r /opt/docker-transmission-openvpn/transmission/* /etc/transmission/ cp -r /opt/docker-transmission-openvpn/scripts/* /etc/scripts/ cp -r /opt/docker-transmission-openvpn/privoxy/scripts/* /opt/privoxy/ -chmod +x /etc/openvpn/*.sh || true -chmod +x /etc/scripts/*.sh || true -chmod +x /opt/privoxy/*.sh || true +chmod +x /etc/openvpn/*.sh +chmod +x /etc/scripts/*.sh +chmod +x /opt/privoxy/*.sh ln -s /usr/bin/transmission-daemon /usr/local/bin/transmission-daemon msg_ok "Installed ${APPLICATION}" @@ -80,7 +72,7 @@ msg_ok "Support legacy IPTables commands" msg_info "Creating Service" mkdir -p /opt/transmission-openvpn -cat > "/opt/transmission-openvpn/.env" < "/opt/transmission-openvpn/.env" OPENVPN_USERNAME="username" OPENVPN_PASSWORD="password" OPENVPN_PROVIDER="PIA" @@ -121,14 +113,14 @@ HEALTH_CHECK_HOST="google.com" SELFHEAL="false" EOF -cat > /etc/systemd/system/openvpn-custom.service < /etc/systemd/system/openvpn-custom.service [Unit] Description=Custom OpenVPN start service After=network.target [Service] Type=simple -ExecStart=/usr/bin/dumb-init /etc/openvpn/start.sh +ExecStart=/etc/openvpn/start.sh Restart=on-failure RestartSec=5 EnvironmentFile=/opt/transmission-openvpn/.env