From bc3c833038c80234cd000e8d86e22d585321c399 Mon Sep 17 00:00:00 2001 From: wanetty Date: Fri, 31 Oct 2025 18:33:20 +0100 Subject: [PATCH 1/5] Add Upgopher file server script - Add Upgopher LXC container creation script - Add installation script for Upgopher v1.11.1 - Add JSON metadata with configuration details - Upgopher is a lightweight file upload/download server written in Go --- ct/upgopher.sh | 59 ++++++++++++++++++++++++++ frontend/public/json/upgopher.json | 52 +++++++++++++++++++++++ install/upgopher-install.sh | 67 ++++++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 ct/upgopher.sh create mode 100644 frontend/public/json/upgopher.json create mode 100644 install/upgopher-install.sh diff --git a/ct/upgopher.sh b/ct/upgopher.sh new file mode 100644 index 000000000..21311cc48 --- /dev/null +++ b/ct/upgopher.sh @@ -0,0 +1,59 @@ +#!/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: Eduard González (wanetty) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/wanetty/upgopher + +APP="Upgopher" +var_tags="${var_tags:-file-sharing}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-debian}" +var_version="${var_version:-12}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/upgopher ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "upgopher" "wanetty/upgopher"; then + msg_info "Stopping Services" + systemctl stop upgopher + msg_ok "Stopped Services" + + cd /opt/upgopher + RELEASE_URL=$(curl -s https://api.github.com/repos/wanetty/upgopher/releases/latest | grep "browser_download_url.*linux_amd64.tar.gz" | cut -d '"' -f 4) + wget -q "$RELEASE_URL" + tar -xzf upgopher_*_linux_amd64.tar.gz + mv upgopher_*_linux_amd64/* . + rmdir upgopher_*_linux_amd64 + rm -f upgopher_*_linux_amd64.tar.gz + chmod +x upgopher + msg_info "Starting Services" + systemctl start upgopher + msg_ok "Started Services" + 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}:9090${CL}" diff --git a/frontend/public/json/upgopher.json b/frontend/public/json/upgopher.json new file mode 100644 index 000000000..6c9d85409 --- /dev/null +++ b/frontend/public/json/upgopher.json @@ -0,0 +1,52 @@ +{ + "name": "Upgopher", + "slug": "upgopher", + "categories": [ + 11 + ], + "date_created": "2025-10-31", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9090, + "documentation": "https://github.com/wanetty/upgopher#readme", + "config_path": "", + "website": "https://github.com/wanetty/upgopher", + "logo": "https://raw.githubusercontent.com/wanetty/upgopher/main/static/logopher.webp", + "description": "A simple Go web server for file upload, download, and browsing. Cross-platform alternative to Python-based file servers with no library dependencies. Features file upload via web interface, directory navigation, URL copying to clipboard, optional basic authentication, HTTPS support, and hidden files toggle.", + "install_methods": [ + { + "type": "default", + "script": "ct/upgopher.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Default: HTTP on port 9090, no authentication, uploads dir: /opt/upgopher/uploads", + "type": "info" + }, + { + "text": "To customize: edit /etc/systemd/system/upgopher.service and modify ExecStart line. Available flags: -user -pass (authentication), -ssl (HTTPS with self-signed cert), -port (custom port), -dir (upload directory), -disable-hidden-files (hide hidden files)", + "type": "info" + }, + { + "text": "Example with auth: ExecStart=/opt/upgopher/upgopher -port 9090 -dir /opt/upgopher/uploads -user admin -pass mysecret", + "type": "info" + }, + { + "text": "After editing service file: systemctl daemon-reload && systemctl restart upgopher", + "type": "info" + } + ] +} diff --git a/install/upgopher-install.sh b/install/upgopher-install.sh new file mode 100644 index 000000000..1b2f33f2e --- /dev/null +++ b/install/upgopher-install.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Eduardo González (wanetty) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/wanetty/upgopher + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y curl wget +msg_ok "Installed Dependencies" + +msg_info "Installing Upgopher" +mkdir -p /opt/upgopher +cd /opt/upgopher +RELEASE_URL=$(curl -s https://api.github.com/repos/wanetty/upgopher/releases/latest | grep "browser_download_url.*linux_amd64.tar.gz" | cut -d '"' -f 4) +wget -q "$RELEASE_URL" +tar -xzf upgopher_*_linux_amd64.tar.gz +mv upgopher_*_linux_amd64/* . +rmdir upgopher_*_linux_amd64 +rm -f upgopher_*_linux_amd64.tar.gz +chmod +x upgopher +msg_ok "Installed Upgopher" + +msg_info "Configuring Upgopher" +# Use default configuration (no authentication, HTTP, default port/directory) +# Users can modify /etc/systemd/system/upgopher.service after installation to enable features +UPGOPHER_PORT="9090" +UPGOPHER_DIR="/opt/upgopher/uploads" +mkdir -p "$UPGOPHER_DIR" +msg_ok "Configured Upgopher (default settings: no auth, HTTP, port 9090)" + +msg_info "Creating Service" +cat </etc/systemd/system/upgopher.service +[Unit] +Description=Upgopher File Server +Documentation=https://github.com/wanetty/upgopher +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/upgopher +ExecStart=/opt/upgopher/upgopher -port $UPGOPHER_PORT -dir "$UPGOPHER_DIR" +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now upgopher +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" From 88795c572288f0889e45cf7947aace0258676b13 Mon Sep 17 00:00:00 2001 From: wanetty Date: Sat, 1 Nov 2025 09:13:58 +0100 Subject: [PATCH 2/5] feat: Implement PR feedback for Upgopher script - Update Debian version from 12 to 13 - Replace manual download/extraction with fetch_and_deploy_gh_release function - Remove redundant curl/wget installation (already in core dependencies) - Remove unnecessary comments - Add apt clean -y to cleanup section - Modernize apt-get commands to apt - Update success message to 'Updated successfully!' - Fix asset pattern to match release files (upgopher_*_linux_amd64.tar.gz) --- ct/upgopher.sh | 15 +++++---------- frontend/public/json/upgopher.json | 2 +- install/upgopher-install.sh | 21 +++++---------------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/ct/upgopher.sh b/ct/upgopher.sh index 21311cc48..6e8a7aecf 100644 --- a/ct/upgopher.sh +++ b/ct/upgopher.sh @@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}" var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" -var_version="${var_version:-12}" +var_version="${var_version:-13}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -33,18 +33,13 @@ function update_script() { systemctl stop upgopher msg_ok "Stopped Services" - cd /opt/upgopher - RELEASE_URL=$(curl -s https://api.github.com/repos/wanetty/upgopher/releases/latest | grep "browser_download_url.*linux_amd64.tar.gz" | cut -d '"' -f 4) - wget -q "$RELEASE_URL" - tar -xzf upgopher_*_linux_amd64.tar.gz - mv upgopher_*_linux_amd64/* . - rmdir upgopher_*_linux_amd64 - rm -f upgopher_*_linux_amd64.tar.gz - chmod +x upgopher + fetch_and_deploy_gh_release "upgopher" "wanetty/upgopher" "prebuild" "latest" "/opt/upgopher" "upgopher_*_linux_amd64.tar.gz" + chmod +x /opt/upgopher/upgopher + msg_info "Starting Services" systemctl start upgopher msg_ok "Started Services" - msg_ok "Updated Successfully" + msg_ok "Updated successfully!" fi exit } diff --git a/frontend/public/json/upgopher.json b/frontend/public/json/upgopher.json index 6c9d85409..3e54643a0 100644 --- a/frontend/public/json/upgopher.json +++ b/frontend/public/json/upgopher.json @@ -23,7 +23,7 @@ "ram": 512, "hdd": 4, "os": "Debian", - "version": "12" + "version": "13" } } ], diff --git a/install/upgopher-install.sh b/install/upgopher-install.sh index 1b2f33f2e..ef07b77a6 100644 --- a/install/upgopher-install.sh +++ b/install/upgopher-install.sh @@ -13,25 +13,13 @@ setting_up_container network_check update_os -msg_info "Installing Dependencies" -$STD apt-get install -y curl wget -msg_ok "Installed Dependencies" - msg_info "Installing Upgopher" mkdir -p /opt/upgopher -cd /opt/upgopher -RELEASE_URL=$(curl -s https://api.github.com/repos/wanetty/upgopher/releases/latest | grep "browser_download_url.*linux_amd64.tar.gz" | cut -d '"' -f 4) -wget -q "$RELEASE_URL" -tar -xzf upgopher_*_linux_amd64.tar.gz -mv upgopher_*_linux_amd64/* . -rmdir upgopher_*_linux_amd64 -rm -f upgopher_*_linux_amd64.tar.gz -chmod +x upgopher +fetch_and_deploy_gh_release "upgopher" "wanetty/upgopher" "prebuild" "latest" "/opt/upgopher" "upgopher_*_linux_amd64.tar.gz" +chmod +x /opt/upgopher/upgopher msg_ok "Installed Upgopher" msg_info "Configuring Upgopher" -# Use default configuration (no authentication, HTTP, default port/directory) -# Users can modify /etc/systemd/system/upgopher.service after installation to enable features UPGOPHER_PORT="9090" UPGOPHER_DIR="/opt/upgopher/uploads" mkdir -p "$UPGOPHER_DIR" @@ -62,6 +50,7 @@ motd_ssh customize msg_info "Cleaning up" -$STD apt-get -y autoremove -$STD apt-get -y autoclean +$STD apt -y autoremove +$STD apt -y autoclean +$STD apt clean -y msg_ok "Cleaned" From 81a8fa0c77a5549e1f915016118d74b9f9b618b6 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:23:07 +0100 Subject: [PATCH 3/5] Finalizinger -install.sh Removed configuration for Upgopher port and directory, using default values instead. --- install/upgopher-install.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/install/upgopher-install.sh b/install/upgopher-install.sh index ef07b77a6..26a1ee6da 100644 --- a/install/upgopher-install.sh +++ b/install/upgopher-install.sh @@ -17,13 +17,9 @@ msg_info "Installing Upgopher" mkdir -p /opt/upgopher fetch_and_deploy_gh_release "upgopher" "wanetty/upgopher" "prebuild" "latest" "/opt/upgopher" "upgopher_*_linux_amd64.tar.gz" chmod +x /opt/upgopher/upgopher +mkdir -p /opt/upgopher/uploads msg_ok "Installed Upgopher" -msg_info "Configuring Upgopher" -UPGOPHER_PORT="9090" -UPGOPHER_DIR="/opt/upgopher/uploads" -mkdir -p "$UPGOPHER_DIR" -msg_ok "Configured Upgopher (default settings: no auth, HTTP, port 9090)" msg_info "Creating Service" cat </etc/systemd/system/upgopher.service @@ -36,7 +32,7 @@ After=network.target Type=simple User=root WorkingDirectory=/opt/upgopher -ExecStart=/opt/upgopher/upgopher -port $UPGOPHER_PORT -dir "$UPGOPHER_DIR" +ExecStart=/opt/upgopher/upgopher -port 9090 -dir /opt/upgopher/uploads Restart=always RestartSec=5 From 7ce0006f8b1f9c3b68622ab30dfbaf9c979ef758 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:40:57 +0100 Subject: [PATCH 4/5] Fix service messages in upgopher.sh --- ct/upgopher.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ct/upgopher.sh b/ct/upgopher.sh index 6e8a7aecf..cd7b4d69a 100644 --- a/ct/upgopher.sh +++ b/ct/upgopher.sh @@ -29,16 +29,16 @@ function update_script() { fi if check_for_gh_release "upgopher" "wanetty/upgopher"; then - msg_info "Stopping Services" + msg_info "Stopping Service" systemctl stop upgopher - msg_ok "Stopped Services" + msg_ok "Stopped Service" fetch_and_deploy_gh_release "upgopher" "wanetty/upgopher" "prebuild" "latest" "/opt/upgopher" "upgopher_*_linux_amd64.tar.gz" chmod +x /opt/upgopher/upgopher - msg_info "Starting Services" + msg_info "Starting Service" systemctl start upgopher - msg_ok "Started Services" + msg_ok "Started Service" msg_ok "Updated successfully!" fi exit From 872eeffe2e9435163264160b7ac9b04af481650d Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:43:48 +0100 Subject: [PATCH 5/5] Remove cleanup commands from upgopher-install.sh Removed cleanup commands from the installation script. --- install/upgopher-install.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/install/upgopher-install.sh b/install/upgopher-install.sh index 26a1ee6da..2f9acf8fe 100644 --- a/install/upgopher-install.sh +++ b/install/upgopher-install.sh @@ -44,9 +44,4 @@ msg_ok "Created Service" motd_ssh customize - -msg_info "Cleaning up" -$STD apt -y autoremove -$STD apt -y autoclean -$STD apt clean -y -msg_ok "Cleaned" +cleanup_lxc