Compare commits

..
Author SHA1 Message Date
github-actions[bot] 8539878be7 wikijs: bump Node.js from 24 to 26 2026-10-05 06:31:59 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] c225acc722 Update CHANGELOG.md (#17687)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-05 06:17:15 +00:00
Jason O'Brien aaa341b6b2 monitor-all: read container IP from the host side (#17686)
The CT check resolved the IP by running ip inside the guest via pct
exec, which depends on the guest having it installed. If not, this
always comes back empty, so the container is restarted every cycle
despite answering ping. lxc-info reports the addresses from the
host without running anything inside the guest.

Fixes #17685
2026-10-05 08:16:45 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 1142165f73 Update CHANGELOG.md (#17683)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 12:03:50 +00:00
CanbiZ (MickLesk) 63e2ce0849 immich: read the Intel runtime from the pinned release (#17677)
The URLs came from the ML Dockerfile on main, which upstream moved into
scripts/install-intel-runtime.sh, so update failed on the grep and
OpenVINO installs found no packages.
2026-10-04 14:03:24 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 2c33ecf7cf Update CHANGELOG.md (#17680)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 09:45:56 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 22a5672945 Update CHANGELOG.md (#17679)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 09:45:31 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] bee57cc60f Update CHANGELOG.md (#17678)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 09:45:09 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 5ae725fb1b Update CHANGELOG.md (#17671)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 00:50:10 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 5ef159a377 Archive old changelog entries (#17670)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-04 00:49:40 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 086ce89fc0 Update CHANGELOG.md (#17669)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 23:28:16 +00:00
CanbiZ (MickLesk) 713382315d hermesagent: download the installer before running it (#17666)
bash <(curl ...) ran an empty script when the download failed and exited 0, so the failure surfaced one line later as chmod on a missing directory.
2026-10-04 01:27:55 +02:00
CanbiZ (MickLesk) ca2bbb9b76 frigate: raise the Node heap for the web build (#17667) 2026-10-04 01:27:49 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 99746e749c Update CHANGELOG.md (#17664)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 18:51:21 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 65ec2b6667 Update CHANGELOG.md (#17663)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 18:49:43 +00:00
durzo a74f683fab Tracearr: workaround for failing map tiles download and data preservation (#17661) 2026-10-03 20:49:13 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 336b234951 Update CHANGELOG.md (#17660)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 14:58:45 +00:00
push-app-to-main[bot] 01906fe930 Add keeper (ct) (#17659)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-10-03 16:58:20 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 7a9fd31696 Update CHANGELOG.md (#17658)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 06:21:44 +00:00
PsycoStea fa4e227f7b fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth (#17653)
* fix(nginxproxymanager): clean yarn cache after builds

* fix(nginxproxymanager): clean yarn cache after builds
2026-10-03 08:21:16 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 075769abdc Update CHANGELOG.md (#17657)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-03 06:19:36 +00:00
CanbiZ (MickLesk) 7f57d0998c Refactor/core qol adoption (#17655)
* Scripts: close every msg_info block with msg_ok

Past-tense msg_info calls that should have been msg_ok, notices that opened a block before a prompt, and blocks without a closing msg_ok. These already left a stale spinner; with core's block stack they would resume it after every later msg_ok.

* Generate passwords with random_password

openssl rand -base64 | tr -dc | head -c returned fewer characters than asked for, and the unfiltered | cut variants put / and + into passwords that end up in DSNs and sed expressions. Secrets an app decodes as base64 are unchanged. Requires community-scripts/core#61.

* Keep data directories through CLEAN_INSTALL instead of copying them

create_backup copied uploads, storage and similar directories twice per update and needed their size again in free space. CLEAN_INSTALL_KEEP moves them aside instead. Only directories the upstream release does not ship, in scripts that restored right after the fetch. Requires community-scripts/core#61.

* Drop the 300s uv timeout overrides

setup_uv exports UV_HTTP_TIMEOUT=600 now; the scripts' 300 only lowered it. Requires community-scripts/core#61.
2026-10-03 08:19:10 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 45599d63ec Update CHANGELOG.md (#17656)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-02 19:02:46 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 924aa58d4a Update CHANGELOG.md (#17652)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-02 06:07:09 +00:00
CanbiZ (MickLesk) eead382524 zerobyte: upgrade Bun on update (#17646) 2026-10-02 08:06:43 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] a0a28d9a48 Update CHANGELOG.md (#17651)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-02 06:02:39 +00:00
CanbiZ (MickLesk) 4277a26af6 sure: keep Active Storage uploads across updates (#17648) 2026-10-02 08:02:17 +02:00
CanbiZ (MickLesk) 826a5d9612 twenty: run upstream's upgrade command instead of the removed setup-db.ts (#17647) 2026-10-02 08:02:14 +02:00
CanbiZ (MickLesk) 435aaaa299 NPM: Refactor / Fix npm openresty user and certbot version (#17649)
* nginxproxymanager: repair the nginx user even when the release is current

* nginxproxymanager: read the certbot version from its own line
2026-10-02 08:01:51 +02:00
CanbiZ (MickLesk) b4bf7aacf3 several scripts: use the release helpers instead of hand-rolled version checks and downloads (#17625)
* Use the release helpers instead of hand-rolled version checks and downloads

Legacy /opt/*_version.txt files move to ~/.<app> on the next update.

* homeassistant: use get_latest_github_release
2026-10-02 08:01:49 +02:00
208 changed files with 854 additions and 726 deletions
+84
View File
@@ -1,3 +1,87 @@
## 2026-09-30
### 🆕 New Scripts
- Shoko ([#17617](https://github.com/community-scripts/ProxmoxVE/pull/17617))
- SIlo ([#17614](https://github.com/community-scripts/ProxmoxVE/pull/17614))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(blocky): restart on failure and wait for network-online [@haplo](https://github.com/haplo) ([#17601](https://github.com/community-scripts/ProxmoxVE/pull/17601))
- SparkyFitness: update sed replacement [@tomfrenzel](https://github.com/tomfrenzel) ([#17604](https://github.com/community-scripts/ProxmoxVE/pull/17604))
### 💾 Core
- vm: autologin on the serial console for images without cloud-init [@MickLesk](https://github.com/MickLesk) ([core#80](https://github.com/community-scripts/core/pull/80))
- download_gpg_key: make dearmored keyrings world-readable [@MickLesk](https://github.com/MickLesk) ([core#79](https://github.com/community-scripts/core/pull/79))
## 2026-09-29
### 🆕 New Scripts
- Anki Sync Server ([#17416](https://github.com/community-scripts/ProxmoxVE/pull/17416))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(kaneo): build with Vite+ instead of Turbo [@tinsever](https://github.com/tinsever) ([#17599](https://github.com/community-scripts/ProxmoxVE/pull/17599))
- tianji: raise the Node heap for the static build on install [@MickLesk](https://github.com/MickLesk) ([#17582](https://github.com/community-scripts/ProxmoxVE/pull/17582))
- fix(romm): snapshot Redis hourly like the upstream image [@DenislavDenev](https://github.com/DenislavDenev) ([#17562](https://github.com/community-scripts/ProxmoxVE/pull/17562))
- checkmate: bump Node.js from 22 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#17554](https://github.com/community-scripts/ProxmoxVE/pull/17554))
- #### 🔧 Refactor
- Drop the scripts base pin from every ct/ script [@MickLesk](https://github.com/MickLesk) ([#17585](https://github.com/community-scripts/ProxmoxVE/pull/17585))
- odoo: move to Debian 13 and stay on the installed major on update [@MickLesk](https://github.com/MickLesk) ([#17581](https://github.com/community-scripts/ProxmoxVE/pull/17581))
- manyfold: use upstream f3d for headless renders on amd64 [@MickLesk](https://github.com/MickLesk) ([#17583](https://github.com/community-scripts/ProxmoxVE/pull/17583))
### 💾 Core
- Default the scripts base to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#76](https://github.com/community-scripts/core/pull/76))
### 🧰 Tools
- #### 🐞 Bug Fixes
- all-templates: handle the arch column of pveam available [@MickLesk](https://github.com/MickLesk) ([#17579](https://github.com/community-scripts/ProxmoxVE/pull/17579))
### 📂 Github
- Skip automated core pull requests in the changelog [@MickLesk](https://github.com/MickLesk) ([#17589](https://github.com/community-scripts/ProxmoxVE/pull/17589))
- Post a test command for vm/, tools/ and turnkey/ changes too [@MickLesk](https://github.com/MickLesk) ([#17587](https://github.com/community-scripts/ProxmoxVE/pull/17587))
- Remove the PocketBase AI bot [@MickLesk](https://github.com/MickLesk) ([#17591](https://github.com/community-scripts/ProxmoxVE/pull/17591))
## 2026-09-28
### 🚀 Updated Scripts
- Immich: Pin version to 3.2.4 [@vhsdream](https://github.com/vhsdream) ([#17564](https://github.com/community-scripts/ProxmoxVE/pull/17564))
- #### 🐞 Bug Fixes
- fix(autocaliweb): wire .env into all service units, not just autocali… [@bobartlett](https://github.com/bobartlett) ([#17561](https://github.com/community-scripts/ProxmoxVE/pull/17561))
- Zipline: Change cp command [@Mraedis](https://github.com/Mraedis) ([#17559](https://github.com/community-scripts/ProxmoxVE/pull/17559))
- Borg-UI: start through upstream's start.sh so migrations run [@MickLesk](https://github.com/MickLesk) ([#17563](https://github.com/community-scripts/ProxmoxVE/pull/17563))
- linkding: serve favicons and preview images [@MickLesk](https://github.com/MickLesk) ([#17557](https://github.com/community-scripts/ProxmoxVE/pull/17557))
- SparkyFitness: Fill in the nginx resolver 1.7.3 added [@MickLesk](https://github.com/MickLesk) ([#17556](https://github.com/community-scripts/ProxmoxVE/pull/17556))
- #### 🔧 Refactor
- Plane: Replace MinIO installation with Silo [@MickLesk](https://github.com/MickLesk) ([#17347](https://github.com/community-scripts/ProxmoxVE/pull/17347))
## 2026-09-27
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(aurral): bump to Node 26 and bypass strict engine pin [@JodyVanden](https://github.com/JodyVanden) ([#17543](https://github.com/community-scripts/ProxmoxVE/pull/17543))
- Tracearr: fetch map tiles on install/update [@durzo](https://github.com/durzo) ([#17544](https://github.com/community-scripts/ProxmoxVE/pull/17544))
- fix(autocaliweb): define INSTALL_DIR before first use [@bobartlett](https://github.com/bobartlett) ([#17545](https://github.com/community-scripts/ProxmoxVE/pull/17545))
## 2026-09-26
### 🚀 Updated Scripts
+74
View File
@@ -0,0 +1,74 @@
## 2026-10-03
### 🆕 New Scripts
- Keeper.sh ([#17659](https://github.com/community-scripts/ProxmoxVE/pull/17659))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- hermesagent: download the installer before running it [@MickLesk](https://github.com/MickLesk) ([#17666](https://github.com/community-scripts/ProxmoxVE/pull/17666))
- frigate: raise the Node heap for the web build [@MickLesk](https://github.com/MickLesk) ([#17667](https://github.com/community-scripts/ProxmoxVE/pull/17667))
- Tracearr: workaround for failing map tiles download and data preservation [@durzo](https://github.com/durzo) ([#17661](https://github.com/community-scripts/ProxmoxVE/pull/17661))
- fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth [@PsycoStea](https://github.com/PsycoStea) ([#17653](https://github.com/community-scripts/ProxmoxVE/pull/17653))
- #### 🔧 Refactor
- Several Scripts: refactor msg_ blocks, generate passwords with helper, add CLEAN_INSTALL_KEEP [@MickLesk](https://github.com/MickLesk) ([#17655](https://github.com/community-scripts/ProxmoxVE/pull/17655))
### 💾 Core
- detect_repo_source: read the license header and fall back to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#85](https://github.com/community-scripts/core/pull/85))
## 2026-10-02
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- zerobyte: upgrade Bun on update [@MickLesk](https://github.com/MickLesk) ([#17646](https://github.com/community-scripts/ProxmoxVE/pull/17646))
- sure: keep Active Storage uploads across updates [@MickLesk](https://github.com/MickLesk) ([#17648](https://github.com/community-scripts/ProxmoxVE/pull/17648))
- twenty: run upstreams upgrade command instead of the removed setup-db.ts [@MickLesk](https://github.com/MickLesk) ([#17647](https://github.com/community-scripts/ProxmoxVE/pull/17647))
- #### 🔧 Refactor
- NPM: Refactor / Fix npm openresty user and certbot version [@MickLesk](https://github.com/MickLesk) ([#17649](https://github.com/community-scripts/ProxmoxVE/pull/17649))
- several scripts: use the release helpers instead of hand-rolled version checks and downloads [@MickLesk](https://github.com/MickLesk) ([#17625](https://github.com/community-scripts/ProxmoxVE/pull/17625))
### 💾 Core
- QoL: message blocks, clean-install keep list, password helper, network limits [@MickLesk](https://github.com/MickLesk) ([core#61](https://github.com/community-scripts/core/pull/61))
## 2026-10-01
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- romm: keep the asset links in sync with ROMM_BASE_PATH [@MickLesk](https://github.com/MickLesk) ([#17610](https://github.com/community-scripts/ProxmoxVE/pull/17610))
- teslamate: build from the elixir directory since 4.3.0 [@MickLesk](https://github.com/MickLesk) ([#17612](https://github.com/community-scripts/ProxmoxVE/pull/17612))
- #### ✨ New Features
- feat(glance): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17605](https://github.com/community-scripts/ProxmoxVE/pull/17605))
- feat(blocky): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17637](https://github.com/community-scripts/ProxmoxVE/pull/17637))
- #### 🔧 Refactor
- several scripts: apt instead of apt-get, cleanup_lxc, nginx_enable_site, drop needless daemon-reloads [@MickLesk](https://github.com/MickLesk) ([#17624](https://github.com/community-scripts/ProxmoxVE/pull/17624))
- several scripts: use setup_postgresql_db / setup_mariadb_db instead of hand-written SQL [@MickLesk](https://github.com/MickLesk) ([#17622](https://github.com/community-scripts/ProxmoxVE/pull/17622))
### 💾 Core
- Offer to raise the kernel key limits instead of only naming them [@MickLesk](https://github.com/MickLesk) ([core#81](https://github.com/community-scripts/core/pull/81))
### 🧰 Tools
- #### 🔧 Refactor
- tools, turnkey: load core instead of the legacy misc functions [@MickLesk](https://github.com/MickLesk) ([#17621](https://github.com/community-scripts/ProxmoxVE/pull/17621))
### 📚 Documentation
- chore: drop the local header generation; headers come from core [@MickLesk](https://github.com/MickLesk) ([#17623](https://github.com/community-scripts/ProxmoxVE/pull/17623))
+76 -161
View File
@@ -110,6 +110,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
@@ -123,7 +126,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
<details>
<summary><h4>September (26 entries)</h4></summary>
<summary><h4>October (3 entries)</h4></summary>
[View October 2026 Changelog](.github/changelogs/2026/10.md)
</details>
<details>
<summary><h4>September (30 entries)</h4></summary>
[View September 2026 Changelog](.github/changelogs/2026/09.md)
@@ -549,6 +559,70 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-10-05
### 🧰 Tools
- #### 🐞 Bug Fixes
- monitor-all: read container IPs from the host side [@jasonobrien](https://github.com/jasonobrien) ([#17686](https://github.com/community-scripts/ProxmoxVE/pull/17686))
## 2026-10-04
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- immich: read the Intel runtime from the pinned release [@MickLesk](https://github.com/MickLesk) ([#17677](https://github.com/community-scripts/ProxmoxVE/pull/17677))
### 💾 Core
- better explain unsupported version & upgrade path for pve [@MickLesk](https://github.com/MickLesk) ([core#86](https://github.com/community-scripts/core/pull/86))
- Quote PostgreSQL identifiers and drop spaces from the creds file name [@MickLesk](https://github.com/MickLesk) ([core#89](https://github.com/community-scripts/core/pull/89))
- Find the default Rust toolchain in current rustup output [@MickLesk](https://github.com/MickLesk) ([core#88](https://github.com/community-scripts/core/pull/88))
## 2026-10-03
### 🆕 New Scripts
- Keeper.sh ([#17659](https://github.com/community-scripts/ProxmoxVE/pull/17659))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- hermesagent: download the installer before running it [@MickLesk](https://github.com/MickLesk) ([#17666](https://github.com/community-scripts/ProxmoxVE/pull/17666))
- frigate: raise the Node heap for the web build [@MickLesk](https://github.com/MickLesk) ([#17667](https://github.com/community-scripts/ProxmoxVE/pull/17667))
- Tracearr: workaround for failing map tiles download and data preservation [@durzo](https://github.com/durzo) ([#17661](https://github.com/community-scripts/ProxmoxVE/pull/17661))
- fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth [@PsycoStea](https://github.com/PsycoStea) ([#17653](https://github.com/community-scripts/ProxmoxVE/pull/17653))
- #### 🔧 Refactor
- Several Scripts: refactor msg_ blocks, generate passwords with helper, add CLEAN_INSTALL_KEEP [@MickLesk](https://github.com/MickLesk) ([#17655](https://github.com/community-scripts/ProxmoxVE/pull/17655))
### 💾 Core
- detect_repo_source: read the license header and fall back to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#85](https://github.com/community-scripts/core/pull/85))
## 2026-10-02
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- zerobyte: upgrade Bun on update [@MickLesk](https://github.com/MickLesk) ([#17646](https://github.com/community-scripts/ProxmoxVE/pull/17646))
- sure: keep Active Storage uploads across updates [@MickLesk](https://github.com/MickLesk) ([#17648](https://github.com/community-scripts/ProxmoxVE/pull/17648))
- twenty: run upstreams upgrade command instead of the removed setup-db.ts [@MickLesk](https://github.com/MickLesk) ([#17647](https://github.com/community-scripts/ProxmoxVE/pull/17647))
- #### 🔧 Refactor
- NPM: Refactor / Fix npm openresty user and certbot version [@MickLesk](https://github.com/MickLesk) ([#17649](https://github.com/community-scripts/ProxmoxVE/pull/17649))
- several scripts: use the release helpers instead of hand-rolled version checks and downloads [@MickLesk](https://github.com/MickLesk) ([#17625](https://github.com/community-scripts/ProxmoxVE/pull/17625))
### 💾 Core
- QoL: message blocks, clean-install keep list, password helper, network limits [@MickLesk](https://github.com/MickLesk) ([core#61](https://github.com/community-scripts/core/pull/61))
## 2026-10-01
### 🚀 Updated Scripts
@@ -1172,163 +1246,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
### 💾 Core
- setup_go: resolve bare major.minor versions to the latest patch release [@MickLesk](https://github.com/MickLesk) ([core#24](https://github.com/community-scripts/core/pull/24))
## 2026-09-03
### 🚀 Updated Scripts
- Immich: bump libheif and libraw [@vhsdream](https://github.com/vhsdream) ([#16996](https://github.com/community-scripts/ProxmoxVE/pull/16996))
- #### 🐞 Bug Fixes
- romm: allow git-based npm dependency for rom-patcher under npm v12 [@MickLesk](https://github.com/MickLesk) ([#16990](https://github.com/community-scripts/ProxmoxVE/pull/16990))
- Pin Go to the version each project declares in go.mod [@MickLesk](https://github.com/MickLesk) ([#16976](https://github.com/community-scripts/ProxmoxVE/pull/16976))
- Authentik update 2026.8.1 [@thieneret](https://github.com/thieneret) ([#16980](https://github.com/community-scripts/ProxmoxVE/pull/16980))
## 2026-09-02
### 🆕 New Scripts
- OwnTracks-Recorder ([#16967](https://github.com/community-scripts/ProxmoxVE/pull/16967))
- PeerTube ([#16966](https://github.com/community-scripts/ProxmoxVE/pull/16966))
- Kaneo ([#16965](https://github.com/community-scripts/ProxmoxVE/pull/16965))
- JDownloader ([#16964](https://github.com/community-scripts/ProxmoxVE/pull/16964))
- ReadMeABook ([#16963](https://github.com/community-scripts/ProxmoxVE/pull/16963))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Enhance backup process in teddycloud.sh [@MickLesk](https://github.com/MickLesk) ([#16946](https://github.com/community-scripts/ProxmoxVE/pull/16946))
- mealie: copy Nuxt generate output and use pnpm when lockfile is present [@mjhuff](https://github.com/mjhuff) ([#16938](https://github.com/community-scripts/ProxmoxVE/pull/16938))
- OpenThread-BR: Clean build directory before update [@tomfrenzel](https://github.com/tomfrenzel) ([#16949](https://github.com/community-scripts/ProxmoxVE/pull/16949))
- #### 🔧 Refactor
- Scripts: use shared core bootstrap for final 114 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16953](https://github.com/community-scripts/ProxmoxVE/pull/16953))
- Scripts: use shared core bootstrap for next 115 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16952](https://github.com/community-scripts/ProxmoxVE/pull/16952))
- Scripts: use shared core bootstrap for next 115 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16951](https://github.com/community-scripts/ProxmoxVE/pull/16951))
- Scripts: use shared core bootstrap for next 100 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16950](https://github.com/community-scripts/ProxmoxVE/pull/16950))
### 💾 Core
- setup_meilisearch: generate a 32-byte master key [@MickLesk](https://github.com/MickLesk) ([core#20](https://github.com/community-scripts/core/pull/20))
- setup_meilisearch: generate a 32-byte master key [@MickLesk](https://github.com/MickLesk) ([core#19](https://github.com/community-scripts/core/pull/19))
- setup_nodejs: restore the npm allowScripts bypass lost in the migration [@MickLesk](https://github.com/MickLesk) ([core#18](https://github.com/community-scripts/core/pull/18))
## 2026-09-01
### 🆕 New Scripts
- Mailpit ([#16942](https://github.com/community-scripts/ProxmoxVE/pull/16942))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Revert Aurral to Node22 [@Copilot](https://github.com/Copilot) ([#16930](https://github.com/community-scripts/ProxmoxVE/pull/16930))
- jellyfin: verify repo suite via fallback chain and use ensure_dependencies for clearer apt failures [@MickLesk](https://github.com/MickLesk) ([#16916](https://github.com/community-scripts/ProxmoxVE/pull/16916))
- #### 🔧 Refactor
- Move the next 25 scripts onto the core engine [@MickLesk](https://github.com/MickLesk) ([#16934](https://github.com/community-scripts/ProxmoxVE/pull/16934))
### 💾 Core
- Generate app headers [@github-actions[bot]](https://github.com/github-actions[bot]) ([core#15](https://github.com/community-scripts/core/pull/15))
- Report the exit code the engine actually saw [@MickLesk](https://github.com/MickLesk) ([core#17](https://github.com/community-scripts/core/pull/17))
- Silence npm's update notice so the real error stays visible [@MickLesk](https://github.com/MickLesk) ([core#16](https://github.com/community-scripts/core/pull/16))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix(add-iptag): merge live IPv4 addresses for running LXCs [@phillf](https://github.com/phillf) ([#16691](https://github.com/community-scripts/ProxmoxVE/pull/16691))
## 2026-08-31
### 🆕 New Scripts
- Aurral ([#16908](https://github.com/community-scripts/ProxmoxVE/pull/16908))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- openwebui: add UV_HTTP_TIMEOUT and retry loop to prevent uv install hangs [@MickLesk](https://github.com/MickLesk) ([#16917](https://github.com/community-scripts/ProxmoxVE/pull/16917))
- bambuddy: force asyncio loop, uvloop breaks camera proxy handlers [@MickLesk](https://github.com/MickLesk) ([#16904](https://github.com/community-scripts/ProxmoxVE/pull/16904))
- bookorbit: raise service start timeout, migration can exceed systemd default [@MickLesk](https://github.com/MickLesk) ([#16860](https://github.com/community-scripts/ProxmoxVE/pull/16860))
- node-red: remove --unsafe-perm flag [@MickLesk](https://github.com/MickLesk) ([#16859](https://github.com/community-scripts/ProxmoxVE/pull/16859))
- directus: add build-essential dependency [@MickLesk](https://github.com/MickLesk) ([#16858](https://github.com/community-scripts/ProxmoxVE/pull/16858))
- #### ✨ New Features
- haos-vm: add optional x86-64-v2-AES CPU option, future HA numpy builds need it [@MickLesk](https://github.com/MickLesk) ([#16868](https://github.com/community-scripts/ProxmoxVE/pull/16868))
- #### 🔧 Refactor
- omv: migrate to new package repo host (packages.openmediavault.org) is dead [@MickLesk](https://github.com/MickLesk) ([#16918](https://github.com/community-scripts/ProxmoxVE/pull/16918))
- yuvomi/aurral: bump NODE_VERSION [@MickLesk](https://github.com/MickLesk) ([#16914](https://github.com/community-scripts/ProxmoxVE/pull/16914))
- vaultwarden: relax cargo release profile via env vars to avoid build OOM [@MickLesk](https://github.com/MickLesk) ([#16915](https://github.com/community-scripts/ProxmoxVE/pull/16915))
- kima-hub/maintainerr/planka/spliit: bump NODE_VERSION [@MickLesk](https://github.com/MickLesk) ([#16905](https://github.com/community-scripts/ProxmoxVE/pull/16905))
- gatus: pin Go toolchain to gatus's own go.mod version [@MickLesk](https://github.com/MickLesk) ([#16893](https://github.com/community-scripts/ProxmoxVE/pull/16893))
- immich: tolerate enable-maintenance-mode crash, same as disable-maintenance-mode [@MickLesk](https://github.com/MickLesk) ([#16866](https://github.com/community-scripts/ProxmoxVE/pull/16866))
- move the hardware-accelerated scripts onto new core [@MickLesk](https://github.com/MickLesk) ([#16864](https://github.com/community-scripts/ProxmoxVE/pull/16864))
- ntopng: use ntop.org's documented apt repo per Debian codename, not always apt-stable [@MickLesk](https://github.com/MickLesk) ([#16862](https://github.com/community-scripts/ProxmoxVE/pull/16862))
- Refactor: OpenGist [@MickLesk](https://github.com/MickLesk) ([#16861](https://github.com/community-scripts/ProxmoxVE/pull/16861))
### 💾 Core
- Refactor VM script settings and fix load_functions errors [@MickLesk](https://github.com/MickLesk) ([core#13](https://github.com/community-scripts/core/pull/13))
- Ask ProxmoxVE to refresh its changelog on merge [@MickLesk](https://github.com/MickLesk) ([core#11](https://github.com/community-scripts/core/pull/11))
- Lift the settings summary and the mode fork into vm-core [@MickLesk](https://github.com/MickLesk) ([core#12](https://github.com/community-scripts/core/pull/12))
### 🧰 Tools
- #### 🐞 Bug Fixes
- filebrowser-quantum: strip removed disableIndexing key on update, restart service [@MickLesk](https://github.com/MickLesk) ([#16892](https://github.com/community-scripts/ProxmoxVE/pull/16892))
### 📚 Documentation
- Include engine pull requests in the changelog [@MickLesk](https://github.com/MickLesk) ([#16867](https://github.com/community-scripts/ProxmoxVE/pull/16867))
## 2026-08-30
### 🆕 New Scripts
- SolidInvoice ([#16869](https://github.com/community-scripts/ProxmoxVE/pull/16869))
- Super-Productivity ([#16870](https://github.com/community-scripts/ProxmoxVE/pull/16870))
- Defguard ([#16871](https://github.com/community-scripts/ProxmoxVE/pull/16871))
- OpenBao ([#16872](https://github.com/community-scripts/ProxmoxVE/pull/16872))
### 🚀 Updated Scripts
- #### 🔧 Refactor
- general: remove gitea links overall [@MickLesk](https://github.com/MickLesk) ([#16863](https://github.com/community-scripts/ProxmoxVE/pull/16863))
## 2026-08-29
### 📚 Documentation
- github action: post the command that tests a ct/ or install/ change [@MickLesk](https://github.com/MickLesk) ([#16833](https://github.com/community-scripts/ProxmoxVE/pull/16833))
## 2026-08-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- homepage: set CI=true so pnpm can self-heal node_modules without a TTY [@MickLesk](https://github.com/MickLesk) ([#16841](https://github.com/community-scripts/ProxmoxVE/pull/16841))
- droppedneedle: launch via automatic_upgrade orchestrator [@MickLesk](https://github.com/MickLesk) ([#16834](https://github.com/community-scripts/ProxmoxVE/pull/16834))
- calibre-web: point cps at explicit db path, src-layout package has no default anymore [@MickLesk](https://github.com/MickLesk) ([#16832](https://github.com/community-scripts/ProxmoxVE/pull/16832))
- podman: pull portainer images before systemd unit start to avoid start timeout [@MickLesk](https://github.com/MickLesk) ([#16831](https://github.com/community-scripts/ProxmoxVE/pull/16831))
- gitea: make gitea own its home dir instead of toggling group perms [@MickLesk](https://github.com/MickLesk) ([#16830](https://github.com/community-scripts/ProxmoxVE/pull/16830))
- pve-ups: fix: add pip binary [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16820](https://github.com/community-scripts/ProxmoxVE/pull/16820))
- #### 🔧 Refactor
- Refactor: Calibre-Web database creation [@MickLesk](https://github.com/MickLesk) ([#16842](https://github.com/community-scripts/ProxmoxVE/pull/16842))
- mastodon: read .ruby-version dynamically instead of hardcoding 4.0.5 [@MickLesk](https://github.com/MickLesk) ([#16829](https://github.com/community-scripts/ProxmoxVE/pull/16829))
- setup_go: resolve bare major.minor versions to the latest patch release [@MickLesk](https://github.com/MickLesk) ([core#24](https://github.com/community-scripts/core/pull/24))
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop airtrail
msg_ok "Stopped Service"
create_backup /opt/airtrail/.env /opt/airtrail/uploads
create_backup /opt/airtrail/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="uploads" fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail"
restore_backup
+1 -3
View File
@@ -48,9 +48,7 @@ function update_script() {
exit
fi
msg_info "Setting up SSH Public Key for backup user"
msg_info "Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host): \n"
echo -e "${INFO}${YW}Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host):${CL}"
read -p "Key: " SSH_PUBLIC_KEY
echo
+6 -13
View File
@@ -29,20 +29,13 @@ function update_script() {
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
msg_info "Updating ${APP} LXC"
curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
mkdir -p /usr/share/nginx/html
rm -rf /usr/share/nginx/html/*
$STD unzip it-tools.zip -d /tmp
cp -r /tmp/dist/* /usr/share/nginx/html
rm -rf /tmp/dist
rm -f it-tools.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
if [[ -f /opt/${APP}_version.txt ]]; then
mv /opt/"${APP}_version.txt" ~/.it-tools
fi
if check_for_gh_release "it-tools" "sharevb/it-tools"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "it-tools" "sharevb/it-tools" "prebuild" "latest" "/usr/share/nginx/html" "it-tools-*.zip"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}
+2 -2
View File
@@ -31,7 +31,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -62,7 +62,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+3 -16
View File
@@ -29,8 +29,7 @@ function update_script() {
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/muety/wakapi/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [ "${RELEASE}" != "$(cat ~/.wakapi 2>/dev/null)" ] || [ ! -f ~/.wakapi ]; then
if check_for_gh_release "wakapi" "muety/wakapi"; then
msg_info "Stopping Wakapi Service"
$STD rc-service wakapi stop
msg_ok "Stopped Wakapi Service"
@@ -39,26 +38,14 @@ function update_script() {
$STD apk -U upgrade
msg_ok "Updated Wakapi LXC"
msg_info "Creating backup"
mkdir -p /opt/wakapi-backup
cp /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db /opt/wakapi-backup/
msg_ok "Created backup"
create_backup /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip"
msg_info "Configuring Wakapi"
cd /opt/wakapi
cp /opt/wakapi-backup/config.yml /opt/wakapi/
cp /opt/wakapi-backup/wakapi_db.db /opt/wakapi/
rm -rf /opt/wakapi-backup
msg_ok "Configured Wakapi"
restore_backup
msg_info "Starting Service"
$STD rc-service wakapi start
msg_ok "Started Service"
msg_ok "Updated successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit 0
}
-1
View File
@@ -136,7 +136,6 @@ function update_script() {
export UV_COMPILE_BYTECODE="1"
export UV_LINK_MODE="copy"
export UV_NATIVE_TLS="1"
export UV_HTTP_TIMEOUT="300"
export RUSTUP_PERMIT_COPY_RENAME="true"
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
cd /opt/authentik
+1 -1
View File
@@ -58,7 +58,7 @@ function update_script() {
mkdir -p "$INSTALL_DIR"/metadata_temp
$STD tar -xf ~/autocaliweb_bkp.tar --directory /
KEPUB_VERSION="$(/usr/bin/kepubify --version)"
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
CALIBRE_RELEASE="$(get_latest_github_release "kovidgoyal/calibre")"
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "beszel" "henrygd/beszel"; then
msg_info "Stopping Service"
systemctl stop beszel-hub
msg_info "Stopped Service"
msg_ok "Stopped Service"
msg_info "Updating Beszel"
$STD /opt/beszel/beszel update
+18 -19
View File
@@ -75,8 +75,7 @@ update_deb_based() {
msg_info "Configuring Bitmagnet"
cd /opt/bitmagnet
VREL=v$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=v$(cat ~/.bitmagnet)"
chmod +x bitmagnet
msg_ok "Configured Bitmagnet"
@@ -92,8 +91,10 @@ update_alpine() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
if [[ -f /opt/bitmagnet_version.txt ]]; then
mv /opt/bitmagnet_version.txt ~/.bitmagnet
fi
if check_for_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"; then
msg_info "Backing up database"
rm -f /tmp/backup.sql
$STD sudo -u postgres pg_dump \
@@ -119,27 +120,25 @@ update_alpine() {
mv /tmp/backup.sql /opt/
msg_ok "Database backed up"
msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
msg_info "Stopping Service"
$STD apk -U upgrade
$STD service bitmagnet stop
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
rm -rf /opt/bitmagnet/*
temp_file=$(mktemp)
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
msg_ok "Stopped Service"
create_backup /opt/bitmagnet/.env /opt/bitmagnet/config.yml
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball"
restore_backup
msg_info "Building ${APP}"
cd /opt/bitmagnet
VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=v$(cat ~/.bitmagnet)"
chmod +x bitmagnet
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
rm -f "$temp_file"
echo "${RELEASE}" >/opt/bitmagnet_version.txt
msg_ok "Built ${APP}"
msg_info "Starting Service"
$STD service bitmagnet start
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
}
+2 -4
View File
@@ -38,11 +38,9 @@ function update_script() {
systemctl stop nginx "$PHP_FPM_SERVICE"
msg_ok "Stopped Services"
create_backup /opt/chevereto/app/env.php \
/opt/chevereto/images \
/opt/chevereto/content
create_backup /opt/chevereto/app/env.php /opt/chevereto/content
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="images" fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball"
restore_backup
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then
msg_info "Stopping Service"
systemctl stop cloudreve
msg_info "Stopped Service"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz"
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then
msg_info "Stopping Service"
systemctl stop convertx
msg_info "Stopped Service"
msg_ok "Stopped Service"
ensure_dependencies libreoffice-writer dasel graphicsmagick libemail-outlook-message-perl libheif-examples libjxl-tools resvg
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
echo -e "${TAB}${TAB}${GN}update_coolify${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -58,7 +58,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_coolify 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+3 -10
View File
@@ -33,18 +33,11 @@ function update_script() {
if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then
msg_info "Stopping Service"
systemctl stop cryptpad
msg_info "Stopped Service"
msg_ok "Stopped Service"
create_backup /opt/cryptpad/config/config.js \
/opt/cryptpad/blob \
/opt/cryptpad/block \
/opt/cryptpad/customize \
/opt/cryptpad/data \
/opt/cryptpad/datastore \
/opt/cryptpad/www/common/onlyoffice/dist \
/opt/cryptpad/onlyoffice-conf
create_backup /opt/cryptpad/config/config.js /opt/cryptpad/www/common/onlyoffice/dist
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="blob block customize data datastore onlyoffice-conf" fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
restore_backup
+1 -2
View File
@@ -137,7 +137,6 @@ EOF
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}" -p "${POSTGRES_PORT:-5432}" "$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
@@ -150,7 +149,7 @@ EOF
msg_info "Updating Dispatcharr Backend"
if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
DJANGO_SECRET=$(random_password 50)
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env
fi
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
echo -e "${TAB}${TAB}${GN}update_dockge${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -60,7 +60,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_dockge 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+2 -2
View File
@@ -38,9 +38,9 @@ function update_script() {
systemctl stop docmost
msg_ok "Stopped Service"
create_backup /opt/docmost/.env /opt/docmost/data
create_backup /opt/docmost/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
restore_backup
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
echo -e "${TAB}${TAB}${GN}update_dokploy${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -58,7 +58,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_dokploy 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then
msg_info "Stopping Service"
systemctl stop domain-locker
msg_info "Service stopped"
msg_ok "Stopped Service"
PG_VERSION="17" setup_postgresql
NODE_VERSION="22" setup_nodejs
@@ -51,7 +51,7 @@ function update_script() {
source /opt/domain-locker.env
set +a
$STD npm run build
msg_info "Built Domain-Locker"
msg_ok "Built Domain-Locker"
msg_info "Restarting Services"
systemctl start domain-locker
+1 -1
View File
@@ -42,7 +42,7 @@ function update_script() {
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_info "Service stopped"
msg_ok "Stopped Service"
create_backup /opt/domain-monitor/.env
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "duplicati" "duplicati/duplicati"; then
msg_info "Stopping Service"
systemctl stop duplicati
msg_info "Stopped Service"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb"
+1 -1
View File
@@ -36,7 +36,7 @@ function update_script() {
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
msg_info "Stopping Service"
systemctl stop excalidraw
msg_info "Stopped Service"
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
+2 -3
View File
@@ -36,9 +36,8 @@ function update_script() {
systemctl stop flame
msg_ok "Stopped Service"
create_backup /opt/flame/.env \
/opt/flame/data
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
create_backup /opt/flame/.env
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
restore_backup
msg_info "Rebuilding Application"
+1 -1
View File
@@ -37,7 +37,7 @@ function update_script() {
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
msg_info "Stopping Service"
systemctl stop fluid-calendar
msg_info "Stopped Service"
msg_ok "Stopped Service"
create_backup /opt/fluid-calendar/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
+2 -2
View File
@@ -50,10 +50,10 @@ function update_script() {
echo ""
read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2
if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then
msg_info "Update cancelled. Please backup your configuration before proceeding."
msg_warn "Update cancelled. Please backup your configuration before proceeding."
exit 0
fi
msg_info "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
msg_warn "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
rm -rf /opt/gitea-mirror
fi
+4 -4
View File
@@ -31,11 +31,11 @@ function update_script() {
exit
fi
setup_mariadb
RELEASE=$(curl -fsSL https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if [[ -f /opt/${APP}_version.txt ]]; then
mv /opt/"${APP}_version.txt" ~/.glpi
fi
if check_for_gh_release "glpi" "glpi-project/glpi"; then
msg_error "Currently we don't provide an update function for this ${APP}."
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi
exit
}
+1 -1
View File
@@ -34,7 +34,7 @@ function update_script() {
msg_info "Stopping Service"
systemctl stop graylog-datanode
systemctl stop graylog-server
msg_info "Stopped Service"
msg_ok "Stopped Service"
CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+')
+2 -2
View File
@@ -38,9 +38,9 @@ function update_script() {
systemctl stop grist
msg_ok "Stopped Service"
create_backup /opt/grist/.env /opt/grist/docs /opt/grist/grist-sessions.db /opt/grist/landing.db
create_backup /opt/grist/.env /opt/grist/grist-sessions.db /opt/grist/landing.db
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="docs" fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
restore_backup
+1 -1
View File
@@ -50,7 +50,7 @@ function update_script() {
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
if ! grep -q "HBOX_AUTH_API_KEY_PEPPER" /opt/homebox/.env; then
AUTH_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
AUTH_KEY=$(random_password 32)
echo "HBOX_AUTH_API_KEY_PEPPER=${AUTH_KEY}" >>/opt/homebox/.env
fi
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop homelable
msg_ok "Stopped Service"
create_backup /opt/homelable/backend/.env /opt/homelable/data /opt/homelable/mcp/.env
create_backup /opt/homelable/backend/.env /opt/homelable/mcp/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
restore_backup
+2 -2
View File
@@ -38,10 +38,10 @@ function update_script() {
systemctl stop homepage
msg_ok "Stopped service"
create_backup /opt/homepage/.env /opt/homepage/config
create_backup /opt/homepage/.env
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="config" fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
restore_backup
+2 -7
View File
@@ -55,18 +55,13 @@ function update_script() {
printf '["%s"]\n' "$(<~/.hortusfox)" >app/migrations/verhist.json
fi
create_backup \
/opt/hortusfox/.env \
create_backup /opt/hortusfox/.env \
/opt/hortusfox/app/migrations/migrations.list \
/opt/hortusfox/app/migrations/verhist.json \
/opt/hortusfox/public/img \
/opt/hortusfox/public/attachments \
/opt/hortusfox/public/backup \
/opt/hortusfox/public/exports \
/opt/hortusfox/public/snd \
/opt/hortusfox/public/themes
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="public/attachments public/backup public/exports public/snd" fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
restore_backup
msg_info "Updating HortusFox"
+10 -10
View File
@@ -77,14 +77,17 @@ EOF
BASE_DIR=${STAGING_DIR}/base-images
SOURCE_DIR=${STAGING_DIR}/image-source
cd /tmp
RELEASE="v3.2.4"
if [[ -f ~/.intel_version ]]; then
curl_with_retry "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/machine-learning/Dockerfile" "Dockerfile"
readarray -t INTEL_URLS < <(
sed -n "/intel-[igc|opencl]/p" ./Dockerfile | awk '{print $3}'
sed -n "/libigdgmm12/p" ./Dockerfile | awk '{print $3}'
)
INTEL_RELEASE="$(grep "intel-opencl-icd_" ./Dockerfile | awk -F '_' '{print $2}')"
if [[ "$INTEL_RELEASE" != "$(cat ~/.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 ||
curl_with_retry "${INTEL_SRC}/Dockerfile" "./intel-runtime"
readarray -t INTEL_URLS < <(grep -oE 'https://github\.com/intel/[^[:space:]]+\.deb' ./intel-runtime)
INTEL_RELEASE="$(grep -oE 'intel-opencl-icd_[^_]+' ./intel-runtime | cut -d_ -f2)" || true
rm -f ./intel-runtime
if [[ -z "$INTEL_RELEASE" ]]; then
msg_warn "No Intel runtime found for Immich ${RELEASE}, keeping the installed one"
elif [[ "$INTEL_RELEASE" != "$(cat ~/.intel_version)" ]]; then
msg_info "Updating Intel OpenVINO dependencies"
for url in "${INTEL_URLS[@]}"; do
curl_with_retry "$url" "$(basename "$url")"
@@ -96,7 +99,6 @@ EOF
rm ./*.deb
$STD apt-mark hold libigdgmm12
dpkg-query -W -f='${Version}\n' intel-opencl-icd >~/.intel_version
rm -f ./Dockerfile
msg_ok "Updated Intel OpenVINO dependencies"
fi
fi
@@ -112,7 +114,6 @@ EOF
msg_ok "Image-processing libraries up to date"
fi
RELEASE="v3.2.4"
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
msg_info "Enabling Maintenance Mode"
@@ -262,7 +263,6 @@ EOF
chown immich:immich "${UPLOAD_DIR:-$INSTALL_DIR/upload}" 2>/dev/null || true
chown immich:immich ./uv.lock
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
export UV_HTTP_TIMEOUT=300
if [[ -f ~/.openvino ]]; then
ML_PYTHON="python3.13"
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
+2 -2
View File
@@ -42,9 +42,9 @@ function update_script() {
NODE_VERSION="22" setup_nodejs
PG_VERSION="17" setup_postgresql
create_backup /opt/investbrain/.env /opt/investbrain/storage
create_backup /opt/investbrain/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
restore_backup
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop caddy
msg_ok "Stopped Services"
create_backup /opt/invoiceshelf/.env /opt/invoiceshelf/storage
create_backup /opt/invoiceshelf/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
restore_backup
+1 -1
View File
@@ -52,7 +52,7 @@ function update_script() {
msg_error "Unable to detect latest Kasm release URL."
exit 250
fi
msg_info "Checked for new version"
msg_ok "Checked for new version"
msg_info "Removing outdated docker-compose plugin"
[ -f ~/.docker/cli-plugins/docker-compose ] && rm -rf ~/.docker/cli-plugins/docker-compose
+73
View File
@@ -0,0 +1,73 @@
#!/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/ridafkih/keeper.sh
APP="Keeper"
var_tags="${var_tags:-calendar;sync}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/keeper ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "keeper" "ridafkih/keeper.sh"; then
msg_info "Stopping Keeper"
systemctl stop keeper-web keeper-worker keeper-cron keeper-api
msg_ok "Stopped Keeper"
msg_info "Updating Bun"
$STD bun upgrade
msg_ok "Updated Bun"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "keeper" "ridafkih/keeper.sh" "tarball"
msg_info "Building Keeper"
cd /opt/keeper
$STD bun install --frozen-lockfile
$STD bun run --cwd services/api build
$STD bun run --cwd services/cron build
$STD bun run --cwd services/worker build
$STD bun run --cwd applications/web build
msg_ok "Built Keeper"
msg_info "Migrating Keeper Database"
$STD bun --env-file=/opt/keeper_data/.env packages/database/scripts/migrate.ts
msg_ok "Migrated Keeper Database"
msg_info "Starting Keeper"
systemctl start keeper-api keeper-cron keeper-worker keeper-web
msg_ok "Started Keeper"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+1 -1
View File
@@ -66,7 +66,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+2 -2
View File
@@ -37,8 +37,8 @@ function update_script() {
systemctl stop php8.4-fpm librenms-scheduler.timer
msg_ok "Stopped Services"
create_backup /opt/librenms/.env /opt/librenms/config.php /opt/librenms/rrd
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
create_backup /opt/librenms/.env /opt/librenms/config.php
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="rrd" fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
restore_backup
msg_info "Updating LibreNMS"
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
RUST_CRATES="monolith" setup_rust
create_backup /opt/linkwarden/.env /opt/linkwarden/data
create_backup /opt/linkwarden/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
restore_backup
+3 -2
View File
@@ -34,7 +34,7 @@ function update_script() {
if check_for_gh_release "livebook" "livebook-dev/livebook"; then
msg_info "Stopping Service"
systemctl stop livebook
msg_info "Stopped Service"
msg_ok "Stopped Service"
msg_info "Updating Container"
apt_update_safe
@@ -47,10 +47,11 @@ function update_script() {
$STD mix escript.install hex livebook --force
chown -R livebook:livebook /opt/livebook /data
msg_ok "Updated Livebook"
msg_info "Starting Service"
systemctl start livebook
msg_info "Started Service"
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "metabase" "metabase/metabase"; then
msg_info "Stopping Service"
systemctl stop metabase
msg_info "Stopped Service"
msg_ok "Stopped Service"
msg_info "Creating backup"
mv /opt/metabase/.env /opt
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop nametag
msg_ok "Stopped Service"
create_backup /opt/nametag/.env /opt/nametag/data
create_backup /opt/nametag/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag"
restore_backup
+13 -5
View File
@@ -129,6 +129,13 @@ EOF
msg_ok "Restored Admin Interface"
fi
if grep -q '^user npm' /usr/local/openresty/nginx/conf/nginx.conf 2>/dev/null; then
msg_info "Repairing OpenResty config"
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
systemctl restart openresty
msg_ok "Repaired OpenResty config"
fi
if check_for_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"; then
msg_info "Stopping Services"
systemctl stop openresty
@@ -165,6 +172,7 @@ EOF
cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
rm -f /etc/nginx/conf.d/dev.conf
if [[ -f /etc/nginx/conf.d/production.conf.template ]]; then
ADMIN_PORT=$(grep -oP '^\s*listen\s+\K[0-9]+(?=\s+default)' /etc/nginx/conf.d/production.conf 2>/dev/null | head -n1 || true)
@@ -208,6 +216,7 @@ EOF
$STD yarn install --network-timeout 600000
$STD yarn locale-compile
$STD yarn build
$STD yarn cache clean
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
msg_ok "Built Frontend"
@@ -233,22 +242,21 @@ EOF
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
cd /app
$STD yarn install --network-timeout 600000
$STD yarn cache clean
msg_ok "Initialized Backend"
msg_info "Starting Services"
if [ -f /opt/certbot/bin/certbot ]; then
CERTBOT_VER=$(/opt/certbot/bin/certbot --version 2>&1 | awk '{print $NF}' || echo "0.0.0")
CERTBOT_VER=$(/opt/certbot/bin/certbot --version 2>&1 | awk '/^certbot [0-9]/{print $2; exit}' || true)
elif command -v certbot &>/dev/null; then
CERTBOT_VER=$(certbot --version 2>&1 | awk '{print $NF}' || echo "0.0.0")
else
CERTBOT_VER="2.0.0"
CERTBOT_VER=$(certbot --version 2>&1 | awk '/^certbot [0-9]/{print $2; exit}' || true)
fi
[[ "${CERTBOT_VER:-}" =~ ^[0-9][0-9.]*$ ]] || CERTBOT_VER="2.0.0"
if grep -q "Environment=CERTBOT_VERSION" /lib/systemd/system/npm.service; then
sed -i "s|Environment=CERTBOT_VERSION=.*|Environment=CERTBOT_VERSION=${CERTBOT_VER}|" /lib/systemd/system/npm.service
else
sed -i "/Environment=NODE_ENV=production/a Environment=CERTBOT_VERSION=${CERTBOT_VER}" /lib/systemd/system/npm.service
fi
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
if [ -n "$(command -v node)" ]; then
sed -i -E "s|^ExecStart=.*/node index\.js|ExecStart=$(command -v node) index.js|" /lib/systemd/system/npm.service
-2
View File
@@ -49,7 +49,6 @@ function update_script() {
msg_info "Installing uv-based Open-WebUI"
PYTHON_VERSION="3.12" setup_uv
export UV_HTTP_TIMEOUT=300
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
@@ -126,7 +125,6 @@ EOF
OTEL_ARGS+=(--with "$pkg")
done < <(uv pip list --python "$OWUI_PYTHON" --format freeze 2>/dev/null | grep -i '^opentelemetry-' | cut -d= -f1)
fi
export UV_HTTP_TIMEOUT=300
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
+1 -5
View File
@@ -36,11 +36,7 @@ function update_script() {
systemctl stop ownfoil
msg_ok "Stopped Service"
create_backup /opt/ownfoil/app/config
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "${RELEASE}"
restore_backup
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="app/config" fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "${RELEASE}"
msg_info "Installing Dependencies"
cd /opt/ownfoil
+1 -1
View File
@@ -52,7 +52,7 @@ function update_script() {
msg_info "Stopping Service"
systemctl stop pangolin
systemctl stop gerbil
msg_info "Service stopped"
msg_ok "Stopped Service"
DB_URL=$(sed -n 's/.*connection_string: "\(.*\)".*/\1/p' /opt/pangolin/config/config.yml)
create_backup /opt/pangolin/config
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop passwordpusher
msg_ok "Stopped Service"
create_backup /opt/passwordpusher/storage /opt/passwordpusher/.env.production
create_backup /opt/passwordpusher/.env.production
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
restore_backup
+1 -1
View File
@@ -35,7 +35,7 @@ function update_script() {
if check_for_gh_release "PeaNUT" "Brandawg93/PeaNUT"; then
msg_info "Stopping Service"
systemctl stop peanut
msg_info "Stopped Service"
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PeaNUT" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
+1 -1
View File
@@ -34,7 +34,7 @@ function update_script() {
if check_for_gh_release "plant-it" "MDeLuise/plant-it" "${RELEASE}" "last version that includes the web frontend"; then
msg_info "Stopping Service"
systemctl stop plant-it
msg_info "Stopped Service"
msg_ok "Stopped Service"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "${RELEASE}" "/opt/plant-it/backend" "server.jar"
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "${RELEASE}" "/opt/plant-it/frontend" "client.tar.gz"
+2 -3
View File
@@ -37,10 +37,9 @@ function update_script() {
systemctl stop postiz-orchestrator postiz-frontend postiz-backend
msg_ok "Stopped Services"
create_backup /opt/postiz/.env \
/opt/postiz/uploads
create_backup /opt/postiz/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="uploads" fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
restore_backup
+12 -13
View File
@@ -54,19 +54,22 @@ EOF
msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if [[ -f /opt/${APP}_version.txt ]]; then
mv /opt/"${APP}_version.txt" ~/.pterodactyl-panel
fi
if check_for_gh_release "pterodactyl-panel" "pterodactyl/panel"; then
msg_info "Stopping Service"
cd /opt/pterodactyl-panel
$STD php artisan down
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cp -r /opt/pterodactyl-panel/.env /opt/
rm -rf * .*
curl -fsSL "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz")
tar -xzf "panel.tar.gz"
mv /opt/.env /opt/pterodactyl-panel/
create_backup /opt/pterodactyl-panel/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pterodactyl-panel" "pterodactyl/panel" "prebuild" "latest" "/opt/pterodactyl-panel" "panel.tar.gz"
restore_backup
msg_info "Updating ${APP}"
cd /opt/pterodactyl-panel
$STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan view:clear
$STD php artisan config:clear
@@ -74,17 +77,13 @@ EOF
chown -R www-data:www-data /opt/pterodactyl-panel/*
chmod -R 755 /opt/pterodactyl-panel/storage /opt/pterodactyl-panel/bootstrap/cache/
ln -s /opt/pterodactyl-panel /var/www/pterodactyl
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_ok "Updated ${APP}"
msg_info "Starting Service"
$STD php artisan queue:restart
$STD php artisan up
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
+1 -5
View File
@@ -35,12 +35,8 @@ function update_script() {
systemctl stop radicale
msg_ok "Stopped service"
create_backup /opt/radicale/users
PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale"
restore_backup
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="users" fetch_and_deploy_gh_release "Radicale" "Kozea/Radicale" "tarball" "latest" "/opt/radicale"
if grep -q 'start.sh' /etc/systemd/system/radicale.service; then
sed -i -e '/^Description/i[Unit]' \
+5 -10
View File
@@ -56,17 +56,12 @@ update_alpine() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
msg_info "Updating ${APP} LXC"
temp_file=$(mktemp)
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-$(arch_resolve).zip" -o "$temp_file"
$STD unzip -o "$temp_file" '*/**' -d /opt/rclone
rm -f "$temp_file"
echo "${RELEASE}" >/opt/rclone_version.txt
if [[ -f /opt/rclone_version.txt ]]; then
mv /opt/rclone_version.txt ~/.rclone
fi
if check_for_gh_release "rclone" "rclone/rclone"; then
fetch_and_deploy_gh_release "rclone" "rclone/rclone" "prebuild" "latest" "/opt/rclone" "rclone*linux-$(arch_resolve).zip"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
}
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "revealjs" "hakimel/reveal.js"; then
msg_info "Stopping Service"
systemctl stop revealjs
msg_info "Stopped Service"
msg_ok "Stopped Service"
cp /opt/revealjs/index.html /opt
fetch_and_deploy_gh_release "revealjs" "hakimel/reveal.js" "tarball"
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}"
echo -e "${TAB}${TAB}${GN}update_runtipi${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -58,7 +58,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_runtipi 2>/dev/null || true
msg_ok "Migration complete"
msg_info "Running addon update"
echo -e "${INFO}${YW}Running addon update${CL}"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit
}
+17 -28
View File
@@ -45,7 +45,7 @@ update_deb_based() {
if [[ -f /lib/systemd/system/rustdesk-api.service ]]; then
systemctl stop rustdesk-api
fi
msg_info "Stopped Service"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "rustdesk-hbbr" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*$(arch_resolve).deb"
fetch_and_deploy_gh_release "rustdesk-hbbs" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*$(arch_resolve).deb"
@@ -66,41 +66,30 @@ update_alpine() {
exit
fi
APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [ "${RELEASE}" != "$(cat ~/.rustdesk-server 2>/dev/null)" ] || [ ! -f ~/.rustdesk-server ]; then
msg_info "Updating RustDesk Server to v${RELEASE}"
if check_for_gh_release "rustdesk-server" "lejianwen/rustdesk-server"; then
msg_info "Stopping RustDesk Server"
$STD apk -U upgrade
$STD service rustdesk-server-hbbs stop
$STD service rustdesk-server-hbbr stop
temp_file1=$(mktemp)
ARCH=$(arch_resolve "amd64" "arm64v8")
curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-${ARCH}.zip" -o "$temp_file1"
$STD unzip "$temp_file1"
cp -r "$ARCH"/* /opt/rustdesk-server/
echo "${RELEASE}" >~/.rustdesk-server
msg_ok "Stopped RustDesk Server"
fetch_and_deploy_gh_release "rustdesk-server" "lejianwen/rustdesk-server" "prebuild" "latest" "/opt/rustdesk-server" "rustdesk-server-linux-$(arch_resolve "amd64" "arm64v8").zip"
msg_info "Starting RustDesk Server"
$STD service rustdesk-server-hbbs start
$STD service rustdesk-server-hbbr start
rm -rf "$ARCH"
rm -f "$temp_file1"
msg_ok "Updated RustDesk Server"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
msg_ok "Started RustDesk Server"
fi
if [ "${APIRELEASE}" != "$(cat ~/.rustdesk-api)" ] || [ ! -f ~/.rustdesk-api ]; then
msg_info "Updating RustDesk API to v${APIRELEASE}"
if check_for_gh_release "rustdesk-api" "lejianwen/rustdesk-api"; then
msg_info "Stopping RustDesk API"
$STD service rustdesk-api stop
temp_file2=$(mktemp)
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-$(arch_resolve).tar.gz" -o "$temp_file2"
$STD tar zxvf "$temp_file2"
cp -r release/* /opt/rustdesk-api
echo "${APIRELEASE}" >~/.rustdesk-api
msg_ok "Stopped RustDesk API"
fetch_and_deploy_gh_release "rustdesk-api" "lejianwen/rustdesk-api" "prebuild" "latest" "/opt/rustdesk-api" "linux-$(arch_resolve).tar.gz"
msg_info "Starting RustDesk API"
$STD service rustdesk-api start
rm -rf release
rm -f "$temp_file2"
msg_ok "Updated RustDesk API"
else
msg_ok "No update required. RustDesk API is already at v${APIRELEASE}"
msg_ok "Started RustDesk API"
fi
msg_ok "Updated successfully!"
}
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "seelf" "YuukanOO/seelf"; then
msg_info "Stopping Service"
systemctl stop seelf
msg_info "Stopped Service"
msg_ok "Stopped Service"
msg_info "Updating seelf"
cd /opt/seelf
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop caddy
msg_ok "Stopped Services"
create_backup /opt/solidtime/.env /opt/solidtime/storage
create_backup /opt/solidtime/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
restore_backup
+2 -2
View File
@@ -38,9 +38,9 @@ function update_script() {
systemctl stop soulsync
msg_ok "Stopped Service"
create_backup /opt/soulsync/config /opt/soulsync/data
create_backup /opt/soulsync/config
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
restore_backup
+1 -5
View File
@@ -37,11 +37,7 @@ function update_script() {
systemctl stop sparkyfitness-server nginx
msg_ok "Stopped Services"
create_backup /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness/SparkyFitnessServer/backup
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
restore_backup
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="SparkyFitnessServer/uploads SparkyFitnessServer/backup" fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/sparkyfitness/package.json)"
NODE_VERSION="25" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
+1 -1
View File
@@ -34,7 +34,7 @@ function update_script() {
if check_for_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui"; then
msg_info "Stopping Service"
systemctl stop streamlink-webui
msg_info "Stopped Service"
msg_ok "Stopped Service"
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
setup_uv
+1 -1
View File
@@ -34,7 +34,7 @@ function update_script() {
if check_for_gh_release "stylus" "mmastrac/stylus"; then
msg_info "Stopping Service"
systemctl stop stylus
msg_info "Stopped Service"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "stylus" "mmastrac/stylus" "singlefile" "latest" "/usr/bin/" "*_linux_$(arch_resolve)"
+1 -1
View File
@@ -65,7 +65,7 @@ EOF
msg_ok "Stopped services"
fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="storage" fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
RUBY_VERSION="$(cat /opt/sure/.ruby-version)" RUBY_INSTALL_RAILS=false HOME=/root setup_ruby
msg_info "Updating Sure"
+2 -2
View File
@@ -44,11 +44,11 @@ function update_script() {
systemctl stop tandoor
msg_ok "Stopped Service"
create_backup /opt/tandoor/config /opt/tandoor/api /opt/tandoor/mediafiles /opt/tandoor/staticfiles /opt/tandoor/.env
create_backup /opt/tandoor/.env
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="config api mediafiles staticfiles" fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
restore_backup
+7 -12
View File
@@ -29,34 +29,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if [[ -f /opt/${APP}_version.txt ]]; then
mv /opt/"${APP}_version.txt" ~/.tasmocompiler
fi
if check_for_gh_release "tasmocompiler" "benzino77/tasmocompiler"; then
msg_info "Stopping Service"
systemctl stop tasmocompiler
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tasmocompiler" "benzino77/tasmocompiler" "tarball"
msg_info "Updating TasmoCompiler"
cd /opt
rm -rf /opt/tasmocompiler
RELEASE=$(curl -fsSL https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz")
tar xzf v${RELEASE}.tar.gz
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
cd /opt/tasmocompiler
$STD yarn install
export NODE_OPTIONS=--openssl-legacy-provider
$STD npm i
$STD yarn build
rm -r "/opt/v${RELEASE}.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated TasmoCompiler"
msg_info "Starting Service"
systemctl start tasmocompiler
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
+2 -6
View File
@@ -163,13 +163,9 @@ EOF
fi
msg_ok "Migrated Configuration"
create_backup \
/opt/termix/db/data \
/opt/termix/data \
/opt/termix/uploads \
/opt/termix/.env
create_backup /opt/termix/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="db/data data uploads" fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
restore_backup
+2 -10
View File
@@ -62,8 +62,7 @@ update_alpine() {
$STD apk -U upgrade
msg_ok "Updated packages"
RELEASE=$(curl -s https://api.github.com/repos/tinyauthapp/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [ "${RELEASE}" != "$(cat ~/.tinyauth 2>/dev/null)" ] || [ ! -f ~/.tinyauth ]; then
if check_for_gh_release "tinyauth" "tinyauthapp/tinyauth"; then
msg_info "Stopping Service"
$STD service tinyauth stop
msg_ok "Service Stopped"
@@ -82,19 +81,12 @@ update_alpine() {
msg_ok "Migrated .env to v5 format"
fi
msg_info "Updating Tinyauth"
rm -f /opt/tinyauth/tinyauth
curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-$(arch_resolve)" -o /opt/tinyauth/tinyauth
chmod +x /opt/tinyauth/tinyauth
echo "${RELEASE}" >~/.tinyauth
msg_ok "Updated Tinyauth"
fetch_and_deploy_gh_release "tinyauth" "tinyauthapp/tinyauth" "singlefile" "latest" "/opt/tinyauth" "tinyauth-$(arch_resolve)"
msg_info "Restarting Tinyauth"
$STD service tinyauth start
msg_ok "Restarted Tinyauth"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
}
+5 -2
View File
@@ -122,7 +122,8 @@ EOF
$STD pnpm install --frozen-lockfile --force
$STD pnpm turbo telemetry disable
$STD pnpm turbo run build --no-daemon --filter=@tracearr/shared --filter=@tracearr/server --filter=@tracearr/web
$STD ./scripts/fetch-basemap.sh
$STD ./scripts/fetch-basemap.sh || msg_warn "Basemap download failed, keeping the existing map"
[[ -d /opt/tracearr/data ]] && mv /opt/tracearr/data /opt/tracearr.data
rm -rf /opt/tracearr
mkdir -p /opt/tracearr/{packages/shared,packages/emails,apps/server,apps/web,apps/server/src/db}
cp -rf package.json /opt/tracearr/
@@ -137,7 +138,9 @@ EOF
cp -rf packages/emails/package.json /opt/tracearr/packages/emails/
cp -rf packages/emails/dist /opt/tracearr/packages/emails/dist
cp -rf apps/server/src/db/migrations /opt/tracearr/apps/server/src/db/migrations
cp -rf data /opt/tracearr/data
[[ -d /opt/tracearr.data ]] && mv /opt/tracearr.data /opt/tracearr/data
mkdir -p /opt/tracearr/data
cp -rf data/. /opt/tracearr/data/
mkdir -p /opt/tracearr/data/image-cache
rm -rf /opt/tracearr.build
cd /opt/tracearr
+2 -2
View File
@@ -41,9 +41,9 @@ function update_script() {
systemctl stop transmute
msg_ok "Stopped Service"
create_backup /opt/transmute/backend/.env /opt/transmute/data
create_backup /opt/transmute/backend/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball"
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball"
restore_backup
+3 -2
View File
@@ -60,8 +60,9 @@ function update_script() {
msg_info "Running Database Migrations"
cd /opt/twenty/packages/twenty-server
set -a && source /opt/twenty/.env && set +a
$STD npx ts-node ./scripts/setup-db.ts
$STD npx -y typeorm migration:run -d dist/database/typeorm/core/core.datasource
$STD yarn command:prod cache:flush || true
$STD yarn command:prod upgrade
$STD yarn command:prod cache:flush || true
msg_ok "Ran Database Migrations"
msg_info "Starting Services"
+7 -17
View File
@@ -30,11 +30,11 @@ function update_script() {
exit
fi
ensure_dependencies zstd
RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
# Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
if [[ -f /opt/${APP}_version.txt ]]; then
mv /opt/"${APP}_version.txt" ~/.wastebin
fi
msg_info "Running Migration"
if [[ ! -f /opt/${APP}_version.txt ]]; then
echo "2.7.1" >/opt/${APP}_version.txt
if [[ ! -f /opt/wastebin-data/.env ]]; then
mkdir -p /opt/wastebin-data
cat <<EOF >/opt/wastebin-data/.env
WASTEBIN_DATABASE_PATH=/opt/wastebin-data/wastebin.db
@@ -60,28 +60,18 @@ EOF
systemctl daemon-reload
fi
msg_ok "Migration Done"
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if check_for_gh_release "wastebin" "matze/wastebin"; then
msg_info "Stopping Wastebin"
systemctl stop wastebin
msg_ok "Wastebin Stopped"
msg_info "Updating Wastebin"
temp_file=$(mktemp)
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.zst" -o "$temp_file"
tar -xf "$temp_file"
cp -f wastebin* /opt/wastebin/
chmod +x /opt/wastebin/wastebin
chmod +x /opt/wastebin/wastebin-ctl
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Wastebin"
fetch_and_deploy_gh_release "wastebin" "matze/wastebin" "prebuild" "latest" "/opt/wastebin" "wastebin_*_$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.zst"
chmod +x /opt/wastebin/wastebin /opt/wastebin/wastebin-ctl
msg_info "Starting Wastebin"
systemctl start wastebin
msg_ok "Started Wastebin"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
+1 -1
View File
@@ -30,7 +30,7 @@ function update_script() {
exit
fi
NODE_VERSION="24" NODE_MODULE="yarn,node-gyp" setup_nodejs
NODE_VERSION="26" NODE_MODULE="yarn,node-gyp" setup_nodejs
if check_for_gh_release "wikijs" "requarks/wiki"; then
msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
+1 -5
View File
@@ -36,11 +36,7 @@ function update_script() {
systemctl stop xyops
msg_ok "Stopped Service"
create_backup /opt/xyops/data /opt/xyops/conf
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball"
restore_backup
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data conf" fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball"
msg_info "Rebuilding Application"
cd /opt/xyops
+4
View File
@@ -44,6 +44,10 @@ function update_script() {
restore_backup
msg_info "Updating Bun"
$STD bun upgrade
msg_ok "Updated Bun"
msg_info "Building Zerobyte"
export NODE_OPTIONS="--max-old-space-size=3072"
cd /opt/zerobyte
+2 -2
View File
@@ -30,10 +30,10 @@ PG_DB_NAME="adventurelog_db" PG_DB_USER="adventurelog_user" PG_DB_EXTENSIONS="po
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball"
msg_info "Installing AdventureLog (Patience)"
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
SECRET_KEY="$(random_password 32)"
echo "AdventureLog Secret: $SECRET_KEY" >>~/adventurelog.creds
DJANGO_ADMIN_USER="djangoadmin"
DJANGO_ADMIN_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
DJANGO_ADMIN_PASS="$(random_password 13)"
cat <<EOF >/opt/adventurelog/backend/server/.env
PGHOST='localhost'
PGDATABASE='${PG_DB_NAME}'
+1 -1
View File
@@ -160,7 +160,7 @@ systemctl enable -q --now redis-server affine-web affine-worker
msg_ok "Created Services"
msg_info "Creating Admin User"
ADMIN_PASS=$(openssl rand -base64 12)
ADMIN_PASS=$(random_password 16)
for i in {1..30}; do
if curl -s http://localhost:3010/info >/dev/null 2>&1; then
break
+4 -8
View File
@@ -19,12 +19,9 @@ $STD apk add --no-cache \
python3
msg_ok "Installed Dependencies"
msg_info "Installing IT-Tools"
RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
mkdir -p /usr/share/nginx/html
$STD unzip it-tools.zip -d /tmp/
mv /tmp/dist/* /usr/share/nginx/html
fetch_and_deploy_gh_release "it-tools" "sharevb/it-tools" "prebuild" "latest" "/usr/share/nginx/html" "it-tools-*.zip"
msg_info "Configuring IT-Tools"
cat <<'EOF' >/etc/nginx/http.d/default.conf
server {
listen 80;
@@ -39,8 +36,7 @@ server {
EOF
$STD rc-update add nginx default
$STD rc-service nginx start
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Installed IT-Tools"
msg_ok "Configured IT-Tools"
motd_ssh
customize
+2 -2
View File
@@ -37,8 +37,8 @@ msg_ok "Installed PHP/Redis"
msg_info "Installing MySQL Database"
DB_NAME=nextcloud
DB_USER=nextcloud
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
DB_PASS="$(random_password 13)"
ADMIN_PASS="$(random_password 13)"
echo "" >>~/nextcloud.creds
echo -e "MySQL Admin Password: \e[32m$ADMIN_PASS\e[0m" >>~/nextcloud.creds
echo -e "Nextcloud Database Username: \e[32m$DB_USER\e[0m" >>~/nextcloud.creds
+1 -1
View File
@@ -40,7 +40,7 @@ msg_ok "Installed Apache Airflow"
msg_info "Configuring Application"
FERNET_KEY=$(/opt/airflow/.venv/bin/python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
SECRET_KEY=$(openssl rand -hex 32)
ADMIN_PASS=$(openssl rand -base64 12 | tr -dc 'a-zA-Z0-9' | cut -c1-12)
ADMIN_PASS=$(random_password 12)
cat <<EOF >/opt/airflow/.env
AIRFLOW_HOME=/opt/airflow
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
+1 -1
View File
@@ -15,7 +15,7 @@ update_os
msg_info "Installing Apache CouchDB"
ERLANG_COOKIE=$(openssl rand -hex 32)
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
ADMIN_PASS="$(random_password 13)"
debconf-set-selections <<<"couchdb couchdb/cookie string $ERLANG_COOKIE"
debconf-set-selections <<<"couchdb couchdb/mode select standalone"
debconf-set-selections <<<"couchdb couchdb/bindaddress string 0.0.0.0"
+1 -2
View File
@@ -124,7 +124,6 @@ export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
export UV_COMPILE_BYTECODE="1"
export UV_LINK_MODE="copy"
export UV_NATIVE_TLS="1"
export UV_HTTP_TIMEOUT="300"
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
cd /opt/authentik
for attempt in 1 2 3; do
@@ -142,7 +141,7 @@ msg_ok "Setup python server"
msg_info "Creating authentik config"
mkdir -p /etc/authentik
mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml
yq -i ".secret_key = \"$(openssl rand -base64 128 | tr -dc 'a-zA-Z0-9' | head -c64)\"" /etc/authentik/config.yml
yq -i ".secret_key = \"$(random_password 64)\"" /etc/authentik/config.yml
yq -i ".postgresql.password = \"${PG_DB_PASS}\"" /etc/authentik/config.yml
yq -i ".events.context_processors.geoip = \"/opt/authentik-data/geoip/GeoLite2-City.mmdb\"" /etc/authentik/config.yml
yq -i ".events.context_processors.asn = \"/opt/authentik-data/geoip/GeoLite2-ASN.mmdb\"" /etc/authentik/config.yml
+1 -1
View File
@@ -33,7 +33,7 @@ $STD uv venv --clear .venv
$STD source .venv/bin/activate
$STD uv pip install -r requirements.txt
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
SECRET_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
SECRET_KEY=$(random_password 32)
ALLOWED_HOSTS=$(hostname -I | tr ' ' ',' | sed 's/,$//')",127.0.0.1,localhost"
sed -i \
-e "s/^SECRET_KEY = \"\"/SECRET_KEY = \"$SECRET_KEY\"/" \
+1 -1
View File
@@ -21,7 +21,7 @@ PG_VERSION="16" setup_postgresql
PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
setup_composer
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal" "tarball"
PG_DB_NAME="baikal_db" PG_DB_USER="baikal_user" PG_DB_PASS="$(openssl rand -base64 12)" setup_postgresql_db
PG_DB_NAME="baikal_db" PG_DB_USER="baikal_user" PG_DB_PASS="$(random_password 16)" setup_postgresql_db
msg_info "Configuring Baikal"
cd /opt/baikal
+1 -1
View File
@@ -34,7 +34,7 @@ msg_info "Configuring PHP"
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
sed -i.bak -E 's/^\s*;?\s*ffi\.enable\s*=.*/ffi.enable=true/' /etc/php/${PHPVER}/fpm/php.ini
$STD systemctl reload php${PHPVER}-fpm
msg_info "configured PHP"
msg_ok "Configured PHP"
msg_info "Installing Bar Assistant"
cd /opt/bar-assistant
+1 -1
View File
@@ -50,7 +50,7 @@ NODE_OPTIONS="--max-old-space-size=4096" $STD npm run build
msg_ok "Built Frontend"
msg_info "Configuring Baserow"
SECRET_KEY=$(openssl rand -base64 64 | tr -dc 'a-zA-Z0-9' | head -c50)
SECRET_KEY=$(random_password 50)
cat <<EOF >/opt/baserow/.env
DATABASE_HOST=localhost
DATABASE_PORT=5432
+1 -1
View File
@@ -28,7 +28,7 @@ fi
msg_info "Setting up Bichon"
mkdir -p /opt/bichon-data
BICHON_ENC_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32)
BICHON_ENC_PASSWORD=$(random_password 32)
cat <<EOF >/opt/bichon/bichon.env
BICHON_ROOT_DIR=/opt/bichon-data
+4 -12
View File
@@ -90,20 +90,14 @@ setup_alpine() {
$STD rc-service postgresql start
msg_ok "Installed PostreSQL"
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball"
msg_info "Installing bitmagnet v${RELEASE}"
mkdir -p /opt/bitmagnet
temp_file=$(mktemp)
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
msg_info "Building bitmagnet"
cd /opt/bitmagnet
VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=v$(cat ~/.bitmagnet)"
chmod +x bitmagnet
$STD su - postgres -c "psql -c 'CREATE DATABASE bitmagnet;'"
echo "${RELEASE}" >/opt/bitmagnet_version.txt
msg_ok "Installed bitmagnet v${RELEASE}"
msg_ok "Built bitmagnet"
read -rp "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
@@ -133,8 +127,6 @@ EOF
msg_info "Starting bitmagnet"
$STD service bitmagnet start
msg_ok "Started bitmagnet"
rm -f "$temp_file"
}
run_os_setup
+1 -1
View File
@@ -17,7 +17,7 @@ NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash" "tarball"
msg_info "Installing ByteStash"
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
JWT_SECRET=$(random_password 42)
cd /opt/bytestash/server
$STD npm install
cd /opt/bytestash/client
+2 -4
View File
@@ -78,12 +78,10 @@ EOF
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
GO_VERSION="$(curl -fsSL https://go.dev/VERSION?m=text | head -1 | cut -c3-)" setup_go
fetch_and_deploy_gh_release "xcaddy" "caddyserver/xcaddy" "prebuild" "latest" "/opt/xcaddy" "xcaddy_*_linux_$(arch_resolve).tar.gz"
ln -sf /opt/xcaddy/xcaddy /usr/local/bin/xcaddy
msg_info "Setup xCaddy"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.tar.gz" -o "xcaddy_${RELEASE:1}_linux_amd64.tar.gz"
$STD tar xzf xcaddy_"${RELEASE:1}"_linux_amd64.tar.gz -C /usr/local/bin xcaddy
rm -rf /opt/xcaddy*
$STD xcaddy build
msg_ok "Setup xCaddy"
fi
+1 -1
View File
@@ -25,7 +25,7 @@ msg_ok "Installed Checkmk"
msg_info "Creating Service"
SITE_NAME="monitoring"
$STD omd create "$SITE_NAME"
MKPASSWORD=$(openssl rand -base64 18 | tr -d '/+=' | cut -c1-16)
MKPASSWORD=$(random_password 16)
echo -e "$MKPASSWORD\n$MKPASSWORD" | su - "$SITE_NAME" -c "cmk-passwd cmkadmin --stdin"
$STD omd start "$SITE_NAME"
+1 -1
View File
@@ -63,7 +63,7 @@ cd /opt/convertx
mkdir -p data
$STD bun install
JWT_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
JWT_SECRET=$(random_password 32)
cat <<EOF >/opt/convertx/.env
JWT_SECRET=$JWT_SECRET
HTTP_ALLOWED=true
+1 -1
View File
@@ -55,7 +55,7 @@ WantedBy=multi-user.target
EOF
systemctl enable -q --now cosmos
msg_info "Created Service"
msg_ok "Created Service"
motd_ssh
customize
+1 -1
View File
@@ -35,7 +35,7 @@ msg_ok "Installed Directus"
msg_info "Configuring Directus"
DIRECTUS_KEY=$(openssl rand -hex 32)
DIRECTUS_SECRET=$(openssl rand -hex 32)
DIRECTUS_ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
DIRECTUS_ADMIN_PASSWORD=$(random_password 16)
cat <<EOF >/opt/directus/.env
HOST="0.0.0.0"
PORT=8055
+2 -2
View File
@@ -33,7 +33,7 @@ NODE_VERSION="24" setup_nodejs
RUBY_VERSION="3.4.4" setup_ruby
msg_info "Configuring PostgreSQL for Discourse"
DISCOURSE_DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
DISCOURSE_DB_PASS=$(random_password 13)
PG_HBA=$(find /etc/postgresql -name pg_hba.conf 2>/dev/null | head -n1)
sed -i 's/^local\s\+all\s\+all\s\+peer$/local all all md5/' "$PG_HBA"
$STD systemctl restart postgresql
@@ -97,7 +97,7 @@ $STD bundle exec rails db:seed
msg_ok "Set Up Database"
msg_info "Creating Admin Account"
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
ADMIN_PASS=$(random_password 16)
$STD bundle exec rails runner "
user = User.new(email: 'admin@discourse.local', username: 'admin', password: '${ADMIN_PASS}')
user.active = true
+1 -1
View File
@@ -62,7 +62,7 @@ install -d -m 755 \
/data/uploads/{m3us,epgs} \
/data/{m3us,epgs}
chown -R root:root /data
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
DJANGO_SECRET=$(random_password 50)
export DATABASE_URL="postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
export POSTGRES_DB=$PG_DB_NAME
export POSTGRES_USER=$PG_DB_USER
+1 -4
View File
@@ -65,10 +65,7 @@ setup_alpine() {
$STD rc-update add docker default
msg_ok "Installed Docker"
get_latest_release() {
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
}
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_github_release "docker/compose" false)
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"

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