diff --git a/ct/authelia.sh b/ct/authelia.sh deleted file mode 100644 index 0831c4db1..000000000 --- a/ct/authelia.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: thost96 (thost96) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.authelia.com/ - -APP="Authelia" -var_tags="${var_tags:-authenticator}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-512}" -var_disk="${var_disk:-2}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" - -header_info "$APP" -base_settings - -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /etc/authelia/ ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "authelia" "authelia/authelia"; then - $STD apt update - $STD apt -y upgrade - fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary" - 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 or https://auth.YOURDOMAIN ${CL}" diff --git a/ct/fileflows.sh b/ct/fileflows.sh deleted file mode 100644 index 27cdfd6fc..000000000 --- a/ct/fileflows.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: kkroboth -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://fileflows.com/ - -APP="FileFlows" -var_tags="${var_tags:-media;automation}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-8}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_unprivileged="${var_unprivileged:-1}" -var_gpu="${var_gpu:-yes}" - -header_info "$APP" -variables -color -catch_errors - -function update_script() { -header_info - check_container_storage - check_container_resources - - if [[ ! -d /opt/fileflows ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if ! [[ $(dpkg -s jq 2>/dev/null) ]]; then - $STD apt-get update - $STD apt-get install -y jq - fi - - update_available=$(curl -fsSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable) - if [[ "${update_available}" == "true" ]]; then - msg_info "Stopping Service" - systemctl stop fileflows - msg_info "Stopped Service" - - msg_info "Creating Backup" - backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz" - tar -czf "$backup_filename" -C /opt/fileflows Data - msg_ok "Backup Created" - - fetch_and_deploy_archive "https://fileflows.com/downloads/zip" "/opt/fileflows" - - msg_info "Starting Service" - systemctl start fileflows - msg_ok "Started Service" - msg_ok "Updated successfully!" - else - msg_ok "No update required. ${APP} is already at latest version" - 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}:19200${CL}" diff --git a/ct/freepbx.sh b/ct/freepbx.sh deleted file mode 100644 index 5b141e78e..000000000 --- a/ct/freepbx.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/freepbx/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Arian Nasr (arian-nasr) | Co-Author: Javier Pastor (vsc55) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.freepbx.org/ - -APP="FreePBX" -var_tags="pbx;voip;telephony" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-10}" -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 [[ ! -f /lib/systemd/system/freepbx.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - msg_info "Updating FreePBX LXC" - $STD apt-get update - $STD apt-get -y upgrade - msg_ok "Updated FreePBX LXC" - - msg_info "Updating FreePBX Modules" - $STD fwconsole ma updateall - $STD fwconsole reload - msg_ok "Updated FreePBX Modules" - msg_ok "Updated successfully!" - exit -} - -start - -if whiptail --title "Commercial Modules" --yesno "Remove Commercial modules?" --defaultno 10 50; then - export ONLY_OPENSOURCE="yes" - - if whiptail --title "Firewall Module" --yesno "Do you want to KEEP the Firewall module (and sysadmin)?" 10 50; then - export REMOVE_FIREWALL="no" - else - export REMOVE_FIREWALL="yes" - fi -else - export ONLY_OPENSOURCE="no" - export REMOVE_FIREWALL="no" -fi - -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}${CL}" diff --git a/ct/ghost.sh b/ct/ghost.sh deleted file mode 100644 index 31fa44237..000000000 --- a/ct/ghost.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: fabrice1236 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://ghost.org/ - -APP="Ghost" -var_tags="${var_tags:-cms;blog}" -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 - - setup_mariadb - NODE_VERSION="22" setup_nodejs - - msg_info "Updating Ghost" - if command -v ghost &>/dev/null; then - current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}') - latest_version=$(npm show ghost-cli version) - if [ "$current_version" != "$latest_version" ]; then - msg_info "Updating ${APP} from version v${current_version} to v${latest_version}" - $STD npm install -g ghost-cli@latest - msg_ok "Updated successfully!" - else - msg_ok "${APP} is already at v${current_version}" - fi - else - msg_error "No ${APP} Installation Found!" - exit - 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}:2368${CL}" diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh deleted file mode 100644 index 2a79b86b7..000000000 --- a/ct/jellyseerr.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://docs.jellyseerr.dev/ - -APP="Jellyseerr" -var_tags="${var_tags:-media}" -var_cpu="${var_cpu:-4}" -var_ram="${var_ram:-4096}" -var_disk="${var_disk:-8}" -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/jellyseerr ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if [ "$(node -v | cut -c2-3)" -ne 22 ]; then - msg_info "Updating Node.js Repository" - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list - msg_ok "Updating Node.js Repository" - - msg_info "Updating Packages" - $STD apt-get update - $STD apt-get -y upgrade - msg_ok "Updating Packages" - fi - - cd /opt/jellyseerr - output=$(git pull --no-rebase) - - pnpm_current=$(pnpm --version 2>/dev/null) - pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json) - - if [ -z "$pnpm_current" ]; then - msg_error "pnpm not found. Installing version $pnpm_desired..." - NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs - elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then - msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..." - NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs - else - msg_ok "pnpm is already installed and satisfies version $pnpm_desired." - fi - - msg_info "Updating Jellyseerr" - if echo "$output" | grep -q "Already up to date."; then - msg_ok "$APP is already up to date." - exit - fi - - systemctl stop jellyseerr - rm -rf dist .next node_modules - export CYPRESS_INSTALL_BINARY=0 - cd /opt/jellyseerr - $STD pnpm install --frozen-lockfile - export NODE_OPTIONS="--max-old-space-size=3072" - $STD pnpm build - - cat </etc/systemd/system/jellyseerr.service -[Unit] -Description=jellyseerr Service -After=network.target - -[Service] -EnvironmentFile=/etc/jellyseerr/jellyseerr.conf -Environment=NODE_ENV=production -Type=exec -WorkingDirectory=/opt/jellyseerr -ExecStart=/usr/bin/node dist/index.js - -[Install] -WantedBy=multi-user.target -EOF - - systemctl daemon-reload - systemctl start jellyseerr - msg_ok "Updated Jellyseerr" - msg_ok "Updated successfully!" - 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}:5055${CL}" diff --git a/ct/joplin.sh b/ct/joplin.sh deleted file mode 100644 index c995a5c0e..000000000 --- a/ct/joplin.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 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" -var_tags="${var_tags:-notes}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-6144}" -var_disk="${var_disk:-20}" -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/joplin-server ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" setup_nodejs - - if check_for_gh_release "joplin-server" "laurent22/joplin"; then - msg_info "Stopping Services" - systemctl stop joplin-server - msg_ok "Stopped Services" - - cp /opt/joplin-server/.env /opt - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" - mv /opt/.env /opt/joplin-server - - msg_info "Updating Joplin-Server" - 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 workspaces focus @joplin/server - cd packages/server - $STD yarn run build - $STD yarn run tsc - msg_ok "Updated Joplin-Server" - - 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/jotty.sh b/ct/jotty.sh deleted file mode 100644 index 9e3c39428..000000000 --- a/ct/jotty.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: vhsdream -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/fccview/jotty - -APP="jotty" -var_tags="${var_tags:-tasks;notes}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-4096}" -var_disk="${var_disk:-6}" -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/jotty ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "jotty" "fccview/jotty"; then - msg_info "Stopping Service" - systemctl stop jotty - msg_ok "Stopped Service" - - msg_info "Backing up configuration & data" - cd /opt/jotty - cp ./.env /opt/app.env - $STD tar -cf /opt/data_config.tar ./data ./config - msg_ok "Backed up configuration & data" - - NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty" - - msg_info "Updating jotty" - cd /opt/jotty - unset NODE_OPTIONS - export NODE_OPTIONS="--max-old-space-size=3072" - $STD yarn --frozen-lockfile - $STD yarn next telemetry disable - $STD yarn build - - [ -d "public" ] && cp -r public .next/standalone/ - [ -d "howto" ] && cp -r howto .next/standalone/ - mkdir -p .next/standalone/.next - cp -r .next/static .next/standalone/.next/ - - mv .next/standalone /tmp/jotty_standalone - rm -rf ./* .next .git .gitignore .yarn - mv /tmp/jotty_standalone/* . - mv /tmp/jotty_standalone/.[!.]* . 2>/dev/null || true - rm -rf /tmp/jotty_standalone - msg_ok "Updated jotty" - - msg_info "Restoring configuration & data" - mv /opt/app.env /opt/jotty/.env - $STD tar -xf /opt/data_config.tar - msg_ok "Restored configuration & data" - - msg_info "Updating Service" - cat </etc/systemd/system/jotty.service -[Unit] -Description=jotty server -After=network.target - -[Service] -WorkingDirectory=/opt/jotty -EnvironmentFile=/opt/jotty/.env -ExecStart=/usr/bin/node server.js -Restart=on-abnormal - -[Install] -WantedBy=multi-user.target -EOF - systemctl daemon-reload - msg_ok "Updated Service" - - msg_info "Starting Service" - systemctl start jotty - msg_ok "Started Service" - rm /opt/data_config.tar - 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/memos.sh b/ct/memos.sh deleted file mode 100644 index a32d8e09b..000000000 --- a/ct/memos.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: MickLesk (Canbiz) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.usememos.com/ - -APP="Memos" -var_tags="${var_tags:-notes}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-6}" -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/memos ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "memos" "usememos/memos"; then - msg_info "Stopping Service" - systemctl stop memos - msg_ok "Stopped Service" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "memos" "usememos/memos" "tarball" - - msg_info "Building Memos (patience)" - cd /opt/memos/web - $STD pnpm install --frozen-lockfile - $STD pnpm release - cd /opt/memos - $STD go build -o memos ./cmd/memos - msg_ok "Built Memos" - - msg_info "Starting Service" - systemctl start memos - msg_ok "Started Service" - 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}:9030${CL}" diff --git a/ct/vikunja.sh b/ct/vikunja.sh deleted file mode 100644 index f199e7721..000000000 --- a/ct/vikunja.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://vikunja.io/ - -APP="Vikunja" -var_tags="${var_tags:-todo-app}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-4}" -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/vikunja ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - RELEASE="$( [[ -f "$HOME/.vikunja" ]] && cat "$HOME/.vikunja" 2>/dev/null || [[ -f /opt/Vikunja_version ]] && cat /opt/Vikunja_version 2>/dev/null || true)" - if [[ -z "$RELEASE" ]] || [[ "$RELEASE" == "unstable" ]] || dpkg --compare-versions "${RELEASE:-0.0.0}" lt "1.0.0"; then - msg_warn "You are upgrading from Vikunja '$RELEASE'." - msg_warn "This requires MANUAL config changes in /etc/vikunja/config.yml." - msg_warn "See: https://vikunja.io/changelog/whats-new-in-vikunja-1.0.0/#config-changes" - - read -rp "Continue with update? (y to proceed): " -t 30 CONFIRM1 || exit 1 - [[ "$CONFIRM1" =~ ^[yY]$ ]] || exit 0 - - echo - msg_warn "Vikunja may not start after the update until you manually adjust the config." - msg_warn "Details: https://vikunja.io/changelog/whats-new-in-vikunja-1.0.0/#config-changes" - - read -rp "Acknowledge and continue? (y): " -t 30 CONFIRM2 || exit 1 - [[ "$CONFIRM2" =~ ^[yY]$ ]] || exit 0 - fi - - if check_for_gh_release "vikunja" "go-vikunja/vikunja"; then - msg_info "Stopping Service" - systemctl stop vikunja - msg_ok "Stopped Service" - - fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" - - msg_info "Starting Service" - systemctl start vikunja - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - 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}http://${IP}:3456${CL}" diff --git a/ct/wger.sh b/ct/wger.sh deleted file mode 100644 index 845745ff5..000000000 --- a/ct/wger.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://github.com/wger-project/wger - -APP="wger" -var_tags="${var_tags:-management;fitness}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-8}" -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/wger ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "wger" "wger-project/wger"; then - msg_info "Stopping Service" - systemctl stop redis-server nginx celery celery-beat wger - msg_ok "Stopped Service" - - msg_info "Backing up Data" - cp -r /opt/wger/media /opt/wger_media_backup - cp /opt/wger/.env /opt/wger_env_backup - msg_ok "Backed up Data" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball" "latest" "/opt/wger" - - msg_info "Restoring Data" - cp -r /opt/wger_media_backup/. /opt/wger/media - cp /opt/wger_env_backup /opt/wger/.env - rm -rf /opt/wger_media_backup /opt/wger_env_backup - - msg_ok "Restored Data" - - msg_info "Updating wger" - cd /opt/wger - set -a && source /opt/wger/.env && set +a - export DJANGO_SETTINGS_MODULE=settings.main - $STD uv pip install . - $STD uv run python manage.py migrate - $STD uv run python manage.py collectstatic --no-input - msg_ok "Updated wger" - - msg_info "Starting Services" - systemctl start redis-server nginx celery celery-beat wger - 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/frontend/public/json/freepbx.json b/frontend/public/json/freepbx.json deleted file mode 100644 index 601673d5b..000000000 --- a/frontend/public/json/freepbx.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "FreePBX", - "slug": "freepbx", - "categories": [ - 0 - ], - "date_created": "2025-01-15", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 80, - "documentation": "https://wiki.freepbx.org/", - "website": "https://www.freepbx.org/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/freepbx.webp", - "config_path": "/etc/freepbx.conf", - "description": "FreePBX is a web-based open-source graphical user interface that manages Asterisk, a voice over IP and telephony server. FreePBX provides a complete PBX solution with call routing, voicemail, IVR, and more.", - "install_methods": [ - { - "type": "default", - "script": "ct/freepbx.sh", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 10, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "Access the web interface to complete initial setup", - "type": "info" - }, - { - "text": "SIP Port: 5060, IAX2 Port: 4569", - "type": "info" - } - ] -} diff --git a/frontend/public/json/wger.json b/frontend/public/json/wger.json deleted file mode 100644 index 804ef56ef..000000000 --- a/frontend/public/json/wger.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "wger", - "slug": "wger", - "categories": [ - 24 - ], - "date_created": "2025-02-24", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 3000, - "documentation": "https://wger.readthedocs.io/en/latest/index.html", - "website": "https://wger.de", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/wger.webp", - "config_path": "/opt/wger/wger.env", - "description": "wger (ˈvɛɡɐ) Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility. It offers a REST API as well, for easy integration with other projects and tools.", - "install_methods": [ - { - "type": "default", - "script": "ct/wger.sh", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 8, - "os": "debian", - "version": "13" - } - } - ], - "default_credentials": { - "username": "admin", - "password": "adminadmin" - }, - "notes": [ - { - "text": "This LXC also runs Celery and Redis to synchronize workouts and ingredients", - "type": "info" - } - ] -} diff --git a/install/authelia-install.sh b/install/authelia-install.sh deleted file mode 100644 index 010be6cab..000000000 --- a/install/authelia-install.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: thost96 (thost96) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.authelia.com/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary" - -MAX_ATTEMPTS=3 -attempt=0 -while true; do - attempt=$((attempt + 1)) - read -rp "${TAB3}Enter your domain or IP (ex. example.com or 192.168.1.100): " DOMAIN - if [[ -z "$DOMAIN" ]]; then - if ((attempt >= MAX_ATTEMPTS)); then - DOMAIN="${LOCAL_IP:-localhost}" - msg_warn "Using fallback: $DOMAIN" - break - fi - msg_warn "Domain cannot be empty! (Attempt $attempt/$MAX_ATTEMPTS)" - elif [[ "$DOMAIN" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then - valid_ip=true - IFS='.' read -ra octets <<< "$DOMAIN" - for octet in "${octets[@]}"; do - if ((octet > 255)); then - valid_ip=false - break - fi - done - if $valid_ip; then - break - else - msg_warn "Invalid IP address!" - fi - elif [[ "$DOMAIN" =~ ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$ ]]; then - break - else - msg_warn "Invalid domain format!" - fi -done -msg_info "Setting Authelia up" -touch /etc/authelia/emails.txt -JWT_SECRET=$(openssl rand -hex 64) -SESSION_SECRET=$(openssl rand -hex 64) -STORAGE_KEY=$(openssl rand -hex 64) - -if [[ "$DOMAIN" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then - AUTHELIA_URL="https://${DOMAIN}:9091" -else - AUTHELIA_URL="https://auth.${DOMAIN}" -fi -echo "$AUTHELIA_URL" > /etc/authelia/.authelia_url - -cat </etc/authelia/users.yml -users: - authelia: - disabled: false - displayname: "Authelia Admin" - password: "\$argon2id\$v=19\$m=65536,t=3,p=4\$ZBopMzXrzhHXPEZxRDVT2w\$SxWm96DwhOsZyn34DLocwQEIb4kCDsk632PuiMdZnig" - groups: [] -EOF -cat </etc/authelia/configuration.yml -authentication_backend: - file: - path: /etc/authelia/users.yml -access_control: - default_policy: one_factor -session: - secret: "${SESSION_SECRET}" - name: 'authelia_session' - same_site: 'lax' - inactivity: '5m' - expiration: '1h' - remember_me: '1M' - cookies: - - domain: "${DOMAIN}" - authelia_url: "${AUTHELIA_URL}" -storage: - encryption_key: "${STORAGE_KEY}" - local: - path: /etc/authelia/db.sqlite -identity_validation: - reset_password: - jwt_secret: "${JWT_SECRET}" - jwt_lifespan: '5 minutes' - jwt_algorithm: 'HS256' -notifier: - filesystem: - filename: /etc/authelia/emails.txt -EOF -touch /etc/authelia/emails.txt -chown -R authelia:authelia /etc/authelia -systemctl enable -q --now authelia -msg_ok "Authelia Setup completed" - -motd_ssh -customize -cleanup_lxc diff --git a/install/rybbit-install.sh b/install/deferred/rybbit-install.sh similarity index 100% rename from install/rybbit-install.sh rename to install/deferred/rybbit-install.sh diff --git a/install/fileflows-install.sh b/install/fileflows-install.sh deleted file mode 100644 index a402560a5..000000000 --- a/install/fileflows-install.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: kkroboth -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://fileflows.com/ - -# Import Functions und Setup -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y \ - ffmpeg \ - imagemagick -msg_ok "Installed Dependencies" - -setup_hwaccel -setup_deb822_repo \ - "microsoft" \ - "https://packages.microsoft.com/keys/microsoft-2025.asc" \ - "https://packages.microsoft.com/debian/13/prod/" \ - "trixie" -fetch_and_deploy_archive "https://fileflows.com/downloads/zip" "/opt/fileflows" - -msg_info "Installing ASP.NET Core Runtime" -$STD apt install -y aspnetcore-runtime-8.0 -msg_ok "Installed ASP.NET Core Runtime" - -msg_info "Setting up FileFlows" -$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg -$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe -cd /opt/fileflows/Server -$STD dotnet FileFlows.Server.dll --systemd install --root true -systemctl enable -q --now fileflows -msg_ok "Setup FileFlows" - -motd_ssh -customize -cleanup_lxc diff --git a/install/freepbx-install.sh b/install/freepbx-install.sh deleted file mode 100644 index 53f9145de..000000000 --- a/install/freepbx-install.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Arian Nasr (arian-nasr) -# Updated by: Javier Pastor (vsc55) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.freepbx.org/ - -INSTALL_URL="https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh" -INSTALL_PATH="/opt/sng_freepbx_debian_install.sh" - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -ONLY_OPENSOURCE="${ONLY_OPENSOURCE:-no}" -REMOVE_FIREWALL="${REMOVE_FIREWALL:-no}" -msg_ok "Remove Commercial modules is set to: $ONLY_OPENSOURCE" -msg_ok "Remove Firewall module is set to: $REMOVE_FIREWALL" - -msg_info "Downloading FreePBX installation script..." -if curl -fsSL "$INSTALL_URL" -o "$INSTALL_PATH"; then - msg_ok "Download completed successfully" -else - curl_exit_code=$? - msg_error "Error downloading FreePBX installation script (curl exit code: $curl_exit_code)" - msg_error "Aborting!" - exit 1 -fi - -if [[ "$VERBOSE" == "yes" ]]; then - msg_info "Installing FreePBX (Verbose)\n" -else - msg_info "Installing FreePBX, be patient, this takes time..." -fi -$STD bash "$INSTALL_PATH" - -if [[ $ONLY_OPENSOURCE == "yes" ]]; then - msg_info "Removing Commercial modules..." - - end_count=0 - max=5 - count=0 - while fwconsole ma list | awk '/Commercial/ {found=1} END {exit !found}'; do - count=$((count + 1)) - while read -r module; do - msg_info "Removing module: $module" - - if [[ "$REMOVE_FIREWALL" == "no" ]] && [[ "$module" == "sysadmin" ]]; then - msg_warn "Skipping sysadmin module removal, it is required for Firewall!" - continue - fi - - code=0 - $STD fwconsole ma -f remove $module || code=$? - if [[ $code -ne 0 ]]; then - msg_error "Module $module could not be removed - error code $code" - else - msg_ok "Module $module removed successfully" - fi - done < <(fwconsole ma list | awk '/Commercial/ {print $2}') - - [[ $count -ge $max ]] && break - - com_list=$(fwconsole ma list) - end_count=$(awk '/Commercial/ {count++} END {print count + 0}' <<<"$com_list") - awk '/Commercial/ {found=1} END {exit !found}' <<<"$com_list" || break - if [[ "$REMOVE_FIREWALL" == "no" ]] && - [[ $end_count -eq 1 ]] && - [[ $(awk '/Commercial/ {print $2}' <<<"$com_list") == "sysadmin" ]]; then - break - fi - - msg_warn "Not all commercial modules could be removed, retrying (attempt $count of $max)..." - done - - if [[ $REMOVE_FIREWALL == "yes" ]] && [[ $end_count -gt 0 ]]; then - msg_info "Removing Firewall module..." - if $STD fwconsole ma -f remove firewall; then - msg_ok "Firewall module removed successfully" - else - msg_error "Firewall module could not be removed, please check manually!" - fi - fi - - if [[ $end_count -eq 0 ]]; then - msg_ok "All commercial modules removed successfully" - elif [[ $end_count -eq 1 ]] && [[ $REMOVE_FIREWALL == "no" ]] && [[ $(fwconsole ma list | awk '/Commercial/ {print $2}') == "sysadmin" ]]; then - msg_ok "Only sysadmin module left, which is required for Firewall, skipping removal" - else - msg_warn "Some commercial modules could not be removed, please check the web interface for removal manually!" - fi - - msg_info "Reloading FreePBX..." - $STD fwconsole reload - msg_ok "FreePBX reloaded completely" -fi -msg_ok "Installed FreePBX finished" - -motd_ssh -customize - -msg_info "Cleaning up" -rm -f "$INSTALL_PATH" -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/install/ghost-install.sh b/install/ghost-install.sh deleted file mode 100644 index 4cee724a6..000000000 --- a/install/ghost-install.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: fabrice1236 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://ghost.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 install -y \ - nginx \ - ca-certificates \ - libjemalloc2 \ - git -msg_ok "Installed Dependencies" - -setup_mariadb -MARIADB_DB_NAME="ghost" MARIADB_DB_USER="ghostuser" setup_mariadb_db -NODE_VERSION="22" setup_nodejs - -msg_info "Installing Ghost CLI" -$STD npm install ghost-cli@latest -g -msg_ok "Installed Ghost CLI" - -msg_info "Creating Service" -$STD adduser --disabled-password --gecos "Ghost user" ghost-user -$STD usermod -aG sudo ghost-user -echo "ghost-user ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/ghost-user -mkdir -p /var/www/ghost -chown -R ghost-user:ghost-user /var/www/ghost -chmod 775 /var/www/ghost -$STD sudo -u ghost-user -H sh -c "cd /var/www/ghost && ghost install --db=mysql --dbhost=localhost --dbuser=$MARIADB_DB_USER --dbpass=$MARIADB_DB_PASS --dbname=$MARIADB_DB_NAME --url=http://localhost:2368 --no-prompt --no-setup-nginx --no-setup-ssl --no-setup-mysql --enable --start --ip 0.0.0.0" -rm /etc/sudoers.d/ghost-user -msg_ok "Creating Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/gwn-manager-install.sh b/install/gwn-manager-install.sh deleted file mode 100644 index 72b5b7603..000000000 --- a/install/gwn-manager-install.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://www.grandstream.com/products/networking-solutions/wi-fi-management/product/gwn-manager - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y \ - xfonts-utils \ - fontconfig -msg_ok "Installed Dependencies" - -msg_info "Setting up GWN Manager (Patience)" -RELEASE=$(curl -s https://www.grandstream.com/support/tools#gwntools \ - | grep -oP 'https://firmware\.grandstream\.com/GWN_Manager-[^"]+-Ubuntu\.tar\.gz') -download_file "$RELEASE" "/tmp/gwnmanager.tar.gz" -cd /tmp -tar -xzf gwnmanager.tar.gz --strip-components=1 -$STD ./install -msg_ok "Setup GWN Manager" - -msg_info "Creating Service" -cat </etc/systemd/system/gwnmanager.service -[Unit] -Description=GWN Manager -After=network.target -Requires=network.target - -[Service] -Type=simple -WorkingDirectory=/gwn -ExecStart=/gwn/gwn start -Restart=on-failure -RestartSec=10 - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q gwnmanager -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/heimdall-dashboard-install.sh b/install/heimdall-dashboard-install.sh deleted file mode 100644 index fc1ea92cb..000000000 --- a/install/heimdall-dashboard-install.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://heimdall.site/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y apt-transport-https -msg_ok "Installed Dependencies" - -PHP_VERSION="8.4" PHP_MODULE="bz2,sqlite3" PHP_FPM="YES" setup_php -setup_composer -fetch_and_deploy_gh_release "Heimdall" "linuxserver/Heimdall" "tarball" - -msg_info "Setting up Heimdall-Dashboard" -cd /opt/Heimdall -cp .env.example .env -$STD php artisan key:generate -msg_ok "Setup Heimdall-Dashboard" - -msg_info "Creating Service" -cat </etc/systemd/system/heimdall.service -[Unit] -Description=Heimdall -After=network.target - -[Service] -Restart=always -RestartSec=5 -Type=simple -User=root -WorkingDirectory=/opt/Heimdall -ExecStart=/usr/bin/php artisan serve --port 7990 --host 0.0.0.0 -TimeoutStopSec=30 - -[Install] -WantedBy=multi-user.target" -EOF -systemctl enable -q --now heimdall -cd /opt/Heimdall -export COMPOSER_ALLOW_SUPERUSER=1 -$STD composer dump-autoload -systemctl restart heimdall.service -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/homarr-install.sh b/install/homarr-install.sh deleted file mode 100644 index 1ead7a69e..000000000 --- a/install/homarr-install.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (Canbiz) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/homarr-labs/homarr - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y \ - redis-server \ - nginx \ - gettext \ - openssl -msg_ok "Installed Dependencies" - -NODE_VERSION=$(curl -s https://raw.githubusercontent.com/Meierschlumpf/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]') -setup_nodejs -fetch_and_deploy_gh_release "homarr" "Meierschlumpf/homarr" "prebuild" "latest" "/opt/homarr" "source-debian-amd64.tar.gz" - -msg_info "Installing Homarr" -mkdir -p /opt/homarr_db -touch /opt/homarr_db/db.sqlite -SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)" -cd /opt/homarr -cat </opt/homarr.env -DB_DRIVER='better-sqlite3' -DB_DIALECT='sqlite' -SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}' -DB_URL='/opt/homarr_db/db.sqlite' -TURBO_TELEMETRY_DISABLED=1 -AUTH_PROVIDERS='credentials' -NODE_ENV='production' -REDIS_IS_EXTERNAL='true' -EOF -msg_ok "Installed Homarr" - -msg_info "Copying config files" -mkdir -p /appdata/redis -chown -R redis:redis /appdata/redis -chmod 744 /appdata/redis -cp /opt/homarr/redis.conf /etc/redis/redis.conf -rm /etc/nginx/nginx.conf -mkdir -p /etc/nginx/templates -cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf -echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr -chmod +x /usr/bin/homarr -msg_ok "Copied config files" - -msg_info "Creating Services" -mkdir -p /etc/systemd/system/redis-server.service.d/ -cat > /etc/systemd/system/redis-server.service.d/override.conf << 'EOF' -[Service] -ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -/etc/redis -EOF -cat </etc/systemd/system/homarr.service -[Unit] -Requires=redis-server.service -After=redis-server.service -Description=Homarr Service -After=network.target - -[Service] -Type=exec -WorkingDirectory=/opt/homarr -EnvironmentFile=-/opt/homarr.env -ExecStart=/opt/homarr/run.sh - -[Install] -WantedBy=multi-user.target -EOF -chmod +x /opt/homarr/run.sh -systemctl daemon-reload -systemctl enable -q --now redis-server && sleep 5 -systemctl enable -q --now homarr -systemctl disable -q --now nginx -msg_ok "Created Services" - -motd_ssh -customize -cleanup_lxc diff --git a/install/jellyseerr-install.sh b/install/jellyseerr-install.sh deleted file mode 100644 index d865698f7..000000000 --- a/install/jellyseerr-install.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://docs.jellyseerr.dev/ - -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 build-essential -msg_ok "Installed Dependencies" - -git clone -q https://github.com/Fallenbagel/jellyseerr.git /opt/jellyseerr -cd /opt/jellyseerr -$STD git checkout main - -pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json) -NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs - -msg_info "Installing Jellyseerr (Patience)" -export CYPRESS_INSTALL_BINARY=0 -cd /opt/jellyseerr -$STD pnpm install --frozen-lockfile -export NODE_OPTIONS="--max-old-space-size=3072" -$STD pnpm build -mkdir -p /etc/jellyseerr/ -cat </etc/jellyseerr/jellyseerr.conf -PORT=5055 -# HOST=0.0.0.0 -# JELLYFIN_TYPE=emby -EOF -msg_ok "Installed Jellyseerr" - -msg_info "Creating Service" -cat </etc/systemd/system/jellyseerr.service -[Unit] -Description=jellyseerr Service -After=network.target - -[Service] -EnvironmentFile=/etc/jellyseerr/jellyseerr.conf -Environment=NODE_ENV=production -Type=exec -WorkingDirectory=/opt/jellyseerr -ExecStart=/usr/bin/node dist/index.js - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now jellyseerr -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/joplin-install.sh b/install/joplin-install.sh deleted file mode 100644 index b5f7eab81..000000000 --- a/install/joplin-install.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/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 install -y \ - git \ - rsync -msg_ok "Installed Dependencies" - -PG_VERSION="17" setup_postgresql -PG_DB_NAME="joplin" PG_DB_USER="joplin" setup_postgresql_db -NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" 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 - -fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" - -msg_info "Setting up Joplin Server (Patience)" -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 workspaces focus @joplin/server -$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run build -$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run tsc -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=$PG_DB_PASS -POSTGRES_DATABASE=$PG_DB_NAME -POSTGRES_USER=$PG_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 -cleanup_lxc diff --git a/install/jotty-install.sh b/install/jotty-install.sh deleted file mode 100644 index e6b88fd59..000000000 --- a/install/jotty-install.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: vhsdream | MickLesk -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/fccview/jotty - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs -fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz" - -msg_info "Setup jotty" -mkdir -p data/{users,checklists,notes} - -cat </opt/jotty/.env -NODE_ENV=production -# --- Uncomment to enable -# APP_URL=https://your-jotty-domain.com -# INTERNAL_API_URL=http://localhost:3000 -# HTTPS=true -# SERVE_PUBLIC_IMAGES=yes -# SERVE_PUBLIC_FILES=yes -# SERVE_PUBLIC_VIDEOS=yes -# STOP_CHECK_UPDATES=yes -# --- For troubleshooting -# DEBUGGER=true - -# --- SSO with OIDC (optional) -# SSO_MODE=oidc -# OIDC_ISSUER= -# OIDC_CLIENT_ID= -# SSO_FALLBACK_LOCAL=yes -# OIDC_CLIENT_SECRET=your_client_secret -# OIDC_ADMIN_GROUPS=admins -EOF -msg_ok "Setup jotty" - -msg_info "Creating Service" -cat </etc/systemd/system/jotty.service -[Unit] -Description=jotty server -After=network.target - -[Service] -WorkingDirectory=/opt/jotty -EnvironmentFile=/opt/jotty/.env -ExecStart=/usr/bin/node server.js -Restart=on-abnormal - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now jotty -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh deleted file mode 100644 index 3808c8426..000000000 --- a/install/linkwarden-install.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (Canbiz) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://linkwarden.app/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y build-essential -msg_ok "Installed Dependencies" - -NODE_VERSION="22" setup_nodejs -PG_VERSION="16" setup_postgresql -PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db -RUST_CRATES="monolith" setup_rust -fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" - - -read -r -p "${TAB3}Would you like to add Adminer? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then - setup_adminer -fi - -msg_info "Installing Linkwarden (Patience)" -export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 -export PRISMA_HIDE_UPDATE_MESSAGE=1 -export DEBIAN_FRONTEND=noninteractive -corepack enable -SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)" -cd /opt/linkwarden -$STD yarn workspaces focus linkwarden @linkwarden/web @linkwarden/worker -# $STD npx playwright install-deps -# $STD yarn playwright install - -cat </opt/linkwarden/.env -NEXTAUTH_SECRET=${SECRET_KEY} -NEXTAUTH_URL=http://${LOCAL_IP}:3000 -DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} -EOF -$STD yarn prisma:generate -$STD yarn web:build -$STD yarn prisma:deploy -rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache -rm -rf /root/.cache/yarn -rm -rf /opt/linkwarden/.next/cache -msg_ok "Installed Linkwarden" - -msg_info "Creating Service" -cat </etc/systemd/system/linkwarden.service -[Unit] -Description=Linkwarden Service -After=network.target - -[Service] -Type=exec -Environment=PATH=$PATH -WorkingDirectory=/opt/linkwarden -ExecStart=/usr/bin/yarn concurrently:start - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now linkwarden -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/memos-install.sh b/install/memos-install.sh deleted file mode 100644 index c7e211719..000000000 --- a/install/memos-install.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/usememos/memos - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -setup_go -NODE_MODULE="pnpm" setup_nodejs -fetch_and_deploy_gh_release "memos" "usememos/memos" "tarball" - -msg_info "Building Memos (patience)" -cd /opt/memos/web -$STD pnpm install --frozen-lockfile -$STD pnpm release -cd /opt/memos -$STD go build -o memos ./cmd/memos -mkdir -p /opt/memos_data -msg_ok "Built Memos" - -msg_info "Creating Service" -cat </etc/systemd/system/memos.service -[Unit] -Description=Memos Server -After=network.target - -[Service] -ExecStart=/opt/memos/memos -Environment="MEMOS_MODE=prod" -Environment="MEMOS_PORT=9030" -Environment="MEMOS_DATA=/opt/memos_data" -WorkingDirectory=/opt/memos -Restart=always - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now memos -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/vikunja-install.sh b/install/vikunja-install.sh deleted file mode 100644 index 3307fd04c..000000000 --- a/install/vikunja-install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://vikunja.io/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" - -msg_info "Setting up Vikunja" -sed -i 's|^# \(service:\)|\1|' /etc/vikunja/config.yml -sed -i "s|^ # \(publicurl: \).*| \1\"http://$LOCAL_IP\"|" /etc/vikunja/config.yml -sed -i "0,/^ # \(timezone: \).*/s|| \1${tz}|" /etc/vikunja/config.yml -systemctl enable -q --now vikunja -msg_ok "Set up Vikunja" - -motd_ssh -customize -cleanup_lxc diff --git a/install/wger-install.sh b/install/wger-install.sh deleted file mode 100644 index 8931520e9..000000000 --- a/install/wger-install.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: Slaviša Arežina (tremor021) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://github.com/wger-project/wger - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt install -y \ - build-essential \ - nginx \ - redis-server \ - libpq-dev -msg_ok "Installed Dependencies" - -NODE_VERSION="22" NODE_MODULE="sass" setup_nodejs -setup_uv -PG_VERSION="16" setup_postgresql -PG_DB_NAME="wger" PG_DB_USER="wger" setup_postgresql_db -fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball" "latest" "/opt/wger" - -msg_info "Setting up wger" -mkdir -p /opt/wger/{static,media} -chmod o+w /opt/wger/media -cd /opt/wger -$STD corepack enable -$STD npm install -$STD npm run build:css:sass -$STD uv venv -$STD uv pip install . --group docker -SECRET_KEY=$(openssl rand -base64 40) -cat </opt/wger/.env -DJANGO_SETTINGS_MODULE=settings.main -PYTHONPATH=/opt/wger - -DJANGO_DB_ENGINE=django.db.backends.postgresql -DJANGO_DB_DATABASE=${PG_DB_NAME} -DJANGO_DB_USER=${PG_DB_USER} -DJANGO_DB_PASSWORD=${PG_DB_PASS} -DJANGO_DB_HOST=localhost -DJANGO_DB_PORT=5432 -DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME} - -DJANGO_MEDIA_ROOT=/opt/wger/media -DJANGO_STATIC_ROOT=/opt/wger/static -DJANGO_STATIC_URL=/static/ - -ALLOWED_HOSTS=${LOCAL_IP},localhost,127.0.0.1 -CSRF_TRUSTED_ORIGINS=http://${LOCAL_IP}:3000 - -USE_X_FORWARDED_HOST=True -SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,http - -DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache -DJANGO_CACHE_LOCATION=redis://127.0.0.1:6379/1 -DJANGO_CACHE_TIMEOUT=300 -DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient -AXES_CACHE_ALIAS=default - -USE_CELERY=True -CELERY_BROKER=redis://127.0.0.1:6379/2 -CELERY_BACKEND=redis://127.0.0.1:6379/2 - -SITE_URL=http://${LOCAL_IP}:3000 -SECRET_KEY=${SECRET_KEY} -EOF -set -a && source /opt/wger/.env && set +a -$STD uv run wger bootstrap -$STD uv run python manage.py collectstatic --no-input -cat </etc/systemd/system/wger.service -[Unit] -Description=wger Gunicorn -After=network.target - -[Service] -User=root -WorkingDirectory=/opt/wger -EnvironmentFile=/opt/wger/.env -ExecStart=/opt/wger/.venv/bin/gunicorn \ - --bind 127.0.0.1:8000 \ - --workers 3 \ - --threads 2 \ - --timeout 120 \ - wger.wsgi:application -Restart=always - -[Install] -WantedBy=multi-user.target -EOF -cat </etc/systemd/system/celery.service -[Unit] -Description=wger Celery Worker -After=network.target redis-server.service -Requires=redis-server.service - -[Service] -WorkingDirectory=/opt/wger -EnvironmentFile=/opt/wger/.env -ExecStart=/opt/wger/.venv/bin/celery -A wger worker -l info -Restart=always - -[Install] -WantedBy=multi-user.target -EOF - -mkdir -p /var/lib/wger/celery -chmod 700 /var/lib/wger/celery -cat </etc/systemd/system/celery-beat.service -[Unit] -Description=wger Celery Beat -After=network.target redis-server.service -Requires=redis-server.service - -[Service] -WorkingDirectory=/opt/wger -EnvironmentFile=/opt/wger/.env -ExecStart=/opt/wger/.venv/bin/celery -A wger beat -l info \ - --schedule /var/lib/wger/celery/celerybeat-schedule -Restart=always - -[Install] -WantedBy=multi-user.target -EOF -cat <<'EOF' >/etc/nginx/sites-available/wger -server { - listen 3000; - server_name _; - - client_max_body_size 20M; - - location /static/ { - alias /opt/wger/static/; - expires 30d; - } - - location /media/ { - alias /opt/wger/media/; - } - - location / { - proxy_pass http://127.0.0.1:8000; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_redirect off; - } -} -EOF -$STD rm -f /etc/nginx/sites-enabled/default -$STD ln -sf /etc/nginx/sites-available/wger /etc/nginx/sites-enabled/wger -systemctl enable -q --now redis-server nginx wger celery celery-beat -systemctl restart nginx -msg_ok "Created Config and Services" - -motd_ssh -customize -cleanup_lxc