From 9f0d0bcd606f0cb5323d8a18995853e52b99cbd3 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:10:03 +0200 Subject: [PATCH] Cleanup --- ct/alpine-caddy.sh | 47 --------- ct/caddy.sh | 1 - ct/globaleaks.sh | 43 -------- ct/joplin-server.sh | 62 ------------ ct/leantime.sh | 62 ------------ ct/npmplus.sh | 58 ----------- ct/outline.sh | 67 ------------- ct/tunarr.sh | 71 -------------- frontend/public/json/caddy.json | 60 ------------ frontend/public/json/execute.json | 48 --------- frontend/public/json/globaleaks.json | 35 ------- frontend/public/json/joplin-server.json | 40 -------- frontend/public/json/leantime.json | 35 ------- frontend/public/json/tunarr.json | 35 ------- install/alpine-caddy-install.sh | 70 ------------- install/globaleaks-install.sh | 30 ------ install/joplin-server-install.sh | 98 ------------------- install/leantime-install.sh | 78 --------------- install/npmplus-install.sh | 124 ------------------------ install/tunarr-install.sh | 101 ------------------- 20 files changed, 1165 deletions(-) delete mode 100644 ct/alpine-caddy.sh delete mode 100644 ct/caddy.sh delete mode 100644 ct/globaleaks.sh delete mode 100644 ct/joplin-server.sh delete mode 100644 ct/leantime.sh delete mode 100644 ct/npmplus.sh delete mode 100644 ct/outline.sh delete mode 100644 ct/tunarr.sh delete mode 100644 frontend/public/json/caddy.json delete mode 100644 frontend/public/json/execute.json delete mode 100644 frontend/public/json/globaleaks.json delete mode 100644 frontend/public/json/joplin-server.json delete mode 100644 frontend/public/json/leantime.json delete mode 100644 frontend/public/json/tunarr.json delete mode 100644 install/alpine-caddy-install.sh delete mode 100644 install/globaleaks-install.sh delete mode 100644 install/joplin-server-install.sh delete mode 100644 install/leantime-install.sh delete mode 100644 install/npmplus-install.sh delete mode 100644 install/tunarr-install.sh diff --git a/ct/alpine-caddy.sh b/ct/alpine-caddy.sh deleted file mode 100644 index 89fe099d..00000000 --- a/ct/alpine-caddy.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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: cobalt (cobaltgit) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://caddyserver.com/ - -APP="Alpine-Caddy" -var_tags="${var_tags:-webserver}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-256}" -var_disk="${var_disk:-3}" -var_os="${var_os:-alpine}" -var_version="${var_version:-3.22}" -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 /etc/caddy ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_info "Updating $APP LXC" - $STD apk -U upgrade - msg_ok "Updated $APP LXC" - - msg_info "Restarting Caddy" - rc-service caddy restart - msg_ok "Restarted Caddy" - 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}:80${CL}" diff --git a/ct/caddy.sh b/ct/caddy.sh deleted file mode 100644 index 49f72a5f..00000000 --- a/ct/caddy.sh +++ /dev/null @@ -1 +0,0 @@ -#Placeholder for ALpine-caddy to run teh CI/CD diff --git a/ct/globaleaks.sh b/ct/globaleaks.sh deleted file mode 100644 index 03bc2f08..00000000 --- a/ct/globaleaks.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2025 communtiy-scripts ORG -# Author: Giovanni `evilaliv3` Pellerano -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software - -APP="GlobaLeaks" -var_tags="${var_tags:-whistleblowing-software}" -var_disk="${var_disk:-4}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /usr/sbin/globaleaks ]]; then - msg_error "No ${APP} installation found!" - exit - fi - - msg_info "Updating $APP LXC" - $STD apt update - $STD apt -y upgrade - msg_ok "Updated $APP LXC" -} - -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}https://${IP}${CL}" diff --git a/ct/joplin-server.sh b/ct/joplin-server.sh deleted file mode 100644 index fb6969cf..00000000 --- a/ct/joplin-server.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/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: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://joplinapp.org/ - -APP="joplin-server" -var_tags="${var_tags:-notes}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-4096}" -var_disk="${var_disk:-20}" -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/joplin-server ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "joplin-server" "laurent22/joplin"; then - msg_info "Stopping Services" - systemctl stop joplin-server - msg_ok "Stopped Services" - - fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest" - - msg_info "Updating ${APP}" - cd /opt/joplin-server - sed -i "/onenote-converter/d" packages/lib/package.json - $STD yarn config set --home enableTelemetry 0 - export BUILD_SEQUENCIAL=1 - $STD yarn install --inline-builds - msg_ok "Updated $APP" - - msg_info "Starting Services" - systemctl start joplin-server - 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}:22300${CL}" diff --git a/ct/leantime.sh b/ct/leantime.sh deleted file mode 100644 index 13b96061..00000000 --- a/ct/leantime.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/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: Stroopwafe1 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://leantime.io - -APP="Leantime" -var_tags="${var_tags:-productivity}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-20}" -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/leantime ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "leantime" "Leantime/leantime"; then - msg_info "Creating Backup" - mariadb-dump leantime >"/opt/${APP}_db_backup_$(date +%F).sql" - tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" "/opt/${APP}" - mv /opt/leantime /opt/leantime_bak - msg_ok "Backup Created" - - fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz - - msg_info "Restoring Config & Permissions" - mv /opt/leantime_bak/config/.env /opt/leantime/config/.env - chown -R www-data:www-data "/opt/leantime" - chmod -R 750 "/opt/leantime" - msg_ok "Restored Config & Permissions" - - msg_info "Removing Backup" - rm -rf /opt/leantime_bak - msg_ok "Removed Backup" - 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}/install${CL}" diff --git a/ct/npmplus.sh b/ct/npmplus.sh deleted file mode 100644 index c3b1755a..00000000 --- a/ct/npmplus.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/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: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/ZoeyVid/NPMplus - -APP="NPMplus" -var_tags="${var_tags:-proxy;nginx}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-512}" -var_disk="${var_disk:-3}" -var_os="${var_os:-alpine}" -var_version="${var_version:-3.22}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { - UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE MODE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 14 60 2 \ - "1" "Check for Alpine Updates" OFF \ - "2" "Update NPMplus Docker Container" ON \ - 3>&1 1>&2 2>&3) - - header_info "$APP" - - case "$UPD" in - "1") - msg_info "Updating Alpine OS" - $STD apk -U upgrade - msg_ok "System updated" - exit - ;; - "2") - msg_info "Updating NPMplus Container" - cd /opt - msg_info "Pulling latest container image" - $STD docker compose pull - msg_info "Recreating container" - $STD docker compose up -d - msg_ok "NPMplus container updated" - exit - ;; - esac - exit 0 -} - -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}https://${IP}:81${CL}" diff --git a/ct/outline.sh b/ct/outline.sh deleted file mode 100644 index 24a42b12..00000000 --- a/ct/outline.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/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: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/outline/outline - -APP="Outline" -var_tags="${var_tags:-documentation}" -var_disk="${var_disk:-8}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-4096}" -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/outline ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "outline" "outline/outline"; then - msg_info "Stopping Services" - systemctl stop outline - msg_ok "Services Stopped" - - msg_info "Creating backup" - cp /opt/outline/.env /opt - msg_ok "Backup created" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball" - - msg_info "Updating ${APP}" - cd /opt/outline - mv /opt/.env /opt/outline - export NODE_ENV=development - export NODE_OPTIONS="--max-old-space-size=3584" - $STD yarn install --frozen-lockfile - export NODE_ENV=production - $STD yarn build - msg_ok "Updated ${APP}" - - msg_info "Starting Services" - systemctl start outline - 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}:3000${CL}" diff --git a/ct/tunarr.sh b/ct/tunarr.sh deleted file mode 100644 index f0ed721a..00000000 --- a/ct/tunarr.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/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: chrisbenincasa -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://tunarr.com/ - -APP="Tunarr" -var_tags="${var_tags:-iptv}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-5}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -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/tunarr ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "tunarr" "chrisbenincasa/tunarr"; then - msg_info "Stopping Service" - systemctl stop tunarr - msg_ok "Stopped Service" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64" - - msg_info "Starting Service" - systemctl start tunarr - msg_ok "Started Service" - msg_ok "Update Successfully" - fi - - if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then - msg_info "Stopping Service" - systemctl stop tunarr - msg_ok "Stopped Service" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" - - msg_info "Set ErsatzTV-ffmpeg links" - chmod +x /opt/ErsatzTV-ffmpeg/bin/* - ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg - ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/local/bin/ffplay - ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe - msg_ok "ffmpeg links set" - - msg_info "Starting Service" - systemctl start tunarr - msg_ok "Started Service" - msg_ok "Update 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}:8000${CL}" diff --git a/frontend/public/json/caddy.json b/frontend/public/json/caddy.json deleted file mode 100644 index 0f59a88d..00000000 --- a/frontend/public/json/caddy.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "Alpine-Caddy", - "slug": "alpine-caddy", - "categories": [ - 21 - ], - "date_created": "2025-09-17", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 80, - "documentation": "https://caddyserver.com/docs/", - "website": "https://caddyserver.com/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/caddy.webp", - "config_path": "/etc/caddy/Caddyfile", - "description": "Caddy is a powerful, extensible platform to serve your sites, services, and apps, written in Go.", - "install_methods": [ - { - "type": "default", - "script": "ct/caddy.sh", - "resources": { - "cpu": 1, - "ram": 512, - "hdd": 4, - "os": "debian", - "version": "12" - } - }, - { - "type": "alpine", - "script": "ct/alpine-caddy.sh", - "resources": { - "cpu": 1, - "ram": 256, - "hdd": 3, - "os": "alpine", - "version": "3.22" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "xcaddy needs to be updated manually after a caddy update!", - "type": "warning" - }, - { - "text": "if you need an internal module run: `caddy add-package PACKAGENAME`", - "type": "info" - }, - { - "text": "if you need an external module run: `xcaddy build --with github.com/caddy-dns/cloudflare`", - "type": "info" - } - ] -} - diff --git a/frontend/public/json/execute.json b/frontend/public/json/execute.json deleted file mode 100644 index 9014f9c3..00000000 --- a/frontend/public/json/execute.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "PVE LXC Execute Command", - "slug": "lxc-execute", - "categories": [ - 1 - ], - "date_created": "2025-09-15", - "type": "pve", - "updateable": false, - "privileged": false, - "interface_port": null, - "documentation": null, - "website": null, - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp", - "config_path": "", - "description": "This script allows administrators to execute a custom command inside one or multiple LXC containers on a Proxmox VE node. Containers can be selectively excluded via an interactive checklist. If a container is stopped, the script will automatically start it, run the command, and then shut it down again. Only Debian and Ubuntu based containers are supported.", - "install_methods": [ - { - "type": "default", - "script": "tools/pve/execute.sh", - "resources": { - "cpu": null, - "ram": null, - "hdd": null, - "os": null, - "version": null - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "Execute within the Proxmox shell.", - "type": "info" - }, - { - "text": "Non-Debian/Ubuntu containers will be skipped automatically.", - "type": "info" - }, - { - "text": "Stopped containers will be started temporarily to run the command, then shut down again.", - "type": "warning" - } - ] -} diff --git a/frontend/public/json/globaleaks.json b/frontend/public/json/globaleaks.json deleted file mode 100644 index f2143737..00000000 --- a/frontend/public/json/globaleaks.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "GlobaLeaks", - "slug": "globaleaks", - "categories": [ - 0 - ], - "date_created": "2025-09-10", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 443, - "documentation": "https://docs.globaleaks.org", - "website": "https://www.globaleaks.org/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/globaleaks.webp", - "config_path": "", - "description": "GlobaLeaks is a free and open-source whistleblowing software enabling anyone to easily set up and maintain a secure reporting platform.", - "install_methods": [ - { - "type": "default", - "script": "ct/globaleaks.sh", - "resources": { - "cpu": 2, - "ram": 1024, - "hdd": 4, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} diff --git a/frontend/public/json/joplin-server.json b/frontend/public/json/joplin-server.json deleted file mode 100644 index 49db6448..00000000 --- a/frontend/public/json/joplin-server.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "Joplin Server", - "slug": "joplin-server", - "categories": [ - 12 - ], - "date_created": "2025-09-12", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 22300, - "documentation": "https://joplinapp.org/help/", - "config_path": "/opt/joplin-server/.env", - "website": "https://joplinapp.org/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/joplin.webp", - "description": "Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.", - "install_methods": [ - { - "type": "default", - "script": "ct/joplin-server.sh", - "resources": { - "cpu": 2, - "ram": 4096, - "hdd": 20, - "os": "Debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": "admin@localhost", - "password": "admin" - }, - "notes": [ - { - "text": "Application can take some time to build, depending on your host speed. Please be patient.", - "type": "info" - } - ] -} diff --git a/frontend/public/json/leantime.json b/frontend/public/json/leantime.json deleted file mode 100644 index e5e0fec8..00000000 --- a/frontend/public/json/leantime.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Leantime", - "slug": "leantime", - "categories": [ - 12 - ], - "date_created": "2025-06-27", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 80, - "documentation": "https://docs.leantime.io/", - "config_path": "/opt/Leantime/config/.env", - "website": "https://leantime.io", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/leantime.webp", - "description": "Leantime is a goals focused project management system for non-project managers. Building with ADHD, Autism, and dyslexia in mind. ", - "install_methods": [ - { - "type": "default", - "script": "ct/leantime.sh", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 20, - "os": "Debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} diff --git a/frontend/public/json/tunarr.json b/frontend/public/json/tunarr.json deleted file mode 100644 index 5529ab51..00000000 --- a/frontend/public/json/tunarr.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Tunarr", - "slug": "tunarr", - "categories": [ - 13 - ], - "date_created": "2025-09-06", - "type": "ct", - "updateable": true, - "privileged": false, - "config_path": "/opt/tunarr/.env", - "interface_port": 8000, - "documentation": "https://tunarr.com/", - "website": "https://tunarr.com/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tunarr.webp", - "description": "Create a classic TV experience using your own media - IPTV backed by Plex/Jellyfin/Emby.", - "install_methods": [ - { - "type": "default", - "script": "ct/tunarr.sh", - "resources": { - "cpu": 2, - "ram": 1024, - "hdd": 5, - "os": "Debian", - "version": "13" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} diff --git a/install/alpine-caddy-install.sh b/install/alpine-caddy-install.sh deleted file mode 100644 index 43380844..00000000 --- a/install/alpine-caddy-install.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: cobalt (cobaltgit) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://caddyserver.com/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Caddy" -$STD apk add --no-cache caddy caddy-openrc -cat </etc/caddy/Caddyfile -:80 { - # Set this path to your site's directory. - root * /var/www/html - - # Enable the static file server. - file_server - - # Another common task is to set up a reverse proxy: - # reverse_proxy localhost:8080 - - # Or serve a PHP site through php-fpm: - # php_fastcgi localhost:9000 -} -EOF -mkdir -p /var/www/html -cat </var/www/html/index.html - - - - Caddy works! - - -

Hello Caddy!

-

For more information, refer to the Caddy documentation

- - -EOF -msg_ok "Installed Caddy" - -read -r -p "${TAB3}Would you like to install xCaddy Addon? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then - GO_VERSION="$(curl -fsSL https://go.dev/VERSION?m=text | head -1 | cut -c3-)" setup_go - msg_info "Setup xCaddy" - cd /opt - RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.tar.gz" -o "xcaddy_${RELEASE:1}_linux_amd64.tar.gz" - $STD tar xzf xcaddy_"${RELEASE:1}"_linux_amd64.tar.gz -C /usr/local/bin xcaddy - rm -rf /opt/xcaddy* - $STD xcaddy build - msg_ok "Setup xCaddy" -fi - -msg_info "Enabling Caddy Service" -$STD rc-update add caddy default -msg_ok "Enabled Caddy Service" - -msg_info "Starting Caddy" -$STD service caddy start -msg_ok "Started Caddy" - -motd_ssh -customize diff --git a/install/globaleaks-install.sh b/install/globaleaks-install.sh deleted file mode 100644 index 650c8cbd..00000000 --- a/install/globaleaks-install.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2021-2025 community-scripts ORG -# Author: Giovanni `evilaliv3` Pellerano -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Setup GlobaLeaks" -DISTRO_CODENAME="$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)" -curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/globaleaks.gpg -echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list -echo -ne 'APPARMOR_SANDBOXING=0\nNETWORK_SANDBOXING=0' >/etc/default/globaleaks -$STD apt update -$STD apt -y install globaleaks -msg_ok "Setup GlobaLeaks" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/install/joplin-server-install.sh b/install/joplin-server-install.sh deleted file mode 100644 index 45f20166..00000000 --- a/install/joplin-server-install.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://joplinapp.org/ - -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 \ - git \ - rsync -msg_ok "Installed Dependencies" - -PG_VERSION="17" setup_postgresql -NODE_VERSION=22 NODE_MODULE="yarn@latest,npm@latest,pm2@latest" setup_nodejs -mkdir -p /opt/pm2 -export PM2_HOME=/opt/pm2 -$STD pm2 install pm2-logrotate -$STD pm2 set pm2-logrotate:max_size 100MB -$STD pm2 set pm2-logrotate:retain 5 -$STD pm2 set pm2-logrotate:compress tr - -msg_info "Setting up PostgreSQL Database" -DB_NAME=joplin -DB_USER=joplin -DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" -$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" -$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" -$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'" -{ - echo "Joplin-Credentials" - echo "Joplin Database User: $DB_USER" - echo "Joplin Database Password: $DB_PASS" - echo "Joplin Database Name: $DB_NAME" -} >>~/joplin.creds -msg_ok "Set up PostgreSQL Database" - -fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest" - -msg_info "Setting up Joplin Server (Patience)" -LOCAL_IP=$(hostname -I | awk '{print $1}') -cd /opt/joplin-server -sed -i "/onenote-converter/d" packages/lib/package.json -$STD yarn config set --home enableTelemetry 0 -export BUILD_SEQUENCIAL=1 -$STD yarn install --inline-builds - -cat </opt/joplin-server/.env -PM2_HOME=/opt/pm2 -NODE_ENV=production -APP_BASE_URL=http://$LOCAL_IP:22300 -APP_PORT=22300 -DB_CLIENT=pg -POSTGRES_PASSWORD=$DB_PASS -POSTGRES_DATABASE=$DB_NAME -POSTGRES_USER=$DB_USER -POSTGRES_PORT=5432 -POSTGRES_HOST=localhost -EOF -msg_ok "Setup Joplin Server" - -msg_info "Setting up Service" -cat </etc/systemd/system/joplin-server.service -[Unit] -Description=Joplin Server Service -After=network.target - -[Service] -Type=simple -WorkingDirectory=/opt/joplin-server/packages/server -EnvironmentFile=/opt/joplin-server/.env -ExecStart=/usr/bin/yarn start-prod -Restart=on-failure -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now joplin-server -msg_ok "Service Setup" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/install/leantime-install.sh b/install/leantime-install.sh deleted file mode 100644 index 98aa77a1..00000000 --- a/install/leantime-install.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: Stroopwafe1 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://leantime.io - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -PHP_VERSION="8.4" PHP_MODULE="mysql" PHP_APACHE="YES" PHP_FPM="YES" setup_php -setup_mariadb - -msg_info "Setting up Database" -DB_NAME=leantime -DB_USER=leantime -DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) -$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" -$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" -$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" -{ - echo "Leantime Credentials" - echo "Database User: $DB_USER" - echo "Database Password: $DB_PASS" - echo "Database Name: $DB_NAME" -} >>~/leantime.creds -msg_ok "Set up Database" - -fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz - -msg_info "Setup Leantime" -chown -R www-data:www-data "/opt/leantime" -chmod -R 750 "/opt/leantime" -cat </etc/apache2/sites-enabled/000-default.conf - - ServerAdmin webmaster@localhost - DocumentRoot /opt/leantime/public - DirectoryIndex index.php index.html index.cgi index.pl index.xhtml - Options +ExecCGI - - - Options FollowSymLinks - Require all granted - AllowOverride All - - - - Require all granted - - - ErrorLog /var/log/apache2/error.log - CustomLog /var/log/apache2/access.log combined - -EOF -mv "/opt/leantime/config/sample.env" "/opt/leantime/config/.env" -sed -i -e "s|^LEAN_DB_DATABASE.*|LEAN_DB_DATABASE = '$DB_NAME'|" \ - -e "s|^LEAN_DB_USER.*|LEAN_DB_USER = '$DB_USER'|" \ - -e "s|^LEAN_DB_PASSWORD.*|LEAN_DB_PASSWORD = '$DB_PASS'|" \ - -e "s|^LEAN_SESSION_PASSWORD.*|LEAN_SESSION_PASSWORD = '$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)'|" \ - "/opt/leantime/config/.env" -$STD a2enmod -q proxy_fcgi setenvif rewrite -$STD a2enconf -q "php8.4-fpm" -sed -i -e "s/^;extension.\(curl\|fileinfo\|gd\|intl\|ldap\|mbstring\|exif\|mysqli\|odbc\|openssl\|pdo_mysql\)/extension=\1/g" "/etc/php/8.4/apache2/php.ini" -systemctl restart apache2 -msg_ok "Setup leantime" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/install/npmplus-install.sh b/install/npmplus-install.sh deleted file mode 100644 index f63192c7..00000000 --- a/install/npmplus-install.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/ZoeyVid/NPMplus - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apk add \ - tzdata \ - gawk \ - yq -msg_ok "Installed Dependencies" - -msg_info "Installing Docker & Compose" -$STD apk add docker -$STD rc-service docker start -$STD rc-update add docker default - -get_latest_release() { - curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 -} -DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose") -DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} -mkdir -p $DOCKER_CONFIG/cli-plugins -curl -fsSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose -chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose -msg_ok "Installed Docker & Compose" - -msg_info "Fetching NPMplus" -cd /opt -curl -fsSL "https://raw.githubusercontent.com/ZoeyVid/NPMplus/refs/heads/develop/compose.yaml" -o compose.yaml -msg_ok "Fetched NPMplus" - -attempts=0 -while true; do - read -r -p "${TAB3}Enter your TZ Identifier (e.g., Europe/Berlin): " TZ_INPUT - if validate_tz "$TZ_INPUT"; then - break - fi - msg_error "Invalid timezone! Please enter a valid TZ identifier." - - attempts=$((attempts + 1)) - if [[ "$attempts" -ge 3 ]]; then - msg_error "Maximum attempts reached. Exiting." - exit 1 - fi -done - -read -r -p "${TAB3}Enter your ACME Email: " ACME_EMAIL_INPUT - -yq -i " - .services.npmplus.environment |= - (map(select(. != \"TZ=*\" and . != \"ACME_EMAIL=*\")) + - [\"TZ=$TZ_INPUT\", \"ACME_EMAIL=$ACME_EMAIL_INPUT\"]) -" /opt/compose.yaml - -msg_info "Building and Starting NPMplus (Patience)" -$STD docker compose up -d -CONTAINER_ID="" -for i in {1..60}; do - CONTAINER_ID=$(docker ps --filter "name=npmplus" --format "{{.ID}}") - if [[ -n "$CONTAINER_ID" ]]; then - STATUS=$(docker inspect --format '{{.State.Health.Status}}' "$CONTAINER_ID" 2>/dev/null || echo "starting") - if [[ "$STATUS" == "healthy" ]]; then - msg_ok "NPMplus is running and healthy" - break - elif [[ "$STATUS" == "unhealthy" ]]; then - msg_error "NPMplus container is unhealthy! Check logs." - docker logs "$CONTAINER_ID" - exit 1 - fi - fi - sleep 2 - [[ $i -eq 60 ]] && msg_error "NPMplus container did not become healthy within 120s." && docker logs "$CONTAINER_ID" && exit 1 -done -msg_ok "Builded and started NPMplus" - -motd_ssh -customize - -msg_info "Retrieving Default Login (Patience)" -PASSWORD_FOUND=0 - -for i in {1..60}; do - PASSWORD_LINE=$( - { awk '/Creating a new user:/{print; exit}' < <(docker logs "$CONTAINER_ID" 2>&1); } || true - ) - - if [[ -n "${PASSWORD_LINE:-}" ]]; then - PASSWORD="${PASSWORD_LINE#*password: }" - printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd - msg_ok "Saved default login to /opt/.npm_pwd" - PASSWORD_FOUND=1 - break - fi - sleep 2 -done -if [[ $PASSWORD_FOUND -eq 0 ]]; then - PASSWORD_LINE=$( - timeout 30s bash -c ' - docker logs -f --since=0s --tail=0 "$1" 2>&1 | awk "/Creating a new user:/{print; exit}" - ' _ "$CONTAINER_ID" || true - ) - if [[ -n "${PASSWORD_LINE:-}" ]]; then - PASSWORD="${PASSWORD_LINE#*password: }" - printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd - msg_ok "Saved default login to /opt/.npm_pwd (live)" - PASSWORD_FOUND=1 - fi -fi - -if [[ $PASSWORD_FOUND -eq 0 ]]; then - msg_error "Could not retrieve default login after 120s." - echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n" -fi diff --git a/install/tunarr-install.sh b/install/tunarr-install.sh deleted file mode 100644 index ebad1df2..00000000 --- a/install/tunarr-install.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 tteck -# Author: chrisbenincasa -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://tunarr.com/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Setting Up Hardware Acceleration" -if [[ "$CTTYPE" == "0" ]]; then - $STD adduser "$(id -un)" video - $STD adduser "$(id -un)" render -fi -msg_ok "Base Hardware Acceleration Set Up" - -read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 13 only)? " prompt -if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then - msg_info "Installing Intel Hardware Acceleration (non-free)" - cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources -Types: deb deb-src -URIs: http://deb.debian.org/debian -Suites: trixie -Components: non-free non-free-firmware - -Types: deb deb-src -URIs: http://deb.debian.org/debian-security -Suites: trixie-security -Components: non-free non-free-firmware - -Types: deb deb-src -URIs: http://deb.debian.org/debian -Suites: trixie-updates -Components: non-free non-free-firmware -EOF - - $STD apt update - $STD apt -y install \ - intel-media-va-driver-non-free \ - ocl-icd-libopencl1 \ - mesa-opencl-icd \ - mesa-va-drivers \ - libvpl2 \ - vainfo \ - intel-gpu-tools -else - msg_info "Installing Intel Hardware Acceleration (open packages)" - $STD apt -y install \ - va-driver-all \ - ocl-icd-libopencl1 \ - mesa-opencl-icd \ - mesa-va-drivers \ - vainfo \ - intel-gpu-tools -fi -msg_ok "Installed and Set Up Intel Hardware Acceleration" - -fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64" -fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" - -msg_info "Set ErsatzTV-ffmpeg links" -chmod +x /opt/ErsatzTV-ffmpeg/bin/* -ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/bin/ffmpeg -ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/bin/ffplay -ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/bin/ffprobe -msg_ok "ffmpeg links set" - -msg_info "Creating Service" -cat </etc/systemd/system/tunarr.service -[Unit] -Description=Tunarr Service -After=multi-user.target - -[Service] -Type=simple -User=root -WorkingDirectory=/opt/tunarr -ExecStart=/opt/tunarr/tunarr -Restart=always -RestartSec=30 - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now tunarr -msg_ok "Created Service" - -motd_ssh -customize - -msg_info "Cleaning up" -$STD apt -y autoremove -$STD apt -y autoclean -$STD apt -y clean -msg_ok "Cleaned"