From 309618ac32e26225519e5b4ef9f63fa384efd398 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:09:49 +0000 Subject: [PATCH] Sync ct/ and install/ from ProxmoxVE Mirrored automatically. The bootstrap line is rewritten to load the engine from core, which is the only difference to upstream. --- ct/almalinux.sh | 44 ++++++++++++++++ ct/calibre-web.sh | 23 +++++--- ct/centos.sh | 44 ++++++++++++++++ ct/devuan.sh | 46 ++++++++++++++++ ct/directus.sh | 68 ++++++++++++++++++++++++ ct/droppedneedle.sh | 12 ++--- ct/endurain.sh | 16 +++--- ct/excalidash.sh | 1 + ct/fedora.sh | 44 ++++++++++++++++ ct/gentoo.sh | 46 ++++++++++++++++ ct/homepage.sh | 7 +-- ct/limesurvey.sh | 7 +++ ct/mastodon.sh | 4 +- ct/openeuler.sh | 46 ++++++++++++++++ ct/opensuse.sh | 46 ++++++++++++++++ ct/podman.sh | 3 -- ct/pve-ups.sh | 2 +- ct/seanime.sh | 63 ++++++++++++++++++++++ ct/yopass.sh | 65 +++++++++++++++++++++++ install/almalinux-install.sh | 18 +++++++ install/calibre-web-install.sh | 11 +++- install/centos-install.sh | 18 +++++++ install/devuan-install.sh | 18 +++++++ install/directus-install.sh | 90 ++++++++++++++++++++++++++++++++ install/droppedneedle-install.sh | 2 +- install/fedora-install.sh | 18 +++++++ install/gentoo-install.sh | 18 +++++++ install/gitea-install.sh | 5 +- install/homepage-install.sh | 1 + install/limesurvey-install.sh | 1 + install/mastodon-install.sh | 6 +-- install/openeuler-install.sh | 18 +++++++ install/opensuse-install.sh | 18 +++++++ install/podman-install.sh | 2 + install/pve-ups-install.sh | 2 +- install/seanime-install.sh | 67 ++++++++++++++++++++++++ install/stirling-pdf-install.sh | 1 - install/yopass-install.sh | 69 ++++++++++++++++++++++++ 38 files changed, 929 insertions(+), 41 deletions(-) create mode 100644 ct/almalinux.sh create mode 100644 ct/centos.sh create mode 100644 ct/devuan.sh create mode 100644 ct/directus.sh create mode 100644 ct/fedora.sh create mode 100644 ct/gentoo.sh create mode 100644 ct/openeuler.sh create mode 100644 ct/opensuse.sh create mode 100644 ct/seanime.sh create mode 100644 ct/yopass.sh create mode 100644 install/almalinux-install.sh create mode 100644 install/centos-install.sh create mode 100644 install/devuan-install.sh create mode 100644 install/directus-install.sh create mode 100644 install/fedora-install.sh create mode 100644 install/gentoo-install.sh create mode 100644 install/openeuler-install.sh create mode 100644 install/opensuse-install.sh create mode 100644 install/seanime-install.sh create mode 100644 install/yopass-install.sh diff --git a/ct/almalinux.sh b/ct/almalinux.sh new file mode 100644 index 0000000..ed76523 --- /dev/null +++ b/ct/almalinux.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://almalinux.org/ + +APP="AlmaLinux" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-almalinux}" +var_version="${var_version:-10}" +var_arm64="${var_arm64:-no}" +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating AlmaLinux" + $STD dnf -y upgrade + msg_ok "Updated AlmaLinux" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index d9951b6..aa583d6 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash _CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" -# Engine comes from community-scripts/core; this repo only ships the scripts. -# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), -# so a fork or branch of core can be tested without editing this file. _cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") # Copyright (c) 2021-2026 community-scripts ORG @@ -40,8 +37,7 @@ function update_script() { systemctl stop calibre-web msg_ok "Stopped Service" - create_backup /opt/calibre-web/app.db \ - /opt/calibre-web/data + create_backup /opt/calibre-web/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibreweb*.tar.gz" setup_uv @@ -53,11 +49,26 @@ function update_script() { $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir . msg_ok "Installed Dependencies" - sed -i 's|^ExecStart=.*|ExecStart=/opt/calibre-web/.venv/bin/cps|' /etc/systemd/system/calibre-web.service + sed -i 's|^ExecStart=.*|ExecStart=/opt/calibre-web/.venv/bin/cps -p /opt/calibre-web/data/app.db|' /etc/systemd/system/calibre-web.service + if ! grep -q '^Environment=HOME=' /etc/systemd/system/calibre-web.service; then + sed -i '/^ExecStart=/i Environment=HOME=/opt/calibre-web/data' /etc/systemd/system/calibre-web.service + fi $STD systemctl daemon-reload restore_backup + mkdir -p /opt/calibre-web-library + if [[ -f /opt/calibre-web/data/metadata.db && ! -f /opt/calibre-web-library/metadata.db ]]; then + msg_info "Migrating Calibre Library to its own directory" + find /opt/calibre-web/data -mindepth 1 -maxdepth 1 ! -name app.db ! -name .calibre-web -exec mv -t /opt/calibre-web-library -- {} + + msg_ok "Migrated Calibre Library" + fi + if [[ ! -f /opt/calibre-web-library/metadata.db ]]; then + msg_info "Creating Empty Calibre Library" + $STD calibredb list --with-library /opt/calibre-web-library + msg_ok "Created Empty Calibre Library" + fi + msg_info "Starting Service" systemctl start calibre-web msg_ok "Started Service" diff --git a/ct/centos.sh b/ct/centos.sh new file mode 100644 index 0000000..2dcf556 --- /dev/null +++ b/ct/centos.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.centos.org/centos-stream/ + +APP="CentOS" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-centos}" +var_version="${var_version:-10}" +var_arm64="${var_arm64:-no}" +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating CentOS LXC" + $STD dnf -y upgrade + msg_ok "Updated CentOS LXC" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/devuan.sh b/ct/devuan.sh new file mode 100644 index 0000000..c5017d1 --- /dev/null +++ b/ct/devuan.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.devuan.org/ + +APP="Devuan" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-devuan}" +var_version="${var_version:-5.0}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating Devuan LXC" + $STD apt update + $STD apt -y upgrade + msg_ok "Updated Devuan LXC" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/directus.sh b/ct/directus.sh new file mode 100644 index 0000000..4aa2f1a --- /dev/null +++ b/ct/directus.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://directus.com/ + +APP="Directus" +var_tags="${var_tags:-cms;api;database;headless}" +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_arm64="${var_arm64:-yes}" +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 /opt/directus/node_modules/.bin/directus ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "directus" "directus/directus"; then + msg_info "Stopping Service" + systemctl stop directus + msg_ok "Stopped Service" + + create_backup /opt/directus/.env \ + /opt/directus/uploads \ + /opt/directus/extensions + + msg_info "Updating Directus" + cd /opt/directus + $STD npm install --omit=dev "directus@${CHECK_UPDATE_RELEASE#v}" + cat <~/.directus +${CHECK_UPDATE_RELEASE#v} +EOF + restore_backup + msg_ok "Updated Directus" + + msg_info "Starting Service" + systemctl start directus + 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 "${GATEWAY}${BGN}http://${IP}:8055${CL}" diff --git a/ct/droppedneedle.sh b/ct/droppedneedle.sh index a43f0a3..3367582 100644 --- a/ct/droppedneedle.sh +++ b/ct/droppedneedle.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash _CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" -# Engine comes from community-scripts/core; this repo only ships the scripts. -# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), -# so a fork or branch of core can be tested without editing this file. _cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") # Copyright (c) 2021-2026 community-scripts ORG @@ -96,7 +93,7 @@ WorkingDirectory=/opt/droppedneedle/backend Environment=ROOT_APP_DIR=/opt/droppedneedle/backend Environment=PORT=8688 # Environment=SLSKD_DOWNLOADS_PATH= -ExecStart=/opt/droppedneedle/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8688 --loop uvloop --http httptools --workers 1 +ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target Restart=on-failure RestartSec=5 @@ -105,8 +102,11 @@ WantedBy=multi-user.target EOF rm -f /etc/systemd/system/musicseerr.service msg_ok "Replaced systemd Service" - elif ! grep -q 'SLSKD' /etc/systemd/system/droppedneedle.service; then - sed -i '\|=8688$|a# Environment=SLSKD_DOWNLOADS_PATH=' /etc/systemd/system/droppedneedle.service + else + if ! grep -q 'SLSKD' /etc/systemd/system/droppedneedle.service; then + sed -i '\|=8688$|a# Environment=SLSKD_DOWNLOADS_PATH=' /etc/systemd/system/droppedneedle.service + fi + sed -i 's|^ExecStart=.*|ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target|' /etc/systemd/system/droppedneedle.service fi systemctl daemon-reload diff --git a/ct/endurain.sh b/ct/endurain.sh index 8f6c5fd..5fe72f0 100644 --- a/ct/endurain.sh +++ b/ct/endurain.sh @@ -40,29 +40,29 @@ function update_script() { msg_ok "Stopped Service" NODE_VERSION="24" setup_nodejs - create_backup /opt/endurain/.env /opt/endurain/frontend/dist/env.js CLEAN_INSTALL=1 fetch_and_deploy_codeberg_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain" - msg_info "Preparing Update" + msg_info "Updating Endurain Frontend" cd /opt/endurain rm -rf /opt/endurain/{docs,example.env,screenshot_01.png} /opt/endurain/docker* /opt/endurain/*.yml - msg_ok "Prepared Update" - - msg_info "Updating Frontend" cd /opt/endurain/frontend $STD npm ci $STD npm run build - msg_ok "Updated Frontend" + msg_ok "Updated Endurain Frontend" restore_backup - msg_info "Updating Backend" + if grep -qxF 'FRONTEND_DIR="/opt/endurain/frontend/app/dist"' /opt/endurain/.env; then + sed -i 's|^FRONTEND_DIR="/opt/endurain/frontend/app/dist"$|FRONTEND_DIR="/opt/endurain/frontend/dist"|' /opt/endurain/.env + fi + + msg_info "Updating Endurain Backend" cd /opt/endurain/backend UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18") UV_VERSION="$UV_VERSION" setup_uv $STD uv sync --frozen --no-dev - msg_ok "Backend Updated" + msg_ok "Endurain Backend Updated" msg_info "Starting Service" systemctl start endurain diff --git a/ct/excalidash.sh b/ct/excalidash.sh index 33ccba2..64d5b03 100644 --- a/ct/excalidash.sh +++ b/ct/excalidash.sh @@ -47,6 +47,7 @@ function update_script() { msg_info "Configuring Database Provider (${DATABASE_PROVIDER:-sqlite})" cd /opt/excalidash/backend sed -i '/datasource db {/,/}/ s/provider = env("[^"]*")/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma + sed -i '/datasource db {/,/}/ s/provider = "[^"]*"/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma mv prisma/migrations/"${DATABASE_PROVIDER:-sqlite}"/* prisma/migrations/ rm -rf prisma/migrations/postgresql prisma/migrations/sqlite msg_ok "Configured Database Provider" diff --git a/ct/fedora.sh b/ct/fedora.sh new file mode 100644 index 0000000..c97a633 --- /dev/null +++ b/ct/fedora.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://fedoraproject.org/ + +APP="Fedora" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-fedora}" +var_version="${var_version:-43}" +var_arm64="${var_arm64:-no}" +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating Fedora LXC" + $STD dnf -y upgrade + msg_ok "Updated Fedora LXC" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/gentoo.sh b/ct/gentoo.sh new file mode 100644 index 0000000..504b8d0 --- /dev/null +++ b/ct/gentoo.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.gentoo.org/ + +APP="Gentoo" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-10}" +var_os="${var_os:-gentoo}" +var_version="${var_version:-current}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating Gentoo LXC" + $STD emerge --sync + $STD emerge --quiet --update --deep @world + msg_ok "Updated Gentoo LXC" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/ct/homepage.sh b/ct/homepage.sh index 1888853..dd22d44 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash _CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" -# Engine comes from community-scripts/core; this repo only ships the scripts. -# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), -# so a fork or branch of core can be tested without editing this file. _cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") # Copyright (c) 2021-2026 tteck @@ -82,6 +79,10 @@ EOF rm /opt/homepage/env.bak chmod 600 /opt/homepage/.env fi + if ! grep -q '^Environment=CI=true' /etc/systemd/system/homepage.service; then + sed -i '/^ExecStart=/i Environment=CI=true' /etc/systemd/system/homepage.service + systemctl daemon-reload + fi msg_ok "Updated Homepage" msg_info "Starting service" diff --git a/ct/limesurvey.sh b/ct/limesurvey.sh index 1172742..1c9cc6c 100644 --- a/ct/limesurvey.sh +++ b/ct/limesurvey.sh @@ -33,6 +33,13 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi + if [[ ! -L /etc/apache2/mods-enabled/rewrite.load ]]; then + msg_info "Enabling Apache mod_rewrite" + $STD a2enmod rewrite + systemctl restart apache2 + msg_ok "Enabled Apache mod_rewrite" + fi + setup_mariadb msg_warn "Application is updated via Web Interface" diff --git a/ct/mastodon.sh b/ct/mastodon.sh index 1722add..5978e1a 100644 --- a/ct/mastodon.sh +++ b/ct/mastodon.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash _CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" -# Engine comes from community-scripts/core; this repo only ships the scripts. -# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), -# so a fork or branch of core can be tested without editing this file. _cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") # Copyright (c) 2021-2026 community-scripts ORG @@ -45,6 +42,7 @@ function update_script() { CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mastodon" "mastodon/mastodon" "tarball" sed -i "s/config.force_ssl = true/config.force_ssl = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/environments/production.rb sed -i "s/https = Rails.env.production? || ENV\['LOCAL_HTTPS'\] == 'true'/https = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/initializers/1_hosts.rb + RUBY_VERSION="$(cat /opt/mastodon/.ruby-version)" RUBY_INSTALL_RAILS="false" setup_ruby msg_info "Installing Ruby Dependencies" cd /opt/mastodon diff --git a/ct/openeuler.sh b/ct/openeuler.sh new file mode 100644 index 0000000..9bd3d55 --- /dev/null +++ b/ct/openeuler.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.openeuler.org/ + +APP="openEuler" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-openeuler}" +var_version="${var_version:-25.03}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating OpenEuler LXC" + $STD dnf -y upgrade + msg_ok "Updated OpenEuler LXC" + 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}" diff --git a/ct/opensuse.sh b/ct/opensuse.sh new file mode 100644 index 0000000..3bedbf5 --- /dev/null +++ b/ct/opensuse.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.opensuse.org/ + +APP="openSUSE" +var_tags="${var_tags:-os}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-opensuse}" +var_version="${var_version:-16.0}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating OpenSUSE LXC" + $STD zypper -n update + msg_ok "Updated OpenSUSE LXC" + msg_ok "Updated successfully!" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +msg_custom "🚀" "${GN}" "${APP} setup has been successfully initialized!" diff --git a/ct/podman.sh b/ct/podman.sh index 9a05b0a..68a640e 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash _CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" -# Engine comes from community-scripts/core; this repo only ships the scripts. -# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core), -# so a fork or branch of core can be tested without editing this file. _cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") # Copyright (c) 2021-2026 tteck diff --git a/ct/pve-ups.sh b/ct/pve-ups.sh index e9503b4..686b728 100644 --- a/ct/pve-ups.sh +++ b/ct/pve-ups.sh @@ -41,7 +41,7 @@ function update_script() { msg_info "Updating Application" cd /opt/pve-usv - $STD uv venv --clear venv + $STD uv venv --clear --seed venv $STD uv pip install --python venv/bin/python . chown -R pveusv:pveusv /opt/pve-usv chmod 0755 deploy/pve-usv-agent.sh diff --git a/ct/seanime.sh b/ct/seanime.sh new file mode 100644 index 0000000..86bdfdc --- /dev/null +++ b/ct/seanime.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: hasan-ismail +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://seanime.app/ + +APP="Seanime" +var_tags="${var_tags:-media;anime;manga}" +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_arm64="${var_arm64:-yes}" +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/seanime ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "seanime" "5rahim/seanime"; then + msg_info "Stopping Service" + systemctl stop seanime + msg_ok "Stopped Service" + + create_backup /opt/seanime-data/config.toml + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "seanime" "5rahim/seanime" "prebuild" "latest" "/opt/seanime" "seanime-[0-9]*_Linux_$(arch_resolve x86_64 arm64).tar.gz" + chmod +x /opt/seanime/seanime + + restore_backup + + msg_info "Starting Service" + systemctl start seanime + 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}:43211${CL}" diff --git a/ct/yopass.sh b/ct/yopass.sh new file mode 100644 index 0000000..897144d --- /dev/null +++ b/ct/yopass.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# 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/jhaals/yopass + +APP="Yopass" +var_tags="${var_tags:-security;secrets}" +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_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +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/yopass ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "yopass" "jhaals/yopass"; then + msg_info "Stopping Service" + systemctl stop yopass + msg_ok "Stopped Service" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yopass" "jhaals/yopass" "tarball" + + msg_info "Building Yopass" + cd /opt/yopass + $STD go build -ldflags "-X main.version=$(cat ~/.yopass)" ./cmd/yopass-server + cd /opt/yopass/website + $STD yarn install --network-timeout 600000 + $STD yarn build + msg_ok "Built Yopass" + + msg_info "Starting Service" + systemctl start yopass + 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 "${GATEWAY}${BGN}https://${IP}:1337${CL}" diff --git a/install/almalinux-install.sh b/install/almalinux-install.sh new file mode 100644 index 0000000..0179e32 --- /dev/null +++ b/install/almalinux-install.sh @@ -0,0 +1,18 @@ +#!/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://almalinux.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/calibre-web-install.sh b/install/calibre-web-install.sh index 04bff5e..cfb7c0c 100644 --- a/install/calibre-web-install.sh +++ b/install/calibre-web-install.sh @@ -42,8 +42,14 @@ $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -- $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir . msg_ok "Installed Python Dependencies" +mkdir -p /opt/calibre-web/data /opt/calibre-web-library +if [[ ! -f /opt/calibre-web-library/metadata.db ]]; then + msg_info "Creating Empty Calibre Library" + $STD calibredb list --with-library /opt/calibre-web-library + msg_ok "Created Empty Calibre Library" +fi + msg_info "Creating Service" -mkdir -p /opt/calibre-web/data cat </etc/systemd/system/calibre-web.service [Unit] Description=Calibre-Web Service @@ -53,8 +59,9 @@ After=network.target Type=simple User=root Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox" +Environment=HOME=/opt/calibre-web/data WorkingDirectory=/opt/calibre-web -ExecStart=/opt/calibre-web/.venv/bin/cps +ExecStart=/opt/calibre-web/.venv/bin/cps -p /opt/calibre-web/data/app.db Restart=on-failure RestartSec=5 diff --git a/install/centos-install.sh b/install/centos-install.sh new file mode 100644 index 0000000..c637037 --- /dev/null +++ b/install/centos-install.sh @@ -0,0 +1,18 @@ +#!/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://www.centos.org/centos-stream/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/devuan-install.sh b/install/devuan-install.sh new file mode 100644 index 0000000..8823958 --- /dev/null +++ b/install/devuan-install.sh @@ -0,0 +1,18 @@ +#!/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://www.devuan.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/directus-install.sh b/install/directus-install.sh new file mode 100644 index 0000000..520cc3c --- /dev/null +++ b/install/directus-install.sh @@ -0,0 +1,90 @@ +#!/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://directus.com/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +NODE_VERSION="22" setup_nodejs +PG_VERSION="17" setup_postgresql +PG_DB_NAME="directus" PG_DB_USER="directus" setup_postgresql_db + +msg_info "Installing Directus" +mkdir -p /opt/directus/uploads /opt/directus/extensions +cd /opt/directus +$STD npm init -y +DIRECTUS_VERSION=$(get_latest_github_release "directus/directus") +$STD npm install --omit=dev "directus@${DIRECTUS_VERSION}" +cat <~/.directus +${DIRECTUS_VERSION} +EOF +msg_ok "Installed Directus" + +msg_info "Configuring Directus" +DIRECTUS_KEY=$(openssl rand -hex 32) +DIRECTUS_SECRET=$(openssl rand -hex 32) +DIRECTUS_ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16) +cat </opt/directus/.env +HOST="0.0.0.0" +PORT=8055 +PUBLIC_URL="http://${LOCAL_IP}:8055" +KEY="${DIRECTUS_KEY}" +SECRET="${DIRECTUS_SECRET}" + +DB_CLIENT="pg" +DB_HOST="127.0.0.1" +DB_PORT=5432 +DB_DATABASE="${PG_DB_NAME}" +DB_USER="${PG_DB_USER}" +DB_PASSWORD="${PG_DB_PASS}" + +ADMIN_EMAIL="admin@community-scripts.org" +ADMIN_PASSWORD="${DIRECTUS_ADMIN_PASSWORD}" + +STORAGE_LOCATIONS="local" +STORAGE_LOCAL_DRIVER="local" +STORAGE_LOCAL_ROOT="/opt/directus/uploads" +EXTENSIONS_PATH="/opt/directus/extensions" +TELEMETRY=false +EOF +chmod 640 /opt/directus/.env +msg_ok "Configured Directus" + +msg_info "Initializing Directus" +cd /opt/directus +$STD /opt/directus/node_modules/.bin/directus bootstrap +msg_ok "Initialized Directus" + +msg_info "Creating Service" +cat </etc/systemd/system/directus.service +[Unit] +Description=Directus +After=network.target postgresql.service +Requires=postgresql.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/directus +EnvironmentFile=/opt/directus/.env +ExecStart=/opt/directus/node_modules/.bin/directus start +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now directus +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/droppedneedle-install.sh b/install/droppedneedle-install.sh index 666cb4a..db26d90 100644 --- a/install/droppedneedle-install.sh +++ b/install/droppedneedle-install.sh @@ -45,7 +45,7 @@ WorkingDirectory=/opt/droppedneedle/backend Environment=ROOT_APP_DIR=/opt/droppedneedle/backend Environment=PORT=8688 # Environment=SLSKD_DOWNLOADS_PATH= -ExecStart=/opt/droppedneedle/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8688 --loop uvloop --http httptools --workers 1 +ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target Restart=on-failure RestartSec=5 diff --git a/install/fedora-install.sh b/install/fedora-install.sh new file mode 100644 index 0000000..5e8776d --- /dev/null +++ b/install/fedora-install.sh @@ -0,0 +1,18 @@ +#!/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://fedoraproject.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/gentoo-install.sh b/install/gentoo-install.sh new file mode 100644 index 0000000..de470e0 --- /dev/null +++ b/install/gentoo-install.sh @@ -0,0 +1,18 @@ +#!/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://www.gentoo.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/gitea-install.sh b/install/gitea-install.sh index 3e37a9c..0161690 100644 --- a/install/gitea-install.sh +++ b/install/gitea-install.sh @@ -29,10 +29,9 @@ setup_deb_based() { mkdir -p /var/lib/gitea/{custom,data,log} chown -R gitea:gitea /var/lib/gitea/ chmod -R 750 /var/lib/gitea/ - chown root:gitea /etc/gitea - chmod 770 /etc/gitea - sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh + chown gitea:gitea /etc/gitea chmod 750 /etc/gitea + sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh msg_ok "Configured Gitea" msg_info "Creating Service" diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 4b4cc9f..bb66064 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -63,6 +63,7 @@ Restart=always RestartSec=1 User=root WorkingDirectory=/opt/homepage/ +Environment=CI=true ExecStart=pnpm start [Install] diff --git a/install/limesurvey-install.sh b/install/limesurvey-install.sh index 31dc998..f5672d7 100644 --- a/install/limesurvey-install.sh +++ b/install/limesurvey-install.sh @@ -60,6 +60,7 @@ cat </etc/apache2/sites-enabled/000-default.conf EOF chown -R www-data:www-data "/opt/limesurvey" chmod -R 750 "/opt/limesurvey" +$STD a2enmod rewrite systemctl reload apache2 rm -rf "$temp_file" msg_ok "Set up LimeSurvey" diff --git a/install/mastodon-install.sh b/install/mastodon-install.sh index b5640c6..b2723cc 100644 --- a/install/mastodon-install.sh +++ b/install/mastodon-install.sh @@ -48,13 +48,13 @@ PG_VERSION="17" setup_postgresql PG_DB_NAME="mastodon_production" PG_DB_USER="mastodon" PG_DB_SKIP_ALTER_ROLE="true" setup_postgresql_db $STD sudo -u postgres psql -c "ALTER USER mastodon CREATEDB;" -RUBY_VERSION="4.0.5" RUBY_INSTALL_RAILS="false" setup_ruby -export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" - fetch_and_deploy_gh_release "mastodon" "mastodon/mastodon" "tarball" sed -i "s/config.force_ssl = true/config.force_ssl = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/environments/production.rb sed -i "s/https = Rails.env.production? || ENV\['LOCAL_HTTPS'\] == 'true'/https = ENV.fetch('LOCAL_HTTPS', 'false') == 'true'/" /opt/mastodon/config/initializers/1_hosts.rb +RUBY_VERSION="$(cat /opt/mastodon/.ruby-version)" RUBY_INSTALL_RAILS="false" setup_ruby +export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" + msg_info "Installing Ruby Dependencies" cd /opt/mastodon $STD bundle config set --local without 'development test' diff --git a/install/openeuler-install.sh b/install/openeuler-install.sh new file mode 100644 index 0000000..2e629a5 --- /dev/null +++ b/install/openeuler-install.sh @@ -0,0 +1,18 @@ +#!/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://www.openeuler.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/opensuse-install.sh b/install/opensuse-install.sh new file mode 100644 index 0000000..bf190ee --- /dev/null +++ b/install/opensuse-install.sh @@ -0,0 +1,18 @@ +#!/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://www.opensuse.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +motd_ssh +customize +cleanup_lxc diff --git a/install/podman-install.sh b/install/podman-install.sh index 9cad866..6e1cd58 100644 --- a/install/podman-install.sh +++ b/install/podman-install.sh @@ -51,6 +51,7 @@ read -r -p "${TAB3}Would you like to add Portainer? " prompt if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" podman volume create portainer_data >/dev/null + $STD podman pull docker.io/portainer/portainer-ce:latest cat </etc/containers/systemd/portainer.container [Unit] Description=Portainer Container @@ -77,6 +78,7 @@ else read -r -p "${TAB3}Would you like to add the Portainer Agent? " prompt if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION" + $STD podman pull docker.io/portainer/agent:latest cat </etc/containers/systemd/portainer-agent.container [Unit] Description=Portainer Agent Container diff --git a/install/pve-ups-install.sh b/install/pve-ups-install.sh index 6b37f35..4608508 100644 --- a/install/pve-ups-install.sh +++ b/install/pve-ups-install.sh @@ -27,7 +27,7 @@ install -d -o pveusv -g pveusv -m 0750 \ /var/lib/pve-usv/updates chown -R pveusv:pveusv /opt/pve-usv cd /opt/pve-usv -$STD uv venv --clear venv +$STD uv venv --clear --seed venv $STD uv pip install --python venv/bin/python . chmod 0755 deploy/pve-usv-agent.sh msg_ok "Set up Application" diff --git a/install/seanime-install.sh b/install/seanime-install.sh new file mode 100644 index 0000000..28fbc1f --- /dev/null +++ b/install/seanime-install.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: hasan-ismail +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://seanime.app/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +setup_hwaccel + +msg_info "Installing FFmpeg" +setup_deb822_repo \ + "jellyfin" \ + "https://repo.jellyfin.org/jellyfin_team.gpg.key" \ + "https://repo.jellyfin.org/debian" \ + "$(get_os_info codename)" +$STD apt install -y jellyfin-ffmpeg7 +ln -sf /usr/lib/jellyfin-ffmpeg/ffmpeg /usr/bin/ffmpeg +ln -sf /usr/lib/jellyfin-ffmpeg/ffprobe /usr/bin/ffprobe +msg_ok "Installed FFmpeg" + +fetch_and_deploy_gh_release "seanime" "5rahim/seanime" "prebuild" "latest" "/opt/seanime" "seanime-[0-9]*_Linux_$(arch_resolve x86_64 arm64).tar.gz" +chmod +x /opt/seanime/seanime + +msg_info "Configuring Seanime" +SEANIME_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +mkdir -p /opt/seanime-data +cat </opt/seanime-data/config.toml +[server] +password = "${SEANIME_PASSWORD}" +EOF +cat </root/seanime.creds +Seanime URL: http://${LOCAL_IP}:43211 +Password: ${SEANIME_PASSWORD} +EOF +msg_ok "Configured Seanime" + +msg_info "Creating Service" +cat </etc/systemd/system/seanime.service +[Unit] +Description=Seanime +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/seanime +ExecStart=/opt/seanime/seanime --datadir /opt/seanime-data --host 0.0.0.0 +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now seanime +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/stirling-pdf-install.sh b/install/stirling-pdf-install.sh index db45de1..ad8c0da 100644 --- a/install/stirling-pdf-install.sh +++ b/install/stirling-pdf-install.sh @@ -147,7 +147,6 @@ Group=root EnvironmentFile=/opt/Stirling-PDF/.env WorkingDirectory=/opt/Stirling-PDF ExecStart=/usr/bin/java -jar Stirling-PDF.jar -ExecStop=/bin/kill -15 %n Restart=always RestartSec=10 diff --git a/install/yopass-install.sh b/install/yopass-install.sh new file mode 100644 index 0000000..c0f1b4c --- /dev/null +++ b/install/yopass-install.sh @@ -0,0 +1,69 @@ +#!/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/jhaals/yopass + +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 +systemctl enable -q --now redis-server +msg_ok "Installed Dependencies" + +setup_go +NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs + +fetch_and_deploy_gh_release "yopass" "jhaals/yopass" "tarball" + +msg_info "Building Yopass" +cd /opt/yopass +$STD go build -ldflags "-X main.version=$(cat ~/.yopass)" ./cmd/yopass-server +cd /opt/yopass/website +$STD yarn install --network-timeout 600000 +$STD yarn build +msg_ok "Built Yopass" + +msg_info "Generating SSL Certificate" +mkdir -p /opt/yopass/certificates +openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout /opt/yopass/certificates/key.pem \ + -out /opt/yopass/certificates/cert.pem \ + -subj "/C=US/ST=State/L=City/O=Yopass/CN=${LOCAL_IP}" \ + -addext "subjectAltName=IP:${LOCAL_IP},DNS:localhost,IP:127.0.0.1" \ + 2>/dev/null +chmod 600 /opt/yopass/certificates/key.pem +chmod 644 /opt/yopass/certificates/cert.pem +msg_ok "Generated SSL Certificate" + +msg_info "Creating Service" +cat </etc/systemd/system/yopass.service +[Unit] +Description=Yopass +Wants=network-online.target +After=network-online.target redis-server.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/yopass +ExecStart=/opt/yopass/yopass-server --address 0.0.0.0 --port 1337 --tls-cert /opt/yopass/certificates/cert.pem --tls-key /opt/yopass/certificates/key.pem --database redis --redis redis://127.0.0.1:6379/0 --asset-path /opt/yopass/website/dist +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now yopass +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc