diff --git a/.github/ISSUE_TEMPLATE/new-script.yaml b/.github/ISSUE_TEMPLATE/new-script.yaml index 419fd49b..e4ffbc8a 100644 --- a/.github/ISSUE_TEMPLATE/new-script.yaml +++ b/.github/ISSUE_TEMPLATE/new-script.yaml @@ -27,6 +27,17 @@ body: - PVE Tool (tools/pve) validations: required: true + - type: dropdown + id: arm64_support + attributes: + label: Does this script support arm64? + description: amd64 support is assumed. + options: + - arm64 supported + - arm64 not tested + - arm64 not supported + validations: + required: true - type: textarea id: task_details attributes: diff --git a/.github/agents/pve-script-creator.agent.md b/.github/agents/pve-script-creator.agent.md index 0fe427bf..ca88cc71 100644 --- a/.github/agents/pve-script-creator.agent.md +++ b/.github/agents/pve-script-creator.agent.md @@ -36,9 +36,10 @@ You are a specialist for creating and maintaining ProxmoxVED application scripts - All `apt` / `npm` / build commands must be prefixed with `$STD`. ### JSON Metadata -- Must include: `name`, `slug`, `categories`, `date_created`, `type`, `updateable`, `privileged`, `interface_port`, `documentation`, `website`, `logo`, `config_path`, `description`, `install_methods`, `default_credentials`, `notes`. +- Must include: `name`, `slug`, `categories`, `date_created`, `type`, `updateable`, `privileged`, `has_arm`, `interface_port`, `documentation`, `website`, `logo`, `config_path`, `description`, `install_methods`, `default_credentials`, `notes`. - `date_created` uses today's date (YYYY-MM-DD). - Resources in `install_methods` must match `var_*` values in the CT script. +- CT scripts must include `var_arm64="${var_arm64:-no}"` unless arm64 support has been verified. - Logo URL pattern: `https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/.webp` ## Checklist (verify before finishing) @@ -57,6 +58,8 @@ You are a specialist for creating and maintaining ProxmoxVED application scripts - [ ] `update_script()` present with backup/restore - [ ] Footer: `motd_ssh`, `customize`, `cleanup_lxc` - [ ] JSON metadata file matches CT script resources +- [ ] JSON `has_arm` accurately reflects arm64 support +- [ ] CT `var_arm64` accurately reflects arm64 support - [ ] Backups go to `/opt`, not `/tmp` ## Output Format diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 0f59af6b..7e48f11e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -16,6 +16,14 @@ Link: # --- +## arm64 Support (**X** in brackets) + +- [ ] **arm64 supported** - Tested and supported on arm64. +- [ ] **arm64 not tested** - Assumed to work on arm64, but testing has not been done. +- [ ] **arm64 not supported** - Confirmed upstream dependencies or binaries do not support arm64. + +--- + ## đŸ› ī¸ Type of Change (**X** in brackets) - [ ] 🐞 **Bug fix** – Resolves an issue without breaking functionality. diff --git a/.github/workflows/push_json_to_pocketbase.yml b/.github/workflows/push_json_to_pocketbase.yml index b2fca5a1..67134418 100644 --- a/.github/workflows/push_json_to_pocketbase.yml +++ b/.github/workflows/push_json_to_pocketbase.yml @@ -230,6 +230,7 @@ jobs: if (resolvedType) payload.type = resolvedType; var resolvedCats = (data.categories || []).map(function(n) { return categoryNameToPbId[categoryIdToName[n]]; }).filter(Boolean); if (resolvedCats.length) payload.categories = resolvedCats; + if (data.has_arm !== undefined) payload.has_arm = data.has_arm === true || data.has_arm === 'true'; if (data.version !== undefined) payload.version = data.version; if (data.changelog !== undefined) payload.changelog = data.changelog; if (data.screenshots !== undefined) payload.screenshots = data.screenshots; diff --git a/.github/workflows/unmet-pr-close.yml b/.github/workflows/unmet-pr-close.yml index e107ecc6..a5c70e51 100644 --- a/.github/workflows/unmet-pr-close.yml +++ b/.github/workflows/unmet-pr-close.yml @@ -91,6 +91,19 @@ jobs: } } + const architectureOptions = [ + "**arm64 supported**", + "**arm64 not tested**", + "**arm64 not supported**" + ]; + const hasArchitectureSelection = architectureOptions.some(req => { + const line = findLine(req); + return line && checkboxChecked(line); + }); + if (!hasArchitectureSelection) { + missing.push("One arm64 support option (`arm64 supported`, `arm64 not tested`, or `arm64 not supported`) must be checked"); + } + if (missing.length > 0) { let list = ""; for (const m of missing) { diff --git a/.gitignore b/.gitignore index fb667408..80fd8294 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ vm/vm-manager.sh vm/debian-13-vm.sh stars.json stars.txt +.DS_Store diff --git a/ct/affine.sh b/ct/affine.sh index 31854548..9a2eeca6 100644 --- a/ct/affine.sh +++ b/ct/affine.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/airflow.sh b/ct/airflow.sh index e1564786..0e9f55d4 100644 --- a/ct/airflow.sh +++ b/ct/airflow.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-16}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/akaunting.sh b/ct/akaunting.sh index bb6df16e..d939a073 100644 --- a/ct/akaunting.sh +++ b/ct/akaunting.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/aliasvault.sh b/ct/aliasvault.sh index 534c8b79..a03512a8 100644 --- a/ct/aliasvault.sh +++ b/ct/aliasvault.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-6144}" var_disk="${var_disk:-30}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/almalinux.sh b/ct/almalinux.sh index 8e421d59..5522d8a0 100644 --- a/ct/almalinux.sh +++ b/ct/almalinux.sh @@ -13,6 +13,7 @@ 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" diff --git a/ct/alpine-cinny.sh b/ct/alpine-cinny.sh index bba4869c..6a4e6cce 100644 --- a/ct/alpine-cinny.sh +++ b/ct/alpine-cinny.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" var_nesting="${var_nesting:-0}" diff --git a/ct/alpine.sh b/ct/alpine.sh index f9a814db..5da30046 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-5}" var_os="${var_os:-alpine}" var_version="${var_version:-3.22}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/archlinux.sh b/ct/archlinux.sh index 64ff64a9..b9bdfdb0 100644 --- a/ct/archlinux.sh +++ b/ct/archlinux.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-archlinux}" var_version="${var_version:-base}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/arm/adguard.sh b/ct/arm/adguard.sh deleted file mode 100644 index f0c2b99d..00000000 --- a/ct/arm/adguard.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://adguard.com/ - -APP="Adguard" -var_tags="${var_tags:-adblock}" -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" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/AdGuardHome ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_error "Adguard Home can only be updated via the user interface." - 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/arm/bazarr.sh b/ct/arm/bazarr.sh deleted file mode 100644 index 7c4642af..00000000 --- a/ct/arm/bazarr.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.bazarr.media/ - -APP="Bazarr" -var_tags="${var_tags:-arr}" -var_cpu="${var_cpu:-2}" -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 /var/lib/bazarr/ ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then - apt-get install -y libicu76 &>/dev/null - msg_info "Stopping Service" - systemctl stop bazarr - msg_ok "Stopped Service" - - PYTHON_VERSION="3.12" setup_uv - fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip" - - msg_info "Setup Bazarr" - mkdir -p /var/lib/bazarr/ - chmod 775 /opt/bazarr /var/lib/bazarr/ - # Always ensure venv exists - if [[ ! -d /opt/bazarr/venv/ ]]; then - $STD uv venv --clear /opt/bazarr/venv --python 3.12 - fi - - # Always check and fix service file if needed - if [[ -f /etc/systemd/system/bazarr.service ]] && grep -q "ExecStart=/usr/bin/python3" /etc/systemd/system/bazarr.service; then - sed -i "s|ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py|ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py|g" /etc/systemd/system/bazarr.service - systemctl daemon-reload - fi - sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt - $STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3 - msg_ok "Setup Bazarr" - - msg_info "Starting Service" - systemctl start bazarr - 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}:6767${CL}" diff --git a/ct/arm/bentopdf.sh b/ct/arm/bentopdf.sh deleted file mode 100644 index f7fb63e8..00000000 --- a/ct/arm/bentopdf.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: vhsdream -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/alam00000/bentopdf - -APP="BentoPDF" -var_tags="${var_tags:-pdf-editor}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-4096}" -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/bentopdf ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - NODE_VERSION="24" setup_nodejs - - if check_for_gh_release "bentopdf" "alam00000/bentopdf"; then - msg_info "Stopping Service" - systemctl stop bentopdf - msg_ok "Stopped Service" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf" - - msg_info "Updating BentoPDF" - cd /opt/bentopdf - $STD npm ci --no-audit --no-fund - export SIMPLE_MODE=true - $STD npm run build -- --mode production - msg_ok "Updated BentoPDF" - - msg_info "Starting Service" - systemctl start bentopdf - 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}:8080${CL}" diff --git a/ct/arm/homeassistant.sh b/ct/arm/homeassistant.sh deleted file mode 100644 index 918f2d55..00000000 --- a/ct/arm/homeassistant.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.home-assistant.io/ - -APP="Home Assistant" -var_tags="${var_tags:-automation;smarthome}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-16}" -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 /var/lib/docker/volumes/hass_config/_data ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - UPD=$(msg_menu "Home Assistant Update Options" \ - "1" "Update ALL Containers" \ - "2" "Remove ALL Unused Images" \ - "3" "Install HACS" \ - "4" "Install FileBrowser") - - if [ "$UPD" == "1" ]; then - msg_info "Updating All Containers" - CONTAINER_LIST="${1:-$(docker ps -q)}" - for container in ${CONTAINER_LIST}; do - CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container "${container}")" - RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")" - docker pull "${CONTAINER_IMAGE}" - LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")" - if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then - pip install -U runlike - echo "Updating ${container} image ${CONTAINER_IMAGE}" - DOCKER_COMMAND="$(runlike --use-volume-id "${container}")" - docker rm --force "${container}" - eval "${DOCKER_COMMAND}" - fi - done - msg_ok "Updated All Containers" - exit - fi - if [ "$UPD" == "2" ]; then - msg_info "Removing ALL Unused Images" - docker image prune -af - msg_ok "Removed ALL Unused Images" - exit - fi - if [ "$UPD" == "3" ]; then - msg_info "Installing Home Assistant Community Store (HACS)" - $STD apt update - cd /var/lib/docker/volumes/hass_config/_data - $STD bash <(curl -fsSL https://get.hacs.xyz) - msg_ok "Installed Home Assistant Community Store (HACS)" - echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n" - exit - fi - if [ "$UPD" == "4" ]; then - msg_info "Installing FileBrowser" - RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g') - $STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-arm64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin - $STD filebrowser config init -a '0.0.0.0' - $STD filebrowser config set -a '0.0.0.0' - $STD filebrowser users add admin helper-scripts.com --perm.admin - msg_ok "Installed FileBrowser" - - msg_info "Creating Service" - service_path="/etc/systemd/system/filebrowser.service" - echo "[Unit] -Description=Filebrowser -After=network-online.target -[Service] -User=root -WorkingDirectory=/root/ -ExecStart=/usr/local/bin/filebrowser -r / -[Install] -WantedBy=default.target" >$service_path - - $STD systemctl enable --now filebrowser - msg_ok "Created Service" - - msg_ok "Completed successfully!\n" - echo -e "FileBrowser should be reachable by going to the following URL. - ${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n" - exit - fi -} - -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}HA: http://${IP}:8123${CL}" -echo -e "${TAB}${GATEWAY}${BGN}Portainer: https://${IP}:9443${CL}" diff --git a/ct/arm/jellyfin.sh b/ct/arm/jellyfin.sh deleted file mode 100644 index 2bba8fdf..00000000 --- a/ct/arm/jellyfin.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://jellyfin.org/ - -APP="Jellyfin" -var_tags="${var_tags:-media}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-16}" -var_os="${var_os:-ubuntu}" -var_version="${var_version:-24.04}" -var_unprivileged="${var_unprivileged:-0}" -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 /usr/lib/jellyfin ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - msg_info "Updating Jellyfin" - ensure_dependencies libjemalloc2 - if [[ ! -f /usr/lib/libjemalloc.so ]]; then - ln -sf /usr/lib/aarch64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so - fi - $STD apt update - $STD apt -y upgrade - $STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server - msg_ok "Updated Jellyfin" - 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}:8096${CL}" diff --git a/ct/arm/kima-hub.sh b/ct/arm/kima-hub.sh deleted file mode 100644 index c7523027..00000000 --- a/ct/arm/kima-hub.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/Chevron7Locked/kima-hub - -APP="Kima-Hub" -var_tags="${var_tags:-music;streaming;media}" -var_cpu="${var_cpu:-4}" -var_ram="${var_ram:-8192}" -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/kima-hub ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "kima-hub" "Chevron7Locked/kima-hub"; then - msg_info "Stopping Services" - systemctl stop kima-frontend kima-backend kima-analyzer kima-analyzer-clap - msg_ok "Stopped Services" - - msg_info "Backing up Data" - cp /opt/kima-hub/backend/.env /opt/kima-hub-backend-env.bak - cp /opt/kima-hub/frontend/.env /opt/kima-hub-frontend-env.bak - msg_ok "Backed up Data" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball" - - msg_info "Restoring Data" - cp /opt/kima-hub-backend-env.bak /opt/kima-hub/backend/.env - cp /opt/kima-hub-frontend-env.bak /opt/kima-hub/frontend/.env - rm -f /opt/kima-hub-backend-env.bak /opt/kima-hub-frontend-env.bak - msg_ok "Restored Data" - - msg_info "Rebuilding Backend" - cd /opt/kima-hub/backend - $STD npm install - $STD npm run build - $STD npx prisma generate - $STD npx prisma migrate deploy - msg_ok "Rebuilt Backend" - - msg_info "Rebuilding Frontend" - cd /opt/kima-hub/frontend - $STD npm install - $STD npm run build - msg_ok "Rebuilt Frontend" - - msg_info "Starting Services" - systemctl start kima-backend kima-frontend kima-analyzer kima-analyzer-clap - 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}:3030${CL}" diff --git a/ct/arm/lubelogger.sh b/ct/arm/lubelogger.sh deleted file mode 100644 index 5d314abf..00000000 --- a/ct/arm/lubelogger.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: kristocopani -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://lubelogger.com/ - -APP="LubeLogger" -var_tags="${var_tags:-vehicle;car}" -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" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /etc/systemd/system/lubelogger.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "lubelogger" "hargata/lubelog"; then - msg_info "Stopping Service" - systemctl stop lubelogger - msg_ok "Stopped Service" - - msg_info "Backing up data" - mkdir -p /tmp/lubeloggerData/data - cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json - cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/ - - # Lubelogger has moved multiples folders to the 'data' folder, and we need to move them before the update to keep the user data - # Github Discussion: https://github.com/hargata/lubelog/discussions/787 - [[ -e /opt/lubelogger/config ]] && cp -r /opt/lubelogger/config /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/translations ]] && cp -r /opt/lubelogger/wwwroot/translations /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/documents ]] && cp -r /opt/lubelogger/wwwroot/documents /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/images ]] && cp -r /opt/lubelogger/wwwroot/images /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/ - rm -rf /opt/lubelogger - msg_ok "Backed up data" - - fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip" - - msg_info "Configuring LubeLogger" - chmod 700 /opt/lubelogger/CarCareTracker - cp -rf /tmp/lubeloggerData/* /opt/lubelogger/ - rm -rf /tmp/lubeloggerData - msg_ok "Configured LubeLogger" - - msg_info "Starting Service" - systemctl start lubelogger - 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}:5000${CL}" diff --git a/ct/arm/pihole.sh b/ct/arm/pihole.sh deleted file mode 100644 index b16aba5c..00000000 --- a/ct/arm/pihole.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://pi-hole.net/ - -APP="Pihole" -var_tags="${var_tags:-adblock}" -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" -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /etc/pihole ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_info "Updating PiHole" - set +e - $STD apt update - $STD apt upgrade -y - /usr/local/bin/pihole -up - msg_ok "Updated PiHole" - 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}/admin${CL}" diff --git a/ct/arm/rdtclient.sh b/ct/arm/rdtclient.sh deleted file mode 100644 index ad669a2b..00000000 --- a/ct/arm/rdtclient.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/rogerfar/rdt-client - -APP="RDTClient" -var_tags="${var_tags:-torrent}" -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/rdtc/ ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - if check_for_gh_release "rdt-client" "rogerfar/rdt-client"; then - msg_info "Stopping Service" - systemctl stop rdtc - msg_ok "Stopped Service" - - msg_info "Creating backup" - mkdir -p /opt/rdtc-backup - cp -R /opt/rdtc/appsettings.json /opt/rdtc-backup/ - msg_ok "Backup created" - - fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip" - cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/ - if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then - $STD apt remove --purge -y dotnet-sdk-8.0 - ensure_dependencies aspnetcore-runtime-9.0 - fi - rm -rf /opt/rdtc-backup - - msg_info "Starting Service" - systemctl start rdtc - 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}:6500${CL}" diff --git a/ct/arm/vaultwarden.sh b/ct/arm/vaultwarden.sh deleted file mode 100644 index ed03e84b..00000000 --- a/ct/arm/vaultwarden.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/build.func) -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/dani-garcia/vaultwarden - -APP="Vaultwarden" -var_tags="${var_tags:-password-manager}" -var_cpu="${var_cpu:-4}" -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 [[ ! -f /etc/systemd/system/vaultwarden.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - VAULT=$(get_latest_github_release "dani-garcia/vaultwarden") - WVRELEASE=$(get_latest_github_release "dani-garcia/bw_web_builds") - - UPD=$(msg_menu "Vaultwarden Update Options" \ - "1" "Update VaultWarden + Web-Vault" \ - "2" "Set Admin Token") - - if [ "$UPD" == "1" ]; then - if check_for_gh_release "vaultwarden" "dani-garcia/vaultwarden"; then - msg_info "Stopping Service" - systemctl stop vaultwarden - msg_ok "Stopped Service" - - fetch_and_deploy_gh_release "vaultwarden" "dani-garcia/vaultwarden" "tarball" "latest" "/tmp/vaultwarden-src" - - msg_info "Updating VaultWarden to $VAULT (Patience)" - cd /tmp/vaultwarden-src - VW_VERSION="$VAULT" - export VW_VERSION - $STD cargo build --features "sqlite,mysql,postgresql" --release - if [[ -f /usr/bin/vaultwarden ]]; then - cp target/release/vaultwarden /usr/bin/ - else - cp target/release/vaultwarden /opt/vaultwarden/bin/ - fi - cd ~ && rm -rf /tmp/vaultwarden-src - msg_ok "Updated VaultWarden to ${VAULT}" - - msg_info "Starting Service" - systemctl start vaultwarden - msg_ok "Started Service" - else - msg_ok "VaultWarden is already up-to-date" - fi - - if check_for_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds"; then - msg_info "Stopping Service" - systemctl stop vaultwarden - msg_ok "Stopped Service" - - msg_info "Updating Web-Vault to $WVRELEASE" - rm -rf /opt/vaultwarden/web-vault - mkdir -p /opt/vaultwarden/web-vault - - fetch_and_deploy_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds" "prebuild" "latest" "/opt/vaultwarden/web-vault" "bw_web_*.tar.gz" - - chown -R root:root /opt/vaultwarden/web-vault/ - msg_ok "Updated Web-Vault to ${WVRELEASE}" - - msg_info "Starting Service" - systemctl start vaultwarden - msg_ok "Started Service" - else - msg_ok "Web-Vault is already up-to-date" - fi - - msg_ok "Updated successfully!" - exit - fi - - if [ "$UPD" == "2" ]; then - if [[ "${PHS_SILENT:-0}" == "1" ]]; then - msg_warn "Set Admin Token requires interactive mode, skipping." - exit - fi - read -r -s -p "Set the ADMIN_TOKEN: " NEWTOKEN - echo "" - if [[ -n "$NEWTOKEN" ]]; then - ensure_dependencies argon2 - TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e) - sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env - if [[ -f /opt/vaultwarden/data/config.json ]]; then - sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json - fi - systemctl restart vaultwarden - msg_ok "Admin token updated" - fi - exit - fi -} - -start -build_container -description - -msg_ok "Completed successfully!\n" -echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" -echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8000${CL}" diff --git a/ct/baserow.sh b/ct/baserow.sh index 78ec15bb..b83509c2 100644 --- a/ct/baserow.sh +++ b/ct/baserow.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-15}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/bitfocus-companion.sh b/ct/bitfocus-companion.sh index 2a951cd5..32816275 100644 --- a/ct/bitfocus-companion.sh +++ b/ct/bitfocus-companion.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/blinko.sh b/ct/blinko.sh index 9e00b180..8b800b07 100644 --- a/ct/blinko.sh +++ b/ct/blinko.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/bunkerm.sh b/ct/bunkerm.sh index 97c3fadc..f31f4e9b 100644 --- a/ct/bunkerm.sh +++ b/ct/bunkerm.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/caddymanager.sh b/ct/caddymanager.sh index db1a225d..8c0e0c72 100644 --- a/ct/caddymanager.sh +++ b/ct/caddymanager.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/centos.sh b/ct/centos.sh index 6ce04dbf..572cc67b 100644 --- a/ct/centos.sh +++ b/ct/centos.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-centos}" var_version="${var_version:-9}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/certimate.sh b/ct/certimate.sh index cd430ca9..d3f92a2d 100644 --- a/ct/certimate.sh +++ b/ct/certimate.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/clickhouse.sh b/ct/clickhouse.sh index 4c6ede16..e6f9e4e0 100644 --- a/ct/clickhouse.sh +++ b/ct/clickhouse.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/cliproxyapi.sh b/ct/cliproxyapi.sh index b23bd31e..67976332 100644 --- a/ct/cliproxyapi.sh +++ b/ct/cliproxyapi.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/colanode.sh b/ct/colanode.sh index 41f0f7bd..1d23bacb 100644 --- a/ct/colanode.sh +++ b/ct/colanode.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-16}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/cyberchef.sh b/ct/cyberchef.sh index 6abc0758..4b39f909 100644 --- a/ct/cyberchef.sh +++ b/ct/cyberchef.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ddns-updater.sh b/ct/ddns-updater.sh index 506d3cf9..612e19cf 100644 --- a/ct/ddns-updater.sh +++ b/ct/ddns-updater.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/debian.sh b/ct/debian.sh index fb7b4785..31fd0db8 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-yes}" #var_fuse="${var_fuse:-no}" diff --git a/ct/deferred/arm.sh b/ct/deferred/arm.sh index 0270a829..142f2413 100644 --- a/ct/deferred/arm.sh +++ b/ct/deferred/arm.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-16}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-0}" header_info "$APP" diff --git a/ct/deferred/docspell.sh b/ct/deferred/docspell.sh index b78d5373..ecd27d20 100644 --- a/ct/deferred/docspell.sh +++ b/ct/deferred/docspell.sh @@ -13,6 +13,7 @@ var_cpu="${var_cpu:-4}" var_ram="${var_ram:-2048}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/jumpserver.sh b/ct/deferred/jumpserver.sh index dcc3e208..c91ceded 100644 --- a/ct/deferred/jumpserver.sh +++ b/ct/deferred/jumpserver.sh @@ -13,6 +13,7 @@ var_ram="8192" var_disk="60" var_os="debian" var_version="12" +var_arm64="${var_arm64:-no}" var_unprivileged="1" header_info "$APP" diff --git a/ct/deferred/maxun.sh b/ct/deferred/maxun.sh index 226c8dec..b404c4bf 100644 --- a/ct/deferred/maxun.sh +++ b/ct/deferred/maxun.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/ocis.sh b/ct/deferred/ocis.sh index ed67ef4a..6f9fb152 100644 --- a/ct/deferred/ocis.sh +++ b/ct/deferred/ocis.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/piler.sh b/ct/deferred/piler.sh index a6dfcf65..72bf39c0 100644 --- a/ct/deferred/piler.sh +++ b/ct/deferred/piler.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-ubuntu}" var_version="${var_version:-24.04}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/polaris.sh b/ct/deferred/polaris.sh index e0394e05..1ec31952 100644 --- a/ct/deferred/polaris.sh +++ b/ct/deferred/polaris.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-7}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/roundcubemail.sh b/ct/deferred/roundcubemail.sh index 0c74f702..58214b32 100644 --- a/ct/deferred/roundcubemail.sh +++ b/ct/deferred/roundcubemail.sh @@ -13,6 +13,7 @@ var_cpu="${var_cpu:-1}" var_ram="${var_ram:-1024}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/rybbit.sh b/ct/deferred/rybbit.sh index aceaf970..9f1109fb 100644 --- a/ct/deferred/rybbit.sh +++ b/ct/deferred/rybbit.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-5}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/deferred/transmission-openvpn.sh b/ct/deferred/transmission-openvpn.sh index 763c7836..e38f5717 100644 --- a/ct/deferred/transmission-openvpn.sh +++ b/ct/deferred/transmission-openvpn.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" var_tun="${var_tun:-yes}" diff --git a/ct/devuan.sh b/ct/devuan.sh index 5d88e41d..a66e491c 100644 --- a/ct/devuan.sh +++ b/ct/devuan.sh @@ -13,6 +13,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/discourse.sh b/ct/discourse.sh index 2ddb8c10..d3c9fd10 100644 --- a/ct/discourse.sh +++ b/ct/discourse.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/dynacat.sh b/ct/dynacat.sh index ea3b65ac..63969ff8 100644 --- a/ct/dynacat.sh +++ b/ct/dynacat.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/edit-mind.sh b/ct/edit-mind.sh index 8132844a..c0bc1ec0 100644 --- a/ct/edit-mind.sh +++ b/ct/edit-mind.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-32}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ente.sh b/ct/ente.sh index 97a46f4a..8398dce2 100644 --- a/ct/ente.sh +++ b/ct/ente.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-6144}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/etherpad.sh b/ct/etherpad.sh index f69eb9a2..d8e6c7fd 100755 --- a/ct/etherpad.sh +++ b/ct/etherpad.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/excalidash.sh b/ct/excalidash.sh index d2a0a942..1720da9a 100644 --- a/ct/excalidash.sh +++ b/ct/excalidash.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/fedora.sh b/ct/fedora.sh index e011ec38..36435690 100644 --- a/ct/fedora.sh +++ b/ct/fedora.sh @@ -13,6 +13,7 @@ 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" diff --git a/ct/flame.sh b/ct/flame.sh index ba2b2227..10ed3ec7 100644 --- a/ct/flame.sh +++ b/ct/flame.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index de4e5fbd..7bfa80ac 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/fleet.sh b/ct/fleet.sh index 89564429..8cd68f7c 100644 --- a/ct/fleet.sh +++ b/ct/fleet.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-12}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/forgejo-runner.sh b/ct/forgejo-runner.sh index f50c169a..dd7132e2 100644 --- a/ct/forgejo-runner.sh +++ b/ct/forgejo-runner.sh @@ -13,6 +13,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" var_nesting="${var_nesting:-1}" diff --git a/ct/garmin-grafana.sh b/ct/garmin-grafana.sh index e02047d8..5824b0d4 100644 --- a/ct/garmin-grafana.sh +++ b/ct/garmin-grafana.sh @@ -13,6 +13,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/gentoo.sh b/ct/gentoo.sh index cf6e88e9..43137cb8 100644 --- a/ct/gentoo.sh +++ b/ct/gentoo.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-8}" var_os="${var_os:-gentoo}" var_version="${var_version:-current}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/gluetun.sh b/ct/gluetun.sh index 361e48b3..39052bd0 100644 --- a/ct/gluetun.sh +++ b/ct/gluetun.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" var_tun="${var_tun:-yes}" diff --git a/ct/godoxy.sh b/ct/godoxy.sh index e4fa530a..83f795d3 100644 --- a/ct/godoxy.sh +++ b/ct/godoxy.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/hermesagent.sh b/ct/hermesagent.sh index a2382a34..33c25a7f 100644 --- a/ct/hermesagent.sh +++ b/ct/hermesagent.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/invidious.sh b/ct/invidious.sh index 35da1a48..7c56db52 100644 --- a/ct/invidious.sh +++ b/ct/invidious.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/invoiceshelf.sh b/ct/invoiceshelf.sh index ad6338db..6f3012f0 100644 --- a/ct/invoiceshelf.sh +++ b/ct/invoiceshelf.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/kan.sh b/ct/kan.sh index 2fad8f64..d96dc350 100644 --- a/ct/kan.sh +++ b/ct/kan.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/lidarr.sh b/ct/lidarr.sh index 0ae5996e..b8eb3eeb 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/localagi.sh b/ct/localagi.sh index d6bd7a54..4d3ce7f0 100644 --- a/ct/localagi.sh +++ b/ct/localagi.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-no}" diff --git a/ct/matterjs-server.sh b/ct/matterjs-server.sh index f98488ef..b0118683 100644 --- a/ct/matterjs-server.sh +++ b/ct/matterjs-server.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/nezha.sh b/ct/nezha.sh index 6acdf924..438bc392 100644 --- a/ct/nezha.sh +++ b/ct/nezha.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/openeuler.sh b/ct/openeuler.sh index eabe482e..dc3e287b 100644 --- a/ct/openeuler.sh +++ b/ct/openeuler.sh @@ -19,6 +19,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/opensuse.sh b/ct/opensuse.sh index 3d282472..ebec752c 100644 --- a/ct/opensuse.sh +++ b/ct/opensuse.sh @@ -13,6 +13,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/oxicloud.sh b/ct/oxicloud.sh index 62f5f196..56cd4a03 100644 --- a/ct/oxicloud.sh +++ b/ct/oxicloud.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-3072}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/paperclip.sh b/ct/paperclip.sh index 4bae19d8..453e2c89 100644 --- a/ct/paperclip.sh +++ b/ct/paperclip.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/papermark.sh b/ct/papermark.sh index 89014718..3d80a443 100644 --- a/ct/papermark.sh +++ b/ct/papermark.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/pixelfed.sh b/ct/pixelfed.sh index 9f14ab21..b0d210b2 100644 --- a/ct/pixelfed.sh +++ b/ct/pixelfed.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/plane.sh b/ct/plane.sh index 556805e5..b17e8741 100644 --- a/ct/plane.sh +++ b/ct/plane.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-6144}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/postiz.sh b/ct/postiz.sh index bddd6c6a..56ba0327 100644 --- a/ct/postiz.sh +++ b/ct/postiz.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 249a3356..020e4f10 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/puter.sh b/ct/puter.sh index 7c7967e4..830cf183 100644 --- a/ct/puter.sh +++ b/ct/puter.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index 63245083..417a7658 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/radarr.sh b/ct/radarr.sh index dc575038..5dc8325a 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index fed85ae3..52f1a012 100644 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/rockylinux.sh b/ct/rockylinux.sh index 4dc9024d..d823cb13 100644 --- a/ct/rockylinux.sh +++ b/ct/rockylinux.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-rockylinux}" var_version="${var_version:-10}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/rss-bridge.sh b/ct/rss-bridge.sh index 8f4aa1f5..2057cf90 100644 --- a/ct/rss-bridge.sh +++ b/ct/rss-bridge.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index db510c0b..b7e92b75 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-5}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/seerr.sh b/ct/seerr.sh index 6c7b2abc..d15e3538 100644 --- a/ct/seerr.sh +++ b/ct/seerr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/shiori.sh b/ct/shiori.sh index 6e8e526b..2649fcd4 100644 --- a/ct/shiori.sh +++ b/ct/shiori.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/shlink.sh b/ct/shlink.sh index 8cfdc7ed..76e99fd4 100644 --- a/ct/shlink.sh +++ b/ct/shlink.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/simplelogin.sh b/ct/simplelogin.sh index bfbf148a..29113be8 100644 --- a/ct/simplelogin.sh +++ b/ct/simplelogin.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/skylite-ux.sh b/ct/skylite-ux.sh index e84df958..3156ae64 100644 --- a/ct/skylite-ux.sh +++ b/ct/skylite-ux.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/slink.sh b/ct/slink.sh index dc57d972..e297381a 100644 --- a/ct/slink.sh +++ b/ct/slink.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/slskd.sh b/ct/slskd.sh index 1b1b983a..8d8290de 100644 --- a/ct/slskd.sh +++ b/ct/slskd.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 0688e504..ad2f374a 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/spliit.sh b/ct/spliit.sh index 7a0b9ce7..d3654da6 100755 --- a/ct/spliit.sh +++ b/ct/spliit.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/squid.sh b/ct/squid.sh index f48fe95c..3aab9848 100644 --- a/ct/squid.sh +++ b/ct/squid.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/stoatchat.sh b/ct/stoatchat.sh index 432fcfff..b6b9937e 100644 --- a/ct/stoatchat.sh +++ b/ct/stoatchat.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-10240}" var_disk="${var_disk:-30}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/surrealdb.sh b/ct/surrealdb.sh index 70a35d31..bbccd5b6 100644 --- a/ct/surrealdb.sh +++ b/ct/surrealdb.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/tolgee.sh b/ct/tolgee.sh index fe8be6ed..8cdc96f6 100644 --- a/ct/tolgee.sh +++ b/ct/tolgee.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/tor-snowflake.sh b/ct/tor-snowflake.sh index 20397e45..92cd8637 100644 --- a/ct/tor-snowflake.sh +++ b/ct/tor-snowflake.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" var_nesting="${var_nesting:-0}" diff --git a/ct/twenty.sh b/ct/twenty.sh index e75af120..715c1e3a 100644 --- a/ct/twenty.sh +++ b/ct/twenty.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-10240}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index bd0e8dd0..83ef79af 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -14,6 +14,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-ubuntu}" var_version="${var_version:-24.04}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-0}" header_info "$APP" diff --git a/ct/web-check.sh b/ct/web-check.sh index 0764b522..51a95ba7 100644 --- a/ct/web-check.sh +++ b/ct/web-check.sh @@ -12,6 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/xyops.sh b/ct/xyops.sh index 43861b3a..a63ba696 100644 --- a/ct/xyops.sh +++ b/ct/xyops.sh @@ -12,6 +12,7 @@ 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}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/zitadel.sh b/ct/zitadel.sh index 881e683b..90e4e2b4 100644 --- a/ct/zitadel.sh +++ b/ct/zitadel.sh @@ -13,6 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/docs/contribution/GUIDE.md b/docs/contribution/GUIDE.md index 52c4d950..52907b40 100644 --- a/docs/contribution/GUIDE.md +++ b/docs/contribution/GUIDE.md @@ -274,6 +274,7 @@ var_ram="2048" # Min RAM needed (MB) var_disk="10" # Min disk (GB) var_os="debian" # OS type var_version="12" # OS version +var_arm64="${var_arm64:-no}" # arm64 support (no unless verified) var_unprivileged="1" # Security (1=unprivileged) header_info "$APP" diff --git a/docs/contribution/templates_ct/AppName.md b/docs/contribution/templates_ct/AppName.md index 8507c7c2..504ac9ab 100644 --- a/docs/contribution/templates_ct/AppName.md +++ b/docs/contribution/templates_ct/AppName.md @@ -101,6 +101,7 @@ Example: >| `var_disk` | Disk capacity | In GB | >| `var_os` | Operating system | alpine, debian, ubuntu | >| `var_version` | OS version | e.g., 3.20, 11, 12, 20.04 | +>| `var_arm64` | arm64 support | `no` unless arm64 support is verified | >| `var_unprivileged` | Container type | 1 = Unprivileged, 0 = Privileged | Example: @@ -113,6 +114,7 @@ var_ram="2048" var_disk="4" var_os="debian" var_version="12" +var_arm64="${var_arm64:-no}" var_unprivileged="1" ``` diff --git a/docs/contribution/templates_ct/AppName.sh b/docs/contribution/templates_ct/AppName.sh index cf9333c4..8155ab30 100644 --- a/docs/contribution/templates_ct/AppName.sh +++ b/docs/contribution/templates_ct/AppName.sh @@ -20,6 +20,8 @@ var_os="[OS]" # Default OS (e.g. debian, ubuntu, alpine) var_version="[VERSION]" # Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine) +var_arm64="${var_arm64:-no}" +# arm64 support status; default to no unless verified var_unprivileged="[UNPRIVILEGED]" # 1 = unprivileged container, 0 = privileged container diff --git a/install/arm/adguard-install.sh b/install/arm/adguard-install.sh deleted file mode 100644 index a2e9ee8d..00000000 --- a/install/arm/adguard-install.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://adguard.com/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -fetch_and_deploy_gh_release "AdGuardHome" "AdguardTeam/AdGuardHome" "prebuild" "latest" "/opt/AdGuardHome" "AdGuardHome_linux_arm64.tar.gz" - -msg_info "Creating Service" -cat </etc/systemd/system/AdGuardHome.service -[Unit] -Description=AdGuard Home: Network-level blocker -ConditionFileIsExecutable=/opt/AdGuardHome/AdGuardHome -After=syslog.target network-online.target - -[Service] -StartLimitInterval=5 -StartLimitBurst=10 -ExecStart=/opt/AdGuardHome/AdGuardHome "-s" "run" -WorkingDirectory=/opt/AdGuardHome -StandardOutput=file:/var/log/AdGuardHome.out -StandardError=file:/var/log/AdGuardHome.err -Restart=always -RestartSec=10 -EnvironmentFile=-/etc/sysconfig/AdGuardHome - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now AdGuardHome -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/arm-test.sh b/install/arm/arm-test.sh deleted file mode 100644 index 8b137891..00000000 --- a/install/arm/arm-test.sh +++ /dev/null @@ -1 +0,0 @@ - diff --git a/install/arm/bazarr-install.sh b/install/arm/bazarr-install.sh deleted file mode 100644 index 879bcf59..00000000 --- a/install/arm/bazarr-install.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.bazarr.media/ - -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 libicu76 -msg_ok "Installed Dependencies" - -PYTHON_VERSION="3.12" setup_uv -fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip" - -msg_info "Installing Bazarr" -mkdir -p /var/lib/bazarr/ -chmod 775 /opt/bazarr /var/lib/bazarr/ -sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt -$STD uv venv --clear /opt/bazarr/venv --python 3.12 -$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3 -msg_ok "Installed Bazarr" - -msg_info "Creating Service" -cat </etc/systemd/system/bazarr.service -[Unit] -Description=Bazarr Daemon -After=syslog.target network.target - -[Service] -WorkingDirectory=/opt/bazarr/ -UMask=0002 -Restart=on-failure -RestartSec=5 -Type=simple -ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py -KillSignal=SIGINT -TimeoutStopSec=20 -SyslogIdentifier=bazarr - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now bazarr -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/bentopdf-install.sh b/install/arm/bentopdf-install.sh deleted file mode 100644 index 39545544..00000000 --- a/install/arm/bentopdf-install.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: vhsdream -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/alam00000/bentopdf - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -NODE_VERSION="24" setup_nodejs -fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf" - -msg_info "Setup BentoPDF" -cd /opt/bentopdf -$STD npm ci --no-audit --no-fund -export SIMPLE_MODE=true -$STD npm run build -- --mode production -msg_ok "Setup BentoPDF" - -msg_info "Creating Service" -cat </etc/systemd/system/bentopdf.service -[Unit] -Description=BentoPDF Service -After=network.target - -[Service] -Type=simple -WorkingDirectory=/opt/bentopdf -ExecStart=/usr/bin/npx serve dist -p 8080 -Restart=always -RestartSec=10 - -[Install] -WantedBy=multi-user.target -EOF - -systemctl enable -q --now bentopdf -msg_ok "Created & started service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/homeassistant-install.sh b/install/arm/homeassistant-install.sh deleted file mode 100644 index 369ef03c..00000000 --- a/install/arm/homeassistant-install.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.home-assistant.io/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Setup Python3" -$STD apt install -y \ - python3 \ - python3-dev \ - python3-pip \ - python3-venv -rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED -msg_ok "Setup Python3" - -msg_info "Installing runlike" -$STD pip install runlike -msg_ok "Installed runlike" - -get_latest_release() { - curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 -} - -DOCKER_LATEST_VERSION=$(get_latest_release "moby/moby") -CORE_LATEST_VERSION=$(get_latest_release "home-assistant/core") -PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer") - -msg_info "Installing Docker $DOCKER_LATEST_VERSION" -DOCKER_CONFIG_PATH='/etc/docker/daemon.json' -mkdir -p $(dirname $DOCKER_CONFIG_PATH) -echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json -$STD sh <(curl -fsSL https://get.docker.com) -msg_ok "Installed Docker $DOCKER_LATEST_VERSION" - -msg_info "Pulling Portainer $PORTAINER_LATEST_VERSION Image" -$STD docker pull portainer/portainer-ce:latest -msg_ok "Pulled Portainer $PORTAINER_LATEST_VERSION Image" - -msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" -$STD docker volume create portainer_data -$STD docker run -d \ - -p 8000:8000 \ - -p 9443:9443 \ - --name=portainer \ - --restart=always \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v portainer_data:/data \ - portainer/portainer-ce:latest -msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION" - -msg_info "Pulling Home Assistant $CORE_LATEST_VERSION Image" -$STD docker pull ghcr.io/home-assistant/home-assistant:stable -msg_ok "Pulled Home Assistant $CORE_LATEST_VERSION Image" - -msg_info "Installing Home Assistant $CORE_LATEST_VERSION" -$STD docker volume create hass_config -$STD docker run -d \ - --name homeassistant \ - --privileged \ - --restart unless-stopped \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v /dev:/dev \ - -v hass_config:/config \ - -v /etc/localtime:/etc/localtime:ro \ - --net=host \ - ghcr.io/home-assistant/home-assistant:stable -mkdir /root/hass_config -msg_ok "Installed Home Assistant $CORE_LATEST_VERSION" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/jellyfin-install.sh b/install/arm/jellyfin-install.sh deleted file mode 100644 index 8a68c47d..00000000 --- a/install/arm/jellyfin-install.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://jellyfin.org/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_custom "â„šī¸" "${GN}" "If NVIDIA GPU passthrough is detected, you'll be asked whether to install drivers in the container" -setup_hwaccel - -msg_info "Installing Jellyfin" -VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)" -if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then - $STD apt install -y libjemalloc2 -fi -if [[ ! -f /usr/lib/libjemalloc.so ]]; then - ln -sf /usr/lib/aarch64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so -fi -if [[ ! -d /etc/apt/keyrings ]]; then - mkdir -p /etc/apt/keyrings -fi -curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg -cat </etc/apt/sources.list.d/jellyfin.sources -Types: deb -URIs: https://repo.jellyfin.org/${PCT_OSTYPE} -Suites: ${VERSION} -Components: main -Architectures: arm64 -Signed-By: /etc/apt/keyrings/jellyfin.gpg -EOF - -$STD apt update -$STD apt install -y jellyfin -# Configure log rotation to prevent disk fill (keeps fail2ban compatibility) (PR: #1690 / Issue: #11224) -cat </etc/logrotate.d/jellyfin -/var/log/jellyfin/*.log { - daily - rotate 3 - maxsize 100M - missingok - notifempty - compress - delaycompress - copytruncate -} -EOF -chown -R jellyfin:adm /etc/jellyfin -sleep 10 -systemctl restart jellyfin -if [[ "$CTTYPE" == "0" ]]; then - sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,jellyfin/' -e 's/^render:x:108:root,jellyfin$/ssl-cert:x:108:/' /etc/group -else - sed -i -e 's/^ssl-cert:x:104:$/render:x:104:jellyfin/' -e 's/^render:x:108:jellyfin$/ssl-cert:x:108:/' /etc/group -fi -msg_ok "Installed Jellyfin" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/kima-hub-install.sh b/install/arm/kima-hub-install.sh deleted file mode 100644 index 71f1e9a4..00000000 --- a/install/arm/kima-hub-install.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://www.kimai.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 \ - apt-transport-https \ - apache2 \ - git \ - expect -msg_ok "Installed Dependencies" - -setup_mariadb -PHP_VERSION="8.4" PHP_APACHE="YES" setup_php -setup_composer - -msg_info "Setting up database" -DB_NAME=kimai_db -DB_USER=kimai -DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) -MYSQL_VERSION=$(mariadb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') -$STD mariadb -e "CREATE DATABASE $DB_NAME;" -$STD mariadb -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" -$STD mariadb -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" -{ - echo "Kimai-Credentials" - echo "Kimai Database User: $DB_USER" - echo "Kimai Database Password: $DB_PASS" - echo "Kimai Database Name: $DB_NAME" -} >>~/kimai.creds -msg_ok "Set up database" - -fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball" - -msg_info "Setup Kimai" -cd /opt/kimai -echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc -source ~/.bashrc -$STD composer install --no-dev --optimize-autoloader --no-interaction -cp .env.dist .env -sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=mariadb-$MYSQL_VERSION" /opt/kimai/.env -$STD bin/console kimai:install -n -$STD expect </opt/kimai/config/packages/local.yaml -kimai: - timesheet: - rounding: - default: - begin: 15 - end: 15 - -EOF -msg_ok "Installed Kimai" - -msg_info "Creating Service" -cat </etc/apache2/sites-available/kimai.conf - - ServerAdmin webmaster@localhost - DocumentRoot /opt/kimai/public/ - - - Options FollowSymLinks - AllowOverride All - Require all granted - - - ErrorLog /var/log/apache2/error.log - CustomLog /var/log/apache2/access.log combined - - -EOF -$STD a2ensite kimai.conf -$STD a2dissite 000-default.conf -$STD systemctl reload apache2 -msg_ok "Created Service" - -msg_info "Setup Permissions" -chown -R :www-data /opt/* -chmod -R g+r /opt/* -chmod -R g+rw /opt/* -chown -R www-data:www-data /opt/* -chmod -R 777 /opt/* -msg_ok "Setup Permissions" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/lubelogger-install.sh b/install/arm/lubelogger-install.sh deleted file mode 100644 index 893e5c43..00000000 --- a/install/arm/lubelogger-install.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: kristocopani -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://lubelogger.com/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip" - -msg_info "Configuring LubeLogger" -cd /opt/lubelogger -chmod 700 /opt/lubelogger/CarCareTracker -cp /opt/lubelogger/appsettings.json /opt/lubelogger/appsettings_bak.json -jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json >/opt/lubelogger/appsettings.json -rm -rf /opt/lubelogger/appsettings_bak.json -msg_ok "Configured LubeLogger" - -msg_info "Creating Service" -cat </etc/systemd/system/lubelogger.service -[Unit] -Description=LubeLogger Daemon -After=network.target - -[Service] -User=root - -Type=simple -WorkingDirectory=/opt/lubelogger -ExecStart=/opt/lubelogger/CarCareTracker -TimeoutStopSec=20 -KillMode=process -Restart=on-failure - -[Install] -WantedBy=multi-user.target -EOF - -systemctl enable -q --now lubelogger -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/pihole-install.sh b/install/arm/pihole-install.sh deleted file mode 100644 index 24ef9d31..00000000 --- a/install/arm/pihole-install.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://pi-hole.net/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_warn "WARNING: This script will run an external installer from a third-party source (https://pi-hole.net/)." -msg_warn "The following code is NOT maintained or audited by our repository." -msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:" -msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.pi-hole.net" -echo -read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM -if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then - msg_error "Aborted by user. No changes have been made." - exit 10 -fi - -msg_info "Installing Dependencies" -$STD apt install -y ufw -msg_ok "Installed Dependencies" - -msg_info "Installing Pi-hole" -mkdir -p /etc/pihole -touch /etc/pihole/pihole.toml -$STD bash <(curl -fsSL https://install.pi-hole.net) --unattended -sed -i -E ' -/^\s*upstreams =/ s|=.*|= ["8.8.8.8", "8.8.4.4"]| -/^\s*interface =/ s|=.*|= "eth0"| -/^\s*queryLogging =/ s|=.*|= true| -/^\s*size =/ s|=.*|= 10000| -/^\s*active =/ s|=.*|= true| -/^\s*listeningMode =/ s|=.*|= "LOCAL"| -/^\s*port =/ s|=.*|= "80o,443os,[::]:80o,[::]:443os"| -/^\s*pwhash =/ s|=.*|= ""| - -# DHCP Disable -/^\s*\[dhcp\]/,/^\s*\[/{s/^\s*active = true/ active = false/} - -# NTP Disable -/^\s*\[ntp.ipv4\]/,/^\s*\[/{s/^\s*active = true/ active = false/} -/^\s*\[ntp.ipv6\]/,/^\s*\[/{s/^\s*active = true/ active = false/} -/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*active = true/ active = false/} -/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*interval = [0-9]+/ interval = 0/} -/^\s*\[ntp.sync.rtc\]/,/^\s*\[/{s/^\s*set = true/ set = false/} - -# set domainNeeded und expandHosts -/^\s*domainNeeded =/ s|=.*|= true| -/^\s*expandHosts =/ s|=.*|= true| -' /etc/pihole/pihole.toml - -cat </etc/dnsmasq.d/01-pihole.conf -server=8.8.8.8 -server=8.8.4.4 -EOF -$STD pihole-FTL --config ntp.sync.interval 0 -systemctl restart pihole-FTL.service -msg_ok "Installed Pi-hole" - -read -r -p "${TAB3}Would you like to add Unbound? " prompt -if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then - read -r -p "${TAB3}Unbound is configured as a recursive DNS server by default, would you like it to be configured as a forwarding DNS server (using DNS-over-TLS (DoT)) instead? " prompt - msg_info "Installing Unbound" - mkdir -p /etc/unbound/unbound.conf.d - cat </etc/unbound/unbound.conf.d/pi-hole.conf -server: - verbosity: 0 - interface: 127.0.0.1 - port: 5335 - do-ip6: no - do-ip4: yes - do-udp: yes - do-tcp: yes - num-threads: 1 - hide-identity: yes - hide-version: yes - harden-glue: yes - harden-dnssec-stripped: yes - harden-referral-path: yes - use-caps-for-id: no - harden-algo-downgrade: no - qname-minimisation: yes - aggressive-nsec: yes - rrset-roundrobin: yes - cache-min-ttl: 300 - cache-max-ttl: 14400 - msg-cache-slabs: 8 - rrset-cache-slabs: 8 - infra-cache-slabs: 8 - key-cache-slabs: 8 - serve-expired: yes - serve-expired-ttl: 3600 - edns-buffer-size: 1232 - prefetch: yes - prefetch-key: yes - target-fetch-policy: "3 2 1 1 1" - unwanted-reply-threshold: 10000000 - rrset-cache-size: 256m - msg-cache-size: 128m - so-rcvbuf: 1m - private-address: 192.168.0.0/16 - private-address: 169.254.0.0/16 - private-address: 172.16.0.0/12 - private-address: 10.0.0.0/8 - private-address: fd00::/8 - private-address: fe80::/10 -EOF - mkdir -p /etc/dnsmasq.d/ - cat </etc/dnsmasq.d/99-edns.conf -edns-packet-max=1232 -EOF - - if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then - cat <>/etc/unbound/unbound.conf.d/pi-hole.conf - tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt" -forward-zone: - name: "." - forward-tls-upstream: yes - forward-first: no - - forward-addr: 8.8.8.8@853#dns.google - forward-addr: 8.8.4.4@853#dns.google - forward-addr: 2001:4860:4860::8888@853#dns.google - forward-addr: 2001:4860:4860::8844@853#dns.google - - #forward-addr: 1.1.1.1@853#cloudflare-dns.com - #forward-addr: 1.0.0.1@853#cloudflare-dns.com - #forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com - #forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com - - #forward-addr: 9.9.9.9@853#dns.quad9.net - #forward-addr: 149.112.112.112@853#dns.quad9.net - #forward-addr: 2620:fe::fe@853#dns.quad9.net - #forward-addr: 2620:fe::9@853#dns.quad9.net -EOF - fi - $STD apt install -y unbound - cat </etc/dnsmasq.d/01-pihole.conf -server=127.0.0.1#5335 -server=8.8.8.8 -server=8.8.4.4 -EOF - - sed -i -E '/^\s*upstreams\s*=\s*\[/,/^\s*\]/c\ upstreams = [\n "127.0.0.1#5335",\n "8.8.4.4"\n ]' /etc/pihole/pihole.toml - systemctl restart unbound - systemctl restart pihole-FTL.service - msg_ok "Installed Unbound" -fi - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/rdtclient-install.sh b/install/arm/rdtclient-install.sh deleted file mode 100644 index 784107f3..00000000 --- a/install/arm/rdtclient-install.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/rogerfar/rdt-client - -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 unzip -msg_ok "Installed Dependencies" - -msg_info "Installing ASP.NET Core Runtime" -$STD apt-get install -y libc6 -$STD apt-get install -y libgcc1 -$STD apt-get install -y libgssapi-krb5-2 -$STD apt-get install -y libicu72 -$STD apt-get install -y liblttng-ust1 -$STD apt-get install -y libssl3 -$STD apt-get install -y libstdc++6 -$STD apt-get install -y zlib1g - -curl -SL -o dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/6f79d99b-dc38-4c44-a549-32329419bb9f/a411ec38fb374e3a4676647b236ba021/dotnet-sdk-9.0.100-linux-arm64.tar.gz -mkdir -p /usr/share/dotnet -$STD tar -zxf dotnet.tar.gz -C /usr/share/dotnet -$STD ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet -msg_ok "Installed ASP.NET Core Runtime" - -fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip" - -msg_info "Setting up rdtclient" -cd /opt/rdtc -mkdir -p data/{db,downloads} -sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json -msg_ok "Configured rdtclient" - -msg_info "Creating Service" -cat </etc/systemd/system/rdtc.service -[Unit] -Description=RdtClient Service - -[Service] -WorkingDirectory=/opt/rdtc -ExecStart=/usr/bin/dotnet RdtClient.Web.dll -SyslogIdentifier=RdtClient -User=root - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now rdtc -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/install/arm/vaultwarden-install.sh b/install/arm/vaultwarden-install.sh deleted file mode 100644 index a2c02db8..00000000 --- a/install/arm/vaultwarden-install.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 tteck -# Author: tteck (tteckster) -# License: MIT | https://github.com/asylumexp/Proxmox/raw/main/LICENSE -# Source: https://github.com/dani-garcia/vaultwarden - -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 \ - pkgconf \ - libssl-dev \ - libmariadb-dev-compat \ - libpq-dev \ - argon2 \ - ssl-cert -msg_ok "Installed Dependencies" - -setup_rust -fetch_and_deploy_gh_release "vaultwarden" "dani-garcia/vaultwarden" "tarball" "latest" "/tmp/vaultwarden-src" - -msg_info "Building Vaultwarden (Patience)" -cd /tmp/vaultwarden-src -VW_VERSION=$(get_latest_github_release "dani-garcia/vaultwarden") -export VW_VERSION -$STD cargo build --features "sqlite,mysql,postgresql" --release -msg_ok "Built Vaultwarden" - -msg_info "Setting up Vaultwarden" -$STD addgroup --system vaultwarden -$STD adduser --system --home /opt/vaultwarden --shell /usr/sbin/nologin --no-create-home --gecos 'vaultwarden' --ingroup vaultwarden --disabled-login --disabled-password vaultwarden -mkdir -p /opt/vaultwarden/{bin,data,web-vault} -cp target/release/vaultwarden /opt/vaultwarden/bin/ -cd ~ && rm -rf /tmp/vaultwarden-src -msg_ok "Set up Vaultwarden" - -fetch_and_deploy_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds" "prebuild" "latest" "/opt/vaultwarden/web-vault" "bw_web_*.tar.gz" - -msg_info "Configuring Vaultwarden" -cat </opt/vaultwarden/.env -ADMIN_TOKEN='' -ROCKET_ADDRESS=0.0.0.0 -ROCKET_TLS='{certs="/opt/vaultwarden/ssl-cert-snakeoil.pem",key="/opt/vaultwarden/ssl-cert-snakeoil.key"}' -DATA_FOLDER=/opt/vaultwarden/data -DATABASE_MAX_CONNS=10 -WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault -WEB_VAULT_ENABLED=true -EOF -mv /etc/ssl/certs/ssl-cert-snakeoil.pem /opt/vaultwarden/ -mv /etc/ssl/private/ssl-cert-snakeoil.key /opt/vaultwarden/ - -chown -R vaultwarden:vaultwarden /opt/vaultwarden/ -chown root:root /opt/vaultwarden/bin/vaultwarden -chmod +x /opt/vaultwarden/bin/vaultwarden -chown -R root:root /opt/vaultwarden/web-vault/ -chmod +r /opt/vaultwarden/.env -msg_ok "Configured Vaultwarden" - -msg_info "Creating Service" -cat </etc/systemd/system/vaultwarden.service -[Unit] -Description=Bitwarden Server (Powered by Vaultwarden) -Documentation=https://github.com/dani-garcia/vaultwarden -After=network.target - -[Service] -User=vaultwarden -Group=vaultwarden -EnvironmentFile=-/opt/vaultwarden/.env -ExecStart=/opt/vaultwarden/bin/vaultwarden -LimitNOFILE=65535 -LimitNPROC=4096 -PrivateTmp=true -PrivateDevices=true -ProtectHome=true -ProtectSystem=strict -DevicePolicy=closed -ProtectControlGroups=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -RestrictNamespaces=yes -RestrictRealtime=yes -MemoryDenyWriteExecute=yes -LockPersonality=yes -WorkingDirectory=/opt/vaultwarden -ReadWriteDirectories=/opt/vaultwarden/data -AmbientCapabilities=CAP_NET_BIND_SERVICE - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now vaultwarden -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/json/affine.json b/json/affine.json index 27846003..2c3252f0 100644 --- a/json/affine.json +++ b/json/affine.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3010, "documentation": "https://affine.pro/docs", "website": "https://affine.pro/", diff --git a/json/airflow.json b/json/airflow.json index 4c4a9b75..501a5809 100644 --- a/json/airflow.json +++ b/json/airflow.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://airflow.apache.org/docs/", "website": "https://airflow.apache.org/", diff --git a/json/akaunting.json b/json/akaunting.json index ff3e612b..4cf25f6d 100644 --- a/json/akaunting.json +++ b/json/akaunting.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://akaunting.com/hc/docs", "website": "https://akaunting.com/", diff --git a/json/aliasvault.json b/json/aliasvault.json index 0de1f40f..fe0d2168 100644 --- a/json/aliasvault.json +++ b/json/aliasvault.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 443, "documentation": "https://docs.aliasvault.net/", "website": "https://aliasvault.net/", diff --git a/json/allstarlink.json b/json/allstarlink.json index bb888931..1317bb2c 100644 --- a/json/allstarlink.json +++ b/json/allstarlink.json @@ -8,6 +8,7 @@ "type": "vm", "updateable": false, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://allstarlink.github.io/", "website": "https://www.allstarlink.org/", diff --git a/json/almalinux-10-vm.json b/json/almalinux-10-vm.json index bd63826d..e86b210b 100644 --- a/json/almalinux-10-vm.json +++ b/json/almalinux-10-vm.json @@ -8,6 +8,7 @@ "type": "vm", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://wiki.almalinux.org/", "website": "https://almalinux.org/", diff --git a/json/alpine-cinny.json b/json/alpine-cinny.json index ca2c5279..70cb8670 100644 --- a/json/alpine-cinny.json +++ b/json/alpine-cinny.json @@ -9,6 +9,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://github.com/cinnyapp/cinny", "website": "https://cinny.in/", diff --git a/json/alpine-ntfy.json b/json/alpine-ntfy.json index 0168c3ba..8daef184 100644 --- a/json/alpine-ntfy.json +++ b/json/alpine-ntfy.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.ntfy.sh/", "website": "https://ntfy.sh/", diff --git a/json/archlinux.json b/json/archlinux.json index d34fe530..8d47730e 100644 --- a/json/archlinux.json +++ b/json/archlinux.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://wiki.archlinux.org/", "website": "https://archlinux.org/", diff --git a/json/arm.json b/json/arm.json index 2af2c644..dc5a353e 100644 --- a/json/arm.json +++ b/json/arm.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": true, + "has_arm": false, "interface_port": 8080, "documentation": "https://github.com/automatic-ripping-machine/automatic-ripping-machine/wiki", "website": "https://github.com/automatic-ripping-machine/automatic-ripping-machine", diff --git a/json/arr-stack.json b/json/arr-stack.json index fa4978d4..69ce0dd9 100644 --- a/json/arr-stack.json +++ b/json/arr-stack.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3010, "documentation": "community-scripts/ProxmoxVED/blob/main/tools/arr-stack.sh", "website": "https://community-scripts.org", diff --git a/json/authentik.json b/json/authentik.json index f949fa80..064a2531 100644 --- a/json/authentik.json +++ b/json/authentik.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 9000, "documentation": "https://docs.goauthentik.io/", "website": "https://goauthentik.io/", diff --git a/json/baserow.json b/json/baserow.json index 91a369e1..4808ce6b 100644 --- a/json/baserow.json +++ b/json/baserow.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://baserow.io/docs/index", "website": "https://baserow.io/", diff --git a/json/bitfocus-companion.json b/json/bitfocus-companion.json index ed7390ea..ec7c59f6 100644 --- a/json/bitfocus-companion.json +++ b/json/bitfocus-companion.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8000, "documentation": "https://user.bitfocus.io/docs", "website": "https://bitfocus.io/companion", diff --git a/json/blinko.json b/json/blinko.json index b7b3a570..ee640461 100644 --- a/json/blinko.json +++ b/json/blinko.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 1111, "documentation": "https://docs.blinko.space/", "website": "https://blinko.space/", diff --git a/json/bunkerm.json b/json/bunkerm.json index 399b948f..90671f1f 100644 --- a/json/bunkerm.json +++ b/json/bunkerm.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 2000, "documentation": "https://bunkerai.dev/docs", "website": "https://bunkerai.dev/", diff --git a/json/caddymanager.json b/json/caddymanager.json index 0cd87e29..43393bce 100644 --- a/json/caddymanager.json +++ b/json/caddymanager.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://caddymanager.online/#/docs", "website": "https://caddymanager.online", diff --git a/json/certimate.json b/json/certimate.json index 8d941424..43e44de8 100644 --- a/json/certimate.json +++ b/json/certimate.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8090, "documentation": "https://docs.certimate.me/", "website": "https://certimate.me/", diff --git a/json/clickhouse.json b/json/clickhouse.json index 99a4f82e..4f5ae610 100644 --- a/json/clickhouse.json +++ b/json/clickhouse.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8123, "documentation": "https://clickhouse.com/docs/", "website": "https://clickhouse.com/", diff --git a/json/cliproxyapi.json b/json/cliproxyapi.json index bae6de3f..c8ee3fc5 100644 --- a/json/cliproxyapi.json +++ b/json/cliproxyapi.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8317, "documentation": "https://help.router-for.me/", "website": "https://github.com/router-for-me/CLIProxyAPI", diff --git a/json/colanode.json b/json/colanode.json index 0bad1334..77582c37 100644 --- a/json/colanode.json +++ b/json/colanode.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 4000, "documentation": "https://github.com/colanode/colanode/blob/main/hosting/docker", "website": "https://colanode.com/", diff --git a/json/cyberchef.json b/json/cyberchef.json index ac6b0a2f..589a1384 100644 --- a/json/cyberchef.json +++ b/json/cyberchef.json @@ -9,6 +9,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://github.com/gchq/CyberChef", "website": "https://gchq.github.io/CyberChef", diff --git a/json/ddclient.json b/json/ddclient.json index f5a0e8d7..aef3b05e 100644 --- a/json/ddclient.json +++ b/json/ddclient.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://ddclient.net/", "website": "https://ddclient.net/", diff --git a/json/ddns-updater.json b/json/ddns-updater.json index 3471485a..e1011d22 100644 --- a/json/ddns-updater.json +++ b/json/ddns-updater.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8000, "documentation": "https://github.com/qdm12/ddns-updater/wiki", "website": "https://github.com/qdm12/ddns-updater", diff --git a/json/degoog.json b/json/degoog.json index e23cd9fb..81114189 100644 --- a/json/degoog.json +++ b/json/degoog.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 4444, "documentation": "https://fccview.github.io/degoog/", "website": "https://github.com/fccview/degoog", diff --git a/json/dependency-check.json b/json/dependency-check.json index e258eb8a..d977beef 100644 --- a/json/dependency-check.json +++ b/json/dependency-check.json @@ -8,6 +8,7 @@ "type": "pve", "updateable": false, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": null, "website": null, diff --git a/json/discourse.json b/json/discourse.json index d4302989..fcfa45ba 100644 --- a/json/discourse.json +++ b/json/discourse.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://www.discourse.org/", "website": "https://www.discourse.org/", diff --git a/json/docuseal.json b/json/docuseal.json index 33c5cf41..24c3dc90 100644 --- a/json/docuseal.json +++ b/json/docuseal.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://www.docuseal.com/docs", "website": "https://www.docuseal.com/", diff --git a/json/dynacat.json b/json/dynacat.json index 59736859..62791894 100644 --- a/json/dynacat.json +++ b/json/dynacat.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://dynacat.artur.zone/", "website": "https://github.com/Panonim/dynacat", diff --git a/json/edit-mind.json b/json/edit-mind.json index 94f20b4d..50a9f6f6 100644 --- a/json/edit-mind.json +++ b/json/edit-mind.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3745, "documentation": "https://github.com/IliasHad/edit-mind", "website": "https://github.com/IliasHad/edit-mind", diff --git a/json/ente.json b/json/ente.json index f0506e2d..18d8ce6b 100644 --- a/json/ente.json +++ b/json/ente.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": false, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/ente-io/ente", "website": "https://ente.io/", diff --git a/json/erpnext.json b/json/erpnext.json index d2612fb4..da09ad31 100644 --- a/json/erpnext.json +++ b/json/erpnext.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.erpnext.com/", "website": "https://erpnext.com/", diff --git a/json/espconnect.json b/json/espconnect.json index 48c7abef..73a2a4da 100644 --- a/json/espconnect.json +++ b/json/espconnect.json @@ -9,6 +9,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 443, "documentation": "https://github.com/thelastoutpostworkshop/ESPConnect", "website": "https://github.com/thelastoutpostworkshop/ESPConnect", diff --git a/json/etherpad.json b/json/etherpad.json index e3a73321..091cd561 100644 --- a/json/etherpad.json +++ b/json/etherpad.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 9001, "documentation": "https://etherpad.org/doc", "website": "https://etherpad.org", diff --git a/json/excalidash.json b/json/excalidash.json index b888cc19..1786a4e0 100644 --- a/json/excalidash.json +++ b/json/excalidash.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 6767, "documentation": "https://github.com/ZimengXiong/ExcaliDash/blob/main/README.md", "website": "https://github.com/ZimengXiong/ExcaliDash", diff --git a/json/flame.json b/json/flame.json index d71c07c0..78e9435a 100644 --- a/json/flame.json +++ b/json/flame.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 5005, "documentation": "https://github.com/pawelmalak/flame/wiki", "website": "https://github.com/pawelmalak/flame", diff --git a/json/fleet.json b/json/fleet.json index 423cd14f..d60654d5 100644 --- a/json/fleet.json +++ b/json/fleet.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://fleetdm.com/docs", "website": "https://fleetdm.com/", diff --git a/json/forgejo-runner.json b/json/forgejo-runner.json index f713685b..331d17a4 100644 --- a/json/forgejo-runner.json +++ b/json/forgejo-runner.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://forgejo.org/docs/latest/admin/actions/runner-installation/", "website": "https://forgejo.org/docs/latest/admin/actions/runner-installation/", diff --git a/json/garmin-grafana.json b/json/garmin-grafana.json index 5e7e19af..385c90d5 100644 --- a/json/garmin-grafana.json +++ b/json/garmin-grafana.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/arpanghosh8453/garmin-grafana", "website": "https://github.com/arpanghosh8453/garmin-grafana", diff --git a/json/godoxy.json b/json/godoxy.json index 46d634be..7bbc57d0 100644 --- a/json/godoxy.json +++ b/json/godoxy.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://docs.godoxy.dev", "website": "https://github.com/yusing/godoxy", diff --git a/json/hermesagent.json b/json/hermesagent.json index 123151a7..6e5ccb1d 100644 --- a/json/hermesagent.json +++ b/json/hermesagent.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://hermes-agent.nousresearch.com/docs", "website": "https://hermes-agent.nousresearch.com", diff --git a/json/invidious.json b/json/invidious.json index 17c914a3..72d0bb21 100644 --- a/json/invidious.json +++ b/json/invidious.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https:/docs.invidious.io", "website": "https://invidious.io", diff --git a/json/invoiceshelf.json b/json/invoiceshelf.json index c9cb022a..1a2d101b 100644 --- a/json/invoiceshelf.json +++ b/json/invoiceshelf.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.invoiceshelf.com/", "website": "https://invoiceshelf.com/", diff --git a/json/jitsi.json b/json/jitsi.json index 2987654f..03f03749 100644 --- a/json/jitsi.json +++ b/json/jitsi.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 443, "documentation": "https://jitsi.github.io/handbook/", "website": "https://jitsi.org/", diff --git a/json/kan.json b/json/kan.json index 67543e1a..ea8e64a0 100644 --- a/json/kan.json +++ b/json/kan.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/kanbn/kan#readme", "website": "https://kan.bn/", diff --git a/json/labca.json b/json/labca.json index 819fe43b..57393ed9 100644 --- a/json/labca.json +++ b/json/labca.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/hakwerk/labca", "website": "https://github.com/hakwerk/labca", diff --git a/json/librechat.json b/json/librechat.json index 5b1c57b9..f2229271 100644 --- a/json/librechat.json +++ b/json/librechat.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3080, "documentation": "https://www.librechat.ai/docs", "website": "https://www.librechat.ai/", diff --git a/json/lobehub.json b/json/lobehub.json index e6bb81b2..16ad5ca8 100644 --- a/json/lobehub.json +++ b/json/lobehub.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3210, "documentation": "https://lobehub.com/docs", "website": "https://lobehub.com/", diff --git a/json/localagi.json b/json/localagi.json index a31cebbc..eda9c253 100644 --- a/json/localagi.json +++ b/json/localagi.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/mudler/LocalAGI#installation-options", "website": "https://github.com/mudler/LocalAGI", diff --git a/json/lychee.json b/json/lychee.json index 540bc497..3011be70 100644 --- a/json/lychee.json +++ b/json/lychee.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://lycheeorg.dev/docs", "website": "https://lycheeorg.github.io/", diff --git a/json/matomo.json b/json/matomo.json index 715c0944..34b5612f 100644 --- a/json/matomo.json +++ b/json/matomo.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://matomo.org/docs/", "website": "https://matomo.org/", diff --git a/json/matterjs-server.json b/json/matterjs-server.json index 3f770918..2dea603f 100644 --- a/json/matterjs-server.json +++ b/json/matterjs-server.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 5580, "documentation": "https://github.com/matter-js/matterjs-server", "website": "https://github.com/matter-js/matterjs-server", diff --git a/json/nagios.json b/json/nagios.json index 771f7491..4993d2bb 100644 --- a/json/nagios.json +++ b/json/nagios.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/quickstart.html", "website": "https://www.nagios.org/projects/nagios-core/", diff --git a/json/neko.json b/json/neko.json index b251dd86..f0a5f686 100644 --- a/json/neko.json +++ b/json/neko.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://neko.m1k1o.net/docs/v3/configuration", "website": "https://neko.m1k1o.net/", diff --git a/json/netbird-server.json b/json/netbird-server.json index 8f117832..41b9a07b 100644 --- a/json/netbird-server.json +++ b/json/netbird-server.json @@ -8,6 +8,7 @@ "type": "vm", "updateable": false, "privileged": false, + "has_arm": false, "interface_port": 443, "documentation": "https://docs.netbird.io/selfhosted/selfhosted-quickstart", "website": "https://netbird.io/", diff --git a/json/netbird.json b/json/netbird.json index b511e623..9909c278 100644 --- a/json/netbird.json +++ b/json/netbird.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": true, + "has_arm": false, "interface_port": null, "documentation": "https://docs.netbird.io/", "website": "https://netbird.io/", diff --git a/json/nezha.json b/json/nezha.json index 48d4c84b..dfbe358d 100644 --- a/json/nezha.json +++ b/json/nezha.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8008, "documentation": "https://nezha.wiki/en_US/guide/dashboard.html", "website": "https://nezha.wiki/en_US/", diff --git a/json/oxicloud.json b/json/oxicloud.json index 1f718b19..75815dd8 100644 --- a/json/oxicloud.json +++ b/json/oxicloud.json @@ -9,6 +9,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8086, "documentation": "https://github.com/DioCrafts/OxiCloud/tree/main/doc", "website": "https://github.com/DioCrafts/OxiCloud", diff --git a/json/paperclip.json b/json/paperclip.json index b60c621d..49ca3a7c 100644 --- a/json/paperclip.json +++ b/json/paperclip.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3100, "documentation": "https://docs.paperclip.ing/", "website": "https://paperclip.ing/", diff --git a/json/papermark.json b/json/papermark.json index d215aebe..fa05cfe3 100644 --- a/json/papermark.json +++ b/json/papermark.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://www.papermark.com/docs", "website": "https://www.papermark.com/", diff --git a/json/pixelfed.json b/json/pixelfed.json index 46341388..86e7c21f 100644 --- a/json/pixelfed.json +++ b/json/pixelfed.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.pixelfed.org/", "website": "https://pixelfed.org/", diff --git a/json/plane.json b/json/plane.json index f4578d24..a775c47c 100644 --- a/json/plane.json +++ b/json/plane.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://developers.plane.so/self-hosting/overview", "website": "https://plane.so", diff --git a/json/postiz.json b/json/postiz.json index 95bb842c..b4552acd 100644 --- a/json/postiz.json +++ b/json/postiz.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.postiz.com/", "website": "https://postiz.com/", diff --git a/json/puter.json b/json/puter.json index 9028c933..c1424669 100644 --- a/json/puter.json +++ b/json/puter.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 4100, "documentation": "https://docs.puter.com/", "website": "https://puter.com/", diff --git a/json/rss-bridge.json b/json/rss-bridge.json index c8a78b90..b463ca27 100644 --- a/json/rss-bridge.json +++ b/json/rss-bridge.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://rss-bridge.github.io/rss-bridge/", "website": "https://rss-bridge.org/", diff --git a/json/shiori.json b/json/shiori.json index b571945a..1b94114b 100644 --- a/json/shiori.json +++ b/json/shiori.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://github.com/go-shiori/shiori/tree/master/docs", "website": "https://github.com/go-shiori/shiori", diff --git a/json/shlink.json b/json/shlink.json index 6c9384d3..1506ca04 100644 --- a/json/shlink.json +++ b/json/shlink.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://shlink.io/documentation/", "website": "https://shlink.io/", diff --git a/json/simplelogin.json b/json/simplelogin.json index aad8d5fe..47fe8db0 100644 --- a/json/simplelogin.json +++ b/json/simplelogin.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://github.com/simple-login/app/blob/master/docs/", "website": "https://simplelogin.io/", diff --git a/json/skylite-ux.json b/json/skylite-ux.json index 1768ef83..d8b9d0c6 100644 --- a/json/skylite-ux.json +++ b/json/skylite-ux.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/Wetzel402/Skylite-UX", "website": "https://github.com/Wetzel402/Skylite-UX", diff --git a/json/slink.json b/json/slink.json index 337012a9..d3387630 100644 --- a/json/slink.json +++ b/json/slink.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://slink.pages.dev", "website": "https://github.com/andrii-kryvoviaz/slink", diff --git a/json/solidtime.json b/json/solidtime.json index fa09ee82..36bd075f 100644 --- a/json/solidtime.json +++ b/json/solidtime.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://docs.solidtime.io/", "website": "https://www.solidtime.io/", diff --git a/json/soulsync.json b/json/soulsync.json index 077505ba..46faa7d7 100644 --- a/json/soulsync.json +++ b/json/soulsync.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8008, "documentation": "https://github.com/Nezreka/SoulSync#readme", "website": "https://github.com/Nezreka/SoulSync", diff --git a/json/spliit.json b/json/spliit.json index 62500854..b0ab483a 100644 --- a/json/spliit.json +++ b/json/spliit.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://github.com/spliit-app/spliit#readme", "website": "https://spliit.app/", diff --git a/json/squid.json b/json/squid.json index 88a3aa82..5805b5ba 100644 --- a/json/squid.json +++ b/json/squid.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3128, "documentation": "https://wiki.squid-cache.org/SquidFaq", "website": "https://www.squid-cache.org/", diff --git a/json/stoatchat.json b/json/stoatchat.json index 412117e8..4fc2e9c9 100644 --- a/json/stoatchat.json +++ b/json/stoatchat.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://github.com/stoatchat/self-hosted", "website": "https://stoat.chat", diff --git a/json/storyteller.json b/json/storyteller.json index a5ad9fe7..351b9a37 100644 --- a/json/storyteller.json +++ b/json/storyteller.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8001, "documentation": "https://storyteller-platform.dev/docs/welcome", "website": "https://storyteller-platform.dev/", diff --git a/json/surrealdb.json b/json/surrealdb.json index 349234c9..9ba9a1a6 100644 --- a/json/surrealdb.json +++ b/json/surrealdb.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8000, "documentation": "https://surrealdb.com/docs", "website": "https://surrealdb.com/", diff --git a/json/teable.json b/json/teable.json index 1045c0e7..d878672d 100644 --- a/json/teable.json +++ b/json/teable.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://help.teable.io/", "website": "https://teable.io/", diff --git a/json/tolgee.json b/json/tolgee.json index 8f29d86a..1c8d6b67 100644 --- a/json/tolgee.json +++ b/json/tolgee.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://docs.tolgee.io/platform/self_hosting", "website": "https://tolgee.io/", diff --git a/json/tor-snowflake.json b/json/tor-snowflake.json index 680f31a0..da68fe7e 100644 --- a/json/tor-snowflake.json +++ b/json/tor-snowflake.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://community.torproject.org/relay/setup/snowflake/standalone/", "website": "https://snowflake.torproject.org/", diff --git a/json/tubearchivist.json b/json/tubearchivist.json index a23c6c08..944a745a 100644 --- a/json/tubearchivist.json +++ b/json/tubearchivist.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8000, "documentation": "https://docs.tubearchivist.com/", "website": "https://github.com/tubearchivist/tubearchivist", diff --git a/json/twenty.json b/json/twenty.json index be019bdd..085309e0 100644 --- a/json/twenty.json +++ b/json/twenty.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 3000, "documentation": "https://docs.twenty.com/", "website": "https://twenty.com/", diff --git a/json/unifi-os-server-vm.json b/json/unifi-os-server-vm.json index 8b4b1953..ab9a328c 100644 --- a/json/unifi-os-server-vm.json +++ b/json/unifi-os-server-vm.json @@ -8,6 +8,7 @@ "type": "vm", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": "https://help.ui.com/hc/en-us", "website": "https://www.ui.com/", diff --git a/json/update-apps.json b/json/update-apps.json index 0c559ce3..1e9ba365 100644 --- a/json/update-apps.json +++ b/json/update-apps.json @@ -8,6 +8,7 @@ "type": "pve", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": null, "documentation": null, "website": null, diff --git a/json/webtrees.json b/json/webtrees.json index f77d15a5..f50ea8e6 100644 --- a/json/webtrees.json +++ b/json/webtrees.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://webtrees.net/install/", "website": "https://webtrees.net/", diff --git a/json/xyops.json b/json/xyops.json index afc6d490..5bce92dd 100644 --- a/json/xyops.json +++ b/json/xyops.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 5522, "documentation": "https://github.com/pixlcore/xyops/tree/main/docs", "website": "https://github.com/pixlcore/xyops", diff --git a/json/yourls.json b/json/yourls.json index ee9db90d..96bcec69 100644 --- a/json/yourls.json +++ b/json/yourls.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 80, "documentation": "https://yourls.org/", "website": "https://yourls.org/", diff --git a/json/zitadel.json b/json/zitadel.json index b54fe479..67204e53 100644 --- a/json/zitadel.json +++ b/json/zitadel.json @@ -8,6 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, + "has_arm": false, "interface_port": 8080, "documentation": "https://zitadel.com/docs/guides/overview", "website": "https://zitadel.com",