Compare commits

..

1 Commits

Author SHA1 Message Date
CanbiZ
9c59abf838 Update scripts to use Debian 13 and improve update logic
Bump default container OS version from Debian 12 to 13 across multiple LXC setup scripts. Refactor update_script functions for consistency, improve messaging, and standardize apt usage. Update Kimai install and update scripts to use setup_php, setup_composer, and fetch_and_deploy_gh_release helpers, and switch from MySQL to MariaDB. Update Kometa to use Python 3.13. Minor improvements to backup, cleanup, and service management steps in several scripts.
2025-10-23 16:28:01 +02:00
126 changed files with 868 additions and 3187 deletions

View File

@@ -10,125 +10,12 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-10-30
### 🆕 New Scripts
- Livebook ([#8739](https://github.com/community-scripts/ProxmoxVE/pull/8739))
- Reitti ([#8736](https://github.com/community-scripts/ProxmoxVE/pull/8736))
- BentoPDF ([#8735](https://github.com/community-scripts/ProxmoxVE/pull/8735))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Add explicit exit calls to update_script functions [@MickLesk](https://github.com/MickLesk) ([#8752](https://github.com/community-scripts/ProxmoxVE/pull/8752))
- kimai: Set global SQL mode to empty in install script [@MickLesk](https://github.com/MickLesk) ([#8747](https://github.com/community-scripts/ProxmoxVE/pull/8747))
- #### ✨ New Features
- core: add function cleanup_lxc [@MickLesk](https://github.com/MickLesk) ([#8749](https://github.com/community-scripts/ProxmoxVE/pull/8749))
- Asterisk: add interactive version selection to installer [@MickLesk](https://github.com/MickLesk) ([#8726](https://github.com/community-scripts/ProxmoxVE/pull/8726))
### 🌐 Website
- #### 📝 Script Information
- Cronicle: Update default credentials [@tremor021](https://github.com/tremor021) ([#8720](https://github.com/community-scripts/ProxmoxVE/pull/8720))
## 2025-10-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Docker-VM: add workaround for libguestfs issue on Proxmox VE 9+ [@MickLesk](https://github.com/MickLesk) ([#8722](https://github.com/community-scripts/ProxmoxVE/pull/8722))
- Dispatcharr: add folders in installer / add more build ressources [@MickLesk](https://github.com/MickLesk) ([#8708](https://github.com/community-scripts/ProxmoxVE/pull/8708))
- LibreTranslate: bump torch version [@MickLesk](https://github.com/MickLesk) ([#8710](https://github.com/community-scripts/ProxmoxVE/pull/8710))
- #### ✨ New Features
- Archivebox: add Chromium and Node modules [@MickLesk](https://github.com/MickLesk) ([#8725](https://github.com/community-scripts/ProxmoxVE/pull/8725))
- #### 🔧 Refactor
- tracktor: refactor envfile [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8711](https://github.com/community-scripts/ProxmoxVE/pull/8711))
- Kimai / Ghost / ManageMyDamnLife: Switch to MariaDB [@MickLesk](https://github.com/MickLesk) ([#8712](https://github.com/community-scripts/ProxmoxVE/pull/8712))
## 2025-10-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update alpine-komodo.sh fixing missing pull images command [@glopes](https://github.com/glopes) ([#8689](https://github.com/community-scripts/ProxmoxVE/pull/8689))
- #### ✨ New Features
- Update SABnzbd. Include par2cmdline-turbo [@burgerga](https://github.com/burgerga) ([#8648](https://github.com/community-scripts/ProxmoxVE/pull/8648))
- jotty: Add more ENV VARS (disabled) [@vhsdream](https://github.com/vhsdream) ([#8688](https://github.com/community-scripts/ProxmoxVE/pull/8688))
- Bump bazarr to Debian 13 [@burgerga](https://github.com/burgerga) ([#8677](https://github.com/community-scripts/ProxmoxVE/pull/8677))
- Update flaresolverr to Debian 13 [@burgerga](https://github.com/burgerga) ([#8672](https://github.com/community-scripts/ProxmoxVE/pull/8672))
## 2025-10-27
### 🆕 New Scripts
- Dispatcharr ([#8658](https://github.com/community-scripts/ProxmoxVE/pull/8658))
- Garage | Alpine-Garage ([#8656](https://github.com/community-scripts/ProxmoxVE/pull/8656))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Add typescript and esbuild to browserless setup [@MickLesk](https://github.com/MickLesk) ([#8666](https://github.com/community-scripts/ProxmoxVE/pull/8666))
- jellyfin: fix: intel deps [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8657](https://github.com/community-scripts/ProxmoxVE/pull/8657))
## 2025-10-26
### 🆕 New Scripts
- ComfyUI ([#8633](https://github.com/community-scripts/ProxmoxVE/pull/8633))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- PiHole: Bump to Debian 12 [@MickLesk](https://github.com/MickLesk) ([#8649](https://github.com/community-scripts/ProxmoxVE/pull/8649))
- #### 🔧 Refactor
- Refactor: Mylar3 [@tremor021](https://github.com/tremor021) ([#8642](https://github.com/community-scripts/ProxmoxVE/pull/8642))
## 2025-10-25
### 🆕 New Scripts
- PatchMon ([#8632](https://github.com/community-scripts/ProxmoxVE/pull/8632))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- UrBackup Server: Fix install going interactive [@tremor021](https://github.com/tremor021) ([#8622](https://github.com/community-scripts/ProxmoxVE/pull/8622))
## 2025-10-24
### 🌐 Website
- #### 📝 Script Information
- Fix config path for BunkerWeb [@Nonolanlan1007](https://github.com/Nonolanlan1007) ([#8618](https://github.com/community-scripts/ProxmoxVE/pull/8618))
- Update logo URL in guardian.json [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8615](https://github.com/community-scripts/ProxmoxVE/pull/8615))
## 2025-10-23
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Radicale: Update dependencies [@ilofX](https://github.com/ilofX) ([#8603](https://github.com/community-scripts/ProxmoxVE/pull/8603))
- Various Downgrades to Debian 12 (MySQL / OMW / Technitium) [@MickLesk](https://github.com/MickLesk) ([#8595](https://github.com/community-scripts/ProxmoxVE/pull/8595))
- MeTube: Fix inserting path into .bashrc [@tremor021](https://github.com/tremor021) ([#8589](https://github.com/community-scripts/ProxmoxVE/pull/8589))
- #### 🔧 Refactor

View File

@@ -32,6 +32,7 @@ function update_script() {
msg_info "Restarting AdGuard Home"
$STD rc-service adguardhome restart
msg_ok "Restarted AdGuard Home"
exit 0
}

View File

@@ -75,6 +75,7 @@ function update_script() {
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}

View File

@@ -32,7 +32,7 @@ function update_script() {
msg_info "Restarting Caddy"
rc-service caddy restart
msg_ok "Restarted Caddy"
exit 0
exit
}
start

View File

@@ -41,7 +41,6 @@ function update_script() {
;;
esac
done
exit 0
}
start

View File

@@ -31,6 +31,7 @@ function update_script() {
msg_info "Restarting Forgejo"
$STD rc-service forgejo restart
msg_ok "Restarted Forgejo"
exit 0
}

View File

@@ -1,63 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
APP="Alpine-Garage"
var_tags="${var_tags:-alpine;object-storage}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-5}"
var_os="${var_os:-alpine}"
var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
if [[ ! -f /usr/local/bin/garage ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
GITEA_RELEASE=$(curl -fsSL https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
if [[ "${GITEA_RELEASE}" != "$(cat ~/.garage 2>/dev/null)" ]] || [[ ! -f ~/.garage ]]; then
msg_info "Stopping Service"
rc-service garage stop || true
msg_ok "Stopped Service"
msg_info "Backing Up Data"
cp /usr/local/bin/garage /usr/local/bin/garage.old 2>/dev/null || true
cp /etc/garage.toml /etc/garage.toml.bak 2>/dev/null || true
msg_ok "Backed Up Data"
msg_info "Updating Garage"
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
echo "${GITEA_RELEASE}" >~/.garage
msg_ok "Updated Garage"
msg_info "Starting Service"
rc-service garage start || rc-service garage restart
msg_ok "Started Service"
msg_ok "Update Successfully!"
else
msg_ok "No update required. Garage is already at ${GITEA_RELEASE}"
fi
exit 0
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -48,6 +48,7 @@ function update_script() {
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}

View File

@@ -32,7 +32,6 @@ function update_script() {
msg_info "Restarting Gitea"
rc-service gitea restart
msg_ok "Restarted Gitea"
exit 0
}
start

View File

@@ -54,7 +54,6 @@ function update_script() {
;;
esac
done
exit 0
}
start

View File

@@ -41,6 +41,7 @@ function update_script() {
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}

View File

@@ -52,10 +52,9 @@ function update_script() {
mv "$BACKUP_FILE" "$COMPOSE_FILE"
exit 1
fi
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
msg_ok "Updated ${APP}"
exit 0
exit
}
start

View File

@@ -31,6 +31,7 @@ function update_script() {
msg_info "Restarting MariaDB"
$STD rc-service mariadb restart
msg_ok "Restarted MariaDB"
exit 0
}

View File

@@ -50,7 +50,6 @@ function update_script() {
;;
esac
done
exit 0
}
start

View File

@@ -31,6 +31,7 @@ function update_script() {
msg_info "Updating Node-RED"
$STD npm install -g --unsafe-perm node-red
msg_ok "Updated Node-RED"
exit 0
}

View File

@@ -31,6 +31,7 @@ function update_script() {
msg_info "Restarting PostgreSQL"
$STD rc-service postgresql restart
msg_ok "Restarted PostgreSQL"
exit 0
}

View File

@@ -31,6 +31,7 @@ function update_script() {
msg_info "Restarting Prometheus"
$STD rc-service prometheus restart
msg_ok "Restarted Prometheus"
exit 0
}

View File

@@ -38,6 +38,7 @@ function update_script() {
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}

View File

@@ -41,8 +41,9 @@ function update_script() {
msg_info "Starting Service"
$STD rc-service redlib start
msg_ok "Started Service"
msg_ok "Update Successful"
exit 0
exit
}
start

View File

@@ -31,7 +31,8 @@ function update_script() {
msg_info "Restarting Syncthing"
$STD rc-service syncthing restart
msg_ok "Restarted Syncthing"
exit 0
exit 1
}
start

View File

@@ -44,6 +44,7 @@ function update_script() {
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}

View File

@@ -28,7 +28,7 @@ function update_script() {
msg_info "Upgrading traefik from edge"
$STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
msg_ok "Upgraded traefik"
exit 0
exit
}
start

View File

@@ -31,7 +31,8 @@ function update_script() {
msg_info "Restarting Transmission"
$STD rc-service transmission-daemon restart
msg_ok "Restarted Transmission"
exit 0
exit 1
}
start

View File

@@ -36,6 +36,7 @@ function update_script() {
$STD ./wgd.sh start
msg_ok "WGDashboard updated"
fi
exit 0
}

View File

@@ -28,18 +28,12 @@ function update_script() {
exit
fi
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
NODE_VERSION="22" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
if ! dpkg -l | grep -q "^ii chromium "; then
msg_info "Installing System Dependencies"
$STD apt-get install -y chromium
msg_ok "Installed System Dependencies"
fi
msg_info "Stopping Service"
msg_info "Stopping ArchiveBox"
systemctl stop archivebox
msg_ok "Stopped Service"
msg_ok "Stopped ArchiveBox"
msg_info "Upgrading Playwright"
$STD uv pip install playwright --system
@@ -52,10 +46,11 @@ function update_script() {
sudo -u archivebox archivebox init
msg_ok "Updated ArchiveBox"
msg_info "Starting Service"
msg_info "Starting ArchiveBox"
systemctl start archivebox
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Started ArchiveBox"
msg_ok "Updated Successfully"
exit
}

View File

@@ -11,7 +11,7 @@ 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_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -28,28 +28,15 @@ function update_script() {
exit
fi
if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
msg_info "Stopping Service"
systemctl stop bazarr
msg_ok "Stopped Service"
PYTHON_VERSION="3.12" setup_uv
PYTHON_VERSION="3.13" 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/
if [[ ! -d /opt/bazarr/venv/ ]]; then
$STD uv venv /opt/bazarr/venv --python 3.12
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
$STD uv pip install -r /opt/bazarr/requirements.txt --system
msg_ok "Setup Bazarr"
msg_info "Starting Service"
systemctl start bazarr
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -1,62 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/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:-2048}"
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}"

View File

@@ -54,9 +54,8 @@ function update_script() {
msg_error "PLEASE MAKE A BACKUP FIRST!"
exit
fi
msg_ok "Updated Successfully!"
msg_ok "Updated Successfully"
fi
exit
}
start

View File

@@ -1,42 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: jdacode
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/comfyanonymous/ComfyUI
APP="ComfyUI"
var_tags="${var_tags:-ai}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-25}"
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 /opt/${APP} ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "To update use the ${APP} Manager."
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}:8188${CL}"

View File

@@ -28,7 +28,6 @@ function update_script() {
exit
fi
msg_ok "${APP} updates itself automatically!"
exit
}
start

View File

@@ -62,6 +62,7 @@ function update_script() {
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
$STD /opt/cronicle/bin/control.sh start
msg_ok "Installed Cronicle Worker"
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
exit
fi

View File

@@ -1,136 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: ekke85 | MickLesk
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Dispatcharr/Dispatcharr
APP="Dispatcharr"
var_tags="${var_tags:-media;arr}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d "/opt/dispatcharr" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "Dispatcharr" "Dispatcharr/Dispatcharr"; then
msg_info "Stopping Services"
systemctl stop dispatcharr-celery
systemctl stop dispatcharr-celerybeat
systemctl stop dispatcharr-daphne
systemctl stop dispatcharr
msg_ok "Stopped Services"
msg_info "Creating Backup"
BACKUP_FILE="/opt/dispatcharr_backup_$(date +%F_%H-%M-%S).tar.gz"
if [[ -f /opt/dispatcharr/.env ]]; then
cp /opt/dispatcharr/.env /tmp/dispatcharr.env.backup
fi
if [[ -f /opt/dispatcharr/start-gunicorn.sh ]]; then
cp /opt/dispatcharr/start-gunicorn.sh /tmp/start-gunicorn.sh.backup
fi
if [[ -f /opt/dispatcharr/start-celery.sh ]]; then
cp /opt/dispatcharr/start-celery.sh /tmp/start-celery.sh.backup
fi
if [[ -f /opt/dispatcharr/start-celerybeat.sh ]]; then
cp /opt/dispatcharr/start-celerybeat.sh /tmp/start-celerybeat.sh.backup
fi
if [[ -f /opt/dispatcharr/start-daphne.sh ]]; then
cp /opt/dispatcharr/start-daphne.sh /tmp/start-daphne.sh.backup
fi
if [[ -f /opt/dispatcharr/.env ]]; then
set -o allexport
source /opt/dispatcharr/.env
set +o allexport
if [[ -n "$POSTGRES_DB" ]] && [[ -n "$POSTGRES_USER" ]] && [[ -n "$POSTGRES_PASSWORD" ]]; then
PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U $POSTGRES_USER -h ${POSTGRES_HOST:-localhost} $POSTGRES_DB >/tmp/dispatcharr_db_$(date +%F).sql
msg_info "Database backup created"
fi
fi
$STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql
msg_ok "Backup created: $BACKUP_FILE"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr"
msg_info "Updating Dispatcharr Backend"
if [[ -f /tmp/dispatcharr.env.backup ]]; then
mv /tmp/dispatcharr.env.backup /opt/dispatcharr/.env
fi
if [[ -f /tmp/start-gunicorn.sh.backup ]]; then
mv /tmp/start-gunicorn.sh.backup /opt/dispatcharr/start-gunicorn.sh
fi
if [[ -f /tmp/start-celery.sh.backup ]]; then
mv /tmp/start-celery.sh.backup /opt/dispatcharr/start-celery.sh
fi
if [[ -f /tmp/start-celerybeat.sh.backup ]]; then
mv /tmp/start-celerybeat.sh.backup /opt/dispatcharr/start-celerybeat.sh
fi
if [[ -f /tmp/start-daphne.sh.backup ]]; then
mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh
fi
cd /opt/dispatcharr
rm -rf .venv
$STD uv venv
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
$STD uv pip install gunicorn gevent celery redis daphne
msg_ok "Updated Dispatcharr Backend"
msg_info "Building Frontend"
cd /opt/dispatcharr/frontend
$STD npm install --legacy-peer-deps
$STD npm run build
msg_ok "Built Frontend"
msg_info "Running Django Migrations"
cd /opt/dispatcharr
if [[ -f .env ]]; then
set -o allexport
source .env
set +o allexport
fi
$STD uv run python manage.py migrate --noinput
$STD uv run python manage.py collectstatic --noinput
msg_ok "Migrations Complete"
msg_info "Starting Services"
systemctl start dispatcharr
systemctl start dispatcharr-celery
systemctl start dispatcharr-celerybeat
systemctl start dispatcharr-daphne
msg_ok "Started Services"
msg_info "Cleaning up"
rm -f /tmp/dispatcharr_db_*.sql
msg_ok "Cleanup completed"
msg_ok "Update Successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -28,18 +28,13 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
msg_error "Wrong Debian version detected!"
msg_error "You must upgrade your LXC to Debian Trixie before updating."
exit
fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.3.25"; then
msg_info "Stopping service"
systemctl stop flaresolverr
msg_ok "Stopped service"
rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.3.25" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Starting service"
systemctl start flaresolverr

View File

@@ -20,24 +20,23 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/freshrss ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/freshrss ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [ ! -x /opt/freshrss/cli/sensitive-log.sh ]; then
msg_info "Fixing wrong permissions"
chmod +x /opt/freshrss/cli/sensitive-log.sh
systemctl restart apache2
msg_ok "Fixed wrong permissions"
exit
else
msg_error "FreshRSS should be updated via the user interface."
exit
fi
if [ ! -x /opt/freshrss/cli/sensitive-log.sh ]; then
msg_info "Fixing wrong permissions"
chmod +x /opt/freshrss/cli/sensitive-log.sh
systemctl restart apache2
msg_ok "Fixed wrong permissions"
else
msg_error "FreshRSS should be updated via the user interface."
exit
fi
}
start

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
APP="Garage"
var_tags="${var_tags:-object-storage}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/local/bin/garage ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
GITEA_RELEASE=$(curl -fsSL https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
if [[ "${GITEA_RELEASE}" != "$(cat ~/.garage 2>/dev/null)" ]] || [[ ! -f ~/.garage ]]; then
msg_info "Stopping Service"
systemctl stop garage
msg_ok "Stopped Service"
msg_info "Backing Up Data"
cp /usr/local/bin/garage /usr/local/bin/garage.old 2>/dev/null || true
cp /etc/garage.toml /etc/garage.toml.bak 2>/dev/null || true
msg_ok "Backed Up Data"
msg_info "Updating Garage"
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
echo "${GITEA_RELEASE}" >~/.garage
msg_ok "Updated Garage"
msg_info "Starting Service"
systemctl start garage
msg_ok "Started Service"
msg_ok "Update Successfully!"
else
msg_ok "No update required. Garage is already at ${GITEA_RELEASE}"
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}${CL}"

View File

@@ -24,9 +24,12 @@ function update_script() {
check_container_storage
check_container_resources
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
setup_mysql
fi
NODE_VERSION="22" setup_nodejs
msg_info "Updating Ghost"
msg_info "Updating ${APP} LXC"
if command -v ghost &>/dev/null; then
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
latest_version=$(npm show ghost-cli version)

View File

@@ -31,7 +31,6 @@ function update_script() {
$STD apt update
$STD apt -y upgrade
msg_ok "Updated $APP LXC"
exit
}
start

View File

@@ -1,6 +0,0 @@
___ __ _ ______
/ | / /___ (_)___ ___ / ____/___ __________ _____ ____
/ /| | / / __ \/ / __ \/ _ \______/ / __/ __ `/ ___/ __ `/ __ `/ _ \
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / / / /_/ / /_/ / __/
/_/ |_/_/ .___/_/_/ /_/\___/ \____/\__,_/_/ \__,_/\__, /\___/
/_/ /____/

View File

@@ -1,6 +0,0 @@
____ __ ____ ____ ______
/ __ )___ ____ / /_____ / __ \/ __ \/ ____/
/ __ / _ \/ __ \/ __/ __ \/ /_/ / / / / /_
/ /_/ / __/ / / / /_/ /_/ / ____/ /_/ / __/
/_____/\___/_/ /_/\__/\____/_/ /_____/_/

View File

@@ -1,6 +0,0 @@
______ ____ __ ______
/ ____/___ ____ ___ / __/_ __/ / / / _/
/ / / __ \/ __ `__ \/ /_/ / / / / / // /
/ /___/ /_/ / / / / / / __/ /_/ / /_/ // /
\____/\____/_/ /_/ /_/_/ \__, /\____/___/
/____/

View File

@@ -1,6 +0,0 @@
____ _ __ __
/ __ \(_)________ ____ _/ /______/ /_ ____ ___________
/ / / / / ___/ __ \/ __ `/ __/ ___/ __ \/ __ `/ ___/ ___/
/ /_/ / (__ ) /_/ / /_/ / /_/ /__/ / / / /_/ / / / /
/_____/_/____/ .___/\__,_/\__/\___/_/ /_/\__,_/_/ /_/
/_/

View File

@@ -1,6 +0,0 @@
______
/ ____/___ __________ _____ ____
/ / __/ __ `/ ___/ __ `/ __ `/ _ \
/ /_/ / /_/ / / / /_/ / /_/ / __/
\____/\__,_/_/ \__,_/\__, /\___/
/____/

View File

@@ -1,6 +0,0 @@
__ _ __ __
/ / (_) _____ / /_ ____ ____ / /__
/ / / / | / / _ \/ __ \/ __ \/ __ \/ //_/
/ /___/ /| |/ / __/ /_/ / /_/ / /_/ / ,<
/_____/_/ |___/\___/_.___/\____/\____/_/|_|

View File

@@ -1,6 +0,0 @@
____ __ __ __ ___
/ __ \____ _/ /______/ /_ / |/ /___ ____
/ /_/ / __ `/ __/ ___/ __ \/ /|_/ / __ \/ __ \
/ ____/ /_/ / /_/ /__/ / / / / / / /_/ / / / /
/_/ \__,_/\__/\___/_/ /_/_/ /_/\____/_/ /_/

View File

@@ -1,6 +0,0 @@
____ _ __ __ _
/ __ \___ (_) /_/ /_(_)
/ /_/ / _ \/ / __/ __/ /
/ _, _/ __/ / /_/ /_/ /
/_/ |_|\___/_/\__/\__/_/

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -20,18 +20,18 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/iobroker ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated Successfully"
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/iobroker ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
}
start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -29,11 +29,10 @@ function update_script() {
exit 1
fi
msg_info "Updating ${APP} LXC"
msg_info "Updating LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
exit
}

View File

@@ -11,7 +11,7 @@ var_disk="${var_disk:-2}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-0}"
header_info "$APP"

View File

@@ -28,24 +28,24 @@ function update_script() {
exit
fi
if [ ! -f /opt/.env ]; then
sed -i 's|^Environment="DisableRootWarning=true"$|EnvironmentFile="/opt/.env"|' /etc/systemd/system/jackett.service
cat <<EOF >/opt/.env
if check_for_gh_release "Jackett" "Jackett/Jackett"; then
if [ ! -f /opt/.env ]; then
sed -i 's|^Environment="DisableRootWarning=true"$|EnvironmentFile="/opt/.env"|' /etc/systemd/system/jackett.service
cat <<EOF >/opt/.env
DisableRootWarning=true
EOF
fi
if check_for_gh_release "Jackett" "Jackett/Jackett"; then
fi
msg_info "Stopping Service"
systemctl stop jackett
msg_ok "Stopped Service"
rm -rf /opt/Jackett
fetch_and_deploy_gh_release "jackett" "Jackett/Jackett" "prebuild" "latest" "/opt/Jackett" "Jackett.Binaries.LinuxAMDx64.tar.gz"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jackett" "Jackett/Jackett" "prebuild" "latest" "/opt/Jackett" "Jackett.Binaries.LinuxAMDx64.tar.gz"
msg_info "Starting Service"
systemctl start jackett
msg_ok "Started Service"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -30,7 +30,6 @@ function update_script() {
if ! grep -qEi 'ubuntu' /etc/os-release; then
msg_info "Updating Intel Dependencies"
rm .intel-*
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -20,18 +20,22 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/lib/jenkins ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/lib/jenkins ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
JAVA_VERSION="21" setup_java
msg_info "Updating Jenkings"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Jenkins"
msg_ok "Update Successfully!"
exit
}
start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -35,19 +35,18 @@ function update_script() {
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
msg_info "Updating ${APP}"
msg_info "Updating Joplin-Server"
cd /opt/joplin-server
sed -i "/onenote-converter/d" packages/lib/package.json
$STD yarn config set --home enableTelemetry 0
export BUILD_SEQUENCIAL=1
$STD yarn install --inline-builds
msg_ok "Updated ${APP}"
msg_ok "Updated Joplin-Server"
msg_info "Starting Services"
systemctl start joplin-server
msg_ok "Started Services"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -32,9 +32,9 @@ function update_script() {
setup_uv
if check_for_gh_release "kapowarr" "Casvt/Kapowarr"; then
msg_info "Stopping $APP"
msg_info "Stopping Service"
systemctl stop kapowarr
msg_ok "Stopped $APP"
msg_ok "Stopped Service"
msg_info "Creating Backup"
mv /opt/kapowarr/db /opt/
@@ -42,14 +42,14 @@ function update_script() {
fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
msg_info "Updating $APP"
msg_info "Updating Kapowarr"
mv /opt/db /opt/kapowarr
msg_ok "Updated $APP"
msg_ok "Updated Kapowarr"
msg_info "Starting $APP"
msg_info "Starting Service"
systemctl start kapowarr
msg_ok "Started $APP"
msg_ok "Update Successful"
msg_ok "Started Service"
msg_ok "Update Successfully!"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -38,14 +38,11 @@ function update_script() {
msg_ok "Updated yt-dlp"
msg_info "Prepare update"
if [[ -f /opt/${APP}_version.txt && "$(cat /opt/${APP}_version.txt)" < "0.23.0" ]]; then
$STD apt-get install -y graphicsmagick ghostscript
fi
$STD apt install -y graphicsmagick ghostscript
if [[ -f /opt/karakeep/.env ]] && [[ ! -f /etc/karakeep/karakeep.env ]]; then
mkdir -p /etc/karakeep
mv /opt/karakeep/.env /etc/karakeep/karakeep.env
fi
rm -rf /opt/karakeep
msg_ok "Update prepared"
if grep -q "start:prod" /etc/systemd/system/karakeep-workers.service; then
@@ -65,7 +62,7 @@ function update_script() {
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
msg_info "Updating ${APP}"
msg_info "Updating Karakeep"
corepack enable
export PUPPETEER_SKIP_DOWNLOAD="true"
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
@@ -86,17 +83,18 @@ function update_script() {
$STD pnpm migrate
$STD pnpm store prune
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE}/" /etc/karakeep/karakeep.env
msg_ok "Updated ${APP}"
msg_ok "Updated Karakeep"
msg_info "Starting Services"
systemctl start karakeep-browser karakeep-workers karakeep-web
msg_ok "Started Services"
msg_info "Cleaning up"
$STD apt-get autoremove -y
$STD apt-get autoclean -y
$STD apt autoremove -y
$STD apt autoclean -y
$STD apt clean -y
msg_ok "Cleaned"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-30}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-0}"
var_fuse="${var_fuse:-yes}"
var_tun="${var_tun:-yes}"
@@ -29,10 +29,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
msg_info "Updating LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated LXC"
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -28,9 +28,9 @@ function update_script() {
exit
fi
if check_for_gh_release "keycloak_app" "keycloak/keycloak"; then
msg_info "Stopping Keycloak"
msg_info "Stopping Service"
systemctl stop keycloak
msg_ok "Stopped Keycloak"
msg_ok "Stopped Service"
msg_info "Updating packages"
$STD apt-get update
@@ -44,16 +44,16 @@ function update_script() {
fetch_and_deploy_gh_release "keycloak_app" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
msg_info "Updating ${APP}"
msg_info "Updating Keycloak"
cd /opt
cp -a keycloak.old/conf/. keycloak/conf/
cp -a keycloak.old/providers/. keycloak/providers/ 2>/dev/null || true
cp -a keycloak.old/themes/. keycloak/themes/ 2>/dev/null || true
msg_ok "Updated ${APP} LXC"
msg_ok "Updated Keycloak"
msg_info "Restarting Keycloak"
msg_info "Restarting Service"
systemctl restart keycloak
msg_ok "Restarted Keycloak"
msg_ok "Restarted Service"
msg_info "Cleaning up"
rm -rf keycloak.old

View File

@@ -23,19 +23,18 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if ! command -v lsb_release; then
apt install -y lsb-release
fi
if [[ ! -d /opt/kimai ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
if [[ "$CURRENT_PHP" != "8.4" ]]; then
msg_info "Migrating PHP $CURRENT_PHP to 8.4"
PHP_VERSION="8.4" PHP_MODULE="gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm" PHP_APACHE="YES" setup_php
msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi
PHP_VERSION="8.4" PHP_MODULE="mysql" PHP_APACHE="YES" setup_php
setup_composer
if check_for_gh_release "kimai" "kimai/kimai"; then
if check_for_gh_release "koillection" "benjaminjonard/koillection"; then
BACKUP_DIR="/opt/kimai_backup"
msg_info "Stopping Apache2"
@@ -72,6 +71,10 @@ function update_script() {
chown -R www-data:www-data /opt/*
chmod -R 777 /opt/*
msg_ok "Setup Permissions"
msg_info "Cleaning Up"
rm -rf "$BACKUP_DIR"
msg_ok "Cleaned"
msg_ok "Updated Successfully!"
fi
exit

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -38,7 +38,7 @@ function update_script() {
fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
msg_info "Updating ${APP}"
msg_info "Updating Koillection"
cd /opt/koillection
cp -r /opt/koillection-backup/.env.local /opt/koillection
cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
@@ -50,7 +50,7 @@ function update_script() {
$STD yarn install
$STD yarn build
chown -R www-data:www-data /opt/koillection/public/uploads
msg_ok "Updated $APP"
msg_ok "Updated Koillection"
msg_info "Starting Service"
systemctl start apache2
@@ -59,7 +59,7 @@ function update_script() {
msg_info "Cleaning up"
rm -r /opt/koillection-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -37,7 +37,7 @@ function update_script() {
cp /opt/kometa/config/config.yml /opt
msg_ok "Backup completed"
PYTHON_VERSION="3.12" setup_uv
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa"
msg_info "Updating Kometa"
@@ -49,7 +49,7 @@ function update_script() {
msg_info "Starting Service"
systemctl start kometa
msg_ok "Started Service"
msg_ok "Update Successful"
msg_ok "Update Successfully!"
fi
exit
}

View File

@@ -39,7 +39,7 @@ function update_script() {
msg_info "Starting Service"
systemctl start komga
msg_ok "Started Service"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -29,7 +29,7 @@ function update_script() {
exit 1
}
msg_info "Updating ${APP}"
msg_info "Updating Komodo"
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
if [[ -z "$COMPOSE_FILE" ]]; then
msg_error "No valid compose file found in /opt/komodo!"
@@ -61,7 +61,7 @@ function update_script() {
fi
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
msg_ok "Updated ${APP}"
msg_ok "Updated Komodo"
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -37,7 +37,7 @@ function update_script() {
msg_info "Starting service"
systemctl start ipfs
msg_ok "Service started"
msg_ok "Updated successfully"
msg_ok "Updated successfully!"
fi
exit
}

View File

@@ -28,24 +28,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then
msg_info "Stopping Service"
msg_info "Stopping $APP"
systemctl stop libretranslate
msg_ok "Stopped Service"
msg_ok "Stopped $APP"
msg_info "Updating LibreTranslate"
msg_info "Updating $APP"
cd /opt/libretranslate
source .venv/bin/activate
$STD pip install -U libretranslate
msg_ok "Updated LibreTranslate"
msg_ok "Updated $APP"
msg_info "Starting Service"
msg_info "Starting $APP"
systemctl start libretranslate
msg_ok "Started Service"
msg_ok "Update Successfully!"
msg_ok "Started $APP"
msg_ok "Update Successful"
fi
exit
}

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: dkuku
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/livebook-dev/livebook
APP="Livebook"
var_tags="${var_tags:-development}"
var_disk="${var_disk:-4}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/livebook/.mix/escripts/livebook ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "livebook" "livebook-dev/livebook"; then
msg_info "Stopping Service"
systemctl stop livebook
msg_info "Stopped Service"
msg_info "Updating Container"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Container"
msg_info "Updating Livebook"
source /opt/livebook/.env
cd /opt/livebook
$STD mix escript.install hex livebook --force
chown -R livebook:livebook /opt/livebook /data
msg_info "Starting Service"
systemctl start livebook
msg_info "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
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}"

View File

@@ -50,7 +50,6 @@ function update_script() {
else
msg_ok "$APP is already up to date (${RELEASE})"
fi
exit
}
start

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: davalanche | Co-Author: Slaviša Arežina (tremor021)
# Author: davalanche
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mylar3/mylar3
@@ -25,10 +25,16 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "mylar3" "mylar3/mylar3"; then
fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Updating ${APP} to ${RELEASE}"
rm -rf /opt/mylar3/* /opt/mylar3/.*
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
systemctl restart mylar3
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -20,18 +20,18 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
msg_error "No ${APP} Installation Found!"
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
}
start

View File

@@ -40,7 +40,6 @@ function update_script() {
msg_ok "Started Service"
msg_ok "Updated successfully!\n"
fi
exit
}
start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -20,18 +20,18 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
msg_error "No ${APP} Installation Found!"
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
}
start

View File

@@ -1,76 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/PatchMon/PatchMon
APP="PatchMon"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
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/patchmon" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "PatchMon" "PatchMon/PatchMon"; then
msg_info "Stopping Service"
systemctl stop patchmon-server
msg_ok "Stopped Service"
msg_info "Creating Backup"
cp /opt/patchmon/backend/.env /opt/backend.env
cp /opt/patchmon/frontend/.env /opt/frontend.env
msg_ok "Backup Created"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
msg_info "Updating PatchMon"
cd /opt/patchmon
export NODE_ENV=production
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/backend
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/frontend
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
$STD npm run build
cd /opt/patchmon/backend
mv /opt/backend.env /opt/patchmon/backend/.env
mv /opt/frontend.env /opt/patchmon/frontend/.env
$STD npx prisma migrate deploy
$STD npx prisma generate
msg_ok "Updated PatchMon"
msg_info "Starting Service"
systemctl start patchmon-server
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}${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -27,13 +27,12 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating PiHole"
msg_info "Updating ${APP}"
set +e
$STD apt update
$STD apt upgrade -y
/usr/local/bin/pihole -up
msg_ok "Updated PiHole"
msg_ok "Updated Successfully!"
msg_ok "Updated ${APP}"
exit
}

View File

@@ -66,8 +66,6 @@ function update_script() {
$STD unzip "$brwsr_tmp"
mv browserless-"$TAG"/ /opt/browserless
cd /opt/browserless
$STD npm install typescript
$STD npm install esbuild
$STD npm install
rm -rf src/routes/{chrome,edge,firefox,webkit}
$STD node_modules/playwright-core/cli.js install --with-deps chromium

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/dedicatedcode/reitti
APP="Reitti"
var_tags="${var_tags:-location-tracker}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-15}"
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 /opt/reitti/reitti.jar ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop reitti
msg_ok "Stopped Service"
rm -f /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
msg_info "Starting Service"
systemctl start reitti
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
if check_for_gh_release "photon" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop photon
msg_ok "Stopped Service"
rm -f /opt/photon/photon.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Starting Service"
systemctl start photon
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}"

View File

@@ -24,38 +24,40 @@ function update_script() {
check_container_storage
check_container_resources
if par2 --version | grep -q "par2cmdline-turbo"; then
fetch_and_deploy_gh_release "par2cmdline-turbo" "animetosho/par2cmdline-turbo" "prebuild" "latest" "/usr/bin/" "*-linux-amd64.zip"
fi
if [[ ! -d /opt/sabnzbd ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "sabnzbd-org" "sabnzbd/sabnzbd"; then
PYTHON_VERSION="3.13" setup_uv
systemctl stop sabnzbd
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
if [[ ! -d /opt/sabnzbd/venv ]]; then
msg_info "Migrating SABnzbd to uv virtual environment"
$STD uv venv /opt/sabnzbd/venv
msg_ok "Created uv venv at /opt/sabnzbd/venv"
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
systemctl daemon-reload
msg_ok "Updated SABnzbd service to use uv venv"
fi
fi
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
systemctl start sabnzbd
msg_ok "Updated Successfully"
setup_uv
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
msg_ok "No update required. ${APP} is already at ${RELEASE}"
exit
fi
setup_uv
msg_info "Updating $APP to ${RELEASE}"
systemctl stop sabnzbd
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
temp_file=$(mktemp)
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
rm -f "$temp_file"
if [[ ! -d /opt/sabnzbd/venv ]]; then
msg_info "Migrating SABnzbd to uv virtual environment"
$STD uv venv /opt/sabnzbd/venv
msg_ok "Created uv venv at /opt/sabnzbd/venv"
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
systemctl daemon-reload
msg_ok "Updated SABnzbd service to use uv venv"
fi
fi
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
echo "${RELEASE}" >/opt/${APP}_version.txt
systemctl start sabnzbd
msg_ok "Updated ${APP} to ${RELEASE}"
exit
}

View File

@@ -40,7 +40,6 @@ function update_script() {
else
msg_ok "${APP} is already up to date (${RELEASE})"
fi
exit
}
start

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -40,29 +40,6 @@ function update_script() {
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
systemctl daemon-reload
fi
if [ ! -d "/opt/tracktor-data/uploads" ]; then
mkdir -p /opt/tracktor-data/{uploads,logs}
EXISTING_AUTH_PIN=$(grep '^AUTH_PIN=' /opt/tracktor.env 2>/dev/null | cut -d'=' -f2)
AUTH_PIN=${EXISTING_AUTH_PIN:-123456}
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
DB_PATH=/opt/tracktor-data/tracktor.db
UPLOADS_DIR="/opt/tracktor-data/uploads"
LOG_DIR="/opt/tracktor-data/logs"
# If server host is not set by default it will run on all interfaces - 0.0.0.0
# SERVER_HOST=""
SERVER_PORT=3000
# Set this if you want to secure your endpoints otherwise default will be "*"
CORS_ORIGINS="*"
# Set this if you are using backend and frontend separately.
# PUBLIC_API_BASE_URL=""
LOG_REQUESTS=true
LOG_LEVEL="info"
AUTH_PIN=${AUTH_PIN}
# PUBLIC_DEMO_MODE=false
# FORCE_DATA_SEED=false
EOF
fi
msg_ok "Corrected Services"
setup_nodejs

View File

@@ -23,7 +23,7 @@
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "13"
"version": "12"
}
}
],

View File

@@ -1,35 +0,0 @@
{
"name": "BentoPDF",
"slug": "bentopdf",
"categories": [
12
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://github.com/alam00000/bentopdf",
"website": "https://www.bentopdf.com",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bentopdf.webp",
"config_path": "",
"description": "A privacy-first, 100% client-side PDF Toolkit. No signups/accounts, works in the browser, online or offline.",
"install_methods": [
{
"type": "default",
"script": "ct/bentopdf.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -12,7 +12,7 @@
"documentation": "https://docs.bunkerweb.io/latest/",
"website": "https://www.bunkerweb.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp",
"config_path": "/etc/bunkerweb/variables.env",
"config_path": "/opt/bunkerweb/variables.env",
"description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
"install_methods": [
{

View File

@@ -1,44 +0,0 @@
{
"name": "ComfyUI",
"slug": "comfyui",
"categories": [
20
],
"date_created": "2025-10-26",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/opt",
"interface_port": 8188,
"documentation": "https://github.com/comfyanonymous/ComfyUI",
"website": "https://www.comfy.org/",
"logo": "https://framerusercontent.com/images/3cNQMWKzIhIrQ5KErBm7dSmbd2w.png",
"description": "ComfyUI is a node-based interface and inference engine for generative AI. Users can combine various AI models and operations through nodes to achieve highly customizable and controllable content generation.",
"install_methods": [
{
"type": "default",
"script": "ct/comfyui.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 25,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Application takes long time to install. Please be patient!",
"type": "warning"
},
{
"text": "Please check that you have installed the drivers for your GPU.",
"type": "info"
}
]
}

View File

@@ -28,8 +28,8 @@
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
"username": null,
"password": null
},
"notes": [
{

View File

@@ -1,35 +0,0 @@
{
"name": "Dispatcharr",
"slug": "dispatcharr",
"categories": [
14
],
"date_created": "2025-10-27",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9191,
"documentation": "https://dispatcharr.github.io/Dispatcharr-Docs/",
"website": "https://github.com/Dispatcharr/Dispatcharr",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/dispatcharr.webp",
"config_path": "/opt/dispatcharr/.env",
"description": "Dispatcharr is an open-source powerhouse for managing IPTV streams and EPG data with elegance and control. Born from necessity and built with passion, it started as a personal project by OkinawaBoss and evolved with contributions from legends like dekzter, SergeantPanda and Bucatini.",
"install_methods": [
{
"type": "default",
"script": "ct/dispatcharr.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -23,7 +23,7 @@
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
"version": "12"
}
}
],
@@ -31,5 +31,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"text": "Flaresolverr is pinned to Version 3.3.25 because they add an breaking python package which doesn't work with debian 12.`",
"type": "info"
}
]
}

View File

@@ -1,59 +0,0 @@
{
"name": "Garage",
"slug": "garage",
"categories": [
8
],
"date_created": "2025-10-27",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3900,
"documentation": "https://garagehq.deuxfleurs.fr/documentation/quick-start/",
"website": "https://garagehq.deuxfleurs.fr/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/garage.webp",
"config_path": "/etc/garage.toml",
"description": "Garage is a lightweight, self-hosted, S3-compatible object storage service built for distributed environments. It is designed to be simple, efficient, and easy to deploy across multiple nodes.",
"install_methods": [
{
"type": "default",
"script": "ct/garage.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 5,
"os": "debian",
"version": "13"
}
},
{
"type": "alpine",
"script": "ct/alpine-garage.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 5,
"os": "alpine",
"version": "3.22"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The Garage configuration file is located at `/etc/garage.toml`. You can edit RPC and API bindings, tokens, and data directories there.",
"type": "info"
},
{
"text": "Admin API runs by default on port `3903`, S3 API on port `3900`, Web UI on `3902`. Adjust firewall rules accordingly.",
"type": "warning"
},
{
"text": "To view your generated tokens and RPC secret, check `~/garage.creds` after installation.",
"type": "info"
}
]
}

View File

@@ -12,7 +12,7 @@
"documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
"config_path": "/opt/guardian/.env",
"website": "https://github.com/HydroshieldMKII/Guardian",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/guardian-plex.webp",
"logo": null,
"description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
"install_methods": [
{

View File

@@ -1,40 +0,0 @@
{
"name": "Livebook",
"slug": "livebook",
"categories": [
20
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://hexdocs.pm/livebook/readme.html",
"config_path": null,
"website": "https://livebook.dev",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/livebook.webp",
"description": "Elixir Livebook is an interactive, web-based notebook platform for Elixir that combines code, documentation, and visualizations in a single document. Similar to Jupyter notebooks, it allows developers to write and execute Elixir code in real-time, making it ideal for data exploration, prototyping, learning, and collaborative development. Livebook features rich markdown support, built-in charting capabilities, and seamless integration with the Elixir ecosystem.",
"install_methods": [
{
"type": "default",
"script": "ct/livebook.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Show initial Livebook password: `cat ~/livebook.creds`",
"type": "info"
}
]
}

View File

@@ -0,0 +1,48 @@
{
"name": "MySQL",
"slug": "mysql",
"categories": [
8
],
"date_created": "2024-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://dev.mysql.com/doc/",
"website": "https://www.mysql.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
"config_path": "",
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
"install_methods": [
{
"type": "default",
"script": "ct/mysql.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat mysql.creds`",
"type": "info"
},
{
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
"type": "info"
},
{
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
"type": "info"
}
]
}

View File

@@ -1,48 +0,0 @@
{
"name": "MySQL",
"slug": "mysql",
"categories": [
8
],
"date_created": "2024-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://dev.mysql.com/doc/",
"website": "https://www.mysql.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
"config_path": "",
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
"install_methods": [
{
"type": "default",
"script": "ct/mysql.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat mysql.creds`",
"type": "info"
},
{
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
"type": "info"
},
{
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
"type": "info"
}
]
}

View File

@@ -23,7 +23,7 @@
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -1,35 +0,0 @@
{
"name": "PatchMon",
"slug": "patchmon",
"categories": [
9
],
"date_created": "2025-10-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3399,
"documentation": "https://docs.patchmon.net",
"website": "https://patchmon.net",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/patchmon.webp",
"config_path": "/opt/patchmon/backend/.env, /opt/patchmon/frontend/.env",
"description": "Monitor Linux patches across all your hosts with real-time visibility, security update tracking, and comprehensive package management.",
"install_methods": [
{
"type": "default",
"script": "ct/patchmon.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -23,7 +23,7 @@
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -1,40 +0,0 @@
{
"name": "Reitti",
"slug": "reitti",
"categories": [
21
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://www.dedicatedcode.com/projects/reitti/",
"config_path": "/opt/reitti/.env",
"website": "https://www.dedicatedcode.com/projects/reitti/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/reitti.webp",
"description": "Reitti is a self-hosted location tracking and analysis platform that detects significant places, trip patterns, and integrates with OwnTracks, GPSLogger, and Immich. It uses PostgreSQL + PostGIS, RabbitMQ, Redis, and an optional Photon geocoder.",
"install_methods": [
{
"type": "default",
"script": "ct/reitti.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 15,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": [
{
"text": "Photon Geocoder running at http://127.0.0.1:2322. Photon is fully setup, but without sample data. (filesize is big) -> checkout our guide: `https://github.com/community-scripts/ProxmoxVE/discussions/8737`.",
"type": "info"
}
]
}

View File

@@ -23,7 +23,7 @@
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -9,9 +9,9 @@
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/javedh-dev/tracktor/tree/main/docs",
"documentation": "https://tracktor.bytedge.in/introduction.html",
"config_path": "/opt/tracktor.env",
"website": "https://github.com/javedh-dev/tracktor",
"website": "https://tracktor.bytedge.in/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
"install_methods": [

View File

@@ -35,10 +35,6 @@
{
"text": "You probably want to drastically extend the storage space to fit whatever clients you want to back up",
"type": "info"
},
{
"text": "Directory `/opt/urbackup/backups` is set as initial backup path. Change it to your liking",
"type": "info"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,84 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apk add --no-cache openssl
msg_ok "Installed Dependencies"
GITEA_RELEASE=$(curl -s https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
mkdir -p /var/lib/garage/{data,meta,snapshots}
mkdir -p /etc/garage
RPC_SECRET=$(openssl rand -hex 64 | cut -c1-64)
ADMIN_TOKEN=$(openssl rand -base64 32)
METRICS_TOKEN=$(openssl rand -base64 32)
{
echo "Garage Tokens and Secrets"
echo "RPC Secret: $RPC_SECRET"
echo "Admin Token: $ADMIN_TOKEN"
echo "Metrics Token: $METRICS_TOKEN"
} >~/garage.creds
echo $GITEA_RELEASE >>~/.garage
cat <<EOF >/etc/garage.toml
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
replication_factor = 1
rpc_bind_addr = "0.0.0.0:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "${RPC_SECRET}"
[s3_api]
s3_region = "garage"
api_bind_addr = "0.0.0.0:3900"
root_domain = ".s3.garage"
[s3_web]
bind_addr = "0.0.0.0:3902"
root_domain = ".web.garage"
index = "index.html"
[k2v_api]
api_bind_addr = "0.0.0.0:3904"
[admin]
api_bind_addr = "0.0.0.0:3903"
admin_token = "${ADMIN_TOKEN}"
metrics_token = "${METRICS_TOKEN}"
EOF
msg_ok "Configured Garage"
msg_info "Creating Service"
cat <<'EOF' >/etc/init.d/garage
#!/sbin/openrc-run
name="Garage Object Storage"
command="/usr/local/bin/garage"
command_args="server"
command_background="yes"
pidfile="/run/garage.pid"
depend() {
need net
}
EOF
chmod +x /etc/init.d/garage
$STD rc-update add garage default
$STD rc-service garage restart || rc-service garage start
msg_ok "Service active"
motd_ssh
customize

View File

@@ -22,8 +22,7 @@ $STD apt-get install -y \
libsasl2-dev \
procps \
dnsutils \
ripgrep \
chromium
ripgrep
msg_ok "Installed Dependencies"
msg_info "Installing Python Dependencies"
@@ -33,7 +32,7 @@ $STD apt-get install -y \
python3-regex
msg_ok "Installed Python Dependencies"
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
NODE_VERSION="22" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
msg_info "Installing Playwright"
@@ -41,7 +40,7 @@ $STD uv pip install playwright --system
$STD playwright install-deps chromium
msg_ok "Installed Playwright"
msg_info "Installing ArchiveBox"
msg_info "Installing Chromium and ArchiveBox"
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
@@ -93,7 +92,6 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,65 +13,8 @@ setting_up_container
network_check
update_os
ASTERISK_VERSIONS_URL="https://www.asterisk.org/downloads/asterisk/all-asterisk-versions/"
html=$(curl -fsSL "$ASTERISK_VERSIONS_URL")
LTS_VERSION=""
for major in 20 22 24 26; do
block=$(echo "$html" | awk "/Asterisk $major - LTS/,/<ul>/")
ver=$(echo "$block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/.* - //')
if [ -n "$ver" ]; then
LTS_VERSION="$LTS_VERSION $ver"
fi
unset ver block
done
LTS_VERSION=$(echo "$LTS_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
STD_VERSION=""
for major in 21 23 25 27; do
block=$(echo "$html" | awk "/Asterisk $major</,/<ul>/")
ver=$(echo "$block" | grep -oE 'Download (Latest - )?[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/.* - //;s/Download //')
if [ -n "$ver" ]; then
STD_VERSION="$STD_VERSION $ver"
fi
unset ver block
done
STD_VERSION=$(echo "$STD_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
cert_block=$(echo "$html" | awk '/Certified Asterisk/,/<ul>/')
CERT_VERSION=$(echo "$cert_block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+-cert[0-9]+' | head -n1 | sed -E 's/.* - //')
cat <<EOF
Choose Asterisk version to install:
1) Latest Standard ($STD_VERSION)
2) Latest LTS ($LTS_VERSION)
3) Latest Certified ($CERT_VERSION)
EOF
read -rp "Enter choice [1-3]: " ASTERISK_CHOICE
case "$ASTERISK_CHOICE" in
2)
ASTERISK_VERSION="$LTS_VERSION"
;;
3)
ASTERISK_VERSION="$CERT_VERSION"
CERTIFIED=1
;;
*)
ASTERISK_VERSION="$STD_VERSION"
;;
esac
if [[ "$CERTIFIED" == "1" ]]; then
RELEASE="certified-asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/certified-asterisk/$RELEASE"
else
RELEASE="asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/asterisk/$RELEASE"
fi
msg_info "Installing Dependencies"
$STD apt install -y \
$STD apt-get install -y \
libsrtp2-dev \
build-essential \
libedit-dev \
@@ -82,12 +25,13 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
msg_info "Downloading Asterisk"
RELEASE=$(curl -fsSL https://downloads.asterisk.org/pub/telephony/asterisk/ | grep -o 'asterisk-[0-9]\+-current\.tar\.gz' | sort -V | tail -n1)
temp_file=$(mktemp)
curl -fsSL "$DOWNLOAD_URL" -o "$temp_file"
curl -fsSL "https://downloads.asterisk.org/pub/telephony/asterisk/${RELEASE}" -o "$temp_file"
mkdir -p /opt/asterisk
tar zxf "$temp_file" --strip-components=1 -C /opt/asterisk
cd /opt/asterisk
msg_ok "Downloaded Asterisk ($RELEASE)"
msg_ok "Downloaded Asterisk"
msg_info "Installing Asterisk"
$STD ./contrib/scripts/install_prereq install
@@ -107,7 +51,6 @@ customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

Some files were not shown because too many files have changed in this diff Show More