Compare commits

...
Author SHA1 Message Date
copilot-swe-agent[bot]andMickLesk 797908f122 Update immich to v3.3.5 (CVE/CA compromise fix)
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2026-10-21 18:28:29 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 02ce96290b Update CHANGELOG.md (#18053)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-21 15:15:44 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] c4645cd610 Update CHANGELOG.md (#18052)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-21 14:50:51 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 88b5587faf Update CHANGELOG.md (#18047)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-21 06:30:24 +00:00
CanbiZ (MickLesk)andClaude Opus 5.5 dc87974c5d DroppedNeedle: pass release version to the app via COMMIT_TAG (#18042)
The app reads its version from COMMIT_TAG and falls back to "dev".
Set it in the systemd unit on install, migration and update.

Fixes #18040

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-21 08:29:57 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8104d2ba1f Update CHANGELOG.md (#18038)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 13:57:03 +00:00
CanbiZ (MickLesk) 6e382d6a2e Plane: give Silo its own HOME (#18028)
* Plane: give Silo its own HOME

Silo 20261018 keeps its config in ~/.silo and stops when that path is not a directory. Running as root, that is /root/.silo, the version file fetch_and_deploy_gh_release writes, so Silo restarted every 5 seconds and the bucket setup found nothing on port 9000 (#18017).

* Plane: track Silo as silo_s3 instead of a HOME override

Renaming the version file is enough: Silo only looks at ~/.silo and ~/.minio.
2026-10-20 15:56:35 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] cabe4d5126 Update CHANGELOG.md (#18037)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 13:22:52 +00:00
Chris 31fbe48ec3 Immich: Pin version to 3.3.4 (#18036)
- Upstream bugfixes
2026-10-20 15:22:19 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 24ff3da900 Update CHANGELOG.md (#18035)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 11:24:24 +00:00
CanbiZ (MickLesk) b1e92ba2b7 InvenTree: run apt under systemd so postinst can finish (#18029)
1.6.0's postinst walks parent PIDs until PID 1 to collect settings. Under pct exec the chain ends at PID 0, and since InvenTree #12995 turned the loop's [ ] into [[ ]] it no longer breaks out there, so the install hung printing ps and strings errors. systemd-run makes systemd the parent.
2026-10-20 13:23:56 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 1e0fd45962 Update CHANGELOG.md (#18034)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 11:17:09 +00:00
CanbiZ (MickLesk) cb9e8973ff Zitadel: Support v1 and v2 Login (#18031)
* Zitadel: Support v1 and v2 Login

* Refactor Zitadel installation and configuration process

Refactor Zitadel installation script to improve configuration and setup processes, including PostgreSQL and Zitadel Login setup.

* Update authorship information in zitadel-install.sh

* Add co-authors to the zitadel.sh file

Updated author information to include co-authors.

* Enhance Zitadel login options descriptions

* Change Zitadel login version check condition

* Change session cookie secret generation method
2026-10-20 13:16:44 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] eca0795699 Update CHANGELOG.md (#18033)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 11:13:46 +00:00
CanbiZ (MickLesk) 43a4baedfd Profilarr: pass the deno pin as the version (#18025)
The update handed v2.7.5 to fetch_and_deploy_gh_release as the mode and 'latest' as the version, so every update stopped with 'Unknown mode: v2.7.5' (#18021). Same arguments as the install now.
2026-10-20 13:13:23 +02:00
CanbiZ (MickLesk) de95ff335f Refactor: OpenWebUI (remove numba pin) (#18026)
* Open WebUI: stop when the install fails three times

The retry loop fell through to "Installed Open WebUI" after the third
failure, so the service was created without a binary and the URL never
answered (#18020). The last attempt now runs under the error trap, which
shows uv's output.

* Open WebUI: keep the retry inline, no function in the script

* Open WebUI: same retry on the update paths, and drop the numba constraint

The migration and update loops in ct/openwebui.sh fell through to
"Updated" after three failures just like the install did. The numba
constraint from #11874 guarded openai-whisper's old pin; 0.12.x depends
on faster-whisper and never resolves numba.

* formatting
2026-10-20 13:13:14 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 695f831144 Update CHANGELOG.md (#18032)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 10:13:02 +00:00
CanbiZ (MickLesk) 899ba2e9e3 Silo: keep the version file out of ~/.silo (#18030)
Since 20261018 Silo uses ~/.silo as its config directory and stops when that path is a file, which the version file named after the app was. Update moves an existing file to ~/.silo_s3.
2026-10-20 12:12:37 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] bb32c40838 Update CHANGELOG.md (#18027)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 09:13:17 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] e556084107 Update CHANGELOG.md (#18024)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 08:04:28 +00:00
CanbiZ (MickLesk) c16806d87e InvenTree: move to go.packager.io (#18015)
dl.packager.io is frozen at 1.5.1, and its key only has a SHA1 self-signature, which apt's sqv rejects on Debian 13 since 2026-02-01. Upstream's installer moved to go.packager.io (InvenTree #12824), which carries 1.6.0 for Ubuntu 24.04/26.04 and Debian 13; update migrates installs on those releases and accepts Debian.
2026-10-20 10:03:57 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] c7d8c440ce Update CHANGELOG.md (#18023)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-20 07:31:38 +00:00
CanbiZ (MickLesk) 9cdce51d43 Zitadel: run init and setup in the foreground (#18016)
start-from-init ran in the background with its output thrown away, and the PID to kill was guessed from lsof after 60 seconds; when the process had already ended, kill got no PID and failed with exit 2. init and setup finish on their own, report their errors, and the service only starts once its user exists.
2026-10-20 09:31:07 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 361039b919 Update CHANGELOG.md (#18014)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-19 17:22:36 +00:00
push-app-to-main[bot] afe1e6d7cb Add calagopus (ct) (#18012)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-10-19 19:22:08 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 32b6952bdd Update CHANGELOG.md (#18013)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-19 17:21:09 +00:00
push-app-to-main[bot]andCanbiZ b4abaf9202 Netronome (#18011)
* Add netronome (ct)

* formatting

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-10-19 19:20:35 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] c6a14ac506 Update CHANGELOG.md (#18010)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-19 13:47:53 +00:00
Brad Schroth 25628a6651 feat(mealie): add reverse proxy auth settings to mealie.env (#18006)
* feat(mealie): add reverse proxy auth settings to mealie.env

* fix(mealie): remove run-time note, documented on website instead

* fix(mealie): use plain EOF heredoc delimiter
2026-10-19 15:47:22 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8cf7f29875 Update CHANGELOG.md (#18009)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-19 07:16:48 +00:00
mazeladoandMatt Daleo 56a5dccabf immich: add missing library lines before the refresh (#17990)
Co-authored-by: Matt Daleo <12395090+mazelado@users.noreply.github.com>
2026-10-19 09:16:18 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 0a55cd58ed Update CHANGELOG.md (#18007)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-19 06:21:43 +00:00
thieneret 231cd8c275 Update authentik 2026.8.4 (#18004)
* bump authentik version, downgrade pnpm

* pnpm revert only relevant about NixOS package
2026-10-19 08:21:15 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 2182076128 Update CHANGELOG.md (#18003)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 19:33:00 +00:00
CanbiZ (MickLesk) 440460f0ea Donetick: create selfhosted.yaml from the example (#17992)
Since 0.1.82 the release only ships config/selfhosted.yaml.example, so the token sed failed on a missing file (#17985).
2026-10-18 21:32:42 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] c0b3b84eef Update CHANGELOG.md (#18002)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 19:32:37 +00:00
CanbiZ (MickLesk) be863ab405 Wiki.js: only back up db.sqlite on SQLite installs (#17993)
Installs since February 2025 use PostgreSQL and have no db.sqlite, so the update stopped at the backup (#17971). mkdir -p lets a rerun get past the backup folder a failed run left behind.
2026-10-18 21:32:11 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 2bfc7882d3 Update CHANGELOG.md (#18001)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 19:31:20 +00:00
CanbiZ (MickLesk) e197418b34 FlareSolverr: pass Chrome an en-US Accept-Language (#17995)
FlareSolverr hands LANG to Chrome as --accept-lang, which takes a language tag; with the container locale Cloudflare challenges looped unsolved (discussion #17987, FlareSolverr discussion #1717). Update adds the line to existing units.
2026-10-18 21:30:55 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] bc71c1ce80 Update CHANGELOG.md (#18000)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 19:30:17 +00:00
CanbiZ (MickLesk) 12769e95e5 2FAuth: install the locked dependencies (#17996)
composer update re-resolved every dependency instead of using the composer.lock the release ships, and Composer now blocks svg-sanitize 0.22.0 while resolving (#17955, Bubka/2FAuth#575). Upstream's own image only runs composer install, as does our update.
2026-10-18 21:29:52 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] dead918982 Update CHANGELOG.md (#17998)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 18:32:18 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 662342f679 Update CHANGELOG.md (#17997)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 18:32:06 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 9a9057d750 Update CHANGELOG.md (#17994)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 18:24:58 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 7f52edf9dc Update CHANGELOG.md (#17991)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 18:16:56 +00:00
Giovanni Francesco SoloneandCanbiZ 21bf2ddeb6 Tracearr: drop the pnpm store after the update build (#17869)
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-10-18 20:16:29 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 56f109adca Update CHANGELOG.md (#17988)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 10:29:12 +00:00
mazeladoandMatt Daleo db6a758f5e vaultwarden: build before stopping the service (#17983)
Co-authored-by: Matt Daleo <12395090+mazelado@users.noreply.github.com>
2026-10-18 12:28:47 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 6083e802ee Update CHANGELOG.md (#17986)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-18 07:29:09 +00:00
Tobias 2d554a8bb8 fix: geopulse 2.0.0 upgrade support (nginx .mjs, pg18, jwt cleanup) (#17978)
2.0.0 serves its MapLibre worker as a .mjs file, which nginx's stock
mime.types doesn't map, breaking the map on both fresh installs and
updates. Also drops the now-dead JWT key generation/env vars (2.0.0
uses opaque session tokens), clears stale frontend build output on
update via CLEAN_INSTALL+KEEP instead of accumulating it forever,
backs up the database before updating, bumps new installs straight
to PostgreSQL 18/PostGIS 3.6, and raises the default disk size after
hitting real space pressure during a live upgrade.
2026-10-18 09:28:44 +02:00
32 changed files with 678 additions and 152 deletions

No files matched your search

+78
View File
@@ -565,8 +565,86 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-10-21
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- DroppedNeedle: pass release version to the app via COMMIT_TAG [@MickLesk](https://github.com/MickLesk) ([#18042](https://github.com/community-scripts/ProxmoxVE/pull/18042))
### 💾 Core
- Keep the version an update started from across a redo [@MickLesk](https://github.com/MickLesk) ([core#156](https://github.com/community-scripts/core/pull/156))
- Redo an update whose run did not finish after the deploy [@MickLesk](https://github.com/MickLesk) ([core#155](https://github.com/community-scripts/core/pull/155))
## 2026-10-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Plane: give Silo its own HOME [@MickLesk](https://github.com/MickLesk) ([#18028](https://github.com/community-scripts/ProxmoxVE/pull/18028))
- Immich: Pin version to 3.3.4 [@vhsdream](https://github.com/vhsdream) ([#18036](https://github.com/community-scripts/ProxmoxVE/pull/18036))
- InvenTree: run apt under systemd so postinst can finish [@MickLesk](https://github.com/MickLesk) ([#18029](https://github.com/community-scripts/ProxmoxVE/pull/18029))
- Profilarr: pass the deno pin as the version [@MickLesk](https://github.com/MickLesk) ([#18025](https://github.com/community-scripts/ProxmoxVE/pull/18025))
- Silo: keep the version file out of ~/.silo [@MickLesk](https://github.com/MickLesk) ([#18030](https://github.com/community-scripts/ProxmoxVE/pull/18030))
- InvenTree: move to go.packager.io [@MickLesk](https://github.com/MickLesk) ([#18015](https://github.com/community-scripts/ProxmoxVE/pull/18015))
- Zitadel: run init and setup in the foreground [@MickLesk](https://github.com/MickLesk) ([#18016](https://github.com/community-scripts/ProxmoxVE/pull/18016))
- #### ✨ New Features
- Zitadel: Support v1 and v2 Login [@MickLesk](https://github.com/MickLesk) ([#18031](https://github.com/community-scripts/ProxmoxVE/pull/18031))
- #### 🔧 Refactor
- Refactor: OpenWebUI (remove numba pin) [@MickLesk](https://github.com/MickLesk) ([#18026](https://github.com/community-scripts/ProxmoxVE/pull/18026))
### 💾 Core
- Only treat an NVIDIA GPU as present when its device nodes are [@MickLesk](https://github.com/MickLesk) ([core#153](https://github.com/community-scripts/core/pull/153))
## 2026-10-19
### 🆕 New Scripts
- Calagopus ([#18012](https://github.com/community-scripts/ProxmoxVE/pull/18012))
- Netronome ([#18011](https://github.com/community-scripts/ProxmoxVE/pull/18011))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- immich: record library revisions when the line is missing [@mazelado](https://github.com/mazelado) ([#17990](https://github.com/community-scripts/ProxmoxVE/pull/17990))
- Update authentik 2026.8.4 [@thieneret](https://github.com/thieneret) ([#18004](https://github.com/community-scripts/ProxmoxVE/pull/18004))
- #### ✨ New Features
- feat(mealie): add reverse proxy auth settings to mealie.env [@bferd](https://github.com/bferd) ([#18006](https://github.com/community-scripts/ProxmoxVE/pull/18006))
## 2026-10-18
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Donetick: create selfhosted.yaml from the example [@MickLesk](https://github.com/MickLesk) ([#17992](https://github.com/community-scripts/ProxmoxVE/pull/17992))
- Wiki.js: only back up db.sqlite on SQLite installs [@MickLesk](https://github.com/MickLesk) ([#17993](https://github.com/community-scripts/ProxmoxVE/pull/17993))
- FlareSolverr: pass Chrome an en-US Accept-Language [@MickLesk](https://github.com/MickLesk) ([#17995](https://github.com/community-scripts/ProxmoxVE/pull/17995))
- 2FAuth: install the locked dependencies [@MickLesk](https://github.com/MickLesk) ([#17996](https://github.com/community-scripts/ProxmoxVE/pull/17996))
- Tracearr: drop the pnpm store after the update build [@gioxx](https://github.com/gioxx) ([#17869](https://github.com/community-scripts/ProxmoxVE/pull/17869))
- vaultwarden: build before stopping the service [@mazelado](https://github.com/mazelado) ([#17983](https://github.com/community-scripts/ProxmoxVE/pull/17983))
- #### 💥 Breaking Changes
- fix: geopulse 2.0.0 upgrade support (nginx .mjs, pg18, jwt cleanup) [@CrazyWolf13](https://github.com/CrazyWolf13) ([#17978](https://github.com/community-scripts/ProxmoxVE/pull/17978))
### 💾 Core
- Let get_current_ip reach its IPv6 fallback [@MickLesk](https://github.com/MickLesk) ([core#151](https://github.com/community-scripts/core/pull/151))
- Drop apt autoclean before apt clean [@MickLesk](https://github.com/MickLesk) ([core#152](https://github.com/community-scripts/core/pull/152))
- Silence apt's script warning in $STD [@MickLesk](https://github.com/MickLesk) ([core#150](https://github.com/community-scripts/core/pull/150))
## 2026-10-17
### 🆕 New Scripts
+1 -1
View File
@@ -47,7 +47,7 @@ function update_script() {
RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust
setup_yq
AUTHENTIK_VERSION="version/2026.8.3"
AUTHENTIK_VERSION="version/2026.8.4"
# Source: https://github.com/goauthentik/fips/blob/main/Makefile#L26
XMLSEC_VERSION="1.3.12"
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Jelcoo
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://calagopus.com/
APP="Calagopus"
var_tags="${var_tags:-panel;game-server}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-40}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/local/bin/calagopus-panel ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "calagopus-panel" "calagopus/panel"; then
msg_info "Stopping Service"
systemctl stop calagopus-panel
msg_ok "Stopped Service"
create_backup /etc/calagopus/.env /var/lib/calagopus
fetch_and_deploy_gh_release "calagopus-panel" "calagopus/panel" "singlefile" "latest" "/usr/local/bin" "panel-rs-aio-$(arch_resolve x86_64 aarch64)-linux"
restore_backup
msg_info "Starting Service"
systemctl start calagopus-panel
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}:8000${CL}"
+6
View File
@@ -91,6 +91,7 @@ User=root
WorkingDirectory=/opt/droppedneedle/backend
Environment=ROOT_APP_DIR=/opt/droppedneedle/backend
Environment=PORT=8688
Environment=COMMIT_TAG=v$(<~/.droppedneedle)
# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>
ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target
Restart=on-failure
@@ -106,6 +107,11 @@ EOF
sed -i '\|=8688$|a# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>' /etc/systemd/system/droppedneedle.service
fi
sed -i 's|^ExecStart=.*|ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target|' /etc/systemd/system/droppedneedle.service
if grep -q '^Environment=COMMIT_TAG=' /etc/systemd/system/droppedneedle.service; then
sed -i "s|^Environment=COMMIT_TAG=.*|Environment=COMMIT_TAG=v$(<~/.droppedneedle)|" /etc/systemd/system/droppedneedle.service
else
sed -i "\|=8688$|a Environment=COMMIT_TAG=v$(<~/.droppedneedle)" /etc/systemd/system/droppedneedle.service
fi
fi
systemctl daemon-reload
+6
View File
@@ -35,6 +35,12 @@ function update_script() {
msg_error "You must upgrade your LXC to Debian Trixie before updating."
exit
fi
# FlareSolverr hands LANG to Chrome as Accept-Language, which needs a tag like en-US, not a locale (#17987)
if ! grep -q '^Environment="LANG=' /etc/systemd/system/flaresolverr.service; then
sed -i '/^Environment="CAPTCHA_SOLVER=/a Environment="LANG=en-US"' /etc/systemd/system/flaresolverr.service
systemctl daemon-reload
systemctl restart flaresolverr
fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
msg_info "Stopping service"
systemctl stop flaresolverr
+53 -2
View File
@@ -10,7 +10,7 @@ APP="GeoPulse"
var_tags="${var_tags:-location;tracking;gps}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-8}"
var_disk="${var_disk:-12}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
@@ -32,6 +32,16 @@ function update_script() {
fi
if check_for_gh_release "geopulse-backend" "tess1o/geopulse"; then
msg_info "Backing Up Database"
mkdir -p /var/lib/geopulse/dumps
DB_NAME="$(grep -oP '^GEOPULSE_POSTGRES_DB=\K.*' /etc/geopulse/geopulse.env 2>/dev/null)"
DB_NAME="${DB_NAME:-geopulse}"
if sudo -u postgres pg_dump -Fc "${DB_NAME}" >"/var/lib/geopulse/dumps/${DB_NAME}-pre-update-$(date +%Y%m%d%H%M%S).dump" 2>/dev/null; then
msg_ok "Backed Up Database"
else
msg_warn "Database backup failed, continuing anyway"
fi
msg_info "Stopping Service"
systemctl stop geopulse-backend
msg_ok "Stopped Service"
@@ -51,7 +61,48 @@ function update_script() {
fi
fetch_and_deploy_gh_release "geopulse-backend" "tess1o/geopulse" "singlefile" "latest" "/opt/geopulse/backend" "${BINARY_PATTERN}"
fetch_and_deploy_gh_release "geopulse-frontend" "tess1o/geopulse" "prebuild" "latest" "/var/www/geopulse" "geopulse-frontend-*.tar.gz"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="avatars" fetch_and_deploy_gh_release "geopulse-frontend" "tess1o/geopulse" "prebuild" "latest" "/var/www/geopulse" "geopulse-frontend-*.tar.gz"
if [[ -f /etc/geopulse/geopulse.env ]] && grep -q "GEOPULSE_JWT_" /etc/geopulse/geopulse.env 2>/dev/null; then
msg_info "Removing Unused JWT Keys"
sed -i '/^GEOPULSE_JWT_PRIVATE_KEY_LOCATION=/d;/^GEOPULSE_JWT_PUBLIC_KEY_LOCATION=/d' /etc/geopulse/geopulse.env
rm -f /opt/geopulse/keys/jwt-private-key.pem /opt/geopulse/keys/jwt-public-key.pem
msg_ok "Removed Unused JWT Keys"
fi
if [[ -f /etc/nginx/sites-available/geopulse.conf ]] && ! grep -q '\.mjs\$' /etc/nginx/sites-available/geopulse.conf; then
msg_info "Configuring Nginx for .mjs Assets"
cp /etc/nginx/sites-available/geopulse.conf /etc/nginx/sites-available/geopulse.conf.pre-mjs.bak
ANCHOR_LINE="$(grep -n ' add_header Cache-Control "public, max-age=31536000";' /etc/nginx/sites-available/geopulse.conf.pre-mjs.bak | head -1 | cut -d: -f1)"
if [[ -n "$ANCHOR_LINE" ]]; then
INSERT_LINE=$((ANCHOR_LINE + 1))
{
head -n "$INSERT_LINE" /etc/nginx/sites-available/geopulse.conf.pre-mjs.bak
cat <<'MJSBLOCK'
location ~* ^/(?!osm/).*\.mjs$ {
types {
application/javascript mjs;
}
expires 1y;
add_header Cache-Control "public, max-age=31536000";
}
MJSBLOCK
tail -n "+$((INSERT_LINE + 1))" /etc/nginx/sites-available/geopulse.conf.pre-mjs.bak
} >/etc/nginx/sites-available/geopulse.conf
fi
if [[ -n "$ANCHOR_LINE" ]] && grep -q '\.mjs\$' /etc/nginx/sites-available/geopulse.conf && nginx -t >/dev/null 2>&1; then
systemctl reload nginx
msg_ok "Configured Nginx for .mjs Assets"
else
cp /etc/nginx/sites-available/geopulse.conf.pre-mjs.bak /etc/nginx/sites-available/geopulse.conf
nginx -t >/dev/null 2>&1 && systemctl reload nginx
msg_warn "Could not automatically add the .mjs nginx block (customized config?) - add it manually, see the GeoPulse 2.0.0 upgrade notes"
fi
fi
msg_info "Starting Service"
systemctl start geopulse-backend
+5 -5
View File
@@ -77,7 +77,7 @@ EOF
BASE_DIR=${STAGING_DIR}/base-images
SOURCE_DIR=${STAGING_DIR}/image-source
cd /tmp
RELEASE="v3.3.1"
RELEASE="v3.3.5"
if [[ -f ~/.intel_version ]]; then
INTEL_SRC="https://raw.githubusercontent.com/immich-app/immich/${RELEASE}/machine-learning"
curl -fsSL "${INTEL_SRC}/scripts/install-intel-runtime.sh" -o ./intel-runtime 2>/dev/null ||
@@ -103,10 +103,10 @@ EOF
fi
fi
# Without the revision file the refresh was skipped and sharp failed on an old libvips (#17914).
if [[ ! -f ~/.immich_library_revisions ]]; then
msg_warn "No record of the compiled image-processing libraries, rebuilding all of them"
printf '%s: unknown\n' imagemagick jpegli libheif libjxl libraw libvips >~/.immich_library_revisions
fi
[[ -f ~/.immich_library_revisions ]] || msg_warn "No record of the compiled image-processing libraries, rebuilding all of them"
for lib in imagemagick jpegli libheif libjxl libraw libvips; do
grep -q "^${lib}:" ~/.immich_library_revisions 2>/dev/null || echo "${lib}: unknown" >>~/.immich_library_revisions
done
[[ -d "$BASE_DIR/.git" ]] || $STD git clone -b main https://github.com/immich-app/base-images "$BASE_DIR"
libraries=("libjxl" "jpegli" "libheif" "libraw" "imagemagick" "libvips")
cd "$BASE_DIR"
+25 -3
View File
@@ -31,14 +31,36 @@ function update_script() {
exit
fi
if ! grep -qE "^ID=(ubuntu)$" /etc/os-release; then
msg_error "Unsupported OS. InvenTree requires Ubuntu (20.04/22.04/24.04)."
if ! grep -qE "^ID=(ubuntu|debian)$" /etc/os-release; then
msg_error "Unsupported OS. InvenTree requires Ubuntu or Debian."
exit
fi
# dl.packager.io is frozen at 1.5.1 and its SHA1-bound key fails on Debian 13;
# go.packager.io only carries current builds for these releases
if grep -qs "dl.packager.io" /etc/apt/sources.list.d/inventree*; then
case "$(get_os_info id)/$(get_os_info version)" in
ubuntu/24.04 | ubuntu/26.04 | debian/13)
msg_info "Migrating InvenTree Repository"
setup_deb822_repo \
"inventree" \
"https://go.packager.io/srv/deb/inventree/InvenTree/gpg-key.asc" \
"https://go.packager.io/srv/deb/inventree/InvenTree/stable/$(get_os_info id)" \
"$(get_os_info version)" \
"main"
msg_ok "Migrated InvenTree Repository"
;;
*)
msg_warn "InvenTree only publishes updates for Ubuntu 24.04/26.04 and Debian 13; staying on the frozen repository"
;;
esac
fi
msg_info "Updating InvenTree"
apt_update_safe
$STD apt install --only-upgrade inventree -y
# postinst loops forever unless its parent chain reaches PID 1 (not the case under pct exec)
$STD systemd-run --wait --pipe --quiet --collect --setenv=DEBIAN_FRONTEND=noninteractive \
apt-get install --only-upgrade -y inventree
msg_ok "Updated InvenTree"
msg_ok "Updated successfully!"
exit
+12
View File
@@ -58,6 +58,18 @@ exec uv run mealie
STARTEOF
fi
chmod +x /opt/mealie/start.sh
if ! grep -q "REVERSE_PROXY_AUTH_ENABLED" /opt/mealie/mealie.env; then
cat <<EOF >>/opt/mealie/mealie.env
# Reverse proxy auth (Mealie v3.29.0+). Disabled by default.
# To enable: set REVERSE_PROXY_AUTH_ENABLED=true, set a secret, then restart mealie.
# REVERSE_PROXY_AUTH_ENABLED=false
# REVERSE_PROXY_AUTH_HEADER=X-Forwarded-User
# REVERSE_PROXY_AUTH_SIGNUP_ENABLED=false
# REVERSE_PROXY_AUTH_SECRET=
# REVERSE_PROXY_AUTH_SECRET_HEADER=X-Mealie-Reverse-Proxy-Secret
EOF
fi
msg_ok "Configuration restored"
msg_info "Installing Python Dependencies with uv"
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env bash
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/autobrr/netronome
APP="Netronome"
var_tags="${var_tags:-network;monitoring;speedtest}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/bin/netronome ]]; then
msg_error "No Netronome Installation Found!"
exit
fi
if check_for_gh_release "netronome" "autobrr/netronome" "" "" "v"; then
msg_info "Stopping Netronome"
systemctl stop netronome
msg_ok "Stopped Netronome"
fetch_and_deploy_gh_release "netronome" "autobrr/netronome" "binary" "latest" "" "netronome_*_linux_$(arch_resolve).deb" "v"
msg_info "Starting Netronome"
systemctl start netronome
msg_ok "Started Netronome"
msg_ok "Updated successfully!"
fi
if check_for_gh_release "librespeed-cli" "librespeed/speedtest-cli"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "librespeed-cli" "librespeed/speedtest-cli" "prebuild" "latest" "/opt/librespeed-cli" "librespeed-cli_*_linux_$(arch_resolve).tar.gz"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:7575${CL}"
echo -e "${INFO}${YW}Register your account right away: the registration page accepts only the first account, and until then anyone who reaches the port can claim it.${CL}"
+12 -6
View File
@@ -49,10 +49,13 @@ function update_script() {
msg_info "Installing uv-based Open-WebUI"
PYTHON_VERSION="3.12" setup_uv
for attempt in $(seq 1 3); do
$STD uv tool install --python 3.12 --constraint <(echo "numba>=0.60") open-webui[all] && break
[[ $attempt -lt 3 ]] && msg_warn "Open WebUI install attempt $attempt failed, retrying..." && sleep 10
installed=0
for attempt in 1 2; do
$STD uv tool install --python 3.12 open-webui[all] && { installed=1; break; }
msg_warn "Open WebUI install attempt $attempt failed, retrying..."
sleep 10
done
((installed)) || $STD uv tool install --python 3.12 open-webui[all]
msg_ok "Installed uv-based Open-WebUI"
msg_info "Restoring data"
@@ -125,10 +128,13 @@ EOF
OTEL_ARGS+=(--with "$pkg")
done < <(uv pip list --python "$OWUI_PYTHON" --format freeze 2>/dev/null | grep -i '^opentelemetry-' | cut -d= -f1)
fi
for attempt in $(seq 1 3); do
$STD uv tool install --force --python 3.12 --constraint <(echo "numba>=0.60") "${OTEL_ARGS[@]}" open-webui[all] && break
[[ $attempt -lt 3 ]] && msg_warn "Open WebUI update attempt $attempt failed, retrying..." && sleep 10
updated=0
for attempt in 1 2; do
$STD uv tool install --force --python 3.12 "${OTEL_ARGS[@]}" open-webui[all] && { updated=1; break; }
msg_warn "Open WebUI update attempt $attempt failed, retrying..."
sleep 10
done
((updated)) || $STD uv tool install --force --python 3.12 "${OTEL_ARGS[@]}" open-webui[all]
systemctl restart open-webui
msg_ok "Updated Open WebUI"
msg_ok "Updated successfully!"
+1 -1
View File
@@ -41,7 +41,7 @@ function update_script() {
ARCH=$(uname -m)
if check_for_gh_release "deno" "denoland/deno" "v2.7.5" "Deno is pinned to 2.7.5 because the known WouldBlock: Resource temporarily unavailable (os error 11) Issue"; then
fetch_and_deploy_gh_release "deno" "denoland/deno" "v2.7.5" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
fetch_and_deploy_gh_release "deno" "denoland/deno" "prebuild" "v2.7.5" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
fi
if check_for_gh_release "profilarr" "Dictionarry-Hub/profilarr"; then
+3 -2
View File
@@ -31,12 +31,13 @@ function update_script() {
exit
fi
if check_for_gh_release "silo" "pgsty/silo"; then
[[ -f ~/.silo ]] && mv ~/.silo ~/.silo_s3
if check_for_gh_release "silo_s3" "pgsty/silo"; then
msg_info "Stopping Silo"
systemctl stop silo
msg_ok "Stopped Silo"
DPKG_FORCE_CONFOLD=1 fetch_and_deploy_gh_release "silo" "pgsty/silo" "binary"
DPKG_FORCE_CONFOLD=1 fetch_and_deploy_gh_release "silo_s3" "pgsty/silo" "binary"
msg_info "Starting Silo"
systemctl start silo
+1
View File
@@ -146,6 +146,7 @@ EOF
rm -rf /opt/tracearr.build
cd /opt/tracearr
$STD pnpm install --prod --frozen-lockfile --ignore-scripts --filter @tracearr/server...
rm -rf "$(pnpm store path)"
$STD chown -R tracearr:tracearr /opt/tracearr
msg_ok "Built Tracearr"
+6 -4
View File
@@ -53,10 +53,6 @@ update_deb_based() {
printf '%s\n' "$INSTALLED_VERSION" >"$HOME/.vaultwarden"
fi
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)"
@@ -64,6 +60,12 @@ update_deb_based() {
VW_VERSION="$VAULT"
export VW_VERSION
CARGO_BUILD_JOBS="$(get_parallel_jobs)" CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16 $STD cargo build --features "sqlite,mysql,postgresql" --release
msg_ok "Built VaultWarden ${VAULT}"
msg_info "Stopping Service"
systemctl stop vaultwarden
msg_ok "Stopped Service"
if [[ -f /usr/bin/vaultwarden ]]; then
cp target/release/vaultwarden /usr/bin/
else
+9 -12
View File
@@ -33,22 +33,18 @@ function update_script() {
NODE_VERSION="26" NODE_MODULE="yarn,node-gyp" setup_nodejs
if check_for_gh_release "wikijs" "requarks/wiki-v2"; then
#msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
#SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")
#if [[ "${SQLITE_INSTALL}" == "true" && "${CHECK_UPDATE_RELEASE}" =~ ^3.* ]]; then
# echo "SQLite is not supported in v3.x+, currently there is no update path availble."
# exit
#fi
#msg_ok "There is an update path available for ${APP}"
# Installs before February 2025 use SQLite, newer ones PostgreSQL
SQLITE_INSTALL=$([[ -f /opt/wikijs/db.sqlite ]] && echo "true" || echo "false")
msg_info "Stopping Service"
systemctl stop wikijs
msg_ok "Stopped Service"
msg_info "Backing up Data"
mkdir /opt/wikijs-backup
#$SQLITE_INSTALL &&
cp /opt/wikijs/db.sqlite /opt/wikijs-backup
mkdir -p /opt/wikijs-backup
if [[ "$SQLITE_INSTALL" == "true" ]]; then
cp /opt/wikijs/db.sqlite /opt/wikijs-backup
fi
cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup
msg_ok "Backed up Data"
@@ -56,8 +52,9 @@ function update_script() {
msg_info "Restoring Data"
cp -R /opt/wikijs-backup/* /opt/wikijs
#$SQLITE_INSTALL &&
$STD npm rebuild sqlite3
if [[ "$SQLITE_INSTALL" == "true" ]]; then
$STD npm rebuild sqlite3
fi
rm -rf /opt/wikijs-backup
msg_ok "Restored Data"
+36 -10
View File
@@ -2,7 +2,7 @@
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: dave-yap (dave-yap)
# Author: dave-yap (dave-yap) | Co-Author: remz1337, MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://zitadel.com/ | Github: https://github.com/zitadel/zitadel
@@ -16,11 +16,23 @@ var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
if [[ -z "${var_zitadel_login:-}" ]] && command -v pveversion >/dev/null 2>&1; then
var_zitadel_login=$(msg_menu "Choose the Zitadel login UI" \
"v2" "Login V2, Zitadel's default (HTTPS, self-signed certificate)" \
"v1" "Login V1, the classic login built into the API (HTTP)")
fi
export var_zitadel_login="${var_zitadel_login:-v2}"
header_info "$APP"
variables
color
catch_errors
if [[ ! "${var_zitadel_login}" =~ ^v[12]$ ]]; then
msg_error "var_zitadel_login must be v1 or v2"
exit 1
fi
function update_script() {
header_info
check_container_storage
@@ -31,20 +43,29 @@ function update_script() {
fi
if check_for_gh_release "zitadel" "zitadel/zitadel"; then
msg_info "Stopping Service"
msg_info "Stopping Zitadel"
if [[ -f /etc/systemd/system/zitadel-login.service ]]; then
systemctl stop zitadel-login
fi
systemctl stop zitadel
msg_ok "Stopped Service"
msg_ok "Stopped Zitadel"
rm -f /usr/local/bin/zitadel
fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-$(arch_resolve).tar.gz"
fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "${CHECK_UPDATE_RELEASE}" "/usr/local/bin" "zitadel-linux-$(arch_resolve).tar.gz"
if [[ -f /etc/systemd/system/zitadel-login.service ]]; then
NODE_VERSION="24" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "zitadel-login" "zitadel/zitadel" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/zitadel-login" "zitadel-login.tar.gz"
fi
msg_info "Updating Zitadel"
msg_info "Migrating Zitadel Database"
$STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
msg_ok "Updated Zitadel"
msg_ok "Migrated Zitadel Database"
msg_info "Starting Service"
msg_info "Starting Zitadel"
systemctl start zitadel
msg_ok "Started Service"
if [[ -f /etc/systemd/system/zitadel-login.service ]]; then
systemctl start zitadel-login
fi
msg_ok "Started Zitadel"
msg_ok "Updated successfully!"
fi
exit
@@ -57,4 +78,9 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080/ui/console${CL}"
if [[ "${var_zitadel_login}" == "v1" ]]; then
echo -e "${GATEWAY}${BGN}http://${IP}:8080/ui/console${CL}"
else
echo -e "${GATEWAY}${BGN}https://${IP}:8080/ui/console${CL}"
fi
echo -e "${INFO}${YW}Admin credentials: ~/zitadel.creds (inside the container)${CL}"
-1
View File
@@ -36,7 +36,6 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$LOCAL_IP|" \
-e "s|^DB_USERNAME=$|DB_USERNAME=$MARIADB_DB_USER|" \
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$MARIADB_DB_PASS|" .env
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer update --no-plugins --no-scripts
$STD composer install --no-dev --prefer-dist --no-plugins --no-scripts
$STD php artisan key:generate --force
$STD php artisan migrate:refresh
+1 -1
View File
@@ -57,7 +57,7 @@ PG_VERSION="17" setup_postgresql
PG_DB_NAME="authentik" PG_DB_USER="authentik" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
XMLSEC_VERSION="1.3.12"
AUTHENTIK_VERSION="version/2026.8.3"
AUTHENTIK_VERSION="version/2026.8.4"
fetch_and_deploy_gh_release "xmlsec" "lsh123/xmlsec" "tarball" "${XMLSEC_VERSION}" "/opt/xmlsec"
fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
GO_VERSION="$(grep -m1 '^go ' /opt/authentik/go.mod | awk '{print $2}')" setup_go
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Jelcoo
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://calagopus.com/
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 valkey
systemctl enable -q --now valkey-server
msg_ok "Installed Dependencies"
PG_VERSION="18" setup_postgresql
PG_DB_NAME="panel" PG_DB_USER="calagopus" setup_postgresql_db
setup_docker
fetch_and_deploy_gh_release "calagopus-panel" "calagopus/panel" "singlefile" "latest" "/usr/local/bin" "panel-rs-aio-$(arch_resolve x86_64 aarch64)-linux"
msg_info "Configuring Calagopus"
mkdir -p /etc/calagopus /var/lib/calagopus /var/log/calagopus
mkdir -p /etc/calagopus-wings /var/lib/calagopus-wings /var/log/calagopus-wings /tmp/calagopus-wings
APP_ENCRYPTION_KEY=$(openssl rand -hex 16)
cat <<EOF >/etc/calagopus/.env
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
DATABASE_MIGRATE=true
REDIS_URL=redis://localhost
PORT=8000
APP_ENCRYPTION_KEY=${APP_ENCRYPTION_KEY}
APP_LOG_DIRECTORY=/var/log/calagopus
APP_PRIMARY=true
APP_ENABLE_WINGS_PROXY=true
APP_USE_DECRYPTION_CACHE=true
APP_USE_INTERNAL_CACHE=true
AIO_BASE_WINGS_CONFIGURATION=/etc/calagopus/wings-config.yml
EOF
chmod 600 /etc/calagopus/.env
cat <<EOF >/etc/calagopus/wings-config.yml
app_name: Calagopus
EOF
msg_ok "Configured Calagopus"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/calagopus-panel.service
[Unit]
Description=Calagopus Panel
After=network.target postgresql.service valkey-server.service docker.service
Requires=postgresql.service valkey-server.service docker.service
[Service]
Type=simple
User=root
WorkingDirectory=/etc/calagopus
EnvironmentFile=/etc/calagopus/.env
ExecStart=/usr/local/bin/calagopus-panel
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now calagopus-panel
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+1
View File
@@ -21,6 +21,7 @@ fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "
msg_info "Setup Donetick"
cd /opt/donetick
[[ -f config/selfhosted.yaml ]] || cp config/selfhosted.yaml.example config/selfhosted.yaml
TOKEN=$(openssl rand -hex 16)
sed -i -e "s/change_this_to_a_secure_random_string_32_characters_long/${TOKEN}/g" config/selfhosted.yaml
msg_ok "Setup Donetick"
+1
View File
@@ -44,6 +44,7 @@ User=root
WorkingDirectory=/opt/droppedneedle/backend
Environment=ROOT_APP_DIR=/opt/droppedneedle/backend
Environment=PORT=8688
Environment=COMMIT_TAG=v$(<~/.droppedneedle)
# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>
ExecStart=/opt/droppedneedle/venv/bin/python -m maintenance.automatic_upgrade --start-target
Restart=on-failure
+1
View File
@@ -48,6 +48,7 @@ RestartSec=5
Type=simple
Environment="LOG_LEVEL=info"
Environment="CAPTCHA_SOLVER=none"
Environment="LANG=en-US"
WorkingDirectory=/opt/flaresolverr
ExecStart=/opt/flaresolverr/flaresolverr
TimeoutStopSec=30
+10 -6
View File
@@ -19,17 +19,15 @@ $STD apt install -y \
nginx
msg_ok "Installed Dependencies"
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
PG_VERSION="18" PG_MODULES="postgis" setup_postgresql
PG_DB_NAME="geopulse" PG_DB_USER="geopulse" PG_DB_EXTENSIONS="postgis,postgis_topology" setup_postgresql_db
msg_info "Generating Security Keys"
mkdir -p /opt/geopulse/{backend,keys}
mkdir -p /etc/geopulse /var/www/geopulse /var/lib/geopulse/dumps
mkdir -p /var/log/geopulse/{backend,nginx}
openssl genpkey -algorithm RSA -out /opt/geopulse/keys/jwt-private-key.pem 2>/dev/null
openssl rsa -pubout -in /opt/geopulse/keys/jwt-private-key.pem -out /opt/geopulse/keys/jwt-public-key.pem 2>/dev/null
openssl rand -base64 32 >/opt/geopulse/keys/ai-encryption-key.txt
chmod 640 /opt/geopulse/keys/jwt-private-key.pem /opt/geopulse/keys/jwt-public-key.pem /opt/geopulse/keys/ai-encryption-key.txt
chmod 640 /opt/geopulse/keys/ai-encryption-key.txt
msg_ok "Generated Security Keys"
if [[ "$(uname -m)" == "aarch64" ]]; then
@@ -62,8 +60,6 @@ GEOPULSE_POSTGRES_PORT=5432
GEOPULSE_POSTGRES_DB=${PG_DB_NAME}
GEOPULSE_POSTGRES_USERNAME=${PG_DB_USER}
GEOPULSE_POSTGRES_PASSWORD=${PG_DB_PASS}
GEOPULSE_JWT_PRIVATE_KEY_LOCATION=file:/opt/geopulse/keys/jwt-private-key.pem
GEOPULSE_JWT_PUBLIC_KEY_LOCATION=file:/opt/geopulse/keys/jwt-public-key.pem
GEOPULSE_AI_ENCRYPTION_KEY_LOCATION=file:/opt/geopulse/keys/ai-encryption-key.txt
QUARKUS_LOG_FILE_ENABLE=true
QUARKUS_LOG_FILE_PATH=/var/log/geopulse/backend/geopulse.log
@@ -128,6 +124,14 @@ server {
add_header Cache-Control "public, max-age=31536000";
}
location ~* ^/(?!osm/).*\.mjs$ {
types {
application/javascript mjs;
}
expires 1y;
add_header Cache-Control "public, max-age=31536000";
}
location ^~ /osm/tiles/ {
resolver 8.8.8.8 valid=300s;
resolver_timeout 10s;
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
RELEASE="v3.3.1"
RELEASE="v3.3.5"
if lscpu | grep -q 'GenuineIntel'; then
echo ""
echo ""
+6 -4
View File
@@ -16,15 +16,17 @@ update_os
msg_info "Setting up InvenTree Repository"
setup_deb822_repo \
"inventree" \
"https://dl.packager.io/srv/inventree/InvenTree/key" \
"https://dl.packager.io/srv/deb/inventree/InvenTree/stable/$(get_os_info id)" \
"https://go.packager.io/srv/deb/inventree/InvenTree/gpg-key.asc" \
"https://go.packager.io/srv/deb/inventree/InvenTree/stable/$(get_os_info id)" \
"$(get_os_info version)" \
"main"
msg_ok "Set up InvenTree Repository"
msg_info "Installing InvenTree (Patience)"
export SETUP_NO_CALLS=true
$STD apt install -y inventree
# The package's postinst walks parent PIDs until it reaches PID 1; under pct exec the chain ends at 0
# and since 1.6.0 that loops forever, so apt runs as a child of systemd
$STD systemd-run --wait --pipe --quiet --collect --setenv=SETUP_NO_CALLS=true --setenv=DEBIAN_FRONTEND=noninteractive \
apt-get install -y inventree
msg_ok "Installed InvenTree"
msg_info "Configuring InvenTree"
+8
View File
@@ -98,6 +98,14 @@ PRODUCTION=true
HOST=0.0.0.0
PORT=9000
BASE_URL=http://${LOCAL_IP}:9000
# Reverse proxy auth (Mealie v3.29.0+). Disabled by default.
# To enable: set REVERSE_PROXY_AUTH_ENABLED=true, set a secret, then restart mealie.
# REVERSE_PROXY_AUTH_ENABLED=false
# REVERSE_PROXY_AUTH_HEADER=X-Forwarded-User
# REVERSE_PROXY_AUTH_SIGNUP_ENABLED=false
# REVERSE_PROXY_AUTH_SECRET=
# REVERSE_PROXY_AUTH_SECRET_HEADER=X-Mealie-Reverse-Proxy-Secret
EOF
msg_ok "Wrote Environment File"
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/autobrr/netronome
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 \
iperf3 \
iputils-ping \
mtr-tiny \
traceroute
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "librespeed-cli" "librespeed/speedtest-cli" "prebuild" "latest" "/opt/librespeed-cli" "librespeed-cli_*_linux_$(arch_resolve).tar.gz"
ln -sf /opt/librespeed-cli/librespeed-cli /usr/local/bin/librespeed-cli
fetch_and_deploy_gh_release "netronome" "autobrr/netronome" "binary" "latest" "" "netronome_*_linux_$(arch_resolve).deb" "v"
msg_info "Configuring Netronome"
mkdir -p /opt/netronome_data /root/.config
$STD netronome generate-config --config /opt/netronome_data/config.toml
sed -i 's/^host = "127.0.0.1"$/host = "0.0.0.0"/' /opt/netronome_data/config.toml
chmod 600 /opt/netronome_data/config.toml
ln -s /opt/netronome_data /root/.config/netronome
msg_ok "Configured Netronome"
msg_info "Creating Netronome Service"
cat <<EOF >/etc/systemd/system/netronome.service
[Unit]
Description=Netronome
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/netronome_data
ExecStart=/usr/bin/netronome serve --config /opt/netronome_data/config.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now netronome
msg_ok "Created Netronome Service"
motd_ssh
customize
cleanup_lxc
+6 -3
View File
@@ -47,10 +47,13 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
fi
msg_info "Installing Open WebUI"
for attempt in $(seq 1 3); do
$STD uv tool install --python 3.12 --constraint <(echo "numba>=0.60") "${OTEL_ARGS[@]}" open-webui[all] && break
[[ $attempt -lt 3 ]] && msg_warn "Open WebUI install attempt $attempt failed, retrying..." && sleep 10
installed=0
for attempt in 1 2; do
$STD uv tool install --python 3.12 "${OTEL_ARGS[@]}" open-webui[all] && { installed=1; break; }
msg_warn "Open WebUI install attempt $attempt failed, retrying..."
sleep 10
done
((installed)) || $STD uv tool install --python 3.12 "${OTEL_ARGS[@]}" open-webui[all]
msg_ok "Installed Open WebUI"
prompt="${var_openwebui_ollama:-}"
+1 -1
View File
@@ -43,7 +43,7 @@ $STD rabbitmqctl add_user plane "${RABBITMQ_PASS}"
$STD rabbitmqctl set_permissions -p plane plane ".*" ".*" ".*"
msg_ok "Configured RabbitMQ"
fetch_and_deploy_gh_release "silo" "pgsty/silo" "prebuild" "latest" "/opt/silo" "silo_*_linux_$(arch_resolve).tar.gz"
fetch_and_deploy_gh_release "silo_s3" "pgsty/silo" "prebuild" "latest" "/opt/silo" "silo_*_linux_$(arch_resolve).tar.gz"
fetch_and_deploy_gh_release "silo_mcli" "pgsty/mc" "prebuild" "latest" "/opt/mcli" "mcli_*_linux_$(arch_resolve).tar.gz"
msg_info "Configuring Silo"
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "silo" "pgsty/silo" "binary"
fetch_and_deploy_gh_release "silo_s3" "pgsty/silo" "binary"
msg_info "Configuring Silo"
mkdir -p /opt/silo_data
+130 -88
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: dave-yap
# Author: dave-yap (dave-yap) | Co-Author: remz1337, MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://zitadel.com/ | Github: https://github.com/zitadel/zitadel
@@ -13,132 +13,174 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies (Patience)"
$STD apt install -y ca-certificates lsof
msg_ok "Installed Dependecies"
var_zitadel_login="${var_zitadel_login:-v2}"
PG_VERSION="17" setup_postgresql
msg_info "Installing Postgresql"
DB_NAME="zitadel"
DB_USER="zitadel"
DB_PASS=$(random_password 13)
DB_ADMIN_USER="root"
DB_ADMIN_PASS=$(random_password 13)
systemctl start postgresql
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE USER $DB_ADMIN_USER WITH PASSWORD '$DB_ADMIN_PASS' SUPERUSER;"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
cat <<EOF >~/zitadel.creds
Application Credentials
DB_NAME: $DB_NAME
DB_USER: $DB_USER
DB_PASS: $DB_PASS
DB_ADMIN_USER: $DB_ADMIN_USER
DB_ADMIN_PASS: $DB_ADMIN_PASS
EOF
msg_ok "Installed PostgreSQL"
PG_DB_NAME="zitadel" PG_DB_USER="zitadel" setup_postgresql_db
fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-$(arch_resolve).tar.gz"
msg_info "Setting up Zitadel Environments"
msg_info "Configuring Zitadel"
mkdir -p /opt/zitadel
echo "/opt/zitadel/config.yaml" >"/opt/zitadel/.config"
random_password 32 >"/opt/zitadel/.masterkey"
cat <<EOF >~/zitadel.creds
Config location: $(cat "/opt/zitadel/.config")
Masterkey: $(cat "/opt/zitadel/.masterkey")
EOF
random_password 32 >/opt/zitadel/.masterkey
ADMIN_PASS="$(random_password 20)Aa1!"
cat <<EOF >/opt/zitadel/config.yaml
Port: 8080
ExternalDomain: ${LOCAL_IP}
ExternalPort: 8080
ExternalDomain: localhost
ExternalSecure: false
TLS:
Enabled: false
KeyPath: ""
Key: ""
CertPath: ""
Cert: ""
Database:
postgres:
Host: localhost
Port: 5432
Database: ${DB_NAME}
Database: zitadel
User:
Username: ${DB_USER}
Password: ${DB_PASS}
Username: zitadel
Password: ${PG_DB_PASS}
SSL:
Mode: disable
RootCert: ""
Cert: ""
Key: ""
Admin:
Username: ${DB_ADMIN_USER}
Password: ${DB_ADMIN_PASS}
SSL:
Mode: disable
RootCert: ""
Cert: ""
Key: ""
EOF
if [[ "$var_zitadel_login" == "v1" ]]; then
cat <<EOF >>/opt/zitadel/config.yaml
Port: 8080
ExternalSecure: false
DefaultInstance:
Features:
LoginV2:
Required: false
FirstInstance:
Org:
Human:
UserName: zitadel-admin@zitadel.localhost
Password: ${ADMIN_PASS}
PasswordChangeRequired: true
EOF
msg_ok "Installed Zitadel Enviroments"
else
cat <<EOF >>/opt/zitadel/config.yaml
Port: 8081
ExternalSecure: true
DefaultInstance:
Features:
LoginV2:
Required: true
FirstInstance:
LoginClientPatPath: /opt/zitadel/login-client.pat
Org:
Human:
UserName: zitadel-admin@zitadel.localhost
Password: ${ADMIN_PASS}
PasswordChangeRequired: true
LoginClient:
Machine:
Username: login-client
Name: Automatically Initialized IAM_LOGIN_CLIENT
Pat:
ExpirationDate: 2099-01-01T00:00:00Z
EOF
fi
chmod 600 /opt/zitadel/.masterkey /opt/zitadel/config.yaml
msg_ok "Configured Zitadel"
msg_info "Creating Services"
msg_info "Initializing Zitadel"
$STD zitadel init zitadel --config /opt/zitadel/config.yaml
$STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --steps /opt/zitadel/config.yaml
cat <<EOF >>~/zitadel.creds
Zitadel Admin
Username: zitadel-admin@zitadel.localhost
Initial Password: ${ADMIN_PASS}
EOF
chmod 600 ~/zitadel.creds
msg_ok "Initialized Zitadel"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/zitadel.service
[Unit]
Description=ZITADEL Identiy Server
Description=Zitadel
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=simple
User=zitadel
Group=zitadel
ExecStart=/usr/local/bin/zitadel start --masterkeyFile "/opt/zitadel/.masterkey" --config "/opt/zitadel/config.yaml"
ExecStart=/usr/local/bin/zitadel start --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml
Restart=always
RestartSec=5
TimeoutStartSec=0
# Security Hardening options
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now zitadel
msg_ok "Created Services"
msg_ok "Created Service"
msg_info "Zitadel initial setup"
zitadel start-from-init --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null &
sleep 60
kill $(lsof -i | awk '/zitadel/ {print $2}' | head -n1)
useradd zitadel
msg_ok "Zitadel initialized"
if [[ "$var_zitadel_login" != "v1" ]]; then
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "zitadel-login" "zitadel/zitadel" "prebuild" "latest" "/opt/zitadel-login" "zitadel-login.tar.gz"
msg_info "Set ExternalDomain to current IP and restart Zitadel"
IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
sed -i "0,/localhost/s/localhost/${IP}/" /opt/zitadel/config.yaml
systemctl stop -q zitadel
$STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml
systemctl restart -q zitadel
msg_ok "Zitadel restarted with ExternalDomain set to current IP"
msg_info "Create zitadel-rerun.sh"
cat <<EOF >~/zitadel-rerun.sh
systemctl stop zitadel
timeout --kill-after=5s 15s zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml
systemctl restart zitadel
msg_info "Setting up Zitadel Login"
$STD apt install -y nginx
create_self_signed_cert "zitadel"
cat <<EOF >/opt/zitadel/login.env
ZITADEL_API_URL=http://127.0.0.1:8081
ZITADEL_API_AWAITINITIALCONN=5m
ZITADEL_SERVICE_USER_TOKEN_FILE=/opt/zitadel/login-client.pat
ZITADEL_SESSION_COOKIE_SECRET=$(random_password 48)
NEXT_PUBLIC_BASE_PATH=/ui/v2/login
HOSTNAME=127.0.0.1
PORT=3000
EOF
msg_ok "Bash script for rerunning Zitadel after changing Zitadel config.yaml"
chmod 600 /opt/zitadel/login.env /opt/zitadel/login-client.pat
cat <<EOF >/etc/systemd/system/zitadel-login.service
[Unit]
Description=Zitadel Login
After=network.target zitadel.service
Wants=zitadel.service
[Service]
Type=simple
WorkingDirectory=/opt/zitadel-login
EnvironmentFile=/opt/zitadel/login.env
ExecStart=/opt/zitadel-login/entrypoint.sh node apps/login/server.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now zitadel-login
cat <<'EOF' >/etc/nginx/sites-available/zitadel
server {
listen 8080 ssl;
http2 on;
server_name _;
ssl_certificate /etc/ssl/zitadel/zitadel.crt;
ssl_certificate_key /etc/ssl/zitadel/zitadel.key;
error_page 497 =301 https://$http_host$request_uri;
location = / {
return 302 /ui/v2/login/;
}
location /ui/v2/login {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /api/ {
rewrite ^/api(/.*)$ $1 break;
grpc_pass grpc://127.0.0.1:8081;
grpc_set_header Host $http_host;
}
location / {
grpc_pass grpc://127.0.0.1:8081;
grpc_set_header Host $http_host;
}
}
EOF
nginx_enable_site "zitadel"
msg_ok "Set up Zitadel Login"
fi
motd_ssh
customize