mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-04 21:22:14 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 093d68eaad |
Generated
-1
@@ -1,3 +1,2 @@
|
|||||||
ko_fi: community_scripts
|
ko_fi: community_scripts
|
||||||
github: community_scripts
|
github: community_scripts
|
||||||
buy_me_a_coffee: communityscripts
|
|
||||||
|
|||||||
Generated
-204
@@ -1,207 +1,3 @@
|
|||||||
## 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
|
||||||
|
|||||||
+161
-217
@@ -68,9 +68,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +81,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h4>June (27 entries)</h4></summary>
|
<summary><h4>June (20 entries)</h4></summary>
|
||||||
|
|
||||||
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
||||||
|
|
||||||
@@ -489,228 +486,16 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 2026-07-03
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Immich: handle mise monorepo_root rename correctly | bump to 3.0.1 [@MickLesk](https://github.com/MickLesk) ([#15557](https://github.com/community-scripts/ProxmoxVE/pull/15557))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Opencloud: bump to v7.2.0 [@vhsdream](https://github.com/vhsdream) ([#15575](https://github.com/community-scripts/ProxmoxVE/pull/15575))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- tools.func: fix corepack/pnpm install flow in setup_nodejs [@MickLesk](https://github.com/MickLesk) ([#15579](https://github.com/community-scripts/ProxmoxVE/pull/15579))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
|
||||||
|
|
||||||
## 2026-07-02
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
|
||||||
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
|
||||||
|
|
||||||
## 2026-07-01
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
|
||||||
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
|
||||||
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
|
||||||
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
|
||||||
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
|
||||||
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
|
||||||
|
|
||||||
## 2026-06-30
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
|
||||||
|
|
||||||
## 2026-06-29
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
|
||||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
|
||||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
|
||||||
|
|
||||||
## 2026-06-28
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
|
||||||
|
|
||||||
## 2026-06-27
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- tool: add disk-health tool (SMART + NVMe) [@MickLesk](https://github.com/MickLesk) ([#15417](https://github.com/community-scripts/ProxmoxVE/pull/15417))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Deluge openssl fix [@asylumexp](https://github.com/asylumexp) ([#15435](https://github.com/community-scripts/ProxmoxVE/pull/15435))
|
|
||||||
- fix command syntax in tunarr.sh [@asylumexp](https://github.com/asylumexp) ([#15434](https://github.com/community-scripts/ProxmoxVE/pull/15434))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Storyteller: bump Node.js version to Node 24 [@thinusn](https://github.com/thinusn) ([#15439](https://github.com/community-scripts/ProxmoxVE/pull/15439))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- fix(endurain): replace Poetry/uv-pip backend setup with uv sync --frozen --no-dev [@Copilot](https://github.com/Copilot) ([#15429](https://github.com/community-scripts/ProxmoxVE/pull/15429))
|
|
||||||
|
|
||||||
## 2026-06-26
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- Termix: Update Nginx configuration file paths [@xyzulu](https://github.com/xyzulu) ([#15397](https://github.com/community-scripts/ProxmoxVE/pull/15397))
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Docuseal: use real SECRET_KEY_BASE for db:migrate on update [@MickLesk](https://github.com/MickLesk) ([#15411](https://github.com/community-scripts/ProxmoxVE/pull/15411))
|
|
||||||
- bun: correct install for degoog [@MickLesk](https://github.com/MickLesk) ([#15412](https://github.com/community-scripts/ProxmoxVE/pull/15412))
|
|
||||||
- fix databasus update/install errors [@asylumexp](https://github.com/asylumexp) ([#15403](https://github.com/community-scripts/ProxmoxVE/pull/15403))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- tools.func: fix setup_docker - don't abort update on docker pull failure [@MickLesk](https://github.com/MickLesk) ([#15410](https://github.com/community-scripts/ProxmoxVE/pull/15410))
|
|
||||||
- fix(build.func): set /dev/kfd GID in fix_gpu_gids for AMD ROCm [@jamiej](https://github.com/jamiej) ([#15401](https://github.com/community-scripts/ProxmoxVE/pull/15401))
|
|
||||||
- fix alpine mktmp error [@asylumexp](https://github.com/asylumexp) ([#15398](https://github.com/community-scripts/ProxmoxVE/pull/15398))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: reduce IP-Tag resource usage and clean up ShellCheck findings [@MickLesk](https://github.com/MickLesk) ([#15418](https://github.com/community-scripts/ProxmoxVE/pull/15418))
|
|
||||||
- QoL: kernel-clean: Validate kernel selection input [@MickLesk](https://github.com/MickLesk) ([#15414](https://github.com/community-scripts/ProxmoxVE/pull/15414))
|
|
||||||
- QoL: clean-lxcs exclude matching and set -e cancel handling [@MickLesk](https://github.com/MickLesk) ([#15413](https://github.com/community-scripts/ProxmoxVE/pull/15413))
|
|
||||||
- QoL: Harden microcode download/install in microcode and pbs-microcode [@MickLesk](https://github.com/MickLesk) ([#15415](https://github.com/community-scripts/ProxmoxVE/pull/15415))
|
|
||||||
- QoL: scaling-governor extend selection and guard missing cpufreq [@MickLesk](https://github.com/MickLesk) ([#15416](https://github.com/community-scripts/ProxmoxVE/pull/15416))
|
|
||||||
|
|
||||||
## 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
|
## 2026-06-24
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- SnapOtter ([#15368](https://github.com/community-scripts/ProxmoxVE/pull/15368))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- enabling rewirte module in apache [@d3v3lop3rDE](https://github.com/d3v3lop3rDE) ([#15360](https://github.com/community-scripts/ProxmoxVE/pull/15360))
|
||||||
|
|
||||||
- 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
|
### 💾 Core
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ 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
|
||||||
@@ -1258,3 +1043,162 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
- #### 🔧 Refactor
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
- Sure: Remove `$STD` for `systemctl enable -q` [@tremor021](https://github.com/tremor021) ([#14801](https://github.com/community-scripts/ProxmoxVE/pull/14801))
|
- 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))
|
||||||
@@ -58,3 +58,5 @@ 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}"
|
||||||
|
|||||||
+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
|
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
||||||
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 [[ ! -x /root/.bun/bin/bun ]]; then
|
if ! command -v bun >/dev/null 2>&1; 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"
|
||||||
fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.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"
|
||||||
|
|
||||||
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:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
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] "pyopenssl<25" --upgrade
|
$STD pip3 install deluge[all] --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
|
||||||
mkdir -p /opt/docuseal/tmp
|
export SECRET_KEY_BASE_DUMMY=1
|
||||||
set -a
|
set -a
|
||||||
source /opt/docuseal/.env
|
source /opt/docuseal/.env
|
||||||
set +a
|
set +a
|
||||||
|
|||||||
+4
-1
@@ -63,7 +63,10 @@ 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 uv sync --frozen --no-dev
|
$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 "Backend Updated"
|
msg_ok "Backend Updated"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
+3
-57
@@ -29,63 +29,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
msg_info "Updating ERPNext"
|
||||||
FRAPPE_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
||||||
SITE="$(ls /opt/frappe-bench/sites/*/site_config.json 2>/dev/null | head -1 | cut -d/ -f5)"
|
msg_ok "Updated ERPNext"
|
||||||
[[ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,65 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}:9001${CL}"
|
|
||||||
-69
@@ -1,69 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}:5005${CL}"
|
|
||||||
@@ -1,64 +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://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 "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
#!/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,13 +85,8 @@ 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"
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
________ __ __
|
|
||||||
/ ____/ /_/ /_ ___ _________ ____ _____/ /
|
|
||||||
/ __/ / __/ __ \/ _ \/ ___/ __ \/ __ `/ __ /
|
|
||||||
/ /___/ /_/ / / / __/ / / /_/ / /_/ / /_/ /
|
|
||||||
/_____/\__/_/ /_/\___/_/ / .___/\__,_/\__,_/
|
|
||||||
/_/
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
________
|
|
||||||
/ ____/ /___ _____ ___ ___
|
|
||||||
/ /_ / / __ `/ __ `__ \/ _ \
|
|
||||||
/ __/ / / /_/ / / / / / / __/
|
|
||||||
/_/ /_/\__,_/_/ /_/ /_/\___/
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
________ _______ _____
|
|
||||||
/ ____/ |/ / __ \ / ___/___ ______ _____ _____
|
|
||||||
/ /_ / /|_/ / / / /_____\__ \/ _ \/ ___/ | / / _ \/ ___/
|
|
||||||
/ __/ / / / / /_/ /_____/__/ / __/ / | |/ / __/ /
|
|
||||||
/_/ /_/ /_/_____/ /____/\___/_/ |___/\___/_/
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
________ __
|
||||||
|
/ ____/ /_ ____ _____/ /_
|
||||||
|
/ / __/ __ \/ __ \/ ___/ __/
|
||||||
|
/ /_/ / / / / /_/ (__ ) /_
|
||||||
|
\____/_/ /_/\____/____/\__/
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
_ _ __ __
|
|
||||||
(_) | / /__ ____ / /_____ __ __
|
|
||||||
/ /| | / / _ \/ __ \/ __/ __ \/ / / /
|
|
||||||
/ / | |/ / __/ / / / /_/ /_/ / /_/ /
|
|
||||||
/_/ |___/\___/_/ /_/\__/\____/\__, /
|
|
||||||
/____/
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
__ __ ________
|
|
||||||
/ //_/___ / __/ __/___ _____
|
|
||||||
/ ,< / __ \/ /_/ /_/ __ `/ __ \
|
|
||||||
/ /| / /_/ / __/ __/ /_/ / / / /
|
|
||||||
/_/ |_\____/_/ /_/ \__,_/_/ /_/
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
____ _ __ ______ __
|
|
||||||
/ __ \(_)___ _____/ /_ / __/ /___ _/ /_
|
|
||||||
/ /_/ / / __ \/ ___/ __ \/ /_/ / __ `/ __/
|
|
||||||
/ ____/ / / / / /__/ / / / __/ / /_/ / /_
|
|
||||||
/_/ /_/_/ /_/\___/_/ /_/_/ /_/\__,_/\__/
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
____ __ __
|
|
||||||
/ __ \____ ______/ /____ __/ /___ _
|
|
||||||
/ /_/ / __ `/ ___/ //_/ / / / / __ `/
|
|
||||||
/ _, _/ /_/ / /__/ ,< / /_/ / / /_/ /
|
|
||||||
/_/ |_|\__,_/\___/_/|_|\__,_/_/\__,_/
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
_____ ____ __ __
|
|
||||||
/ ___/____ ____ _____ / __ \/ /_/ /____ _____
|
|
||||||
\__ \/ __ \/ __ `/ __ \/ / / / __/ __/ _ \/ ___/
|
|
||||||
___/ / / / / /_/ / /_/ / /_/ / /_/ /_/ __/ /
|
|
||||||
/____/_/ /_/\__,_/ .___/\____/\__/\__/\___/_/
|
|
||||||
/_/
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
_ ______ ____ _____
|
||||||
|
| | /| / / __ `/ _ \/ ___/
|
||||||
|
| |/ |/ / /_/ / __/ /
|
||||||
|
|__/|__/\__, /\___/_/
|
||||||
|
/____/
|
||||||
+2
-2
@@ -51,7 +51,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 -f /opt/run_homarr.sh
|
rm /opt/run_homarr.sh
|
||||||
msg_ok "Fixed old structure"
|
msg_ok "Fixed old structure"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -68,7 +68,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 -f /etc/nginx/nginx.conf
|
rm /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"
|
||||||
|
|
||||||
|
|||||||
+28
-65
@@ -110,7 +110,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="v3.0.1"
|
RELEASE="v2.7.5"
|
||||||
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,7 +124,7 @@ 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="1.0.0"
|
VCHORD_RELEASE="0.5.3"
|
||||||
[[ -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
|
||||||
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"
|
||||||
@@ -140,7 +140,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}/plugins/immich-plugin-core"
|
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
|
|
||||||
@@ -168,21 +168,19 @@ 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)"
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
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/sdk --filter @immich/plugin-sdk --filter immich build
|
$STD pnpm --filter immich --frozen-lockfile 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 --prod --no-optional deploy "$APP_DIR"
|
$STD pnpm --filter immich --frozen-lockfile --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
|
||||||
@@ -192,50 +190,32 @@ 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
|
||||||
|
|
||||||
# sdk, cli & web build
|
# openapi & 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 --filter @immich/cli build
|
$STD pnpm --filter @immich/sdk --filter immich-web 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"
|
||||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
$STD mise trust --ignore ./mise.toml
|
||||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
$STD mise trust ./plugins/mise.toml
|
||||||
|
cd plugins
|
||||||
$STD mise install
|
$STD mise install
|
||||||
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
$STD mise run build
|
||||||
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 ./packages/plugin-core/dist "$PLUGIN_DIR"/dist
|
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||||
cp ./packages/plugin-core/manifest.json "$PLUGIN_DIR"
|
cp ./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
|
||||||
@@ -251,13 +231,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 -Pnu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -nu 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 -Pnu 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 -nu 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"
|
||||||
@@ -266,13 +246,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 -Pnu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -nu 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 -Pnu 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 -nu 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"
|
||||||
@@ -280,23 +260,6 @@ 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"
|
||||||
@@ -466,7 +429,7 @@ function compile_imagemagick() {
|
|||||||
|
|
||||||
function compile_libvips() {
|
function compile_libvips() {
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
LIBVIPS_REVISION="3664cfc5dc2c5661288f5bf5a85ccc51c64c1626"
|
LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e"
|
||||||
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"
|
||||||
|
|||||||
@@ -1,56 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}:26000${CL}"
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
#!/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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
|
||||||
+17
-25
@@ -24,35 +24,27 @@ 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
|
||||||
if check_for_gh_release "librenms" "librenms/librenms"; then
|
setup_mariadb
|
||||||
msg_info "Stopping Services"
|
ensure_dependencies git
|
||||||
systemctl stop php8.4-fpm librenms-scheduler.timer
|
if [[ ! -d /opt/librenms/.git ]]; then
|
||||||
msg_ok "Stopped Services"
|
msg_info "Initializing LibreNMS git metadata"
|
||||||
|
LIBRENMS_VERSION=$(cat ~/.librenms 2>/dev/null)
|
||||||
create_backup /opt/librenms/.env /opt/librenms/config.php /opt/librenms/rrd
|
cd /opt/librenms
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "librenms" "librenms/librenms" "tarball"
|
git init -q
|
||||||
restore_backup
|
git remote add origin https://github.com/librenms/librenms.git
|
||||||
|
git fetch --depth 1 origin "refs/tags/v${LIBRENMS_VERSION}" 2>/dev/null ||
|
||||||
msg_info "Updating LibreNMS"
|
git fetch --depth 1 origin "refs/tags/${LIBRENMS_VERSION}" 2>/dev/null || true
|
||||||
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage}
|
git checkout -qf FETCH_HEAD 2>/dev/null || true
|
||||||
chown -R librenms:librenms /opt/librenms
|
chown -R librenms:librenms .git
|
||||||
chmod 771 /opt/librenms
|
msg_ok "Initialized LibreNMS git metadata"
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+14
-1
@@ -31,7 +31,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
CHOICE=$(msg_menu "Loki Update Options" \
|
CHOICE=$(msg_menu "Loki Update Options" \
|
||||||
"1" "Update Loki" \
|
"1" "Update Loki & Promtail" \
|
||||||
"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")
|
||||||
|
|
||||||
@@ -39,15 +39,24 @@ function update_script() {
|
|||||||
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
|
||||||
|
systemctl stop promtail
|
||||||
|
fi
|
||||||
msg_ok "Stopped Loki"
|
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
|
||||||
|
$STD apt install -y --only-upgrade promtail
|
||||||
|
fi
|
||||||
msg_ok "Updated Loki"
|
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
|
||||||
|
systemctl start promtail
|
||||||
|
fi
|
||||||
msg_ok "Started Loki"
|
msg_ok "Started Loki"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
@@ -80,3 +89,7 @@ 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
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ EOF
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$STD npm install -g n8n@2.27.5
|
$STD npm update -g n8n
|
||||||
systemctl restart n8n
|
systemctl restart n8n
|
||||||
msg_ok "Updated n8n"
|
msg_ok "Updated n8n"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|||||||
@@ -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:-13}"
|
var_version="${var_version:-12}"
|
||||||
var_arm64="${var_arm64:-yes}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
@@ -60,9 +60,8 @@ 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
|
||||||
|
|
||||||
OPENRESTY_VERSION="1.29.2.5"
|
if check_for_gh_release "openresty" "openresty/openresty"; then
|
||||||
if [[ "$(cat ~/.openresty 2>/dev/null)" != "$OPENRESTY_VERSION" ]]; then
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/openresty" "openresty-*.tar.gz"
|
||||||
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
|
||||||
@@ -78,7 +77,6 @@ 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]
|
||||||
@@ -237,9 +235,6 @@ 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 -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/" |
|
OMADA_URL=$(curl -fsSL "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.2.0"
|
RELEASE="v7.0.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
|
||||||
|
|||||||
+6
-5
@@ -58,11 +58,12 @@ 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
|
{
|
||||||
SESSION_SECRET=$(openssl rand -hex 64)
|
echo ""
|
||||||
AI_ENCRYPTION_KEY=$(openssl rand -hex 64)
|
echo "SESSION_SECRET=$(openssl rand -hex 64)"
|
||||||
AGENT_BINARIES_DIR=/opt/patchmon/agents
|
echo "AI_ENCRYPTION_KEY=$(openssl rand -hex 64)"
|
||||||
EOF
|
echo "AGENT_BINARIES_DIR=/opt/patchmon/agents"
|
||||||
|
} >>/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|' \
|
||||||
|
|||||||
@@ -1,70 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8945${CL}"
|
|
||||||
@@ -1,81 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
|
||||||
+1
-1
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Seerr"
|
APP="Seerr"
|
||||||
var_tags="${var_tags:-media}"
|
var_tags="${var_tags:-media}"
|
||||||
var_cpu="${var_cpu:-4}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-6144}"
|
||||||
var_disk="${var_disk:-12}"
|
var_disk="${var_disk:-12}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
@@ -1,63 +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: 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 "${TAB}${GATEWAY}${BGN}http://${IP}:1349${CL}"
|
|
||||||
@@ -38,11 +38,6 @@ 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,8 +30,6 @@ 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 '/^pid \/app\/nginx/d' /etc/nginx/nginx.conf
|
sed -i 's|pid /tmp/nginx/nginx.pid;|pid /run/nginx.pid;|' /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
|
||||||
|
|||||||
+7
-2
@@ -33,12 +33,17 @@ function update_script() {
|
|||||||
systemctl stop tunarr
|
systemctl stop tunarr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
create_backup /root/.local/share/tunarr
|
msg_info "Creating Backup"
|
||||||
|
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
|
||||||
|
|||||||
+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 || true)"
|
INSTALLED_VERSION="$(/opt/vaultwarden/bin/vaultwarden --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)"
|
||||||
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:-2048}"
|
var_ram="${var_ram:-1024}"
|
||||||
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
@@ -0,0 +1,78 @@
|
|||||||
|
#!/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@11" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="pnpm" 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
|
{
|
||||||
FLASK_ENV=production
|
echo "FLASK_ENV=production"
|
||||||
GUNICORN_WORKERS=4
|
echo "GUNICORN_WORKERS=4"
|
||||||
APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)
|
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
|
||||||
EOF
|
} >>/opt/wizarr/.env
|
||||||
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
|
||||||
|
|||||||
@@ -86,11 +86,12 @@ user.is_superuser = True
|
|||||||
user.is_staff = True
|
user.is_staff = True
|
||||||
user.save()
|
user.save()
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >~/adventurelog.creds
|
{
|
||||||
Django-Credentials
|
echo ""
|
||||||
Django Admin User: $DJANGO_ADMIN_USER
|
echo "Django-Credentials"
|
||||||
Django Admin Password: $DJANGO_ADMIN_PASS
|
echo "Django Admin User: $DJANGO_ADMIN_USER"
|
||||||
EOF
|
echo "Django Admin Password: $DJANGO_ADMIN_PASS"
|
||||||
|
} >>~/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
|
{
|
||||||
Garage Tokens and Secrets
|
echo "Garage Tokens and Secrets"
|
||||||
RPC Secret: $RPC_SECRET
|
echo "RPC Secret: $RPC_SECRET"
|
||||||
Admin Token: $ADMIN_TOKEN
|
echo "Admin Token: $ADMIN_TOKEN"
|
||||||
Metrics Token: $METRICS_TOKEN
|
echo "Metrics Token: $METRICS_TOKEN"
|
||||||
EOF
|
} >~/garage.creds
|
||||||
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
|
{
|
||||||
Gateway-Token
|
echo "Gateway-Token"
|
||||||
Token: $GATEWAY_TOKEN
|
echo "Token: $GATEWAY_TOKEN"
|
||||||
EOF
|
} >> /root/.ironclaw/gateway.creds
|
||||||
|
|
||||||
mkdir -p /root/.ironclaw
|
mkdir -p /root/.ironclaw
|
||||||
cat <<EOF >/root/.ironclaw/.env
|
cat <<EOF >/root/.ironclaw/.env
|
||||||
|
|||||||
@@ -71,6 +71,16 @@ $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
|
{
|
||||||
rclone-Credentials
|
echo "rclone-Credentials"
|
||||||
rclone User Name: admin
|
echo "rclone User Name: admin"
|
||||||
rclone Password: $RCLONE_PASSWORD
|
echo "rclone Password: $RCLONE_PASSWORD"
|
||||||
EOF
|
} >>~/rclone.creds
|
||||||
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
|
{
|
||||||
RustDesk WebUI
|
echo "RustDesk WebUI"
|
||||||
|
echo ""
|
||||||
Username: admin
|
echo "Username: admin"
|
||||||
Password: $ADMINPASS
|
echo "Password: $ADMINPASS"
|
||||||
EOF
|
} >>~/rustdesk.creds
|
||||||
echo "${APIRELEASE}" >~/.rustdesk-api
|
echo "${APIRELEASE}" >~/.rustdesk-api
|
||||||
msg_ok "Installed RustDesk API v${APIRELEASE}"
|
msg_ok "Installed RustDesk API v${APIRELEASE}"
|
||||||
|
|
||||||
|
|||||||
@@ -25,12 +25,13 @@ 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
|
{
|
||||||
# Memory-optimized settings for small-scale deployments
|
echo ""
|
||||||
maxmemory ${MAXMEMORY_MB}mb
|
echo "# Memory-optimized settings for small-scale deployments"
|
||||||
maxmemory-policy allkeys-lru
|
echo "maxmemory ${MAXMEMORY_MB}mb"
|
||||||
maxmemory-samples 10
|
echo "maxmemory-policy allkeys-lru"
|
||||||
EOF
|
echo "maxmemory-samples 10"
|
||||||
|
} >>/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
|
{
|
||||||
CouchDB Credentials
|
echo "CouchDB Credentials"
|
||||||
CouchDB Erlang Cookie: $ERLANG_COOKIE
|
echo "CouchDB Erlang Cookie: $ERLANG_COOKIE"
|
||||||
CouchDB Admin Password: $ADMIN_PASS
|
echo "CouchDB Admin Password: $ADMIN_PASS"
|
||||||
EOF
|
} >>~/couchdb.creds
|
||||||
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
|
{
|
||||||
mysql-hostname: 127.0.0.1
|
echo "mysql-hostname: 127.0.0.1"
|
||||||
mysql-port: 3306
|
echo "mysql-port: 3306"
|
||||||
mysql-database: $MARIADB_DB_NAME
|
echo "mysql-database: $MARIADB_DB_NAME"
|
||||||
mysql-username: $MARIADB_DB_USER
|
echo "mysql-username: $MARIADB_DB_USER"
|
||||||
mysql-password: $MARIADB_DB_PASS
|
echo "mysql-password: $MARIADB_DB_PASS"
|
||||||
EOF
|
} >>/etc/guacamole/guacamole.properties
|
||||||
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
|
{
|
||||||
Application-Credentials
|
echo "Application-Credentials"
|
||||||
Username: cmkadmin
|
echo "Username: cmkadmin"
|
||||||
Password: $MKPASSWORD
|
echo "Password: $MKPASSWORD"
|
||||||
Site: $SITE_NAME
|
echo "Site: $SITE_NAME"
|
||||||
EOF
|
} >>~/checkmk.creds
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ 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
|
{
|
||||||
Crafty-Controller-Credentials
|
echo "Crafty-Controller-Credentials"
|
||||||
Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")
|
echo "Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")"
|
||||||
Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")
|
echo "Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")"
|
||||||
EOF
|
} >>~/crafty-controller.creds
|
||||||
fi
|
fi
|
||||||
msg_ok "Service started"
|
msg_ok "Service started"
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -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
|
||||||
[[ "$(arch_resolve "x86_64" "arm64")" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
[[ "$MONGO_ARCH" == "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
|
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
||||||
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] "pyopenssl<25"
|
$STD pip install deluge[all]
|
||||||
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
|
{
|
||||||
Dolibarr DB Credentials
|
echo "Dolibarr DB Credentials"
|
||||||
MariaDB Root Password: $ROOT_PASS
|
echo "MariaDB Root Password: $ROOT_PASS"
|
||||||
EOF
|
} >>~/dolibarr.creds
|
||||||
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
|
{
|
||||||
FTP-Credentials
|
echo "FTP-Credentials"
|
||||||
Username: ftpuser
|
echo "Username: ftpuser"
|
||||||
Password: $FTP_PASS
|
echo "Password: $FTP_PASS"
|
||||||
EOF
|
} >>~/ftp.creds
|
||||||
|
|
||||||
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
|
{
|
||||||
Admin password = ${ADMINPASS}
|
echo "Admin password = ${ADMINPASS}"
|
||||||
Database encryption key = ${DECRYPTKEY}
|
echo "Database encryption key = ${DECRYPTKEY}"
|
||||||
EOF
|
} >>~/duplicati.creds
|
||||||
msg_ok "Configured duplicati"
|
msg_ok "Configured duplicati"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ ADMIN_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
|||||||
echo "enable_registration_without_verification: true" >>/etc/matrix-synapse/homeserver.yaml
|
echo "enable_registration_without_verification: true" >>/etc/matrix-synapse/homeserver.yaml
|
||||||
echo "registration_shared_secret: ${SECRET}" >>/etc/matrix-synapse/homeserver.yaml
|
echo "registration_shared_secret: ${SECRET}" >>/etc/matrix-synapse/homeserver.yaml
|
||||||
|
|
||||||
cat <<EOF >/etc/matrix-synapse/homeserver.yaml
|
cat <<EOF >>/etc/matrix-synapse/homeserver.yaml
|
||||||
|
|
||||||
# MatrixRTC / Element Call configuration
|
# MatrixRTC / Element Call configuration
|
||||||
experimental_features:
|
experimental_features:
|
||||||
@@ -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
|
{
|
||||||
Matrix-Credentials
|
echo "Matrix-Credentials"
|
||||||
Admin username: admin
|
echo "Admin username: admin"
|
||||||
Admin password: $ADMIN_PASS
|
echo "Admin password: $ADMIN_PASS"
|
||||||
EOF
|
} >>~/matrix.creds
|
||||||
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
|
||||||
|
|||||||
@@ -83,7 +83,14 @@ 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 sync --frozen --no-dev
|
$STD uv tool install poetry
|
||||||
|
$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"
|
||||||
|
|||||||
+11
-13
@@ -31,12 +31,11 @@ $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.14" setup_uv
|
UV_PYTHON="3.13" setup_uv
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
|
|
||||||
msg_info "Configuring MariaDB for ERPNext"
|
msg_info "Configuring MariaDB for ERPNext"
|
||||||
@@ -69,9 +68,8 @@ 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"; uv python install 3.14'
|
$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"; 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-15'
|
||||||
$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'
|
||||||
@@ -88,14 +86,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
|
{
|
||||||
ERPNext Credentials
|
echo "ERPNext Credentials"
|
||||||
==================
|
echo "=================="
|
||||||
Admin Username: Administrator
|
echo "Admin Username: Administrator"
|
||||||
Admin Password: ${ADMIN_PASS}
|
echo "Admin Password: ${ADMIN_PASS}"
|
||||||
DB Root Password: ${DB_ROOT_PASS}
|
echo "DB Root Password: ${DB_ROOT_PASS}"
|
||||||
Site Name: site1.local
|
echo "Site Name: site1.local"
|
||||||
EOF
|
} >~/erpnext.creds
|
||||||
$STD systemctl enable --now redis-server
|
$STD systemctl enable --now redis-server
|
||||||
msg_ok "Configured ERPNext"
|
msg_ok "Configured ERPNext"
|
||||||
|
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
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
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
|
||||||
fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
|
||||||
|
|
||||||
msg_info "Setting up Flame"
|
|
||||||
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/
|
|
||||||
FLAME_VERSION=$(cat ~/.flame)
|
|
||||||
cat <<EOF >/opt/flame/.env
|
|
||||||
NODE_ENV=production
|
|
||||||
VERSION=${FLAME_VERSION}
|
|
||||||
PASSWORD=
|
|
||||||
EOF
|
|
||||||
msg_ok "Set up Flame"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/flame.service
|
|
||||||
[Unit]
|
|
||||||
Description=Flame Startpage
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=root
|
|
||||||
WorkingDirectory=/opt/flame
|
|
||||||
ExecStart=/usr/bin/node server.js
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now flame
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
cleanup_lxc
|
|
||||||
@@ -20,12 +20,16 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PYTHON_VERSION="3.11" setup_uv
|
PYTHON_VERSION="3.11" setup_uv
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
NODE_VERSION="22" setup_nodejs #needed because better-sql break
|
||||||
|
|
||||||
msg_info "Installing FlowiseAI (Patience)"
|
msg_info "Installing FlowiseAI (Patience)"
|
||||||
PYTHON_BIN="$(uv python find 3.11)"
|
PYTHON_BIN="$(uv python find 3.11)"
|
||||||
export npm_config_python="$PYTHON_BIN"
|
export npm_config_python="$PYTHON_BIN"
|
||||||
$STD pnpm add -g flowise
|
$STD npm install -g flowise \
|
||||||
|
@opentelemetry/exporter-trace-otlp-grpc \
|
||||||
|
@opentelemetry/exporter-trace-otlp-proto \
|
||||||
|
@opentelemetry/sdk-trace-node \
|
||||||
|
langchainhub
|
||||||
mkdir -p /opt/flowiseai
|
mkdir -p /opt/flowiseai
|
||||||
curl -fsSL "https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example" -o "/opt/flowiseai/.env"
|
curl -fsSL "https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example" -o "/opt/flowiseai/.env"
|
||||||
msg_ok "Installed FlowiseAI"
|
msg_ok "Installed FlowiseAI"
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
fetch_and_deploy_gl_release "fmd-server" "fmd-foss/fmd-server" "prebuild" "latest" "/opt/fmd-server" "fmd-server-*.zip"
|
|
||||||
create_self_signed_cert
|
|
||||||
|
|
||||||
msg_info "Configuring fmd-server"
|
|
||||||
cd /opt/fmd-server
|
|
||||||
chmod +x fmd-server-*
|
|
||||||
cp config.example.yml config.yml
|
|
||||||
edit_yaml_config config.yml "WebDir" '"/opt/fmd-server/web/dist/"'
|
|
||||||
edit_yaml_config config.yml "DatabaseDir" '"/opt/fmd-server/db/"'
|
|
||||||
edit_yaml_config config.yml "ServerCrt" '"/etc/ssl/fmd-server/fmd-server.crt"'
|
|
||||||
edit_yaml_config config.yml "ServerKey" '"/etc/ssl/fmd-server/fmd-server.key"'
|
|
||||||
msg_ok "Configured fmd-server"
|
|
||||||
|
|
||||||
msg_info "Creating services"
|
|
||||||
cat <<EOF >/etc/systemd/system/fmd-server.service
|
|
||||||
[Unit]
|
|
||||||
Description=fmd-server Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt/fmd-server
|
|
||||||
ExecStart=/opt/fmd-server/fmd-server-$(arch_resolve) serve
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now fmd-server
|
|
||||||
msg_ok "Created services"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
cleanup_lxc
|
|
||||||
@@ -110,7 +110,7 @@ export AUTOGRAPH_VERBOSITY=0
|
|||||||
export GLOG_minloglevel=3
|
export GLOG_minloglevel=3
|
||||||
export GLOG_logtostderr=0
|
export GLOG_logtostderr=0
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "frigate" "blakeblackshear/frigate" "tarball" "v0.17.2" "/opt/frigate"
|
fetch_and_deploy_gh_release "frigate" "blakeblackshear/frigate" "tarball" "v0.17.1" "/opt/frigate"
|
||||||
|
|
||||||
msg_info "Building Nginx"
|
msg_info "Building Nginx"
|
||||||
$STD bash /opt/frigate/docker/main/build_nginx.sh
|
$STD bash /opt/frigate/docker/main/build_nginx.sh
|
||||||
@@ -290,7 +290,7 @@ detect:
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
if grep -q -o -m1 -E 'avx[^ ]*|sse4_2' /proc/cpuinfo && [[ -f /openvino-model/ssdlite_mobilenet_v2.xml ]] && [[ -f /openvino-model/coco_91cl_bkgr.txt ]]; then
|
if grep -q -o -m1 -E 'avx[^ ]*|sse4_2' /proc/cpuinfo && [[ -f /openvino-model/ssdlite_mobilenet_v2.xml ]] && [[ -f /openvino-model/coco_91cl_bkgr.txt ]]; then
|
||||||
cat <<EOF >/config/config.yml
|
cat <<EOF >>/config/config.yml
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
hwaccel_args: auto
|
hwaccel_args: auto
|
||||||
detectors:
|
detectors:
|
||||||
@@ -306,7 +306,7 @@ model:
|
|||||||
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
|
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
cat <<EOF >/config/config.yml
|
cat <<EOF >>/config/config.yml
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
hwaccel_args: auto
|
hwaccel_args: auto
|
||||||
model:
|
model:
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ mkdir -p /etc/garage
|
|||||||
RPC_SECRET=$(openssl rand -hex 32)
|
RPC_SECRET=$(openssl rand -hex 32)
|
||||||
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
|
{
|
||||||
Garage Tokens and Secrets
|
echo "Garage Tokens and Secrets"
|
||||||
RPC Secret: $RPC_SECRET
|
echo "RPC Secret: $RPC_SECRET"
|
||||||
Admin Token: $ADMIN_TOKEN
|
echo "Admin Token: $ADMIN_TOKEN"
|
||||||
Metrics Token: $METRICS_TOKEN
|
echo "Metrics Token: $METRICS_TOKEN"
|
||||||
EOF
|
} >>~/garage.creds
|
||||||
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"
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
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 \
|
||||||
|
nginx \
|
||||||
|
ca-certificates \
|
||||||
|
libjemalloc2 \
|
||||||
|
git
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
setup_mariadb
|
||||||
|
MARIADB_DB_NAME="ghost" MARIADB_DB_USER="ghostuser" setup_mariadb_db
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||||
|
|
||||||
|
msg_info "Installing Ghost CLI"
|
||||||
|
$STD npm install ghost-cli@latest -g
|
||||||
|
msg_ok "Installed Ghost CLI"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
$STD adduser --disabled-password --gecos "Ghost user" ghost-user
|
||||||
|
$STD usermod -aG sudo ghost-user
|
||||||
|
echo "ghost-user ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/ghost-user
|
||||||
|
mkdir -p /var/www/ghost
|
||||||
|
chown -R ghost-user:ghost-user /var/www/ghost
|
||||||
|
chmod 775 /var/www/ghost
|
||||||
|
$STD sudo -u ghost-user -H sh -c "cd /var/www/ghost && ghost install --db=mysql --dbhost=localhost --dbuser=$MARIADB_DB_USER --dbpass=$MARIADB_DB_PASS --dbname=$MARIADB_DB_NAME --url=http://localhost:2368 --no-prompt --no-setup-nginx --no-setup-ssl --no-setup-mysql --enable --start --ip 0.0.0.0"
|
||||||
|
rm /etc/sudoers.d/ghost-user
|
||||||
|
msg_ok "Creating Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -29,12 +29,12 @@ PG_DB_NAME="ghostfolio" PG_DB_USER="ghostfolio" PG_DB_SCHEMA_PERMS="true" setup_
|
|||||||
REDIS_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
REDIS_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
|
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
|
||||||
JWT_SECRET_KEY=$(openssl rand -base64 32)
|
JWT_SECRET_KEY=$(openssl rand -base64 32)
|
||||||
cat <<EOF >~/ghostfolio.creds
|
{
|
||||||
Ghostfolio Credentials
|
echo "Ghostfolio Credentials"
|
||||||
Redis Password: $REDIS_PASS
|
echo "Redis Password: $REDIS_PASS"
|
||||||
Access Token Salt: $ACCESS_TOKEN_SALT
|
echo "Access Token Salt: $ACCESS_TOKEN_SALT"
|
||||||
JWT Secret Key: $JWT_SECRET_KEY
|
echo "JWT Secret Key: $JWT_SECRET_KEY"
|
||||||
EOF
|
} >>~/ghostfolio.creds
|
||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
|
fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
|
||||||
|
|||||||
@@ -33,12 +33,12 @@ $STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
|||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"
|
||||||
$STD mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
cat <<EOF >~/glpi_db.creds
|
{
|
||||||
GLPI Database Credentials
|
echo "GLPI Database Credentials"
|
||||||
Database: $DB_NAME
|
echo "Database: $DB_NAME"
|
||||||
Username: $DB_USER
|
echo "Username: $DB_USER"
|
||||||
Password: $DB_PASS
|
echo "Password: $DB_PASS"
|
||||||
EOF
|
} >>~/glpi_db.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing GLPi"
|
msg_info "Installing GLPi"
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ msg_ok "Setup Graylog Data Node"
|
|||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Setup ${APPLICATION}"
|
||||||
$STD apt-get install graylog-server
|
$STD apt-get install graylog-server
|
||||||
ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||||
cat <<EOF >~/graylog.creds
|
{
|
||||||
${APPLICATION} Credentials
|
echo "${APPLICATION} Credentials"
|
||||||
Admin User: admin
|
echo "Admin User: admin"
|
||||||
Admin Password: ${ROOT_PASSWORD}
|
echo "Admin Password: ${ROOT_PASSWORD}"
|
||||||
EOF
|
} >>~/graylog.creds
|
||||||
ROOT_PASSWORD=$(echo -n $ROOT_PASSWORD | shasum -a 256 | awk '{print $1}')
|
ROOT_PASSWORD=$(echo -n $ROOT_PASSWORD | shasum -a 256 | awk '{print $1}')
|
||||||
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/server/server.conf
|
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/server/server.conf
|
||||||
sed -i "s/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf
|
sed -i "s/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
gcc \
|
gcc \
|
||||||
python3 \
|
python3 \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
python3-venv \
|
python3-venv \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
libcurl4-openssl-dev \
|
libcurl4-openssl-dev \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
caddy
|
caddy
|
||||||
|
|
||||||
mkdir -p ~/.config/pip
|
mkdir -p ~/.config/pip
|
||||||
cat >~/.config/pip/pip.conf <<EOF
|
cat >~/.config/pip/pip.conf <<EOF
|
||||||
@@ -37,10 +37,10 @@ msg_info "Setup Keys (Admin / Secret)"
|
|||||||
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
|
||||||
ADMIN_EMAIL="admin@community-scripts.org"
|
ADMIN_EMAIL="admin@community-scripts.org"
|
||||||
ADMIN_PASSWORD="$PG_DB_PASS"
|
ADMIN_PASSWORD="$PG_DB_PASS"
|
||||||
cat <<EOF >~/healthchecks.creds
|
{
|
||||||
healthchecks Admin Email: $ADMIN_EMAIL
|
echo "healthchecks Admin Email: $ADMIN_EMAIL"
|
||||||
healthchecks Admin Password: $ADMIN_PASSWORD
|
echo "healthchecks Admin Password: $ADMIN_PASSWORD"
|
||||||
EOF
|
} >>~/healthchecks.creds
|
||||||
msg_ok "Set up Keys"
|
msg_ok "Set up Keys"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" "tarball"
|
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" "tarball"
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ chmod 744 /appdata/redis
|
|||||||
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 -f /etc/nginx/nginx.conf
|
rm /etc/nginx/nginx.conf
|
||||||
mkdir -p /etc/nginx/templates
|
mkdir -p /etc/nginx/templates
|
||||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
||||||
echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr
|
echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr
|
||||||
|
|||||||
@@ -46,12 +46,12 @@ ADMIN_EMAIL="admin@example.com"
|
|||||||
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)"
|
||||||
ADMIN_HASH=$(php -r "echo password_hash('$ADMIN_PASS', PASSWORD_BCRYPT);")
|
ADMIN_HASH=$(php -r "echo password_hash('$ADMIN_PASS', PASSWORD_BCRYPT);")
|
||||||
$STD mariadb -u root -D $MARIADB_DB_NAME -e "INSERT IGNORE INTO UserModel (name, email, password, admin) VALUES ('Admin', '$ADMIN_EMAIL', '$ADMIN_HASH', 1);"
|
$STD mariadb -u root -D $MARIADB_DB_NAME -e "INSERT IGNORE INTO UserModel (name, email, password, admin) VALUES ('Admin', '$ADMIN_EMAIL', '$ADMIN_HASH', 1);"
|
||||||
cat <<EOF >~/hortusfox.creds
|
{
|
||||||
|
echo ""
|
||||||
HortusFox-Admin-Creds:
|
echo "HortusFox-Admin-Creds:"
|
||||||
E-Mail: $ADMIN_EMAIL
|
echo "E-Mail: $ADMIN_EMAIL"
|
||||||
Passwort: $ADMIN_PASS
|
echo "Passwort: $ADMIN_PASS"
|
||||||
EOF
|
} >>~/hortusfox.creds
|
||||||
$STD mariadb -u root -D $MARIADB_DB_NAME -e "INSERT IGNORE INTO LocationsModel (name, active, created_at) VALUES ('Home', 1, NOW());"
|
$STD mariadb -u root -D $MARIADB_DB_NAME -e "INSERT IGNORE INTO LocationsModel (name, active, created_at) VALUES ('Home', 1, NOW());"
|
||||||
msg_ok "Set up HortusFox"
|
msg_ok "Set up HortusFox"
|
||||||
|
|
||||||
|
|||||||
+34
-44
@@ -162,7 +162,7 @@ PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
|
|||||||
ACTUAL_PG_VERSION=$(ls /etc/postgresql/ 2>/dev/null | sort -V | tail -1)
|
ACTUAL_PG_VERSION=$(ls /etc/postgresql/ 2>/dev/null | sort -V | tail -1)
|
||||||
ACTUAL_PG_VERSION=${ACTUAL_PG_VERSION:-16}
|
ACTUAL_PG_VERSION=${ACTUAL_PG_VERSION:-16}
|
||||||
|
|
||||||
VCHORD_RELEASE="1.0.0"
|
VCHORD_RELEASE="0.5.3"
|
||||||
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-${ACTUAL_PG_VERSION}-vchord_*_$(arch_resolve).deb"
|
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-${ACTUAL_PG_VERSION}-vchord_*_$(arch_resolve).deb"
|
||||||
|
|
||||||
sed -i "s/^#shared_preload.*/shared_preload_libraries = 'vchord.so'/" /etc/postgresql/${ACTUAL_PG_VERSION}/main/postgresql.conf
|
sed -i "s/^#shared_preload.*/shared_preload_libraries = 'vchord.so'/" /etc/postgresql/${ACTUAL_PG_VERSION}/main/postgresql.conf
|
||||||
@@ -282,7 +282,7 @@ msg_ok "(4/5) Compiled imagemagick"
|
|||||||
|
|
||||||
msg_info "(5/5) Compiling libvips"
|
msg_info "(5/5) Compiling libvips"
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
LIBVIPS_REVISION="3664cfc5dc2c5661288f5bf5a85ccc51c64c1626"
|
LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e"
|
||||||
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
|
||||||
cd "$SOURCE"
|
cd "$SOURCE"
|
||||||
$STD git reset --hard "$LIBVIPS_REVISION"
|
$STD git reset --hard "$LIBVIPS_REVISION"
|
||||||
@@ -293,33 +293,27 @@ ldconfig /usr/local/lib
|
|||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
rm -rf "$SOURCE"/build
|
rm -rf "$SOURCE"/build
|
||||||
msg_ok "(5/5) Compiled libvips"
|
msg_ok "(5/5) Compiled libvips"
|
||||||
cat <<EOF >~/.immich_library_revisions
|
{
|
||||||
imagemagick: $IMAGEMAGICK_REVISION
|
echo "imagemagick: $IMAGEMAGICK_REVISION"
|
||||||
libheif: $LIBHEIF_REVISION
|
echo "libheif: $LIBHEIF_REVISION"
|
||||||
libjxl: $LIBJXL_REVISION
|
echo "libjxl: $LIBJXL_REVISION"
|
||||||
libraw: $LIBRAW_REVISION
|
echo "libraw: $LIBRAW_REVISION"
|
||||||
libvips: $LIBVIPS_REVISION
|
echo "libvips: $LIBVIPS_REVISION"
|
||||||
EOF
|
} >~/.immich_library_revisions
|
||||||
msg_ok "Custom Photo-processing Libraries Compiled Successfully"
|
msg_ok "Custom Photo-processing Libraries Compiled Successfully"
|
||||||
|
|
||||||
INSTALL_DIR="/opt/${APPLICATION}"
|
INSTALL_DIR="/opt/${APPLICATION}"
|
||||||
UPLOAD_DIR="${INSTALL_DIR}/upload"
|
UPLOAD_DIR="${INSTALL_DIR}/upload"
|
||||||
SRC_DIR="${INSTALL_DIR}/source"
|
SRC_DIR="${INSTALL_DIR}/source"
|
||||||
APP_DIR="${INSTALL_DIR}/app"
|
APP_DIR="${INSTALL_DIR}/app"
|
||||||
PLUGIN_DIR="${APP_DIR}/plugins/immich-plugin-core"
|
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v3.0.1" "$SRC_DIR"
|
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v2.7.5" "$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)"
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
|
||||||
# Provision the exact pnpm pinned in package.json's packageManager field via corepack instead
|
|
||||||
# of `npm i -g pnpm@X`, which collides (EEXIST) with the corepack pnpm shim shipped by the
|
|
||||||
$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate
|
|
||||||
export PATH="/root/.local/share/pnpm/bin:$PATH"
|
|
||||||
$STD pnpm config set --global dangerouslyAllowAllBuilds true
|
|
||||||
|
|
||||||
msg_info "Installing Immich (patience)"
|
msg_info "Installing Immich (patience)"
|
||||||
|
|
||||||
@@ -329,10 +323,10 @@ export CI=1
|
|||||||
|
|
||||||
# server build
|
# server build
|
||||||
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
||||||
$STD pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter immich build
|
$STD pnpm --filter immich --frozen-lockfile 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 --prod --no-optional deploy "$APP_DIR"
|
$STD pnpm --filter immich --frozen-lockfile --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
|
||||||
@@ -342,35 +336,31 @@ fi
|
|||||||
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
|
||||||
|
|
||||||
# sdk, cli & web build
|
# openapi & 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 --filter @immich/cli build
|
$STD pnpm --filter @immich/sdk --filter immich-web 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
|
||||||
|
|
||||||
|
# plugins
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
$STD mise trust --ignore ./mise.toml
|
||||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
$STD mise trust ./plugins/mise.toml
|
||||||
|
cd plugins
|
||||||
$STD mise install
|
$STD mise install
|
||||||
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
$STD mise run build
|
||||||
if ! command -v extism-js >/dev/null 2>&1; then
|
|
||||||
# extism-js is published as a bare gzip-compressed single binary (.gz), which
|
|
||||||
# fetch_and_deploy_gh_release cannot deploy (singlefile leaves it compressed,
|
|
||||||
# prebuild only handles zip/tar). 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
|
|
||||||
$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 ./packages/plugin-core/dist "$PLUGIN_DIR"/dist
|
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||||
cp ./packages/plugin-core/manifest.json "$PLUGIN_DIR"
|
cp ./manifest.json "$PLUGIN_DIR"
|
||||||
msg_ok "Installed Immich Server, Web and Plugin Components"
|
msg_ok "Installed Immich Server, Web and Plugin Components"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
@@ -386,13 +376,13 @@ if [[ -f ~/.openvino ]]; then
|
|||||||
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 -Pnu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -nu 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 "Installing Intel OpenVINO machine-learning"
|
msg_info "Installing 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 -Pnu 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 -nu 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"
|
||||||
@@ -401,13 +391,13 @@ else
|
|||||||
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 -Pnu immich uv python install "${ML_PYTHON}" && break
|
$STD sudo --preserve-env=VIRTUAL_ENV -nu 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 "Installing machine-learning"
|
msg_info "Installing 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 -Pnu 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 -nu 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 "Installed machine-learning"
|
msg_ok "Installed machine-learning"
|
||||||
|
|||||||
@@ -30,10 +30,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
|
{
|
||||||
Gateway-Token
|
echo "Gateway-Token"
|
||||||
Token: $GATEWAY_TOKEN
|
echo "Token: $GATEWAY_TOKEN"
|
||||||
EOF
|
} >> /root/.ironclaw/gateway.creds
|
||||||
|
|
||||||
mkdir -p /root/.ironclaw
|
mkdir -p /root/.ironclaw
|
||||||
cat <<EOF >/root/.ironclaw/.env
|
cat <<EOF >/root/.ironclaw/.env
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "iventoy" "ventoy/PXE" "prebuild" "latest" "/opt/iventoy" "iventoy-*-linux-$(arch_resolve x86_64-free arm64-trial).tar.gz"
|
|
||||||
mkdir -p /opt/iventoy/{data,iso}
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/iventoy.service
|
|
||||||
[Unit]
|
|
||||||
Description=iVentoy PXE Booter
|
|
||||||
Documentation=https://www.iventoy.com
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=forking
|
|
||||||
WorkingDirectory=/opt/iventoy
|
|
||||||
Environment=IVENTOY_API_ALL=1
|
|
||||||
Environment=IVENTOY_AUTO_RUN=1
|
|
||||||
Environment=LIBRARY_PATH=/opt/iventoy/lib/lin64
|
|
||||||
Environment=LD_LIBRARY_PATH=/opt/iventoy/lib/lin64
|
|
||||||
ExecStart=/bin/sh /opt/iventoy/iventoy.sh -R start
|
|
||||||
ExecStop=/bin/sh /opt/iventoy/iventoy.sh stop
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now iventoy
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
cleanup_lxc
|
|
||||||
@@ -33,12 +33,12 @@ MYSQL_VERSION=$(mariadb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
|
|||||||
$STD mariadb -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD mariadb -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mariadb -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
cat <<EOF >~/kimai.creds
|
{
|
||||||
Kimai-Credentials
|
echo "Kimai-Credentials"
|
||||||
Kimai Database User: $DB_USER
|
echo "Kimai Database User: $DB_USER"
|
||||||
Kimai Database Password: $DB_PASS
|
echo "Kimai Database Password: $DB_PASS"
|
||||||
Kimai Database Name: $DB_NAME
|
echo "Kimai Database Name: $DB_NAME"
|
||||||
EOF
|
} >>~/kimai.creds
|
||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball"
|
fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball"
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
|
||||||
# Author: (AminGholizad)
|
|
||||||
# License: MIT | https://github.com/AminGholizad/ProxmoxVED/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/PanSalut/Koffan
|
|
||||||
|
|
||||||
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
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
setup_go
|
|
||||||
fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball"
|
|
||||||
|
|
||||||
msg_info "Building Koffan"
|
|
||||||
cd /opt/koffan
|
|
||||||
$STD go build -o koffan main.go
|
|
||||||
msg_ok "Built Koffan"
|
|
||||||
|
|
||||||
msg_info "Configuring Koffan"
|
|
||||||
APP_PASSWD=$(openssl rand -base64 12)
|
|
||||||
mkdir /opt/koffan/data
|
|
||||||
cat <<EOF >/opt/koffan/data/.env
|
|
||||||
APP_ENV=production
|
|
||||||
APP_PASSWORD=${APP_PASSWD}
|
|
||||||
PORT=3000
|
|
||||||
DB_PATH=/opt/koffan/data/shopping.db
|
|
||||||
EOF
|
|
||||||
cat <<EOF >~/koffan.creds
|
|
||||||
Password: ${APP_PASSWD}
|
|
||||||
EOF
|
|
||||||
msg_ok "Configured Koffan"
|
|
||||||
|
|
||||||
msg_info "Creating systemd service"
|
|
||||||
cat <<EOF >/etc/systemd/system/koffan.service
|
|
||||||
[Unit]
|
|
||||||
Description=Koffan Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
EnvironmentFile=/opt/koffan/data/.env
|
|
||||||
WorkingDirectory=/opt/koffan
|
|
||||||
ExecStart=/opt/koffan/koffan
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now koffan
|
|
||||||
msg_ok "Created systemd service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
cleanup_lxc
|
|
||||||
@@ -17,6 +17,7 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
acl \
|
acl \
|
||||||
fping \
|
fping \
|
||||||
|
git \
|
||||||
graphviz \
|
graphviz \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
mtr-tiny \
|
mtr-tiny \
|
||||||
@@ -64,6 +65,16 @@ EOF
|
|||||||
chown -R librenms:librenms /opt/librenms
|
chown -R librenms:librenms /opt/librenms
|
||||||
chmod 771 /opt/librenms
|
chmod 771 /opt/librenms
|
||||||
chmod -R ug=rwX /opt/librenms/bootstrap/cache /opt/librenms/storage /opt/librenms/logs /opt/librenms/rrd
|
chmod -R ug=rwX /opt/librenms/bootstrap/cache /opt/librenms/storage /opt/librenms/logs /opt/librenms/rrd
|
||||||
|
if [[ ! -d /opt/librenms/.git ]]; then
|
||||||
|
LIBRENMS_VERSION=$(cat ~/.librenms 2>/dev/null)
|
||||||
|
cd /opt/librenms
|
||||||
|
git init -q
|
||||||
|
git remote add origin https://github.com/librenms/librenms.git
|
||||||
|
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
|
||||||
|
git checkout -qf FETCH_HEAD 2>/dev/null || true
|
||||||
|
chown -R librenms:librenms .git
|
||||||
|
fi
|
||||||
msg_ok "Configured LibreNMS"
|
msg_ok "Configured LibreNMS"
|
||||||
|
|
||||||
msg_info "Configure MariaDB"
|
msg_info "Configure MariaDB"
|
||||||
@@ -116,11 +127,11 @@ cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
|
|||||||
|
|
||||||
APP_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
APP_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
APP_USER="admin"
|
APP_USER="admin"
|
||||||
cat <<EOF >~/librenms.creds
|
{
|
||||||
LibreNMS Credentials
|
echo "LibreNMS Credentials"
|
||||||
Username: ${APP_USER}
|
echo "Username: ${APP_USER}"
|
||||||
Password: ${APP_PASSWORD}
|
echo "Password: ${APP_PASSWORD}"
|
||||||
EOF
|
} >>~/librenms.creds
|
||||||
|
|
||||||
$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 && COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev"
|
||||||
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan migrate --force"
|
$STD su - librenms -s /bin/bash -c "cd /opt/librenms && php8.4 artisan migrate --force"
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
cat <<EOF >~/limesurvey.creds
|
{
|
||||||
LimeSurvey-Credentials
|
echo "LimeSurvey-Credentials"
|
||||||
LimeSurvey Database User: $DB_USER
|
echo "LimeSurvey Database User: $DB_USER"
|
||||||
LimeSurvey Database Password: $DB_PASS
|
echo "LimeSurvey Database Password: $DB_PASS"
|
||||||
LimeSurvey Database Name: $DB_NAME
|
echo "LimeSurvey Database Name: $DB_NAME"
|
||||||
EOF
|
} >>~/limesurvey.creds
|
||||||
msg_ok "Configured MariaDB Database"
|
msg_ok "Configured MariaDB Database"
|
||||||
|
|
||||||
msg_info "Setting up LimeSurvey"
|
msg_info "Setting up LimeSurvey"
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ DB_USER=listmonk
|
|||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||||
cat <<EOF >~/listmonk.creds
|
{
|
||||||
listmonk-Credentials
|
echo "listmonk-Credentials"
|
||||||
listmonk Database User: $DB_USER
|
echo -e "listmonk Database User: \e[32m$DB_USER\e[0m"
|
||||||
listmonk Database Password: $DB_PASS
|
echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m"
|
||||||
listmonk Database Name: $DB_NAME
|
echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m"
|
||||||
EOF
|
} >>~/listmonk.creds
|
||||||
msg_ok "Configured PostgreSQL"
|
msg_ok "Configured PostgreSQL"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_$(arch_resolve).tar.gz"
|
fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_$(arch_resolve).tar.gz"
|
||||||
|
|||||||
@@ -67,10 +67,10 @@ export ERLANG_BIN="/opt/livebook/.elixir-install/installs/otp/\${ERLANG_VERSION}
|
|||||||
export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/\${ELIXIR_VERSION}/bin"
|
export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/\${ELIXIR_VERSION}/bin"
|
||||||
export PATH="\$ESCRIPTS_BIN:\$ERLANG_BIN:\$ELIXIR_BIN:\$PATH"
|
export PATH="\$ESCRIPTS_BIN:\$ERLANG_BIN:\$ELIXIR_BIN:\$PATH"
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >~/livebook.creds
|
{
|
||||||
Livebook-Credentials
|
echo "Livebook-Credentials"
|
||||||
Livebook Password: $LIVEBOOK_PASSWORD
|
echo "Livebook Password: $LIVEBOOK_PASSWORD"
|
||||||
EOF
|
} >>~/livebook.creds
|
||||||
msg_ok "Installed Erlang $ERLANG_VERSION and Elixir $ELIXIR_VERSION"
|
msg_ok "Installed Erlang $ERLANG_VERSION and Elixir $ELIXIR_VERSION"
|
||||||
|
|
||||||
msg_info "Installing Livebook"
|
msg_info "Installing Livebook"
|
||||||
|
|||||||
@@ -70,6 +70,14 @@ chown loki /etc/loki/config.yml
|
|||||||
systemctl enable -q --now loki
|
systemctl enable -q --now loki
|
||||||
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 apt install -y promtail
|
||||||
|
systemctl enable -q --now promtail
|
||||||
|
msg_ok "Installed Promtail"
|
||||||
|
fi
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
|||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
cat <<EOF >~/mmdl.creds
|
{
|
||||||
Manage My Damn Life Credentials
|
echo "Manage My Damn Life Credentials"
|
||||||
Database User: $DB_USER
|
echo "Database User: $DB_USER"
|
||||||
Database Password: $DB_PASS
|
echo "Database Password: $DB_PASS"
|
||||||
Database Name: $DB_NAME
|
echo "Database Name: $DB_NAME"
|
||||||
EOF
|
} >>~/mmdl.creds
|
||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ $STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
|
|||||||
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
|
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
|
||||||
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
|
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
|
||||||
$STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;"
|
$STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;"
|
||||||
cat <<EOF >~/mattermost.creds
|
{
|
||||||
Mattermost Credentials
|
echo "Mattermost Credentials"
|
||||||
Database User: $DB_USER
|
echo "Database User: $DB_USER"
|
||||||
Database Password: $DB_PASS
|
echo "Database Password: $DB_PASS"
|
||||||
Database Name: $DB_NAME
|
echo "Database Name: $DB_NAME"
|
||||||
EOF
|
} >>~/mattermost.creds
|
||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Installing Mattermost"
|
msg_info "Installing Mattermost"
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
|
|||||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
cat <<EOF >~/mediamanager.creds
|
{
|
||||||
MediaManager Credentials
|
echo "MediaManager Credentials"
|
||||||
MediaManager Database User: $DB_USER
|
echo "MediaManager Database User: $DB_USER"
|
||||||
MediaManager Database Password: $DB_PASS
|
echo "MediaManager Database Password: $DB_PASS"
|
||||||
MediaManager Database Name: $DB_NAME
|
echo "MediaManager Database Name: $DB_NAME"
|
||||||
EOF
|
} >>~/mediamanager.creds
|
||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager"
|
fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager"
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ ADMIN_USERNAME=$ADMIN_NAME
|
|||||||
ADMIN_PASSWORD=$ADMIN_PASS
|
ADMIN_PASSWORD=$ADMIN_PASS
|
||||||
LISTEN_ADDR=0.0.0.0:8080
|
LISTEN_ADDR=0.0.0.0:8080
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >~/miniflux.creds
|
{
|
||||||
ADMIN_USERNAME: $ADMIN_NAME
|
echo "ADMIN_USERNAME: $ADMIN_NAME"
|
||||||
ADMIN_PASSWORD: $ADMIN_PASS
|
echo "ADMIN_PASSWORD: $ADMIN_PASS"
|
||||||
EOF
|
} >>~/miniflux.creds
|
||||||
$STD miniflux -migrate -config-file /etc/miniflux.conf
|
$STD miniflux -migrate -config-file /etc/miniflux.conf
|
||||||
systemctl enable -q --now miniflux
|
systemctl enable -q --now miniflux
|
||||||
msg_ok "Configured Miniflux"
|
msg_ok "Configured Miniflux"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ msg_ok "Installed Dependencies"
|
|||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
msg_info "Installing n8n (Patience)"
|
msg_info "Installing n8n (Patience)"
|
||||||
$STD npm install -g n8n@2.27.5
|
$STD npm install -g n8n
|
||||||
msg_ok "Installed n8n"
|
msg_ok "Installed n8n"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -85,12 +85,12 @@ user.is_superuser = True
|
|||||||
user.is_staff = True
|
user.is_staff = True
|
||||||
user.save()
|
user.save()
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >~/netbox.creds
|
{
|
||||||
|
echo ""
|
||||||
Netbox-Django-Credentials
|
echo "Netbox-Django-Credentials"
|
||||||
Django User: $DJANGO_USER
|
echo -e "Django User: \e[32m$DJANGO_USER\e[0m"
|
||||||
Django Password: $DJANGO_PASS
|
echo -e "Django Password: \e[32m$DJANGO_PASS\e[0m"
|
||||||
EOF
|
} >>~/netbox.creds
|
||||||
msg_ok "Setup Django Admin"
|
msg_ok "Setup Django Admin"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user