mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-15 17:16:12 +02:00
Compare commits
203 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1555337110 | |||
| 655b8f84bf | |||
| b183bcc64e | |||
| a04bcaf832 | |||
| cf6e9abfd0 | |||
| a1c38b514a | |||
| 6372ba3a65 | |||
| f096c8b91f | |||
| 7779722cba | |||
| 1f77a9ea7e | |||
| 621060584b | |||
| 70dfd66dff | |||
| 21ed75c9e9 | |||
| 7317baddc1 | |||
| 2cfba7771c | |||
| 1ccd3c0dde | |||
| ade7cadf9b | |||
| 8a78cd1a7b | |||
| ca1f0181b2 | |||
| b2ec867104 | |||
| b2997c15ed | |||
| d247079e89 | |||
| bd4f8fd8ae | |||
| c9413b0ccf | |||
| 97c773a435 | |||
| 50c5e9c386 | |||
| dd30b01b82 | |||
| 04ec69b582 | |||
| ab9fb6279f | |||
| 3e687478d9 | |||
| 1c7d875d85 | |||
| 6bb15007d5 | |||
| c92639eb89 | |||
| d09a294ade | |||
| 68881dde4d | |||
| 3d9a7c25d6 | |||
| f1386ecbae | |||
| 0456f7642c | |||
| 68fe5d6b8b | |||
| a222d32a31 | |||
| cc47798d1f | |||
| c19711ea1b | |||
| 112e5c076f | |||
| ca77c8842a | |||
| 3ef0735136 | |||
| d04f0fbede | |||
| 348df1b607 | |||
| d2d382c499 | |||
| 51537451f4 | |||
| 492e7bff73 | |||
| a27a8a1ba8 | |||
| c64ae2fb3a | |||
| b454fd6f63 | |||
| 5f750f2d0d | |||
| 20b8892733 | |||
| 4588e59f5f | |||
| ba2f9f86f0 | |||
| 4dfd7fcf2b | |||
| 4bf3fda9c5 | |||
| 68246453fe | |||
| edfc6d5445 | |||
| c396fa0e65 | |||
| a755db8f0f | |||
| eb1d9051fd | |||
| 2f0900d34c | |||
| 935d2ebeef | |||
| 4f613d334d | |||
| f3bdffbeac | |||
| ae69372d9a | |||
| 314d7a387a | |||
| dac41766f0 | |||
| 8c1d4f33ff | |||
| 962dbbb569 | |||
| 7f913fa083 | |||
| 5c10a942a1 | |||
| dbbdc93a0b | |||
| 1001309bde | |||
| d9d34761d2 | |||
| b7bc9d7d06 | |||
| 5a75054083 | |||
| c41d0149c4 | |||
| a631eafe27 | |||
| 45cfab02a9 | |||
| 3c9540f491 | |||
| 72e0ac5cf7 | |||
| 6ae19c8a22 | |||
| d734d2204f | |||
| 43e3f5215d | |||
| 3ed946390f | |||
| 4626ec8845 | |||
| 579c1b6b26 | |||
| 5264fc5897 | |||
| 6063f0747d | |||
| 5374826753 | |||
| b32071de43 | |||
| af10e10f20 | |||
| ad09299de7 | |||
| 5f71caac5b | |||
| 87db412709 | |||
| 83ad1c972d | |||
| d11d3156db | |||
| 773b46c969 | |||
| d87e59f626 | |||
| d69579d477 | |||
| 8386465a92 | |||
| bcec3c405a | |||
| 4c8f5bd1f0 | |||
| d87fef0892 | |||
| 5d14989682 | |||
| a296ccfc7e | |||
| f0fc577d79 | |||
| fbd9d24966 | |||
| 347e0e6ff0 | |||
| 4adea9666e | |||
| 1d94e50601 | |||
| 0092fa8b54 | |||
| e00d4c6e51 | |||
| c1d5bfdb83 | |||
| 33de14e45c | |||
| 156f5ae16f | |||
| 7100e1679e | |||
| 63e4ea1396 | |||
| 63a91c8d93 | |||
| 590d638094 | |||
| fb1d670158 | |||
| 5ddc4a2a41 | |||
| 448a080970 | |||
| c45c3f3a6c | |||
| 12f228da1c | |||
| ecd115c279 | |||
| 288a130fe7 | |||
| d53486c86e | |||
| 4f80c217fc | |||
| f4afdfcd0c | |||
| 3865f855f0 | |||
| 94da6eeb83 | |||
| 078a76f263 | |||
| 58d819b2f4 | |||
| 1c03d0506c | |||
| 27f66a8016 | |||
| e3e29667c6 | |||
| 3921f03b73 | |||
| 1336b44a26 | |||
| 419f9e397e | |||
| fcbaedf7d8 | |||
| 4eb022fceb | |||
| 6f4d3b4841 | |||
| a4f893eb7c | |||
| 44589819d1 | |||
| 33bfae30e0 | |||
| 3fa516f94b | |||
| 26abc114fd | |||
| 5202ffcea2 | |||
| 86d67affa3 | |||
| e489c7f00b | |||
| 9df4cca7e8 | |||
| f219707efd | |||
| 77eece6f40 | |||
| 7b168d4986 | |||
| 64ae6241eb | |||
| 3ef8dc8312 | |||
| 53df629af3 | |||
| 5271863a59 | |||
| 468dba3f24 | |||
| 09e9918b8a | |||
| 64cd328363 | |||
| 6d63e3e476 | |||
| 3a846721ec | |||
| ac866bf816 | |||
| 5d202e2a4a | |||
| 888dfae126 | |||
| 60e8ed77c4 | |||
| cf942fb445 | |||
| 0c24310e90 | |||
| 336cdda47d | |||
| 268a6957a7 | |||
| e21a11c190 | |||
| 9debedc386 | |||
| 64448c0ded | |||
| 6ce8062e3d | |||
| 213c342625 | |||
| b7f5ba1833 | |||
| a6196990a6 | |||
| 753f74c67d | |||
| aa4cd6a5ba | |||
| 92bc6915b1 | |||
| 915226fa3c | |||
| f8c7af7115 | |||
| 97aa6b39cb | |||
| bc944d90e2 | |||
| 4264cb46f4 | |||
| c29d71f5c0 | |||
| cb458b93f5 | |||
| da77587831 | |||
| 72380779d4 | |||
| b518978402 | |||
| f2ef2776e7 | |||
| 382ef231d8 | |||
| de122d075f | |||
| cffbe03b20 | |||
| f11aab9f17 | |||
| f12751cbd9 | |||
| 73b804bce7 |
Generated
+162
@@ -1,3 +1,165 @@
|
|||||||
|
## 2026-07-31
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Docmost: cleanup folder at update [@MickLesk](https://github.com/MickLesk) ([#16177](https://github.com/community-scripts/ProxmoxVE/pull/16177))
|
||||||
|
- Firecrawl: Add dependency [@tremor021](https://github.com/tremor021) ([#16174](https://github.com/community-scripts/ProxmoxVE/pull/16174))
|
||||||
|
|
||||||
|
## 2026-07-30
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Firecrawl ([#16156](https://github.com/community-scripts/ProxmoxVE/pull/16156))
|
||||||
|
- OmniRoute ([#16155](https://github.com/community-scripts/ProxmoxVE/pull/16155))
|
||||||
|
- PegaProx ([#16154](https://github.com/community-scripts/ProxmoxVE/pull/16154))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: Pin version to 3.1.0 [@vhsdream](https://github.com/vhsdream) ([#16170](https://github.com/community-scripts/ProxmoxVE/pull/16170))
|
||||||
|
- romm: remove stale 1.x alembic migrations on update [@Darkatek7](https://github.com/Darkatek7) ([#16101](https://github.com/community-scripts/ProxmoxVE/pull/16101))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Medusa: convert the non-free unrar source to deb822 format [@angusmaul](https://github.com/angusmaul) ([#16093](https://github.com/community-scripts/ProxmoxVE/pull/16093))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: support dynamic gitlab URL | add setup_mysql_db function [@MickLesk](https://github.com/MickLesk) ([#16166](https://github.com/community-scripts/ProxmoxVE/pull/16166))
|
||||||
|
- core: add configurable host CA inheritance during bootstrap [@MickLesk](https://github.com/MickLesk) ([#15889](https://github.com/community-scripts/ProxmoxVE/pull/15889))
|
||||||
|
|
||||||
|
## 2026-07-29
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- backup virtual printer in bambuddy [@asylumexp](https://github.com/asylumexp) ([#16142](https://github.com/community-scripts/ProxmoxVE/pull/16142))
|
||||||
|
- ImmichFrame: check .NET SDK before update deployment [@aidaskni](https://github.com/aidaskni) ([#16104](https://github.com/community-scripts/ProxmoxVE/pull/16104))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Bichon: Migration for V2 Release [@MickLesk](https://github.com/MickLesk) ([#16145](https://github.com/community-scripts/ProxmoxVE/pull/16145))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: Harden remote func bootstrapping with dns issues [@MickLesk](https://github.com/MickLesk) ([#16146](https://github.com/community-scripts/ProxmoxVE/pull/16146))
|
||||||
|
|
||||||
|
## 2026-07-28
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Create search directory in wanderer-install.sh [@Isnubi](https://github.com/Isnubi) ([#16134](https://github.com/community-scripts/ProxmoxVE/pull/16134))
|
||||||
|
- npmplus: Remove duplicate msg_info for container recreation [@MickLesk](https://github.com/MickLesk) ([#16122](https://github.com/community-scripts/ProxmoxVE/pull/16122))
|
||||||
|
- fix Node.js version drift [@asylumexp](https://github.com/asylumexp) ([#16111](https://github.com/community-scripts/ProxmoxVE/pull/16111))
|
||||||
|
- UmlautAdaptarr: use the Debian 13 Microsoft repo with its 2025 signing key [@angusmaul](https://github.com/angusmaul) ([#16077](https://github.com/community-scripts/ProxmoxVE/pull/16077))
|
||||||
|
- fix(bazarr): store data in /var/lib/bazarr instead of inside /opt/bazarr [@angusmaul](https://github.com/angusmaul) ([#16098](https://github.com/community-scripts/ProxmoxVE/pull/16098))
|
||||||
|
- Cloudflare-DDNS: store API token in a 600 env file and build the binary at install time [@angusmaul](https://github.com/angusmaul) ([#16100](https://github.com/community-scripts/ProxmoxVE/pull/16100))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: add nginx site helper and PHP socket resolver [@MickLesk](https://github.com/MickLesk) ([#16118](https://github.com/community-scripts/ProxmoxVE/pull/16118))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Migrate Musicseerr to DroppedNeedle [@vhsdream](https://github.com/vhsdream) ([#15751](https://github.com/community-scripts/ProxmoxVE/pull/15751))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: fix read prompt input directly from /dev/tty [@MickLesk](https://github.com/MickLesk) ([#16126](https://github.com/community-scripts/ProxmoxVE/pull/16126))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- actual-budget-prometheus-exporter ([#16109](https://github.com/community-scripts/ProxmoxVE/pull/16109))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: prometheus-paperless-exporter incompatibility with paperless v3 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16119](https://github.com/community-scripts/ProxmoxVE/pull/16119))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- fix keep-open for close invalid pr [@asylumexp](https://github.com/asylumexp) ([#16105](https://github.com/community-scripts/ProxmoxVE/pull/16105))
|
||||||
|
- Bump GitHub Actions across workflows [@MickLesk](https://github.com/MickLesk) ([#16091](https://github.com/community-scripts/ProxmoxVE/pull/16091))
|
||||||
|
|
||||||
|
## 2026-07-27
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Unpackerr ([#16034](https://github.com/community-scripts/ProxmoxVE/pull/16034))
|
||||||
|
- CookCLI ([#16028](https://github.com/community-scripts/ProxmoxVE/pull/16028))
|
||||||
|
- Discourse ([#16024](https://github.com/community-scripts/ProxmoxVE/pull/16024))
|
||||||
|
- Mastodon ([#16029](https://github.com/community-scripts/ProxmoxVE/pull/16029))
|
||||||
|
- Docspell ([#16033](https://github.com/community-scripts/ProxmoxVE/pull/16033))
|
||||||
|
- Poznote ([#16030](https://github.com/community-scripts/ProxmoxVE/pull/16030))
|
||||||
|
- Shiori ([#16026](https://github.com/community-scripts/ProxmoxVE/pull/16026))
|
||||||
|
- Nezha ([#16025](https://github.com/community-scripts/ProxmoxVE/pull/16025))
|
||||||
|
- PasswordPusher ([#16031](https://github.com/community-scripts/ProxmoxVE/pull/16031))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Update MeiliSearch command for database upgrade [@Isnubi](https://github.com/Isnubi) ([#16081](https://github.com/community-scripts/ProxmoxVE/pull/16081))
|
||||||
|
- Mylar3 & Medusa: use trixie non-free for unrar, not bookworm [@angusmaul](https://github.com/angusmaul) ([#16072](https://github.com/community-scripts/ProxmoxVE/pull/16072))
|
||||||
|
- Vikunja: pin install/update to v2.3.0 due upstream issues [@MickLesk](https://github.com/MickLesk) ([#16059](https://github.com/community-scripts/ProxmoxVE/pull/16059))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- OpenThread-BR: Add runtime configuration options [@tomfrenzel](https://github.com/tomfrenzel) ([#16038](https://github.com/community-scripts/ProxmoxVE/pull/16038))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: Handle LXC upgrade prompt cancellation [@MickLesk](https://github.com/MickLesk) ([#16058](https://github.com/community-scripts/ProxmoxVE/pull/16058))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: fix OS version fallback when the host catalog lacks the requested version & harden template validation [@MickLesk](https://github.com/MickLesk) ([#16068](https://github.com/community-scripts/ProxmoxVE/pull/16068))
|
||||||
|
|
||||||
|
## 2026-07-26
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Satisfactory ([#16023](https://github.com/community-scripts/ProxmoxVE/pull/16023))
|
||||||
|
- OmniTools ([#16032](https://github.com/community-scripts/ProxmoxVE/pull/16032))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Apache Tika: Remove software-properties-common from Apache Tika install [@andygrunwald](https://github.com/andygrunwald) ([#16054](https://github.com/community-scripts/ProxmoxVE/pull/16054))
|
||||||
|
- Fix inventree missing db engine (upstream issue / postinstall) [@MickLesk](https://github.com/MickLesk) ([#16022](https://github.com/community-scripts/ProxmoxVE/pull/16022))
|
||||||
|
- OPNsense VM: answer console password prompt explicitly, add inter-key delay [@MickLesk](https://github.com/MickLesk) ([#16021](https://github.com/community-scripts/ProxmoxVE/pull/16021))
|
||||||
|
- [endurain] add node update to update script [@johanngrobe](https://github.com/johanngrobe) ([#16014](https://github.com/community-scripts/ProxmoxVE/pull/16014))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Apache Tika: Switch from Debian Bookworm to Debian Trixie and replace manual install of OpenJDK with setup_java [@andygrunwald](https://github.com/andygrunwald) ([#16036](https://github.com/community-scripts/ProxmoxVE/pull/16036))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: improve OS mismatch message [@MickLesk](https://github.com/MickLesk) ([#16035](https://github.com/community-scripts/ProxmoxVE/pull/16035))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Improve command description for disabling pve-enterprise repo [@Marcondiro](https://github.com/Marcondiro) ([#16020](https://github.com/community-scripts/ProxmoxVE/pull/16020))
|
||||||
|
|
||||||
## 2026-07-25
|
## 2026-07-25
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
Generated
+151
@@ -0,0 +1,151 @@
|
|||||||
|
## 2026-08-08
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Ignis ([#16330](https://github.com/community-scripts/ProxmoxVE/pull/16330))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core - setup_nodejs: bypass npm allowScripts policy globally on npm >=11 [@MickLesk](https://github.com/MickLesk) ([#16280](https://github.com/community-scripts/ProxmoxVE/pull/16280))
|
||||||
|
|
||||||
|
## 2026-08-07
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- NetworkOptimizer ([#16328](https://github.com/community-scripts/ProxmoxVE/pull/16328))
|
||||||
|
- Orb ([#16329](https://github.com/community-scripts/ProxmoxVE/pull/16329))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- HortusFox: start applying db migrations [@tomfrenzel](https://github.com/tomfrenzel) ([#16324](https://github.com/community-scripts/ProxmoxVE/pull/16324))
|
||||||
|
- Docker: report container updates instead of prompting, stop auto-updating Portainer Agent, fix addon detection of legacy Portainer [@MickLesk](https://github.com/MickLesk) ([#16298](https://github.com/community-scripts/ProxmoxVE/pull/16298))
|
||||||
|
- Immich: retry mise install on transient npm download failures [@MickLesk](https://github.com/MickLesk) ([#16301](https://github.com/community-scripts/ProxmoxVE/pull/16301))
|
||||||
|
- changedetection: remove msttcorefonts to fix install hang [@austinpilz](https://github.com/austinpilz) ([#16319](https://github.com/community-scripts/ProxmoxVE/pull/16319))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: extend new vars and pocketbase values [@MickLesk](https://github.com/MickLesk) ([#16313](https://github.com/community-scripts/ProxmoxVE/pull/16313))
|
||||||
|
|
||||||
|
## 2026-08-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- paperless: change update abort message (endless spinner) [@MickLesk](https://github.com/MickLesk) ([#16299](https://github.com/community-scripts/ProxmoxVE/pull/16299))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Vikunja: remove version pin, v2.5.0 fixes the systemd syscall filter crash [@MickLesk](https://github.com/MickLesk) ([#16300](https://github.com/community-scripts/ProxmoxVE/pull/16300))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- build.func: filter templates by host architecture during search [@MickLesk](https://github.com/MickLesk) ([#16302](https://github.com/community-scripts/ProxmoxVE/pull/16302))
|
||||||
|
|
||||||
|
## 2026-08-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- NextcloudPI: Bump to Debian Trixie & Tweak broken SSH [@MickLesk](https://github.com/MickLesk) ([#15957](https://github.com/community-scripts/ProxmoxVE/pull/15957))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(monitor-all): reduce polling CPU overhead [@jomplox](https://github.com/jomplox) ([#15907](https://github.com/community-scripts/ProxmoxVE/pull/15907))
|
||||||
|
|
||||||
|
## 2026-08-04
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Hister ([#16259](https://github.com/community-scripts/ProxmoxVE/pull/16259))
|
||||||
|
- Obsidian-LiveSync ([#16233](https://github.com/community-scripts/ProxmoxVE/pull/16233))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Actual Budget: allow native module install scripts under npm 11 (Node24) [@MickLesk](https://github.com/MickLesk) ([#16277](https://github.com/community-scripts/ProxmoxVE/pull/16277))
|
||||||
|
- Heimdall-Dashboard: run full composer install on update, force production env [@MickLesk](https://github.com/MickLesk) ([#16278](https://github.com/community-scripts/ProxmoxVE/pull/16278))
|
||||||
|
- xyOps: rebuild xySat satellite during update [@MickLesk](https://github.com/MickLesk) ([#16279](https://github.com/community-scripts/ProxmoxVE/pull/16279))
|
||||||
|
- HAOS: remove non-ASCII dash from CPU model dialog text [@MickLesk](https://github.com/MickLesk) ([#16276](https://github.com/community-scripts/ProxmoxVE/pull/16276))
|
||||||
|
- fix: back up Termix db/data so the update stops destroying encryption keys [@LukeGus](https://github.com/LukeGus) ([#16275](https://github.com/community-scripts/ProxmoxVE/pull/16275))
|
||||||
|
- passwordpusher: dynamically read Ruby version from .ruby-version file [@Copilot](https://github.com/Copilot) ([#16242](https://github.com/community-scripts/ProxmoxVE/pull/16242))
|
||||||
|
- fix(salt): write version cache to ~/.salt, not /~.salt [@TowyTowy](https://github.com/TowyTowy) ([#16265](https://github.com/community-scripts/ProxmoxVE/pull/16265))
|
||||||
|
- AFFiNE: fix version and build type reported by the app itself [@MickLesk](https://github.com/MickLesk) ([#16251](https://github.com/community-scripts/ProxmoxVE/pull/16251))
|
||||||
|
- Passbolt: fetch GPG key from Passbolt's own host instead of the flaky keyserver [@MickLesk](https://github.com/MickLesk) ([#16248](https://github.com/community-scripts/ProxmoxVE/pull/16248))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Opencloud: Pin version to 7.4.0 [@vhsdream](https://github.com/vhsdream) ([#16257](https://github.com/community-scripts/ProxmoxVE/pull/16257))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Bump NodeJS Versions of several scripts [@MickLesk](https://github.com/MickLesk) ([#16230](https://github.com/community-scripts/ProxmoxVE/pull/16230))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: never delete ubuntu.sources (or other distro base sources) as orphaned [@MickLesk](https://github.com/MickLesk) ([#16250](https://github.com/community-scripts/ProxmoxVE/pull/16250))
|
||||||
|
- tools.func: complete a stale/partial backup manifest instead of trusting it as-is [@MickLesk](https://github.com/MickLesk) ([#16252](https://github.com/community-scripts/ProxmoxVE/pull/16252))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: harmonize tools/addon and move boilerplate into core.func [@MickLesk](https://github.com/MickLesk) ([#16202](https://github.com/community-scripts/ProxmoxVE/pull/16202))
|
||||||
|
|
||||||
|
## 2026-08-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Correction to link in Paperless-NGX update script [@jsspen](https://github.com/jsspen) ([#16241](https://github.com/community-scripts/ProxmoxVE/pull/16241))
|
||||||
|
- fix restore env in split pro [@johanngrobe](https://github.com/johanngrobe) ([#16228](https://github.com/community-scripts/ProxmoxVE/pull/16228))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: read all interactive prompts from /dev/tty, drain leftover input on read failure (hotfix) [@MickLesk](https://github.com/MickLesk) ([#16235](https://github.com/community-scripts/ProxmoxVE/pull/16235))
|
||||||
|
|
||||||
|
## 2026-08-02
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Portainer as Addon [@MickLesk](https://github.com/MickLesk) ([#16200](https://github.com/community-scripts/ProxmoxVE/pull/16200))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- LibreNMS: Ensure ipmitool dependency is installed [@tremor021](https://github.com/tremor021) ([#16219](https://github.com/community-scripts/ProxmoxVE/pull/16219))
|
||||||
|
- Bitfocus Companion: add libatomic1 dependency [@tremor021](https://github.com/tremor021) ([#16212](https://github.com/community-scripts/ProxmoxVE/pull/16212))
|
||||||
|
- fix(dispatcharr): add recordings and dvr queues to celery worker [@eXistC](https://github.com/eXistC) ([#16204](https://github.com/community-scripts/ProxmoxVE/pull/16204))
|
||||||
|
- add retry for uv - same as immich [@asylumexp](https://github.com/asylumexp) ([#16203](https://github.com/community-scripts/ProxmoxVE/pull/16203))
|
||||||
|
- Fix for cross-seed node version regression [@TorinFrancis](https://github.com/TorinFrancis) ([#16209](https://github.com/community-scripts/ProxmoxVE/pull/16209))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- chore: remove portainer setup from several scripts (moved to addon) [@MickLesk](https://github.com/MickLesk) ([#16201](https://github.com/community-scripts/ProxmoxVE/pull/16201))
|
||||||
|
|
||||||
|
## 2026-08-01
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Update bazarr-install.sh [@asylumexp](https://github.com/asylumexp) ([#16191](https://github.com/community-scripts/ProxmoxVE/pull/16191))
|
||||||
|
- fix romm missing 7z [@asylumexp](https://github.com/asylumexp) ([#16194](https://github.com/community-scripts/ProxmoxVE/pull/16194))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars [@asylumexp](https://github.com/asylumexp) ([#16193](https://github.com/community-scripts/ProxmoxVE/pull/16193))
|
||||||
+2
@@ -6,6 +6,8 @@ on:
|
|||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- "ct/**.sh"
|
- "ct/**.sh"
|
||||||
|
- "tools/**.sh"
|
||||||
|
- "vm/**.sh"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
Generated
+18
-2
@@ -314,12 +314,17 @@ jobs:
|
|||||||
// ── Allow-lists (mirror the slash bot) ─────────────────────────────
|
// ── Allow-lists (mirror the slash bot) ─────────────────────────────
|
||||||
const ALLOWED_FIELDS = {
|
const ALLOWED_FIELDS = {
|
||||||
name: 'string', description: 'string', logo: 'string', documentation: 'string',
|
name: 'string', description: 'string', logo: 'string', documentation: 'string',
|
||||||
website: 'string', project_url: 'string', github: 'string', config_path: 'string',
|
website: 'string', project_url: 'string', repository: 'string', config_path: 'string',
|
||||||
tags: 'string', port: 'number', default_user: 'nullable_string', default_passwd: 'nullable_string',
|
tags: 'string', port: 'number', default_user: 'nullable_string', default_passwd: 'nullable_string',
|
||||||
unprivileged: 'number', updateable: 'boolean', privileged: 'boolean', has_arm: 'boolean',
|
unprivileged: 'number', updateable: 'boolean', privileged: 'boolean',
|
||||||
|
architectures: 'select_list', platforms: 'select_list',
|
||||||
is_dev: 'boolean', is_disabled: 'boolean', disable_message: 'string',
|
is_dev: 'boolean', is_disabled: 'boolean', disable_message: 'string',
|
||||||
is_deleted: 'boolean', deleted_message: 'string'
|
is_deleted: 'boolean', deleted_message: 'string'
|
||||||
};
|
};
|
||||||
|
const SELECT_VALUES = {
|
||||||
|
architectures: ['amd64', 'arm64'],
|
||||||
|
platforms: ['pve', 'incus'],
|
||||||
|
};
|
||||||
const FIELD_TO_CT_VAR = { tags: 'var_tags', unprivileged: 'var_unprivileged' };
|
const FIELD_TO_CT_VAR = { tags: 'var_tags', unprivileged: 'var_unprivileged' };
|
||||||
const RESOURCE_KEYS = { cpu: 'number', ram: 'number', hdd: 'number', os: 'string', version: 'string' };
|
const RESOURCE_KEYS = { cpu: 'number', ram: 'number', hdd: 'number', os: 'string', version: 'string' };
|
||||||
const METHOD_KEYS = { config_path: 'string', script: 'string' };
|
const METHOD_KEYS = { config_path: 'string', script: 'string' };
|
||||||
@@ -339,6 +344,17 @@ jobs:
|
|||||||
if (isNaN(n)) return { error: '`' + key + '` must be a number' };
|
if (isNaN(n)) return { error: '`' + key + '` must be a number' };
|
||||||
return { value: n };
|
return { value: n };
|
||||||
}
|
}
|
||||||
|
if (type === 'select_list') {
|
||||||
|
// architectures/platforms are multi-selects over a closed set,
|
||||||
|
// so an unknown value is rejected rather than stored. The model
|
||||||
|
// may hand back an array or a comma-separated string.
|
||||||
|
const allowed = SELECT_VALUES[key] || [];
|
||||||
|
const raw = Array.isArray(rawVal) ? rawVal : String(rawVal == null ? '' : rawVal).split(',');
|
||||||
|
const values = raw.map(function (v) { return String(v).trim(); }).filter(Boolean);
|
||||||
|
const bad = values.filter(function (v) { return allowed.indexOf(v) === -1; });
|
||||||
|
if (bad.length > 0) return { error: '`' + key + '` accepts ' + allowed.join(', ') + ' — got: ' + bad.join(', ') };
|
||||||
|
return { value: values };
|
||||||
|
}
|
||||||
if (type === 'nullable_string') return { value: rawVal === '' || rawVal == null ? null : String(rawVal) };
|
if (type === 'nullable_string') return { value: rawVal === '' || rawVal == null ? null : String(rawVal) };
|
||||||
return { value: String(rawVal) };
|
return { value: String(rawVal) };
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+25
-6
@@ -323,9 +323,10 @@ jobs:
|
|||||||
'/pocketbase <slug> method remove <type>\n' +
|
'/pocketbase <slug> method remove <type>\n' +
|
||||||
'```\n' +
|
'```\n' +
|
||||||
'Method fields: `cpu` `ram` `hdd` `os` `version` `config_path` `script`\n\n' +
|
'Method fields: `cpu` `ram` `hdd` `os` `version` `config_path` `script`\n\n' +
|
||||||
'**Editable fields:** `name` `description` `logo` `documentation` `website` `project_url` `github` ' +
|
'**Editable fields:** `name` `description` `logo` `documentation` `website` `project_url` `repository` ' +
|
||||||
'`config_path` `port` `default_user` `default_passwd` ' +
|
'`config_path` `port` `default_user` `default_passwd` ' +
|
||||||
'`updateable` `privileged` `has_arm` `is_dev` ' +
|
'`updateable` `privileged` `is_dev` ' +
|
||||||
|
'`architectures` (amd64,arm64) `platforms` (pve,incus) ' +
|
||||||
'`is_disabled` `disable_message` `is_deleted` `deleted_message`';
|
'`is_disabled` `disable_message` `is_deleted` `deleted_message`';
|
||||||
|
|
||||||
if (!withoutCmd) {
|
if (!withoutCmd) {
|
||||||
@@ -504,7 +505,8 @@ jobs:
|
|||||||
out.push('- **Port:** ' + (record.port != null ? '`' + record.port + '`' : '—'));
|
out.push('- **Port:** ' + (record.port != null ? '`' + record.port + '`' : '—'));
|
||||||
out.push('- **Updateable:** ' + (record.updateable ? 'Yes' : 'No'));
|
out.push('- **Updateable:** ' + (record.updateable ? 'Yes' : 'No'));
|
||||||
out.push('- **Privileged:** ' + (record.privileged ? 'Yes' : 'No'));
|
out.push('- **Privileged:** ' + (record.privileged ? 'Yes' : 'No'));
|
||||||
out.push('- **ARM:** ' + (record.has_arm ? 'Yes' : 'No'));
|
out.push('- **Architectures:** ' + ((record.architectures || []).join(', ') || 'amd64'));
|
||||||
|
out.push('- **Platforms:** ' + ((record.platforms || []).join(', ') || 'pve'));
|
||||||
if (record.is_dev) out.push('- **Dev:** Yes');
|
if (record.is_dev) out.push('- **Dev:** Yes');
|
||||||
if (record.is_disabled) out.push('- **Disabled:** Yes' + (record.disable_message ? ' — ' + record.disable_message : ''));
|
if (record.is_disabled) out.push('- **Disabled:** Yes' + (record.disable_message ? ' — ' + record.disable_message : ''));
|
||||||
if (record.is_deleted) out.push('- **Deleted:** Yes' + (record.deleted_message ? ' — ' + record.deleted_message : ''));
|
if (record.is_deleted) out.push('- **Deleted:** Yes' + (record.deleted_message ? ' — ' + record.deleted_message : ''));
|
||||||
@@ -838,7 +840,7 @@ jobs:
|
|||||||
const fieldName = setMatch[1].toLowerCase();
|
const fieldName = setMatch[1].toLowerCase();
|
||||||
const SET_ALLOWED = {
|
const SET_ALLOWED = {
|
||||||
name: 'string', description: 'string', logo: 'string',
|
name: 'string', description: 'string', logo: 'string',
|
||||||
documentation: 'string', website: 'string', project_url: 'string', github: 'string',
|
documentation: 'string', website: 'string', project_url: 'string', repository: 'string',
|
||||||
config_path: 'string', disable_message: 'string', deleted_message: 'string'
|
config_path: 'string', disable_message: 'string', deleted_message: 'string'
|
||||||
};
|
};
|
||||||
if (!SET_ALLOWED[fieldName]) {
|
if (!SET_ALLOWED[fieldName]) {
|
||||||
@@ -888,7 +890,7 @@ jobs:
|
|||||||
documentation: 'string',
|
documentation: 'string',
|
||||||
website: 'string',
|
website: 'string',
|
||||||
project_url: 'string',
|
project_url: 'string',
|
||||||
github: 'string',
|
repository: 'string',
|
||||||
config_path: 'string',
|
config_path: 'string',
|
||||||
tags: 'string',
|
tags: 'string',
|
||||||
port: 'number',
|
port: 'number',
|
||||||
@@ -897,7 +899,8 @@ jobs:
|
|||||||
unprivileged: 'number',
|
unprivileged: 'number',
|
||||||
updateable: 'boolean',
|
updateable: 'boolean',
|
||||||
privileged: 'boolean',
|
privileged: 'boolean',
|
||||||
has_arm: 'boolean',
|
architectures: 'select_list',
|
||||||
|
platforms: 'select_list',
|
||||||
is_dev: 'boolean',
|
is_dev: 'boolean',
|
||||||
is_disabled: 'boolean',
|
is_disabled: 'boolean',
|
||||||
disable_message: 'string',
|
disable_message: 'string',
|
||||||
@@ -924,6 +927,10 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Cast values to correct types
|
// Cast values to correct types
|
||||||
|
const SELECT_VALUES = {
|
||||||
|
architectures: ['amd64', 'arm64'],
|
||||||
|
platforms: ['pve', 'incus'],
|
||||||
|
};
|
||||||
const payload = {};
|
const payload = {};
|
||||||
for (const [key, rawVal] of Object.entries(parsedFields)) {
|
for (const [key, rawVal] of Object.entries(parsedFields)) {
|
||||||
const type = ALLOWED_FIELDS[key];
|
const type = ALLOWED_FIELDS[key];
|
||||||
@@ -943,6 +950,18 @@ jobs:
|
|||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
payload[key] = n;
|
payload[key] = n;
|
||||||
|
} else if (type === 'select_list') {
|
||||||
|
// architectures/platforms are multi-selects over a closed set,
|
||||||
|
// so an unknown value is rejected rather than stored.
|
||||||
|
const allowed = SELECT_VALUES[key] || [];
|
||||||
|
const values = rawVal.split(',').map(function (v) { return v.trim(); }).filter(Boolean);
|
||||||
|
const bad = values.filter(function (v) { return allowed.indexOf(v) === -1; });
|
||||||
|
if (bad.length > 0) {
|
||||||
|
await addReaction('-1');
|
||||||
|
await postComment('❌ **PocketBase Bot**: `' + key + '` accepts ' + allowed.join(', ') + ' — got: `' + bad.join(', ') + '`');
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
payload[key] = values;
|
||||||
} else if (type === 'nullable_string') {
|
} else if (type === 'nullable_string') {
|
||||||
payload[key] = rawVal === '' ? null : rawVal;
|
payload[key] = rawVal === '' ? null : rawVal;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+13
-1
@@ -179,7 +179,19 @@ jobs:
|
|||||||
if (resolvedType) payload.type = resolvedType;
|
if (resolvedType) payload.type = resolvedType;
|
||||||
var resolvedCats = (data.categories || []).map(function(n) { return categoryNameToPbId[categoryIdToName[n]]; }).filter(Boolean);
|
var resolvedCats = (data.categories || []).map(function(n) { return categoryNameToPbId[categoryIdToName[n]]; }).filter(Boolean);
|
||||||
if (resolvedCats.length) payload.categories = resolvedCats;
|
if (resolvedCats.length) payload.categories = resolvedCats;
|
||||||
if (data.has_arm !== undefined) payload.has_arm = data.has_arm === true || data.has_arm === 'true';
|
// architectures replaces has_arm: a boolean could say "also ARM" but
|
||||||
|
// not "ARM only" or "amd64 only". A record written before the field
|
||||||
|
// existed is read through the old key so nothing silently drops.
|
||||||
|
if (Array.isArray(data.architectures)) {
|
||||||
|
payload.architectures = data.architectures.filter(function (a) { return a === 'amd64' || a === 'arm64'; });
|
||||||
|
} else if (data.has_arm !== undefined) {
|
||||||
|
payload.architectures = (data.has_arm === true || data.has_arm === 'true') ? ['amd64', 'arm64'] : ['amd64'];
|
||||||
|
}
|
||||||
|
if (Array.isArray(data.platforms)) {
|
||||||
|
payload.platforms = data.platforms.filter(function (p) { return p === 'pve' || p === 'incus'; });
|
||||||
|
}
|
||||||
|
if (Array.isArray(data.app_vars)) payload.app_vars = data.app_vars;
|
||||||
|
if (data.repository !== undefined) payload.repository = data.repository;
|
||||||
if (data.version !== undefined) payload.version = data.version;
|
if (data.version !== undefined) payload.version = data.version;
|
||||||
if (data.changelog !== undefined) payload.changelog = data.changelog;
|
if (data.changelog !== undefined) payload.changelog = data.changelog;
|
||||||
if (data.screenshots !== undefined) payload.screenshots = data.screenshots;
|
if (data.screenshots !== undefined) payload.screenshots = data.screenshots;
|
||||||
|
|||||||
+3
-1
@@ -24,7 +24,9 @@ generate_headers() {
|
|||||||
|
|
||||||
app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
|
app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
|
||||||
if [[ -n "$app_name" ]]; then
|
if [[ -n "$app_name" ]]; then
|
||||||
output_file="${headers_dir}/$(basename "${script%.*}")"
|
# core.func/vm-core.func look the header up as "${APP,,}" without spaces,
|
||||||
|
# so the generated file has to be named after APP - not after the script.
|
||||||
|
output_file="${headers_dir}/$(echo "${app_name,,}" | tr -d ' ')"
|
||||||
figlet_output=$(figlet -w 500 -f slant "$app_name")
|
figlet_output=$(figlet -w 500 -f slant "$app_name")
|
||||||
if [[ -n "$figlet_output" ]]; then
|
if [[ -n "$figlet_output" ]]; then
|
||||||
echo "$figlet_output" >"$output_file"
|
echo "$figlet_output" >"$output_file"
|
||||||
|
|||||||
+303
-245
@@ -80,6 +80,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -96,7 +102,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h4>July (25 entries)</h4></summary>
|
<summary><h4>August (8 entries)</h4></summary>
|
||||||
|
|
||||||
|
[View August 2026 Changelog](.github/changelogs/2026/08.md)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h4>July (31 entries)</h4></summary>
|
||||||
|
|
||||||
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
||||||
|
|
||||||
@@ -508,6 +521,294 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 2026-08-14
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- RSS-Bridge ([#16471](https://github.com/community-scripts/ProxmoxVE/pull/16471))
|
||||||
|
- GoDoxy ([#16470](https://github.com/community-scripts/ProxmoxVE/pull/16470))
|
||||||
|
- Mumble ([#16474](https://github.com/community-scripts/ProxmoxVE/pull/16474))
|
||||||
|
- Fleet ([#16472](https://github.com/community-scripts/ProxmoxVE/pull/16472))
|
||||||
|
- Newt ([#16473](https://github.com/community-scripts/ProxmoxVE/pull/16473))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- calibre-web: install as package for 0.6.27's src-layout restructure [@MickLesk](https://github.com/MickLesk) ([#16480](https://github.com/community-scripts/ProxmoxVE/pull/16480))
|
||||||
|
- Wanderer: Refactor of Services / Installation / Paths [@johanngrobe](https://github.com/johanngrobe) ([#16487](https://github.com/community-scripts/ProxmoxVE/pull/16487))
|
||||||
|
- pelican-panel: set APP_URL to container IP [@MickLesk](https://github.com/MickLesk) ([#16488](https://github.com/community-scripts/ProxmoxVE/pull/16488))
|
||||||
|
- fix(ampache): update to PHP 8.5 asset, auto-upgrade PHP on update [@CervezaStallone](https://github.com/CervezaStallone) ([#16484](https://github.com/community-scripts/ProxmoxVE/pull/16484))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- projectsend: rewrite for 2.0.0 (Laravel, nginx, MariaDB) [@MickLesk](https://github.com/MickLesk) ([#16477](https://github.com/community-scripts/ProxmoxVE/pull/16477))
|
||||||
|
- Homepage v2.0 [@vhsdream](https://github.com/vhsdream) ([#16500](https://github.com/community-scripts/ProxmoxVE/pull/16500))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: PowerDNS move poweradmin database outside the web root [@MickLesk](https://github.com/MickLesk) ([#16476](https://github.com/community-scripts/ProxmoxVE/pull/16476))
|
||||||
|
- paperless-ngx: run services with uv --no-sync to avoid startup network dependency [@MickLesk](https://github.com/MickLesk) ([#16479](https://github.com/community-scripts/ProxmoxVE/pull/16479))
|
||||||
|
|
||||||
|
## 2026-08-13
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- SuggestArr ([#16449](https://github.com/community-scripts/ProxmoxVE/pull/16449))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(stirling-pdf): LibreOffice listener collides with unoserver on UNO port 2002, burning a core [@angusmaul](https://github.com/angusmaul) ([#16460](https://github.com/community-scripts/ProxmoxVE/pull/16460))
|
||||||
|
- fix(reitti): enable SNI for tile cache [@kylemd](https://github.com/kylemd) ([#16463](https://github.com/community-scripts/ProxmoxVE/pull/16463))
|
||||||
|
- [wanderer] refactor [@johanngrobe](https://github.com/johanngrobe) ([#16448](https://github.com/community-scripts/ProxmoxVE/pull/16448))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- feat: Update koillection-install.sh to support API usage [@Crazy-Duck](https://github.com/Crazy-Duck) ([#16425](https://github.com/community-scripts/ProxmoxVE/pull/16425))
|
||||||
|
|
||||||
|
## 2026-08-12
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Stalwart ([#16388](https://github.com/community-scripts/ProxmoxVE/pull/16388))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- networkoptimizer: mitigate dotnet publish hang in LXC [@MickLesk](https://github.com/MickLesk) ([#16436](https://github.com/community-scripts/ProxmoxVE/pull/16436))
|
||||||
|
- lazylibrarian: reinstall deps after git pull on update [@MickLesk](https://github.com/MickLesk) ([#16435](https://github.com/community-scripts/ProxmoxVE/pull/16435))
|
||||||
|
- wanderer: fix deprecated meilisearch upgrade flag [@MickLesk](https://github.com/MickLesk) ([#16434](https://github.com/community-scripts/ProxmoxVE/pull/16434))
|
||||||
|
- calibre-web: fix release asset filename pattern [@MickLesk](https://github.com/MickLesk) ([#16433](https://github.com/community-scripts/ProxmoxVE/pull/16433))
|
||||||
|
- fix(stirling-pdf): unoserver installed into the venv, and login mode truncates .env [@angusmaul](https://github.com/angusmaul) ([#16439](https://github.com/community-scripts/ProxmoxVE/pull/16439))
|
||||||
|
- fix(pulse): keep the container recoverable when an update fails [@rcourtman](https://github.com/rcourtman) ([#16311](https://github.com/community-scripts/ProxmoxVE/pull/16311))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- ConvertX: add some new dependencies [@MickLesk](https://github.com/MickLesk) ([#16437](https://github.com/community-scripts/ProxmoxVE/pull/16437))
|
||||||
|
|
||||||
|
## 2026-08-11
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Update source URL for Reactive Resume [@MickLesk](https://github.com/MickLesk) ([#16407](https://github.com/community-scripts/ProxmoxVE/pull/16407))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pelican-Panel: add php artisan p:environment:database [@MickLesk](https://github.com/MickLesk) ([#16397](https://github.com/community-scripts/ProxmoxVE/pull/16397))
|
||||||
|
- outline: fix URL sed matching wrong line in .env.sample // refactor .env generation [@MickLesk](https://github.com/MickLesk) ([#16408](https://github.com/community-scripts/ProxmoxVE/pull/16408))
|
||||||
|
- paperless-ngx: reindex Tantivy search index on webserver start [@MickLesk](https://github.com/MickLesk) ([#16395](https://github.com/community-scripts/ProxmoxVE/pull/16395))
|
||||||
|
- karakeep: pin Node.js to 22 LTS, avoid Node 24.19 better-sqlite3 crash [@MickLesk](https://github.com/MickLesk) ([#16396](https://github.com/community-scripts/ProxmoxVE/pull/16396))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Open WebUI: add optional OpenTelemetry package install [@irishpadres](https://github.com/irishpadres) ([#16415](https://github.com/community-scripts/ProxmoxVE/pull/16415))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(add-tailscale-lxc): stop spinner before whiptail menu [@halcycon](https://github.com/halcycon) ([#16402](https://github.com/community-scripts/ProxmoxVE/pull/16402))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- arcane: fix projects/builds dir ownership for non-root container UID [@MickLesk](https://github.com/MickLesk) ([#16411](https://github.com/community-scripts/ProxmoxVE/pull/16411))
|
||||||
|
|
||||||
|
## 2026-08-10
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- GitLab ([#16386](https://github.com/community-scripts/ProxmoxVE/pull/16386))
|
||||||
|
- TeslaMate ([#16385](https://github.com/community-scripts/ProxmoxVE/pull/16385))
|
||||||
|
- tor-snowflake ([#15684](https://github.com/community-scripts/ProxmoxVE/pull/15684))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- ErsatzTV: update ffmpeg to 8.1 version [@MickLesk](https://github.com/MickLesk) ([#16383](https://github.com/community-scripts/ProxmoxVE/pull/16383))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- post-pdm-install ([#16368](https://github.com/community-scripts/ProxmoxVE/pull/16368))
|
||||||
|
|
||||||
|
## 2026-08-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix: CouchDB Erlang cookie breaks vm.args (use hex) [@fudianchn](https://github.com/fudianchn) ([#16361](https://github.com/community-scripts/ProxmoxVE/pull/16361))
|
||||||
|
- SparkyFitness: Install Git for frontend builds [@MickLesk](https://github.com/MickLesk) ([#16352](https://github.com/community-scripts/ProxmoxVE/pull/16352))
|
||||||
|
- Byparr: Use invisible-playwright browser setup [@MickLesk](https://github.com/MickLesk) ([#16353](https://github.com/community-scripts/ProxmoxVE/pull/16353))
|
||||||
|
- Crafty Controller: Restore ownership after updates [@MickLesk](https://github.com/MickLesk) ([#16354](https://github.com/community-scripts/ProxmoxVE/pull/16354))
|
||||||
|
- Webtrees: Fix schema check in silent mode [@MickLesk](https://github.com/MickLesk) ([#16355](https://github.com/community-scripts/ProxmoxVE/pull/16355))
|
||||||
|
- SigNoz: Allow legacy metadata schema on ClickHouse 26 [@MickLesk](https://github.com/MickLesk) ([#16356](https://github.com/community-scripts/ProxmoxVE/pull/16356))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Portainer: Update existing CE and BE installations [@MickLesk](https://github.com/MickLesk) ([#16357](https://github.com/community-scripts/ProxmoxVE/pull/16357))
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- github: update Star History links and image sources [@MickLesk](https://github.com/MickLesk) ([#16367](https://github.com/community-scripts/ProxmoxVE/pull/16367))
|
||||||
|
|
||||||
|
## 2026-08-08
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Ignis ([#16330](https://github.com/community-scripts/ProxmoxVE/pull/16330))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core - setup_nodejs: bypass npm allowScripts policy globally on npm >=11 [@MickLesk](https://github.com/MickLesk) ([#16280](https://github.com/community-scripts/ProxmoxVE/pull/16280))
|
||||||
|
|
||||||
|
## 2026-08-07
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- NetworkOptimizer ([#16328](https://github.com/community-scripts/ProxmoxVE/pull/16328))
|
||||||
|
- Orb ([#16329](https://github.com/community-scripts/ProxmoxVE/pull/16329))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- HortusFox: start applying db migrations [@tomfrenzel](https://github.com/tomfrenzel) ([#16324](https://github.com/community-scripts/ProxmoxVE/pull/16324))
|
||||||
|
- Docker: report container updates instead of prompting, stop auto-updating Portainer Agent, fix addon detection of legacy Portainer [@MickLesk](https://github.com/MickLesk) ([#16298](https://github.com/community-scripts/ProxmoxVE/pull/16298))
|
||||||
|
- Immich: retry mise install on transient npm download failures [@MickLesk](https://github.com/MickLesk) ([#16301](https://github.com/community-scripts/ProxmoxVE/pull/16301))
|
||||||
|
- changedetection: remove msttcorefonts to fix install hang [@austinpilz](https://github.com/austinpilz) ([#16319](https://github.com/community-scripts/ProxmoxVE/pull/16319))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: extend new vars and pocketbase values [@MickLesk](https://github.com/MickLesk) ([#16313](https://github.com/community-scripts/ProxmoxVE/pull/16313))
|
||||||
|
|
||||||
|
## 2026-08-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- paperless: change update abort message (endless spinner) [@MickLesk](https://github.com/MickLesk) ([#16299](https://github.com/community-scripts/ProxmoxVE/pull/16299))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Vikunja: remove version pin, v2.5.0 fixes the systemd syscall filter crash [@MickLesk](https://github.com/MickLesk) ([#16300](https://github.com/community-scripts/ProxmoxVE/pull/16300))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- build.func: filter templates by host architecture during search [@MickLesk](https://github.com/MickLesk) ([#16302](https://github.com/community-scripts/ProxmoxVE/pull/16302))
|
||||||
|
|
||||||
|
## 2026-08-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- NextcloudPI: Bump to Debian Trixie & Tweak broken SSH [@MickLesk](https://github.com/MickLesk) ([#15957](https://github.com/community-scripts/ProxmoxVE/pull/15957))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(monitor-all): reduce polling CPU overhead [@jomplox](https://github.com/jomplox) ([#15907](https://github.com/community-scripts/ProxmoxVE/pull/15907))
|
||||||
|
|
||||||
|
## 2026-08-04
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Hister ([#16259](https://github.com/community-scripts/ProxmoxVE/pull/16259))
|
||||||
|
- Obsidian-LiveSync ([#16233](https://github.com/community-scripts/ProxmoxVE/pull/16233))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Actual Budget: allow native module install scripts under npm 11 (Node24) [@MickLesk](https://github.com/MickLesk) ([#16277](https://github.com/community-scripts/ProxmoxVE/pull/16277))
|
||||||
|
- Heimdall-Dashboard: run full composer install on update, force production env [@MickLesk](https://github.com/MickLesk) ([#16278](https://github.com/community-scripts/ProxmoxVE/pull/16278))
|
||||||
|
- xyOps: rebuild xySat satellite during update [@MickLesk](https://github.com/MickLesk) ([#16279](https://github.com/community-scripts/ProxmoxVE/pull/16279))
|
||||||
|
- HAOS: remove non-ASCII dash from CPU model dialog text [@MickLesk](https://github.com/MickLesk) ([#16276](https://github.com/community-scripts/ProxmoxVE/pull/16276))
|
||||||
|
- fix: back up Termix db/data so the update stops destroying encryption keys [@LukeGus](https://github.com/LukeGus) ([#16275](https://github.com/community-scripts/ProxmoxVE/pull/16275))
|
||||||
|
- passwordpusher: dynamically read Ruby version from .ruby-version file [@Copilot](https://github.com/Copilot) ([#16242](https://github.com/community-scripts/ProxmoxVE/pull/16242))
|
||||||
|
- fix(salt): write version cache to ~/.salt, not /~.salt [@TowyTowy](https://github.com/TowyTowy) ([#16265](https://github.com/community-scripts/ProxmoxVE/pull/16265))
|
||||||
|
- AFFiNE: fix version and build type reported by the app itself [@MickLesk](https://github.com/MickLesk) ([#16251](https://github.com/community-scripts/ProxmoxVE/pull/16251))
|
||||||
|
- Passbolt: fetch GPG key from Passbolt's own host instead of the flaky keyserver [@MickLesk](https://github.com/MickLesk) ([#16248](https://github.com/community-scripts/ProxmoxVE/pull/16248))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Opencloud: Pin version to 7.4.0 [@vhsdream](https://github.com/vhsdream) ([#16257](https://github.com/community-scripts/ProxmoxVE/pull/16257))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Bump NodeJS Versions of several scripts [@MickLesk](https://github.com/MickLesk) ([#16230](https://github.com/community-scripts/ProxmoxVE/pull/16230))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: never delete ubuntu.sources (or other distro base sources) as orphaned [@MickLesk](https://github.com/MickLesk) ([#16250](https://github.com/community-scripts/ProxmoxVE/pull/16250))
|
||||||
|
- tools.func: complete a stale/partial backup manifest instead of trusting it as-is [@MickLesk](https://github.com/MickLesk) ([#16252](https://github.com/community-scripts/ProxmoxVE/pull/16252))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: harmonize tools/addon and move boilerplate into core.func [@MickLesk](https://github.com/MickLesk) ([#16202](https://github.com/community-scripts/ProxmoxVE/pull/16202))
|
||||||
|
|
||||||
|
## 2026-08-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Correction to link in Paperless-NGX update script [@jsspen](https://github.com/jsspen) ([#16241](https://github.com/community-scripts/ProxmoxVE/pull/16241))
|
||||||
|
- fix restore env in split pro [@johanngrobe](https://github.com/johanngrobe) ([#16228](https://github.com/community-scripts/ProxmoxVE/pull/16228))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: read all interactive prompts from /dev/tty, drain leftover input on read failure (hotfix) [@MickLesk](https://github.com/MickLesk) ([#16235](https://github.com/community-scripts/ProxmoxVE/pull/16235))
|
||||||
|
|
||||||
|
## 2026-08-02
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Portainer as Addon [@MickLesk](https://github.com/MickLesk) ([#16200](https://github.com/community-scripts/ProxmoxVE/pull/16200))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- LibreNMS: Ensure ipmitool dependency is installed [@tremor021](https://github.com/tremor021) ([#16219](https://github.com/community-scripts/ProxmoxVE/pull/16219))
|
||||||
|
- Bitfocus Companion: add libatomic1 dependency [@tremor021](https://github.com/tremor021) ([#16212](https://github.com/community-scripts/ProxmoxVE/pull/16212))
|
||||||
|
- fix(dispatcharr): add recordings and dvr queues to celery worker [@eXistC](https://github.com/eXistC) ([#16204](https://github.com/community-scripts/ProxmoxVE/pull/16204))
|
||||||
|
- add retry for uv - same as immich [@asylumexp](https://github.com/asylumexp) ([#16203](https://github.com/community-scripts/ProxmoxVE/pull/16203))
|
||||||
|
- Fix for cross-seed node version regression [@TorinFrancis](https://github.com/TorinFrancis) ([#16209](https://github.com/community-scripts/ProxmoxVE/pull/16209))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- chore: remove portainer setup from several scripts (moved to addon) [@MickLesk](https://github.com/MickLesk) ([#16201](https://github.com/community-scripts/ProxmoxVE/pull/16201))
|
||||||
|
|
||||||
|
## 2026-08-01
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Update bazarr-install.sh [@asylumexp](https://github.com/asylumexp) ([#16191](https://github.com/community-scripts/ProxmoxVE/pull/16191))
|
||||||
|
- fix romm missing 7z [@asylumexp](https://github.com/asylumexp) ([#16194](https://github.com/community-scripts/ProxmoxVE/pull/16194))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars [@asylumexp](https://github.com/asylumexp) ([#16193](https://github.com/community-scripts/ProxmoxVE/pull/16193))
|
||||||
|
|
||||||
## 2026-07-31
|
## 2026-07-31
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
@@ -1004,247 +1305,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- Adapt to new artifact filename format for pocket id [@wollew](https://github.com/wollew) ([#15689](https://github.com/community-scripts/ProxmoxVE/pull/15689))
|
- Adapt to new artifact filename format for pocket id [@wollew](https://github.com/wollew) ([#15689](https://github.com/community-scripts/ProxmoxVE/pull/15689))
|
||||||
- Fireshare: Fix for install and upgrade to v1.7.3 [@tremor021](https://github.com/tremor021) ([#15673](https://github.com/community-scripts/ProxmoxVE/pull/15673))
|
- Fireshare: Fix for install and upgrade to v1.7.3 [@tremor021](https://github.com/tremor021) ([#15673](https://github.com/community-scripts/ProxmoxVE/pull/15673))
|
||||||
- Endurain: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15674](https://github.com/community-scripts/ProxmoxVE/pull/15674))
|
- Endurain: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15674](https://github.com/community-scripts/ProxmoxVE/pull/15674))
|
||||||
|
|
||||||
## 2026-07-09
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- fix(pihole): repair Unbound DNS-over-TLS (DoT) forwarding config [@TowyTowy](https://github.com/TowyTowy) ([#15654](https://github.com/community-scripts/ProxmoxVE/pull/15654))
|
|
||||||
|
|
||||||
## 2026-07-08
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Opencloud: Bump version to 7.2.1 [@vhsdream](https://github.com/vhsdream) ([#15655](https://github.com/community-scripts/ProxmoxVE/pull/15655))
|
|
||||||
- BabyBuddy: Harden update script [@MickLesk](https://github.com/MickLesk) ([#15642](https://github.com/community-scripts/ProxmoxVE/pull/15642))
|
|
||||||
|
|
||||||
## 2026-07-07
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Forgejo-Runner ([#15046](https://github.com/community-scripts/ProxmoxVE/pull/15046))
|
|
||||||
|
|
||||||
## 2026-07-06
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- Fix alignment in various ct end messages [@tremor021](https://github.com/tremor021) ([#15632](https://github.com/community-scripts/ProxmoxVE/pull/15632))
|
|
||||||
- Immich: Update libvips to 8.18.4 [@vhsdream](https://github.com/vhsdream) ([#15619](https://github.com/community-scripts/ProxmoxVE/pull/15619))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Wizarr: Build JS and CSS static assets [@vhsdream](https://github.com/vhsdream) ([#15634](https://github.com/community-scripts/ProxmoxVE/pull/15634))
|
|
||||||
- RustDesk Server: Update URL format in rustdeskserver.sh [@tremor021](https://github.com/tremor021) ([#15626](https://github.com/community-scripts/ProxmoxVE/pull/15626))
|
|
||||||
- attempt to port docker-vm to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15611](https://github.com/community-scripts/ProxmoxVE/pull/15611))
|
|
||||||
- fix(plane): don't clobber global app var, breaking /usr/bin/update [@asylumexp](https://github.com/asylumexp) ([#15612](https://github.com/community-scripts/ProxmoxVE/pull/15612))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- cliproxyapi: point setup message at /management.html [@austinpilz](https://github.com/austinpilz) ([#15628](https://github.com/community-scripts/ProxmoxVE/pull/15628))
|
|
||||||
|
|
||||||
### 🗑️ Deleted Scripts
|
|
||||||
|
|
||||||
- Remove: FlowiseAI [@MickLesk](https://github.com/MickLesk) ([#15624](https://github.com/community-scripts/ProxmoxVE/pull/15624))
|
|
||||||
|
|
||||||
## 2026-07-05
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- excalidash ([#15604](https://github.com/community-scripts/ProxmoxVE/pull/15604))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix: homarr: cli [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15603](https://github.com/community-scripts/ProxmoxVE/pull/15603))
|
|
||||||
- immich: vacuum smart_search/face_search before VectorChord bump [@irishpadres](https://github.com/irishpadres) ([#15607](https://github.com/community-scripts/ProxmoxVE/pull/15607))
|
|
||||||
|
|
||||||
## 2026-07-04
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Element Synapse: Fix heredoc syntax in elementsynapse-install.sh [@tremor021](https://github.com/tremor021) ([#15594](https://github.com/community-scripts/ProxmoxVE/pull/15594))
|
|
||||||
- Twenty: Fix backup restore [@tremor021](https://github.com/tremor021) ([#15586](https://github.com/community-scripts/ProxmoxVE/pull/15586))
|
|
||||||
- fix(endurain): update frontend dist path after upstream restructure [@joaovitoriasilva](https://github.com/joaovitoriasilva) ([#15590](https://github.com/community-scripts/ProxmoxVE/pull/15590))
|
|
||||||
|
|
||||||
## 2026-07-03
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Immich: handle mise monorepo_root rename correctly | bump to 3.0.1 [@MickLesk](https://github.com/MickLesk) ([#15557](https://github.com/community-scripts/ProxmoxVE/pull/15557))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Opencloud: bump to v7.2.0 [@vhsdream](https://github.com/vhsdream) ([#15575](https://github.com/community-scripts/ProxmoxVE/pull/15575))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- tools.func: fix corepack/pnpm install flow in setup_nodejs [@MickLesk](https://github.com/MickLesk) ([#15579](https://github.com/community-scripts/ProxmoxVE/pull/15579))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
|
||||||
|
|
||||||
## 2026-07-02
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
|
||||||
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
|
||||||
|
|
||||||
## 2026-07-01
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
|
||||||
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
|
||||||
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
|
||||||
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
|
||||||
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
|
||||||
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
|
||||||
|
|
||||||
## 2026-06-30
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
|
||||||
|
|
||||||
## 2026-06-29
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
|
||||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
|
||||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
|
||||||
|
|
||||||
## 2026-06-28
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
|
||||||
|
|
||||||
## 2026-06-27
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- tool: add disk-health tool (SMART + NVMe) [@MickLesk](https://github.com/MickLesk) ([#15417](https://github.com/community-scripts/ProxmoxVE/pull/15417))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Deluge openssl fix [@asylumexp](https://github.com/asylumexp) ([#15435](https://github.com/community-scripts/ProxmoxVE/pull/15435))
|
|
||||||
- fix command syntax in tunarr.sh [@asylumexp](https://github.com/asylumexp) ([#15434](https://github.com/community-scripts/ProxmoxVE/pull/15434))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Storyteller: bump Node.js version to Node 24 [@thinusn](https://github.com/thinusn) ([#15439](https://github.com/community-scripts/ProxmoxVE/pull/15439))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- fix(endurain): replace Poetry/uv-pip backend setup with uv sync --frozen --no-dev [@Copilot](https://github.com/Copilot) ([#15429](https://github.com/community-scripts/ProxmoxVE/pull/15429))
|
|
||||||
|
|
||||||
## 2026-06-26
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- Termix: Update Nginx configuration file paths [@xyzulu](https://github.com/xyzulu) ([#15397](https://github.com/community-scripts/ProxmoxVE/pull/15397))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Docuseal: use real SECRET_KEY_BASE for db:migrate on update [@MickLesk](https://github.com/MickLesk) ([#15411](https://github.com/community-scripts/ProxmoxVE/pull/15411))
|
|
||||||
- bun: correct install for degoog [@MickLesk](https://github.com/MickLesk) ([#15412](https://github.com/community-scripts/ProxmoxVE/pull/15412))
|
|
||||||
- fix databasus update/install errors [@asylumexp](https://github.com/asylumexp) ([#15403](https://github.com/community-scripts/ProxmoxVE/pull/15403))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- tools.func: fix setup_docker - don't abort update on docker pull failure [@MickLesk](https://github.com/MickLesk) ([#15410](https://github.com/community-scripts/ProxmoxVE/pull/15410))
|
|
||||||
- fix(build.func): set /dev/kfd GID in fix_gpu_gids for AMD ROCm [@jamiej](https://github.com/jamiej) ([#15401](https://github.com/community-scripts/ProxmoxVE/pull/15401))
|
|
||||||
- fix alpine mktmp error [@asylumexp](https://github.com/asylumexp) ([#15398](https://github.com/community-scripts/ProxmoxVE/pull/15398))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: reduce IP-Tag resource usage and clean up ShellCheck findings [@MickLesk](https://github.com/MickLesk) ([#15418](https://github.com/community-scripts/ProxmoxVE/pull/15418))
|
|
||||||
- QoL: kernel-clean: Validate kernel selection input [@MickLesk](https://github.com/MickLesk) ([#15414](https://github.com/community-scripts/ProxmoxVE/pull/15414))
|
|
||||||
- QoL: clean-lxcs exclude matching and set -e cancel handling [@MickLesk](https://github.com/MickLesk) ([#15413](https://github.com/community-scripts/ProxmoxVE/pull/15413))
|
|
||||||
- QoL: Harden microcode download/install in microcode and pbs-microcode [@MickLesk](https://github.com/MickLesk) ([#15415](https://github.com/community-scripts/ProxmoxVE/pull/15415))
|
|
||||||
- QoL: scaling-governor extend selection and guard missing cpufreq [@MickLesk](https://github.com/MickLesk) ([#15416](https://github.com/community-scripts/ProxmoxVE/pull/15416))
|
|
||||||
+61
-1
@@ -103,6 +103,55 @@ Key rules at a glance:
|
|||||||
- Quote all variables: `"$VAR"` not `$VAR`
|
- Quote all variables: `"$VAR"` not `$VAR`
|
||||||
- Use lowercase variable names
|
- Use lowercase variable names
|
||||||
- Do not hardcode credentials or sensitive values
|
- Do not hardcode credentials or sensitive values
|
||||||
|
- Never prompt without an escape hatch — see below
|
||||||
|
|
||||||
|
### Answering a prompt up front
|
||||||
|
|
||||||
|
An install script that only asks cannot be deployed unattended. Read the
|
||||||
|
variable first and prompt only when it is unset:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
if [[ -z "${var_admin_user:-}" ]]; then
|
||||||
|
read -r -p "${TAB3}Admin username: " var_admin_user
|
||||||
|
fi
|
||||||
|
var_admin_user="${var_admin_user:-admin}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Name them `var_<something>`, the same namespace the container variables use.
|
||||||
|
`install/forgejo-runner-install.sh`, `install/pangolin-install.sh`, and `install/docker-install.sh` all
|
||||||
|
follow this.
|
||||||
|
|
||||||
|
The variable also has to be exported from `ct/<app>.sh`, or it never reaches
|
||||||
|
the container — `lxc-attach` carries the caller's environment, but only for
|
||||||
|
what was actually exported:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export var_admin_user="${var_admin_user:-}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Declare them on the script's PocketBase record in `app_vars` so the website's
|
||||||
|
generator can offer them as fields:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"app_vars": [
|
||||||
|
{
|
||||||
|
"name": "var_admin_user",
|
||||||
|
"label": "Admin Username",
|
||||||
|
"type": "text",
|
||||||
|
"default": "admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "var_admin_pass",
|
||||||
|
"label": "Admin Password",
|
||||||
|
"type": "password",
|
||||||
|
"secret": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
`type` is one of `text`, `password`, `number`, `boolean` (`yes`/`no`) or
|
||||||
|
`select` (with `options`). Mark anything credential-like `secret` — the
|
||||||
|
generator keeps those out of shareable links and out of the on-screen summary.
|
||||||
|
|
||||||
Full standards and examples: **[community-scripts.org/docs/contribution](https://community-scripts.org/docs/contribution)**
|
Full standards and examples: **[community-scripts.org/docs/contribution](https://community-scripts.org/docs/contribution)**
|
||||||
|
|
||||||
@@ -123,8 +172,19 @@ dev_mode="trace,keep" bash -c "$(curl -fsSL https://raw.githubusercontent.com/co
|
|||||||
| `pause` | Pauses execution at key points before customization |
|
| `pause` | Pauses execution at key points before customization |
|
||||||
| `breakpoint` | Drops to a shell at hardcoded `breakpoint` calls in scripts |
|
| `breakpoint` | Drops to a shell at hardcoded `breakpoint` calls in scripts |
|
||||||
| `logs` | Saves detailed build logs to `/var/log/community-scripts/` |
|
| `logs` | Saves detailed build logs to `/var/log/community-scripts/` |
|
||||||
| `dryrun` | Bypasses actual container creation (limited support) |
|
|
||||||
| `motd` | Forces an update of the Message of the Day |
|
| `motd` | Forces an update of the Message of the Day |
|
||||||
|
| `net` | Logs every engine fetch: HTTP status, duration and URL |
|
||||||
|
| `timing` | Times each step and lists the slowest ones at the end |
|
||||||
|
|
||||||
|
Any flag also prints the resolved context first — where the engine came from,
|
||||||
|
both roots and URLs, the app, platform and versions — and repaints the greens
|
||||||
|
red, so a dev run is never mistaken for a normal install.
|
||||||
|
|
||||||
|
Setting `dev_mode` without naming a flag (`dev_mode=`, `=1`, `=ask`) opens a
|
||||||
|
picker before the install menu.
|
||||||
|
|
||||||
|
`dryrun` was removed: it only intercepted the `silent()` wrapper, so `pct
|
||||||
|
create` still ran and the container was still built.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -171,11 +171,21 @@ This project runs on community contributions. Whether you want to write new scri
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://star-history.com/#community-scripts/ProxmoxVE&Date">
|
<a href="https://www.star-history.com/?repos=community-scripts%2FProxmoxVE&type=date&legend=top-left">
|
||||||
<picture>
|
<picture>
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
|
<source
|
||||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
|
media="(prefers-color-scheme: dark)"
|
||||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" width="700" />
|
srcset="https://api.star-history.com/chart?repos=community-scripts/ProxmoxVE&type=date&theme=dark&legend=top-left&sealed_token=-lUy2KH6pJryUyLCbiWRwFz3ilXMDFVFHm0lJcqh-Hl5e0QNNKjINNcXzULhaZVpBugN_TDaxOawEAuzwBc5Sjqa2mCRw9K6TdCioKRDsS_qXUwhkLQSCMRSg1schCdl4rQD8qEj7PWBjin-fyHnDm7NnM6akZp59jndG7qV7PrvG8nLBgDIuuA-wAI3"
|
||||||
|
/>
|
||||||
|
<source
|
||||||
|
media="(prefers-color-scheme: light)"
|
||||||
|
srcset="https://api.star-history.com/chart?repos=community-scripts/ProxmoxVE&type=date&legend=top-left&sealed_token=-lUy2KH6pJryUyLCbiWRwFz3ilXMDFVFHm0lJcqh-Hl5e0QNNKjINNcXzULhaZVpBugN_TDaxOawEAuzwBc5Sjqa2mCRw9K6TdCioKRDsS_qXUwhkLQSCMRSg1schCdl4rQD8qEj7PWBjin-fyHnDm7NnM6akZp59jndG7qV7PrvG8nLBgDIuuA-wAI3"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
alt="Star History Chart"
|
||||||
|
src="https://api.star-history.com/chart?repos=community-scripts/ProxmoxVE&type=date&legend=top-left&sealed_token=-lUy2KH6pJryUyLCbiWRwFz3ilXMDFVFHm0lJcqh-Hl5e0QNNKjINNcXzULhaZVpBugN_TDaxOawEAuzwBc5Sjqa2mCRw9K6TdCioKRDsS_qXUwhkLQSCMRSg1schCdl4rQD8qEj7PWBjin-fyHnDm7NnM6akZp59jndG7qV7PrvG8nLBgDIuuA-wAI3"
|
||||||
|
width="700"
|
||||||
|
/>
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
+3
-1
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
RELEASE=$(get_latest_github_release "actualbudget/actual")
|
RELEASE=$(get_latest_github_release "actualbudget/actual")
|
||||||
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
||||||
if check_for_gh_release "actualbudget" "actualbudget/actual"; then
|
if check_for_gh_release "actualbudget" "actualbudget/actual"; then
|
||||||
@@ -39,7 +39,9 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating Actual Budget to ${RELEASE}"
|
msg_info "Updating Actual Budget to ${RELEASE}"
|
||||||
|
$STD npm config set allow-scripts=bcrypt,better-sqlite3,argon2 --location=global
|
||||||
$STD npm update -g @actual-app/sync-server
|
$STD npm update -g @actual-app/sync-server
|
||||||
|
$STD npm rebuild -g
|
||||||
echo "${RELEASE}" >~/.actualbudget
|
echo "${RELEASE}" >~/.actualbudget
|
||||||
msg_ok "Updated Actual Budget to ${RELEASE}"
|
msg_ok "Updated Actual Budget to ${RELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ TURBO
|
|||||||
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
$STD bash ./scripts/set-version.sh "$(cat ~/.affine_app)"
|
||||||
|
export BUILD_TYPE=stable
|
||||||
$STD npm install -g typescript
|
$STD npm install -g typescript
|
||||||
|
|
||||||
$STD yarn affine @affine/native build
|
$STD yarn affine @affine/native build
|
||||||
|
|||||||
+9
-1
@@ -39,7 +39,15 @@ function update_script() {
|
|||||||
/opt/ampache/public/play/.htaccess \
|
/opt/ampache/public/play/.htaccess \
|
||||||
/opt/ampache/advanced-config
|
/opt/ampache/advanced-config
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.4.zip"
|
if ! dpkg -l 2>/dev/null | grep -q "libapache2-mod-php8.5"; then
|
||||||
|
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||||
|
sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \
|
||||||
|
-e 's/post_max_size = .*/post_max_size = 100M/' \
|
||||||
|
-e 's/max_execution_time = .*/max_execution_time = 600/' \
|
||||||
|
-e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.5/apache2/php.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "Ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.5.zip"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
chmod 664 /opt/ampache/public/rest/.htaccess /opt/ampache/public/play/.htaccess
|
chmod 664 /opt/ampache/public/rest/.htaccess /opt/ampache/public/play/.htaccess
|
||||||
|
|||||||
+10
-1
@@ -118,10 +118,19 @@ function update_script() {
|
|||||||
export UV_COMPILE_BYTECODE="1"
|
export UV_COMPILE_BYTECODE="1"
|
||||||
export UV_LINK_MODE="copy"
|
export UV_LINK_MODE="copy"
|
||||||
export UV_NATIVE_TLS="1"
|
export UV_NATIVE_TLS="1"
|
||||||
|
export UV_HTTP_TIMEOUT="300"
|
||||||
export RUSTUP_PERMIT_COPY_RENAME="true"
|
export RUSTUP_PERMIT_COPY_RENAME="true"
|
||||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD uv sync --frozen --no-install-project --no-dev
|
for attempt in 1 2 3; do
|
||||||
|
if [[ $attempt -eq 3 ]]; then
|
||||||
|
$STD uv sync --frozen --no-install-project --no-dev
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
$STD uv sync --frozen --no-install-project --no-dev && break
|
||||||
|
msg_warn "uv sync attempt $attempt failed, retrying..."
|
||||||
|
sleep $((attempt * 15))
|
||||||
|
done
|
||||||
chown -R authentik:authentik /opt/authentik
|
chown -R authentik:authentik /opt/authentik
|
||||||
msg_ok "Updated python server"
|
msg_ok "Updated python server"
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ensure_dependencies libatomic1
|
||||||
|
|
||||||
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
|
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
|
||||||
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c \
|
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c \
|
||||||
--arg target "linux-$(arch_resolve "tgz" "arm64-tgz")" \
|
--arg target "linux-$(arch_resolve "tgz" "arm64-tgz")" \
|
||||||
|
|||||||
+1
-1
@@ -81,7 +81,7 @@ function update_script() {
|
|||||||
msg_info "Configuring Byparr"
|
msg_info "Configuring Byparr"
|
||||||
cd /opt/Byparr
|
cd /opt/Byparr
|
||||||
$STD uv sync --link-mode copy
|
$STD uv sync --link-mode copy
|
||||||
$STD uv run camoufox fetch
|
$STD uv run python -m invisible_playwright fetch
|
||||||
msg_ok "Configured Byparr"
|
msg_ok "Configured Byparr"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
+5
-2
@@ -38,16 +38,19 @@ function update_script() {
|
|||||||
create_backup /opt/calibre-web/app.db \
|
create_backup /opt/calibre-web/app.db \
|
||||||
/opt/calibre-web/data
|
/opt/calibre-web/data
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibre-web*.tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibreweb*.tar.gz"
|
||||||
setup_uv
|
setup_uv
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
cd /opt/calibre-web
|
cd /opt/calibre-web
|
||||||
$STD uv venv --clear /opt/calibre-web/.venv
|
$STD uv venv --clear /opt/calibre-web/.venv
|
||||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
||||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt
|
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
sed -i 's|^ExecStart=.*|ExecStart=/opt/calibre-web/.venv/bin/cps|' /etc/systemd/system/calibre-web.service
|
||||||
|
$STD systemctl daemon-reload
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
+13
-1
@@ -33,7 +33,19 @@ function update_script() {
|
|||||||
systemctl stop cleanuparr
|
systemctl stop cleanuparr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
create_backup /opt/cleanuparr/config
|
if [[ ! -d /etc/cleanuparr ]]; then
|
||||||
|
msg_info "Migrating Configuration to /etc/cleanuparr"
|
||||||
|
mv /opt/cleanuparr/config /etc/cleanuparr
|
||||||
|
mkdir -p /etc/cleanuparr /var/log/cleanuparr
|
||||||
|
rm -rf /etc/cleanuparr/logs
|
||||||
|
sed -i -e 's|^Environment="CONFIG_DIR=.*|Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"|' \
|
||||||
|
-e '/^Environment="CLEANUPARR_CONFIG_PATH=/a Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"' \
|
||||||
|
/etc/systemd/system/cleanuparr.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
msg_ok "Migrated Configuration to /etc/cleanuparr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_backup /etc/cleanuparr
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -34,7 +34,19 @@ function update_script() {
|
|||||||
systemctl stop convertx
|
systemctl stop convertx
|
||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
ensure_dependencies libreoffice-writer
|
ensure_dependencies libreoffice-writer dasel graphicsmagick libemail-outlook-message-perl libheif-examples libjxl-tools resvg
|
||||||
|
|
||||||
|
if ! command -v markitdown &>/dev/null; then
|
||||||
|
setup_uv
|
||||||
|
msg_info "Installing markitdown"
|
||||||
|
export UV_TOOL_BIN_DIR=/usr/local/bin
|
||||||
|
$STD uv tool install "markitdown[all]"
|
||||||
|
msg_ok "Installed markitdown"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v vtracer &>/dev/null; then
|
||||||
|
fetch_and_deploy_gh_release "vtracer" "visioncortex/vtracer" "prebuild" "0.6.4" "/usr/local/bin" "vtracer-$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.gz"
|
||||||
|
fi
|
||||||
|
|
||||||
create_backup /opt/convertx/data
|
create_backup /opt/convertx/data
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ function update_script() {
|
|||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "Crafty-Controller" "crafty-controller/crafty-4" "tarball" "latest" "/opt/crafty-controller/crafty/crafty-4"
|
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "Crafty-Controller" "crafty-controller/crafty-4" "tarball" "latest" "/opt/crafty-controller/crafty/crafty-4"
|
||||||
|
|
||||||
|
chown -R crafty:crafty /opt/crafty-controller
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
msg_info "Updating TemurinJDK"
|
msg_info "Updating TemurinJDK"
|
||||||
@@ -53,7 +54,6 @@ function update_script() {
|
|||||||
msg_ok "Updated TemurinJDK"
|
msg_ok "Updated TemurinJDK"
|
||||||
|
|
||||||
msg_info "Updating Python dependencies"
|
msg_info "Updating Python dependencies"
|
||||||
chown -R crafty:crafty /opt/crafty-controller
|
|
||||||
cd /opt/crafty-controller/crafty/crafty-4
|
cd /opt/crafty-controller/crafty/crafty-4
|
||||||
$STD sudo -u crafty bash -c '
|
$STD sudo -u crafty bash -c '
|
||||||
source /opt/crafty-controller/crafty/.venv/bin/activate
|
source /opt/crafty-controller/crafty/.venv/bin/activate
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
NODE_VERSION="26" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
ensure_dependencies build-essential
|
ensure_dependencies build-essential
|
||||||
|
|
||||||
if command -v cross-seed &>/dev/null; then
|
if command -v cross-seed &>/dev/null; then
|
||||||
|
|||||||
+5
-30
@@ -37,36 +37,11 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
|
if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
|
||||||
msg_info "Updating Portainer"
|
msg_warn "Portainer is now managed by a dedicated addon script and is no longer updated here."
|
||||||
$STD docker pull portainer/portainer-ce:latest
|
echo -e "${TAB}Update/migrate it with:"
|
||||||
$STD docker stop portainer
|
echo -e "${TAB}${TAB}${GN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
|
||||||
$STD docker rm portainer
|
|
||||||
$STD docker volume create portainer_data >/dev/null 2>&1
|
|
||||||
$STD docker run -d \
|
|
||||||
-p 8000:8000 \
|
|
||||||
-p 9443:9443 \
|
|
||||||
--name=portainer \
|
|
||||||
--restart=always \
|
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
||||||
-v portainer_data:/data \
|
|
||||||
portainer/portainer-ce:latest
|
|
||||||
msg_ok "Updated Portainer"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
|
||||||
msg_info "Updating Portainer Agent"
|
|
||||||
$STD docker pull portainer/agent:latest
|
|
||||||
$STD docker stop portainer_agent
|
|
||||||
$STD docker rm portainer_agent
|
|
||||||
$STD docker run -d \
|
|
||||||
-p 9001:9001 \
|
|
||||||
--name=portainer_agent \
|
|
||||||
--restart=always \
|
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
||||||
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
|
|
||||||
portainer/agent
|
|
||||||
msg_ok "Updated Portainer Agent"
|
|
||||||
fi
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
@@ -77,5 +52,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
|
echo -e "${INFO}${YW} Portainer is available as a separate addon. Install it with:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
echo -e "${GATEWAY}${BGN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ function update_script() {
|
|||||||
systemctl stop ersatzTV
|
systemctl stop ersatzTV
|
||||||
msg_ok "Stopped ErsatzTV"
|
msg_ok "Stopped ErsatzTV"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-$(arch_resolve "linux64" "linuxarm64")-gpl-7.1.tar.xz"
|
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-$(arch_resolve "linux64" "linuxarm64")-gpl-8.1.tar.xz"
|
||||||
|
|
||||||
msg_info "Set ErsatzTV-ffmpeg links"
|
msg_info "Set ErsatzTV-ffmpeg links"
|
||||||
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
|
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
|
||||||
|
|||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/fleetdm/fleet
|
||||||
|
|
||||||
|
APP="Fleet"
|
||||||
|
var_tags="${var_tags:-monitoring;device-management;security}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-ubuntu}"
|
||||||
|
var_version="${var_version:-24.04}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /opt/fleet/fleet ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "fleet" "fleetdm/fleet"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop fleet
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "fleet" "fleetdm/fleet" "prebuild" "latest" "/opt/fleet" "fleet_v*_linux.tar.gz"
|
||||||
|
chmod +x /opt/fleet/fleet
|
||||||
|
|
||||||
|
msg_info "Running Database Migrations"
|
||||||
|
set -a && source /opt/fleet/.env && set +a
|
||||||
|
$STD /opt/fleet/fleet prepare db --no-prompt
|
||||||
|
msg_ok "Ran Database Migrations"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start fleet
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
echo -e "${INFO}${YW} Admin Email:${CL} ${BGN}admin@fleet.local${CL}"
|
||||||
|
echo -e "${INFO}${YW} Admin Password:${CL} ${BGN}Check inside the container: cat /opt/fleet/.env${CL}"
|
||||||
@@ -18,6 +18,7 @@ var_nesting="${var_nesting:-1}"
|
|||||||
var_keyctl="${var_keyctl:-1}"
|
var_keyctl="${var_keyctl:-1}"
|
||||||
|
|
||||||
export var_forgejo_instance="${var_forgejo_instance:-}"
|
export var_forgejo_instance="${var_forgejo_instance:-}"
|
||||||
|
export var_forgejo_runner_uuid="${var_forgejo_runner_uuid:-}"
|
||||||
export var_forgejo_runner_token="${var_forgejo_runner_token:-}"
|
export var_forgejo_runner_token="${var_forgejo_runner_token:-}"
|
||||||
export var_runner_labels="${var_runner_labels:-}"
|
export var_runner_labels="${var_runner_labels:-}"
|
||||||
|
|
||||||
@@ -64,6 +65,10 @@ if [[ -n "${mode:-}" ]]; then
|
|||||||
msg_error "var_forgejo_instance is required for unattended installs."
|
msg_error "var_forgejo_instance is required for unattended installs."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
|
||||||
|
msg_error "var_forgejo_runner_uuid is required for unattended installs."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
|
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
|
||||||
msg_error "var_forgejo_runner_token is required for unattended installs."
|
msg_error "var_forgejo_runner_token is required for unattended installs."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://about.gitlab.com/
|
||||||
|
|
||||||
|
APP="GitLab"
|
||||||
|
var_tags="${var_tags:-git;devtools}"
|
||||||
|
var_cpu="${var_cpu:-4}"
|
||||||
|
var_ram="${var_ram:-8192}"
|
||||||
|
var_disk="${var_disk:-40}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/gitlab ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Updating GitLab (Patience)"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y gitlab-ce
|
||||||
|
msg_ok "Updated GitLab"
|
||||||
|
|
||||||
|
msg_info "Reconfiguring GitLab (Patience)"
|
||||||
|
$STD gitlab-ctl reconfigure
|
||||||
|
msg_ok "Reconfigured GitLab"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
echo -e "${INFO}${YW}The initial root password is valid for 24 hours:${CL}"
|
||||||
|
echo -e "${TAB}${DEFAULT}${BGN}cat /etc/gitlab/initial_root_password${CL}"
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ) | Co-Authors: yusing
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/yusing/godoxy
|
||||||
|
|
||||||
|
APP="GoDoxy"
|
||||||
|
var_tags="${var_tags:-reverse-proxy;webserver;network}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /opt/godoxy/godoxy ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "godoxy" "yusing/godoxy"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop godoxy
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup \
|
||||||
|
/opt/godoxy/config \
|
||||||
|
/opt/godoxy/data \
|
||||||
|
/opt/godoxy/error_pages \
|
||||||
|
/etc/godoxy.env \
|
||||||
|
/etc/ssl/godoxy
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "godoxy" "yusing/godoxy" "singlefile" "latest" "/opt/godoxy" "godoxy-linux-$(arch_resolve)"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start godoxy
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}https://${IP}${CL}"
|
||||||
|
echo -e "${INFO}${YW}Login as admin; the generated password is stored in /etc/godoxy.env.${CL}"
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
________ __
|
||||||
|
/ ____/ /__ ___ / /_
|
||||||
|
/ /_ / / _ \/ _ \/ __/
|
||||||
|
/ __/ / / __/ __/ /_
|
||||||
|
/_/ /_/\___/\___/\__/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_______ __ __ __
|
||||||
|
/ ____(_) /_/ / ____ _/ /_
|
||||||
|
/ / __/ / __/ / / __ `/ __ \
|
||||||
|
/ /_/ / / /_/ /___/ /_/ / /_/ /
|
||||||
|
\____/_/\__/_____/\__,_/_.___/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
______ ____
|
||||||
|
/ ____/___ / __ \____ _ ____ __
|
||||||
|
/ / __/ __ \/ / / / __ \| |/_/ / / /
|
||||||
|
/ /_/ / /_/ / /_/ / /_/ /> </ /_/ /
|
||||||
|
\____/\____/_____/\____/_/|_|\__, /
|
||||||
|
/____/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
__ ___ __
|
||||||
|
/ / / (_)____/ /____ _____
|
||||||
|
/ /_/ / / ___/ __/ _ \/ ___/
|
||||||
|
/ __ / (__ ) /_/ __/ /
|
||||||
|
/_/ /_/_/____/\__/\___/_/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
____ _
|
||||||
|
/ _/___ _____ (_)____
|
||||||
|
/ // __ `/ __ \/ / ___/
|
||||||
|
_/ // /_/ / / / / (__ )
|
||||||
|
/___/\__, /_/ /_/_/____/
|
||||||
|
/____/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
__ ___ __ __
|
||||||
|
/ |/ /_ ______ ___ / /_ / /__
|
||||||
|
/ /|_/ / / / / __ `__ \/ __ \/ / _ \
|
||||||
|
/ / / / /_/ / / / / / / /_/ / / __/
|
||||||
|
/_/ /_/\__,_/_/ /_/ /_/_.___/_/\___/
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
_____
|
|
||||||
/ ___/_________ _____ ____ ____ __ __
|
|
||||||
\__ \/ ___/ __ `/ __ \/ __ \/ __ \/ / / /
|
|
||||||
___/ / /__/ /_/ / / / / /_/ / /_/ / /_/ /
|
|
||||||
/____/\___/\__,_/_/ /_/\____/ .___/\__, /
|
|
||||||
/_/ /____/
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_ __ __ __ ____ __ _ _
|
||||||
|
/ | / /__ / /__ ______ _____/ /__/ __ \____ / /_(_)___ ___ (_)___ ___ _____
|
||||||
|
/ |/ / _ \/ __/ | /| / / __ \/ ___/ //_/ / / / __ \/ __/ / __ `__ \/ /_ / / _ \/ ___/
|
||||||
|
/ /| / __/ /_ | |/ |/ / /_/ / / / ,< / /_/ / /_/ / /_/ / / / / / / / / /_/ __/ /
|
||||||
|
/_/ |_/\___/\__/ |__/|__/\____/_/ /_/|_|\____/ .___/\__/_/_/ /_/ /_/_/ /___/\___/_/
|
||||||
|
/_/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_ __ __
|
||||||
|
/ | / /__ _ __/ /_
|
||||||
|
/ |/ / _ \ | /| / / __/
|
||||||
|
/ /| / __/ |/ |/ / /_
|
||||||
|
/_/ |_/\___/|__/|__/\__/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
____ __ _ ___ __ _ _____
|
||||||
|
/ __ \/ /_ _____(_)___/ (_)___ _____ / / (_) _____ / ___/__ ______ _____
|
||||||
|
/ / / / __ \/ ___/ / __ / / __ `/ __ \______/ / / / | / / _ \\__ \/ / / / __ \/ ___/
|
||||||
|
/ /_/ / /_/ (__ ) / /_/ / / /_/ / / / /_____/ /___/ /| |/ / __/__/ / /_/ / / / / /__
|
||||||
|
\____/_.___/____/_/\__,_/_/\__,_/_/ /_/ /_____/_/ |___/\___/____/\__, /_/ /_/\___/
|
||||||
|
/____/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
____ __
|
||||||
|
/ __ \_____/ /_
|
||||||
|
/ / / / ___/ __ \
|
||||||
|
/ /_/ / / / /_/ /
|
||||||
|
\____/_/ /_.___/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
____ __________ ____ _ __
|
||||||
|
/ __ \/ ___/ ___/ / __ )_____(_)___/ /___ ____
|
||||||
|
/ /_/ /\__ \\__ \______/ __ / ___/ / __ / __ `/ _ \
|
||||||
|
/ _, _/___/ /__/ /_____/ /_/ / / / / /_/ / /_/ / __/
|
||||||
|
/_/ |_|/____/____/ /_____/_/ /_/\__,_/\__, /\___/
|
||||||
|
/____/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_____ __ __ __
|
||||||
|
/ ___// /_____ _/ / ______ ______/ /_
|
||||||
|
\__ \/ __/ __ `/ / | /| / / __ `/ ___/ __/
|
||||||
|
___/ / /_/ /_/ / /| |/ |/ / /_/ / / / /_
|
||||||
|
/____/\__/\__,_/_/ |__/|__/\__,_/_/ \__/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_____ __ ___
|
||||||
|
/ ___/__ ______ _____ ____ _____/ /_/ | __________
|
||||||
|
\__ \/ / / / __ `/ __ `/ _ \/ ___/ __/ /| | / ___/ ___/
|
||||||
|
___/ / /_/ / /_/ / /_/ / __(__ ) /_/ ___ |/ / / /
|
||||||
|
/____/\__,_/\__, /\__, /\___/____/\__/_/ |_/_/ /_/
|
||||||
|
/____//____/
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
______ __ __ ___ __
|
||||||
|
/_ __/__ _____/ /___ _/ |/ /___ _/ /____
|
||||||
|
/ / / _ \/ ___/ / __ `/ /|_/ / __ `/ __/ _ \
|
||||||
|
/ / / __(__ ) / /_/ / / / / /_/ / /_/ __/
|
||||||
|
/_/ \___/____/_/\__,_/_/ /_/\__,_/\__/\___/
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
__ ______ __
|
||||||
|
/ /_____ _____ _________ ____ _ __/ __/ /___ _/ /_____
|
||||||
|
/ __/ __ \/ ___/_____/ ___/ __ \/ __ \ | /| / / /_/ / __ `/ //_/ _ \
|
||||||
|
/ /_/ /_/ / / /_____(__ ) / / / /_/ / |/ |/ / __/ / /_/ / ,< / __/
|
||||||
|
\__/\____/_/ /____/_/ /_/\____/|__/|__/_/ /_/\__,_/_/|_|\___/
|
||||||
|
|
||||||
@@ -46,8 +46,11 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Heimdall-Dashboard"
|
msg_info "Updating Heimdall-Dashboard"
|
||||||
cd /opt/Heimdall
|
cd /opt/Heimdall
|
||||||
|
sed -i 's/^APP_ENV=.*/APP_ENV=production/' .env
|
||||||
|
rm -f bootstrap/cache/*.php
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer dump-autoload
|
$STD composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
|
||||||
|
$STD php artisan optimize:clear
|
||||||
msg_ok "Updated Heimdall-Dashboard"
|
msg_ok "Updated Heimdall-Dashboard"
|
||||||
|
|
||||||
msg_info "Restoring Data"
|
msg_info "Restoring Data"
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/asciimoo/hister
|
||||||
|
|
||||||
|
APP="Hister"
|
||||||
|
var_tags="${var_tags:-search;browser-history;personal}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /usr/local/bin/hister ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "hister" "asciimoo/hister"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop hister
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "hister" "asciimoo/hister" "singlefile" "latest" "/usr/local/bin" "hister_*_linux_$(arch_resolve)"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start hister
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:4433${CL}"
|
||||||
+24
-3
@@ -39,15 +39,15 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/homepage/.env /opt/homepage/config
|
create_backup /opt/homepage/.env /opt/homepage/config
|
||||||
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
|
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
msg_info "Updating Homepage (Patience)"
|
msg_info "Updating Homepage (Patience)"
|
||||||
RELEASE=$(get_latest_github_release "gethomepage/homepage")
|
RELEASE=$(get_latest_github_release "gethomepage/homepage")
|
||||||
cd /opt/homepage
|
cd /opt/homepage
|
||||||
echo 'onlyBuiltDependencies=*' >> .npmrc
|
echo 'onlyBuiltDependencies=*' >>.npmrc
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
$STD pnpm update --no-save caniuse-lite
|
$STD pnpm update --no-save caniuse-lite
|
||||||
export NEXT_PUBLIC_VERSION="v$RELEASE"
|
export NEXT_PUBLIC_VERSION="v$RELEASE"
|
||||||
@@ -56,6 +56,27 @@ function update_script() {
|
|||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
BACKUP_DIR=/opt/homepage-assets.backup restore_backup
|
BACKUP_DIR=/opt/homepage-assets.backup restore_backup
|
||||||
|
if ! grep -q 'AUTH' /opt/homepage/.env; then
|
||||||
|
msg_info "Updating .env"
|
||||||
|
cp /opt/homepage/.env /opt/homepage/env.bak
|
||||||
|
cat <<EOF >>/opt/homepage/.env
|
||||||
|
## Optional Authentication
|
||||||
|
# HOMEPAGE_AUTH_ENABLED=true
|
||||||
|
# HOMEPAGE_AUTH_SECRET="$(openssl rand -base64 32)"
|
||||||
|
# HOMEPAGE_EXTERNAL_URL=<your-external-url>
|
||||||
|
## Uncomment below and use strong, unique password for password login
|
||||||
|
# HOMEPAGE_AUTH_PASSWORD=
|
||||||
|
## Uncomment and fill in below for OIDC login
|
||||||
|
# HOMEPAGE_OIDC_ISSUER=
|
||||||
|
# HOMEPAGE_OIDC_CLIENT_ID=
|
||||||
|
# HOMEPAGE_OIDC_CLIENT_SECRET=
|
||||||
|
# HOMEPAGE_OIDC_SCOPE=openid email profile
|
||||||
|
# HOMEPAGE_OIDC_NAME=
|
||||||
|
EOF
|
||||||
|
msg_ok "Updated .env"
|
||||||
|
rm /opt/homepage/env.bak
|
||||||
|
chmod 600 /opt/homepage/.env
|
||||||
|
fi
|
||||||
msg_ok "Updated Homepage"
|
msg_ok "Updated Homepage"
|
||||||
|
|
||||||
msg_info "Starting service"
|
msg_info "Starting service"
|
||||||
|
|||||||
+36
-9
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
# Author: MickLesk (CanbiZ)
|
# Author: MickLesk (CanbiZ) | Co-Author: Tom Frenzel (tomfrenzel)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/danielbrendel/hortusfox-web
|
# Source: https://github.com/danielbrendel/hortusfox-web
|
||||||
|
|
||||||
@@ -34,29 +34,56 @@ function update_script() {
|
|||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up current HortusFox installation"
|
cd /opt/hortusfox
|
||||||
cd /opt
|
if [[ ! -s app/migrations/migrations.list ]]; then
|
||||||
mv /opt/hortusfox/ /opt/hortusfox-backup
|
msg_info "Rebuilding HortusFox migration history"
|
||||||
msg_ok "Backed up current HortusFox installation"
|
local database_tables
|
||||||
|
database_tables="$(mariadb -u root -D hortusfox -NBe "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();")"
|
||||||
|
: >app/migrations/migrations.list
|
||||||
|
local migration migration_file table_name
|
||||||
|
for migration in app/migrations/*.php; do
|
||||||
|
migration_file="${migration##*/}"
|
||||||
|
table_name="${migration_file%.php}"
|
||||||
|
if [[ "$migration_file" == "VersionModel.php" ]] || grep -Fxq "$table_name" <<<"$database_tables"; then
|
||||||
|
php -r 'echo hash("sha512", $argv[1]), PHP_EOL;' -- "$migration_file" >>app/migrations/migrations.list
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
msg_ok "Rebuilt HortusFox migration history"
|
||||||
|
fi
|
||||||
|
if [[ ! -f app/migrations/verhist.json && -f ~/.hortusfox ]]; then
|
||||||
|
printf '["%s"]\n' "$(<~/.hortusfox)" >app/migrations/verhist.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_backup \
|
||||||
|
/opt/hortusfox/.env \
|
||||||
|
/opt/hortusfox/app/migrations/migrations.list \
|
||||||
|
/opt/hortusfox/app/migrations/verhist.json \
|
||||||
|
/opt/hortusfox/public/img \
|
||||||
|
/opt/hortusfox/public/attachments \
|
||||||
|
/opt/hortusfox/public/backup \
|
||||||
|
/opt/hortusfox/public/exports \
|
||||||
|
/opt/hortusfox/public/snd \
|
||||||
|
/opt/hortusfox/public/themes
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
msg_info "Updating HortusFox"
|
msg_info "Updating HortusFox"
|
||||||
cd /opt/hortusfox
|
cd /opt/hortusfox
|
||||||
cp /opt/hortusfox-backup/.env /opt/hortusfox/.env
|
|
||||||
cp -a /opt/hortusfox-backup/public/img/. /opt/hortusfox/public/img/
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev --optimize-autoloader
|
$STD composer install --no-dev --optimize-autoloader
|
||||||
|
$STD php asatru migrate:list
|
||||||
$STD php asatru migrate:upgrade
|
$STD php asatru migrate:upgrade
|
||||||
$STD php asatru plants:attributes
|
|
||||||
$STD php asatru calendar:classes
|
$STD php asatru calendar:classes
|
||||||
|
$STD php asatru plants:attributes
|
||||||
|
$STD php asatru aquashell:config
|
||||||
chown -R www-data:www-data /opt/hortusfox
|
chown -R www-data:www-data /opt/hortusfox
|
||||||
rm -r /opt/hortusfox-backup
|
|
||||||
msg_ok "Updated HortusFox"
|
msg_ok "Updated HortusFox"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Nystik-gh/ignis
|
||||||
|
|
||||||
|
APP="Ignis"
|
||||||
|
var_tags="${var_tags:-notes;obsidian}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-10}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/ignis ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "ignis" "Nystik-gh/ignis"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop ignis
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ignis" "Nystik-gh/ignis" "tarball"
|
||||||
|
|
||||||
|
msg_info "Building Ignis"
|
||||||
|
cd /opt/ignis
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
|
export IGNIS_BUILD="$(cat ~/.ignis)"
|
||||||
|
$STD npm ci --ignore-scripts
|
||||||
|
$STD npm run build
|
||||||
|
$STD npm install -g @electron/asar
|
||||||
|
msg_ok "Built Ignis"
|
||||||
|
|
||||||
|
msg_info "Checking Obsidian Web Assets"
|
||||||
|
OBSIDIAN_VERSION=$(grep -oP 'OBSIDIAN_VERSION=\K[0-9.]+' /opt/ignis/apps/ignis-server/Dockerfile | head -n1)
|
||||||
|
[[ -z "$OBSIDIAN_VERSION" ]] && OBSIDIAN_VERSION="$(cat /opt/ignis_data/obsidian.version 2>/dev/null)"
|
||||||
|
if [[ -n "$OBSIDIAN_VERSION" && "$OBSIDIAN_VERSION" != "$(cat /opt/ignis_data/obsidian.version 2>/dev/null)" ]]; then
|
||||||
|
rm -rf /opt/ignis_data/obsidian-app
|
||||||
|
mkdir -p /opt/ignis_data/obsidian-app
|
||||||
|
curl -fsSL -o /tmp/obsidian.asar.gz "https://github.com/obsidianmd/obsidian-releases/releases/download/v${OBSIDIAN_VERSION}/obsidian-${OBSIDIAN_VERSION}.asar.gz"
|
||||||
|
gunzip -f /tmp/obsidian.asar.gz
|
||||||
|
$STD asar extract /tmp/obsidian.asar /opt/ignis_data/obsidian-app
|
||||||
|
rm -f /tmp/obsidian.asar
|
||||||
|
echo "${OBSIDIAN_VERSION}" >/opt/ignis_data/obsidian.version
|
||||||
|
fi
|
||||||
|
msg_ok "Checked Obsidian Web Assets"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start ignis
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}https://${IP}${CL}"
|
||||||
+10
-1
@@ -214,7 +214,16 @@ EOF
|
|||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
||||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
||||||
$STD mise install
|
mise_ok=0
|
||||||
|
for i in 1 2 3; do
|
||||||
|
$STD mise install && {
|
||||||
|
mise_ok=1
|
||||||
|
break
|
||||||
|
}
|
||||||
|
msg_warn "mise install failed (attempt $i/3) - retrying"
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
[[ "$mise_ok" -eq 1 ]] || exit 1
|
||||||
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
||||||
if ! command -v extism-js >/dev/null 2>&1; then
|
if ! command -v extism-js >/dev/null 2>&1; then
|
||||||
# extism-js ships as a bare gzip-compressed single binary (.gz) that
|
# extism-js ships as a bare gzip-compressed single binary (.gz) that
|
||||||
|
|||||||
+4
-2
@@ -88,8 +88,9 @@ EOF
|
|||||||
$STD corepack disable
|
$STD corepack disable
|
||||||
fi
|
fi
|
||||||
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
||||||
|
# Node 24.19.x crashes better-sqlite3 on cleanup (karakeep-app/karakeep#2989); stay on 22 LTS until upstream reverts.
|
||||||
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
|
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
|
||||||
NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${MODULE_VERSION}" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="corepack,pnpm@${MODULE_VERSION}" setup_nodejs
|
||||||
setup_meilisearch
|
setup_meilisearch
|
||||||
|
|
||||||
msg_info "Updating Karakeep"
|
msg_info "Updating Karakeep"
|
||||||
@@ -101,8 +102,9 @@ EOF
|
|||||||
cd /opt/karakeep/apps/web
|
cd /opt/karakeep/apps/web
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
cd /opt/karakeep/apps/workers
|
cd /opt/karakeep/apps/workers
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm rebuild better-sqlite3
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
cd /opt/karakeep/apps/cli
|
cd /opt/karakeep/apps/cli
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
$STD git -C /opt/LazyLibrarian pull origin master
|
$STD git -C /opt/LazyLibrarian pull origin master
|
||||||
|
$STD pip install --break-system-packages /opt/LazyLibrarian
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
|
|
||||||
msg_info "Starting LazyLibrarian"
|
msg_info "Starting LazyLibrarian"
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ensure_dependencies ipmitool
|
||||||
|
|
||||||
if check_for_gh_release "librenms" "librenms/librenms"; then
|
if check_for_gh_release "librenms" "librenms/librenms"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop php8.4-fpm librenms-scheduler.timer
|
systemctl stop php8.4-fpm librenms-scheduler.timer
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.mumble.info/
|
||||||
|
|
||||||
|
APP="Mumble"
|
||||||
|
var_tags="${var_tags:-voice;chat;gaming}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/mumble/mumble-server.ini ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "mumble" "mumble-voip/mumble"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop mumble-server
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /etc/mumble/mumble-server.ini /var/lib/mumble-server/mumble-server.sqlite
|
||||||
|
|
||||||
|
msg_info "Updating Mumble"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y mumble-server
|
||||||
|
cat <<EOF >~/.mumble
|
||||||
|
$(get_latest_github_release "mumble-voip/mumble")
|
||||||
|
EOF
|
||||||
|
msg_ok "Updated Mumble"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start mumble-server
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Connect using:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}${IP}:64738${CL}"
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Ozark-Connect/NetworkOptimizer
|
||||||
|
|
||||||
|
APP="NetworkOptimizer"
|
||||||
|
var_tags="${var_tags:-network;monitoring;unifi}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-12}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/networkoptimizer ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "networkoptimizer" "Ozark-Connect/NetworkOptimizer"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop networkoptimizer
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/networkoptimizer/networkoptimizer.env
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "networkoptimizer" "Ozark-Connect/NetworkOptimizer" "tarball"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Rebuilding NetworkOptimizer"
|
||||||
|
RID="linux-x64"
|
||||||
|
[[ "$(dpkg --print-architecture)" == "arm64" ]] && RID="linux-arm64"
|
||||||
|
cd /opt/networkoptimizer
|
||||||
|
export MSBUILDDISABLENODEREUSE=1
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
export DOTNET_SYSTEM_NET_DISABLEIPV6=1
|
||||||
|
$STD dotnet publish src/NetworkOptimizer.Web -c Release -r "$RID" --self-contained -o /opt/networkoptimizer/publish
|
||||||
|
chmod +x /opt/networkoptimizer/publish/NetworkOptimizer.Web
|
||||||
|
mkdir -p /opt/networkoptimizer/publish/tools
|
||||||
|
cd /opt/networkoptimizer/src/uwnspeedtest
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $STD go build -trimpath -ldflags "-s -w" -o /opt/networkoptimizer/publish/tools/uwnspeedtest-linux-arm64 .
|
||||||
|
SERVER_ARCH="$(arch_resolve)"
|
||||||
|
if [[ "$SERVER_ARCH" != "arm64" ]]; then
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH="$SERVER_ARCH" $STD go build -trimpath -ldflags "-s -w" -o "/opt/networkoptimizer/publish/tools/uwnspeedtest-linux-${SERVER_ARCH}" .
|
||||||
|
fi
|
||||||
|
msg_ok "Rebuilt NetworkOptimizer"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start networkoptimizer
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:8042${CL}"
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Arubinu
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/fosrl/newt
|
||||||
|
|
||||||
|
APP="Newt"
|
||||||
|
var_tags="${var_tags:-network;tunnel}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/newt/newt.env ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "newt" "fosrl/newt"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop newt
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "newt" "fosrl/newt" "singlefile" "latest" "/opt/newt" "newt_linux_$(arch_resolve)"
|
||||||
|
ln -sf /opt/newt/newt /usr/local/bin/newt
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start newt
|
||||||
|
msg_ok "Started Service"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${INFO}${YW} Check the site status in your Pangolin dashboard.${CL}"
|
||||||
+1
-1
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-yes}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/vrtmrz/obsidian-livesync | https://couchdb.apache.org/
|
||||||
|
|
||||||
|
APP="Obsidian-LiveSync"
|
||||||
|
var_tags="${var_tags:-documents;notes}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /opt/couchdb/etc/local.d/obsidian-livesync.ini ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Stopping CouchDB"
|
||||||
|
systemctl stop couchdb
|
||||||
|
msg_ok "Stopped CouchDB"
|
||||||
|
|
||||||
|
create_backup /var/lib/couchdb /opt/couchdb/etc/local.d/obsidian-livesync.ini /opt/obsidian-livesync/.env
|
||||||
|
|
||||||
|
msg_info "Updating Container OS"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
msg_ok "Updated Container OS"
|
||||||
|
|
||||||
|
systemctl stop couchdb
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting CouchDB"
|
||||||
|
systemctl start couchdb
|
||||||
|
msg_ok "Started CouchDB"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Configure the Self-hosted LiveSync plugin with the credentials in /opt/obsidian-livesync/.env${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:5984/_utils/${CL}"
|
||||||
@@ -43,6 +43,8 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_ok "New version available: ${LATEST}"
|
msg_ok "New version available: ${LATEST}"
|
||||||
|
|
||||||
|
NODE_VERSION="26" setup_nodejs
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop omniroute
|
systemctl stop omniroute
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="v7.3.0"
|
RELEASE="v7.4.0"
|
||||||
if check_for_gh_release "OpenCloud" "opencloud-eu/opencloud" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
if check_for_gh_release "OpenCloud" "opencloud-eu/opencloud" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||||
msg_info "Stopping services"
|
msg_info "Stopping services"
|
||||||
systemctl stop opencloud opencloud-wopi
|
systemctl stop opencloud opencloud-wopi
|
||||||
|
|||||||
+8
-1
@@ -114,7 +114,14 @@ EOF
|
|||||||
|
|
||||||
msg_info "Updating Open WebUI via uv"
|
msg_info "Updating Open WebUI via uv"
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
$STD uv tool install --force --python 3.12 --constraint <(echo "numba>=0.60") open-webui[all]
|
OWUI_PYTHON="/root/.local/share/uv/tools/open-webui/bin/python3.12"
|
||||||
|
OTEL_ARGS=()
|
||||||
|
if [[ -x "$OWUI_PYTHON" ]]; then
|
||||||
|
while IFS= read -r pkg; do
|
||||||
|
OTEL_ARGS+=(--with "$pkg")
|
||||||
|
done < <(uv pip list --python "$OWUI_PYTHON" --format freeze 2>/dev/null | grep -i '^opentelemetry-' | cut -d= -f1)
|
||||||
|
fi
|
||||||
|
$STD uv tool install --force --python 3.12 --constraint <(echo "numba>=0.60") "${OTEL_ARGS[@]}" open-webui[all]
|
||||||
systemctl restart open-webui
|
systemctl restart open-webui
|
||||||
msg_ok "Updated Open WebUI"
|
msg_ok "Updated Open WebUI"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: angusmaul
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://orb.net/
|
||||||
|
|
||||||
|
APP="Orb"
|
||||||
|
var_tags="${var_tags:-network;monitoring}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if ! dpkg -s orb >/dev/null 2>&1; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 233
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Updating Orb"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt install -y --only-upgrade orb
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}To link the sensor to your orb account run:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}pct exec ${CTID} -- runuser -u orb -- orb link${CL}"
|
||||||
@@ -17,6 +17,9 @@ var_arm64="${var_arm64:-yes}"
|
|||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_tun="${var_tun:-1}"
|
var_tun="${var_tun:-1}"
|
||||||
|
|
||||||
|
export var_pangolin_url="${var_pangolin_url:-}"
|
||||||
|
export var_pangolin_email="${var_pangolin_email:-}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
|
|||||||
+9
-7
@@ -42,7 +42,7 @@ function update_script() {
|
|||||||
echo -e ""
|
echo -e ""
|
||||||
msg_custom "🔄" "Migration required to new data structure (/opt/paperless_data/)"
|
msg_custom "🔄" "Migration required to new data structure (/opt/paperless_data/)"
|
||||||
msg_custom "📖" "Please follow the migration guide:"
|
msg_custom "📖" "Please follow the migration guide:"
|
||||||
echo -e "${GATEWAY}${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/9223${CL}"
|
echo -e "${GATEWAY}${BGN}https://github.com/community-scripts/ProxmoxVE/pull/9223${CL}"
|
||||||
echo -e ""
|
echo -e ""
|
||||||
msg_custom "⚠️" "Update aborted. Please migrate your data first."
|
msg_custom "⚠️" "Update aborted. Please migrate your data first."
|
||||||
exit 253
|
exit 253
|
||||||
@@ -65,7 +65,7 @@ function update_script() {
|
|||||||
read -rp "Do you want to continue with the update? (y/N): " MIGRATE
|
read -rp "Do you want to continue with the update? (y/N): " MIGRATE
|
||||||
echo
|
echo
|
||||||
if [[ ! "$MIGRATE" =~ ^[Yy]$ ]]; then
|
if [[ ! "$MIGRATE" =~ ^[Yy]$ ]]; then
|
||||||
msg_info "Update aborted. Decrypt all documents before upgrading to v3."
|
msg_custom "⚠️" "Update aborted. Decrypt all documents before upgrading to v3."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -165,7 +165,9 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Paperless-ngx"
|
msg_info "Updating Paperless-ngx"
|
||||||
if ((BRIDGE_UPDATE == 0)); then
|
if ((BRIDGE_UPDATE == 0)); then
|
||||||
sed -i 's|^ExecStart=.*|ExecStart=uv run -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application"|' /etc/systemd/system/paperless-webserver.service
|
sed -i 's|^ExecStart=.*|ExecStart=uv run --no-sync -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application"|' /etc/systemd/system/paperless-webserver.service
|
||||||
|
grep -q "document_index reindex" /etc/systemd/system/paperless-webserver.service ||
|
||||||
|
sed -i '/^ExecStart=/i ExecStartPre=uv run -- python manage.py document_index reindex --if-needed --no-progress-bar' /etc/systemd/system/paperless-webserver.service
|
||||||
$STD systemctl daemon-reload
|
$STD systemctl daemon-reload
|
||||||
fi
|
fi
|
||||||
cd /opt/paperless
|
cd /opt/paperless
|
||||||
@@ -205,10 +207,10 @@ function update_script() {
|
|||||||
msg_ok "Backup completed to $BACKUP_DIR"
|
msg_ok "Backup completed to $BACKUP_DIR"
|
||||||
|
|
||||||
declare -A PATCHES=(
|
declare -A PATCHES=(
|
||||||
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
|
["paperless-consumer.service"]="ExecStart=uv run --no-sync -- python manage.py document_consumer"
|
||||||
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
|
["paperless-scheduler.service"]="ExecStart=uv run --no-sync -- celery --app paperless beat --loglevel INFO"
|
||||||
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
|
["paperless-task-queue.service"]="ExecStart=uv run --no-sync -- celery --app paperless worker --loglevel INFO"
|
||||||
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
|
["paperless-webserver.service"]="ExecStart=uv run --no-sync -- granian --interface asgi --ws \"paperless.asgi:application\""
|
||||||
)
|
)
|
||||||
|
|
||||||
for svc in "${!PATCHES[@]}"; do
|
for svc in "${!PATCHES[@]}"; do
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ function update_script() {
|
|||||||
create_backup /opt/passwordpusher/storage /opt/passwordpusher/.env.production
|
create_backup /opt/passwordpusher/storage /opt/passwordpusher/.env.production
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "passwordpusher" "pglombardo/PasswordPusher" "tarball"
|
||||||
|
RUBY_VERSION="$(cat /opt/passwordpusher/.ruby-version)" RUBY_INSTALL_RAILS="false" setup_ruby
|
||||||
|
|
||||||
msg_info "Installing Gem Dependencies"
|
msg_info "Installing Gem Dependencies"
|
||||||
cd /opt/passwordpusher
|
cd /opt/passwordpusher
|
||||||
|
|||||||
+4
-3
@@ -50,16 +50,17 @@ function update_script() {
|
|||||||
cp -a /opt/pelican-panel/.env /opt/backup
|
cp -a /opt/pelican-panel/.env /opt/backup
|
||||||
mkdir -p /opt/backup/storage/app/
|
mkdir -p /opt/backup/storage/app/
|
||||||
cp -a /opt/pelican-panel/storage/app/public /opt/backup/storage/app/
|
cp -a /opt/pelican-panel/storage/app/public /opt/backup/storage/app/
|
||||||
|
|
||||||
SQLITE_INSTALL=$(ls /opt/pelican-panel/database/*.sqlite 1>/dev/null 2>&1 && echo "true" || echo "false")
|
SQLITE_INSTALL=$(ls /opt/pelican-panel/database/*.sqlite 1>/dev/null 2>&1 && echo "true" || echo "false")
|
||||||
$SQLITE_INSTALL && cp -r /opt/pelican-panel/database/*.sqlite /opt/backup
|
$SQLITE_INSTALL && cp -r /opt/pelican-panel/database/*.sqlite /opt/backup
|
||||||
|
|
||||||
find /opt/pelican-panel -mindepth 1 -maxdepth 1 ! -name 'backup' ! -name 'plugins' -exec rm -rf {} +
|
find /opt/pelican-panel -mindepth 1 -maxdepth 1 ! -name 'backup' ! -name 'plugins' -exec rm -rf {} +
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "pelican-panel" "pelican-dev/panel" "prebuild" "latest" "/opt/pelican-panel" "panel.tar.gz"
|
fetch_and_deploy_gh_release "pelican-panel" "pelican-dev/panel" "prebuild" "latest" "/opt/pelican-panel" "panel.tar.gz"
|
||||||
|
|
||||||
msg_info "Updating Pelican Panel"
|
msg_info "Updating Pelican Panel"
|
||||||
cp -a /opt/backup/.env /opt/pelican-panel/
|
cp -a /opt/backup/.env /opt/pelican-panel/
|
||||||
|
grep -q "^APP_URL=http://panel.test$" /opt/pelican-panel/.env && sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" /opt/pelican-panel/.env
|
||||||
$SQLITE_INSTALL && mv /opt/backup/*.sqlite /opt/pelican-panel/database/
|
$SQLITE_INSTALL && mv /opt/backup/*.sqlite /opt/pelican-panel/database/
|
||||||
cp -a /opt/backup/storage/app/public /opt/pelican-panel/storage/app/
|
cp -a /opt/backup/storage/app/public /opt/pelican-panel/storage/app/
|
||||||
|
|
||||||
|
|||||||
+14
-3
@@ -30,13 +30,26 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f /opt/poweradmin/powerdns.db ]]; then
|
||||||
|
msg_info "Moving PowerDNS database out of the web root"
|
||||||
|
systemctl stop pdns apache2
|
||||||
|
mkdir -p /var/lib/powerdns
|
||||||
|
mv /opt/poweradmin/powerdns.db /var/lib/powerdns/powerdns.db
|
||||||
|
sed -i 's#/opt/poweradmin/powerdns.db#/var/lib/powerdns/powerdns.db#' \
|
||||||
|
/etc/powerdns/pdns.d/gsqlite3.conf /opt/poweradmin/config/settings.php
|
||||||
|
chown pdns:pdns /var/lib/powerdns/powerdns.db
|
||||||
|
chmod 664 /var/lib/powerdns/powerdns.db
|
||||||
|
systemctl start pdns apache2
|
||||||
|
msg_ok "Moved PowerDNS database out of the web root"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Updating PowerDNS"
|
msg_info "Updating PowerDNS"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt install -y --only-upgrade pdns-server pdns-backend-sqlite3
|
$STD apt install -y --only-upgrade pdns-server pdns-backend-sqlite3
|
||||||
msg_ok "Updated PowerDNS"
|
msg_ok "Updated PowerDNS"
|
||||||
|
|
||||||
if check_for_gh_release "poweradmin" "poweradmin/poweradmin"; then
|
if check_for_gh_release "poweradmin" "poweradmin/poweradmin"; then
|
||||||
create_backup /opt/poweradmin/config/settings.php /opt/poweradmin/powerdns.db
|
create_backup /opt/poweradmin/config/settings.php
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
|
||||||
|
|
||||||
@@ -46,8 +59,6 @@ function update_script() {
|
|||||||
rm -rf /opt/poweradmin/install
|
rm -rf /opt/poweradmin/install
|
||||||
chown -R www-data:pdns /opt/poweradmin
|
chown -R www-data:pdns /opt/poweradmin
|
||||||
chmod 775 /opt/poweradmin
|
chmod 775 /opt/poweradmin
|
||||||
chown pdns:pdns /opt/poweradmin/powerdns.db
|
|
||||||
chmod 664 /opt/poweradmin/powerdns.db
|
|
||||||
msg_ok "Updated Poweradmin"
|
msg_ok "Updated Poweradmin"
|
||||||
|
|
||||||
msg_info "Restarting Services"
|
msg_info "Restarting Services"
|
||||||
|
|||||||
+27
-16
@@ -28,27 +28,37 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
setup_mariadb
|
|
||||||
|
if [[ -f /opt/projectsend/includes/sys.config.php ]]; then
|
||||||
|
msg_error "This container runs ProjectSend Legacy (pre-2.0)."
|
||||||
|
msg_error "2.0 is a new application, not an update - there is no in-place upgrade."
|
||||||
|
msg_error "Set up a fresh ProjectSend container and use projectsend/v1-migration-tool to bring your data across."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "projectsend" "projectsend/projectsend"; then
|
if check_for_gh_release "projectsend" "projectsend/projectsend"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Services"
|
||||||
systemctl stop apache2
|
systemctl stop nginx projectsend-worker
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
php_ver=$(php -v | head -n 1 | awk '{print $2}')
|
create_backup /opt/projectsend/.env /opt/projectsend/storage/app/files
|
||||||
if [[ ! $php_ver == "8.4"* ]]; then
|
|
||||||
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
|
|
||||||
fi
|
|
||||||
|
|
||||||
mv /opt/projectsend/includes/sys.config.php /opt/sys.config.php
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend"
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
|
|
||||||
mv /opt/sys.config.php /opt/projectsend/includes/sys.config.php
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Updating ProjectSend"
|
||||||
|
cd /opt/projectsend
|
||||||
chown -R www-data:www-data /opt/projectsend
|
chown -R www-data:www-data /opt/projectsend
|
||||||
chmod -R 775 /opt/projectsend
|
chmod -R 775 /opt/projectsend/storage /opt/projectsend/bootstrap/cache
|
||||||
|
$STD sudo -u www-data php artisan migrate --force
|
||||||
|
$STD sudo -u www-data php artisan projectsend:ensure-roles
|
||||||
|
$STD sudo -u www-data php artisan optimize:clear
|
||||||
|
msg_ok "Updated ProjectSend"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Services"
|
||||||
systemctl start apache2
|
systemctl start nginx projectsend-worker
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
@@ -61,4 +71,5 @@ description
|
|||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}/install for the initial setup${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
echo -e "${INFO}${YW}Admin credentials saved to ~/projectsend.creds${CL}"
|
||||||
|
|||||||
+16
-4
@@ -35,22 +35,34 @@ function update_script() {
|
|||||||
systemctl stop pulse*.service
|
systemctl stop pulse*.service
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
if [[ -f /opt/pulse/pulse ]]; then
|
if ! CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-$(arch_resolve).tar.gz"; then
|
||||||
rm -f /opt/pulse/pulse
|
msg_error "Download or deployment failed - check network connectivity and GitHub API availability"
|
||||||
|
if systemctl start pulse 2>/dev/null || systemctl start pulse-backend 2>/dev/null; then
|
||||||
|
msg_ok "Restarted the previously installed ${APP}"
|
||||||
|
else
|
||||||
|
msg_error "${APP} could not be restarted - reinstall it or restore the container from a backup"
|
||||||
|
fi
|
||||||
|
exit 250
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-$(arch_resolve).tar.gz"
|
|
||||||
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
|
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
|
||||||
mkdir -p /etc/pulse
|
mkdir -p /etc/pulse
|
||||||
chown pulse:pulse /etc/pulse
|
chown pulse:pulse /etc/pulse
|
||||||
chown -R pulse:pulse /opt/pulse
|
chown -R pulse:pulse /opt/pulse
|
||||||
chmod 700 /etc/pulse
|
chmod 700 /etc/pulse
|
||||||
|
UNIT_WAS_ENABLED=0
|
||||||
if [[ -f "$SERVICE_PATH"/pulse-backend.service ]]; then
|
if [[ -f "$SERVICE_PATH"/pulse-backend.service ]]; then
|
||||||
|
if [[ $(systemctl is-enabled pulse-backend) == enabled ]]; then
|
||||||
|
UNIT_WAS_ENABLED=1
|
||||||
|
fi
|
||||||
|
systemctl disable -q pulse-backend.service 2>/dev/null || true
|
||||||
mv "$SERVICE_PATH"/pulse-backend.service "$SERVICE_PATH"/pulse.service
|
mv "$SERVICE_PATH"/pulse-backend.service "$SERVICE_PATH"/pulse.service
|
||||||
fi
|
fi
|
||||||
sed -i -e 's|pulse/pulse|pulse/bin/pulse|' \
|
sed -i -e 's|pulse/pulse|pulse/bin/pulse|' \
|
||||||
-e 's/^Environment="API.*$//' "$SERVICE_PATH"/pulse.service
|
-e 's/^Environment="API.*$//' "$SERVICE_PATH"/pulse.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
if [[ "$UNIT_WAS_ENABLED" == "1" ]]; then
|
||||||
|
systemctl enable -q pulse
|
||||||
|
fi
|
||||||
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
|
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
|
||||||
usermod -s /usr/sbin/nologin pulse
|
usermod -s /usr/sbin/nologin pulse
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
# Author: vhsdream | MickLesk (CanbiZ)
|
# Author: vhsdream | MickLesk (CanbiZ)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://rxresume.org | Github: https://github.com/amruthpillai/reactive-resume
|
# Source: https://rxresu.me/ | Github: https://github.com/amruthpillai/reactive-resume
|
||||||
|
|
||||||
APP="Reactive-Resume"
|
APP="Reactive-Resume"
|
||||||
var_tags="${var_tags:-documents}"
|
var_tags="${var_tags:-documents}"
|
||||||
@@ -45,7 +45,6 @@ function update_script() {
|
|||||||
msg_info "Updating Reactive Resume (Patience)"
|
msg_info "Updating Reactive Resume (Patience)"
|
||||||
cd /opt/reactive-resume
|
cd /opt/reactive-resume
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
|
||||||
corepack prepare --activate
|
corepack prepare --activate
|
||||||
export CI="true"
|
export CI="true"
|
||||||
export NODE_ENV="production"
|
export NODE_ENV="production"
|
||||||
|
|||||||
@@ -223,6 +223,8 @@ http {
|
|||||||
proxy_pass $upstream_url;
|
proxy_pass $upstream_url;
|
||||||
proxy_set_header Host $proxy_host;
|
proxy_set_header Host $proxy_host;
|
||||||
proxy_set_header User-Agent "Reitti/1.0";
|
proxy_set_header User-Agent "Reitti/1.0";
|
||||||
|
proxy_ssl_server_name on;
|
||||||
|
proxy_ssl_name $proxy_host;
|
||||||
proxy_cache tiles;
|
proxy_cache tiles;
|
||||||
proxy_cache_key $upstream_url;
|
proxy_cache_key $upstream_url;
|
||||||
proxy_cache_valid 200 30d;
|
proxy_cache_valid 200 30d;
|
||||||
|
|||||||
@@ -30,6 +30,12 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ ! -x /usr/bin/7zz || ! -x /usr/bin/bsdtar ]]; then
|
||||||
|
msg_info "Installing Archive Tools"
|
||||||
|
$STD apt install -y 7zip-standalone libarchive-tools
|
||||||
|
msg_ok "Installed Archive Tools"
|
||||||
|
fi
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "romm" "rommapp/romm"; then
|
if check_for_gh_release "romm" "rommapp/romm"; then
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://rss-bridge.org/
|
||||||
|
|
||||||
|
APP="RSS-Bridge"
|
||||||
|
var_tags="${var_tags:-rss;feed;bridge}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/rss-bridge ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "rss-bridge" "RSS-Bridge/rss-bridge"; then
|
||||||
|
create_backup /opt/rss-bridge/config.ini.php
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rss-bridge" "RSS-Bridge/rss-bridge" "tarball"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Updating Application"
|
||||||
|
cd /opt/rss-bridge
|
||||||
|
$STD composer install --no-dev --optimize-autoloader
|
||||||
|
chown -R www-data:www-data /opt/rss-bridge
|
||||||
|
systemctl restart caddy
|
||||||
|
msg_ok "Updated Application"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
+1
-1
@@ -36,7 +36,7 @@ function update_script() {
|
|||||||
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
sed -i "s/^\(Pin: version \).*/\1${RELEASE}/" /etc/apt/preferences.d/salt-pin-1001
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt upgrade -y
|
$STD apt upgrade -y
|
||||||
echo "${RELEASE}" >/~.salt
|
echo "${RELEASE}" >~/.salt
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ensure_dependencies git
|
||||||
if check_for_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness"; then
|
if check_for_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop sparkyfitness-server nginx
|
systemctl stop sparkyfitness-server nginx
|
||||||
|
|||||||
+3
-5
@@ -35,18 +35,16 @@ function update_script() {
|
|||||||
systemctl stop split-pro
|
systemctl stop split-pro
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up Data"
|
create_backup /opt/split-pro/.env
|
||||||
cp /opt/split-pro/.env /opt/split-pro.env
|
|
||||||
msg_ok "Backed up Data"
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "split-pro" "oss-apps/split-pro" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "split-pro" "oss-apps/split-pro" "tarball"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
msg_info "Building Application"
|
msg_info "Building Application"
|
||||||
cd /opt/split-pro
|
cd /opt/split-pro
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
cp /opt/split-pro.env /opt/split-pro/.env
|
|
||||||
rm -f /opt/split-pro.env
|
|
||||||
ln -sf /opt/split-pro_data/uploads /opt/split-pro/uploads
|
ln -sf /opt/split-pro_data/uploads /opt/split-pro/uploads
|
||||||
$STD pnpm exec prisma migrate deploy
|
$STD pnpm exec prisma migrate deploy
|
||||||
msg_ok "Built Application"
|
msg_ok "Built Application"
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/stalwartlabs/stalwart
|
||||||
|
|
||||||
|
APP="Stalwart"
|
||||||
|
var_tags="${var_tags:-mail;smtp;imap}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/stalwart ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "stalwart" "stalwartlabs/stalwart"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop stalwart
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "stalwart" "stalwartlabs/stalwart" "prebuild" "latest" "/opt/stalwart" "stalwart-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz"
|
||||||
|
chmod +x /opt/stalwart/stalwart
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start stalwart
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080/admin${CL}"
|
||||||
|
echo -e "${INFO}${YW}The bootstrap admin password was printed to the service log:${CL}"
|
||||||
|
echo -e "${TAB}${DEFAULT}${BGN}journalctl -u stalwart | grep -A8 'bootstrap mode'${CL}"
|
||||||
+14
-2
@@ -43,8 +43,20 @@ function update_script() {
|
|||||||
find /usr/lib -name "libicudata.so.*" -exec patchelf --clear-execstack {} \; || true
|
find /usr/lib -name "libicudata.so.*" -exec patchelf --clear-execstack {} \; || true
|
||||||
msg_ok "Patched Native Libraries"
|
msg_ok "Patched Native Libraries"
|
||||||
|
|
||||||
|
if [[ -f /etc/systemd/system/libreoffice-listener.service ]]; then
|
||||||
|
msg_info "Removing Conflicting LibreOffice Listener"
|
||||||
|
systemctl disable -q --now libreoffice-listener
|
||||||
|
rm -f /etc/systemd/system/libreoffice-listener.service
|
||||||
|
sed -i '/^Requires=libreoffice-listener.service$/d' /etc/systemd/system/stirlingpdf.service /etc/systemd/system/unoserver.service
|
||||||
|
sed -i 's/^After=syslog.target network.target libreoffice-listener.service$/After=syslog.target network.target unoserver.service/' /etc/systemd/system/stirlingpdf.service
|
||||||
|
sed -i 's/^After=libreoffice-listener.service$/After=network.target/' /etc/systemd/system/unoserver.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl reset-failed libreoffice-listener.service 2>/dev/null || true
|
||||||
|
msg_ok "Removed Conflicting LibreOffice Listener"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop stirlingpdf libreoffice-listener unoserver
|
systemctl stop stirlingpdf unoserver
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
if [[ -f ~/.Stirling-PDF-login ]]; then
|
if [[ -f ~/.Stirling-PDF-login ]]; then
|
||||||
@@ -59,7 +71,7 @@ function update_script() {
|
|||||||
msg_ok "Font Cache Updated"
|
msg_ok "Font Cache Updated"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start stirlingpdf libreoffice-listener unoserver
|
systemctl start unoserver stirlingpdf
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/giuseppe99barchetta/SuggestArr
|
||||||
|
|
||||||
|
APP="SuggestArr"
|
||||||
|
var_tags="${var_tags:-arr;media}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/suggestarr ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "suggestarr" "giuseppe99barchetta/SuggestArr"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop suggestarr
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "suggestarr" "giuseppe99barchetta/SuggestArr" "tarball"
|
||||||
|
|
||||||
|
msg_info "Building Frontend"
|
||||||
|
cd /opt/suggestarr/client
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
mkdir -p /opt/suggestarr/static
|
||||||
|
cp -r /opt/suggestarr/client/dist/* /opt/suggestarr/static/
|
||||||
|
cp -r /opt/suggestarr/client/node_modules/swagger-ui-dist /opt/suggestarr/static/swagger-ui
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
|
msg_info "Updating Python Environment"
|
||||||
|
cd /opt/suggestarr
|
||||||
|
$STD uv venv --python 3.12 /opt/suggestarr/.venv
|
||||||
|
$STD uv pip install --python /opt/suggestarr/.venv -r /opt/suggestarr/api_service/requirements.txt
|
||||||
|
msg_ok "Updated Python Environment"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start suggestarr
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||||
+38
-10
@@ -112,14 +112,33 @@ EOF
|
|||||||
msg_ok "Stopped Termix"
|
msg_ok "Stopped Termix"
|
||||||
|
|
||||||
msg_info "Migrating Configuration"
|
msg_info "Migrating Configuration"
|
||||||
if [[ ! -f /opt/termix/.env ]]; then
|
mkdir -p /opt/termix/db/data
|
||||||
cat <<EOF >/opt/termix/.env
|
|
||||||
|
if [[ -f /opt/termix/data/db.sqlite.encrypted && ! -f /opt/termix/db/data/db.sqlite.encrypted ]]; then
|
||||||
|
cp -a /opt/termix/data/db.sqlite.encrypted /opt/termix/db/data/db.sqlite.encrypted
|
||||||
|
[[ -f /opt/termix/data/db.sqlite.encrypted.meta ]] &&
|
||||||
|
cp -a /opt/termix/data/db.sqlite.encrypted.meta /opt/termix/db/data/db.sqlite.encrypted.meta
|
||||||
|
[[ -f /opt/termix/data/db.sqlite ]] &&
|
||||||
|
cp -a /opt/termix/data/db.sqlite /opt/termix/db/data/db.sqlite
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f /opt/termix/data/.env && ! -f /opt/termix/db/data/.env ]]; then
|
||||||
|
cp -a /opt/termix/data/.env /opt/termix/db/data/.env
|
||||||
|
fi
|
||||||
|
|
||||||
|
for sub in ssl session_logs session_recordings acme-webroot certbot uploads; do
|
||||||
|
if [[ -d /opt/termix/data/$sub && ! -d /opt/termix/db/data/$sub ]]; then
|
||||||
|
cp -a "/opt/termix/data/$sub" "/opt/termix/db/data/$sub"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cat <<EOF >/opt/termix/.env
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
DATA_DIR=/opt/termix/data
|
DATA_DIR=/opt/termix/db/data
|
||||||
GUACD_HOST=127.0.0.1
|
GUACD_HOST=127.0.0.1
|
||||||
GUACD_PORT=4822
|
GUACD_PORT=4822
|
||||||
EOF
|
EOF
|
||||||
fi
|
|
||||||
if ! grep -q "EnvironmentFile" /etc/systemd/system/termix.service 2>/dev/null; then
|
if ! grep -q "EnvironmentFile" /etc/systemd/system/termix.service 2>/dev/null; then
|
||||||
cat <<EOF >/etc/systemd/system/termix.service
|
cat <<EOF >/etc/systemd/system/termix.service
|
||||||
[Unit]
|
[Unit]
|
||||||
@@ -143,7 +162,11 @@ EOF
|
|||||||
fi
|
fi
|
||||||
msg_ok "Migrated Configuration"
|
msg_ok "Migrated Configuration"
|
||||||
|
|
||||||
create_backup /opt/termix/data /opt/termix/uploads
|
create_backup \
|
||||||
|
/opt/termix/db/data \
|
||||||
|
/opt/termix/data \
|
||||||
|
/opt/termix/uploads \
|
||||||
|
/opt/termix/.env
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
|
||||||
|
|
||||||
@@ -158,10 +181,10 @@ EOF
|
|||||||
/opt/termix/db/data
|
/opt/termix/db/data
|
||||||
msg_ok "Recreated Directories"
|
msg_ok "Recreated Directories"
|
||||||
|
|
||||||
if [[ -f /opt/termix/data/db.sqlite.encrypted && ! -f /opt/termix/db/data/db.sqlite.encrypted ]]; then
|
if [[ -f /opt/termix/db/data/db.sqlite.encrypted && ! -f /opt/termix/db/data/.env ]]; then
|
||||||
msg_info "Migrating Database to new layout"
|
msg_error "Encrypted database restored without its keys (/opt/termix/db/data/.env is missing)"
|
||||||
cp -a /opt/termix/data/db.sqlite.encrypted /opt/termix/db/data/db.sqlite.encrypted
|
msg_custom "🛟" "Restore the container from a backup and report this at https://github.com/community-scripts/ProxmoxVE/issues"
|
||||||
msg_ok "Migrated Database to new layout"
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
@@ -237,7 +260,12 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting Termix"
|
msg_info "Starting Termix"
|
||||||
systemctl start termix
|
systemctl daemon-reload
|
||||||
|
if ! systemctl start termix; then
|
||||||
|
msg_error "Termix failed to start"
|
||||||
|
journalctl -u termix -n 30 --no-pager || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
msg_ok "Started Termix"
|
msg_ok "Started Termix"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/teslamate-org/teslamate
|
||||||
|
|
||||||
|
APP="TeslaMate"
|
||||||
|
var_tags="${var_tags:-car;monitoring}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-16}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/teslamate ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "teslamate" "teslamate-org/teslamate"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop teslamate
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "teslamate" "teslamate-org/teslamate" "tarball"
|
||||||
|
|
||||||
|
msg_info "Building TeslaMate (Patience)"
|
||||||
|
cd /opt/teslamate
|
||||||
|
export MIX_ENV=prod
|
||||||
|
$STD mix local.hex --force
|
||||||
|
$STD mix local.rebar --force
|
||||||
|
$STD mix deps.get --only prod
|
||||||
|
$STD npm install --prefix ./assets
|
||||||
|
$STD npm run deploy --prefix ./assets
|
||||||
|
$STD mix do phx.digest, release --overwrite
|
||||||
|
msg_ok "Built TeslaMate"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start teslamate
|
||||||
|
systemctl restart grafana-server
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:4000${CL}"
|
||||||
|
echo -e "${INFO}${YW}Grafana dashboards (admin/admin):${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: KernelSailor
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://snowflake.torproject.org/
|
||||||
|
|
||||||
|
APP="tor-snowflake"
|
||||||
|
var_tags="${var_tags:-privacy;proxy;tor}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_nesting="${var_nesting:-0}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
msg_info "Updating Container OS"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
msg_ok "Updated Container OS"
|
||||||
|
|
||||||
|
if [[ ! -d /opt/tor-snowflake ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if GITLAB_URL="https://gitlab.torproject.org" check_for_gl_release "tor-snowflake" "tpo/anti-censorship/pluggable-transports/snowflake"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop snowflake-proxy
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 GITLAB_URL="https://gitlab.torproject.org" fetch_and_deploy_gl_release "tor-snowflake" "tpo/anti-censorship/pluggable-transports/snowflake" "tarball"
|
||||||
|
|
||||||
|
msg_info "Building Snowflake"
|
||||||
|
cd /opt/tor-snowflake/proxy
|
||||||
|
$STD go build -o snowflake-proxy .
|
||||||
|
msg_ok "Built Snowflake"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start snowflake-proxy
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
|
||||||
+2
-3
@@ -46,8 +46,7 @@ function update_script() {
|
|||||||
[[ "$CONFIRM2" =~ ^[yY]$ ]] || exit 0
|
[[ "$CONFIRM2" =~ ^[yY]$ ]] || exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="v2.3.0"
|
if check_for_gh_release "vikunja" "go-vikunja/vikunja"; then
|
||||||
if check_for_gh_release "vikunja" "go-vikunja/vikunja" "${RELEASE}" "v2.4.0 is killed at startup by the systemd SystemCallFilter shipped in the .deb (upstream go-vikunja/vikunja#3252); pinned until a fixed release is out"; then
|
|
||||||
echo
|
echo
|
||||||
msg_warn "The package update may include config file changes."
|
msg_warn "The package update may include config file changes."
|
||||||
echo -e "${TAB}${YW}How do you want to handle /etc/vikunja/config.yml?${CL}"
|
echo -e "${TAB}${YW}How do you want to handle /etc/vikunja/config.yml?${CL}"
|
||||||
@@ -66,7 +65,7 @@ function update_script() {
|
|||||||
systemctl stop vikunja
|
systemctl stop vikunja
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "${RELEASE}" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "latest" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||||
$STD systemctl daemon-reload
|
$STD systemctl daemon-reload
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
+125
-21
@@ -25,32 +25,149 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /opt/wanderer/start.sh ]]; then
|
if [[ ! -d /opt/wanderer/source && ! -d /opt/wanderer/db ]]; then
|
||||||
msg_error "No wanderer Installation Found!"
|
msg_error "No wanderer Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/meilisearch.service ]]; then
|
||||||
|
msg_info "Migrating MeiliSearch"
|
||||||
|
systemctl stop wanderer-web
|
||||||
|
|
||||||
|
rm -rf /opt/wanderer/source/search
|
||||||
|
mkdir -p /opt/wanderer_data
|
||||||
|
[[ -d /opt/wanderer/data/meili_data ]] && cp -r /opt/wanderer/data/meili_data /opt/wanderer_data/
|
||||||
|
mkdir -p /opt/wanderer_data/meili_data
|
||||||
|
rm -rf /opt/wanderer/data/meili_data
|
||||||
|
MEILI_MASTER_KEY_VAL=$(grep -oP '^MEILI_MASTER_KEY=\K.*' /opt/wanderer/.env)
|
||||||
|
cat <<EOF >/etc/meilisearch.toml
|
||||||
|
env = "production"
|
||||||
|
master_key = "$MEILI_MASTER_KEY_VAL"
|
||||||
|
db_path = "/opt/wanderer_data/meili_data"
|
||||||
|
dump_dir = "/var/lib/meilisearch/dumps"
|
||||||
|
snapshot_dir = "/var/lib/meilisearch/snapshots"
|
||||||
|
no_analytics = true
|
||||||
|
http_addr = "127.0.0.1:7700"
|
||||||
|
EOF
|
||||||
|
mkdir -p /var/lib/meilisearch/dumps /var/lib/meilisearch/snapshots
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/meilisearch.service
|
||||||
|
[Unit]
|
||||||
|
Description=Meilisearch
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable -q --now meilisearch
|
||||||
|
|
||||||
|
sed -i \
|
||||||
|
-e "s|^MEILI_HTTP_ADDR=.*|MEILI_HTTP_ADDR=127.0.0.1:7700|" \
|
||||||
|
-e "s|^MEILI_URL=.*|MEILI_URL=http://127.0.0.1:7700|" \
|
||||||
|
/opt/wanderer/.env
|
||||||
|
|
||||||
|
msg_ok "Migrated Meilisearch"
|
||||||
|
fi
|
||||||
|
|
||||||
|
setup_meilisearch
|
||||||
|
|
||||||
|
if [[ -f /opt/wanderer/start.sh || -d /opt/wanderer/source ]]; then
|
||||||
|
msg_info "Migrating wanderer services"
|
||||||
|
systemctl stop wanderer-web
|
||||||
|
rm -f /opt/wanderer/start.sh
|
||||||
|
|
||||||
|
mkdir -p /opt/wanderer_data
|
||||||
|
[[ -d /opt/wanderer/data/pb_data ]] && cp -r /opt/wanderer/data/pb_data /opt/wanderer_data/
|
||||||
|
[[ -d /opt/wanderer/data/plugins ]] && cp -r /opt/wanderer/data/plugins /opt/wanderer_data/
|
||||||
|
mkdir -p /opt/wanderer_data/{pb_data,plugins}
|
||||||
|
rm -rf /opt/wanderer/data
|
||||||
|
|
||||||
|
[[ -d /opt/wanderer/source ]] && cp -r /opt/wanderer/source/. /opt/wanderer/
|
||||||
|
rm -rf /opt/wanderer/source
|
||||||
|
|
||||||
|
if [[ -d /opt/wanderer/db/data ]]; then
|
||||||
|
[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -i \
|
||||||
|
-e "s|^PB_DB_LOCATION=.*|PB_DB_LOCATION=/opt/wanderer_data/pb_data|" \
|
||||||
|
-e "s|^MEILI_DB_PATH=.*|MEILI_DB_PATH=/opt/wanderer_data/meili_data|" \
|
||||||
|
/opt/wanderer/.env
|
||||||
|
sed -i "s|^db_path =.*|db_path = \"/opt/wanderer_data/meili_data\"|" /etc/meilisearch.toml
|
||||||
|
rm -f /usr/local/bin/wanderer-pb
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service
|
||||||
|
[Unit]
|
||||||
|
Description=wanderer PocketBase
|
||||||
|
Wants=network.target
|
||||||
|
After=network.target
|
||||||
|
PartOf=wanderer-web.service
|
||||||
|
StartLimitIntervalSec=10
|
||||||
|
StartLimitBurst=5
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/wanderer/db
|
||||||
|
EnvironmentFile=/opt/wanderer/.env
|
||||||
|
ExecStart=/opt/wanderer/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION}
|
||||||
|
Restart=always
|
||||||
|
RestartSec=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/wanderer-web.service
|
||||||
|
[Unit]
|
||||||
|
Description=wanderer
|
||||||
|
Wants=network.target meilisearch.service wanderer-pocketbase.service
|
||||||
|
After=network.target meilisearch.service wanderer-pocketbase.service
|
||||||
|
StartLimitIntervalSec=10
|
||||||
|
StartLimitBurst=5
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/wanderer/web
|
||||||
|
EnvironmentFile=/opt/wanderer/.env
|
||||||
|
ExecStart=/usr/bin/node build
|
||||||
|
Restart=always
|
||||||
|
RestartSec=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable -q wanderer-pocketbase
|
||||||
|
systemctl start wanderer-web
|
||||||
|
msg_ok "Migrated wanderer services"
|
||||||
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "wanderer" "open-wanderer/wanderer"; then
|
if check_for_gh_release "wanderer" "open-wanderer/wanderer"; then
|
||||||
msg_info "Stopping service"
|
msg_info "Stopping service"
|
||||||
systemctl stop wanderer-web
|
systemctl stop wanderer-web
|
||||||
msg_ok "Stopped service"
|
msg_ok "Stopped service"
|
||||||
|
|
||||||
create_backup /opt/wanderer/source/search
|
create_backup /opt/wanderer/.env
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest"
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
msg_info "Updating wanderer"
|
msg_info "Updating wanderer"
|
||||||
cd /opt/wanderer/source/db
|
cd /opt/wanderer/db
|
||||||
$STD go mod tidy
|
$STD go mod tidy
|
||||||
$STD go build
|
$STD go build
|
||||||
cd /opt/wanderer/source/web
|
cd /opt/wanderer/web
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
mkdir -p /opt/wanderer/data/plugins /opt/wanderer/source/db/data
|
mkdir -p /opt/wanderer_data/plugins /opt/wanderer/db/data
|
||||||
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
|
[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
|
||||||
msg_info "Installing wanderer plugins"
|
msg_info "Installing wanderer plugins"
|
||||||
for plugin in hammerhead komoot strava; do
|
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}"
|
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}"
|
||||||
done
|
done
|
||||||
msg_ok "Installed wanderer plugins"
|
msg_ok "Installed wanderer plugins"
|
||||||
msg_ok "Updated wanderer"
|
msg_ok "Updated wanderer"
|
||||||
@@ -60,19 +177,6 @@ function update_script() {
|
|||||||
msg_ok "Started service"
|
msg_ok "Started service"
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
|
|
||||||
msg_info "Stopping service"
|
|
||||||
systemctl stop wanderer-web
|
|
||||||
msg_ok "Stopped service"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
|
|
||||||
grep -q -- '--experimental-dumpless-upgrade' /opt/wanderer/start.sh || sed -i 's|meilisearch --master-key|meilisearch --experimental-dumpless-upgrade --master-key|' /opt/wanderer/start.sh
|
|
||||||
|
|
||||||
msg_info "Starting service"
|
|
||||||
systemctl start wanderer-web
|
|
||||||
msg_ok "Started service"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ function update_script() {
|
|||||||
systemctl stop watcharr
|
systemctl stop watcharr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
create_backup /opt/watcharr/server/data
|
create_backup /opt/watcharr/server/data
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|||||||
@@ -48,6 +48,13 @@ function update_script() {
|
|||||||
chmod 644 /opt/xyops/node_modules/useragent-ng/lib/regexps.js
|
chmod 644 /opt/xyops/node_modules/useragent-ng/lib/regexps.js
|
||||||
msg_ok "Rebuilt Application"
|
msg_ok "Rebuilt Application"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "xysat" "pixlcore/xysat" "tarball" "latest" "/opt/xyops/satellite"
|
||||||
|
|
||||||
|
msg_info "Building xySat Satellite"
|
||||||
|
cd /opt/xyops/satellite
|
||||||
|
$STD npm install
|
||||||
|
msg_ok "Built xySat Satellite"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start xyops
|
systemctl start xyops
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ $STD apt install -y \
|
|||||||
g++
|
g++
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
create_self_signed_cert
|
create_self_signed_cert
|
||||||
|
|
||||||
msg_info "Installing Actual Budget"
|
msg_info "Installing Actual Budget"
|
||||||
@@ -51,6 +51,7 @@ cat <<EOF >/opt/actualbudget-data/config.json
|
|||||||
EOF
|
EOF
|
||||||
mkdir -p /opt/actualbudget
|
mkdir -p /opt/actualbudget
|
||||||
cd /opt/actualbudget
|
cd /opt/actualbudget
|
||||||
|
$STD npm config set allow-scripts=bcrypt,better-sqlite3,argon2 --location=global
|
||||||
$STD npm install --location=global @actual-app/sync-server
|
$STD npm install --location=global @actual-app/sync-server
|
||||||
echo "${RELEASE}" >~/.actualbudget
|
echo "${RELEASE}" >~/.actualbudget
|
||||||
msg_ok "Installed Actual Budget"
|
msg_ok "Installed Actual Budget"
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ $STD yarn config set enableTelemetry 0
|
|||||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
export TSC_COMPILE_ON_ERROR=true
|
export TSC_COMPILE_ON_ERROR=true
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
$STD bash ./scripts/set-version.sh "$(cat ~/.affine_app)"
|
||||||
|
export BUILD_TYPE=stable
|
||||||
$STD npm install -g typescript
|
$STD npm install -g typescript
|
||||||
$STD yarn affine @affine/native build
|
$STD yarn affine @affine/native build
|
||||||
$STD yarn affine @affine/server-native build
|
$STD yarn affine @affine/server-native build
|
||||||
|
|||||||
@@ -26,23 +26,21 @@ msg_ok "Installed Docker"
|
|||||||
get_latest_release() {
|
get_latest_release() {
|
||||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||||
}
|
}
|
||||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
|
||||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
||||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
docker volume create portainer_data >/dev/null
|
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||||
$STD docker run -d \
|
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
||||||
-p 8000:8000 \
|
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
|
||||||
-p 9443:9443 \
|
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
||||||
--name=portainer \
|
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||||
--restart=always \
|
fi
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
||||||
-v portainer_data:/data \
|
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
|
||||||
portainer/portainer-ce:latest
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
|
||||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
|
||||||
else
|
else
|
||||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
@@ -57,21 +55,12 @@ else
|
|||||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
|
||||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
|
||||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
|
||||||
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
|
||||||
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
|
|
||||||
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
|
||||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Exposing Docker TCP socket"
|
msg_info "Exposing Docker TCP socket"
|
||||||
$STD mkdir -p /etc/docker
|
$STD mkdir -p /etc/docker
|
||||||
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
|
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' >/etc/docker/daemon.json
|
||||||
$STD rc-service docker restart
|
$STD rc-service docker restart
|
||||||
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
|
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ $STD apt install -y \
|
|||||||
libvpx-dev
|
libvpx-dev
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
|
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
MARIADB_DB_USER="ampache" MARIADB_DB_NAME="ampache" setup_mariadb_db
|
MARIADB_DB_USER="ampache" MARIADB_DB_NAME="ampache" setup_mariadb_db
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.4.zip"
|
fetch_and_deploy_gh_release "ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.5.zip"
|
||||||
|
|
||||||
msg_info "Setting up Ampache"
|
msg_info "Setting up Ampache"
|
||||||
rm -rf /var/www/html
|
rm -rf /var/www/html
|
||||||
@@ -58,7 +58,7 @@ msg_info "Configuring PHP"
|
|||||||
sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \
|
sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \
|
||||||
-e 's/post_max_size = .*/post_max_size = 100M/' \
|
-e 's/post_max_size = .*/post_max_size = 100M/' \
|
||||||
-e 's/max_execution_time = .*/max_execution_time = 600/' \
|
-e 's/max_execution_time = .*/max_execution_time = 600/' \
|
||||||
-e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4/apache2/php.ini
|
-e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.5/apache2/php.ini
|
||||||
$STD a2enmod rewrite
|
$STD a2enmod rewrite
|
||||||
$STD systemctl restart apache2
|
$STD systemctl restart apache2
|
||||||
msg_ok "Configured PHP"
|
msg_ok "Configured PHP"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Apache CouchDB"
|
msg_info "Installing Apache CouchDB"
|
||||||
ERLANG_COOKIE=$(openssl rand -base64 32)
|
ERLANG_COOKIE=$(openssl rand -hex 32)
|
||||||
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||||
debconf-set-selections <<<"couchdb couchdb/cookie string $ERLANG_COOKIE"
|
debconf-set-selections <<<"couchdb couchdb/cookie string $ERLANG_COOKIE"
|
||||||
debconf-set-selections <<<"couchdb couchdb/mode select standalone"
|
debconf-set-selections <<<"couchdb couchdb/mode select standalone"
|
||||||
|
|||||||
@@ -122,9 +122,18 @@ export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
|||||||
export UV_COMPILE_BYTECODE="1"
|
export UV_COMPILE_BYTECODE="1"
|
||||||
export UV_LINK_MODE="copy"
|
export UV_LINK_MODE="copy"
|
||||||
export UV_NATIVE_TLS="1"
|
export UV_NATIVE_TLS="1"
|
||||||
|
export UV_HTTP_TIMEOUT="300"
|
||||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD uv sync --frozen --no-install-project --no-dev
|
for attempt in 1 2 3; do
|
||||||
|
if [[ $attempt -eq 3 ]]; then
|
||||||
|
$STD uv sync --frozen --no-install-project --no-dev
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
$STD uv sync --frozen --no-install-project --no-dev && break
|
||||||
|
msg_warn "uv sync attempt $attempt failed, retrying..."
|
||||||
|
sleep $((attempt * 15))
|
||||||
|
done
|
||||||
cp /opt/authentik/authentik/sources/kerberos/krb5.conf /etc/krb5.conf
|
cp /opt/authentik/authentik/sources/kerberos/krb5.conf /etc/krb5.conf
|
||||||
msg_ok "Setup python server"
|
msg_ok "Setup python server"
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ chmod 775 /opt/bazarr /var/lib/bazarr/
|
|||||||
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||||
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||||
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
||||||
|
$STD uv pip install psycopg2-binary --python /opt/bazarr/venv/bin/python3
|
||||||
msg_ok "Installed Bazarr"
|
msg_ok "Installed Bazarr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y libusb-1.0-0
|
$STD apt install -y \
|
||||||
|
libusb-1.0-0 \
|
||||||
|
libatomic1
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Fetching Latest Bitfocus Companion Release"
|
msg_info "Fetching Latest Bitfocus Companion Release"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ fetch_and_deploy_gh_release "Byparr" "ThePhaseless/Byparr" "tarball" "latest"
|
|||||||
msg_info "Configuring Byparr"
|
msg_info "Configuring Byparr"
|
||||||
cd /opt/Byparr
|
cd /opt/Byparr
|
||||||
$STD uv sync --link-mode copy
|
$STD uv sync --link-mode copy
|
||||||
$STD uv run camoufox fetch
|
$STD uv run python -m invisible_playwright fetch
|
||||||
msg_ok "Configured Byparr"
|
msg_ok "Configured Byparr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ msg_info "Installing Calibre (for eBook conversion)"
|
|||||||
$STD apt install -y calibre
|
$STD apt install -y calibre
|
||||||
msg_ok "Installed Calibre"
|
msg_ok "Installed Calibre"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibre-web*.tar.gz"
|
fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibreweb*.tar.gz"
|
||||||
setup_uv
|
setup_uv
|
||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
msg_info "Installing Python Dependencies"
|
||||||
cd /opt/calibre-web
|
cd /opt/calibre-web
|
||||||
$STD uv venv
|
$STD uv venv
|
||||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
|
||||||
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt
|
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
|
||||||
msg_ok "Installed Python Dependencies"
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -54,7 +54,7 @@ Type=simple
|
|||||||
User=root
|
User=root
|
||||||
Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox"
|
Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox"
|
||||||
WorkingDirectory=/opt/calibre-web
|
WorkingDirectory=/opt/calibre-web
|
||||||
ExecStart=/opt/calibre-web/.venv/bin/python /opt/calibre-web/cps.py
|
ExecStart=/opt/calibre-web/.venv/bin/cps
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ $STD apt-get install -y \
|
|||||||
fonts-kacst fonts-liberation \
|
fonts-kacst fonts-liberation \
|
||||||
fonts-noto-cjk \
|
fonts-noto-cjk \
|
||||||
fonts-noto-color-emoji \
|
fonts-noto-color-emoji \
|
||||||
msttcorefonts \
|
|
||||||
fonts-roboto \
|
fonts-roboto \
|
||||||
fonts-thai-tlwg \
|
fonts-thai-tlwg \
|
||||||
fonts-wqy-zenhei
|
fonts-wqy-zenhei
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ update_os
|
|||||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
mkdir -p /etc/cleanuparr /var/log/cleanuparr
|
||||||
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Cleanuparr Daemon
|
Description=Cleanuparr Daemon
|
||||||
@@ -29,7 +30,8 @@ ExecStart=/opt/cleanuparr/Cleanuparr
|
|||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
Environment="PORT=11011"
|
Environment="PORT=11011"
|
||||||
Environment="CONFIG_DIR=/opt/cleanuparr/config"
|
Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"
|
||||||
|
Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -20,10 +20,15 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
assimp-utils \
|
assimp-utils \
|
||||||
calibre \
|
calibre \
|
||||||
|
dasel \
|
||||||
dcraw \
|
dcraw \
|
||||||
dvisvgm \
|
dvisvgm \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
|
graphicsmagick \
|
||||||
inkscape \
|
inkscape \
|
||||||
|
libemail-outlook-message-perl \
|
||||||
|
libheif-examples \
|
||||||
|
libjxl-tools \
|
||||||
libreoffice-writer \
|
libreoffice-writer \
|
||||||
libva2 \
|
libva2 \
|
||||||
libvips-tools \
|
libvips-tools \
|
||||||
@@ -33,6 +38,7 @@ $STD apt install -y \
|
|||||||
poppler-utils \
|
poppler-utils \
|
||||||
potrace \
|
potrace \
|
||||||
python3-numpy \
|
python3-numpy \
|
||||||
|
resvg \
|
||||||
texlive \
|
texlive \
|
||||||
texlive-fonts-recommended \
|
texlive-fonts-recommended \
|
||||||
texlive-latex-extra \
|
texlive-latex-extra \
|
||||||
@@ -40,6 +46,15 @@ $STD apt install -y \
|
|||||||
texlive-xetex
|
texlive-xetex
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
setup_uv
|
||||||
|
|
||||||
|
msg_info "Installing markitdown"
|
||||||
|
export UV_TOOL_BIN_DIR=/usr/local/bin
|
||||||
|
$STD uv tool install "markitdown[all]"
|
||||||
|
msg_ok "Installed markitdown"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "vtracer" "visioncortex/vtracer" "prebuild" "0.6.4" "/usr/local/bin" "vtracer-$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="bun" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="bun" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y build-essential
|
$STD apt install -y build-essential
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="26" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
msg_info "Setup Cross-Seed"
|
msg_info "Setup Cross-Seed"
|
||||||
$STD npm install cross-seed@latest -g
|
$STD npm install cross-seed@latest -g
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user