mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-07 14:42:13 +02:00
Compare commits
159 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 36b1dabefb | |||
| 7a9726b1dd | |||
| 0102d5bd83 | |||
| 8d288ffee3 | |||
| e00df4fd6e | |||
| fe7de5e26c | |||
| 87ccf49dc3 | |||
| c5f905ccf1 | |||
| bff3c6932a | |||
| 7027d67eb3 | |||
| 766f8519a3 | |||
| 68cc4f3da7 | |||
| 81d6b2beee | |||
| 555953117c | |||
| 93ce08aa72 | |||
| 728726d5cc | |||
| 20740c3ca2 | |||
| 417b0641a0 | |||
| 86991b283d | |||
| 4ebae9f1c4 | |||
| d8c636eaef | |||
| 4b71ee8b3a | |||
| a8aa1ba085 | |||
| 954da140f1 | |||
| 604f7c7ae9 | |||
| dbd591ada6 | |||
| cc5976baa6 | |||
| d29eec9494 | |||
| 819ecc1105 | |||
| 7e15a4bf26 | |||
| 9406a1ca98 | |||
| d58123a518 | |||
| 704916d27d | |||
| 3c84f2d6c1 | |||
| 044bffcea4 | |||
| 84a1f13fa7 | |||
| c075708588 | |||
| 2b3e2346e1 | |||
| 6ad04d8b19 | |||
| 225329a62f | |||
| b8a1879b24 | |||
| 9f90357abc | |||
| a068d32a66 | |||
| ea7249ca03 | |||
| d610a35b34 | |||
| a76225aba6 | |||
| 0c9d77973e | |||
| 9b7f4533c6 | |||
| 70f8118198 | |||
| ace936085e | |||
| 6f18af08d8 | |||
| cd9c920d48 | |||
| 6a07f1bfd5 | |||
| 3f1b2f2180 | |||
| 0bc090abc6 | |||
| be29bb1538 | |||
| 8f3d439daa | |||
| 88458c5837 | |||
| ce11015489 | |||
| f156e761e0 | |||
| 7493a7f003 | |||
| a8eedc1848 | |||
| be21f7517a | |||
| 4c10c0d98f | |||
| 17d18e70c8 | |||
| 80af66e864 | |||
| 53c72b9a1f | |||
| 34f56866d5 | |||
| 7b5d525d26 | |||
| 26c8959902 | |||
| 9c6d4479a7 | |||
| e276b6c5b5 | |||
| a1fa80cec3 | |||
| cd8a07a170 | |||
| 2dff51e198 | |||
| 7450c1ef03 | |||
| dbad31ba08 | |||
| 8fba38a423 | |||
| 5d25171d8d | |||
| fde188a6ff | |||
| 4d56173394 | |||
| 02bbb774c9 | |||
| 7c8bbed4fa | |||
| 71761ce5a9 | |||
| 069c8f578f | |||
| da24518021 | |||
| 5703462a0d | |||
| 89998b4fa0 | |||
| 7140f1dd00 | |||
| e9bc9df3a9 | |||
| b85df60ddf | |||
| b1523bc2e2 | |||
| 33642ab1c5 | |||
| 1aef5d655c | |||
| a84e13b504 | |||
| 3141dfbfb7 | |||
| 084fe40484 | |||
| 905c3fa411 | |||
| fd2ec706f3 | |||
| 68b76e7b0b | |||
| 03963b5193 | |||
| d756c83b62 | |||
| e36e0bbe3f | |||
| de0408e12f | |||
| b5361e5278 | |||
| 4f9f556a93 | |||
| 4b23f2c72c | |||
| 2ded16ed4b | |||
| e1f61aeeb9 | |||
| fb9f5a0047 | |||
| 17b5f8c10c | |||
| 8b99d3b1cc | |||
| 039470965b | |||
| 8e4a9829cf | |||
| f1eee5f5ed | |||
| fb14e6ae8b | |||
| 4142c5c2d3 | |||
| d85914530f | |||
| 3d9e67292b | |||
| ae60dc138b | |||
| 14a85a8591 | |||
| 1be64c1994 | |||
| 340695b9bd | |||
| ba31c925e3 | |||
| 868b405082 | |||
| 60266b9c17 | |||
| ea8b87fd7f | |||
| 58145d5bd3 | |||
| 9fbe2de1cb | |||
| c918dee5fe | |||
| 0774772b87 | |||
| dc26b8358e | |||
| 01a6c1ddec | |||
| 3e544b750d | |||
| 681924cb1a | |||
| 6ea04b7602 | |||
| b2d20799d8 | |||
| 324fa33d8c | |||
| 5aed3bdde5 | |||
| b3cef14a35 | |||
| 10c8ad6f28 | |||
| 37bcddd847 | |||
| 075a691198 | |||
| fbd083c9ae | |||
| edf167025f | |||
| 3abbefe3b0 | |||
| c356c3827a | |||
| 6f2d3da61f | |||
| f7acb76e80 | |||
| b2ecd86698 | |||
| df10a5ea53 | |||
| 3a65047ff9 | |||
| 5b01ff81e8 | |||
| 4e6cb56f06 | |||
| 470c0672fb | |||
| 62b7080477 | |||
| e193adad5a | |||
| aeb8dba809 | |||
| 3fc7008bbe |
Generated
+1
@@ -1,2 +1,3 @@
|
|||||||
ko_fi: community_scripts
|
ko_fi: community_scripts
|
||||||
github: community_scripts
|
github: community_scripts
|
||||||
|
buy_me_a_coffee: communityscripts
|
||||||
|
|||||||
Generated
+248
@@ -1,3 +1,251 @@
|
|||||||
|
## 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))
|
||||||
|
|
||||||
|
## 2026-06-25
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Pinchflat ([#15367](https://github.com/community-scripts/ProxmoxVE/pull/15367))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- persist gramps-web configuration file after update [@operfesium](https://github.com/operfesium) ([#15394](https://github.com/community-scripts/ProxmoxVE/pull/15394))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- VM-Core: Update some Functions [@MickLesk](https://github.com/MickLesk) ([#15113](https://github.com/community-scripts/ProxmoxVE/pull/15113))
|
||||||
|
|
||||||
|
## 2026-06-24
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- SnapOtter ([#15368](https://github.com/community-scripts/ProxmoxVE/pull/15368))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- enabling rewirte module in apache [@d3v3lop3rDE](https://github.com/d3v3lop3rDE) ([#15360](https://github.com/community-scripts/ProxmoxVE/pull/15360))
|
||||||
|
- watcharr: Increase default RAM allocation from 1024 to 2048 [@MickLesk](https://github.com/MickLesk) ([#15370](https://github.com/community-scripts/ProxmoxVE/pull/15370))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor LibreNMS: replace old install and update variant with tarball approach [@MickLesk](https://github.com/MickLesk) ([#15369](https://github.com/community-scripts/ProxmoxVE/pull/15369))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- delete wger [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15380](https://github.com/community-scripts/ProxmoxVE/pull/15380))
|
||||||
|
- Delete ghost [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15377](https://github.com/community-scripts/ProxmoxVE/pull/15377))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add SDN vnet selection in advanced install [@MickLesk](https://github.com/MickLesk) ([#15366](https://github.com/community-scripts/ProxmoxVE/pull/15366))
|
||||||
|
- core: add var_http_proxy and var_http_no_proxy support [@MickLesk](https://github.com/MickLesk) ([#15225](https://github.com/community-scripts/ProxmoxVE/pull/15225))
|
||||||
|
|
||||||
|
## 2026-06-23
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- update jdk when updating crafty-controller [@asylumexp](https://github.com/asylumexp) ([#15349](https://github.com/community-scripts/ProxmoxVE/pull/15349))
|
||||||
|
- fix docker update function [@asylumexp](https://github.com/asylumexp) ([#15353](https://github.com/community-scripts/ProxmoxVE/pull/15353))
|
||||||
|
- LibreNMS: run daily.sh as librenms user with git available [@MickLesk](https://github.com/MickLesk) ([#15314](https://github.com/community-scripts/ProxmoxVE/pull/15314))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- termix - patch tmp nginx behaviour to match the install script [@xyzulu](https://github.com/xyzulu) ([#15283](https://github.com/community-scripts/ProxmoxVE/pull/15283))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- Fix syntax error in build function [@l0caldadmin](https://github.com/l0caldadmin) ([#15337](https://github.com/community-scripts/ProxmoxVE/pull/15337))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: close lxc build function [@ServerBP](https://github.com/ServerBP) ([#15343](https://github.com/community-scripts/ProxmoxVE/pull/15343))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] port pve scripts to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15288](https://github.com/community-scripts/ProxmoxVE/pull/15288))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- fix(build.func): remove duplicate if statement causing syntax error on container creation [@Copilot](https://github.com/Copilot) ([#15338](https://github.com/community-scripts/ProxmoxVE/pull/15338))
|
||||||
|
|
||||||
|
## 2026-06-22
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Postiz ([#15048](https://github.com/community-scripts/ProxmoxVE/pull/15048))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- invoiceshelf: use pnpm instead of yarn for frontend build [@MickLesk](https://github.com/MickLesk) ([#15312](https://github.com/community-scripts/ProxmoxVE/pull/15312))
|
||||||
|
- VictoriaMetrics: resolve architecture before jq asset filter [@MickLesk](https://github.com/MickLesk) ([#15316](https://github.com/community-scripts/ProxmoxVE/pull/15316))
|
||||||
|
- Endurain: pin uv to the version required by the project [@MickLesk](https://github.com/MickLesk) ([#15313](https://github.com/community-scripts/ProxmoxVE/pull/15313))
|
||||||
|
- add proxy headers to dispatcharr from #15143 [@asylumexp](https://github.com/asylumexp) ([#15293](https://github.com/community-scripts/ProxmoxVE/pull/15293))
|
||||||
|
- Fix-15015: check correct path for certbot [@galz55](https://github.com/galz55) ([#15034](https://github.com/community-scripts/ProxmoxVE/pull/15034))
|
||||||
|
- fix(romm): resolve 403 Forbidden error on nginx mod_zip installation [@hug-efrei](https://github.com/hug-efrei) ([#15134](https://github.com/community-scripts/ProxmoxVE/pull/15134))
|
||||||
|
- Degoog: Fix valkey url in update; set mandatory settings password [@vhsdream](https://github.com/vhsdream) ([#15300](https://github.com/community-scripts/ProxmoxVE/pull/15300))
|
||||||
|
- [arm64] fix update functions to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15290](https://github.com/community-scripts/ProxmoxVE/pull/15290))
|
||||||
|
- Fix typo in victoriametrics [@asylumexp](https://github.com/asylumexp) ([#15289](https://github.com/community-scripts/ProxmoxVE/pull/15289))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- update: esphome to install and run ESPHome Device Builder [@jesserockz](https://github.com/jesserockz) ([#15195](https://github.com/community-scripts/ProxmoxVE/pull/15195))
|
||||||
|
- [arm64] Port scripts between warracker-zwavejsui to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15291](https://github.com/community-scripts/ProxmoxVE/pull/15291))
|
||||||
|
- [arm64] Port scripts between thingsboard & wanderer to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15286](https://github.com/community-scripts/ProxmoxVE/pull/15286))
|
||||||
|
- [arm64] Port scripts between snowshare & thelounge to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15280](https://github.com/community-scripts/ProxmoxVE/pull/15280))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: refresh ruby-build when requested version is missing [@MickLesk](https://github.com/MickLesk) ([#15315](https://github.com/community-scripts/ProxmoxVE/pull/15315))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add pre-install storage health checks [@MickLesk](https://github.com/MickLesk) ([#15226](https://github.com/community-scripts/ProxmoxVE/pull/15226))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core:: skip LXC stack upgrade prompt in unattended mode [@MickLesk](https://github.com/MickLesk) ([#15319](https://github.com/community-scripts/ProxmoxVE/pull/15319))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- update-apps: sanitize service detection and fail on invalid names [@MickLesk](https://github.com/MickLesk) ([#15318](https://github.com/community-scripts/ProxmoxVE/pull/15318))
|
||||||
|
|
||||||
|
## 2026-06-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Matomo: flatten nested deploy layout after update [@MickLesk](https://github.com/MickLesk) ([#15267](https://github.com/community-scripts/ProxmoxVE/pull/15267))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] Port scripts between qdrant & snipeit to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15274](https://github.com/community-scripts/ProxmoxVE/pull/15274))
|
||||||
|
- [arm64] Port scripts between nodered & paperlessngx to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15255](https://github.com/community-scripts/ProxmoxVE/pull/15255))
|
||||||
|
- [arm64] port scripts titled between papra and qbittorrent to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15258](https://github.com/community-scripts/ProxmoxVE/pull/15258))
|
||||||
|
- [arm64] Port scripts between mediamtx-nocodb to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15254](https://github.com/community-scripts/ProxmoxVE/pull/15254))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: centralize Node.js corepack and npm handling in `setup_nodejs()` [@MickLesk](https://github.com/MickLesk) ([#15268](https://github.com/community-scripts/ProxmoxVE/pull/15268))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: APT install and deb822 repo reliability [@MickLesk](https://github.com/MickLesk) ([#15272](https://github.com/community-scripts/ProxmoxVE/pull/15272))
|
||||||
|
- tools.func: prevent MySQL data loss and fix repo version matching [@MickLesk](https://github.com/MickLesk) ([#15271](https://github.com/community-scripts/ProxmoxVE/pull/15271))
|
||||||
|
- tools.func: runtime hardening for API helpers and Docker/MeiliSearch [@MickLesk](https://github.com/MickLesk) ([#15273](https://github.com/community-scripts/ProxmoxVE/pull/15273))
|
||||||
|
|
||||||
## 2026-06-20
|
## 2026-06-20
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
Generated
+91
@@ -0,0 +1,91 @@
|
|||||||
|
## 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))
|
||||||
+269
-296
@@ -65,6 +65,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -81,7 +87,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h4>June (20 entries)</h4></summary>
|
<summary><h4>July (4 entries)</h4></summary>
|
||||||
|
|
||||||
|
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><h4>June (30 entries)</h4></summary>
|
||||||
|
|
||||||
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
||||||
|
|
||||||
@@ -486,16 +499,268 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 2026-06-24
|
## 2026-07-06
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- enabling rewirte module in apache [@d3v3lop3rDE](https://github.com/d3v3lop3rDE) ([#15360](https://github.com/community-scripts/ProxmoxVE/pull/15360))
|
- 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
|
||||||
|
|
||||||
|
- 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))
|
||||||
|
|
||||||
|
## 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
|
### 💾 Core
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ 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))
|
||||||
|
|
||||||
|
## 2026-06-25
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Pinchflat ([#15367](https://github.com/community-scripts/ProxmoxVE/pull/15367))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- persist gramps-web configuration file after update [@operfesium](https://github.com/operfesium) ([#15394](https://github.com/community-scripts/ProxmoxVE/pull/15394))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- VM-Core: Update some Functions [@MickLesk](https://github.com/MickLesk) ([#15113](https://github.com/community-scripts/ProxmoxVE/pull/15113))
|
||||||
|
|
||||||
|
## 2026-06-24
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- SnapOtter ([#15368](https://github.com/community-scripts/ProxmoxVE/pull/15368))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- enabling rewirte module in apache [@d3v3lop3rDE](https://github.com/d3v3lop3rDE) ([#15360](https://github.com/community-scripts/ProxmoxVE/pull/15360))
|
||||||
|
- watcharr: Increase default RAM allocation from 1024 to 2048 [@MickLesk](https://github.com/MickLesk) ([#15370](https://github.com/community-scripts/ProxmoxVE/pull/15370))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor LibreNMS: replace old install and update variant with tarball approach [@MickLesk](https://github.com/MickLesk) ([#15369](https://github.com/community-scripts/ProxmoxVE/pull/15369))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- delete wger [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15380](https://github.com/community-scripts/ProxmoxVE/pull/15380))
|
||||||
|
- Delete ghost [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15377](https://github.com/community-scripts/ProxmoxVE/pull/15377))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add SDN vnet selection in advanced install [@MickLesk](https://github.com/MickLesk) ([#15366](https://github.com/community-scripts/ProxmoxVE/pull/15366))
|
||||||
- core: add var_http_proxy and var_http_no_proxy support [@MickLesk](https://github.com/MickLesk) ([#15225](https://github.com/community-scripts/ProxmoxVE/pull/15225))
|
- core: add var_http_proxy and var_http_no_proxy support [@MickLesk](https://github.com/MickLesk) ([#15225](https://github.com/community-scripts/ProxmoxVE/pull/15225))
|
||||||
|
|
||||||
## 2026-06-23
|
## 2026-06-23
|
||||||
@@ -909,296 +1174,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- #### 💥 Breaking Changes
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
- update authentik to 2026.5.2 [@thieneret](https://github.com/thieneret) ([#14846](https://github.com/community-scripts/ProxmoxVE/pull/14846))
|
- update authentik to 2026.5.2 [@thieneret](https://github.com/thieneret) ([#14846](https://github.com/community-scripts/ProxmoxVE/pull/14846))
|
||||||
|
|
||||||
## 2026-06-04
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Fix status messages for several alpine scripts [@tremor021](https://github.com/tremor021) ([#14911](https://github.com/community-scripts/ProxmoxVE/pull/14911))
|
|
||||||
- ReactiveResume: Fix Service Path [@MickLesk](https://github.com/MickLesk) ([#14926](https://github.com/community-scripts/ProxmoxVE/pull/14926))
|
|
||||||
- Jellyfin: install intel-igc deps before intel-opencl-icd to fix dependency order [@MickLesk](https://github.com/MickLesk) ([#14927](https://github.com/community-scripts/ProxmoxVE/pull/14927))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- OpenThread-BR: use official GitHub releases [@tomfrenzel](https://github.com/tomfrenzel) ([#14916](https://github.com/community-scripts/ProxmoxVE/pull/14916))
|
|
||||||
- Grist: remove extra text at the end of installation [@tremor021](https://github.com/tremor021) ([#14905](https://github.com/community-scripts/ProxmoxVE/pull/14905))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- chore(ct): sync sparkyfitness defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#14925](https://github.com/community-scripts/ProxmoxVE/pull/14925))
|
|
||||||
|
|
||||||
## 2026-06-03
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Glance: Use separate directory for configuration files [@tremor021](https://github.com/tremor021) ([#14906](https://github.com/community-scripts/ProxmoxVE/pull/14906))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [core]: Fix alignment for `msg_` functions [@tremor021](https://github.com/tremor021) ([#14908](https://github.com/community-scripts/ProxmoxVE/pull/14908))
|
|
||||||
|
|
||||||
## 2026-06-02
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- DDNS-Updater ([#14883](https://github.com/community-scripts/ProxmoxVE/pull/14883))
|
|
||||||
- InvoiceShelf ([#14882](https://github.com/community-scripts/ProxmoxVE/pull/14882))
|
|
||||||
- Certimate ([#14881](https://github.com/community-scripts/ProxmoxVE/pull/14881))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- OpenThread-BR: preserve config during update [@tomfrenzel](https://github.com/tomfrenzel) ([#14893](https://github.com/community-scripts/ProxmoxVE/pull/14893))
|
|
||||||
- infisical: fix update abort due to creds field mismatch (#14868) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14870](https://github.com/community-scripts/ProxmoxVE/pull/14870))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- feat(degoog): enable default valkey cache integration [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14871](https://github.com/community-scripts/ProxmoxVE/pull/14871))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- chore: bump Node version in selected scripts [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14873](https://github.com/community-scripts/ProxmoxVE/pull/14873))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools.func: add support for Rust installation profile in setup_rust [@MickLesk](https://github.com/MickLesk) ([#14872](https://github.com/community-scripts/ProxmoxVE/pull/14872))
|
|
||||||
|
|
||||||
### 📂 Github
|
|
||||||
|
|
||||||
- fix(workflow): only flag node drift when local is behind upstream [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14874](https://github.com/community-scripts/ProxmoxVE/pull/14874))
|
|
||||||
|
|
||||||
## 2026-06-01
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix(dispatcharr): forward nginx port for M3U URLs on new installs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14862](https://github.com/community-scripts/ProxmoxVE/pull/14862))
|
|
||||||
- Set environment paths in service for apprise-api-install.sh [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14805](https://github.com/community-scripts/ProxmoxVE/pull/14805))
|
|
||||||
- fix(fireshare): rebuild client on update to fix nginx 500 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14848](https://github.com/community-scripts/ProxmoxVE/pull/14848))
|
|
||||||
- Fix Kan build failure (TS7016 nodemailer) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14856](https://github.com/community-scripts/ProxmoxVE/pull/14856))
|
|
||||||
- fix(firefly): set Data Importer APP_URL for subdirectory install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14847](https://github.com/community-scripts/ProxmoxVE/pull/14847))
|
|
||||||
- kan: extend fetch_and_deploy_gh_tag to use 'latest' tag [@MickLesk](https://github.com/MickLesk) ([#14853](https://github.com/community-scripts/ProxmoxVE/pull/14853))
|
|
||||||
- Glance: preserve glance.yml across updates [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14845](https://github.com/community-scripts/ProxmoxVE/pull/14845))
|
|
||||||
- NginxProxymanager: set Certbot version in npm.service environment variable (2.15.0) [@MickLesk](https://github.com/MickLesk) ([#14843](https://github.com/community-scripts/ProxmoxVE/pull/14843))
|
|
||||||
- [FileFlows] Fix service handling by using systemctl --all with quoted glob [@adrianmusante](https://github.com/adrianmusante) ([#14838](https://github.com/community-scripts/ProxmoxVE/pull/14838))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Kometa: also update Quickstart in update_script [@MickLesk](https://github.com/MickLesk) ([#14529](https://github.com/community-scripts/ProxmoxVE/pull/14529))
|
|
||||||
|
|
||||||
## 2026-05-31
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Manyfold: regenerate Rails credentials on update to fix encryption mimatch [@MickLesk](https://github.com/MickLesk) ([#14817](https://github.com/community-scripts/ProxmoxVE/pull/14817))
|
|
||||||
- OpenThread-BR: use correct ipv6 configuration [@tomfrenzel](https://github.com/tomfrenzel) ([#14829](https://github.com/community-scripts/ProxmoxVE/pull/14829))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Webtrees: use PHP CLI for initial setup instead of curl to setup wizard [@MickLesk](https://github.com/MickLesk) ([#14818](https://github.com/community-scripts/ProxmoxVE/pull/14818))
|
|
||||||
- Kima-Hub: use curl_with_retry for ML model downloads to fix possible timeout issues [@MickLesk](https://github.com/MickLesk) ([#14816](https://github.com/community-scripts/ProxmoxVE/pull/14816))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- PBS4-Upgrade: update current PBS3 packages before switching to Trixie repos [@MickLesk](https://github.com/MickLesk) ([#14815](https://github.com/community-scripts/ProxmoxVE/pull/14815))
|
|
||||||
|
|
||||||
## 2026-05-30
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Flatnotes: fix empty package name in pyproject.toml [@MickLesk](https://github.com/MickLesk) ([#14814](https://github.com/community-scripts/ProxmoxVE/pull/14814))
|
|
||||||
|
|
||||||
## 2026-05-29
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Kan ([#14776](https://github.com/community-scripts/ProxmoxVE/pull/14776))
|
|
||||||
- Dynacat ([#14777](https://github.com/community-scripts/ProxmoxVE/pull/14777))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Fix lobehub docker path [@dannyyy](https://github.com/dannyyy) ([#14793](https://github.com/community-scripts/ProxmoxVE/pull/14793))
|
|
||||||
- karakeep: add more hdd space [@MickLesk](https://github.com/MickLesk) ([#14797](https://github.com/community-scripts/ProxmoxVE/pull/14797))
|
|
||||||
- Grist: Revert installation of EE [@tremor021](https://github.com/tremor021) ([#14784](https://github.com/community-scripts/ProxmoxVE/pull/14784))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Sure: Remove `$STD` for `systemctl enable -q` [@tremor021](https://github.com/tremor021) ([#14801](https://github.com/community-scripts/ProxmoxVE/pull/14801))
|
|
||||||
|
|
||||||
## 2026-05-28
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- RomM: remove nginx default.conf during installation [@MickLesk](https://github.com/MickLesk) ([#14766](https://github.com/community-scripts/ProxmoxVE/pull/14766))
|
|
||||||
- Open-Archiver: replace pnpm approve-builds --yes with --all [@MickLesk](https://github.com/MickLesk) ([#14765](https://github.com/community-scripts/ProxmoxVE/pull/14765))
|
|
||||||
- fix(hermesagent): set npm_config_yes=true to suppress interactive pro… [@steveonjava](https://github.com/steveonjava) ([#14763](https://github.com/community-scripts/ProxmoxVE/pull/14763))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Yamtrack: migrate to uv [@MickLesk](https://github.com/MickLesk) ([#14767](https://github.com/community-scripts/ProxmoxVE/pull/14767))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- chore(ct): sync adventurelog defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#14772](https://github.com/community-scripts/ProxmoxVE/pull/14772))
|
|
||||||
|
|
||||||
## 2026-05-27
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- MusicSeerr ([#14746](https://github.com/community-scripts/ProxmoxVE/pull/14746))
|
|
||||||
- Hermes Agent ([#14751](https://github.com/community-scripts/ProxmoxVE/pull/14751))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- grist: restore install:ee step [@paulfitz](https://github.com/paulfitz) ([#14759](https://github.com/community-scripts/ProxmoxVE/pull/14759))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [tools.func]: `setup_gs()` fix getting dotted release format [@tremor021](https://github.com/tremor021) ([#14745](https://github.com/community-scripts/ProxmoxVE/pull/14745))
|
|
||||||
|
|
||||||
## 2026-05-26
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Add directory creation to Profilarr update script [@ryansully](https://github.com/ryansully) ([#14740](https://github.com/community-scripts/ProxmoxVE/pull/14740))
|
|
||||||
- profilarr: Fix ARCH assignment in profilarr.sh to support Profilarr build usage [@mpeleshenko](https://github.com/mpeleshenko) ([#14709](https://github.com/community-scripts/ProxmoxVE/pull/14709))
|
|
||||||
- Jackett: Remove quotes in Service File [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14729](https://github.com/community-scripts/ProxmoxVE/pull/14729))
|
|
||||||
- Open-archiver: approve pnpm build scripts and run build:oss without subshell [@MickLesk](https://github.com/MickLesk) ([#14711](https://github.com/community-scripts/ProxmoxVE/pull/14711))
|
|
||||||
- Docuseal: read Ruby version from Gemfile, upgrade on update if needed [@MickLesk](https://github.com/MickLesk) ([#14715](https://github.com/community-scripts/ProxmoxVE/pull/14715))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Birdnet-GO: install libonnxruntime.so from release tarball [@MickLesk](https://github.com/MickLesk) ([#14716](https://github.com/community-scripts/ProxmoxVE/pull/14716))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools.func: better error diagnostics, consistent OS detection, setup function ordering [@MickLesk](https://github.com/MickLesk) ([#14692](https://github.com/community-scripts/ProxmoxVE/pull/14692))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- IPTag-Tool: use qm set for VM tags to handle snapshot sections crrectly [@MickLesk](https://github.com/MickLesk) ([#14713](https://github.com/community-scripts/ProxmoxVE/pull/14713))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Netdata: extend PVE version support to 9.x [@MickLesk](https://github.com/MickLesk) ([#14714](https://github.com/community-scripts/ProxmoxVE/pull/14714))
|
|
||||||
|
|
||||||
## 2026-05-25
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- karakeep: fix: pip config [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14703](https://github.com/community-scripts/ProxmoxVE/pull/14703))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- tools.func: replace raw GitHub API curl calls with get_latest_github_release [@MickLesk](https://github.com/MickLesk) ([#14690](https://github.com/community-scripts/ProxmoxVE/pull/14690))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Kernel-Clean: detect meta-packages and fix silent removal failures [@MickLesk](https://github.com/MickLesk) ([#14674](https://github.com/community-scripts/ProxmoxVE/pull/14674))
|
|
||||||
|
|
||||||
## 2026-05-24
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- RomM: add installation steps for Nginx mod_zip module [@MickLesk](https://github.com/MickLesk) ([#14678](https://github.com/community-scripts/ProxmoxVE/pull/14678))
|
|
||||||
- ISponsorblockTV: detect CPU capabilities to select compatible binary [@MickLesk](https://github.com/MickLesk) ([#14677](https://github.com/community-scripts/ProxmoxVE/pull/14677))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: MQTT [@tremor021](https://github.com/tremor021) ([#14673](https://github.com/community-scripts/ProxmoxVE/pull/14673))
|
|
||||||
|
|
||||||
## 2026-05-23
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- IronClaw: Extra configuration during install to ensure Web Gateway can run [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14635](https://github.com/community-scripts/ProxmoxVE/pull/14635))
|
|
||||||
- Tunarr: fix path to backup during update [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14655](https://github.com/community-scripts/ProxmoxVE/pull/14655))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- wealthfolio: add: prebuild [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14658](https://github.com/community-scripts/ProxmoxVE/pull/14658))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- kernel-clean: support range syntax in selection prompt [@djhojd](https://github.com/djhojd) ([#14656](https://github.com/community-scripts/ProxmoxVE/pull/14656))
|
|
||||||
|
|
||||||
## 2026-05-22
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- bitfocus-companion ([#14603](https://github.com/community-scripts/ProxmoxVE/pull/14603))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix(the-lounge): install Node.js 22 before deb package [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14648](https://github.com/community-scripts/ProxmoxVE/pull/14648))
|
|
||||||
- Docmost: Fix duplicate STORAGE_DRIVER [@MickLesk](https://github.com/MickLesk) ([#14645](https://github.com/community-scripts/ProxmoxVE/pull/14645))
|
|
||||||
- Profilarr: pin Deno version to v2.7.5 [@MickLesk](https://github.com/MickLesk) ([#14632](https://github.com/community-scripts/ProxmoxVE/pull/14632))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- add: karakeep cli wrapper [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14618](https://github.com/community-scripts/ProxmoxVE/pull/14618))
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- OpenCloud: v7.0.0 changes [@vhsdream](https://github.com/vhsdream) ([#14650](https://github.com/community-scripts/ProxmoxVE/pull/14650))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- workflows: update workflows, templates to support arm64. [@asylumexp](https://github.com/asylumexp) ([#14653](https://github.com/community-scripts/ProxmoxVE/pull/14653))
|
|
||||||
- SoulSync: setup Node v22 and build WebUI [@MickLesk](https://github.com/MickLesk) ([#14639](https://github.com/community-scripts/ProxmoxVE/pull/14639))
|
|
||||||
- Refactor: Dispatcharr [@MickLesk](https://github.com/MickLesk) ([#14313](https://github.com/community-scripts/ProxmoxVE/pull/14313))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- fix: make LXC banner OS detection dynamic via /etc/os-release [@atahan99](https://github.com/atahan99) ([#14269](https://github.com/community-scripts/ProxmoxVE/pull/14269))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- core: suppress MOTD for non-interactive shells [@MickLesk](https://github.com/MickLesk) ([#14638](https://github.com/community-scripts/ProxmoxVE/pull/14638))
|
|
||||||
+2
-2
@@ -54,5 +54,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 IP:${CL}"
|
echo -e "${INFO}${YW}Access it using the following IP:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
@@ -58,5 +58,3 @@ 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}:3100${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}"
|
||||||
echo -e "${INFO}${YW}Access Promtail using the following URL:${CL}"
|
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:9080${CL}"
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ function update_script() {
|
|||||||
INSTALLED=$(cat ~/.airflow 2>/dev/null || echo "0")
|
INSTALLED=$(cat ~/.airflow 2>/dev/null || echo "0")
|
||||||
LATEST=$(curl -fsSL "https://pypi.org/pypi/apache-airflow/json" | jq -r '.info.version')
|
LATEST=$(curl -fsSL "https://pypi.org/pypi/apache-airflow/json" | jq -r '.info.version')
|
||||||
|
|
||||||
if [[ "$INSTALLED" == "$LATEST" ]]; then
|
if [[ $INSTALLED == "$LATEST" ]]; then
|
||||||
msg_ok "Already on the latest version (${LATEST})"
|
msg_ok "Already on the latest version (${LATEST})"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
+60
-60
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -r MAJOR MINOR PATCH <<< "$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
|
read -r MAJOR MINOR PATCH <<<"$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
|
||||||
|
|
||||||
msg_info "Update dependencies"
|
msg_info "Update dependencies"
|
||||||
ensure_dependencies crossbuild-essential-$(arch_resolve) gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu cmake clang libunwind-18-dev
|
ensure_dependencies crossbuild-essential-$(arch_resolve) gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu cmake clang libunwind-18-dev
|
||||||
@@ -66,26 +66,26 @@ function update_script() {
|
|||||||
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
|
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop authentik-server authentik-worker
|
systemctl stop authentik-server authentik-worker
|
||||||
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
|
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
|
||||||
systemctl stop authentik-ldap
|
systemctl stop authentik-ldap
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-active authentik-rac) == active ]]; then
|
if [[ $(systemctl is-active authentik-rac) == active ]]; then
|
||||||
systemctl stop authentik-rac
|
systemctl stop authentik-rac
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-active authentik-radius) == active ]]; then
|
if [[ $(systemctl is-active authentik-radius) == active ]]; then
|
||||||
systemctl stop authentik-radius
|
systemctl stop authentik-radius
|
||||||
fi
|
fi
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
||||||
|
|
||||||
msg_info "Configuring rust"
|
msg_info "Configuring rust"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD rustup install
|
$STD rustup install
|
||||||
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
|
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
|
||||||
msg_ok "Configured rust"
|
msg_ok "Configured rust"
|
||||||
|
|
||||||
msg_info "Updating web"
|
msg_info "Updating web"
|
||||||
cd /opt/authentik/web
|
cd /opt/authentik/web
|
||||||
export NODE_ENV="production"
|
export NODE_ENV="production"
|
||||||
$STD npm install
|
$STD npm install
|
||||||
@@ -99,18 +99,18 @@ function update_script() {
|
|||||||
export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc"
|
export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc"
|
||||||
$STD go mod download
|
$STD go mod download
|
||||||
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
||||||
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
||||||
$STD go build -o /opt/authentik/rac ./cmd/rac
|
$STD go build -o /opt/authentik/rac ./cmd/rac
|
||||||
$STD go build -o /opt/authentik/radius ./cmd/radius
|
$STD go build -o /opt/authentik/radius ./cmd/radius
|
||||||
msg_ok "Updated go proxy"
|
msg_ok "Updated go proxy"
|
||||||
|
|
||||||
msg_info "Building worker"
|
msg_info "Building worker"
|
||||||
export AWS_LC_FIPS_SYS_CC="clang"
|
export AWS_LC_FIPS_SYS_CC="clang"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
|
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
|
||||||
cp ./target/release/authentik /opt/authentik/authentik-worker
|
cp ./target/release/authentik /opt/authentik/authentik-worker
|
||||||
rm -r ./target
|
rm -r ./target
|
||||||
msg_ok "Built worker"
|
msg_ok "Built worker"
|
||||||
|
|
||||||
msg_info "Updating python server"
|
msg_info "Updating python server"
|
||||||
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||||
@@ -125,26 +125,26 @@ function update_script() {
|
|||||||
msg_ok "Updated python server"
|
msg_ok "Updated python server"
|
||||||
|
|
||||||
if [[ $MAJOR == 2026 && $MINOR -lt 5 ]]; then
|
if [[ $MAJOR == 2026 && $MINOR -lt 5 ]]; then
|
||||||
msg_info "Updating Worker and Server config"
|
msg_info "Updating Worker and Server config"
|
||||||
cp /etc/authentik/config.yml /etc/authentik/config.bak
|
cp /etc/authentik/config.yml /etc/authentik/config.bak
|
||||||
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
|
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
|
||||||
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
|
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
|
||||||
yq -i ".listen.debug_tokio = \"[::]:6669\"" /etc/authentik/config.yml
|
yq -i '.listen.debug_tokio = "[::]:6669"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.console_subscriber = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.console_subscriber = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.h2 = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.h2 = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.hyper_util = \"warn\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.hyper_util = "warn"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.mio = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.mio = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.notify = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.notify = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.reqwest = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.reqwest = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.runtime = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.runtime = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.rustls = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.rustls = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.sqlx = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.sqlx = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.sqlx_postgres = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.sqlx_postgres = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.tokio = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.tokio = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.tungstenite = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.tungstenite = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".web.workers = 2" /etc/authentik/config.yml
|
yq -i ".web.workers = 2" /etc/authentik/config.yml
|
||||||
mv /etc/default/authentik /etc/default/authentik.bak
|
mv /etc/default/authentik /etc/default/authentik.bak
|
||||||
cat <<EOF >/etc/default/authentik-server
|
cat <<EOF >/etc/default/authentik-server
|
||||||
TMPDIR=/dev/shm/
|
TMPDIR=/dev/shm/
|
||||||
UV_LINK_MODE=copy
|
UV_LINK_MODE=copy
|
||||||
UV_PYTHON_DOWNLOADS=0
|
UV_PYTHON_DOWNLOADS=0
|
||||||
@@ -159,7 +159,7 @@ AUTHENTIK_LISTEN__HTTP="[::]:9000"
|
|||||||
AUTHENTIK_LISTEN__HTTPS="[::]:9443"
|
AUTHENTIK_LISTEN__HTTPS="[::]:9443"
|
||||||
AUTHENTIK_LISTEN__METRICS="[::]:9300"
|
AUTHENTIK_LISTEN__METRICS="[::]:9300"
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >/etc/default/authentik-worker
|
cat <<EOF >/etc/default/authentik-worker
|
||||||
TMPDIR=/dev/shm/
|
TMPDIR=/dev/shm/
|
||||||
UV_LINK_MODE=copy
|
UV_LINK_MODE=copy
|
||||||
UV_PYTHON_DOWNLOADS=0
|
UV_PYTHON_DOWNLOADS=0
|
||||||
@@ -174,11 +174,11 @@ AUTHENTIK_LISTEN__HTTP="[::]:8000"
|
|||||||
AUTHENTIK_LISTEN__HTTPS="[::]:8443"
|
AUTHENTIK_LISTEN__HTTPS="[::]:8443"
|
||||||
AUTHENTIK_LISTEN__METRICS="[::]:8300"
|
AUTHENTIK_LISTEN__METRICS="[::]:8300"
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Updated Worker and Server config!"
|
msg_ok "Updated Worker and Server config!"
|
||||||
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
|
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
|
||||||
|
|
||||||
msg_info "Updating services"
|
msg_info "Updating services"
|
||||||
cat <<EOF >/etc/systemd/system/authentik-server.service
|
cat <<EOF >/etc/systemd/system/authentik-server.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=authentik Go Server (API Gateway)
|
Description=authentik Go Server (API Gateway)
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -198,7 +198,7 @@ EnvironmentFile=/etc/default/authentik-server
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=authentik Worker
|
Description=authentik Worker
|
||||||
After=network.target postgresql.service
|
After=network.target postgresql.service
|
||||||
@@ -217,21 +217,21 @@ RestartSec=5
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
msg_ok "Updated services"
|
msg_ok "Updated services"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start authentik-server authentik-worker
|
systemctl start authentik-server authentik-worker
|
||||||
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
|
||||||
systemctl start authentik-ldap
|
systemctl start authentik-ldap
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
|
||||||
systemctl start authentik-rac
|
systemctl start authentik-rac
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
|
||||||
systemctl start authentik-radius
|
systemctl start authentik-radius
|
||||||
fi
|
fi
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
@@ -270,5 +270,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 "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
||||||
|
|||||||
+2
-2
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
+2
-2
@@ -75,5 +75,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
+2
-2
@@ -41,5 +41,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 "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
||||||
|
|||||||
+2
-2
@@ -52,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}Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW}Authenticate your AI providers via the management panel at:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:8317${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8317/management.html${CL}"
|
||||||
|
|||||||
+1
-1
@@ -52,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} Access cross-seed API using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access cross-seed API using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:2468${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:2468${CL}"
|
||||||
|
|||||||
+4
-4
@@ -26,8 +26,8 @@ function update_script() {
|
|||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/cyberchef ]]; then
|
if [[ ! -d /opt/cyberchef ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "cyberchef" "gchq/CyberChef"; then
|
if check_for_gh_release "cyberchef" "gchq/CyberChef"; then
|
||||||
@@ -58,5 +58,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
|||||||
+3
-3
@@ -52,11 +52,11 @@ function update_script() {
|
|||||||
[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
||||||
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-${MONGO_ARCH}-100.16.1.deb"
|
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-${MONGO_ARCH}-100.16.1.deb"
|
||||||
fi
|
fi
|
||||||
|
ensure_dependencies mariadb-client
|
||||||
|
mkdir -p /usr/local/mariadb-{10.6,12.1}/bin /usr/local/mysql-{5.7,8.0,8.4,9}/bin /usr/local/mongodb-database-tools/bin
|
||||||
[[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump
|
[[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump
|
||||||
[[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
[[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
||||||
# Create MariaDB and MySQL client symlinks for compatibility
|
# Create MariaDB and MySQL client symlinks for compatibility
|
||||||
ensure_dependencies mariadb-client
|
|
||||||
mkdir -p /usr/local/mariadb-{10.6,12.1}/bin /usr/local/mysql-{5.7,8.0,8.4,9}/bin /usr/local/mongodb-database-tools/bin
|
|
||||||
for dir in /usr/local/mariadb-{10.6,12.1}/bin; do
|
for dir in /usr/local/mariadb-{10.6,12.1}/bin; do
|
||||||
ln -sf /usr/bin/mariadb-dump "$dir/mariadb-dump"
|
ln -sf /usr/bin/mariadb-dump "$dir/mariadb-dump"
|
||||||
ln -sf /usr/bin/mariadb "$dir/mariadb"
|
ln -sf /usr/bin/mariadb "$dir/mariadb"
|
||||||
@@ -79,7 +79,7 @@ function update_script() {
|
|||||||
cd /opt/databasus/backend
|
cd /opt/databasus/backend
|
||||||
$STD go mod download
|
$STD go mod download
|
||||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd
|
||||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||||
mkdir -p /opt/databasus/ui/build
|
mkdir -p /opt/databasus/ui/build
|
||||||
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@ function update_script() {
|
|||||||
create_backup /opt/degoog/.env \
|
create_backup /opt/degoog/.env \
|
||||||
/opt/degoog/data
|
/opt/degoog/data
|
||||||
|
|
||||||
if ! command -v bun >/dev/null 2>&1; then
|
if [[ ! -x /root/.bun/bin/bun ]]; then
|
||||||
msg_info "Installing Bun"
|
msg_info "Installing Bun"
|
||||||
export BUN_INSTALL="/root/.bun"
|
export BUN_INSTALL="/root/.bun"
|
||||||
curl -fsSL https://bun.sh/install | $STD bash
|
curl -fsSL https://bun.sh/install | $STD bash
|
||||||
@@ -52,7 +52,7 @@ function update_script() {
|
|||||||
msg_ok "Updated Valkey"
|
msg_ok "Updated Valkey"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz"
|
fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-yes}"
|
var_arm64="${var_arm64:-no}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -31,7 +31,7 @@ function update_script() {
|
|||||||
msg_info "Updating Deluge"
|
msg_info "Updating Deluge"
|
||||||
ensure_dependencies python3-setuptools
|
ensure_dependencies python3-setuptools
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD pip3 install deluge[all] --upgrade
|
$STD pip3 install deluge[all] "pyopenssl<25" --upgrade
|
||||||
msg_ok "Updated Deluge"
|
msg_ok "Updated Deluge"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ function update_script() {
|
|||||||
eval "$(rbenv init - bash)" 2>/dev/null || true
|
eval "$(rbenv init - bash)" 2>/dev/null || true
|
||||||
export RAILS_ENV=production
|
export RAILS_ENV=production
|
||||||
export NODE_ENV=production
|
export NODE_ENV=production
|
||||||
export SECRET_KEY_BASE_DUMMY=1
|
mkdir -p /opt/docuseal/tmp
|
||||||
set -a
|
set -a
|
||||||
source /opt/docuseal/.env
|
source /opt/docuseal/.env
|
||||||
set +a
|
set +a
|
||||||
|
|||||||
+4
-7
@@ -36,7 +36,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
cp /opt/endurain/.env /opt/endurain.env
|
cp /opt/endurain/.env /opt/endurain.env
|
||||||
cp /opt/endurain/frontend/app/dist/env.js /opt/endurain.env.js
|
cp /opt/endurain/frontend/dist/env.js /opt/endurain.env.js
|
||||||
msg_ok "Created Backup"
|
msg_ok "Created Backup"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_codeberg_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
|
CLEAN_INSTALL=1 fetch_and_deploy_codeberg_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
|
||||||
@@ -52,10 +52,10 @@ function update_script() {
|
|||||||
msg_ok "Prepared Update"
|
msg_ok "Prepared Update"
|
||||||
|
|
||||||
msg_info "Updating Frontend"
|
msg_info "Updating Frontend"
|
||||||
cd /opt/endurain/frontend/app
|
cd /opt/endurain/frontend
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
cp /opt/endurain.env.js /opt/endurain/frontend/app/dist/env.js
|
cp /opt/endurain.env.js /opt/endurain/frontend/dist/env.js
|
||||||
rm /opt/endurain.env.js
|
rm /opt/endurain.env.js
|
||||||
msg_ok "Updated Frontend"
|
msg_ok "Updated Frontend"
|
||||||
|
|
||||||
@@ -63,10 +63,7 @@ function update_script() {
|
|||||||
cd /opt/endurain/backend
|
cd /opt/endurain/backend
|
||||||
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
|
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
|
||||||
UV_VERSION="$UV_VERSION" setup_uv
|
UV_VERSION="$UV_VERSION" setup_uv
|
||||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
$STD uv sync --frozen --no-dev
|
||||||
$STD uv venv --clear
|
|
||||||
$STD uv pip install -r requirements.txt
|
|
||||||
$STD uv pip install pytz
|
|
||||||
msg_ok "Backend Updated"
|
msg_ok "Backend Updated"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
+57
-3
@@ -29,9 +29,63 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ERPNext"
|
|
||||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
FRAPPE_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||||
msg_ok "Updated ERPNext"
|
SITE="$(ls /opt/frappe-bench/sites/*/site_config.json 2>/dev/null | head -1 | cut -d/ -f5)"
|
||||||
|
[[ -z "$SITE" ]] && SITE="site1.local"
|
||||||
|
|
||||||
|
msg_info "Stopping ERPNext service"
|
||||||
|
$STD supervisorctl stop all
|
||||||
|
msg_ok "Stopped ERPNext service"
|
||||||
|
|
||||||
|
if [[ "${FRAPPE_MAJOR:-0}" -lt 16 ]] && { [[ "${PHS_SILENT:-0}" == "1" ]] || whiptail --backtitle "Proxmox VE Helper Scripts" --title "ERPNext v16 Major Upgrade" \
|
||||||
|
--yesno "A major upgrade from Frappe/ERPNext v15 to v16 is available.\n\nUpgrade to v16 now?" 16 78; }; then
|
||||||
|
|
||||||
|
msg_info "Backing up site ${SITE}"
|
||||||
|
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} backup"
|
||||||
|
msg_ok "Backup created"
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y pkg-config
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && uv python install 3.14'
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Migrating bench environment"
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench migrate-env "$(uv python find 3.14)"'
|
||||||
|
msg_ok "Migrated environment"
|
||||||
|
|
||||||
|
msg_info "Switching Frappe and ERPNext to v16 (Patience)"
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench switch-to-branch version-16 frappe erpnext --upgrade' || true
|
||||||
|
NEW_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||||
|
if [[ "${NEW_MAJOR:-0}" -lt 16 ]]; then
|
||||||
|
msg_error "Failed to switch Frappe/ERPNext to v16"
|
||||||
|
exit 250
|
||||||
|
fi
|
||||||
|
msg_ok "Switched to v16"
|
||||||
|
|
||||||
|
msg_info "Running database migration (Patience)"
|
||||||
|
for i in 1 2 3; do
|
||||||
|
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} migrate" && break
|
||||||
|
[[ "$i" -eq 3 ]] && {
|
||||||
|
msg_error "Database migration failed after 3 attempts"
|
||||||
|
exit 253
|
||||||
|
}
|
||||||
|
done
|
||||||
|
msg_ok "Database migrated"
|
||||||
|
|
||||||
|
msg_info "Building assets"
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench build --production'
|
||||||
|
msg_ok "Assets built"
|
||||||
|
|
||||||
|
msg_info "Restarting ERPNext"
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench restart'
|
||||||
|
msg_ok "Upgraded ERPNext to v16"
|
||||||
|
else
|
||||||
|
msg_info "Updating ERPNext"
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
||||||
|
msg_ok "Updated ERPNext"
|
||||||
|
fi
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Executable
+65
@@ -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: John McLear (JohnMcLear)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://etherpad.org
|
||||||
|
|
||||||
|
APP="Etherpad"
|
||||||
|
var_tags="${var_tags:-docs;collaboration;editor}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/etherpad-lite ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "etherpad-lite" "ether/etherpad"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop etherpad
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/etherpad-lite/.env /opt/etherpad-lite/APIKEY.txt /opt/etherpad-lite/settings.json
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "etherpad-lite" "ether/etherpad" "tarball"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Rebuilding Etherpad"
|
||||||
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
$STD corepack enable
|
||||||
|
cd /opt/etherpad-lite
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm run build:etherpad
|
||||||
|
msg_ok "Rebuilt Etherpad"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start etherpad
|
||||||
|
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}:9001${CL}"
|
||||||
@@ -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/ZimengXiong/ExcaliDash
|
||||||
|
|
||||||
|
APP="ExcaliDash"
|
||||||
|
var_tags="${var_tags:-documents;drawing;collaboration}"
|
||||||
|
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}"
|
||||||
|
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/excalidash ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "excalidash" "ZimengXiong/ExcaliDash"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop excalidash
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidash" "ZimengXiong/ExcaliDash" "tarball"
|
||||||
|
ln -sf /opt/excalidash_data/.env /opt/excalidash/backend/.env
|
||||||
|
set -a && source /opt/excalidash_data/.env && set +a
|
||||||
|
|
||||||
|
msg_info "Configuring Database Provider (${DATABASE_PROVIDER:-sqlite})"
|
||||||
|
cd /opt/excalidash/backend
|
||||||
|
sed -i '/datasource db {/,/}/ s/provider = env("[^"]*")/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma
|
||||||
|
mv prisma/migrations/"${DATABASE_PROVIDER:-sqlite}"/* prisma/migrations/
|
||||||
|
rm -rf prisma/migrations/postgresql prisma/migrations/sqlite
|
||||||
|
msg_ok "Configured Database Provider"
|
||||||
|
|
||||||
|
msg_info "Rebuilding Application"
|
||||||
|
$STD npm ci
|
||||||
|
$STD npx prisma generate
|
||||||
|
$STD npx tsc
|
||||||
|
cd /opt/excalidash/frontend
|
||||||
|
$STD npm ci
|
||||||
|
$STD npm run build
|
||||||
|
cp -r /opt/excalidash/frontend/dist/. /var/www/excalidash/
|
||||||
|
msg_ok "Rebuilt Application"
|
||||||
|
|
||||||
|
msg_info "Running Migrations"
|
||||||
|
cd /opt/excalidash/backend
|
||||||
|
$STD npx prisma migrate deploy
|
||||||
|
msg_ok "Ran Migrations"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start excalidash
|
||||||
|
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}:6767${CL}"
|
||||||
+2
-2
@@ -75,5 +75,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 "${TAB}${GATEWAY}${BGN}http://${IP}:9180${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:9180${CL}"
|
||||||
|
|||||||
+69
@@ -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: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/pawelmalak/flame
|
||||||
|
|
||||||
|
APP="Flame"
|
||||||
|
var_tags="${var_tags:-dashboard;startpage}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_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/flame ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "flame" "pawelmalak/flame"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop flame
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/flame/.env \
|
||||||
|
/opt/flame/data
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Rebuilding Application"
|
||||||
|
cd /opt/flame
|
||||||
|
mkdir -p data public
|
||||||
|
$STD npm install --production
|
||||||
|
cd /opt/flame/client
|
||||||
|
$STD npm install --production
|
||||||
|
$STD npm run build
|
||||||
|
cd /opt/flame
|
||||||
|
cp -r client/build/. public/
|
||||||
|
msg_ok "Rebuilt Application"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start flame
|
||||||
|
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}:5005${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: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://gitlab.com/fmd-foss/fmd-server
|
||||||
|
|
||||||
|
APP="FMD-Server"
|
||||||
|
var_tags="${var_tags:-FMD}"
|
||||||
|
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 [[ ! -d /opt/fmd-server ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gl_release "fmd-server" "fmd-foss/fmd-server"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop fmd-server
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/fmd-server/config.yml /opt/fmd-server/db
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "fmd-server" "fmd-foss/fmd-server" "prebuild" "latest" "/opt/fmd-server" "fmd-server-*.zip"
|
||||||
|
|
||||||
|
msg_info "Configuring FMD-Server"
|
||||||
|
cd /opt/fmd-server
|
||||||
|
chmod +x fmd-server-*
|
||||||
|
msg_ok "Configured FMD-Server"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start fmd-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}https://${IP}:8443${CL}"
|
||||||
-57
@@ -1,57 +0,0 @@
|
|||||||
#!/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: fabrice1236
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://ghost.org/ | Github: https://github.com/TryGhost/Ghost
|
|
||||||
|
|
||||||
APP="Ghost"
|
|
||||||
var_tags="${var_tags:-cms;blog}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-5}"
|
|
||||||
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
|
|
||||||
|
|
||||||
setup_mariadb
|
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
|
||||||
ensure_dependencies git
|
|
||||||
|
|
||||||
msg_info "Updating Ghost"
|
|
||||||
if command -v ghost &>/dev/null; then
|
|
||||||
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
|
|
||||||
latest_version=$(npm show ghost-cli version)
|
|
||||||
if [ "$current_version" != "$latest_version" ]; then
|
|
||||||
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
|
|
||||||
$STD npm install -g ghost-cli@latest
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
else
|
|
||||||
msg_ok "${APP} is already at v${current_version}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
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}:2368${CL}"
|
|
||||||
@@ -85,8 +85,13 @@ function update_script() {
|
|||||||
cd /opt/gramps-web/frontend
|
cd /opt/gramps-web/frontend
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
|
||||||
|
create_backup /opt/gramps-web/frontend/dist/config.js
|
||||||
|
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
msg_ok "Updated Gramps Web Frontend"
|
msg_ok "Updated Gramps Web Frontend"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
@@ -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 @@
|
|||||||
|
_____ ____ __ __
|
||||||
|
/ ___/____ ____ _____ / __ \/ /_/ /____ _____
|
||||||
|
\__ \/ __ \/ __ `/ __ \/ / / / __/ __/ _ \/ ___/
|
||||||
|
___/ / / / / /_/ / /_/ / /_/ / /_/ /_/ __/ /
|
||||||
|
/____/_/ /_/\__,_/ .___/\____/\__/\__/\___/_/
|
||||||
|
/_/
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
_ ______ ____ _____
|
|
||||||
| | /| / / __ `/ _ \/ ___/
|
|
||||||
| |/ |/ / /_/ / __/ /
|
|
||||||
|__/|__/\__, /\___/_/
|
|
||||||
/____/
|
|
||||||
@@ -30,7 +30,6 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if check_for_gh_release "hev-socks5-server" "heiher/hev-socks5-server"; then
|
if check_for_gh_release "hev-socks5-server" "heiher/hev-socks5-server"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop hev-socks5-server
|
systemctl stop hev-socks5-server
|
||||||
@@ -52,6 +51,6 @@ 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 with a SOCKS5 client using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access it with a SOCKS5 client using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}${IP}:1080${CL}"
|
echo -e "${GATEWAY}${BGN}${IP}:1080${CL}"
|
||||||
echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}"
|
echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}"
|
||||||
|
|||||||
+7
-2
@@ -35,6 +35,11 @@ function update_script() {
|
|||||||
systemctl stop redis-server
|
systemctl stop redis-server
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
if ! grep -q "source /opt/homarr.env" /usr/bin/homarr 2>/dev/null; then
|
||||||
|
echo $'#!/bin/bash\nset -a\nsource /opt/homarr.env\nset +a\ncd /opt/homarr/apps/cli && timeout 10 node ./cli.cjs "$@"' >/usr/bin/homarr
|
||||||
|
chmod +x /usr/bin/homarr
|
||||||
|
fi
|
||||||
|
|
||||||
if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then
|
if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then
|
||||||
msg_info "Fixing old structure"
|
msg_info "Fixing old structure"
|
||||||
systemctl disable -q --now nginx
|
systemctl disable -q --now nginx
|
||||||
@@ -51,7 +56,7 @@ function update_script() {
|
|||||||
ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -/etc/redis
|
ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -/etc/redis
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
rm /opt/run_homarr.sh
|
rm -f /opt/run_homarr.sh
|
||||||
msg_ok "Fixed old structure"
|
msg_ok "Fixed old structure"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -68,7 +73,7 @@ EOF
|
|||||||
cp /opt/homarr/redis.conf /etc/redis/redis.conf
|
cp /opt/homarr/redis.conf /etc/redis/redis.conf
|
||||||
sed -i -e '$a\' /etc/redis/redis.conf
|
sed -i -e '$a\' /etc/redis/redis.conf
|
||||||
grep -q '^bind 127.0.0.1 -::1$' /etc/redis/redis.conf || echo "bind 127.0.0.1 -::1" >> /etc/redis/redis.conf
|
grep -q '^bind 127.0.0.1 -::1$' /etc/redis/redis.conf || echo "bind 127.0.0.1 -::1" >> /etc/redis/redis.conf
|
||||||
rm /etc/nginx/nginx.conf
|
rm -f /etc/nginx/nginx.conf
|
||||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
||||||
msg_ok "Updated Homarr"
|
msg_ok "Updated Homarr"
|
||||||
|
|
||||||
|
|||||||
+70
-28
@@ -110,7 +110,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="v2.7.5"
|
RELEASE="v3.0.1"
|
||||||
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||||
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
||||||
msg_info "Enabling Maintenance Mode"
|
msg_info "Enabling Maintenance Mode"
|
||||||
@@ -124,9 +124,14 @@ EOF
|
|||||||
systemctl stop immich-web
|
systemctl stop immich-web
|
||||||
systemctl stop immich-ml
|
systemctl stop immich-ml
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
VCHORD_RELEASE="0.5.3"
|
VCHORD_RELEASE="1.0.0"
|
||||||
[[ -f ~/.vchord_version ]] && mv ~/.vchord_version ~/.vectorchord
|
[[ -f ~/.vchord_version ]] && mv ~/.vchord_version ~/.vectorchord
|
||||||
if check_for_gh_release "VectorChord" "tensorchord/VectorChord" "${VCHORD_RELEASE}" "updated together with Immich after testing"; then
|
if check_for_gh_release "VectorChord" "tensorchord/VectorChord" "${VCHORD_RELEASE}" "updated together with Immich after testing"; then
|
||||||
|
# dead tuples in smart_search/face_search make the REINDEX below fail with
|
||||||
|
# "missing chunk ... for toast value" on VectorChord 1.0.0 (#15588); must vacuum
|
||||||
|
# while still on the old extension version, a post-upgrade vacuum errors instead
|
||||||
|
$STD sudo -u postgres psql -d immich -c "VACUUM (ANALYZE) smart_search;"
|
||||||
|
$STD sudo -u postgres psql -d immich -c "VACUUM (ANALYZE) face_search;"
|
||||||
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-16-vchord_*_$(arch_resolve).deb"
|
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-16-vchord_*_$(arch_resolve).deb"
|
||||||
systemctl restart postgresql
|
systemctl restart postgresql
|
||||||
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vector UPDATE;"
|
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vector UPDATE;"
|
||||||
@@ -140,7 +145,7 @@ EOF
|
|||||||
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
||||||
SRC_DIR="${INSTALL_DIR}/source"
|
SRC_DIR="${INSTALL_DIR}/source"
|
||||||
APP_DIR="${INSTALL_DIR}/app"
|
APP_DIR="${INSTALL_DIR}/app"
|
||||||
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
PLUGIN_DIR="${APP_DIR}/plugins/immich-plugin-core"
|
||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
|
|
||||||
@@ -168,19 +173,21 @@ EOF
|
|||||||
setup_uv
|
setup_uv
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "${RELEASE}" "$SRC_DIR"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "${RELEASE}" "$SRC_DIR"
|
||||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)"
|
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)"
|
||||||
NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
export CI=1
|
||||||
|
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||||
|
$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate
|
||||||
|
export PATH="/root/.local/share/pnpm/bin:$PATH"
|
||||||
|
$STD pnpm config set --global dangerouslyAllowAllBuilds true
|
||||||
|
|
||||||
msg_info "Updating Immich web and microservices"
|
msg_info "Updating Immich web and microservices"
|
||||||
cd "$SRC_DIR"/server
|
cd "$SRC_DIR"/server
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
|
||||||
export CI=1
|
|
||||||
|
|
||||||
# server build
|
# server build
|
||||||
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
||||||
$STD pnpm --filter immich --frozen-lockfile build
|
$STD pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter immich build
|
||||||
unset SHARP_IGNORE_GLOBAL_LIBVIPS
|
unset SHARP_IGNORE_GLOBAL_LIBVIPS
|
||||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
$STD pnpm --filter immich --prod --no-optional deploy "$APP_DIR"
|
||||||
|
|
||||||
# Patch helmet.json: disable upgrade-insecure-requests for HTTP access
|
# Patch helmet.json: disable upgrade-insecure-requests for HTTP access
|
||||||
if [[ -f "$APP_DIR/helmet.json" ]]; then
|
if [[ -f "$APP_DIR/helmet.json" ]]; then
|
||||||
@@ -190,32 +197,50 @@ EOF
|
|||||||
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||||
sed -i "s|^start|${APP_DIR}/bin/start|" "$APP_DIR"/bin/immich-admin
|
sed -i "s|^start|${APP_DIR}/bin/start|" "$APP_DIR"/bin/immich-admin
|
||||||
|
|
||||||
# openapi & web build
|
# sdk, cli & web build
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
|
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
|
||||||
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
|
||||||
unset SHARP_FORCE_GLOBAL_LIBVIPS
|
unset SHARP_FORCE_GLOBAL_LIBVIPS
|
||||||
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
||||||
$STD pnpm --filter @immich/sdk --filter immich-web build
|
$STD pnpm --filter @immich/sdk --filter immich-web --filter @immich/cli build
|
||||||
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
|
|
||||||
# cli build
|
|
||||||
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
|
||||||
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
|
||||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
|
||||||
[[ -f "$INSTALL_DIR"/start.sh ]] && mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
[[ -f "$INSTALL_DIR"/start.sh ]] && mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
$STD mise trust --ignore ./mise.toml
|
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
||||||
$STD mise trust ./plugins/mise.toml
|
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
||||||
cd plugins
|
|
||||||
$STD mise install
|
$STD mise install
|
||||||
$STD mise run build
|
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
||||||
|
if ! command -v extism-js >/dev/null 2>&1; then
|
||||||
|
# extism-js ships as a bare gzip-compressed single binary (.gz) that
|
||||||
|
# fetch_and_deploy_gh_release cannot deploy; fetch + gunzip it directly.
|
||||||
|
EXTISM_ARCH="$(arch_resolve x86_64 aarch64)"
|
||||||
|
curl_download /tmp/extism-js.gz "https://github.com/extism/js-pdk/releases/download/v1.6.0/extism-js-${EXTISM_ARCH}-linux-v1.6.0.gz"
|
||||||
|
gunzip -f /tmp/extism-js.gz
|
||||||
|
install -m 0755 /tmp/extism-js /usr/local/bin/extism-js
|
||||||
|
rm -f /tmp/extism-js
|
||||||
|
fi
|
||||||
|
if ! command -v wasm-merge >/dev/null 2>&1; then
|
||||||
|
# extism-js needs binaryen's `wasm-merge` to build the plugin wasm. mise
|
||||||
|
# 2026.7.0's github backend no longer exposes `wasm-merge` on PATH (ubi only
|
||||||
|
# extracts a single binary), so install the pinned binaryen release from
|
||||||
|
# mise.toml directly. The extracted bin/ keeps libbinaryen.so alongside it.
|
||||||
|
BINARYEN_VERSION="$(grep -oiP 'binaryen"\s*=\s*"\Kversion_[0-9]+' "$SRC_DIR"/mise.toml | head -n1)"
|
||||||
|
[[ -z "$BINARYEN_VERSION" ]] && BINARYEN_VERSION="version_124"
|
||||||
|
BINARYEN_ARCH="$(arch_resolve x86_64 aarch64)"
|
||||||
|
curl_download /tmp/binaryen.tar.gz "https://github.com/WebAssembly/binaryen/releases/download/${BINARYEN_VERSION}/binaryen-${BINARYEN_VERSION}-${BINARYEN_ARCH}-linux.tar.gz"
|
||||||
|
tar -xzf /tmp/binaryen.tar.gz -C /opt
|
||||||
|
rm -f /tmp/binaryen.tar.gz
|
||||||
|
export PATH="/opt/binaryen-${BINARYEN_VERSION}/bin:$PATH"
|
||||||
|
fi
|
||||||
|
$STD mise exec -- pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter @immich/plugin-core install --frozen-lockfile
|
||||||
|
$STD mise exec -- pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter @immich/plugin-core build
|
||||||
mkdir -p "$PLUGIN_DIR"
|
mkdir -p "$PLUGIN_DIR"
|
||||||
cp -r ./dist "$PLUGIN_DIR"/dist
|
cp -r ./packages/plugin-core/dist "$PLUGIN_DIR"/dist
|
||||||
cp ./manifest.json "$PLUGIN_DIR"
|
cp ./packages/plugin-core/manifest.json "$PLUGIN_DIR"
|
||||||
msg_ok "Updated Immich server, web, cli and plugins"
|
msg_ok "Updated Immich server, web, cli and plugins"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
@@ -231,13 +256,13 @@ EOF
|
|||||||
ML_PYTHON="python3.13"
|
ML_PYTHON="python3.13"
|
||||||
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
||||||
for attempt in $(seq 1 3); do
|
for attempt in $(seq 1 3); do
|
||||||
$STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -Pnu immich uv python install "${ML_PYTHON}" && break
|
||||||
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
||||||
done
|
done
|
||||||
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
||||||
msg_info "Updating Intel OpenVINO machine-learning"
|
msg_info "Updating Intel OpenVINO machine-learning"
|
||||||
for attempt in $(seq 1 3); do
|
for attempt in $(seq 1 3); do
|
||||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -Pnu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||||
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
||||||
done
|
done
|
||||||
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.13/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-313-$(arch_resolve "x86_64" "aarch64")-linux-gnu.so"
|
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.13/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-313-$(arch_resolve "x86_64" "aarch64")-linux-gnu.so"
|
||||||
@@ -246,13 +271,13 @@ EOF
|
|||||||
ML_PYTHON="python3.11"
|
ML_PYTHON="python3.11"
|
||||||
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
||||||
for attempt in $(seq 1 3); do
|
for attempt in $(seq 1 3); do
|
||||||
$STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -Pnu immich uv python install "${ML_PYTHON}" && break
|
||||||
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
||||||
done
|
done
|
||||||
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
||||||
msg_info "Updating machine-learning"
|
msg_info "Updating machine-learning"
|
||||||
for attempt in $(seq 1 3); do
|
for attempt in $(seq 1 3); do
|
||||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -Pnu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||||
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
||||||
done
|
done
|
||||||
msg_ok "Updated machine-learning"
|
msg_ok "Updated machine-learning"
|
||||||
@@ -260,6 +285,23 @@ EOF
|
|||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
cp -a machine-learning/{ann,immich_ml} "$ML_DIR"
|
cp -a machine-learning/{ann,immich_ml} "$ML_DIR"
|
||||||
[[ -f "$INSTALL_DIR"/ml_start.sh ]] && mv "$INSTALL_DIR"/ml_start.sh "$ML_DIR"
|
[[ -f "$INSTALL_DIR"/ml_start.sh ]] && mv "$INSTALL_DIR"/ml_start.sh "$ML_DIR"
|
||||||
|
# Regenerate ml_start.sh if it is missing (e.g. lost by a previously interrupted update),
|
||||||
|
# otherwise immich-ml.service fails to start with status=203/EXEC
|
||||||
|
if [[ ! -f "$ML_DIR"/ml_start.sh ]]; then
|
||||||
|
cat <<EOF >"$ML_DIR"/ml_start.sh
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd ${ML_DIR}
|
||||||
|
. ${VIRTUAL_ENV}/bin/activate
|
||||||
|
|
||||||
|
set -a
|
||||||
|
. ${INSTALL_DIR}/.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
python3 -m immich_ml
|
||||||
|
EOF
|
||||||
|
chmod +x "$ML_DIR"/ml_start.sh
|
||||||
|
fi
|
||||||
[[ -f ~/.openvino ]] && sed -i "/intra_op/s/int = 0/int = os.cpu_count() or 0/" "$ML_DIR"/immich_ml/config.py
|
[[ -f ~/.openvino ]] && sed -i "/intra_op/s/int = 0/int = os.cpu_count() or 0/" "$ML_DIR"/immich_ml/config.py
|
||||||
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
@@ -429,7 +471,7 @@ function compile_imagemagick() {
|
|||||||
|
|
||||||
function compile_libvips() {
|
function compile_libvips() {
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e"
|
LIBVIPS_REVISION="e01a4797cabe77d457fdfa7d776b7a7e7ca6d6a7"
|
||||||
if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libvips"
|
msg_info "Recompiling libvips"
|
||||||
[[ -d "$SOURCE" ]] && rm -rf "$SOURCE"
|
[[ -d "$SOURCE" ]] && rm -rf "$SOURCE"
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#!/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: tteck (tteckster) | MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.iventoy.com/en/index.html
|
||||||
|
|
||||||
|
APP="iVentoy"
|
||||||
|
var_tags="${var_tags:-pxe-tool}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/iventoy ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "iventoy" "ventoy/PXE"; then
|
||||||
|
msg_info "Stopping iVentoy"
|
||||||
|
$STD /opt/iventoy/iventoy.sh stop
|
||||||
|
msg_ok "Stopped iVentoy"
|
||||||
|
|
||||||
|
create_backup /opt/iventoy/data /opt/iventoy/iso
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "iventoy" "ventoy/PXE" "prebuild" "latest" "/opt/iventoy" "iventoy-*-linux-$(arch_resolve x86_64-free arm64-trial).tar.gz"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting iVentoy"
|
||||||
|
$STD /opt/iventoy/iventoy.sh -R start
|
||||||
|
msg_ok "Started iVentoy"
|
||||||
|
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}:26000${CL}"
|
||||||
+4
-4
@@ -37,12 +37,12 @@ function update_script() {
|
|||||||
msg_ok "Updated Package Index"
|
msg_ok "Updated Package Index"
|
||||||
|
|
||||||
CANDIDATE=$(apt-cache policy kiwix-tools | awk '/Candidate:/{print $2}')
|
CANDIDATE=$(apt-cache policy kiwix-tools | awk '/Candidate:/{print $2}')
|
||||||
if [[ -z "$CANDIDATE" || "$CANDIDATE" == "(none)" ]]; then
|
if [[ -z $CANDIDATE || $CANDIDATE == "(none)" ]]; then
|
||||||
msg_error "No Candidate Version Found for kiwix-tools"
|
msg_error "No Candidate Version Found for kiwix-tools"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$CURRENT" == "$CANDIDATE" ]]; then
|
if [[ $CURRENT == "$CANDIDATE" ]]; then
|
||||||
echo "${CURRENT}" >/root/.kiwix
|
echo "${CURRENT}" >/root/.kiwix
|
||||||
msg_ok "Already on latest version: ${CURRENT}"
|
msg_ok "Already on latest version: ${CURRENT}"
|
||||||
exit
|
exit
|
||||||
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: (AminGholizad)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/PanSalut/Koffan
|
||||||
|
|
||||||
|
APP="Koffan"
|
||||||
|
var_tags="${var_tags:-productivity}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_arm64="${var_arm64:-no}"
|
||||||
|
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/koffan/koffan ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "koffan" "PanSalut/Koffan"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop koffan
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/koffan/data
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Rebuilding Koffan"
|
||||||
|
cd /opt/koffan
|
||||||
|
$STD go build -o koffan main.go
|
||||||
|
msg_ok "Rebuild Koffan"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start koffan
|
||||||
|
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}:3000${CL}"
|
||||||
+1
-1
@@ -83,5 +83,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 Kometa Quickstart:${CL}"
|
echo -e "${INFO}${YW}Access Kometa Quickstart:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:7171${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:7171${CL}"
|
||||||
|
|||||||
+25
-17
@@ -24,27 +24,35 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [ ! -d /opt/librenms ]; then
|
if [[ ! -d /opt/librenms ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
setup_mariadb
|
if check_for_gh_release "librenms" "librenms/librenms"; then
|
||||||
ensure_dependencies git
|
msg_info "Stopping Services"
|
||||||
if [[ ! -d /opt/librenms/.git ]]; then
|
systemctl stop php8.4-fpm librenms-scheduler.timer
|
||||||
msg_info "Initializing LibreNMS git metadata"
|
msg_ok "Stopped Services"
|
||||||
LIBRENMS_VERSION=$(cat ~/.librenms 2>/dev/null)
|
|
||||||
cd /opt/librenms
|
create_backup /opt/librenms/.env /opt/librenms/config.php /opt/librenms/rrd
|
||||||
git init -q
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
|
||||||
git remote add origin https://github.com/librenms/librenms.git
|
restore_backup
|
||||||
git fetch --depth 1 origin "refs/tags/v${LIBRENMS_VERSION}" 2>/dev/null ||
|
|
||||||
git fetch --depth 1 origin "refs/tags/${LIBRENMS_VERSION}" 2>/dev/null || true
|
msg_info "Updating LibreNMS"
|
||||||
git checkout -qf FETCH_HEAD 2>/dev/null || true
|
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage}
|
||||||
chown -R librenms:librenms .git
|
chown -R librenms:librenms /opt/librenms
|
||||||
msg_ok "Initialized LibreNMS git metadata"
|
chmod 771 /opt/librenms
|
||||||
|
chmod -R ug=rwX /opt/librenms/bootstrap/cache /opt/librenms/storage /opt/librenms/logs /opt/librenms/rrd
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && uv venv --clear .venv && source .venv/bin/activate && uv pip install -r requirements.txt"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan optimize:clear"
|
||||||
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan migrate --force --isolated"
|
||||||
|
msg_ok "Updated LibreNMS"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start php8.4-fpm librenms-scheduler.timer
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
msg_info "Updating LibreNMS"
|
|
||||||
$STD su - librenms -s /bin/bash -c 'cd /opt/librenms && ./daily.sh'
|
|
||||||
msg_ok "Updated LibreNMS"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+32
-45
@@ -31,53 +31,44 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
CHOICE=$(msg_menu "Loki Update Options" \
|
CHOICE=$(msg_menu "Loki Update Options" \
|
||||||
"1" "Update Loki & Promtail" \
|
"1" "Update Loki" \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"3" "Allow only ${LOCAL_IP} for listening")
|
"3" "Allow only ${LOCAL_IP} for listening")
|
||||||
|
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
msg_info "Stopping Loki"
|
msg_info "Stopping Loki"
|
||||||
systemctl stop loki
|
systemctl stop loki
|
||||||
if systemctl is-active --quiet promtail 2>/dev/null || dpkg -s promtail >/dev/null 2>&1; then
|
msg_ok "Stopped Loki"
|
||||||
systemctl stop promtail
|
|
||||||
fi
|
|
||||||
msg_ok "Stopped Loki"
|
|
||||||
|
|
||||||
msg_info "Updating Loki"
|
msg_info "Updating Loki"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt install -y --only-upgrade loki
|
$STD apt install -y --only-upgrade loki
|
||||||
if dpkg -s promtail >/dev/null 2>&1; then
|
msg_ok "Updated Loki"
|
||||||
$STD apt install -y --only-upgrade promtail
|
|
||||||
fi
|
|
||||||
msg_ok "Updated Loki"
|
|
||||||
|
|
||||||
msg_info "Starting Loki"
|
msg_info "Starting Loki"
|
||||||
systemctl start loki
|
systemctl start loki
|
||||||
if dpkg -s promtail >/dev/null 2>&1; then
|
msg_ok "Started Loki"
|
||||||
systemctl start promtail
|
msg_ok "Updated successfully!"
|
||||||
fi
|
exit
|
||||||
msg_ok "Started Loki"
|
;;
|
||||||
msg_ok "Updated successfully!"
|
2)
|
||||||
exit
|
msg_info "Configuring Loki to listen on 0.0.0.0"
|
||||||
;;
|
sed -i 's/http_listen_address:.*/http_listen_address: 0.0.0.0/' /etc/loki/config.yml
|
||||||
2)
|
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
|
||||||
msg_info "Configuring Loki to listen on 0.0.0.0"
|
systemctl restart loki
|
||||||
sed -i 's/http_listen_address:.*/http_listen_address: 0.0.0.0/' /etc/loki/config.yml
|
msg_ok "Configured Loki to listen on 0.0.0.0"
|
||||||
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
|
exit
|
||||||
systemctl restart loki
|
;;
|
||||||
msg_ok "Configured Loki to listen on 0.0.0.0"
|
3)
|
||||||
exit
|
msg_info "Configuring Loki to listen on ${LOCAL_IP}"
|
||||||
;;
|
sed -i "s/http_listen_address:.*/http_listen_address: $LOCAL_IP/" /etc/loki/config.yml
|
||||||
3)
|
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
|
||||||
msg_info "Configuring Loki to listen on ${LOCAL_IP}"
|
systemctl restart loki
|
||||||
sed -i "s/http_listen_address:.*/http_listen_address: $LOCAL_IP/" /etc/loki/config.yml
|
msg_ok "Configured Loki to listen on ${LOCAL_IP}"
|
||||||
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
|
exit
|
||||||
systemctl restart loki
|
;;
|
||||||
msg_ok "Configured Loki to listen on ${LOCAL_IP}"
|
esac
|
||||||
exit
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,9 +78,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 loki using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access loki using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}\n"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}\n"
|
||||||
if dpkg -s promtail >/dev/null 2>&1; then
|
|
||||||
echo -e "${INFO}${YW} Access promtail using the following URL:${CL}"
|
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:9080${CL}"
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ function update_script() {
|
|||||||
DEB_URL=$(curl_with_retry 'https://lyrion.org/getting-started/' | grep -oP "<a\s[^>]*href=\"\K[^\"]*${DEB_ARCH}\.deb(?=\"[^>]*>)" | head -n 1)
|
DEB_URL=$(curl_with_retry 'https://lyrion.org/getting-started/' | grep -oP "<a\s[^>]*href=\"\K[^\"]*${DEB_ARCH}\.deb(?=\"[^>]*>)" | head -n 1)
|
||||||
RELEASE=$(echo "$DEB_URL" | grep -oP "lyrionmusicserver_\K[0-9.]+(?=_${DEB_ARCH}\.deb)")
|
RELEASE=$(echo "$DEB_URL" | grep -oP "lyrionmusicserver_\K[0-9.]+(?=_${DEB_ARCH}\.deb)")
|
||||||
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_${DEB_ARCH}.deb"
|
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_${DEB_ARCH}.deb"
|
||||||
if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
|
if [[ ! -f /opt/lyrion_version.txt ]] || [[ ${RELEASE} != "$(cat /opt/lyrion_version.txt)" ]]; then
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
curl_with_retry "$DEB_URL" "$DEB_FILE"
|
curl_with_retry "$DEB_URL" "$DEB_FILE"
|
||||||
$STD apt install "$DEB_FILE" -y
|
$STD apt install "$DEB_FILE" -y
|
||||||
@@ -56,5 +56,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 the web interface at:${CL}"
|
echo -e "${INFO}${YW}Access the web interface at:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
CURRENT=$(cat /opt/matter-server/node_modules/matter-server/package.json | grep '"version"' | head -1 | sed 's/.*"\([^"]*\)".*/\1/')
|
CURRENT=$(cat /opt/matter-server/node_modules/matter-server/package.json | grep '"version"' | head -1 | sed 's/.*"\([^"]*\)".*/\1/')
|
||||||
LATEST=$(npm view matter-server version 2>/dev/null)
|
LATEST=$(npm view matter-server version 2>/dev/null)
|
||||||
if [[ "$CURRENT" != "$LATEST" ]]; then
|
if [[ $CURRENT != "$LATEST" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop matterjs-server
|
systemctl stop matterjs-server
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
@@ -60,5 +60,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 "${TAB}${GATEWAY}${BGN}http://${IP}:5580${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:5580${CL}"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ EOF
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$STD npm update -g n8n
|
$STD npm install -g n8n@2.27.5
|
||||||
systemctl restart n8n
|
systemctl restart n8n
|
||||||
msg_ok "Updated n8n"
|
msg_ok "Updated n8n"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|||||||
+1
-1
@@ -44,5 +44,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 NetBird by entering the container and running:${CL}"
|
echo -e "${INFO}${YW}Access NetBird by entering the container and running:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}netbird up${CL}"
|
echo -e "${GATEWAY}${BGN}netbird up${CL}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|
||||||
@@ -60,8 +60,9 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
||||||
|
|
||||||
if check_for_gh_release "openresty" "openresty/openresty"; then
|
OPENRESTY_VERSION="1.29.2.5"
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/openresty" "openresty-*.tar.gz"
|
if [[ "$(cat ~/.openresty 2>/dev/null)" != "$OPENRESTY_VERSION" ]]; then
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_from_url "https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz" "/opt/openresty"
|
||||||
|
|
||||||
msg_info "Building OpenResty"
|
msg_info "Building OpenResty"
|
||||||
cd /opt/openresty
|
cd /opt/openresty
|
||||||
@@ -77,6 +78,7 @@ function update_script() {
|
|||||||
--with-stream_ssl_module
|
--with-stream_ssl_module
|
||||||
$STD make -j"$(nproc)"
|
$STD make -j"$(nproc)"
|
||||||
$STD make install
|
$STD make install
|
||||||
|
echo "${OPENRESTY_VERSION}" >~/.openresty
|
||||||
rm -rf /opt/openresty
|
rm -rf /opt/openresty
|
||||||
cat <<'EOF' >/lib/systemd/system/openresty.service
|
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||||
[Unit]
|
[Unit]
|
||||||
@@ -235,6 +237,9 @@ EOF
|
|||||||
fi
|
fi
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
|
if [ -n "$(command -v node)" ]; then
|
||||||
|
sed -i -E "s|^ExecStart=.*/node index\.js|ExecStart=$(command -v node) index.js|" /lib/systemd/system/npm.service
|
||||||
|
fi
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable -q --now openresty
|
systemctl enable -q --now openresty
|
||||||
systemctl enable -q --now npm
|
systemctl enable -q --now npm
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
|
|
||||||
JAVA_VERSION="21" setup_java
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||||
head -n1)
|
head -n1)
|
||||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="v7.0.0"
|
RELEASE="v7.2.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
|
||||||
|
|||||||
+2
-2
@@ -79,5 +79,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3100${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}"
|
||||||
|
|||||||
+5
-6
@@ -58,12 +58,11 @@ function update_script() {
|
|||||||
-e 's/^NODE_/APP_/' \
|
-e 's/^NODE_/APP_/' \
|
||||||
-e '/^SERVER_*/d' \
|
-e '/^SERVER_*/d' \
|
||||||
-e '/^# API*/,+2d' /opt/patchmon/.env
|
-e '/^# API*/,+2d' /opt/patchmon/.env
|
||||||
{
|
cat <<EOF >/opt/patchmon/.env
|
||||||
echo ""
|
SESSION_SECRET=$(openssl rand -hex 64)
|
||||||
echo "SESSION_SECRET=$(openssl rand -hex 64)"
|
AI_ENCRYPTION_KEY=$(openssl rand -hex 64)
|
||||||
echo "AI_ENCRYPTION_KEY=$(openssl rand -hex 64)"
|
AGENT_BINARIES_DIR=/opt/patchmon/agents
|
||||||
echo "AGENT_BINARIES_DIR=/opt/patchmon/agents"
|
EOF
|
||||||
} >>/opt/patchmon/.env
|
|
||||||
sed -i -e '\|Directory|s|/backend||' \
|
sed -i -e '\|Directory|s|/backend||' \
|
||||||
-e 's|^ExecStart=.*|ExecStart=/opt/patchmon/patchmon-server|' \
|
-e 's|^ExecStart=.*|ExecStart=/opt/patchmon/patchmon-server|' \
|
||||||
-e 's|^Environment=NODE_.*|EnvironmentFile=/opt/patchmon/.env|' \
|
-e 's|^Environment=NODE_.*|EnvironmentFile=/opt/patchmon/.env|' \
|
||||||
|
|||||||
@@ -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: nnsense
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/kieraneglin/pinchflat
|
||||||
|
|
||||||
|
APP="Pinchflat"
|
||||||
|
var_tags="${var_tags:-media;youtube;downloader}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_gpu="${var_gpu:-yes}"
|
||||||
|
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/pinchflat/app ]]; then
|
||||||
|
msg_error "No ${APP} installation found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "pinchflat" "kieraneglin/pinchflat"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop pinchflat
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pinchflat" "kieraneglin/pinchflat" "tarball" "latest" "/opt/pinchflat-src"
|
||||||
|
|
||||||
|
msg_info "Building Pinchflat"
|
||||||
|
cd /opt/pinchflat-src
|
||||||
|
export MIX_ENV=prod
|
||||||
|
export ERL_FLAGS="+JPperf true"
|
||||||
|
$STD mix deps.get --only prod
|
||||||
|
$STD mix deps.compile
|
||||||
|
$STD yarn --cwd assets install
|
||||||
|
$STD mix assets.deploy
|
||||||
|
$STD mix compile
|
||||||
|
$STD mix release --overwrite
|
||||||
|
rm -rf /opt/pinchflat/app
|
||||||
|
cp -r _build/prod/rel/pinchflat /opt/pinchflat/app
|
||||||
|
msg_ok "Built Pinchflat"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start pinchflat
|
||||||
|
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}:8945${CL}"
|
||||||
+6
-6
@@ -38,10 +38,10 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
create_backup /opt/plane/.env \
|
create_backup /opt/plane/.env \
|
||||||
/opt/plane/apps/admin/.env \
|
/opt/plane/apps/admin/.env \
|
||||||
/opt/plane/apps/api/.env \
|
/opt/plane/apps/api/.env \
|
||||||
/opt/plane/apps/space/.env \
|
/opt/plane/apps/space/.env \
|
||||||
/opt/plane/apps/web/.env
|
/opt/plane/apps/web/.env
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "plane" "makeplane/plane" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "plane" "makeplane/plane" "tarball"
|
||||||
|
|
||||||
@@ -86,5 +86,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
|||||||
+3
-4
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
create_backup /opt/postiz/.env \
|
create_backup /opt/postiz/.env \
|
||||||
/opt/postiz/uploads
|
/opt/postiz/uploads
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
|
||||||
|
|
||||||
@@ -56,7 +56,6 @@ function update_script() {
|
|||||||
$STD pnpm run prisma-db-push
|
$STD pnpm run prisma-db-push
|
||||||
msg_ok "Ran Database Migrations"
|
msg_ok "Ran Database Migrations"
|
||||||
|
|
||||||
|
|
||||||
mkdir -p /opt/postiz/uploads
|
mkdir -p /opt/postiz/uploads
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
@@ -74,5 +73,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
|||||||
Executable
+81
@@ -0,0 +1,81 @@
|
|||||||
|
#!/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: gVNS (ggfevans)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/RackulaLives/Rackula
|
||||||
|
|
||||||
|
APP="Rackula"
|
||||||
|
var_tags="${var_tags:-homelab}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-8}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/rackula ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "rackula" "RackulaLives/Rackula"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop rackula-api nginx
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
create_backup /opt/rackula/data
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rackula" "RackulaLives/Rackula" "prebuild" "latest" "/opt/rackula" "rackula-lxc-*.tar.gz"
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Updating Configuration"
|
||||||
|
cp /opt/rackula/config/nginx.conf /etc/nginx/sites-available/rackula
|
||||||
|
cp /opt/rackula/config/security-headers.conf /etc/nginx/snippets/security-headers.conf
|
||||||
|
cp /opt/rackula/config/rackula-api.service /etc/systemd/system/rackula-api.service
|
||||||
|
if grep -q '^User=' /etc/systemd/system/rackula-api.service; then
|
||||||
|
sed -i 's/^User=.*/User=root/' /etc/systemd/system/rackula-api.service
|
||||||
|
else
|
||||||
|
sed -i '/^\[Service\]/a User=root' /etc/systemd/system/rackula-api.service
|
||||||
|
fi
|
||||||
|
if grep -q '^Group=' /etc/systemd/system/rackula-api.service; then
|
||||||
|
sed -i 's/^Group=.*/Group=root/' /etc/systemd/system/rackula-api.service
|
||||||
|
else
|
||||||
|
sed -i '/^\[Service\]/a Group=root' /etc/systemd/system/rackula-api.service
|
||||||
|
fi
|
||||||
|
mkdir -p /etc/systemd/system/nginx.service.d
|
||||||
|
cp /opt/rackula/config/nginx.service.d-override.conf /etc/systemd/system/nginx.service.d/override.conf
|
||||||
|
chown -R root:root /opt/rackula/frontend
|
||||||
|
find /opt/rackula/frontend -type d -exec chmod 755 {} \;
|
||||||
|
find /opt/rackula/frontend -type f -exec chmod 644 {} \;
|
||||||
|
chmod 750 /opt/rackula/data
|
||||||
|
msg_ok "Updated Configuration"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
$STD nginx -t
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl start nginx rackula-api
|
||||||
|
msg_ok "Started Services"
|
||||||
|
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}"
|
||||||
+77
-7
@@ -106,13 +106,6 @@ spring.servlet.multipart.max-file-size=5GB
|
|||||||
spring.servlet.multipart.max-request-size=5GB
|
spring.servlet.multipart.max-request-size=5GB
|
||||||
server.tomcat.max-part-count=100
|
server.tomcat.max-part-count=100
|
||||||
|
|
||||||
# Rqueue configuration
|
|
||||||
rqueue.web.enable=false
|
|
||||||
rqueue.job.enabled=false
|
|
||||||
rqueue.message.durability.in-terminal-state=0
|
|
||||||
rqueue.key.prefix=\${spring.cache.redis.key-prefix}
|
|
||||||
rqueue.message.converter.provider.class=com.dedicatedcode.reitti.config.RQueueCustomMessageConverter
|
|
||||||
|
|
||||||
# Application-specific settings
|
# Application-specific settings
|
||||||
reitti.server.advertise-uri=
|
reitti.server.advertise-uri=
|
||||||
|
|
||||||
@@ -168,6 +161,81 @@ PROPEOF
|
|||||||
msg_ok "Rewrote application.properties (backup: application.properties.bak)"
|
msg_ok "Rewrote application.properties (backup: application.properties.bak)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Migrate v4 -> v5: Remove Rqueue configuration (replaced by Quartz Scheduler)
|
||||||
|
if grep -q "^rqueue\." /opt/reitti/application.properties 2>/dev/null; then
|
||||||
|
msg_info "Migrating to v5: Removing Rqueue configuration"
|
||||||
|
sed -i '/^# Rqueue configuration$/d; /^rqueue\./d' /opt/reitti/application.properties
|
||||||
|
msg_ok "Removed Rqueue configuration"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Migrate v4 -> v5: Update application.properties and nginx tile cache for v5 compatibility
|
||||||
|
if grep -q "^reitti\.process-data\.schedule=" /opt/reitti/application.properties 2>/dev/null; then
|
||||||
|
msg_info "Migrating to v5: Updating application.properties"
|
||||||
|
sed -i '/^reitti\.process-data\.schedule=/d' /opt/reitti/application.properties
|
||||||
|
sed -i 's/^reitti\.import\.processing-idle-start-time=.*/reitti.import.grace-time-seconds=30/' /opt/reitti/application.properties
|
||||||
|
sed -i 's/^spring\.datasource\.hikari\.maximum-pool-size=20$/spring.datasource.hikari.maximum-pool-size=30/' /opt/reitti/application.properties
|
||||||
|
grep -q "devices" /opt/reitti/application.properties || \
|
||||||
|
sed -i 's/^spring\.cache\.cache-names=\(.*\)$/spring.cache.cache-names=\1,devices,mapStyles,mapStyleJson/' /opt/reitti/application.properties
|
||||||
|
grep -q "org.quartz.core.ErrorLogger" /opt/reitti/application.properties || \
|
||||||
|
sed -i '/^logging\.level\.com\.dedicatedcode\.reitti=/a logging.level.org.quartz.core.ErrorLogger=FATAL' /opt/reitti/application.properties
|
||||||
|
grep -q "^spring.servlet.multipart.resolve-lazily=" /opt/reitti/application.properties || \
|
||||||
|
sed -i '/^spring\.servlet\.multipart\.max-request-size=/a spring.servlet.multipart.resolve-lazily=true' /opt/reitti/application.properties
|
||||||
|
grep -q "^spring.mvc.async.request-timeout=" /opt/reitti/application.properties || \
|
||||||
|
echo "spring.mvc.async.request-timeout=600000" >>/opt/reitti/application.properties
|
||||||
|
if ! grep -q "^spring.quartz" /opt/reitti/application.properties; then
|
||||||
|
cat >>/opt/reitti/application.properties <<'QUARTZEOF'
|
||||||
|
|
||||||
|
# Quartz Scheduler configuration
|
||||||
|
spring.quartz.job-store-type=jdbc
|
||||||
|
spring.quartz.jdbc.initialize-schema=never
|
||||||
|
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
|
||||||
|
spring.quartz.properties.org.quartz.jobStore.isClustered=false
|
||||||
|
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
|
||||||
|
spring.quartz.properties.org.quartz.threadPool.threadCount=5
|
||||||
|
QUARTZEOF
|
||||||
|
fi
|
||||||
|
grep -q "^reitti.import.staging.cleanup.cron=" /opt/reitti/application.properties || \
|
||||||
|
echo "reitti.import.staging.cleanup.cron=0 0 4 * * *" >>/opt/reitti/application.properties
|
||||||
|
grep -q "^reitti.batching.max-batch-size=" /opt/reitti/application.properties || \
|
||||||
|
printf "reitti.batching.max-batch-size=100\nreitti.batching.max-wait-time=5\n" >>/opt/reitti/application.properties
|
||||||
|
grep -q "^reitti.jobs.cleanup.cron=" /opt/reitti/application.properties || \
|
||||||
|
printf "reitti.jobs.cleanup.cron=0 0 4 * * ?\nreitti.jobs.cleanup.max-age-hours=24\n" >>/opt/reitti/application.properties
|
||||||
|
grep -q "^reitti.db-janitor.schedule=" /opt/reitti/application.properties || \
|
||||||
|
echo "reitti.db-janitor.schedule=0 0 4 * * ?" >>/opt/reitti/application.properties
|
||||||
|
msg_ok "Updated application.properties for v5"
|
||||||
|
|
||||||
|
if [[ -f /etc/nginx/nginx.conf ]]; then
|
||||||
|
msg_info "Migrating to v5: Updating nginx tile cache configuration"
|
||||||
|
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.v5
|
||||||
|
cat >/etc/nginx/nginx.conf <<'NGINXEOF'
|
||||||
|
user www-data;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
http {
|
||||||
|
resolver 1.1.1.1 8.8.8.8 valid=30s ipv6=off;
|
||||||
|
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
location /custom/ {
|
||||||
|
set $upstream_url $http_x_reitti_upstream_url;
|
||||||
|
proxy_pass $upstream_url;
|
||||||
|
proxy_set_header Host $proxy_host;
|
||||||
|
proxy_set_header User-Agent "Reitti/1.0";
|
||||||
|
proxy_cache tiles;
|
||||||
|
proxy_cache_key $upstream_url;
|
||||||
|
proxy_cache_valid 200 30d;
|
||||||
|
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NGINXEOF
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Updated nginx tile cache configuration"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
|
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop reitti
|
systemctl stop reitti
|
||||||
@@ -179,10 +247,12 @@ PROPEOF
|
|||||||
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
|
||||||
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
|
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
|
||||||
|
|
||||||
|
msg_warn "v5 runs a one-time database migration on first start (GPS points → device table). This may take several minutes on large datasets — do not interrupt the container."
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start reitti
|
systemctl start reitti
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
msg_warn "Post-upgrade: Verify each API token has a Device assigned in Settings → API Tokens. Tokens without a device cannot ingest location data in v5."
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,4 +60,4 @@ 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}${IP}:21114${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:21114${CL}"
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ 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 Shlink Web Client using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access Shlink Web Client using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
echo -e "${INFO}${YW} Shlink HTTP API:${CL}"
|
echo -e "${INFO}${YW} Shlink HTTP API:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
@@ -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://snapotter.com
|
||||||
|
|
||||||
|
APP="SnapOtter"
|
||||||
|
var_tags="${var_tags:-media;image}"
|
||||||
|
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_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_arm64="${var_arm64:-no}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/snapotter ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "snapotter" "snapotter-hq/SnapOtter"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop snapotter
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snapotter" "snapotter-hq/SnapOtter" "tarball"
|
||||||
|
|
||||||
|
msg_info "Updating SnapOtter"
|
||||||
|
cd /opt/snapotter
|
||||||
|
$STD npm pkg delete scripts.prepare
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm --filter @snapotter/web build
|
||||||
|
sed -i 's/mediapipe==0.10.21/mediapipe>=0.10.21/' /opt/snapotter/docker/feature-manifest.json
|
||||||
|
msg_ok "Updated SnapOtter"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start snapotter
|
||||||
|
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}:1349${CL}"
|
||||||
+2
-2
@@ -72,5 +72,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ function update_script() {
|
|||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
JAVA_VERSION="25" setup_java
|
JAVA_VERSION="25" setup_java
|
||||||
|
|
||||||
|
msg_info "Patching Native Libraries for LXC Compatibility"
|
||||||
|
ensure_dependencies patchelf
|
||||||
|
find /usr/lib -name "libicudata.so.*" -exec patchelf --clear-execstack {} \; || true
|
||||||
|
msg_ok "Patched Native Libraries"
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop stirlingpdf libreoffice-listener unoserver
|
systemctl stop stirlingpdf libreoffice-listener unoserver
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
|
||||||
|
|
||||||
if check_for_gl_release "storyteller" "storyteller-platform/storyteller"; then
|
if check_for_gl_release "storyteller" "storyteller-platform/storyteller"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop storyteller
|
systemctl stop storyteller
|
||||||
|
|||||||
+1
-1
@@ -200,7 +200,7 @@ EOF
|
|||||||
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
|
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
|
||||||
curl -fsSL "https://raw.githubusercontent.com/Termix-SSH/Termix/main/docker/nginx.conf" -o /etc/nginx/nginx.conf
|
curl -fsSL "https://raw.githubusercontent.com/Termix-SSH/Termix/main/docker/nginx.conf" -o /etc/nginx/nginx.conf
|
||||||
sed -i '/^master_process/d' /etc/nginx/nginx.conf
|
sed -i '/^master_process/d' /etc/nginx/nginx.conf
|
||||||
sed -i 's|pid /tmp/nginx/nginx.pid;|pid /run/nginx.pid;|' /etc/nginx/nginx.conf
|
sed -i '/^pid \/app\/nginx/d' /etc/nginx/nginx.conf
|
||||||
sed -i 's|error_log /tmp/nginx/error.log|error_log /var/log/nginx/error.log|' /etc/nginx/nginx.conf
|
sed -i 's|error_log /tmp/nginx/error.log|error_log /var/log/nginx/error.log|' /etc/nginx/nginx.conf
|
||||||
sed -i 's|access_log /tmp/nginx/access.log|access_log /var/log/nginx/access.log|' /etc/nginx/nginx.conf
|
sed -i 's|access_log /tmp/nginx/access.log|access_log /var/log/nginx/access.log|' /etc/nginx/nginx.conf
|
||||||
sed -i 's|/app/html|/opt/termix/html|g' /etc/nginx/nginx.conf
|
sed -i 's|/app/html|/opt/termix/html|g' /etc/nginx/nginx.conf
|
||||||
|
|||||||
+2
-2
@@ -52,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} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
+2
-7
@@ -33,17 +33,12 @@ function update_script() {
|
|||||||
systemctl stop tunarr
|
systemctl stop tunarr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
create_backup /root/.local/share/tunarr
|
||||||
if [ -d "/root/.local/share/tunarr" ]; then
|
|
||||||
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /root/.local/share/tunarr $STD
|
|
||||||
msg_ok "Backup Created"
|
|
||||||
else
|
|
||||||
msg_error "Backup failed: /root/.local/share/tunarr does not exist"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "prebuild" "latest" "/opt/tunarr" "*linux-$(arch_resolve "x64" "arm64").tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "prebuild" "latest" "/opt/tunarr" "*linux-$(arch_resolve "x64" "arm64").tar.gz"
|
||||||
cd /opt/tunarr
|
cd /opt/tunarr
|
||||||
mv tunarr* tunarr
|
mv tunarr* tunarr
|
||||||
|
restore_backup
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start tunarr
|
systemctl start tunarr
|
||||||
|
|||||||
+4
-9
@@ -39,12 +39,9 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
create_backup /opt/twenty/.env \
|
create_backup /opt/twenty/.env \
|
||||||
/opt/twenty/packages/twenty-server/.local-storage
|
/opt/twenty/packages/twenty-server/.local-storage
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "twenty" "twentyhq/twenty" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "twenty" "twentyhq/twenty" "tarball"
|
||||||
|
restore_backup
|
||||||
msg_info "Restoring Configuration"
|
|
||||||
cp /opt/twenty.env.bak /opt/twenty/.env
|
|
||||||
msg_ok "Restored Configuration"
|
|
||||||
|
|
||||||
msg_info "Building Application"
|
msg_info "Building Application"
|
||||||
cd /opt/twenty
|
cd /opt/twenty
|
||||||
@@ -66,8 +63,6 @@ function update_script() {
|
|||||||
$STD npx -y typeorm migration:run -d dist/database/typeorm/core/core.datasource
|
$STD npx -y typeorm migration:run -d dist/database/typeorm/core/core.datasource
|
||||||
msg_ok "Ran Database Migrations"
|
msg_ok "Ran Database Migrations"
|
||||||
|
|
||||||
restore_backup
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start twenty-server twenty-worker
|
systemctl start twenty-server twenty-worker
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
@@ -82,5 +77,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
"2" "Set Admin Token")
|
"2" "Set Admin Token")
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
INSTALLED_VERSION="$(/opt/vaultwarden/bin/vaultwarden --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)"
|
INSTALLED_VERSION="$(/opt/vaultwarden/bin/vaultwarden --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 || true)"
|
||||||
if [[ -n "$INSTALLED_VERSION" ]] &&
|
if [[ -n "$INSTALLED_VERSION" ]] &&
|
||||||
! grep -qxF "$INSTALLED_VERSION" "$HOME/.vaultwarden" 2>/dev/null; then
|
! grep -qxF "$INSTALLED_VERSION" "$HOME/.vaultwarden" 2>/dev/null; then
|
||||||
printf '%s\n' "$INSTALLED_VERSION" >"$HOME/.vaultwarden"
|
printf '%s\n' "$INSTALLED_VERSION" >"$HOME/.vaultwarden"
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Watcharr"
|
APP="Watcharr"
|
||||||
var_tags="${var_tags:-media}"
|
var_tags="${var_tags:-media}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
-78
@@ -1,78 +0,0 @@
|
|||||||
#!/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: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/wger-project/wger
|
|
||||||
|
|
||||||
APP="wger"
|
|
||||||
var_tags="${var_tags:-management;fitness}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-8}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
var_arm64="${var_arm64:-yes}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -d /opt/wger ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_for_gh_release "wger" "wger-project/wger"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop redis-server nginx celery celery-beat wger
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
msg_info "Backing up Data"
|
|
||||||
cp -r /opt/wger/media /opt/wger_media_backup
|
|
||||||
cp /opt/wger/.env /opt/wger_env_backup
|
|
||||||
msg_ok "Backed up Data"
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball"
|
|
||||||
|
|
||||||
msg_info "Restoring Data"
|
|
||||||
cp -r /opt/wger_media_backup/. /opt/wger/media
|
|
||||||
cp /opt/wger_env_backup /opt/wger/.env
|
|
||||||
rm -rf /opt/wger_media_backup /opt/wger_env_backup
|
|
||||||
|
|
||||||
msg_ok "Restored Data"
|
|
||||||
|
|
||||||
msg_info "Updating wger"
|
|
||||||
cd /opt/wger
|
|
||||||
set -a && source /opt/wger/.env && set +a
|
|
||||||
export DJANGO_SETTINGS_MODULE=settings.main
|
|
||||||
$STD uv pip install .
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build:css:sass
|
|
||||||
$STD uv run python manage.py migrate
|
|
||||||
$STD uv run python manage.py collectstatic --no-input
|
|
||||||
msg_ok "Updated wger"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start redis-server nginx celery celery-beat wger
|
|
||||||
msg_ok "Started Services"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
|
||||||
+1
-1
@@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "wishlist" "cmintey/wishlist"; then
|
if check_for_gh_release "wishlist" "cmintey/wishlist"; then
|
||||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="pnpm@11" setup_nodejs
|
||||||
|
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop wishlist
|
systemctl stop wishlist
|
||||||
|
|||||||
+5
-5
@@ -57,11 +57,11 @@ function update_script() {
|
|||||||
sed -i 's/--workers 4//' /opt/wizarr/start.sh
|
sed -i 's/--workers 4//' /opt/wizarr/start.sh
|
||||||
fi
|
fi
|
||||||
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
|
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
|
||||||
{
|
cat <<EOF >/opt/wizarr/.env
|
||||||
echo "FLASK_ENV=production"
|
FLASK_ENV=production
|
||||||
echo "GUNICORN_WORKERS=4"
|
GUNICORN_WORKERS=4
|
||||||
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
|
APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)
|
||||||
} >>/opt/wizarr/.env
|
EOF
|
||||||
else
|
else
|
||||||
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
|
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
|
||||||
fi
|
fi
|
||||||
|
|||||||
+2
-2
@@ -69,5 +69,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 "${TAB}${GATEWAY}${BGN}http://${IP}:5522${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:5522${CL}"
|
||||||
|
|||||||
@@ -86,12 +86,11 @@ user.is_superuser = True
|
|||||||
user.is_staff = True
|
user.is_staff = True
|
||||||
user.save()
|
user.save()
|
||||||
EOF
|
EOF
|
||||||
{
|
cat <<EOF >~/adventurelog.creds
|
||||||
echo ""
|
Django-Credentials
|
||||||
echo "Django-Credentials"
|
Django Admin User: $DJANGO_ADMIN_USER
|
||||||
echo "Django Admin User: $DJANGO_ADMIN_USER"
|
Django Admin Password: $DJANGO_ADMIN_PASS
|
||||||
echo "Django Admin Password: $DJANGO_ADMIN_PASS"
|
EOF
|
||||||
} >>~/adventurelog.creds
|
|
||||||
msg_ok "Setup Django Admin"
|
msg_ok "Setup Django Admin"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -25,12 +25,12 @@ mkdir -p /etc/garage
|
|||||||
RPC_SECRET=$(openssl rand -hex 64 | cut -c1-64)
|
RPC_SECRET=$(openssl rand -hex 64 | cut -c1-64)
|
||||||
ADMIN_TOKEN=$(openssl rand -base64 32)
|
ADMIN_TOKEN=$(openssl rand -base64 32)
|
||||||
METRICS_TOKEN=$(openssl rand -base64 32)
|
METRICS_TOKEN=$(openssl rand -base64 32)
|
||||||
{
|
cat <<EOF >~/garage.creds
|
||||||
echo "Garage Tokens and Secrets"
|
Garage Tokens and Secrets
|
||||||
echo "RPC Secret: $RPC_SECRET"
|
RPC Secret: $RPC_SECRET
|
||||||
echo "Admin Token: $ADMIN_TOKEN"
|
Admin Token: $ADMIN_TOKEN
|
||||||
echo "Metrics Token: $METRICS_TOKEN"
|
Metrics Token: $METRICS_TOKEN
|
||||||
} >~/garage.creds
|
EOF
|
||||||
echo $GITEA_RELEASE >>~/.garage
|
echo $GITEA_RELEASE >>~/.garage
|
||||||
cat <<EOF >/etc/garage.toml
|
cat <<EOF >/etc/garage.toml
|
||||||
metadata_dir = "/var/lib/garage/meta"
|
metadata_dir = "/var/lib/garage/meta"
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ chmod +x /usr/local/bin/ironclaw
|
|||||||
msg_info "Configuring Environment"
|
msg_info "Configuring Environment"
|
||||||
GATEWAY_TOKEN=$(openssl rand -hex 32)
|
GATEWAY_TOKEN=$(openssl rand -hex 32)
|
||||||
mkdir -p /root/.ironclaw
|
mkdir -p /root/.ironclaw
|
||||||
{
|
cat <<EOF >/root/.ironclaw/gateway.creds
|
||||||
echo "Gateway-Token"
|
Gateway-Token
|
||||||
echo "Token: $GATEWAY_TOKEN"
|
Token: $GATEWAY_TOKEN
|
||||||
} >> /root/.ironclaw/gateway.creds
|
EOF
|
||||||
|
|
||||||
mkdir -p /root/.ironclaw
|
mkdir -p /root/.ironclaw
|
||||||
cat <<EOF >/root/.ironclaw/.env
|
cat <<EOF >/root/.ironclaw/.env
|
||||||
|
|||||||
@@ -71,16 +71,6 @@ $STD rc-update add loki default
|
|||||||
$STD rc-service loki start
|
$STD rc-service loki start
|
||||||
msg_ok "Installed Loki"
|
msg_ok "Installed Loki"
|
||||||
|
|
||||||
read -rp "Would you like to install Promtail? (y/N): " INSTALL_PROMTAIL
|
|
||||||
if [[ "${INSTALL_PROMTAIL,,}" =~ ^(y|yes)$ ]]; then
|
|
||||||
msg_info "Installing Promtail"
|
|
||||||
$STD apk add loki-promtail
|
|
||||||
$STD sed -i '/http_addr/s/127.0.0.1/0.0.0.0/g' /etc/conf.d/loki-promtail
|
|
||||||
$STD rc-update add loki-promtail default
|
|
||||||
$STD rc-service loki-promtail start
|
|
||||||
msg_ok "Installed Promtail"
|
|
||||||
fi
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ $STD unzip -j "$temp_file" '*/**' -d /opt/rclone
|
|||||||
cd /opt/rclone
|
cd /opt/rclone
|
||||||
RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
||||||
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
|
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
|
||||||
{
|
cat <<EOF >~/rclone.creds
|
||||||
echo "rclone-Credentials"
|
rclone-Credentials
|
||||||
echo "rclone User Name: admin"
|
rclone User Name: admin
|
||||||
echo "rclone Password: $RCLONE_PASSWORD"
|
rclone Password: $RCLONE_PASSWORD
|
||||||
} >>~/rclone.creds
|
EOF
|
||||||
echo "${RELEASE}" >/opt/rclone_version.txt
|
echo "${RELEASE}" >/opt/rclone_version.txt
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
msg_ok "Installed rclone"
|
msg_ok "Installed rclone"
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ mv release /opt/rustdesk-api
|
|||||||
cd /opt/rustdesk-api
|
cd /opt/rustdesk-api
|
||||||
ADMINPASS=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
ADMINPASS=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
||||||
$STD ./apimain reset-admin-pwd "$ADMINPASS"
|
$STD ./apimain reset-admin-pwd "$ADMINPASS"
|
||||||
{
|
cat <<EOF >~/rustdesk.creds
|
||||||
echo "RustDesk WebUI"
|
RustDesk WebUI
|
||||||
echo ""
|
|
||||||
echo "Username: admin"
|
Username: admin
|
||||||
echo "Password: $ADMINPASS"
|
Password: $ADMINPASS
|
||||||
} >>~/rustdesk.creds
|
EOF
|
||||||
echo "${APIRELEASE}" >~/.rustdesk-api
|
echo "${APIRELEASE}" >~/.rustdesk-api
|
||||||
msg_ok "Installed RustDesk API v${APIRELEASE}"
|
msg_ok "Installed RustDesk API v${APIRELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -25,13 +25,12 @@ chmod 600 ~/valkey.creds
|
|||||||
MEMTOTAL_MB=$(free -m | grep ^Mem: | awk '{print $2}')
|
MEMTOTAL_MB=$(free -m | grep ^Mem: | awk '{print $2}')
|
||||||
MAXMEMORY_MB=$((MEMTOTAL_MB * 75 / 100))
|
MAXMEMORY_MB=$((MEMTOTAL_MB * 75 / 100))
|
||||||
|
|
||||||
{
|
cat <<EOF >/etc/valkey/valkey.conf
|
||||||
echo ""
|
# Memory-optimized settings for small-scale deployments
|
||||||
echo "# Memory-optimized settings for small-scale deployments"
|
maxmemory ${MAXMEMORY_MB}mb
|
||||||
echo "maxmemory ${MAXMEMORY_MB}mb"
|
maxmemory-policy allkeys-lru
|
||||||
echo "maxmemory-policy allkeys-lru"
|
maxmemory-samples 10
|
||||||
echo "maxmemory-samples 10"
|
EOF
|
||||||
} >>/etc/valkey/valkey.conf
|
|
||||||
msg_ok "Installed Valkey"
|
msg_ok "Installed Valkey"
|
||||||
|
|
||||||
# Note: Alpine's valkey package is compiled without TLS support
|
# Note: Alpine's valkey package is compiled without TLS support
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ update_os
|
|||||||
setup_mongodb
|
setup_mongodb
|
||||||
|
|
||||||
msg_info "Configuring MongoDB Replica Set"
|
msg_info "Configuring MongoDB Replica Set"
|
||||||
cat <<EOF >>/etc/mongod.conf
|
cat <<EOF >/etc/mongod.conf
|
||||||
|
|
||||||
replication:
|
replication:
|
||||||
replSetName: "rs0"
|
replSetName: "rs0"
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ setup_deb822_repo \
|
|||||||
"$(get_os_info codename)" \
|
"$(get_os_info codename)" \
|
||||||
"main"
|
"main"
|
||||||
$STD apt install -y couchdb
|
$STD apt install -y couchdb
|
||||||
{
|
cat <<EOF >~/couchdb.creds
|
||||||
echo "CouchDB Credentials"
|
CouchDB Credentials
|
||||||
echo "CouchDB Erlang Cookie: $ERLANG_COOKIE"
|
CouchDB Erlang Cookie: $ERLANG_COOKIE
|
||||||
echo "CouchDB Admin Password: $ADMIN_PASS"
|
CouchDB Admin Password: $ADMIN_PASS
|
||||||
} >>~/couchdb.creds
|
EOF
|
||||||
msg_ok "Installed Apache CouchDB"
|
msg_ok "Installed Apache CouchDB"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -79,13 +79,13 @@ msg_ok "Setup Apache Guacamole"
|
|||||||
msg_info "Importing Database Schema"
|
msg_info "Importing Database Schema"
|
||||||
cd ~/guacamole-auth-jdbc-"${GUAC_SERVER_VERSION}"/mysql/schema
|
cd ~/guacamole-auth-jdbc-"${GUAC_SERVER_VERSION}"/mysql/schema
|
||||||
cat *.sql | mariadb -u root ${MARIADB_DB_NAME}
|
cat *.sql | mariadb -u root ${MARIADB_DB_NAME}
|
||||||
{
|
cat <<EOF >/etc/guacamole/guacamole.properties
|
||||||
echo "mysql-hostname: 127.0.0.1"
|
mysql-hostname: 127.0.0.1
|
||||||
echo "mysql-port: 3306"
|
mysql-port: 3306
|
||||||
echo "mysql-database: $MARIADB_DB_NAME"
|
mysql-database: $MARIADB_DB_NAME
|
||||||
echo "mysql-username: $MARIADB_DB_USER"
|
mysql-username: $MARIADB_DB_USER
|
||||||
echo "mysql-password: $MARIADB_DB_PASS"
|
mysql-password: $MARIADB_DB_PASS
|
||||||
} >>/etc/guacamole/guacamole.properties
|
EOF
|
||||||
rm -rf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"{,.tar.gz}
|
rm -rf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"{,.tar.gz}
|
||||||
msg_ok "Imported Database Schema"
|
msg_ok "Imported Database Schema"
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/us
|
|||||||
|
|
||||||
msg_info "Configuring Autobrr"
|
msg_info "Configuring Autobrr"
|
||||||
mkdir -p /root/.config/autobrr
|
mkdir -p /root/.config/autobrr
|
||||||
cat <<EOF >>/root/.config/autobrr/config.toml
|
cat <<EOF >/root/.config/autobrr/config.toml
|
||||||
# https://autobrr.com/configuration/autobrr
|
# https://autobrr.com/configuration/autobrr
|
||||||
host = "0.0.0.0"
|
host = "0.0.0.0"
|
||||||
port = 7474
|
port = 7474
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ mkdir -p /opt/bookorbit-data/covers /opt/bookorbit-data/book-bucket /opt/bookorb
|
|||||||
APP_VER=$(cat ~/.bookorbit)
|
APP_VER=$(cat ~/.bookorbit)
|
||||||
JWT_SECRET=$(openssl rand -hex 32)
|
JWT_SECRET=$(openssl rand -hex 32)
|
||||||
SETUP_BOOTSTRAP_TOKEN=$(openssl rand -hex 16)
|
SETUP_BOOTSTRAP_TOKEN=$(openssl rand -hex 16)
|
||||||
cat <<EOF >>~/bookorbit.creds
|
cat <<EOF >~/bookorbit.creds
|
||||||
|
|
||||||
Setup Token: ${SETUP_BOOTSTRAP_TOKEN}
|
Setup Token: ${SETUP_BOOTSTRAP_TOKEN}
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -29,12 +29,12 @@ MKPASSWORD=$(openssl rand -base64 18 | tr -d '/+=' | cut -c1-16)
|
|||||||
|
|
||||||
echo -e "$MKPASSWORD\n$MKPASSWORD" | su - "$SITE_NAME" -c "cmk-passwd cmkadmin --stdin"
|
echo -e "$MKPASSWORD\n$MKPASSWORD" | su - "$SITE_NAME" -c "cmk-passwd cmkadmin --stdin"
|
||||||
$STD omd start "$SITE_NAME"
|
$STD omd start "$SITE_NAME"
|
||||||
{
|
cat <<EOF >~/checkmk.creds
|
||||||
echo "Application-Credentials"
|
Application-Credentials
|
||||||
echo "Username: cmkadmin"
|
Username: cmkadmin
|
||||||
echo "Password: $MKPASSWORD"
|
Password: $MKPASSWORD
|
||||||
echo "Site: $SITE_NAME"
|
Site: $SITE_NAME
|
||||||
} >>~/checkmk.creds
|
EOF
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -66,13 +66,13 @@ for i in $(seq 1 30); do
|
|||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
if [[ -f "$CREDS_FILE" ]]; then
|
if [[ -f "$CREDS_FILE" ]]; then
|
||||||
{
|
cat <<EOF >~/crafty-controller.creds
|
||||||
echo "Crafty-Controller-Credentials"
|
Crafty-Controller-Credentials
|
||||||
echo "Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")"
|
Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")
|
||||||
echo "Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")"
|
Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")
|
||||||
} >>~/crafty-controller.creds
|
EOF
|
||||||
fi
|
fi
|
||||||
msg_ok "Service started"
|
msg_ok "Service started"
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ done
|
|||||||
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
|
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
|
||||||
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
|
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
|
||||||
# MongoDB only publishes arm64 builds for Ubuntu
|
# MongoDB only publishes arm64 builds for Ubuntu
|
||||||
[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
[[ "$(arch_resolve "x86_64" "arm64")" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
||||||
MONGO_VERSION=$(get_latest_gh_tag "mongodb/mongo-tools" "100." || echo "100.16.1")
|
MONGO_VERSION=$(get_latest_gh_tag "mongodb/mongo-tools" "100." || echo "100.16.1")
|
||||||
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-$(arch_resolve "x86_64" "arm64")-${MONGO_VERSION}.deb" ""
|
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-$(arch_resolve "x86_64" "arm64")-${MONGO_VERSION}.deb" ""
|
||||||
mkdir -p /usr/local/mongodb-database-tools/bin
|
mkdir -p /usr/local/mongodb-database-tools/bin
|
||||||
@@ -65,7 +65,7 @@ $STD go mod tidy
|
|||||||
$STD go mod download
|
$STD go mod download
|
||||||
$STD go install github.com/swaggo/swag/cmd/swag@latest
|
$STD go install github.com/swaggo/swag/cmd/swag@latest
|
||||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd
|
||||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||||
mkdir -p /databasus-data/{pgdata,temp,backups,data,logs}
|
mkdir -p /databasus-data/{pgdata,temp,backups,data,logs}
|
||||||
mkdir -p /opt/databasus/ui/build
|
mkdir -p /opt/databasus/ui/build
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ cat >~/.config/pip/pip.conf <<EOF
|
|||||||
[global]
|
[global]
|
||||||
break-system-packages = true
|
break-system-packages = true
|
||||||
EOF
|
EOF
|
||||||
$STD pip install deluge[all]
|
$STD pip install deluge[all] "pyopenssl<25"
|
||||||
msg_ok "Installed Deluge"
|
msg_ok "Installed Deluge"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ setup_mariadb
|
|||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
$STD mariadb -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASS'; flush privileges;"
|
$STD mariadb -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASS'; flush privileges;"
|
||||||
{
|
cat <<EOF >~/dolibarr.creds
|
||||||
echo "Dolibarr DB Credentials"
|
Dolibarr DB Credentials
|
||||||
echo "MariaDB Root Password: $ROOT_PASS"
|
MariaDB Root Password: $ROOT_PASS
|
||||||
} >>~/dolibarr.creds
|
EOF
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Setup Dolibarr"
|
msg_info "Setup Dolibarr"
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ sed -i "s|#chroot_local_user=YES|chroot_local_user=NO|g" /etc/vsftpd.conf
|
|||||||
|
|
||||||
systemctl restart -q vsftpd.service
|
systemctl restart -q vsftpd.service
|
||||||
|
|
||||||
{
|
cat <<EOF >~/ftp.creds
|
||||||
echo "FTP-Credentials"
|
FTP-Credentials
|
||||||
echo "Username: ftpuser"
|
Username: ftpuser
|
||||||
echo "Password: $FTP_PASS"
|
Password: $FTP_PASS
|
||||||
} >>~/ftp.creds
|
EOF
|
||||||
|
|
||||||
msg_ok "FTP server setup completed"
|
msg_ok "FTP server setup completed"
|
||||||
|
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest"
|
|||||||
msg_info "Configuring duplicati"
|
msg_info "Configuring duplicati"
|
||||||
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
{
|
cat <<EOF >~/duplicati.creds
|
||||||
echo "Admin password = ${ADMINPASS}"
|
Admin password = ${ADMINPASS}
|
||||||
echo "Database encryption key = ${DECRYPTKEY}"
|
Database encryption key = ${DECRYPTKEY}
|
||||||
} >>~/duplicati.creds
|
EOF
|
||||||
msg_ok "Configured duplicati"
|
msg_ok "Configured duplicati"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -63,11 +63,11 @@ rc_delayed_event_mgmt:
|
|||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now matrix-synapse
|
systemctl enable -q --now matrix-synapse
|
||||||
$STD register_new_matrix_user -a --user admin --password "$ADMIN_PASS" --config /etc/matrix-synapse/homeserver.yaml
|
$STD register_new_matrix_user -a --user admin --password "$ADMIN_PASS" --config /etc/matrix-synapse/homeserver.yaml
|
||||||
{
|
cat <<EOF >~/matrix.creds
|
||||||
echo "Matrix-Credentials"
|
Matrix-Credentials
|
||||||
echo "Admin username: admin"
|
Admin username: admin
|
||||||
echo "Admin password: $ADMIN_PASS"
|
Admin password: $ADMIN_PASS
|
||||||
} >>~/matrix.creds
|
EOF
|
||||||
systemctl stop matrix-synapse
|
systemctl stop matrix-synapse
|
||||||
sed -i '34d' /etc/matrix-synapse/homeserver.yaml
|
sed -i '34d' /etc/matrix-synapse/homeserver.yaml
|
||||||
systemctl start matrix-synapse
|
systemctl start matrix-synapse
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ DB_HOST=localhost
|
|||||||
DATABASE_URL=postgresql+psycopg://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
DATABASE_URL=postgresql+psycopg://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
||||||
|
|
||||||
BACKEND_DIR="/opt/endurain/backend/app"
|
BACKEND_DIR="/opt/endurain/backend/app"
|
||||||
FRONTEND_DIR="/opt/endurain/frontend/app/dist"
|
FRONTEND_DIR="/opt/endurain/frontend/dist"
|
||||||
DATA_DIR="/opt/endurain_data/data"
|
DATA_DIR="/opt/endurain_data/data"
|
||||||
LOGS_DIR="/opt/endurain_data/logs"
|
LOGS_DIR="/opt/endurain_data/logs"
|
||||||
|
|
||||||
@@ -69,10 +69,10 @@ EOF
|
|||||||
msg_ok "Setup Endurain"
|
msg_ok "Setup Endurain"
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
cd /opt/endurain/frontend/app
|
cd /opt/endurain/frontend
|
||||||
$STD npm ci --prefer-offline
|
$STD npm ci --prefer-offline
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
cat <<EOF >/opt/endurain/frontend/app/dist/env.js
|
cat <<EOF >/opt/endurain/frontend/dist/env.js
|
||||||
window.env = {
|
window.env = {
|
||||||
ENDURAIN_HOST: "${ENDURAIN_HOST}"
|
ENDURAIN_HOST: "${ENDURAIN_HOST}"
|
||||||
}
|
}
|
||||||
@@ -83,14 +83,7 @@ msg_info "Setting up Backend"
|
|||||||
cd /opt/endurain/backend
|
cd /opt/endurain/backend
|
||||||
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
|
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
|
||||||
UV_VERSION="$UV_VERSION" setup_uv
|
UV_VERSION="$UV_VERSION" setup_uv
|
||||||
$STD uv tool install poetry
|
$STD uv sync --frozen --no-dev
|
||||||
$STD uv tool update-shell
|
|
||||||
export PATH="/root/.local/bin:$PATH"
|
|
||||||
$STD poetry self add poetry-plugin-export
|
|
||||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
|
||||||
$STD uv venv --clear
|
|
||||||
$STD uv pip install -r requirements.txt
|
|
||||||
$STD uv pip install pytz
|
|
||||||
msg_ok "Setup Backend"
|
msg_ok "Setup Backend"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
+13
-11
@@ -31,11 +31,12 @@ $STD apt install -y \
|
|||||||
libjpeg-dev \
|
libjpeg-dev \
|
||||||
libmariadb-dev \
|
libmariadb-dev \
|
||||||
python3-pip \
|
python3-pip \
|
||||||
|
pkg-config \
|
||||||
cron
|
cron
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||||
UV_PYTHON="3.13" setup_uv
|
UV_PYTHON="3.14" setup_uv
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
|
||||||
msg_info "Configuring MariaDB for ERPNext"
|
msg_info "Configuring MariaDB for ERPNext"
|
||||||
@@ -68,8 +69,9 @@ msg_info "Initializing Frappe Bench"
|
|||||||
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
DB_ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
DB_ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASS}'; FLUSH PRIVILEGES;"
|
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASS}'; FLUSH PRIVILEGES;"
|
||||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt && bench init --frappe-branch version-15 frappe-bench'
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; uv python install 3.14'
|
||||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench get-app erpnext --branch version-15'
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt && bench init --frappe-branch version-16 --python "$(uv python find 3.14)" frappe-bench'
|
||||||
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench get-app erpnext --branch version-16'
|
||||||
|
|
||||||
msg_info "Starting Redis Services for Site Setup"
|
msg_info "Starting Redis Services for Site Setup"
|
||||||
$STD sudo -u frappe bash -c 'redis-server /opt/frappe-bench/config/redis_queue.conf --daemonize yes'
|
$STD sudo -u frappe bash -c 'redis-server /opt/frappe-bench/config/redis_queue.conf --daemonize yes'
|
||||||
@@ -86,14 +88,14 @@ ADMIN_PASSWORD=${ADMIN_PASS}
|
|||||||
DB_ROOT_PASSWORD=${DB_ROOT_PASS}
|
DB_ROOT_PASSWORD=${DB_ROOT_PASS}
|
||||||
SITE_NAME=site1.local
|
SITE_NAME=site1.local
|
||||||
EOF
|
EOF
|
||||||
{
|
cat <<EOF >~/erpnext.creds
|
||||||
echo "ERPNext Credentials"
|
ERPNext Credentials
|
||||||
echo "=================="
|
==================
|
||||||
echo "Admin Username: Administrator"
|
Admin Username: Administrator
|
||||||
echo "Admin Password: ${ADMIN_PASS}"
|
Admin Password: ${ADMIN_PASS}
|
||||||
echo "DB Root Password: ${DB_ROOT_PASS}"
|
DB Root Password: ${DB_ROOT_PASS}
|
||||||
echo "Site Name: site1.local"
|
Site Name: site1.local
|
||||||
} >~/erpnext.creds
|
EOF
|
||||||
$STD systemctl enable --now redis-server
|
$STD systemctl enable --now redis-server
|
||||||
msg_ok "Configured ERPNext"
|
msg_ok "Configured ERPNext"
|
||||||
|
|
||||||
|
|||||||
Executable
+71
@@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: John McLear (JohnMcLear)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://etherpad.org
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
build-essential \
|
||||||
|
pkg-config \
|
||||||
|
libsqlite3-dev
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "etherpad-lite" "ether/etherpad" "tarball"
|
||||||
|
|
||||||
|
msg_info "Building Etherpad"
|
||||||
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
cd /opt/etherpad-lite
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm run build:etherpad
|
||||||
|
msg_ok "Built Etherpad"
|
||||||
|
|
||||||
|
msg_info "Configuring Etherpad"
|
||||||
|
cp /opt/etherpad-lite/settings.json.template /opt/etherpad-lite/settings.json
|
||||||
|
mkdir -p /var/lib/etherpad
|
||||||
|
sed -i \
|
||||||
|
-e 's#"ip": *"127.0.0.1"#"ip": "0.0.0.0"#' \
|
||||||
|
-e 's#"dbType" *: *"dirty"#"dbType": "sqlite"#' \
|
||||||
|
-e 's#"filename" *: *"var/dirty.db"#"filename": "/var/lib/etherpad/etherpad.db"#' \
|
||||||
|
/opt/etherpad-lite/settings.json
|
||||||
|
msg_ok "Configured Etherpad"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/etherpad.service
|
||||||
|
[Unit]
|
||||||
|
Description=Etherpad Collaborative Editor
|
||||||
|
Documentation=https://etherpad.org/doc
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/etherpad-lite
|
||||||
|
Environment=NODE_ENV=production
|
||||||
|
Environment=COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
ExecStart=/usr/bin/pnpm run prod
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
LimitNOFILE=65536
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now etherpad
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user