mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-21 21:35:08 +02:00
Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a76d94745 | |||
| b4030cef3a | |||
| a35e496d93 | |||
| bd834f690a | |||
| a5a0b90643 | |||
| aa8352bfd5 | |||
| 3b8f57672e | |||
| 9028029ea0 | |||
| 0d3ee851d0 | |||
| 6408653564 | |||
| e925e29966 | |||
| 8505d28429 | |||
| f15e9c320b | |||
| 5b4e526329 | |||
| a61dc9c585 | |||
| f8cc69e244 | |||
| 1dba4eb2ee | |||
| fa9377cd45 | |||
| b6a8ca1a3a | |||
| 2c13cb6a38 | |||
| beeb497519 | |||
| 9ea82fa992 | |||
| d6cd545e98 | |||
| 31b7024997 | |||
| a6a608614f | |||
| 3042cd5cee | |||
| 026fd25e7a | |||
| e1ce55b547 | |||
| d81c9f3ed2 | |||
| b098501a37 | |||
| a1058256be | |||
| e425d9c02c | |||
| 0dbea508d3 | |||
| 787e27a4ac | |||
| 8f0083850e | |||
| 8f9c4eb13b | |||
| beacf9e43a | |||
| b2898debce | |||
| 8c7da1e036 | |||
| bbd5a3f522 | |||
| c07dc4a4c3 | |||
| e7f6a6d4cd | |||
| 3242b9a2d1 | |||
| 38ed344e0a | |||
| 658aad229a | |||
| eb5a5b2cb7 | |||
| 09c85021fc | |||
| 7f1b0ead93 |
Generated
+170
@@ -1,3 +1,173 @@
|
||||
## 2026-07-18
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add configurable host CA inheritance during bootstrap [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15840](https://github.com/community-scripts/ProxmoxVE/pull/15840))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: Safe Delete Directorys & Update PYTHON_VERSION with setup_uv [@MickLesk](https://github.com/MickLesk) ([#15870](https://github.com/community-scripts/ProxmoxVE/pull/15870))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.update-lxcs] feat: optional reporting success/failures to heathchecks.io (or others) [@sir106](https://github.com/sir106) ([#15701](https://github.com/community-scripts/ProxmoxVE/pull/15701))
|
||||
|
||||
## 2026-07-17
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Invidious ([#15824](https://github.com/community-scripts/ProxmoxVE/pull/15824))
|
||||
- OxiCloud ([#15823](https://github.com/community-scripts/ProxmoxVE/pull/15823))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- webtrees: initialize database schema before admin user creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15837](https://github.com/community-scripts/ProxmoxVE/pull/15837))
|
||||
- Fix DocuSeal missing Leptonica deps on install and update [@Copilot](https://github.com/Copilot) ([#15858](https://github.com/community-scripts/ProxmoxVE/pull/15858))
|
||||
- apache-guacamole: detect installed extensions during update [@TowyTowy](https://github.com/TowyTowy) ([#15841](https://github.com/community-scripts/ProxmoxVE/pull/15841))
|
||||
- CLIProxyAPI: fix update deleting config.yaml [@austinpilz](https://github.com/austinpilz) ([#15834](https://github.com/community-scripts/ProxmoxVE/pull/15834))
|
||||
- esphome: install libusb-1.0-0 for ESP-IDF native builds [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15838](https://github.com/community-scripts/ProxmoxVE/pull/15838))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- AFFiNE: Bump to 0.27.0 [@MickLesk](https://github.com/MickLesk) ([#15848](https://github.com/community-scripts/ProxmoxVE/pull/15848))
|
||||
- n8n: unpin / use latest release [@MickLesk](https://github.com/MickLesk) ([#15817](https://github.com/community-scripts/ProxmoxVE/pull/15817))
|
||||
- Pin Opencloud to v7.3.0 [@vhsdream](https://github.com/vhsdream) ([#15826](https://github.com/community-scripts/ProxmoxVE/pull/15826))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- SFTPGo: Update APT Repo & Re-Enable Script [@MickLesk](https://github.com/MickLesk) ([#15829](https://github.com/community-scripts/ProxmoxVE/pull/15829))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: enhance rbenv with profile updates / bundle in bashrc [@MickLesk](https://github.com/MickLesk) ([#15822](https://github.com/community-scripts/ProxmoxVE/pull/15822))
|
||||
- feat(build.func): notify users when already on a pinned script version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15819](https://github.com/community-scripts/ProxmoxVE/pull/15819))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- MongoDB: Implement kernel version check and patch [@MickLesk](https://github.com/MickLesk) ([#15821](https://github.com/community-scripts/ProxmoxVE/pull/15821))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- update-lxc: autoremove and autoclean after apt full-upgrade [@soupy-boy](https://github.com/soupy-boy) ([#15831](https://github.com/community-scripts/ProxmoxVE/pull/15831))
|
||||
|
||||
## 2026-07-16
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Sync-In ([#15812](https://github.com/community-scripts/ProxmoxVE/pull/15812))
|
||||
- Beaverhabits ([#15813](https://github.com/community-scripts/ProxmoxVE/pull/15813))
|
||||
- Notediscovery ([#15811](https://github.com/community-scripts/ProxmoxVE/pull/15811))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pin Immich to v3.0.3 [@vhsdream](https://github.com/vhsdream) ([#15790](https://github.com/community-scripts/ProxmoxVE/pull/15790))
|
||||
|
||||
## 2026-07-15
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Nexterm ([#15688](https://github.com/community-scripts/ProxmoxVE/pull/15688))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- 2fauth: minor fixes for 8.0.0 [@MickLesk](https://github.com/MickLesk) ([#15795](https://github.com/community-scripts/ProxmoxVE/pull/15795))
|
||||
- SnapOtter: refactor update process to prebuild [@MickLesk](https://github.com/MickLesk) ([#15797](https://github.com/community-scripts/ProxmoxVE/pull/15797))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: default Docker setup to official repo [@MickLesk](https://github.com/MickLesk) ([#15794](https://github.com/community-scripts/ProxmoxVE/pull/15794))
|
||||
|
||||
## 2026-07-14
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Grav ([#15773](https://github.com/community-scripts/ProxmoxVE/pull/15773))
|
||||
- Yuvomi ([#15772](https://github.com/community-scripts/ProxmoxVE/pull/15772))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Lychee: Preserve uploads and ownership during update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15768](https://github.com/community-scripts/ProxmoxVE/pull/15768))
|
||||
- Wanderer: Clean deploy and install plugins for v0.20.0 update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15759](https://github.com/community-scripts/ProxmoxVE/pull/15759))
|
||||
- FileFlows: Handle update API 401, force update, and Node install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15766](https://github.com/community-scripts/ProxmoxVE/pull/15766))
|
||||
- BirdNET-Go: Match new upstream release asset naming [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15758](https://github.com/community-scripts/ProxmoxVE/pull/15758))
|
||||
- [Upstream Fix] Immich: Fix loader priority [@vhsdream](https://github.com/vhsdream) ([#15755](https://github.com/community-scripts/ProxmoxVE/pull/15755))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Bump OpenCloud version to v7.2.2 [@MickLesk](https://github.com/MickLesk) ([#15769](https://github.com/community-scripts/ProxmoxVE/pull/15769))
|
||||
- Silverbullet: Add optional Runtime API install via Chromium [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15761](https://github.com/community-scripts/ProxmoxVE/pull/15761))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Pangolin: Bump to 1.20.0 | BREAKING: Switch to PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#15682](https://github.com/community-scripts/ProxmoxVE/pull/15682))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- AFFiNE: Pin to v0.26.3 [@MickLesk](https://github.com/MickLesk) ([#15782](https://github.com/community-scripts/ProxmoxVE/pull/15782))
|
||||
|
||||
## 2026-07-13
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- LeafWiki ([#15748](https://github.com/community-scripts/ProxmoxVE/pull/15748))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(hyperion): keep service running after container reboot [@TowyTowy](https://github.com/TowyTowy) ([#15653](https://github.com/community-scripts/ProxmoxVE/pull/15653))
|
||||
- Change sign-in URL to admin URL in affine.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15741](https://github.com/community-scripts/ProxmoxVE/pull/15741))
|
||||
- immich: use actual PostgreSQL version for VectorChord package lookup [@mnavon](https://github.com/mnavon) ([#15705](https://github.com/community-scripts/ProxmoxVE/pull/15705))
|
||||
- fix storyteller release selection for stable web tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15736](https://github.com/community-scripts/ProxmoxVE/pull/15736))
|
||||
- Docmost: Fix update procedure [@MickLesk](https://github.com/MickLesk) ([#15732](https://github.com/community-scripts/ProxmoxVE/pull/15732))
|
||||
- fix(shinobi): remove obsolete --unsafe-perm npm flag [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15730](https://github.com/community-scripts/ProxmoxVE/pull/15730))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- reitti: update to v5 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15635](https://github.com/community-scripts/ProxmoxVE/pull/15635))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(build.func): parse script status without jq dependency [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15729](https://github.com/community-scripts/ProxmoxVE/pull/15729))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: some improvements (sql injection / command injection / guard) [@MickLesk](https://github.com/MickLesk) ([#15661](https://github.com/community-scripts/ProxmoxVE/pull/15661))
|
||||
|
||||
## 2026-07-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- AFFiNE ([#15690](https://github.com/community-scripts/ProxmoxVE/pull/15690))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Immich: Bump version to 3.0.2 [@vhsdream](https://github.com/vhsdream) ([#15668](https://github.com/community-scripts/ProxmoxVE/pull/15668))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- fix(immich): correct Python indentation error in ct/immich.sh heredoc patch [@Copilot](https://github.com/Copilot) ([#15723](https://github.com/community-scripts/ProxmoxVE/pull/15723))
|
||||
|
||||
## 2026-07-11
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
+77
-126
@@ -77,6 +77,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -90,7 +93,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>July (11 entries)</h4></summary>
|
||||
<summary><h4>July (18 entries)</h4></summary>
|
||||
|
||||
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
||||
|
||||
@@ -502,6 +505,78 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-07-20
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: vikunja: asset selection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15929](https://github.com/community-scripts/ProxmoxVE/pull/15929))
|
||||
- RomM: use backup helpers in update / clear folder [@MickLesk](https://github.com/MickLesk) ([#15915](https://github.com/community-scripts/ProxmoxVE/pull/15915))
|
||||
- Zammad : bind Elasticsearch to 127.0.0.1 [@MickLesk](https://github.com/MickLesk) ([#15909](https://github.com/community-scripts/ProxmoxVE/pull/15909))
|
||||
- Omada: fix package version extraction [@MickLesk](https://github.com/MickLesk) ([#15908](https://github.com/community-scripts/ProxmoxVE/pull/15908))
|
||||
- fix(wanderer): use PocketBase-relative plugin symlink in unprivileged LXC [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15911](https://github.com/community-scripts/ProxmoxVE/pull/15911))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- AFFiNE: Bump version to v0.27.2 [@MickLesk](https://github.com/MickLesk) ([#15930](https://github.com/community-scripts/ProxmoxVE/pull/15930))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Gotify: Migration to v3 [@MickLesk](https://github.com/MickLesk) ([#15912](https://github.com/community-scripts/ProxmoxVE/pull/15912))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add support for extracting 7z archives [@MickLesk](https://github.com/MickLesk) ([#15919](https://github.com/community-scripts/ProxmoxVE/pull/15919))
|
||||
- Meilisearch : use dumpless Meilisearch upgrades [@MickLesk](https://github.com/MickLesk) ([#15921](https://github.com/community-scripts/ProxmoxVE/pull/15921))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: Improve GPU detection and mapping logic [@MickLesk](https://github.com/MickLesk) ([#15918](https://github.com/community-scripts/ProxmoxVE/pull/15918))
|
||||
|
||||
## 2026-07-19
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- change trek repo to liketrek/TREK [@asylumexp](https://github.com/asylumexp) ([#15893](https://github.com/community-scripts/ProxmoxVE/pull/15893))
|
||||
- update authentik to 2026.5.5 [@thieneret](https://github.com/thieneret) ([#15855](https://github.com/community-scripts/ProxmoxVE/pull/15855))
|
||||
- [FIX] BookOrbit: add missing `restore_backup` during update [@vhsdream](https://github.com/vhsdream) ([#15881](https://github.com/community-scripts/ProxmoxVE/pull/15881))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: centralize deploy tail + trap-based tmpdir cleanup [@MickLesk](https://github.com/MickLesk) ([#15872](https://github.com/community-scripts/ProxmoxVE/pull/15872))
|
||||
- Update OPNsense from 26.1 to 26.7 [@tdn131](https://github.com/tdn131) ([#15895](https://github.com/community-scripts/ProxmoxVE/pull/15895))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- Revert "core: add configurable host CA inheritance during bootstrap" [@MickLesk](https://github.com/MickLesk) ([#15886](https://github.com/community-scripts/ProxmoxVE/pull/15886))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(build.func): expand glob in SSH key "Scan Folder/Glob" so it can find keys [@TowyTowy](https://github.com/TowyTowy) ([#15873](https://github.com/community-scripts/ProxmoxVE/pull/15873))
|
||||
|
||||
## 2026-07-18
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add configurable host CA inheritance during bootstrap [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15840](https://github.com/community-scripts/ProxmoxVE/pull/15840))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: Safe Delete Directorys & Update PYTHON_VERSION with setup_uv [@MickLesk](https://github.com/MickLesk) ([#15870](https://github.com/community-scripts/ProxmoxVE/pull/15870))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.update-lxcs] feat: optional reporting success/failures to heathchecks.io (or others) [@sir106](https://github.com/sir106) ([#15701](https://github.com/community-scripts/ProxmoxVE/pull/15701))
|
||||
|
||||
## 2026-07-17
|
||||
|
||||
### 🆕 New Scripts
|
||||
@@ -1135,128 +1210,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- chore(ct): sync coredns defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15182](https://github.com/community-scripts/ProxmoxVE/pull/15182))
|
||||
- chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184))
|
||||
- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183))
|
||||
|
||||
## 2026-06-18
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- flowise: add deps / uv / python 3.11 [@MickLesk](https://github.com/MickLesk) ([#15177](https://github.com/community-scripts/ProxmoxVE/pull/15177))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- refactor: crafty-controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15178](https://github.com/community-scripts/ProxmoxVE/pull/15178))
|
||||
|
||||
## 2026-06-17
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- kasm: fix release detection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15151](https://github.com/community-scripts/ProxmoxVE/pull/15151))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- trek: update install and upgrade workflow for v3.1.0 [@MickLesk](https://github.com/MickLesk) ([#15165](https://github.com/community-scripts/ProxmoxVE/pull/15165))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- chore(paperless-ngx): pin version to prevent v3 update [@tomfrenzel](https://github.com/tomfrenzel) ([#15171](https://github.com/community-scripts/ProxmoxVE/pull/15171))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- immich public proxy: replace npm install with npm ci for consistent dependency installation [@MickLesk](https://github.com/MickLesk) ([#15166](https://github.com/community-scripts/ProxmoxVE/pull/15166))
|
||||
|
||||
## 2026-06-16
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Feishin ([#15130](https://github.com/community-scripts/ProxmoxVE/pull/15130))
|
||||
- Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131))
|
||||
- Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(degoog): use localhost for valkey url [@ethan-hgwr](https://github.com/ethan-hgwr) ([#15149](https://github.com/community-scripts/ProxmoxVE/pull/15149))
|
||||
- Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141))
|
||||
- fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140))
|
||||
- fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137))
|
||||
|
||||
## 2026-06-15
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Watcharr: Clean install on update [@tremor021](https://github.com/tremor021) ([#15119](https://github.com/community-scripts/ProxmoxVE/pull/15119))
|
||||
- Vaultwarden: extend version check for VaultWarden update [@MickLesk](https://github.com/MickLesk) ([#15105](https://github.com/community-scripts/ProxmoxVE/pull/15105))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- degoog: add curl-impersonate to script [@MickLesk](https://github.com/MickLesk) ([#15117](https://github.com/community-scripts/ProxmoxVE/pull/15117))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: extend mesa-vulkan-drivers and vulkan-tools to installation for ARC GPU's [@MickLesk](https://github.com/MickLesk) ([#15106](https://github.com/community-scripts/ProxmoxVE/pull/15106))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: improve mirror selection and error handling [@MickLesk](https://github.com/MickLesk) ([#15108](https://github.com/community-scripts/ProxmoxVE/pull/15108))
|
||||
- core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107))
|
||||
|
||||
## 2026-06-14
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Iinvoiceninja: fix nginx setup assets port [@MickLesk](https://github.com/MickLesk) ([#15090](https://github.com/community-scripts/ProxmoxVE/pull/15090))
|
||||
- CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Implement backup functions for scripts C-D [@tremor021](https://github.com/tremor021) ([#15096](https://github.com/community-scripts/ProxmoxVE/pull/15096))
|
||||
|
||||
## 2026-06-13
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- BookOrbit ([#15080](https://github.com/community-scripts/ProxmoxVE/pull/15080))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Update authentik version to 2026.5.3 [@thieneret](https://github.com/thieneret) ([#15093](https://github.com/community-scripts/ProxmoxVE/pull/15093))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Update image-processing libraries [@vhsdream](https://github.com/vhsdream) ([#15082](https://github.com/community-scripts/ProxmoxVE/pull/15082))
|
||||
- HomeBox: Support v0.26.0 [@tomfrenzel](https://github.com/tomfrenzel) ([#15086](https://github.com/community-scripts/ProxmoxVE/pull/15086))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Implement backup functions for scripts A-B [@tremor021](https://github.com/tremor021) ([#15075](https://github.com/community-scripts/ProxmoxVE/pull/15075))
|
||||
|
||||
## 2026-06-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Twenty ([#15047](https://github.com/community-scripts/ProxmoxVE/pull/15047))
|
||||
- Alpine-Cinny ([#15044](https://github.com/community-scripts/ProxmoxVE/pull/15044))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [core] Implement backup and restore functions [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15067](https://github.com/community-scripts/ProxmoxVE/pull/15067))
|
||||
- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183))
|
||||
+9
-4
@@ -30,7 +30,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE="v0.27.0"
|
||||
RELEASE="v0.27.2"
|
||||
if check_for_gh_release "affine_app" "toeverything/AFFiNE" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop affine-web affine-worker
|
||||
@@ -38,10 +38,17 @@ function update_script() {
|
||||
|
||||
ensure_dependencies cmake
|
||||
|
||||
create_backup /root/.affine/config /root/.affine/storage
|
||||
create_backup /opt/affine/.env /root/.affine/config /root/.affine/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "${RELEASE}" "/opt/affine"
|
||||
|
||||
restore_backup
|
||||
|
||||
if [[ ! -f /opt/affine/.env ]]; then
|
||||
msg_error "/opt/affine/.env is missing (lost by an earlier update). Recreate it before retrying — see the AFFiNE install script for the expected variables."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Rebuilding Application (Patience ~25 mins, don't close the console!)"
|
||||
cd /opt/affine
|
||||
source /root/.profile
|
||||
@@ -111,8 +118,6 @@ TURBO
|
||||
set -a && source /opt/affine/.env && set +a
|
||||
$STD node ./scripts/self-host-predeploy.js
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start affine-web affine-worker
|
||||
msg_ok "Started Services"
|
||||
|
||||
+2
-7
@@ -30,16 +30,11 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "cinny" "cinnyapp/cinny"; then
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/cinny/config.json /opt/cinny_config.json.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/cinny/config.json
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cinny" "cinnyapp/cinny" "prebuild" "latest" "/opt/cinny" "cinny-*.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/cinny_config.json.bak /opt/cinny/config.json
|
||||
rm -f /opt/cinny_config.json.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Restarting nginx"
|
||||
$STD rc-service nginx restart
|
||||
|
||||
+4
-3
@@ -38,13 +38,14 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_go
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.3" setup_uv
|
||||
$STD uv cache clean
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.6" setup_uv
|
||||
RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust
|
||||
setup_yq
|
||||
|
||||
AUTHENTIK_VERSION="version/2026.5.3"
|
||||
AUTHENTIK_VERSION="version/2026.5.5"
|
||||
# Source: https://github.com/goauthentik/fips/blob/main/Makefile#L26
|
||||
XMLSEC_VERSION="1.3.11"
|
||||
XMLSEC_VERSION="1.3.12"
|
||||
|
||||
if check_for_gh_release "geoipupdate" "maxmind/geoipupdate"; then
|
||||
fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary"
|
||||
|
||||
@@ -53,6 +53,7 @@ function update_script() {
|
||||
mkdir -p /opt/bookorbit/server/migrations
|
||||
cp -r /opt/bookorbit/server/src/db/migrations/. /opt/bookorbit/server/migrations/
|
||||
chmod +x /opt/bookorbit/server/bin/kepubify/*
|
||||
restore_backup
|
||||
APP_VER=$(cat ~/.bookorbit)
|
||||
sed -i "s/^APP_VERSION=.*/APP_VERSION=v$APP_VER/" /opt/bookorbit/.env
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
+3
-25
@@ -116,21 +116,10 @@ EOF
|
||||
|
||||
msg_info "Creating Backup"
|
||||
BACKUP_FILE="/opt/dispatcharr_backup_$(date +%F_%H-%M-%S).tar.gz"
|
||||
if [[ -f /opt/dispatcharr/.env ]]; then
|
||||
cp /opt/dispatcharr/.env /tmp/dispatcharr.env.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-gunicorn.sh ]]; then
|
||||
rm -f /opt/dispatcharr/start-gunicorn.sh
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-celery.sh ]]; then
|
||||
cp /opt/dispatcharr/start-celery.sh /tmp/start-celery.sh.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-celerybeat.sh ]]; then
|
||||
cp /opt/dispatcharr/start-celerybeat.sh /tmp/start-celerybeat.sh.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-daphne.sh ]]; then
|
||||
cp /opt/dispatcharr/start-daphne.sh /tmp/start-daphne.sh.backup
|
||||
fi
|
||||
create_backup /opt/dispatcharr/.env /opt/dispatcharr/start-celery.sh /opt/dispatcharr/start-celerybeat.sh /opt/dispatcharr/start-daphne.sh
|
||||
if [[ -f /opt/dispatcharr/.env ]]; then
|
||||
set -o allexport
|
||||
source /opt/dispatcharr/.env
|
||||
@@ -145,20 +134,9 @@ EOF
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" "tarball"
|
||||
|
||||
msg_info "Updating Dispatcharr Backend"
|
||||
if [[ -f /tmp/dispatcharr.env.backup ]]; then
|
||||
mv /tmp/dispatcharr.env.backup /opt/dispatcharr/.env
|
||||
fi
|
||||
if [[ -f /tmp/start-celery.sh.backup ]]; then
|
||||
mv /tmp/start-celery.sh.backup /opt/dispatcharr/start-celery.sh
|
||||
fi
|
||||
if [[ -f /tmp/start-celerybeat.sh.backup ]]; then
|
||||
mv /tmp/start-celerybeat.sh.backup /opt/dispatcharr/start-celerybeat.sh
|
||||
fi
|
||||
if [[ -f /tmp/start-daphne.sh.backup ]]; then
|
||||
mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh
|
||||
fi
|
||||
restore_backup
|
||||
|
||||
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)
|
||||
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env
|
||||
|
||||
+2
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop nginx
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
if [[ -f /opt/fladder/assets/config/config.json ]]; then
|
||||
msg_info "Backing up configuration"
|
||||
cp /opt/fladder/assets/config/config.json /tmp/fladder_config.json.bak
|
||||
msg_ok "Configuration backed up"
|
||||
fi
|
||||
create_backup /opt/fladder/assets/config/config.json
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Fladder" "DonutWare/Fladder" "prebuild" "latest" "/opt/fladder" "Fladder-Web-*.zip"
|
||||
|
||||
if [[ -f /tmp/fladder_config.json.bak ]]; then
|
||||
msg_info "Restoring configuration"
|
||||
mkdir -p /opt/fladder/assets/config
|
||||
cp /tmp/fladder_config.json.bak /opt/fladder/assets/config/config.json
|
||||
rm -f /tmp/fladder_config.json.bak
|
||||
msg_ok "Configuration restored"
|
||||
fi
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start nginx
|
||||
|
||||
+4
-12
@@ -34,12 +34,11 @@ function update_script() {
|
||||
systemctl stop flatnotes
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration and Data"
|
||||
cp /opt/flatnotes/.env /opt/flatnotes.env
|
||||
cp -r /opt/flatnotes/data /opt/flatnotes_data_backup
|
||||
msg_ok "Backed up Configuration and Data"
|
||||
create_backup /opt/flatnotes/.env /opt/flatnotes/data
|
||||
|
||||
fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Flatnotes"
|
||||
cd /opt/flatnotes/client
|
||||
@@ -52,13 +51,6 @@ function update_script() {
|
||||
$STD /usr/local/bin/uv sync
|
||||
msg_ok "Updated Flatnotes"
|
||||
|
||||
msg_info "Restoring Configuration and Data"
|
||||
cp /opt/flatnotes.env /opt/flatnotes/.env
|
||||
cp -r /opt/flatnotes_data_backup/. /opt/flatnotes/data
|
||||
rm -f /opt/flatnotes.env
|
||||
rm -r /opt/flatnotes_data_backup
|
||||
msg_ok "Restored Configuration and Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start flatnotes
|
||||
msg_ok "Started Service"
|
||||
|
||||
@@ -38,9 +38,9 @@ function update_script() {
|
||||
systemctl stop fluid-calendar
|
||||
msg_info "Stopped Service"
|
||||
|
||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||
create_backup /opt/fluid-calendar/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Fluid Calendar"
|
||||
cd /opt/fluid-calendar
|
||||
|
||||
+4
-2
@@ -41,13 +41,15 @@ function update_script() {
|
||||
--exclude="ghostfolio/node_modules" \
|
||||
--exclude="ghostfolio/dist" \
|
||||
ghostfolio
|
||||
mv /opt/ghostfolio/.env /opt/env.backup
|
||||
msg_ok "Backup Created"
|
||||
|
||||
create_backup /opt/ghostfolio/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Ghostfolio"
|
||||
mv /opt/env.backup /opt/ghostfolio/.env
|
||||
sed -i -E '/^DATABASE_URL=/ s/[?&]sslmode=prefer//g' /opt/ghostfolio/.env
|
||||
cd /opt/ghostfolio
|
||||
$STD npm ci
|
||||
|
||||
+2
-9
@@ -35,18 +35,11 @@ function update_script() {
|
||||
systemctl stop gogs
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/gogs/custom /opt/gogs_custom_backup
|
||||
cp -r /opt/gogs/data /opt/gogs_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/gogs/custom /opt/gogs/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gogs" "gogs/gogs" "prebuild" "latest" "/opt/gogs" "gogs_*_linux_$(arch_resolve).tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/gogs_custom_backup/. /opt/gogs/custom
|
||||
cp -r /opt/gogs_data_backup/. /opt/gogs/data
|
||||
rm -rf /opt/gogs_custom_backup /opt/gogs_data_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gogs
|
||||
|
||||
@@ -36,6 +36,30 @@ function update_script() {
|
||||
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-$(arch_resolve).zip"
|
||||
chmod +x /opt/gotify/gotify-linux-$(arch_resolve)
|
||||
|
||||
if [[ ! -f /opt/gotify/gotify-server.env ]]; then
|
||||
gotify_old_config=""
|
||||
for f in /opt/gotify/config.yml /etc/gotify/config.yml; do
|
||||
[[ -f "$f" ]] && gotify_old_config="$f" && break
|
||||
done
|
||||
if [[ -n "$gotify_old_config" ]]; then
|
||||
msg_info "Migrating ${gotify_old_config} to env format (Gotify 3.x)"
|
||||
if /opt/gotify/gotify-linux-$(arch_resolve) migrate-config "$gotify_old_config" >/opt/gotify/gotify-server.env 2>/dev/null; then
|
||||
mv "$gotify_old_config" "${gotify_old_config}.bak"
|
||||
msg_ok "Migrated config to /opt/gotify/gotify-server.env (backup: ${gotify_old_config}.bak)"
|
||||
else
|
||||
rm -f /opt/gotify/gotify-server.env
|
||||
msg_warn "Config migration failed — left ${gotify_old_config} in place, review manually"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! grep -qE '^ExecStart=.* serve' /etc/systemd/system/gotify.service 2>/dev/null; then
|
||||
msg_info "Migrating service to serve subcommand (Gotify 3.x)"
|
||||
sed -i -E 's|^(ExecStart=/opt/gotify/.*gotify-linux-[^ ]+)$|\1 serve|' /etc/systemd/system/gotify.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Migrated service to serve subcommand"
|
||||
fi
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gotify
|
||||
msg_ok "Started Service"
|
||||
|
||||
+4
-11
@@ -37,21 +37,14 @@ function update_script() {
|
||||
systemctl stop grist
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating backup"
|
||||
rm -rf /opt/grist_bak
|
||||
mv /opt/grist /opt/grist_bak
|
||||
msg_ok "Backup created"
|
||||
create_backup /opt/grist/.env /opt/grist/docs /opt/grist/grist-sessions.db /opt/grist/landing.db
|
||||
|
||||
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Grist"
|
||||
mkdir -p /opt/grist/docs
|
||||
cp -n /opt/grist_bak/.env /opt/grist/.env
|
||||
if ls /opt/grist_bak/docs/* &>/dev/null; then
|
||||
cp -r /opt/grist_bak/docs/* /opt/grist/docs/
|
||||
fi
|
||||
[[ -f /opt/grist_bak/grist-sessions.db ]] && cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
|
||||
[[ -f /opt/grist_bak/landing.db ]] && cp /opt/grist_bak/landing.db /opt/grist/landing.db
|
||||
cd /opt/grist
|
||||
$STD yarn install
|
||||
$STD yarn run build:prod
|
||||
|
||||
@@ -39,8 +39,12 @@ function update_script() {
|
||||
systemctl stop homebox
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/homebox/.env /opt/homebox/.data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||
chmod +x /opt/homebox/homebox
|
||||
|
||||
restore_backup
|
||||
[ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
|
||||
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
|
||||
|
||||
|
||||
+4
-17
@@ -35,16 +35,12 @@ function update_script() {
|
||||
systemctl stop homelable
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration and Data"
|
||||
cp /opt/homelable/backend/.env /opt/homelable.env.bak
|
||||
cp -r /opt/homelable/data /opt/homelable_data_bak
|
||||
if [[ -f /opt/homelable/mcp/.env ]]; then
|
||||
cp -a /opt/homelable/mcp/.env /opt/homelable-mcp.env.bak
|
||||
fi
|
||||
msg_ok "Backed up Configuration and Data"
|
||||
create_backup /opt/homelable/backend/.env /opt/homelable/data /opt/homelable/mcp/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Python Dependencies"
|
||||
cd /opt/homelable/backend
|
||||
$STD uv venv --clear /opt/homelable/backend/.venv
|
||||
@@ -57,17 +53,8 @@ function update_script() {
|
||||
$STD npm run build
|
||||
msg_ok "Rebuilt Frontend"
|
||||
|
||||
msg_info "Restoring Configuration and Data"
|
||||
cp /opt/homelable.env.bak /opt/homelable/backend/.env
|
||||
cp -r /opt/homelable_data_bak/. /opt/homelable/data/
|
||||
rm -f /opt/homelable.env.bak
|
||||
rm -rf /opt/homelable_data_bak
|
||||
msg_ok "Restored Configuration and Data"
|
||||
|
||||
if [[ -f /opt/homelable-mcp.env.bak ]]; then
|
||||
if [[ -f /opt/homelable/mcp/.env ]]; then
|
||||
msg_info "Restoring MCP Server"
|
||||
cp -a /opt/homelable-mcp.env.bak /opt/homelable/mcp/.env
|
||||
rm -f /opt/homelable-mcp.env.bak
|
||||
MCP_OWNER=$(stat -c '%U' /opt/homelable/mcp/.env)
|
||||
cd /opt/homelable/mcp
|
||||
$STD uv venv --clear /opt/homelable/mcp/.venv
|
||||
|
||||
+4
-13
@@ -37,20 +37,12 @@ function update_script() {
|
||||
systemctl stop homepage
|
||||
msg_ok "Stopped service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/homepage/.env /opt/homepage.env
|
||||
cp -r /opt/homepage/config /opt/homepage_config_backup
|
||||
[[ -d /opt/homepage/public/images ]] && cp -r /opt/homepage/public/images /opt/homepage_images_backup
|
||||
[[ -d /opt/homepage/public/icons ]] && cp -r /opt/homepage/public/icons /opt/homepage_icons_backup
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/homepage/.env /opt/homepage/config
|
||||
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"
|
||||
|
||||
msg_info "Restoring Backup"
|
||||
mv /opt/homepage.env /opt/homepage
|
||||
rm -rf /opt/homepage/config
|
||||
mv /opt/homepage_config_backup /opt/homepage/config
|
||||
msg_ok "Restored Backup"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Homepage (Patience)"
|
||||
RELEASE=$(get_latest_github_release "gethomepage/homepage")
|
||||
@@ -63,8 +55,7 @@ function update_script() {
|
||||
export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
|
||||
export NEXT_TELEMETRY_DISABLED=1
|
||||
$STD pnpm build
|
||||
[[ -d /opt/homepage_images_backup ]] && mv /opt/homepage_images_backup /opt/homepage/public/images
|
||||
[[ -d /opt/homepage_icons_backup ]] && mv /opt/homepage_icons_backup /opt/homepage/public/icons
|
||||
BACKUP_DIR=/opt/homepage-assets.backup restore_backup
|
||||
msg_ok "Updated Homepage"
|
||||
|
||||
msg_info "Starting service"
|
||||
|
||||
+2
-7
@@ -36,16 +36,11 @@ function update_script() {
|
||||
systemctl stop hoodik
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/hoodik/.env /opt/hoodik.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/hoodik/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hoodik" "hudikhq/hoodik" "prebuild" "latest" "/opt/hoodik" "*$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/hoodik.env.bak /opt/hoodik/.env
|
||||
rm -f /opt/hoodik.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start hoodik
|
||||
|
||||
+2
-7
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop igotify
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/igotify/.env /opt/igotify.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/igotify/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "igotify" "androidseb25/iGotify-Notification-Assistent" "prebuild" "latest" "/opt/igotify" "iGotify-Notification-Service-$(arch_resolve)-v*.zip"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/igotify.env.bak /opt/igotify/.env
|
||||
rm -f /opt/igotify.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start igotify
|
||||
|
||||
+2
-7
@@ -35,9 +35,7 @@ function update_script() {
|
||||
systemctl stop immichframe
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp -r /opt/immichframe/Config /tmp/immichframe_config.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/immichframe/Config
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immichframe" "immichFrame/ImmichFrame" "tarball" "latest" "/tmp/immichframe"
|
||||
|
||||
@@ -57,11 +55,8 @@ function update_script() {
|
||||
rm -rf /tmp/immichframe
|
||||
msg_ok "Setup ImmichFrame"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp -r /tmp/immichframe_config.bak/* /opt/immichframe/Config/
|
||||
rm -rf /tmp/immichframe_config.bak
|
||||
restore_backup
|
||||
chown -R immichframe:immichframe /opt/immichframe
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+4
-11
@@ -41,20 +41,14 @@ function update_script() {
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
msg_info "Creating Backup"
|
||||
rm -f /opt/.env.backup
|
||||
rm -rf /opt/investbrain_backup
|
||||
cp /opt/investbrain/.env /opt/.env.backup
|
||||
cp -r /opt/investbrain/storage /opt/investbrain_backup
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/investbrain/.env /opt/investbrain/storage
|
||||
|
||||
fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Investbrain"
|
||||
cd /opt/investbrain
|
||||
rm -rf /opt/investbrain/storage
|
||||
cp /opt/.env.backup /opt/investbrain/.env
|
||||
cp -r /opt/investbrain_backup/ /opt/investbrain/storage
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
$STD /usr/local/bin/composer install --no-interaction --no-dev --optimize-autoloader
|
||||
$STD npm install
|
||||
@@ -69,7 +63,6 @@ function update_script() {
|
||||
$STD php artisan event:cache
|
||||
chown -R www-data:www-data /opt/investbrain
|
||||
chmod -R 775 /opt/investbrain/storage /opt/investbrain/bootstrap/cache
|
||||
rm -rf /opt/.env.backup /opt/investbrain_backup
|
||||
msg_ok "Updated Investbrain"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
+2
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop supervisor nginx php8.4-fpm
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /tmp/invoiceninja_backup
|
||||
cp /opt/invoiceninja/.env /tmp/invoiceninja_backup/
|
||||
cp -r /opt/invoiceninja/storage /tmp/invoiceninja_backup/ 2>/dev/null || true
|
||||
cp -r /opt/invoiceninja/public/storage /tmp/invoiceninja_backup/public_storage 2>/dev/null || true
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/invoiceninja/.env /opt/invoiceninja/storage /opt/invoiceninja/public/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /tmp/invoiceninja_backup/.env /opt/invoiceninja/
|
||||
cp -r /tmp/invoiceninja_backup/storage/* /opt/invoiceninja/storage/ 2>/dev/null || true
|
||||
cp -r /tmp/invoiceninja_backup/public_storage/* /opt/invoiceninja/public/storage/ 2>/dev/null || true
|
||||
rm -rf /tmp/invoiceninja_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/invoiceninja
|
||||
|
||||
+2
-10
@@ -35,19 +35,11 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/invoiceshelf/.env /opt/invoiceshelf.env.bak
|
||||
cp -r /opt/invoiceshelf/storage /opt/invoiceshelf_storage_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/invoiceshelf/.env /opt/invoiceshelf/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/invoiceshelf.env.bak /opt/invoiceshelf/.env
|
||||
rm -f /opt/invoiceshelf.env.bak
|
||||
cp -r /opt/invoiceshelf_storage_backup/. /opt/invoiceshelf/storage
|
||||
rm -rf /opt/invoiceshelf_storage_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/invoiceshelf
|
||||
|
||||
+2
-2
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop joplin-server
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
cp /opt/joplin-server/.env /opt
|
||||
create_backup /opt/joplin-server/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball"
|
||||
mv /opt/.env /opt/joplin-server
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Joplin-Server"
|
||||
cd /opt/joplin-server
|
||||
|
||||
+2
-10
@@ -35,20 +35,12 @@ function update_script() {
|
||||
systemctl stop jotty
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up configuration & data"
|
||||
cp /opt/jotty/.env /opt/app.env
|
||||
[[ -d /opt/jotty/data ]] && mv /opt/jotty/data /opt/data
|
||||
[[ -d /opt/jotty/config ]] && mv /opt/jotty/config /opt/config
|
||||
msg_ok "Backed up configuration & data"
|
||||
create_backup /opt/jotty/.env /opt/jotty/data /opt/jotty/config
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Restoring configuration & data"
|
||||
mv /opt/app.env /opt/jotty/.env
|
||||
[[ -d /opt/data ]] && mv /opt/data /opt/jotty/data
|
||||
[[ -d /opt/config ]] && cp -a /opt/config/* /opt/jotty/config && rm -rf /opt/config
|
||||
msg_ok "Restored configuration & data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start jotty
|
||||
|
||||
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop kan
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/kan/.env /opt/kan.env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/kan/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_tag "kan" "kanbn/kan" "latest"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/kan.env.bak /opt/kan/.env
|
||||
rm -f /opt/kan.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/kan
|
||||
|
||||
+2
-9
@@ -37,18 +37,11 @@ function update_script() {
|
||||
systemctl stop kima-frontend kima-backend kima-analyzer kima-analyzer-clap
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/kima-hub/backend/.env /opt/kima-hub-backend-env.bak
|
||||
cp /opt/kima-hub/frontend/.env /opt/kima-hub-frontend-env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/kima-hub/backend/.env /opt/kima-hub/frontend/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/kima-hub-backend-env.bak /opt/kima-hub/backend/.env
|
||||
cp /opt/kima-hub-frontend-env.bak /opt/kima-hub/frontend/.env
|
||||
rm -f /opt/kima-hub-backend-env.bak /opt/kima-hub-frontend-env.bak
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Backend"
|
||||
cd /opt/kima-hub/backend
|
||||
|
||||
+2
-10
@@ -35,22 +35,14 @@ function update_script() {
|
||||
systemctl stop kitchenowl
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /opt/kitchenowl_backup
|
||||
cp -r /opt/kitchenowl/data /opt/kitchenowl_backup/
|
||||
cp -f /opt/kitchenowl/kitchenowl.env /opt/kitchenowl_backup/
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/kitchenowl/data /opt/kitchenowl/kitchenowl.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kitchenowl" "TomBursch/kitchenowl" "tarball" "latest" "/opt/kitchenowl"
|
||||
rm -rf /opt/kitchenowl/web
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kitchenowl-web" "TomBursch/kitchenowl" "prebuild" "latest" "/opt/kitchenowl/web" "kitchenowl_Web.tar.gz"
|
||||
|
||||
msg_info "Restoring data"
|
||||
restore_backup
|
||||
sed -i 's/default=True/default=False/' /opt/kitchenowl/backend/wsgi.py
|
||||
cp -r /opt/kitchenowl_backup/data /opt/kitchenowl/
|
||||
cp -f /opt/kitchenowl_backup/kitchenowl.env /opt/kitchenowl/
|
||||
rm -rf /opt/kitchenowl_backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Updating KitchenOwl"
|
||||
cd /opt/kitchenowl/backend
|
||||
|
||||
+2
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop nginx php8.4-fpm
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /tmp/koel_backup
|
||||
cp /opt/koel/.env /tmp/koel_backup/
|
||||
cp -r /opt/koel/storage /tmp/koel_backup/ 2>/dev/null || true
|
||||
cp -r /opt/koel/public/img /tmp/koel_backup/ 2>/dev/null || true
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/koel/.env /opt/koel/storage /opt/koel/public/img
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koel" "koel/koel" "prebuild" "latest" "/opt/koel" "koel-*.tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /tmp/koel_backup/.env /opt/koel/
|
||||
cp -r /tmp/koel_backup/storage/* /opt/koel/storage/ 2>/dev/null || true
|
||||
cp -r /tmp/koel_backup/img/* /opt/koel/public/img/ 2>/dev/null || true
|
||||
rm -rf /tmp/koel_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/koel
|
||||
|
||||
+7
-9
@@ -34,20 +34,18 @@ function update_script() {
|
||||
msg_info "Creating Backup"
|
||||
mariadb-dump leantime >"/opt/leantime_db_backup_$(date +%F).sql"
|
||||
tar -czf "/opt/leantime_backup_$(date +%F).tar.gz" "/opt/leantime"
|
||||
mv /opt/leantime /opt/leantime_bak
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz
|
||||
create_backup /opt/leantime/config/.env
|
||||
|
||||
msg_info "Restoring Config & Permissions"
|
||||
mv /opt/leantime_bak/config/.env /opt/leantime/config/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Setting Permissions"
|
||||
chown -R www-data:www-data "/opt/leantime"
|
||||
chmod -R 750 "/opt/leantime"
|
||||
msg_ok "Restored Config & Permissions"
|
||||
|
||||
msg_info "Removing Backup"
|
||||
rm -rf /opt/leantime_bak
|
||||
msg_ok "Removed Backup"
|
||||
msg_ok "Set Permissions"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
+6
-16
@@ -35,12 +35,12 @@ function update_script() {
|
||||
systemctl stop librechat rag-api
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/librechat/.env /opt/librechat.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/librechat/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_tag "librechat" "danny-avila/LibreChat"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
cd /opt/librechat
|
||||
$STD npm ci
|
||||
@@ -52,11 +52,6 @@ function update_script() {
|
||||
$STD npm cache clean --force
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/librechat.env.bak /opt/librechat/.env
|
||||
rm -f /opt/librechat.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start rag-api librechat
|
||||
msg_ok "Started Services"
|
||||
@@ -68,22 +63,17 @@ function update_script() {
|
||||
systemctl stop rag-api
|
||||
msg_ok "Stopped RAG API"
|
||||
|
||||
msg_info "Backing up RAG API Configuration"
|
||||
cp /opt/rag-api/.env /opt/rag-api.env.bak
|
||||
msg_ok "Backed up RAG API Configuration"
|
||||
create_backup /opt/rag-api/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rag-api" "danny-avila/rag_api" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating RAG API Dependencies"
|
||||
cd /opt/rag-api
|
||||
$STD .venv/bin/pip install -r requirements.lite.txt
|
||||
msg_ok "Updated RAG API Dependencies"
|
||||
|
||||
msg_info "Restoring RAG API Configuration"
|
||||
cp /opt/rag-api.env.bak /opt/rag-api/.env
|
||||
rm -f /opt/rag-api.env.bak
|
||||
msg_ok "Restored RAG API Configuration"
|
||||
|
||||
msg_info "Starting RAG API"
|
||||
systemctl start rag-api
|
||||
msg_ok "Started RAG API"
|
||||
|
||||
+2
-9
@@ -35,19 +35,12 @@ function update_script() {
|
||||
systemctl stop nginx linkding linkding-tasks
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/linkding/data /opt/linkding_data_backup
|
||||
cp /opt/linkding/.env /opt/linkding_env_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/linkding/data /opt/linkding/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkding" "sissbruecker/linkding" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/linkding_data_backup/. /opt/linkding/data
|
||||
cp /opt/linkding_env_backup /opt/linkding/.env
|
||||
rm -rf /opt/linkding_data_backup /opt/linkding_env_backup
|
||||
restore_backup
|
||||
ln -sf /usr/lib/$(arch_resolve "x86_64-linux-gnu" "aarch64-linux-gnu")/mod_icu.so /opt/linkding/libicu.so
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating LinkDing"
|
||||
cd /opt/linkding
|
||||
|
||||
+4
-8
@@ -35,13 +35,11 @@ function update_script() {
|
||||
|
||||
RUST_CRATES="monolith" setup_rust
|
||||
|
||||
msg_info "Backing up data"
|
||||
mv /opt/linkwarden/.env /opt/.env
|
||||
[ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
|
||||
rm -rf /opt/linkwarden
|
||||
msg_ok "Backed up data"
|
||||
create_backup /opt/linkwarden/.env /opt/linkwarden/data
|
||||
|
||||
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Linkwarden"
|
||||
cd /opt/linkwarden
|
||||
@@ -60,11 +58,9 @@ function update_script() {
|
||||
$STD yarn
|
||||
$STD npx playwright install-deps
|
||||
$STD npx playwright install
|
||||
mv /opt/.env /opt/linkwarden/.env
|
||||
$STD yarn prisma:generate
|
||||
$STD yarn web:build
|
||||
$STD yarn prisma:deploy
|
||||
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
|
||||
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
|
||||
rm -rf /root/.cache/yarn
|
||||
rm -rf /opt/linkwarden/.next/cache
|
||||
|
||||
+2
-7
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop lobehub
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/lobehub/.env /opt/lobehub.env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/lobehub/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lobehub" "lobehub/lobehub" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/lobehub.env.bak /opt/lobehub/.env
|
||||
rm -f /opt/lobehub.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/lobehub
|
||||
|
||||
+2
-8
@@ -36,10 +36,7 @@ function update_script() {
|
||||
systemctl stop mail-archiver
|
||||
msg_ok "Stopped Mail-Archiver"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/mail-archiver/appsettings.json /opt/mail-archiver/.env /opt/
|
||||
[[ -d /opt/mail-archiver/DataProtection-Keys ]] && cp -r /opt/mail-archiver/DataProtection-Keys /opt
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/mail-archiver/appsettings.json /opt/mail-archiver/.env /opt/mail-archiver/DataProtection-Keys
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball"
|
||||
|
||||
@@ -51,10 +48,7 @@ function update_script() {
|
||||
rm -rf /opt/mail-archiver-build
|
||||
msg_ok "Updated Mail-Archiver"
|
||||
|
||||
msg_info "Restoring Backup"
|
||||
cp /opt/appsettings.json /opt/.env /opt/mail-archiver
|
||||
[[ -d /opt/DataProtection-Keys ]] && cp -r /opt/DataProtection-Keys /opt/mail-archiver/
|
||||
msg_ok "Restored Backup"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Mail-Archiver"
|
||||
systemctl start mail-archiver
|
||||
|
||||
+6
-9
@@ -39,13 +39,15 @@ function update_script() {
|
||||
|
||||
msg_info "Backing up Data"
|
||||
CURRENT_VERSION=$(grep -oP 'APP_VERSION=\K[^ ]+' /opt/manyfold/.env || echo "unknown")
|
||||
cp -r /opt/manyfold/app/storage /opt/manyfold_storage_backup 2>/dev/null || true
|
||||
cp -r /opt/manyfold/app/tmp /opt/manyfold_tmp_backup 2>/dev/null || true
|
||||
$STD tar -czf "/opt/manyfold_${CURRENT_VERSION}_backup.tar.gz" -C /opt/manyfold app
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
create_backup /opt/manyfold/app/storage /opt/manyfold/app/tmp
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Configuring Manyfold"
|
||||
RUBY_INSTALL_VERSION=$(cat /opt/manyfold/app/.ruby-version)
|
||||
YARN_VERSION=$(grep '"packageManager":' /opt/manyfold/app/package.json | sed -E 's/.*"(yarn@[0-9\.]+)".*/\1/')
|
||||
@@ -55,14 +57,9 @@ function update_script() {
|
||||
|
||||
RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby
|
||||
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/manyfold/app/{storage,tmp}
|
||||
cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true
|
||||
cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true
|
||||
msg_info "Setting Permissions"
|
||||
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold}
|
||||
chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config
|
||||
rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup
|
||||
msg_ok "Restored Data"
|
||||
msg_ok "Set Permissions"
|
||||
|
||||
msg_info "Installing Manyfold"
|
||||
|
||||
|
||||
+2
-18
@@ -35,11 +35,7 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
[[ -f /opt/matomo/config/config.ini.php ]] && cp /opt/matomo/config/config.ini.php /opt/matomo_config.bak
|
||||
[[ -d /opt/matomo/misc/user ]] && cp -r /opt/matomo/misc/user /opt/matomo_user_backup
|
||||
[[ -f /root/matomo.creds ]] && cp /root/matomo.creds /opt/matomo_db_creds.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/matomo/config/config.ini.php /opt/matomo/misc/user /root/matomo.creds
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "matomo" "matomo-org/matomo" "prebuild" "latest" "/opt/matomo" "matomo-*.zip"
|
||||
|
||||
@@ -53,20 +49,8 @@ function update_script() {
|
||||
chmod -R 755 /opt/matomo/tmp
|
||||
msg_ok "Set up Matomo"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
if [[ -f /opt/matomo_config.bak ]]; then
|
||||
mkdir -p /opt/matomo/config
|
||||
cp /opt/matomo_config.bak /opt/matomo/config/config.ini.php
|
||||
fi
|
||||
if [[ -d /opt/matomo_user_backup ]]; then
|
||||
mkdir -p /opt/matomo/misc/user
|
||||
cp -r /opt/matomo_user_backup/. /opt/matomo/misc/user
|
||||
fi
|
||||
[[ -f /opt/matomo_db_creds.bak ]] && cp /opt/matomo_db_creds.bak /root/matomo.creds
|
||||
rm -f /opt/matomo_config.bak /opt/matomo_db_creds.bak
|
||||
rm -rf /opt/matomo_user_backup
|
||||
restore_backup
|
||||
chown -R www-data:www-data /opt/matomo
|
||||
msg_ok "Restored Data"
|
||||
|
||||
if [[ -f /opt/matomo/console ]]; then
|
||||
msg_info "Running Matomo database upgrade"
|
||||
|
||||
+3
-4
@@ -33,14 +33,13 @@ function update_script() {
|
||||
systemctl stop meilisearch-ui
|
||||
msg_ok "Stopped Meilisearch-UI"
|
||||
|
||||
cp /opt/meilisearch-ui/.env.local /tmp/.env.local.bak
|
||||
rm -rf /opt/meilisearch-ui
|
||||
fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
|
||||
create_backup /opt/meilisearch-ui/.env.local
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Configuring Meilisearch-UI"
|
||||
cd /opt/meilisearch-ui
|
||||
sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
|
||||
mv /tmp/.env.local.bak /opt/meilisearch-ui/.env.local
|
||||
$STD pnpm install
|
||||
msg_ok "Configured Meilisearch-UI"
|
||||
|
||||
|
||||
+4
-14
@@ -48,14 +48,11 @@ function update_script() {
|
||||
systemctl stop metube
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Old Installation"
|
||||
if [[ -d /opt/metube_bak ]]; then
|
||||
rm -rf /opt/metube_bak
|
||||
fi
|
||||
mv /opt/metube /opt/metube_bak
|
||||
msg_ok "Backup created"
|
||||
create_backup /opt/metube/.env
|
||||
|
||||
fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/metube/ui
|
||||
@@ -75,13 +72,6 @@ function update_script() {
|
||||
$STD uv sync
|
||||
msg_ok "Installed Backend"
|
||||
|
||||
msg_info "Restoring .env"
|
||||
if [[ -f /opt/metube_bak/.env ]]; then
|
||||
cp /opt/metube_bak/.env /opt/metube/.env
|
||||
fi
|
||||
rm -rf /opt/metube_bak
|
||||
msg_ok "Restored .env"
|
||||
|
||||
if grep -q 'pipenv' /etc/systemd/system/metube.service; then
|
||||
msg_info "Patching systemd Service"
|
||||
cat <<EOF >/etc/systemd/system/metube.service
|
||||
|
||||
+3
-11
@@ -35,13 +35,12 @@ function update_script() {
|
||||
systemctl stop nametag
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/nametag/.env /opt/nametag.env.bak
|
||||
cp -r /opt/nametag/data /opt/nametag_data_bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/nametag/.env /opt/nametag/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
cd /opt/nametag
|
||||
$STD npm ci
|
||||
@@ -54,13 +53,6 @@ function update_script() {
|
||||
cp -r /opt/nametag/public /opt/nametag/.next/standalone/public
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/nametag.env.bak /opt/nametag/.env
|
||||
cp -r /opt/nametag_data_bak/. /opt/nametag/data/
|
||||
rm -f /opt/nametag.env.bak
|
||||
rm -rf /opt/nametag_data_bak
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/nametag
|
||||
$STD npx prisma migrate deploy
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ function update_script() {
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
head -n1)
|
||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_.*_\([0-9]\{14\}\)\.deb$/\1-\2/p' <<<"${OMADA_PKG}")
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_linux.*/\1/p' <<<"${OMADA_PKG}")
|
||||
|
||||
CURRENT_VERSION=$(cat $HOME/.omada 2>/dev/null || echo "0")
|
||||
|
||||
|
||||
+3
-5
@@ -61,18 +61,16 @@ EOF
|
||||
systemctl stop overseerr
|
||||
msg_ok "Service stopped"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/overseerr/config /opt/config_backup
|
||||
msg_ok "Backup created"
|
||||
create_backup /opt/overseerr/config
|
||||
|
||||
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||
rm -rf /opt/overseerr/config
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Configuring ${APP} (Patience)"
|
||||
cd /opt/overseerr
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
mv /opt/config_backup /opt/overseerr/config
|
||||
msg_ok "Configured ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+3
-8
@@ -35,23 +35,18 @@ function update_script() {
|
||||
systemctl stop ownfoil
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/ownfoil/app/config /opt/ownfoil_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/ownfoil/app/config
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
cd /opt/ownfoil
|
||||
$STD source .venv/bin/activate
|
||||
$STD uv pip install -r requirements.txt
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/ownfoil_data_backup /opt/ownfoil/app/config
|
||||
rm -rf /opt/ownfoil_data_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start ownfoil
|
||||
msg_ok "Started Service"
|
||||
|
||||
+2
-6
@@ -35,15 +35,11 @@ function update_script() {
|
||||
systemctl stop paperclip
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/paperclip-ai/.env /opt/paperclip.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/paperclip-ai/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperclip-ai" "paperclipai/paperclip" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
mv /opt/paperclip.env.bak /opt/paperclip-ai/.env
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Paperclip"
|
||||
cd /opt/paperclip-ai
|
||||
|
||||
+4
-9
@@ -35,22 +35,18 @@ function update_script() {
|
||||
systemctl stop papra
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
if [[ -f /opt/papra/apps/papra-server/.env ]]; then
|
||||
cp /opt/papra/apps/papra-server/.env /opt/papra_env.bak
|
||||
fi
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/papra/apps/papra-server/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "papra" "papra-hq/papra" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
pnpm_version=$(grep -oP '"packageManager":\s*"pnpm@\K[^"]+' /opt/papra/package.json)
|
||||
NODE_VERSION="26" NODE_MODULE="pnpm@$pnpm_version" setup_nodejs
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/papra
|
||||
if [[ -f /opt/papra_env.bak ]]; then
|
||||
cp /opt/papra_env.bak /opt/papra/apps/papra-server/.env
|
||||
else
|
||||
if [[ ! -f /opt/papra/apps/papra-server/.env ]]; then
|
||||
msg_warn ".env missing, regenerating from defaults"
|
||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||
cat <<EOF >/opt/papra/apps/papra-server/.env
|
||||
@@ -74,7 +70,6 @@ EOF
|
||||
$STD pnpm --filter "@papra/app-client..." run build
|
||||
$STD pnpm --filter "@papra/app-server..." run build
|
||||
ln -sf /opt/papra/apps/papra-client/dist /opt/papra/apps/papra-server/public
|
||||
rm -f /opt/papra_env.bak
|
||||
msg_ok "Built Application"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
@@ -72,9 +72,13 @@ EOF
|
||||
msg_ok "Migration complete!"
|
||||
fi
|
||||
|
||||
create_backup /opt/patchmon/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "singlefile" "latest" "/opt/patchmon" "patchmon-server-linux-$(arch_resolve)"
|
||||
mv /opt/patchmon/PatchMon /opt/patchmon/patchmon-server
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Fetching PatchMon agent binaries"
|
||||
RELEASE=$(get_latest_github_release "PatchMon/PatchMon")
|
||||
[[ ! -d /opt/patchmon/agents ]] && mkdir -p /opt/patchmon/agents
|
||||
|
||||
+2
-2
@@ -41,9 +41,10 @@ function update_script() {
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/postiz
|
||||
cp /opt/postiz_env.bak /opt/postiz/.env
|
||||
set -a && source /opt/postiz/.env && set +a
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
$STD pnpm install
|
||||
@@ -57,7 +58,6 @@ function update_script() {
|
||||
msg_ok "Ran Database Migrations"
|
||||
|
||||
mkdir -p /opt/postiz/uploads
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start postiz-backend postiz-frontend postiz-orchestrator
|
||||
|
||||
+3
-7
@@ -36,18 +36,14 @@ function update_script() {
|
||||
msg_ok "Updated PowerDNS"
|
||||
|
||||
if check_for_gh_release "poweradmin" "poweradmin/poweradmin"; then
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/poweradmin/config/settings.php /opt/poweradmin_settings.php.bak
|
||||
cp /opt/poweradmin/powerdns.db /opt/poweradmin_powerdns.db.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/poweradmin/config/settings.php /opt/poweradmin/powerdns.db
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Poweradmin"
|
||||
cp /opt/poweradmin_settings.php.bak /opt/poweradmin/config/settings.php
|
||||
cp /opt/poweradmin_powerdns.db.bak /opt/poweradmin/powerdns.db
|
||||
rm -rf /opt/poweradmin/install
|
||||
rm -f /opt/poweradmin_settings.php.bak /opt/poweradmin_powerdns.db.bak
|
||||
chown -R www-data:pdns /opt/poweradmin
|
||||
chmod 775 /opt/poweradmin
|
||||
chown pdns:pdns /opt/poweradmin/powerdns.db
|
||||
|
||||
+2
-7
@@ -34,17 +34,12 @@ function update_script() {
|
||||
systemctl stop radicale
|
||||
msg_ok "Stopped service"
|
||||
|
||||
msg_info "Backing up users file"
|
||||
cp /opt/radicale/users /opt/radicale_users_backup
|
||||
msg_ok "Backed up users file"
|
||||
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"
|
||||
|
||||
msg_info "Restoring users file"
|
||||
rm -f /opt/radicale/users
|
||||
mv /opt/radicale_users_backup /opt/radicale/users
|
||||
msg_ok "Restored users file"
|
||||
restore_backup
|
||||
|
||||
if grep -q 'start.sh' /etc/systemd/system/radicale.service; then
|
||||
sed -i -e '/^Description/i[Unit]' \
|
||||
|
||||
@@ -36,10 +36,12 @@ function update_script() {
|
||||
|
||||
ensure_dependencies git
|
||||
|
||||
cp /opt/reactive-resume/.env /opt/reactive-resume.env.bak
|
||||
create_backup /opt/reactive-resume/.env
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball" "latest" "/opt/reactive-resume"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Reactive Resume (Patience)"
|
||||
cd /opt/reactive-resume
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
@@ -49,7 +51,6 @@ function update_script() {
|
||||
export NODE_ENV="production"
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
mv /opt/reactive-resume.env.bak /opt/reactive-resume/.env
|
||||
msg_ok "Updated Reactive Resume"
|
||||
|
||||
msg_info "Updating Service"
|
||||
|
||||
+22
-5
@@ -37,18 +37,29 @@ function update_script() {
|
||||
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up configuration"
|
||||
cp /opt/romm/.env /opt/romm/.env.backup
|
||||
msg_ok "Backed up configuration"
|
||||
create_backup /opt/romm/.env
|
||||
BACKUP_DIR=/opt/romm-players.backup create_backup \
|
||||
/opt/romm/frontend/dist/assets/emulatorjs \
|
||||
/opt/romm/frontend/dist/assets/ruffle
|
||||
|
||||
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating ROMM"
|
||||
cp /opt/romm/.env.backup /opt/romm/.env
|
||||
cd /opt/romm
|
||||
$STD uv sync --all-extras
|
||||
cd /opt/romm/backend
|
||||
$STD uv run alembic upgrade head
|
||||
if [[ -f /opt/romm/backend/utils/rom_patcher/package.json ]]; then
|
||||
cd /opt/romm/backend/utils/rom_patcher
|
||||
$STD npm install --ignore-scripts --no-audit --no-fund
|
||||
if [[ -d node_modules/rom-patcher/rom-patcher-js ]]; then
|
||||
rm -rf rom-patcher-js
|
||||
cp -r node_modules/rom-patcher/rom-patcher-js ./rom-patcher-js
|
||||
fi
|
||||
rm -rf node_modules
|
||||
fi
|
||||
cd /opt/romm/frontend
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
@@ -73,6 +84,12 @@ function update_script() {
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "v4.2.3"; then
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
|
||||
systemctl restart romm-backend romm-worker romm-scheduler romm-watcher
|
||||
msg_ok "Updated EmulatorJS successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
+2
-9
@@ -35,18 +35,11 @@ function update_script() {
|
||||
systemctl stop rustypaste
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
tar -czf "/opt/rustypaste_backup_$(date +%F).tar.gz" /opt/rustypaste/upload 2>/dev/null || true
|
||||
cp /opt/rustypaste/config.toml /tmp/rustypaste_config.toml.bak
|
||||
msg_ok "Backup Created"
|
||||
create_backup /opt/rustypaste/upload /opt/rustypaste/config.toml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rustypaste" "orhun/rustypaste" "prebuild" "latest" "/opt/rustypaste" "*x86_64-unknown-linux-gnu.tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
mv /tmp/rustypaste_config.toml.bak /opt/rustypaste/config.toml
|
||||
tar -xzf "/opt/rustypaste_backup_$(date +%F).tar.gz" -C /opt/rustypaste/upload 2>/dev/null || true
|
||||
rm -rf /opt/rustypaste_backup_$(date +%F).tar.gz
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start rustypaste
|
||||
|
||||
+3
-6
@@ -36,19 +36,16 @@ function update_script() {
|
||||
[[ -f /etc/systemd/system/scanopy-daemon.service ]] && systemctl stop scanopy-daemon
|
||||
msg_ok "Stopped services"
|
||||
|
||||
msg_info "Backing up configurations"
|
||||
cp /opt/scanopy/.env /opt/scanopy.env
|
||||
[[ -f /opt/scanopy/oidc.toml ]] && cp /opt/scanopy/oidc.toml /opt/scanopy.oidc.toml
|
||||
msg_ok "Backed up configurations"
|
||||
create_backup /opt/scanopy/.env /opt/scanopy/oidc.toml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Scanopy" "scanopy/scanopy" "tarball" "latest" "/opt/scanopy"
|
||||
|
||||
restore_backup
|
||||
|
||||
ensure_dependencies pkg-config libssl-dev
|
||||
TOOLCHAIN="$(grep "channel" /opt/scanopy/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
|
||||
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
|
||||
|
||||
[[ -f /opt/scanopy.env ]] && mv /opt/scanopy.env /opt/scanopy/.env
|
||||
[[ -f /opt/scanopy.oidc.toml ]] && mv /opt/scanopy.oidc.toml /opt/scanopy/oidc.toml
|
||||
if ! grep -q "PUBLIC_URL" /opt/scanopy/.env; then
|
||||
sed -i "\|_PATH=|a\\scanopy_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/scanopy/.env
|
||||
fi
|
||||
|
||||
+2
-2
@@ -52,11 +52,12 @@ function update_script() {
|
||||
msg_ok "Updated FlareSolverr"
|
||||
fi
|
||||
|
||||
cp /opt/shelfmark/start.sh /opt/start.sh.bak
|
||||
create_backup /opt/shelfmark/start.sh
|
||||
if command -v chromedriver &>/dev/null; then
|
||||
$STD apt remove -y chromium-driver
|
||||
fi
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shelfmark" "calibrain/shelfmark" "tarball" "latest" "/opt/shelfmark"
|
||||
restore_backup
|
||||
RELEASE_VERSION=$(cat "$HOME/.shelfmark")
|
||||
|
||||
msg_info "Updating Shelfmark"
|
||||
@@ -74,7 +75,6 @@ function update_script() {
|
||||
else
|
||||
$STD uv sync --active --locked --no-default-groups
|
||||
fi
|
||||
mv /opt/start.sh.bak /opt/shelfmark/start.sh
|
||||
msg_ok "Updated Shelfmark"
|
||||
|
||||
msg_info "Starting Service(s)"
|
||||
|
||||
+2
-10
@@ -35,19 +35,11 @@ function update_script() {
|
||||
systemctl stop shlink
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/shlink/.env /opt/shlink.env.bak
|
||||
cp -r /opt/shlink/data /opt/shlink_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/shlink/.env /opt/shlink/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink" "shlinkio/shlink" "prebuild" "latest" "/opt/shlink" "shlink*_php8.5_dist.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/shlink.env.bak /opt/shlink/.env
|
||||
rm -f /opt/shlink.env.bak
|
||||
cp -r /opt/shlink_data_backup/. /opt/shlink/data
|
||||
rm -rf /opt/shlink_data_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/shlink
|
||||
|
||||
+6
-15
@@ -36,19 +36,17 @@ function update_script() {
|
||||
[[ -f /etc/systemd/system/soularr.service ]] && systemctl stop soularr.timer soularr.service
|
||||
msg_ok "Stopped Service(s)"
|
||||
|
||||
msg_info "Backing up config"
|
||||
cp /opt/slskd/config/slskd.yml /opt/slskd.yml.bak
|
||||
msg_ok "Backed up config"
|
||||
create_backup /opt/slskd/config/slskd.yml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-$(arch_resolve "x64" "arm64").zip"
|
||||
|
||||
msg_info "Restoring config"
|
||||
mv /opt/slskd.yml.bak /opt/slskd/config/slskd.yml
|
||||
restore_backup
|
||||
|
||||
msg_info "Migrating config"
|
||||
# Migrate 0.25.0 breaking config key renames
|
||||
sed -i 's/^global:/transfers:/' /opt/slskd/config/slskd.yml
|
||||
sed -i 's/^integration:/integrations:/' /opt/slskd/config/slskd.yml
|
||||
msg_ok "Restored config"
|
||||
msg_ok "Migrated config"
|
||||
|
||||
msg_info "Starting Service(s)"
|
||||
systemctl start slskd
|
||||
@@ -63,13 +61,11 @@ function update_script() {
|
||||
msg_ok "Stopped Timer and Service"
|
||||
fi
|
||||
|
||||
msg_info "Backing up Soularr config"
|
||||
cp /opt/soularr/config.ini /opt/soularr_config.ini.bak
|
||||
cp /opt/soularr/run.sh /opt/soularr_run.sh.bak
|
||||
msg_ok "Backed up Soularr config"
|
||||
create_backup /opt/soularr/config.ini /opt/soularr/run.sh
|
||||
|
||||
PYTHON_VERSION="3.11" setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Soularr" "mrusse/soularr" "tarball" "latest" "/opt/soularr"
|
||||
restore_backup
|
||||
msg_info "Updating Soularr"
|
||||
cd /opt/soularr
|
||||
$STD uv venv -c venv
|
||||
@@ -78,11 +74,6 @@ function update_script() {
|
||||
deactivate
|
||||
msg_ok "Updated Soularr"
|
||||
|
||||
msg_info "Restoring Soularr config"
|
||||
mv /opt/soularr_config.ini.bak /opt/soularr/config.ini
|
||||
mv /opt/soularr_run.sh.bak /opt/soularr/run.sh
|
||||
msg_ok "Restored Soularr config"
|
||||
|
||||
msg_info "Starting Soularr Timer"
|
||||
systemctl restart soularr.timer
|
||||
msg_ok "Started Soularr Timer"
|
||||
|
||||
+2
-10
@@ -35,19 +35,11 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/solidtime/.env /opt/solidtime.env.bak
|
||||
cp -r /opt/solidtime/storage /opt/solidtime_storage_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/solidtime/.env /opt/solidtime/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/solidtime.env.bak /opt/solidtime/.env
|
||||
rm -f /opt/solidtime.env.bak
|
||||
cp -r /opt/solidtime_storage_backup/. /opt/solidtime/storage
|
||||
rm -rf /opt/solidtime_storage_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/solidtime
|
||||
|
||||
+3
-7
@@ -37,13 +37,12 @@ function update_script() {
|
||||
systemctl stop soulsync
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
mv /opt/soulsync/config /opt/soulsync-config.bak
|
||||
mv /opt/soulsync/data /opt/soulsync-data.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/soulsync/config /opt/soulsync/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Python Dependencies"
|
||||
cd /opt/soulsync
|
||||
$STD uv venv --clear /opt/soulsync/.venv --python 3.11
|
||||
@@ -56,9 +55,6 @@ function update_script() {
|
||||
$STD npm run build
|
||||
msg_ok "Built WebUI"
|
||||
|
||||
mv /opt/soulsync-config.bak /opt/soulsync/config
|
||||
mv /opt/soulsync-data.bak /opt/soulsync/data
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start soulsync
|
||||
msg_ok "Started Service"
|
||||
|
||||
+3
-14
@@ -35,18 +35,12 @@ function update_script() {
|
||||
systemctl stop sparkyfitness-server nginx
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up data"
|
||||
mkdir -p /opt/sparkyfitness_backup
|
||||
if [[ -d /opt/sparkyfitness/SparkyFitnessServer/uploads ]]; then
|
||||
cp -r /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness_backup/
|
||||
fi
|
||||
if [[ -d /opt/sparkyfitness/SparkyFitnessServer/backup ]]; then
|
||||
cp -r /opt/sparkyfitness/SparkyFitnessServer/backup /opt/sparkyfitness_backup/
|
||||
fi
|
||||
msg_ok "Backed up data"
|
||||
create_backup /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness/SparkyFitnessServer/backup
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/sparkyfitness/package.json)"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||
|
||||
@@ -96,11 +90,6 @@ EOF
|
||||
systemctl daemon-reload
|
||||
msg_ok "Refreshed SparkyFitness Service"
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -r /opt/sparkyfitness_backup/. /opt/sparkyfitness/SparkyFitnessServer/
|
||||
rm -rf /opt/sparkyfitness_backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Starting Services"
|
||||
$STD systemctl start sparkyfitness-server nginx
|
||||
msg_ok "Started Services"
|
||||
|
||||
+2
-7
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop spliit
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
rm -f /opt/spliit.env.bak
|
||||
cp /opt/spliit/.env /opt/spliit.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/spliit/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "spliit" "spliit-app/spliit" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/spliit.env.bak /opt/spliit/.env
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/spliit
|
||||
|
||||
+4
-6
@@ -36,18 +36,16 @@ function update_script() {
|
||||
systemctl stop spoolman
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
[ -d /opt/spoolman_bak ] && rm -rf /opt/spoolman_bak
|
||||
mv /opt/spoolman /opt/spoolman_bak
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/spoolman/.env
|
||||
|
||||
fetch_and_deploy_gh_release "spoolman" "Donkie/Spoolman" "prebuild" "latest" "/opt/spoolman" "spoolman.zip"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "spoolman" "Donkie/Spoolman" "prebuild" "latest" "/opt/spoolman" "spoolman.zip"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Spoolman"
|
||||
cd /opt/spoolman
|
||||
$STD uv sync --locked --no-install-project
|
||||
$STD uv sync --locked
|
||||
cp /opt/spoolman_bak/.env /opt/spoolman
|
||||
sed -i 's|^ExecStart=.*|ExecStart=/usr/bin/bash /opt/spoolman/scripts/start.sh|' /etc/systemd/system/spoolman.service
|
||||
msg_ok "Updated Spoolman"
|
||||
|
||||
|
||||
+2
-6
@@ -37,15 +37,11 @@ function update_script() {
|
||||
systemctl stop storyteller
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/storyteller/.env /opt/storyteller_env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/storyteller/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller" "" "web-v2"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
mv /opt/storyteller_env.bak /opt/storyteller/.env
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Storyteller"
|
||||
cd /opt/storyteller
|
||||
|
||||
+4
-7
@@ -43,17 +43,15 @@ function update_script() {
|
||||
systemctl stop tandoor
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mv /opt/tandoor /opt/tandoor.bak
|
||||
msg_ok "Backup Created"
|
||||
create_backup /opt/tandoor/config /opt/tandoor/api /opt/tandoor/mediafiles /opt/tandoor/staticfiles /opt/tandoor/.env
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Tandoor"
|
||||
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
||||
mv /opt/tandoor.bak/.env /opt/tandoor/.env
|
||||
cd /opt/tandoor
|
||||
$STD uv venv --clear .venv --python=python3
|
||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||
@@ -69,7 +67,6 @@ EOF
|
||||
cd /opt/tandoor
|
||||
$STD /opt/tandoor/.venv/bin/python manage.py migrate
|
||||
$STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
|
||||
rm -rf /opt/tandoor.bak
|
||||
msg_ok "Updated Tandoor"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+3
-10
@@ -36,13 +36,12 @@ function update_script() {
|
||||
systemctl stop tautulli
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up config and database"
|
||||
cp /opt/Tautulli/config.ini /opt/tautulli_config.ini.backup
|
||||
cp /opt/Tautulli/tautulli.db /opt/tautulli.db.backup
|
||||
msg_ok "Backed up config and database"
|
||||
create_backup /opt/Tautulli/config.ini /opt/Tautulli/tautulli.db
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Tautulli"
|
||||
cd /opt/Tautulli
|
||||
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
||||
@@ -55,12 +54,6 @@ function update_script() {
|
||||
$STD uv pip install "setuptools<81"
|
||||
msg_ok "Updated Tautulli"
|
||||
|
||||
msg_info "Restoring config and database"
|
||||
cp /opt/tautulli_config.ini.backup /opt/Tautulli/config.ini
|
||||
cp /opt/tautulli.db.backup /opt/Tautulli/tautulli.db
|
||||
rm -f /opt/{tautulli_config.ini.backup,tautulli.db.backup}
|
||||
msg_ok "Restored config and database"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tautulli
|
||||
msg_ok "Started Service"
|
||||
|
||||
+2
-6
@@ -36,15 +36,11 @@ function update_script() {
|
||||
systemctl stop teable
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/teable/.env /opt/teable.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/teable/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "teable" "teableio/teable" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
mv /opt/teable.env.bak /opt/teable/.env
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Teable"
|
||||
cd /opt/teable
|
||||
|
||||
+2
-7
@@ -34,16 +34,11 @@ function update_script() {
|
||||
systemctl stop teddycloud
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/teddycloud /opt/teddycloud_bak
|
||||
msg_ok "Backup created"
|
||||
create_backup /opt/teddycloud/certs /opt/teddycloud/config /opt/teddycloud/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "teddycloud" "toniebox-reverse-engineering/teddycloud" "prebuild" "latest" "/opt/teddycloud" "teddycloud.amd64.release*.zip"
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
|
||||
rm -rf /opt/teddycloud_bak
|
||||
msg_ok "Data restored"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start teddycloud
|
||||
|
||||
+3
-10
@@ -143,13 +143,12 @@ EOF
|
||||
fi
|
||||
msg_ok "Migrated Configuration"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/termix/data /opt/termix_data_backup
|
||||
cp -r /opt/termix/uploads /opt/termix_uploads_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/termix/data /opt/termix/uploads
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Recreating Directories"
|
||||
mkdir -p /opt/termix/html \
|
||||
/opt/termix/nginx \
|
||||
@@ -177,12 +176,6 @@ EOF
|
||||
$STD npm cache clean --force
|
||||
msg_ok "Set up Production Dependencies"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/termix_data_backup /opt/termix/data
|
||||
cp -r /opt/termix_uploads_backup /opt/termix/uploads
|
||||
rm -rf /opt/termix_data_backup /opt/termix_uploads_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Frontend Files"
|
||||
rm -rf /opt/termix/html/*
|
||||
cp -r /opt/termix/dist/* /opt/termix/html/ 2>/dev/null || true
|
||||
|
||||
+4
-7
@@ -36,12 +36,11 @@ function update_script() {
|
||||
systemctl stop tianji
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up data"
|
||||
cp /opt/tianji/src/server/.env /opt/.env
|
||||
mv /opt/tianji /opt/tianji_bak
|
||||
msg_ok "Backed up data"
|
||||
create_backup /opt/tianji/src/server/.env
|
||||
|
||||
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tianji" "msgbyte/tianji" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Tianji"
|
||||
cd /opt/tianji
|
||||
@@ -52,10 +51,8 @@ function update_script() {
|
||||
mkdir -p ./src/server/public
|
||||
cp -r ./geo ./src/server/public
|
||||
$STD pnpm build:server
|
||||
mv /opt/.env /opt/tianji/src/server/.env
|
||||
cd src/server
|
||||
$STD pnpm db:migrate:apply
|
||||
rm -rf /opt/tianji_bak
|
||||
rm -rf /opt/tianji/src/client
|
||||
rm -rf /opt/tianji/website
|
||||
rm -rf /opt/tianji/reporter
|
||||
|
||||
+3
-10
@@ -40,13 +40,12 @@ function update_script() {
|
||||
systemctl stop transmute
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/transmute/backend/.env /opt/transmute.env.bak
|
||||
cp -r /opt/transmute/data /opt/transmute_data_bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/transmute/backend/.env /opt/transmute/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Python Dependencies"
|
||||
cd /opt/transmute
|
||||
$STD uv venv --clear /opt/transmute/.venv
|
||||
@@ -59,12 +58,6 @@ function update_script() {
|
||||
$STD npm run build
|
||||
msg_ok "Rebuilt Frontend"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/transmute.env.bak /opt/transmute/backend/.env
|
||||
cp -r /opt/transmute_data_bak/. /opt/transmute/data/
|
||||
rm -f /opt/transmute.env.bak
|
||||
rm -rf /opt/transmute_data_bak
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start transmute
|
||||
|
||||
+4
-4
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# 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/mauriceboe/TREK
|
||||
# Source: https://github.com/liketrek/TREK
|
||||
|
||||
APP="TREK"
|
||||
var_tags="${var_tags:-travel;planning;collaboration}"
|
||||
@@ -32,7 +32,7 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "trek" "mauriceboe/TREK"; then
|
||||
if check_for_gh_release "trek" "liketrek/TREK"; then
|
||||
MIGRATION=0
|
||||
grep -qF "ExecStart=/usr/bin/node --import tsx src/index.ts" \
|
||||
/etc/systemd/system/trek.service && MIGRATION=1
|
||||
@@ -47,7 +47,7 @@ function update_script() {
|
||||
/opt/trek/data \
|
||||
/opt/trek/uploads
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "trek" "liketrek/TREK" "tarball"
|
||||
|
||||
msg_info "Building TREK"
|
||||
cd /opt/trek
|
||||
@@ -79,7 +79,7 @@ function update_script() {
|
||||
cat <<EOF >/etc/systemd/system/trek.service
|
||||
[Unit]
|
||||
Description=TREK Travel Planner
|
||||
Documentation=https://github.com/mauriceboe/TREK
|
||||
Documentation=https://github.com/liketrek/TREK
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
|
||||
+3
-4
@@ -35,12 +35,12 @@ function update_script() {
|
||||
systemctl stop tubearchivist tubearchivist-celery tubearchivist-beat
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/tubearchivist/.env /opt/tubearchivist_env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/tubearchivist/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tubearchivist" "tubearchivist/tubearchivist" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Tube Archivist"
|
||||
cd /opt/tubearchivist/frontend
|
||||
$STD npm install
|
||||
@@ -56,7 +56,6 @@ function update_script() {
|
||||
msg_ok "Rebuilt Tube Archivist"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
mv /opt/tubearchivist_env.bak /opt/tubearchivist/.env
|
||||
sed -i 's|^TA_APP_DIR=/opt/tubearchivist$|TA_APP_DIR=/opt/tubearchivist/backend|' /opt/tubearchivist/.env
|
||||
sed -i 's|^TA_CACHE_DIR=/opt/tubearchivist/cache$|TA_CACHE_DIR=/cache|' /opt/tubearchivist/.env
|
||||
sed -i 's|^TA_MEDIA_DIR=/opt/tubearchivist/media$|TA_MEDIA_DIR=/youtube|' /opt/tubearchivist/.env
|
||||
|
||||
+2
-2
@@ -34,9 +34,9 @@ function update_script() {
|
||||
systemctl stop umami
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
mv /opt/umami/.env /opt/.env.bak
|
||||
create_backup /opt/umami/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball"
|
||||
mv /opt/.env.bak /opt/umami/.env
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Umami"
|
||||
cd /opt/umami
|
||||
|
||||
@@ -34,9 +34,9 @@ function update_script() {
|
||||
systemctl stop umlautadaptarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
cp /opt/UmlautAdaptarr/appsettings.json /opt/UmlautAdaptarr/appsettings.json.bak
|
||||
create_backup /opt/UmlautAdaptarr/appsettings.json
|
||||
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
||||
cp /opt/UmlautAdaptarr/appsettings.json.bak /opt/UmlautAdaptarr/appsettings.json
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start umlautadaptarr
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ function update_script() {
|
||||
systemctl stop vikunja
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary"
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "latest" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
$STD systemctl daemon-reload
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+2
-7
@@ -38,16 +38,11 @@ function update_script() {
|
||||
systemctl stop nginx php8.3-fpm
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/wallabag/app/config/parameters.yml /tmp/wallabag_parameters.yml.bak
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/wallabag/app/config/parameters.yml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wallabag" "wallabag/wallabag" "prebuild" "latest" "/opt/wallabag" "wallabag-*.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /tmp/wallabag_parameters.yml.bak /opt/wallabag/app/config/parameters.yml
|
||||
rm -f /tmp/wallabag_parameters.yml.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/wallabag
|
||||
|
||||
+2
-2
@@ -46,8 +46,8 @@ function update_script() {
|
||||
cd /opt/wanderer/source/web
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
mkdir -p /opt/wanderer/data/plugins
|
||||
[[ -e /data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /data/plugins
|
||||
mkdir -p /opt/wanderer/data/plugins /opt/wanderer/source/db/data
|
||||
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
|
||||
msg_info "Installing wanderer plugins"
|
||||
for plugin in hammerhead komoot strava; do
|
||||
fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "${CHECK_UPDATE_RELEASE:-latest}" "/opt/wanderer/data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}"
|
||||
|
||||
+3
-10
@@ -39,19 +39,12 @@ function update_script() {
|
||||
systemctl stop wealthfolio
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/wealthfolio_data /opt/wealthfolio_data_backup
|
||||
cp /opt/wealthfolio/.env /opt/wealthfolio_env_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/wealthfolio_data /opt/wealthfolio/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "wealthfolio/wealthfolio" "prebuild" "latest" "/opt/wealthfolio" "wealthfolio-server-*-linux-amd64.tar.gz"
|
||||
install -m 755 /opt/wealthfolio/wealthfolio-server /usr/local/bin/wealthfolio-server
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/wealthfolio_data_backup/. /opt/wealthfolio_data
|
||||
cp /opt/wealthfolio_env_backup /opt/wealthfolio/.env
|
||||
rm -rf /opt/wealthfolio_data_backup /opt/wealthfolio_env_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
install -m 755 /opt/wealthfolio/wealthfolio-server /usr/local/bin/wealthfolio-server
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start wealthfolio
|
||||
|
||||
+2
-6
@@ -34,16 +34,12 @@ function update_script() {
|
||||
systemctl stop web-check
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating backup"
|
||||
mv /opt/web-check/.env /opt
|
||||
msg_ok "Created backup"
|
||||
create_backup /opt/web-check/.env
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "Lissy93/web-check" "tarball"
|
||||
|
||||
msg_info "Restoring backup"
|
||||
mv /opt/.env /opt/web-check
|
||||
msg_ok "Restored backup"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Web-Check"
|
||||
cd /opt/web-check
|
||||
|
||||
+2
-7
@@ -36,17 +36,12 @@ function update_script() {
|
||||
systemctl stop caddy php${PHP_VER}-fpm
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/webtrees/data /opt/webtrees_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/webtrees/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "webtrees" "fisharebest/webtrees" "prebuild" "latest" "/opt/webtrees" "webtrees-*.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/webtrees_data_backup/. /opt/webtrees/data
|
||||
rm -rf /opt/webtrees_data_backup
|
||||
restore_backup
|
||||
chown -R www-data:www-data /opt/webtrees
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start caddy php${PHP_VER}-fpm
|
||||
|
||||
+3
-13
@@ -35,16 +35,13 @@ function update_script() {
|
||||
systemctl stop wishlist
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /opt/wishlist-backup
|
||||
cp /opt/wishlist/.env /opt/wishlist-backup/.env
|
||||
cp -a /opt/wishlist/uploads /opt/wishlist-backup
|
||||
cp -a /opt/wishlist/data /opt/wishlist-backup
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/wishlist/.env /opt/wishlist/uploads /opt/wishlist/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wishlist" "cmintey/wishlist" "tarball"
|
||||
LATEST_APP_VERSION=$(get_latest_github_release "cmintey/wishlist")
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Wishlist"
|
||||
cd /opt/wishlist
|
||||
$STD pnpm install --frozen-lockfile
|
||||
@@ -56,13 +53,6 @@ function update_script() {
|
||||
$STD pnpm run build
|
||||
$STD pnpm prune --prod
|
||||
chmod +x /opt/wishlist/entrypoint.sh
|
||||
|
||||
msg_info "Restoring Backup"
|
||||
cp /opt/wishlist-backup/.env /opt/wishlist/.env
|
||||
cp -a /opt/wishlist-backup/uploads /opt/wishlist
|
||||
cp -a /opt/wishlist-backup/data /opt/wishlist
|
||||
rm -rf /opt/wishlist-backup
|
||||
msg_ok "Restored Backup"
|
||||
|
||||
msg_ok "Updated Wishlist"
|
||||
msg_info "Starting Service"
|
||||
|
||||
+2
-10
@@ -35,19 +35,11 @@ function update_script() {
|
||||
systemctl stop writefreely
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /tmp/writefreely_backup
|
||||
cp /opt/writefreely/keys /tmp/writefreely_backup/ 2>/dev/null
|
||||
cp /opt/writefreely/config.ini /tmp/writefreely_backup/ 2>/dev/null
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/writefreely/keys /opt/writefreely/config.ini
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "writefreely" "writefreely/writefreely" "prebuild" "latest" "/opt/writefreely" "writefreely_*_linux_$(arch_resolve).tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /tmp/writefreely_backup/config.ini /opt/writefreely/ 2>/dev/null
|
||||
cp /tmp/writefreely_backup/keys/* /opt/writefreely/keys/ 2>/dev/null
|
||||
rm -rf /tmp/writefreely_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Post-Update Tasks"
|
||||
cd /opt/writefreely
|
||||
|
||||
+3
-10
@@ -35,13 +35,12 @@ function update_script() {
|
||||
systemctl stop xyops
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/xyops/data /opt/xyops_data_backup
|
||||
cp -r /opt/xyops/conf /opt/xyops_conf_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/xyops/data /opt/xyops/conf
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
cd /opt/xyops
|
||||
$STD npm install
|
||||
@@ -49,12 +48,6 @@ function update_script() {
|
||||
chmod 644 /opt/xyops/node_modules/useragent-ng/lib/regexps.js
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/xyops_data_backup/. /opt/xyops/data
|
||||
cp -r /opt/xyops_conf_backup/. /opt/xyops/conf
|
||||
rm -rf /opt/xyops_data_backup /opt/xyops_conf_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start xyops
|
||||
msg_ok "Started Service"
|
||||
|
||||
+3
-8
@@ -36,22 +36,17 @@ function update_script() {
|
||||
systemctl stop yamtrack yamtrack-celery
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/yamtrack/src/.env /opt/yamtrack_env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/yamtrack/src/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yamtrack" "FuzzyGrim/Yamtrack" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
cd /opt/yamtrack
|
||||
$STD uv sync --locked
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/yamtrack_env.bak /opt/yamtrack/src/.env
|
||||
rm -f /opt/yamtrack_env.bak
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Yamtrack"
|
||||
cd /opt/yamtrack/src
|
||||
$STD /opt/yamtrack/.venv/bin/python manage.py migrate
|
||||
|
||||
+3
-8
@@ -35,17 +35,12 @@ function update_script() {
|
||||
systemctl stop nginx
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp -r /opt/yourls/user /opt/yourls_user.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/yourls/user
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yourls" "YOURLS/YOURLS" "tarball"
|
||||
chown -R www-data:www-data /opt/yourls
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp -r /opt/yourls_user.bak/. /opt/yourls/user/
|
||||
rm -rf /opt/yourls_user.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
chown -R www-data:www-data /opt/yourls
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start nginx
|
||||
|
||||
+3
-8
@@ -35,14 +35,14 @@ function update_script() {
|
||||
systemctl stop zerobyte
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/zerobyte/.env /opt/zerobyte.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/zerobyte/.env
|
||||
|
||||
ensure_dependencies git
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "zerobyte" "nicotsx/zerobyte" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Zerobyte"
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
cd /opt/zerobyte
|
||||
@@ -50,11 +50,6 @@ function update_script() {
|
||||
$STD node ./node_modules/vite/bin/vite.js build
|
||||
msg_ok "Built Zerobyte"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/zerobyte.env.bak /opt/zerobyte/.env
|
||||
rm -f /opt/zerobyte.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start zerobyte
|
||||
msg_ok "Started Service"
|
||||
|
||||
+5
-5
@@ -37,24 +37,24 @@ function update_script() {
|
||||
|
||||
msg_info "Creating Backup"
|
||||
ensure_dependencies zstd
|
||||
mkdir -p /opt/{backups,z2m_backup}
|
||||
mkdir -p /opt/backups
|
||||
BACKUP_VERSION="$(<"$HOME/.zigbee2mqtt")"
|
||||
BACKUP_FILE="/opt/backups/${APP}_backup_${BACKUP_VERSION}.tar.zst"
|
||||
$STD tar -cf - -C /opt zigbee2mqtt | zstd -q -o "$BACKUP_FILE"
|
||||
ls -t /opt/backups/${APP}_backup_*.tar.zst 2>/dev/null | tail -n +6 | xargs -r rm -f
|
||||
mv /opt/zigbee2mqtt/data /opt/z2m_backup/data
|
||||
msg_ok "Backup Created (${BACKUP_VERSION})"
|
||||
|
||||
create_backup /opt/zigbee2mqtt/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Zigbee2MQTT" "Koenkk/zigbee2mqtt" "tarball" "latest" "/opt/zigbee2mqtt"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Zigbee2MQTT"
|
||||
rm -rf /opt/zigbee2mqtt/data
|
||||
mv /opt/z2m_backup/data /opt/zigbee2mqtt
|
||||
cd /opt/zigbee2mqtt
|
||||
grep -q "^packageImportMethod" ./pnpm-workspace.yaml 2>/dev/null || echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm build
|
||||
rm -rf /opt/z2m_backup
|
||||
msg_ok "Updated Zigbee2MQTT"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
@@ -31,7 +31,7 @@ PG_DB_NAME="affine" PG_DB_USER="affine" setup_postgresql_db
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_rust
|
||||
|
||||
fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "v0.27.0" "/opt/affine"
|
||||
fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "v0.27.2" "/opt/affine"
|
||||
|
||||
msg_info "Setting up Directories"
|
||||
rm -rf /root/.affine
|
||||
|
||||
@@ -54,12 +54,12 @@ NODE_VERSION="24" setup_nodejs
|
||||
setup_yq
|
||||
setup_go
|
||||
RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.3" setup_uv
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.6" setup_uv
|
||||
PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="authentik" PG_DB_USER="authentik" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
|
||||
|
||||
XMLSEC_VERSION="1.3.11"
|
||||
AUTHENTIK_VERSION="version/2026.5.3"
|
||||
XMLSEC_VERSION="1.3.12"
|
||||
AUTHENTIK_VERSION="version/2026.5.5"
|
||||
fetch_and_deploy_gh_release "xmlsec" "lsh123/xmlsec" "tarball" "${XMLSEC_VERSION}" "/opt/xmlsec"
|
||||
fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
||||
fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary"
|
||||
|
||||
@@ -27,7 +27,7 @@ After=network.target
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/gotify
|
||||
ExecStart=/opt/gotify/./gotify-linux-$(arch_resolve)
|
||||
ExecStart=/opt/gotify/gotify-linux-$(arch_resolve) serve
|
||||
Restart=always
|
||||
RestartSec=3
|
||||
|
||||
|
||||
@@ -31,13 +31,14 @@ NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app"
|
||||
|
||||
useradd -m -s /usr/bin/bash manyfold
|
||||
|
||||
RUBY_INSTALL_VERSION=$(cat /opt/manyfold/app/.ruby-version)
|
||||
RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby
|
||||
|
||||
msg_info "Configuring Manyfold"
|
||||
YARN_VERSION=$(grep '"packageManager":' /opt/manyfold/app/package.json | sed -E 's/.*"(yarn@[0-9\.]+)".*/\1/')
|
||||
RELEASE=$(get_latest_github_release "manyfold3d/manyfold")
|
||||
useradd -m -s /usr/bin/bash manyfold
|
||||
cat <<EOF >/opt/manyfold/.env
|
||||
export APP_VERSION=${RELEASE}
|
||||
export GUID=1002
|
||||
|
||||
@@ -42,7 +42,7 @@ OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
curl_download "${OMADA_PKG}" "${OMADA_URL}"
|
||||
$STD dpkg -i "${OMADA_PKG}"
|
||||
rm -rf "${OMADA_PKG}"
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_.*_\([0-9]\{14\}\)\.deb$/\1-\2/p' <<<"${OMADA_PKG}")
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_linux.*/\1/p' <<<"${OMADA_PKG}")
|
||||
echo "${VERSION}" >$HOME/.omada
|
||||
msg_ok "Installed Omada Controller"
|
||||
|
||||
|
||||
@@ -134,6 +134,8 @@ else
|
||||
fi
|
||||
|
||||
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball"
|
||||
fetch_and_deploy_gh_release "ruffle" "ruffle-rs/ruffle" "prebuild" "latest" "/opt/romm/frontend/dist/assets/ruffle" "ruffle-*-web-selfhosted.zip"
|
||||
fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
|
||||
|
||||
msg_info "Creating environment file"
|
||||
sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf
|
||||
@@ -159,6 +161,9 @@ ROMM_AUTH_SECRET_KEY=$AUTH_SECRET_KEY
|
||||
DISABLE_DOWNLOAD_ENDPOINT_AUTH=false
|
||||
DISABLE_CSRF_PROTECTION=false
|
||||
|
||||
SCREENSCRAPER_DEV_ID=
|
||||
SCREENSCRAPER_DEV_PASSWORD=
|
||||
|
||||
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true
|
||||
RESCAN_ON_FILESYSTEM_CHANGE_DELAY=5
|
||||
|
||||
@@ -181,6 +186,18 @@ cd /opt/romm/backend
|
||||
$STD uv run alembic upgrade head
|
||||
msg_ok "Set up RomM Backend"
|
||||
|
||||
if [[ -f /opt/romm/backend/utils/rom_patcher/package.json ]]; then
|
||||
msg_info "Building ROM Patcher helper"
|
||||
cd /opt/romm/backend/utils/rom_patcher
|
||||
$STD npm install --ignore-scripts --no-audit --no-fund
|
||||
if [[ -d node_modules/rom-patcher/rom-patcher-js ]]; then
|
||||
rm -rf rom-patcher-js
|
||||
cp -r node_modules/rom-patcher/rom-patcher-js ./rom-patcher-js
|
||||
fi
|
||||
rm -rf node_modules
|
||||
msg_ok "Built ROM Patcher helper"
|
||||
fi
|
||||
|
||||
msg_info "Setting up RomM Frontend"
|
||||
cd /opt/romm/frontend
|
||||
$STD npm install
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# 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/mauriceboe/TREK
|
||||
# Source: https://github.com/liketrek/TREK
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@@ -20,7 +20,7 @@ $STD apt install -y \
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball"
|
||||
fetch_and_deploy_gh_release "trek" "liketrek/TREK" "tarball"
|
||||
|
||||
msg_info "Setup TREK"
|
||||
cd /opt/trek
|
||||
@@ -78,7 +78,7 @@ msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/trek.service
|
||||
[Unit]
|
||||
Description=TREK Travel Planner
|
||||
Documentation=https://github.com/mauriceboe/TREK
|
||||
Documentation=https://github.com/liketrek/TREK
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary"
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "latest" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
|
||||
msg_info "Setting up Vikunja"
|
||||
sed -i 's|^# \(service:\)|\1|' /etc/vikunja/config.yml
|
||||
|
||||
@@ -21,8 +21,9 @@ else
|
||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
|
||||
fi
|
||||
mkdir -p /opt/wanderer/{source,data/pb_data,data/meili_data,data/plugins}
|
||||
[[ -e /data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /data/plugins
|
||||
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
|
||||
mkdir -p /opt/wanderer/source/db/data
|
||||
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
|
||||
|
||||
msg_info "Installing wanderer (patience)"
|
||||
cd /opt/wanderer/source/db
|
||||
|
||||
@@ -31,7 +31,10 @@ $STD apt install -y elasticsearch
|
||||
sed -i 's/^#\{0,2\} *-Xms[0-9]*g.*/-Xms2g/' /etc/elasticsearch/jvm.options
|
||||
sed -i 's/^#\{0,2\} *-Xmx[0-9]*g.*/-Xmx2g/' /etc/elasticsearch/jvm.options
|
||||
cat <<EOF >/etc/elasticsearch/elasticsearch.yml
|
||||
path.data: /var/lib/elasticsearch
|
||||
path.logs: /var/log/elasticsearch
|
||||
discovery.type: single-node
|
||||
network.host: 127.0.0.1
|
||||
xpack.security.enabled: false
|
||||
bootstrap.memory_lock: false
|
||||
EOF
|
||||
@@ -40,7 +43,7 @@ systemctl daemon-reload
|
||||
systemctl enable -q elasticsearch
|
||||
systemctl restart -q elasticsearch
|
||||
for i in $(seq 1 30); do
|
||||
if curl -s http://localhost:9200 >/dev/null 2>&1; then
|
||||
if curl -s http://127.0.0.1:9200 >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
@@ -55,7 +58,7 @@ setup_deb822_repo \
|
||||
"$(get_os_info version_id)" \
|
||||
"main"
|
||||
$STD apt install -y zammad
|
||||
$STD zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
|
||||
$STD zammad run rails r "Setting.set('es_url', 'http://127.0.0.1:9200')"
|
||||
$STD zammad run rake zammad:searchindex:rebuild
|
||||
msg_ok "Installed Zammad"
|
||||
|
||||
|
||||
+26
-22
@@ -3600,9 +3600,9 @@ configure_ssh_settings() {
|
||||
glob_path=$(whiptail --backtitle "$backtitle" \
|
||||
--inputbox "Enter a folder or glob to scan (e.g. /root/.ssh/*.pub)" 10 72 --title "Scan Folder/Glob" 3>&1 1>&2 2>&3)
|
||||
if [[ -n "$glob_path" ]]; then
|
||||
shopt -s nullglob
|
||||
read -r -a _scan_files <<<"$glob_path"
|
||||
shopt -u nullglob
|
||||
[[ -d "$glob_path" ]] && glob_path="${glob_path%/}/*"
|
||||
local -a _scan_files
|
||||
mapfile -t _scan_files < <(compgen -G "$glob_path")
|
||||
if [[ "${#_scan_files[@]}" -gt 0 ]]; then
|
||||
ssh_build_choices_from_files "${_scan_files[@]}"
|
||||
if [[ "$COUNT" -gt 0 ]]; then
|
||||
@@ -4233,27 +4233,31 @@ $PCT_OPTIONS_STRING"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check for Intel GPU - look for Intel vendor ID [8086]
|
||||
if grep -q "\[8086:" <<<"$pci_vga_info"; then
|
||||
msg_custom "🎮" "${BL}" "Detected Intel GPU"
|
||||
if [[ -d /dev/dri ]]; then
|
||||
for d in /dev/dri/renderD* /dev/dri/card*; do
|
||||
[[ -e "$d" ]] && INTEL_DEVICES+=("$d")
|
||||
done
|
||||
fi
|
||||
# Map each DRI render/card node to its owning GPU via the PCI vendor ID
|
||||
# exposed in sysfs (/sys/class/drm/<node>/device/vendor). This is required
|
||||
# on multi-GPU hosts: globbing every /dev/dri node onto the first detected
|
||||
# vendor would pass through *both* GPUs and skip the selection prompt.
|
||||
if [[ -d /dev/dri ]]; then
|
||||
for d in /dev/dri/renderD* /dev/dri/card*; do
|
||||
[[ -e "$d" ]] || continue
|
||||
local node vendor
|
||||
node=$(basename "$d")
|
||||
vendor=$(cat "/sys/class/drm/${node}/device/vendor" 2>/dev/null || true)
|
||||
case "$vendor" in
|
||||
0x8086) INTEL_DEVICES+=("$d") ;; # Intel
|
||||
0x1002 | 0x1022) AMD_DEVICES+=("$d") ;; # AMD/ATI
|
||||
0x10de) ;; # NVIDIA - handled via /dev/nvidia* below
|
||||
*) msg_debug "Unmapped GPU vendor '${vendor:-unknown}' for $d" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
# Check for AMD GPU - look for AMD vendor IDs [1002] (AMD/ATI) or [1022] (AMD)
|
||||
if grep -qE "\[1002:|\[1022:" <<<"$pci_vga_info"; then
|
||||
msg_custom "🎮" "${RD}" "Detected AMD GPU"
|
||||
if [[ -d /dev/dri ]]; then
|
||||
# Only add if not already claimed by Intel
|
||||
if [[ ${#INTEL_DEVICES[@]} -eq 0 ]]; then
|
||||
for d in /dev/dri/renderD* /dev/dri/card* /dev/kfd; do
|
||||
[[ -e "$d" ]] && AMD_DEVICES+=("$d")
|
||||
done
|
||||
fi
|
||||
fi
|
||||
[[ ${#INTEL_DEVICES[@]} -gt 0 ]] && msg_custom "🎮" "${BL}" "Detected Intel GPU"
|
||||
[[ ${#AMD_DEVICES[@]} -gt 0 ]] && msg_custom "🎮" "${RD}" "Detected AMD GPU"
|
||||
|
||||
# AMD compute (ROCm) additionally needs /dev/kfd alongside the render nodes
|
||||
if [[ ${#AMD_DEVICES[@]} -gt 0 && -e /dev/kfd ]]; then
|
||||
AMD_DEVICES+=("/dev/kfd")
|
||||
fi
|
||||
|
||||
# Check for NVIDIA GPU - look for NVIDIA vendor ID [10de]
|
||||
|
||||
+250
-454
File diff suppressed because it is too large
Load Diff
@@ -116,6 +116,9 @@ add() {
|
||||
# Add container IDs to exclude from updates (comma-separated):
|
||||
# EXCLUDE=100,101,102
|
||||
EXCLUDE=
|
||||
|
||||
# Healthchecks.io Ping URL (optional)
|
||||
# PING_URL=
|
||||
CONF
|
||||
ok "Created config ${CONF_FILE}"
|
||||
fi
|
||||
@@ -235,9 +238,11 @@ view_cron_config() {
|
||||
fi
|
||||
if [[ -f "$CONF_FILE" ]]; then
|
||||
echo -e " \e[36mConfig file:\e[0m ${CONF_FILE}"
|
||||
local excludes
|
||||
local excludes ping_url
|
||||
excludes=$(grep -oP '^\s*EXCLUDE\s*=\s*\K.*' "$CONF_FILE" 2>/dev/null || true)
|
||||
ping_url=$(grep -oP '^\s*PING_URL\s*=\s*\K.*' "$CONF_FILE" 2>/dev/null | tr -d '"' | tr -d "'" || true)
|
||||
echo -e " \e[36mExcluded:\e[0m ${excludes:-(none)}"
|
||||
echo -e " \e[36mPing URL:\e[0m ${ping_url:-(none)}"
|
||||
echo ""
|
||||
echo -e " \e[90m--- ${CONF_FILE} ---\e[0m"
|
||||
cat "$CONF_FILE"
|
||||
@@ -284,9 +289,11 @@ show_status() {
|
||||
fi
|
||||
|
||||
if [[ -f "$CONF_FILE" ]]; then
|
||||
local excludes
|
||||
local excludes ping_url
|
||||
excludes=$(grep -oP '^\s*EXCLUDE\s*=\s*\K.*' "$CONF_FILE" 2>/dev/null || echo "(none)")
|
||||
ping_url=$(grep -oP '^\s*PING_URL\s*=\s*\K.*' "$CONF_FILE" 2>/dev/null | tr -d '"' | tr -d "'" || echo "(none)")
|
||||
echo -e " \e[36mExcluded:\e[0m ${excludes:-"(none)"}"
|
||||
echo -e " \e[36mPing URL:\e[0m ${ping_url:-"(none)"}"
|
||||
fi
|
||||
|
||||
if [[ -f "$LOG_FILE" ]]; then
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
CONF_FILE="/etc/update-lxcs.conf"
|
||||
|
||||
echo -e "\n $(date)"
|
||||
LOG_FILE="/var/log/update-lxcs-cron.log"
|
||||
PING_URL=""
|
||||
|
||||
# Collect excluded containers from arguments
|
||||
excluded_containers=("$@")
|
||||
|
||||
# Merge exclusions from config file if it exists
|
||||
# Merge exclusions and healthchecks URL from config file if it exists
|
||||
if [[ -f "$CONF_FILE" ]]; then
|
||||
PING_URL=$(grep -oP '^\s*PING_URL\s*=\s*\K.+' "$CONF_FILE" 2>/dev/null | tr -d '"' | tr -d "'" || true)
|
||||
conf_exclude=$(grep -oP '^\s*EXCLUDE\s*=\s*\K[0-9,]+' "$CONF_FILE" 2>/dev/null || true)
|
||||
IFS=',' read -ra conf_ids <<<"$conf_exclude"
|
||||
for id in "${conf_ids[@]}"; do
|
||||
@@ -27,6 +28,17 @@ if [[ -f "$CONF_FILE" ]]; then
|
||||
done
|
||||
fi
|
||||
|
||||
# Overwrite logfile on each run when healthchecks is used
|
||||
if [[ -n "$PING_URL" ]]; then
|
||||
true > "$LOG_FILE"
|
||||
fi
|
||||
|
||||
if [[ -n "$PING_URL" ]]; then
|
||||
curl -fsS -m 10 --retry 5 "${PING_URL}/start" -o /dev/null 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo -e "\n $(date)"
|
||||
|
||||
function update_container() {
|
||||
local container=$1
|
||||
local name
|
||||
@@ -38,12 +50,36 @@ function update_container() {
|
||||
alpine) pct exec "$container" -- ash -c "apk -U upgrade" ;;
|
||||
archlinux) pct exec "$container" -- bash -c "pacman -Syyu --noconfirm" ;;
|
||||
fedora | rocky | centos | alma) pct exec "$container" -- bash -c "dnf -y update && dnf -y upgrade" ;;
|
||||
ubuntu | debian | devuan) pct exec "$container" -- bash -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::='--force-confold' dist-upgrade -y; rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED" ;;
|
||||
ubuntu | debian | devuan) pct exec "$container" -- bash -c "apt-get update; DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::='--force-confold' dist-upgrade -y; status=\$?; rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED || true; exit \$status" ;;
|
||||
opensuse) pct exec "$container" -- bash -c "zypper ref && zypper --non-interactive dup" ;;
|
||||
*) echo " [Warn] Unknown OS type '$os' for container $container, skipping" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
update_status=0
|
||||
|
||||
# Define exit handler to send healthchecks.io status (with logfile on failure/success)
|
||||
function exit_handler() {
|
||||
local exit_code=$?
|
||||
if [[ -n "$PING_URL" ]]; then
|
||||
sync
|
||||
if [[ $exit_code -ne 0 || $update_status -ne 0 ]]; then
|
||||
if [[ -f "$LOG_FILE" ]]; then
|
||||
curl -fsS -m 10 --retry 5 --data-binary @"$LOG_FILE" "${PING_URL}/fail" -o /dev/null 2>/dev/null || true
|
||||
else
|
||||
curl -fsS -m 10 --retry 5 "${PING_URL}/fail" -o /dev/null 2>/dev/null || true
|
||||
fi
|
||||
else
|
||||
if [[ -f "$LOG_FILE" ]]; then
|
||||
curl -fsS -m 10 --retry 5 --data-binary @"$LOG_FILE" "$PING_URL" -o /dev/null 2>/dev/null || true
|
||||
else
|
||||
curl -fsS -m 10 --retry 5 "$PING_URL" -o /dev/null 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
trap exit_handler EXIT
|
||||
|
||||
for container in $(pct list | awk '{if(NR>1) print $1}'); do
|
||||
excluded=false
|
||||
for excluded_container in "${excluded_containers[@]}"; do
|
||||
@@ -65,7 +101,7 @@ for container in $(pct list | awk '{if(NR>1) print $1}'); do
|
||||
echo -e "[Info] Starting $container"
|
||||
pct start "$container"
|
||||
sleep 5
|
||||
update_container "$container" || echo " [Error] Update failed for $container"
|
||||
update_container "$container" || { echo " [Error] Update failed for $container"; update_status=1; }
|
||||
# check if patchmon agent is present in container and run a report if found
|
||||
if pct exec "$container" -- [ -e "/usr/local/bin/patchmon-agent" ]; then
|
||||
echo -e "${BL}[Info]${GN} patchmon-agent found in ${BL} $container ${CL}, triggering report. \n"
|
||||
@@ -74,7 +110,7 @@ for container in $(pct list | awk '{if(NR>1) print $1}'); do
|
||||
echo -e "[Info] Shutting down $container"
|
||||
pct shutdown "$container" --timeout 60 &
|
||||
elif [ "$status" == "status: running" ]; then
|
||||
update_container "$container" || echo " [Error] Update failed for $container"
|
||||
update_container "$container" || { echo " [Error] Update failed for $container"; update_status=1; }
|
||||
# check if patchmon agent is present in container and run a report if found
|
||||
if pct exec "$container" -- [ -e "/usr/local/bin/patchmon-agent" ]; then
|
||||
echo -e "${BL}[Info]${GN} patchmon-agent found in ${BL} $container ${CL}, triggering report. \n"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user