mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-01 19:52:13 +02:00
Compare commits
75 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6a662a7c6e | |||
| b6eccc4468 | |||
| a1fa80cec3 | |||
| cd8a07a170 | |||
| 2dff51e198 | |||
| 7450c1ef03 | |||
| dbad31ba08 | |||
| 8fba38a423 | |||
| 5d25171d8d | |||
| fde188a6ff | |||
| 4d56173394 | |||
| 02bbb774c9 | |||
| 7c8bbed4fa | |||
| 71761ce5a9 | |||
| 069c8f578f | |||
| da24518021 | |||
| 5703462a0d | |||
| 89998b4fa0 | |||
| 7140f1dd00 | |||
| e9bc9df3a9 | |||
| b85df60ddf | |||
| b1523bc2e2 | |||
| 33642ab1c5 | |||
| 1aef5d655c | |||
| a84e13b504 | |||
| 3141dfbfb7 | |||
| 084fe40484 | |||
| 905c3fa411 | |||
| fd2ec706f3 | |||
| 68b76e7b0b | |||
| 03963b5193 | |||
| d756c83b62 | |||
| e36e0bbe3f | |||
| de0408e12f | |||
| b5361e5278 | |||
| 4f9f556a93 | |||
| 4b23f2c72c | |||
| 2ded16ed4b | |||
| e1f61aeeb9 | |||
| fb9f5a0047 | |||
| 17b5f8c10c | |||
| 8b99d3b1cc | |||
| 039470965b | |||
| 8e4a9829cf | |||
| f1eee5f5ed | |||
| fb14e6ae8b | |||
| 4142c5c2d3 | |||
| d85914530f | |||
| 3d9e67292b | |||
| ae60dc138b | |||
| 14a85a8591 | |||
| 1be64c1994 | |||
| 340695b9bd | |||
| ba31c925e3 | |||
| 868b405082 | |||
| 60266b9c17 | |||
| ea8b87fd7f | |||
| 58145d5bd3 | |||
| 9fbe2de1cb | |||
| c918dee5fe | |||
| 0774772b87 | |||
| dc26b8358e | |||
| 01a6c1ddec | |||
| 3e544b750d | |||
| 681924cb1a | |||
| 6ea04b7602 | |||
| b2d20799d8 | |||
| 324fa33d8c | |||
| 5aed3bdde5 | |||
| b3cef14a35 | |||
| 10c8ad6f28 | |||
| 37bcddd847 | |||
| 075a691198 | |||
| fbd083c9ae | |||
| edf167025f |
Generated
+1
@@ -1,2 +1,3 @@
|
||||
ko_fi: community_scripts
|
||||
github: community_scripts
|
||||
buy_me_a_coffee: communityscripts
|
||||
|
||||
Generated
+204
@@ -1,3 +1,207 @@
|
||||
## 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
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
+124
-161
@@ -68,6 +68,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -81,7 +84,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>June (20 entries)</h4></summary>
|
||||
<summary><h4>June (27 entries)</h4></summary>
|
||||
|
||||
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
||||
|
||||
@@ -486,6 +489,125 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-07-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
||||
|
||||
## 2026-06-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
||||
|
||||
## 2026-06-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
||||
|
||||
## 2026-06-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
||||
|
||||
## 2026-06-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- tool: add disk-health tool (SMART + NVMe) [@MickLesk](https://github.com/MickLesk) ([#15417](https://github.com/community-scripts/ProxmoxVE/pull/15417))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Deluge openssl fix [@asylumexp](https://github.com/asylumexp) ([#15435](https://github.com/community-scripts/ProxmoxVE/pull/15435))
|
||||
- fix command syntax in tunarr.sh [@asylumexp](https://github.com/asylumexp) ([#15434](https://github.com/community-scripts/ProxmoxVE/pull/15434))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Storyteller: bump Node.js version to Node 24 [@thinusn](https://github.com/thinusn) ([#15439](https://github.com/community-scripts/ProxmoxVE/pull/15439))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- fix(endurain): replace Poetry/uv-pip backend setup with uv sync --frozen --no-dev [@Copilot](https://github.com/Copilot) ([#15429](https://github.com/community-scripts/ProxmoxVE/pull/15429))
|
||||
|
||||
## 2026-06-26
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Termix: Update Nginx configuration file paths [@xyzulu](https://github.com/xyzulu) ([#15397](https://github.com/community-scripts/ProxmoxVE/pull/15397))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Docuseal: use real SECRET_KEY_BASE for db:migrate on update [@MickLesk](https://github.com/MickLesk) ([#15411](https://github.com/community-scripts/ProxmoxVE/pull/15411))
|
||||
- bun: correct install for degoog [@MickLesk](https://github.com/MickLesk) ([#15412](https://github.com/community-scripts/ProxmoxVE/pull/15412))
|
||||
- fix databasus update/install errors [@asylumexp](https://github.com/asylumexp) ([#15403](https://github.com/community-scripts/ProxmoxVE/pull/15403))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: fix setup_docker - don't abort update on docker pull failure [@MickLesk](https://github.com/MickLesk) ([#15410](https://github.com/community-scripts/ProxmoxVE/pull/15410))
|
||||
- fix(build.func): set /dev/kfd GID in fix_gpu_gids for AMD ROCm [@jamiej](https://github.com/jamiej) ([#15401](https://github.com/community-scripts/ProxmoxVE/pull/15401))
|
||||
- fix alpine mktmp error [@asylumexp](https://github.com/asylumexp) ([#15398](https://github.com/community-scripts/ProxmoxVE/pull/15398))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: reduce IP-Tag resource usage and clean up ShellCheck findings [@MickLesk](https://github.com/MickLesk) ([#15418](https://github.com/community-scripts/ProxmoxVE/pull/15418))
|
||||
- QoL: kernel-clean: Validate kernel selection input [@MickLesk](https://github.com/MickLesk) ([#15414](https://github.com/community-scripts/ProxmoxVE/pull/15414))
|
||||
- QoL: clean-lxcs exclude matching and set -e cancel handling [@MickLesk](https://github.com/MickLesk) ([#15413](https://github.com/community-scripts/ProxmoxVE/pull/15413))
|
||||
- QoL: Harden microcode download/install in microcode and pbs-microcode [@MickLesk](https://github.com/MickLesk) ([#15415](https://github.com/community-scripts/ProxmoxVE/pull/15415))
|
||||
- QoL: scaling-governor extend selection and guard missing cpufreq [@MickLesk](https://github.com/MickLesk) ([#15416](https://github.com/community-scripts/ProxmoxVE/pull/15416))
|
||||
|
||||
## 2026-06-25
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Pinchflat ([#15367](https://github.com/community-scripts/ProxmoxVE/pull/15367))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- persist gramps-web configuration file after update [@operfesium](https://github.com/operfesium) ([#15394](https://github.com/community-scripts/ProxmoxVE/pull/15394))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- VM-Core: Update some Functions [@MickLesk](https://github.com/MickLesk) ([#15113](https://github.com/community-scripts/ProxmoxVE/pull/15113))
|
||||
|
||||
## 2026-06-24
|
||||
|
||||
### 🆕 New Scripts
|
||||
@@ -1059,163 +1181,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Sure: Remove `$STD` for `systemctl enable -q` [@tremor021](https://github.com/tremor021) ([#14801](https://github.com/community-scripts/ProxmoxVE/pull/14801))
|
||||
|
||||
## 2026-05-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- RomM: remove nginx default.conf during installation [@MickLesk](https://github.com/MickLesk) ([#14766](https://github.com/community-scripts/ProxmoxVE/pull/14766))
|
||||
- Open-Archiver: replace pnpm approve-builds --yes with --all [@MickLesk](https://github.com/MickLesk) ([#14765](https://github.com/community-scripts/ProxmoxVE/pull/14765))
|
||||
- fix(hermesagent): set npm_config_yes=true to suppress interactive pro… [@steveonjava](https://github.com/steveonjava) ([#14763](https://github.com/community-scripts/ProxmoxVE/pull/14763))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Yamtrack: migrate to uv [@MickLesk](https://github.com/MickLesk) ([#14767](https://github.com/community-scripts/ProxmoxVE/pull/14767))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- chore(ct): sync adventurelog defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#14772](https://github.com/community-scripts/ProxmoxVE/pull/14772))
|
||||
|
||||
## 2026-05-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- MusicSeerr ([#14746](https://github.com/community-scripts/ProxmoxVE/pull/14746))
|
||||
- Hermes Agent ([#14751](https://github.com/community-scripts/ProxmoxVE/pull/14751))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- grist: restore install:ee step [@paulfitz](https://github.com/paulfitz) ([#14759](https://github.com/community-scripts/ProxmoxVE/pull/14759))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools.func]: `setup_gs()` fix getting dotted release format [@tremor021](https://github.com/tremor021) ([#14745](https://github.com/community-scripts/ProxmoxVE/pull/14745))
|
||||
|
||||
## 2026-05-26
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Add directory creation to Profilarr update script [@ryansully](https://github.com/ryansully) ([#14740](https://github.com/community-scripts/ProxmoxVE/pull/14740))
|
||||
- profilarr: Fix ARCH assignment in profilarr.sh to support Profilarr build usage [@mpeleshenko](https://github.com/mpeleshenko) ([#14709](https://github.com/community-scripts/ProxmoxVE/pull/14709))
|
||||
- Jackett: Remove quotes in Service File [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14729](https://github.com/community-scripts/ProxmoxVE/pull/14729))
|
||||
- Open-archiver: approve pnpm build scripts and run build:oss without subshell [@MickLesk](https://github.com/MickLesk) ([#14711](https://github.com/community-scripts/ProxmoxVE/pull/14711))
|
||||
- Docuseal: read Ruby version from Gemfile, upgrade on update if needed [@MickLesk](https://github.com/MickLesk) ([#14715](https://github.com/community-scripts/ProxmoxVE/pull/14715))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Birdnet-GO: install libonnxruntime.so from release tarball [@MickLesk](https://github.com/MickLesk) ([#14716](https://github.com/community-scripts/ProxmoxVE/pull/14716))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: better error diagnostics, consistent OS detection, setup function ordering [@MickLesk](https://github.com/MickLesk) ([#14692](https://github.com/community-scripts/ProxmoxVE/pull/14692))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- IPTag-Tool: use qm set for VM tags to handle snapshot sections crrectly [@MickLesk](https://github.com/MickLesk) ([#14713](https://github.com/community-scripts/ProxmoxVE/pull/14713))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Netdata: extend PVE version support to 9.x [@MickLesk](https://github.com/MickLesk) ([#14714](https://github.com/community-scripts/ProxmoxVE/pull/14714))
|
||||
|
||||
## 2026-05-25
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- karakeep: fix: pip config [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14703](https://github.com/community-scripts/ProxmoxVE/pull/14703))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: replace raw GitHub API curl calls with get_latest_github_release [@MickLesk](https://github.com/MickLesk) ([#14690](https://github.com/community-scripts/ProxmoxVE/pull/14690))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Kernel-Clean: detect meta-packages and fix silent removal failures [@MickLesk](https://github.com/MickLesk) ([#14674](https://github.com/community-scripts/ProxmoxVE/pull/14674))
|
||||
|
||||
## 2026-05-24
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- RomM: add installation steps for Nginx mod_zip module [@MickLesk](https://github.com/MickLesk) ([#14678](https://github.com/community-scripts/ProxmoxVE/pull/14678))
|
||||
- ISponsorblockTV: detect CPU capabilities to select compatible binary [@MickLesk](https://github.com/MickLesk) ([#14677](https://github.com/community-scripts/ProxmoxVE/pull/14677))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: MQTT [@tremor021](https://github.com/tremor021) ([#14673](https://github.com/community-scripts/ProxmoxVE/pull/14673))
|
||||
|
||||
## 2026-05-23
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- IronClaw: Extra configuration during install to ensure Web Gateway can run [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14635](https://github.com/community-scripts/ProxmoxVE/pull/14635))
|
||||
- Tunarr: fix path to backup during update [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14655](https://github.com/community-scripts/ProxmoxVE/pull/14655))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- wealthfolio: add: prebuild [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14658](https://github.com/community-scripts/ProxmoxVE/pull/14658))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- kernel-clean: support range syntax in selection prompt [@djhojd](https://github.com/djhojd) ([#14656](https://github.com/community-scripts/ProxmoxVE/pull/14656))
|
||||
|
||||
## 2026-05-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- bitfocus-companion ([#14603](https://github.com/community-scripts/ProxmoxVE/pull/14603))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(the-lounge): install Node.js 22 before deb package [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14648](https://github.com/community-scripts/ProxmoxVE/pull/14648))
|
||||
- Docmost: Fix duplicate STORAGE_DRIVER [@MickLesk](https://github.com/MickLesk) ([#14645](https://github.com/community-scripts/ProxmoxVE/pull/14645))
|
||||
- Profilarr: pin Deno version to v2.7.5 [@MickLesk](https://github.com/MickLesk) ([#14632](https://github.com/community-scripts/ProxmoxVE/pull/14632))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- add: karakeep cli wrapper [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14618](https://github.com/community-scripts/ProxmoxVE/pull/14618))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- OpenCloud: v7.0.0 changes [@vhsdream](https://github.com/vhsdream) ([#14650](https://github.com/community-scripts/ProxmoxVE/pull/14650))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- workflows: update workflows, templates to support arm64. [@asylumexp](https://github.com/asylumexp) ([#14653](https://github.com/community-scripts/ProxmoxVE/pull/14653))
|
||||
- SoulSync: setup Node v22 and build WebUI [@MickLesk](https://github.com/MickLesk) ([#14639](https://github.com/community-scripts/ProxmoxVE/pull/14639))
|
||||
- Refactor: Dispatcharr [@MickLesk](https://github.com/MickLesk) ([#14313](https://github.com/community-scripts/ProxmoxVE/pull/14313))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: make LXC banner OS detection dynamic via /etc/os-release [@atahan99](https://github.com/atahan99) ([#14269](https://github.com/community-scripts/ProxmoxVE/pull/14269))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: suppress MOTD for non-interactive shells [@MickLesk](https://github.com/MickLesk) ([#14638](https://github.com/community-scripts/ProxmoxVE/pull/14638))
|
||||
- Sure: Remove `$STD` for `systemctl enable -q` [@tremor021](https://github.com/tremor021) ([#14801](https://github.com/community-scripts/ProxmoxVE/pull/14801))
|
||||
@@ -58,5 +58,3 @@ 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}: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"
|
||||
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-${MONGO_ARCH}-100.16.1.deb"
|
||||
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/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
||||
# 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
|
||||
ln -sf /usr/bin/mariadb-dump "$dir/mariadb-dump"
|
||||
ln -sf /usr/bin/mariadb "$dir/mariadb"
|
||||
@@ -79,7 +79,7 @@ function update_script() {
|
||||
cd /opt/databasus/backend
|
||||
$STD go mod download
|
||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd
|
||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||
mkdir -p /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 \
|
||||
/opt/degoog/data
|
||||
|
||||
if ! command -v bun >/dev/null 2>&1; then
|
||||
if [[ ! -x /root/.bun/bin/bun ]]; then
|
||||
msg_info "Installing Bun"
|
||||
export BUN_INSTALL="/root/.bun"
|
||||
curl -fsSL https://bun.sh/install | $STD bash
|
||||
@@ -52,7 +52,7 @@ function update_script() {
|
||||
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 "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz"
|
||||
fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ 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_arm64="${var_arm64:-no}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -31,7 +31,7 @@ function update_script() {
|
||||
msg_info "Updating Deluge"
|
||||
ensure_dependencies python3-setuptools
|
||||
$STD apt update
|
||||
$STD pip3 install deluge[all] --upgrade
|
||||
$STD pip3 install deluge[all] "pyopenssl<25" --upgrade
|
||||
msg_ok "Updated Deluge"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ function update_script() {
|
||||
eval "$(rbenv init - bash)" 2>/dev/null || true
|
||||
export RAILS_ENV=production
|
||||
export NODE_ENV=production
|
||||
export SECRET_KEY_BASE_DUMMY=1
|
||||
mkdir -p /opt/docuseal/tmp
|
||||
set -a
|
||||
source /opt/docuseal/.env
|
||||
set +a
|
||||
|
||||
+1
-4
@@ -63,10 +63,7 @@ function update_script() {
|
||||
cd /opt/endurain/backend
|
||||
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
|
||||
UV_VERSION="$UV_VERSION" setup_uv
|
||||
$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
|
||||
$STD uv sync --frozen --no-dev
|
||||
msg_ok "Backend Updated"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+57
-3
@@ -29,9 +29,63 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
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"
|
||||
|
||||
FRAPPE_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||
SITE="$(ls /opt/frappe-bench/sites/*/site_config.json 2>/dev/null | head -1 | cut -d/ -f5)"
|
||||
[[ -z "$SITE" ]] && SITE="site1.local"
|
||||
|
||||
msg_info "Stopping ERPNext service"
|
||||
$STD supervisorctl stop all
|
||||
msg_ok "Stopped ERPNext service"
|
||||
|
||||
if [[ "${FRAPPE_MAJOR:-0}" -lt 16 ]] && { [[ "${PHS_SILENT:-0}" == "1" ]] || whiptail --backtitle "Proxmox VE Helper Scripts" --title "ERPNext v16 Major Upgrade" \
|
||||
--yesno "A major upgrade from Frappe/ERPNext v15 to v16 is available.\n\nUpgrade to v16 now?" 16 78; }; then
|
||||
|
||||
msg_info "Backing up site ${SITE}"
|
||||
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} backup"
|
||||
msg_ok "Backup created"
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y pkg-config
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && uv python install 3.14'
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Migrating bench environment"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench migrate-env "$(uv python find 3.14)"'
|
||||
msg_ok "Migrated environment"
|
||||
|
||||
msg_info "Switching Frappe and ERPNext to v16 (Patience)"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench switch-to-branch version-16 frappe erpnext --upgrade' || true
|
||||
NEW_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||
if [[ "${NEW_MAJOR:-0}" -lt 16 ]]; then
|
||||
msg_error "Failed to switch Frappe/ERPNext to v16"
|
||||
exit 250
|
||||
fi
|
||||
msg_ok "Switched to v16"
|
||||
|
||||
msg_info "Running database migration (Patience)"
|
||||
for i in 1 2 3; do
|
||||
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} migrate" && break
|
||||
[[ "$i" -eq 3 ]] && {
|
||||
msg_error "Database migration failed after 3 attempts"
|
||||
exit 253
|
||||
}
|
||||
done
|
||||
msg_ok "Database migrated"
|
||||
|
||||
msg_info "Building assets"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench build --production'
|
||||
msg_ok "Assets built"
|
||||
|
||||
msg_info "Restarting ERPNext"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench restart'
|
||||
msg_ok "Upgraded ERPNext to v16"
|
||||
else
|
||||
msg_info "Updating ERPNext"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
||||
msg_ok "Updated ERPNext"
|
||||
fi
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John McLear (JohnMcLear)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://etherpad.org
|
||||
|
||||
APP="Etherpad"
|
||||
var_tags="${var_tags:-docs;collaboration;editor}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/etherpad-lite ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "etherpad-lite" "ether/etherpad"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop etherpad
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/etherpad-lite/.env /opt/etherpad-lite/APIKEY.txt /opt/etherpad-lite/settings.json
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "etherpad-lite" "ether/etherpad" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Etherpad"
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD corepack enable
|
||||
cd /opt/etherpad-lite
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build:etherpad
|
||||
msg_ok "Rebuilt Etherpad"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start etherpad
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9001${CL}"
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/pawelmalak/flame
|
||||
|
||||
APP="Flame"
|
||||
var_tags="${var_tags:-dashboard;startpage}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/flame ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "flame" "pawelmalak/flame"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop flame
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/flame/.env \
|
||||
/opt/flame/data
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
cd /opt/flame
|
||||
mkdir -p data public
|
||||
$STD npm install --production
|
||||
cd /opt/flame/client
|
||||
$STD npm install --production
|
||||
$STD npm run build
|
||||
cd /opt/flame
|
||||
cp -r client/build/. public/
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start flame
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5005${CL}"
|
||||
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://gitlab.com/fmd-foss/fmd-server
|
||||
|
||||
APP="FMD-Server"
|
||||
var_tags="${var_tags:-FMD}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/fmd-server ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gl_release "fmd-server" "fmd-foss/fmd-server"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop fmd-server
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/fmd-server/config.yml /opt/fmd-server/db
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "fmd-server" "fmd-foss/fmd-server" "prebuild" "latest" "/opt/fmd-server" "fmd-server-*.zip"
|
||||
|
||||
msg_info "Configuring FMD-Server"
|
||||
cd /opt/fmd-server
|
||||
chmod +x fmd-server-*
|
||||
msg_ok "Configured FMD-Server"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start fmd-server
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
||||
@@ -85,8 +85,13 @@ function update_script() {
|
||||
cd /opt/gramps-web/frontend
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
|
||||
create_backup /opt/gramps-web/frontend/dist/config.js
|
||||
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_ok "Updated Gramps Web Frontend"
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
________ __ __
|
||||
/ ____/ /_/ /_ ___ _________ ____ _____/ /
|
||||
/ __/ / __/ __ \/ _ \/ ___/ __ \/ __ `/ __ /
|
||||
/ /___/ /_/ / / / __/ / / /_/ / /_/ / /_/ /
|
||||
/_____/\__/_/ /_/\___/_/ / .___/\__,_/\__,_/
|
||||
/_/
|
||||
@@ -0,0 +1,6 @@
|
||||
________
|
||||
/ ____/ /___ _____ ___ ___
|
||||
/ /_ / / __ `/ __ `__ \/ _ \
|
||||
/ __/ / / /_/ / / / / / / __/
|
||||
/_/ /_/\__,_/_/ /_/ /_/\___/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
________ _______ _____
|
||||
/ ____/ |/ / __ \ / ___/___ ______ _____ _____
|
||||
/ /_ / /|_/ / / / /_____\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||
/ __/ / / / / /_/ /_____/__/ / __/ / | |/ / __/ /
|
||||
/_/ /_/ /_/_____/ /____/\___/_/ |___/\___/_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
_ _ __ __
|
||||
(_) | / /__ ____ / /_____ __ __
|
||||
/ /| | / / _ \/ __ \/ __/ __ \/ / / /
|
||||
/ / | |/ / __/ / / / /_/ /_/ / /_/ /
|
||||
/_/ |___/\___/_/ /_/\__/\____/\__, /
|
||||
/____/
|
||||
@@ -0,0 +1,6 @@
|
||||
__ __ ________
|
||||
/ //_/___ / __/ __/___ _____
|
||||
/ ,< / __ \/ /_/ /_/ __ `/ __ \
|
||||
/ /| / /_/ / __/ __/ /_/ / / / /
|
||||
/_/ |_\____/_/ /_/ \__,_/_/ /_/
|
||||
|
||||
@@ -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
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
rm /opt/run_homarr.sh
|
||||
rm -f /opt/run_homarr.sh
|
||||
msg_ok "Fixed old structure"
|
||||
fi
|
||||
|
||||
@@ -68,7 +68,7 @@ EOF
|
||||
cp /opt/homarr/redis.conf /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
|
||||
rm /etc/nginx/nginx.conf
|
||||
rm -f /etc/nginx/nginx.conf
|
||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
||||
msg_ok "Updated Homarr"
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tteck (tteckster) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.iventoy.com/en/index.html
|
||||
|
||||
APP="iVentoy"
|
||||
var_tags="${var_tags:-pxe-tool}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-no}"
|
||||
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-x86_64-free.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}"
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: (AminGholizad)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/PanSalut/Koffan
|
||||
|
||||
APP="Koffan"
|
||||
var_tags="${var_tags:-productivity}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_arm64="${var_arm64:-no}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/koffan/koffan ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "koffan" "PanSalut/Koffan"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop koffan
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/koffan/data
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Koffan"
|
||||
cd /opt/koffan
|
||||
$STD go build -o koffan main.go
|
||||
msg_ok "Rebuild Koffan"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start koffan
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
+1
-14
@@ -31,7 +31,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
CHOICE=$(msg_menu "Loki Update Options" \
|
||||
"1" "Update Loki & Promtail" \
|
||||
"1" "Update Loki" \
|
||||
"2" "Allow 0.0.0.0 for listening" \
|
||||
"3" "Allow only ${LOCAL_IP} for listening")
|
||||
|
||||
@@ -39,24 +39,15 @@ function update_script() {
|
||||
1)
|
||||
msg_info "Stopping 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_info "Updating Loki"
|
||||
$STD apt update
|
||||
$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_info "Starting Loki"
|
||||
systemctl start loki
|
||||
if dpkg -s promtail >/dev/null 2>&1; then
|
||||
systemctl start promtail
|
||||
fi
|
||||
msg_ok "Started Loki"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
@@ -89,7 +80,3 @@ msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access loki using the following URL:${CL}"
|
||||
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
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
@@ -60,8 +60,9 @@ function update_script() {
|
||||
fi
|
||||
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
||||
|
||||
if check_for_gh_release "openresty" "openresty/openresty"; then
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/openresty" "openresty-*.tar.gz"
|
||||
OPENRESTY_VERSION="1.29.2.5"
|
||||
if [[ "$(cat ~/.openresty 2>/dev/null)" != "$OPENRESTY_VERSION" ]]; then
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_from_url "https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz" "/opt/openresty"
|
||||
|
||||
msg_info "Building OpenResty"
|
||||
cd /opt/openresty
|
||||
@@ -77,6 +78,7 @@ function update_script() {
|
||||
--with-stream_ssl_module
|
||||
$STD make -j"$(nproc)"
|
||||
$STD make install
|
||||
echo "${OPENRESTY_VERSION}" >~/.openresty
|
||||
rm -rf /opt/openresty
|
||||
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||
[Unit]
|
||||
@@ -235,6 +237,9 @@ EOF
|
||||
fi
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||
if [ -n "$(command -v node)" ]; then
|
||||
sed -i -E "s|^ExecStart=.*/node index\.js|ExecStart=$(command -v node) index.js|" /lib/systemd/system/npm.service
|
||||
fi
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now openresty
|
||||
systemctl enable -q --now npm
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ function update_script() {
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
head -n1)
|
||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
|
||||
+5
-6
@@ -58,12 +58,11 @@ function update_script() {
|
||||
-e 's/^NODE_/APP_/' \
|
||||
-e '/^SERVER_*/d' \
|
||||
-e '/^# API*/,+2d' /opt/patchmon/.env
|
||||
{
|
||||
echo ""
|
||||
echo "SESSION_SECRET=$(openssl rand -hex 64)"
|
||||
echo "AI_ENCRYPTION_KEY=$(openssl rand -hex 64)"
|
||||
echo "AGENT_BINARIES_DIR=/opt/patchmon/agents"
|
||||
} >>/opt/patchmon/.env
|
||||
cat <<EOF >/opt/patchmon/.env
|
||||
SESSION_SECRET=$(openssl rand -hex 64)
|
||||
AI_ENCRYPTION_KEY=$(openssl rand -hex 64)
|
||||
AGENT_BINARIES_DIR=/opt/patchmon/agents
|
||||
EOF
|
||||
sed -i -e '\|Directory|s|/backend||' \
|
||||
-e 's|^ExecStart=.*|ExecStart=/opt/patchmon/patchmon-server|' \
|
||||
-e 's|^Environment=NODE_.*|EnvironmentFile=/opt/patchmon/.env|' \
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: nnsense
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/kieraneglin/pinchflat
|
||||
|
||||
APP="Pinchflat"
|
||||
var_tags="${var_tags:-media;youtube;downloader}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
var_gpu="${var_gpu:-yes}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/pinchflat/app ]]; then
|
||||
msg_error "No ${APP} installation found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if check_for_gh_release "pinchflat" "kieraneglin/pinchflat"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop pinchflat
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pinchflat" "kieraneglin/pinchflat" "tarball" "latest" "/opt/pinchflat-src"
|
||||
|
||||
msg_info "Building Pinchflat"
|
||||
cd /opt/pinchflat-src
|
||||
export MIX_ENV=prod
|
||||
export ERL_FLAGS="+JPperf true"
|
||||
$STD mix deps.get --only prod
|
||||
$STD mix deps.compile
|
||||
$STD yarn --cwd assets install
|
||||
$STD mix assets.deploy
|
||||
$STD mix compile
|
||||
$STD mix release --overwrite
|
||||
rm -rf /opt/pinchflat/app
|
||||
cp -r _build/prod/rel/pinchflat /opt/pinchflat/app
|
||||
msg_ok "Built Pinchflat"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start pinchflat
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8945${CL}"
|
||||
+1
-1
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="SnapOtter"
|
||||
var_tags="${var_tags:-media;image}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
|
||||
@@ -30,6 +30,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
|
||||
|
||||
if check_for_gl_release "storyteller" "storyteller-platform/storyteller"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop storyteller
|
||||
|
||||
+1
-1
@@ -200,7 +200,7 @@ EOF
|
||||
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
|
||||
sed -i '/^master_process/d' /etc/nginx/nginx.conf
|
||||
sed -i 's|pid /tmp/nginx/nginx.pid;|pid /run/nginx.pid;|' /etc/nginx/nginx.conf
|
||||
sed -i '/^pid \/app\/nginx/d' /etc/nginx/nginx.conf
|
||||
sed -i 's|error_log /tmp/nginx/error.log|error_log /var/log/nginx/error.log|' /etc/nginx/nginx.conf
|
||||
sed -i 's|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
|
||||
|
||||
+2
-7
@@ -33,17 +33,12 @@ function update_script() {
|
||||
systemctl stop tunarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
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
|
||||
create_backup /root/.local/share/tunarr
|
||||
|
||||
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
|
||||
mv tunarr* tunarr
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tunarr
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "wishlist" "cmintey/wishlist"; then
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@11" setup_nodejs
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop wishlist
|
||||
|
||||
+5
-5
@@ -57,11 +57,11 @@ function update_script() {
|
||||
sed -i 's/--workers 4//' /opt/wizarr/start.sh
|
||||
fi
|
||||
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
|
||||
{
|
||||
echo "FLASK_ENV=production"
|
||||
echo "GUNICORN_WORKERS=4"
|
||||
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
|
||||
} >>/opt/wizarr/.env
|
||||
cat <<EOF >/opt/wizarr/.env
|
||||
FLASK_ENV=production
|
||||
GUNICORN_WORKERS=4
|
||||
APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)
|
||||
EOF
|
||||
else
|
||||
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
|
||||
fi
|
||||
|
||||
@@ -86,12 +86,11 @@ user.is_superuser = True
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
EOF
|
||||
{
|
||||
echo ""
|
||||
echo "Django-Credentials"
|
||||
echo "Django Admin User: $DJANGO_ADMIN_USER"
|
||||
echo "Django Admin Password: $DJANGO_ADMIN_PASS"
|
||||
} >>~/adventurelog.creds
|
||||
cat <<EOF >~/adventurelog.creds
|
||||
Django-Credentials
|
||||
Django Admin User: $DJANGO_ADMIN_USER
|
||||
Django Admin Password: $DJANGO_ADMIN_PASS
|
||||
EOF
|
||||
msg_ok "Setup Django Admin"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -25,12 +25,12 @@ mkdir -p /etc/garage
|
||||
RPC_SECRET=$(openssl rand -hex 64 | cut -c1-64)
|
||||
ADMIN_TOKEN=$(openssl rand -base64 32)
|
||||
METRICS_TOKEN=$(openssl rand -base64 32)
|
||||
{
|
||||
echo "Garage Tokens and Secrets"
|
||||
echo "RPC Secret: $RPC_SECRET"
|
||||
echo "Admin Token: $ADMIN_TOKEN"
|
||||
echo "Metrics Token: $METRICS_TOKEN"
|
||||
} >~/garage.creds
|
||||
cat <<EOF >~/garage.creds
|
||||
Garage Tokens and Secrets
|
||||
RPC Secret: $RPC_SECRET
|
||||
Admin Token: $ADMIN_TOKEN
|
||||
Metrics Token: $METRICS_TOKEN
|
||||
EOF
|
||||
echo $GITEA_RELEASE >>~/.garage
|
||||
cat <<EOF >/etc/garage.toml
|
||||
metadata_dir = "/var/lib/garage/meta"
|
||||
|
||||
@@ -38,10 +38,10 @@ chmod +x /usr/local/bin/ironclaw
|
||||
msg_info "Configuring Environment"
|
||||
GATEWAY_TOKEN=$(openssl rand -hex 32)
|
||||
mkdir -p /root/.ironclaw
|
||||
{
|
||||
echo "Gateway-Token"
|
||||
echo "Token: $GATEWAY_TOKEN"
|
||||
} >> /root/.ironclaw/gateway.creds
|
||||
cat <<EOF >/root/.ironclaw/gateway.creds
|
||||
Gateway-Token
|
||||
Token: $GATEWAY_TOKEN
|
||||
EOF
|
||||
|
||||
mkdir -p /root/.ironclaw
|
||||
cat <<EOF >/root/.ironclaw/.env
|
||||
|
||||
@@ -71,16 +71,6 @@ $STD rc-update add loki default
|
||||
$STD rc-service loki start
|
||||
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
|
||||
customize
|
||||
cleanup_lxc
|
||||
|
||||
@@ -27,11 +27,11 @@ $STD unzip -j "$temp_file" '*/**' -d /opt/rclone
|
||||
cd /opt/rclone
|
||||
RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
||||
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
|
||||
{
|
||||
echo "rclone-Credentials"
|
||||
echo "rclone User Name: admin"
|
||||
echo "rclone Password: $RCLONE_PASSWORD"
|
||||
} >>~/rclone.creds
|
||||
cat <<EOF >~/rclone.creds
|
||||
rclone-Credentials
|
||||
rclone User Name: admin
|
||||
rclone Password: $RCLONE_PASSWORD
|
||||
EOF
|
||||
echo "${RELEASE}" >/opt/rclone_version.txt
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Installed rclone"
|
||||
|
||||
@@ -40,12 +40,12 @@ mv release /opt/rustdesk-api
|
||||
cd /opt/rustdesk-api
|
||||
ADMINPASS=$(head -c 16 /dev/urandom | xxd -p -c 16)
|
||||
$STD ./apimain reset-admin-pwd "$ADMINPASS"
|
||||
{
|
||||
echo "RustDesk WebUI"
|
||||
echo ""
|
||||
echo "Username: admin"
|
||||
echo "Password: $ADMINPASS"
|
||||
} >>~/rustdesk.creds
|
||||
cat <<EOF >~/rustdesk.creds
|
||||
RustDesk WebUI
|
||||
|
||||
Username: admin
|
||||
Password: $ADMINPASS
|
||||
EOF
|
||||
echo "${APIRELEASE}" >~/.rustdesk-api
|
||||
msg_ok "Installed RustDesk API v${APIRELEASE}"
|
||||
|
||||
|
||||
@@ -25,13 +25,12 @@ chmod 600 ~/valkey.creds
|
||||
MEMTOTAL_MB=$(free -m | grep ^Mem: | awk '{print $2}')
|
||||
MAXMEMORY_MB=$((MEMTOTAL_MB * 75 / 100))
|
||||
|
||||
{
|
||||
echo ""
|
||||
echo "# Memory-optimized settings for small-scale deployments"
|
||||
echo "maxmemory ${MAXMEMORY_MB}mb"
|
||||
echo "maxmemory-policy allkeys-lru"
|
||||
echo "maxmemory-samples 10"
|
||||
} >>/etc/valkey/valkey.conf
|
||||
cat <<EOF >/etc/valkey/valkey.conf
|
||||
# Memory-optimized settings for small-scale deployments
|
||||
maxmemory ${MAXMEMORY_MB}mb
|
||||
maxmemory-policy allkeys-lru
|
||||
maxmemory-samples 10
|
||||
EOF
|
||||
msg_ok "Installed Valkey"
|
||||
|
||||
# Note: Alpine's valkey package is compiled without TLS support
|
||||
|
||||
@@ -16,7 +16,7 @@ update_os
|
||||
setup_mongodb
|
||||
|
||||
msg_info "Configuring MongoDB Replica Set"
|
||||
cat <<EOF >>/etc/mongod.conf
|
||||
cat <<EOF >/etc/mongod.conf
|
||||
|
||||
replication:
|
||||
replSetName: "rs0"
|
||||
|
||||
@@ -28,11 +28,11 @@ setup_deb822_repo \
|
||||
"$(get_os_info codename)" \
|
||||
"main"
|
||||
$STD apt install -y couchdb
|
||||
{
|
||||
echo "CouchDB Credentials"
|
||||
echo "CouchDB Erlang Cookie: $ERLANG_COOKIE"
|
||||
echo "CouchDB Admin Password: $ADMIN_PASS"
|
||||
} >>~/couchdb.creds
|
||||
cat <<EOF >~/couchdb.creds
|
||||
CouchDB Credentials
|
||||
CouchDB Erlang Cookie: $ERLANG_COOKIE
|
||||
CouchDB Admin Password: $ADMIN_PASS
|
||||
EOF
|
||||
msg_ok "Installed Apache CouchDB"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -79,13 +79,13 @@ msg_ok "Setup Apache Guacamole"
|
||||
msg_info "Importing Database Schema"
|
||||
cd ~/guacamole-auth-jdbc-"${GUAC_SERVER_VERSION}"/mysql/schema
|
||||
cat *.sql | mariadb -u root ${MARIADB_DB_NAME}
|
||||
{
|
||||
echo "mysql-hostname: 127.0.0.1"
|
||||
echo "mysql-port: 3306"
|
||||
echo "mysql-database: $MARIADB_DB_NAME"
|
||||
echo "mysql-username: $MARIADB_DB_USER"
|
||||
echo "mysql-password: $MARIADB_DB_PASS"
|
||||
} >>/etc/guacamole/guacamole.properties
|
||||
cat <<EOF >/etc/guacamole/guacamole.properties
|
||||
mysql-hostname: 127.0.0.1
|
||||
mysql-port: 3306
|
||||
mysql-database: $MARIADB_DB_NAME
|
||||
mysql-username: $MARIADB_DB_USER
|
||||
mysql-password: $MARIADB_DB_PASS
|
||||
EOF
|
||||
rm -rf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"{,.tar.gz}
|
||||
msg_ok "Imported Database Schema"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/us
|
||||
|
||||
msg_info "Configuring 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
|
||||
host = "0.0.0.0"
|
||||
port = 7474
|
||||
|
||||
@@ -51,7 +51,7 @@ mkdir -p /opt/bookorbit-data/covers /opt/bookorbit-data/book-bucket /opt/bookorb
|
||||
APP_VER=$(cat ~/.bookorbit)
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
SETUP_BOOTSTRAP_TOKEN=$(openssl rand -hex 16)
|
||||
cat <<EOF >>~/bookorbit.creds
|
||||
cat <<EOF >~/bookorbit.creds
|
||||
|
||||
Setup Token: ${SETUP_BOOTSTRAP_TOKEN}
|
||||
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"
|
||||
$STD omd start "$SITE_NAME"
|
||||
{
|
||||
echo "Application-Credentials"
|
||||
echo "Username: cmkadmin"
|
||||
echo "Password: $MKPASSWORD"
|
||||
echo "Site: $SITE_NAME"
|
||||
} >>~/checkmk.creds
|
||||
cat <<EOF >~/checkmk.creds
|
||||
Application-Credentials
|
||||
Username: cmkadmin
|
||||
Password: $MKPASSWORD
|
||||
Site: $SITE_NAME
|
||||
EOF
|
||||
msg_ok "Created Service"
|
||||
|
||||
cleanup_lxc
|
||||
|
||||
@@ -66,13 +66,13 @@ for i in $(seq 1 30); do
|
||||
sleep 2
|
||||
done
|
||||
if [[ -f "$CREDS_FILE" ]]; then
|
||||
{
|
||||
echo "Crafty-Controller-Credentials"
|
||||
echo "Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")"
|
||||
echo "Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")"
|
||||
} >>~/crafty-controller.creds
|
||||
cat <<EOF >~/crafty-controller.creds
|
||||
Crafty-Controller-Credentials
|
||||
Username: $(grep -oP '(?<="username": ")[^"]*' "$CREDS_FILE")
|
||||
Password: $(grep -oP '(?<="password": ")[^"]*' "$CREDS_FILE")
|
||||
EOF
|
||||
fi
|
||||
msg_ok "Service started"
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
cleanup_lxc
|
||||
|
||||
@@ -33,7 +33,7 @@ done
|
||||
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
|
||||
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
|
||||
# MongoDB only publishes arm64 builds for Ubuntu
|
||||
[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
||||
[[ "$(arch_resolve "x86_64" "arm64")" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
||||
MONGO_VERSION=$(get_latest_gh_tag "mongodb/mongo-tools" "100." || echo "100.16.1")
|
||||
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
|
||||
@@ -65,7 +65,7 @@ $STD go mod tidy
|
||||
$STD go mod download
|
||||
$STD go install github.com/swaggo/swag/cmd/swag@latest
|
||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go
|
||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd
|
||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||
mkdir -p /databasus-data/{pgdata,temp,backups,data,logs}
|
||||
mkdir -p /opt/databasus/ui/build
|
||||
|
||||
@@ -26,7 +26,7 @@ cat >~/.config/pip/pip.conf <<EOF
|
||||
[global]
|
||||
break-system-packages = true
|
||||
EOF
|
||||
$STD pip install deluge[all]
|
||||
$STD pip install deluge[all] "pyopenssl<25"
|
||||
msg_ok "Installed Deluge"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -24,10 +24,10 @@ setup_mariadb
|
||||
msg_info "Setting up Database"
|
||||
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;"
|
||||
{
|
||||
echo "Dolibarr DB Credentials"
|
||||
echo "MariaDB Root Password: $ROOT_PASS"
|
||||
} >>~/dolibarr.creds
|
||||
cat <<EOF >~/dolibarr.creds
|
||||
Dolibarr DB Credentials
|
||||
MariaDB Root Password: $ROOT_PASS
|
||||
EOF
|
||||
msg_ok "Set up database"
|
||||
|
||||
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
|
||||
|
||||
{
|
||||
echo "FTP-Credentials"
|
||||
echo "Username: ftpuser"
|
||||
echo "Password: $FTP_PASS"
|
||||
} >>~/ftp.creds
|
||||
cat <<EOF >~/ftp.creds
|
||||
FTP-Credentials
|
||||
Username: ftpuser
|
||||
Password: $FTP_PASS
|
||||
EOF
|
||||
|
||||
msg_ok "FTP server setup completed"
|
||||
|
||||
|
||||
@@ -25,10 +25,10 @@ fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest"
|
||||
msg_info "Configuring duplicati"
|
||||
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)
|
||||
{
|
||||
echo "Admin password = ${ADMINPASS}"
|
||||
echo "Database encryption key = ${DECRYPTKEY}"
|
||||
} >>~/duplicati.creds
|
||||
cat <<EOF >~/duplicati.creds
|
||||
Admin password = ${ADMINPASS}
|
||||
Database encryption key = ${DECRYPTKEY}
|
||||
EOF
|
||||
msg_ok "Configured duplicati"
|
||||
|
||||
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 "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
|
||||
experimental_features:
|
||||
@@ -63,11 +63,11 @@ rc_delayed_event_mgmt:
|
||||
EOF
|
||||
systemctl enable -q --now matrix-synapse
|
||||
$STD register_new_matrix_user -a --user admin --password "$ADMIN_PASS" --config /etc/matrix-synapse/homeserver.yaml
|
||||
{
|
||||
echo "Matrix-Credentials"
|
||||
echo "Admin username: admin"
|
||||
echo "Admin password: $ADMIN_PASS"
|
||||
} >>~/matrix.creds
|
||||
cat <<EOF >~/matrix.creds
|
||||
Matrix-Credentials
|
||||
Admin username: admin
|
||||
Admin password: $ADMIN_PASS
|
||||
EOF
|
||||
systemctl stop matrix-synapse
|
||||
sed -i '34d' /etc/matrix-synapse/homeserver.yaml
|
||||
systemctl start matrix-synapse
|
||||
|
||||
@@ -83,14 +83,7 @@ msg_info "Setting up 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="$UV_VERSION" setup_uv
|
||||
$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
|
||||
$STD uv sync --frozen --no-dev
|
||||
msg_ok "Setup Backend"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
+13
-11
@@ -31,11 +31,12 @@ $STD apt install -y \
|
||||
libjpeg-dev \
|
||||
libmariadb-dev \
|
||||
python3-pip \
|
||||
pkg-config \
|
||||
cron
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
UV_PYTHON="3.13" setup_uv
|
||||
UV_PYTHON="3.14" setup_uv
|
||||
setup_mariadb
|
||||
|
||||
msg_info "Configuring MariaDB for ERPNext"
|
||||
@@ -68,8 +69,9 @@ msg_info "Initializing Frappe Bench"
|
||||
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
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;"
|
||||
$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/frappe-bench && bench get-app erpnext --branch version-15'
|
||||
$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-16 --python "$(uv python find 3.14)" frappe-bench'
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench get-app erpnext --branch version-16'
|
||||
|
||||
msg_info "Starting Redis Services for Site Setup"
|
||||
$STD sudo -u frappe bash -c 'redis-server /opt/frappe-bench/config/redis_queue.conf --daemonize yes'
|
||||
@@ -86,14 +88,14 @@ ADMIN_PASSWORD=${ADMIN_PASS}
|
||||
DB_ROOT_PASSWORD=${DB_ROOT_PASS}
|
||||
SITE_NAME=site1.local
|
||||
EOF
|
||||
{
|
||||
echo "ERPNext Credentials"
|
||||
echo "=================="
|
||||
echo "Admin Username: Administrator"
|
||||
echo "Admin Password: ${ADMIN_PASS}"
|
||||
echo "DB Root Password: ${DB_ROOT_PASS}"
|
||||
echo "Site Name: site1.local"
|
||||
} >~/erpnext.creds
|
||||
cat <<EOF >~/erpnext.creds
|
||||
ERPNext Credentials
|
||||
==================
|
||||
Admin Username: Administrator
|
||||
Admin Password: ${ADMIN_PASS}
|
||||
DB Root Password: ${DB_ROOT_PASS}
|
||||
Site Name: site1.local
|
||||
EOF
|
||||
$STD systemctl enable --now redis-server
|
||||
msg_ok "Configured ERPNext"
|
||||
|
||||
|
||||
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John McLear (JohnMcLear)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://etherpad.org
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libsqlite3-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
fetch_and_deploy_gh_release "etherpad-lite" "ether/etherpad" "tarball"
|
||||
|
||||
msg_info "Building Etherpad"
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
cd /opt/etherpad-lite
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build:etherpad
|
||||
msg_ok "Built Etherpad"
|
||||
|
||||
msg_info "Configuring Etherpad"
|
||||
cp /opt/etherpad-lite/settings.json.template /opt/etherpad-lite/settings.json
|
||||
mkdir -p /var/lib/etherpad
|
||||
sed -i \
|
||||
-e 's#"ip": *"127.0.0.1"#"ip": "0.0.0.0"#' \
|
||||
-e 's#"dbType" *: *"dirty"#"dbType": "sqlite"#' \
|
||||
-e 's#"filename" *: *"var/dirty.db"#"filename": "/var/lib/etherpad/etherpad.db"#' \
|
||||
/opt/etherpad-lite/settings.json
|
||||
msg_ok "Configured Etherpad"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/etherpad.service
|
||||
[Unit]
|
||||
Description=Etherpad Collaborative Editor
|
||||
Documentation=https://etherpad.org/doc
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/etherpad-lite
|
||||
Environment=NODE_ENV=production
|
||||
Environment=COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
ExecStart=/usr/bin/pnpm run prod
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
LimitNOFILE=65536
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now etherpad
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -0,0 +1,62 @@
|
||||
#!/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
|
||||
@@ -0,0 +1,48 @@
|
||||
#!/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
|
||||
@@ -290,7 +290,7 @@ detect:
|
||||
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
|
||||
cat <<EOF >>/config/config.yml
|
||||
cat <<EOF >/config/config.yml
|
||||
ffmpeg:
|
||||
hwaccel_args: auto
|
||||
detectors:
|
||||
@@ -306,7 +306,7 @@ model:
|
||||
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
|
||||
EOF
|
||||
else
|
||||
cat <<EOF >>/config/config.yml
|
||||
cat <<EOF >/config/config.yml
|
||||
ffmpeg:
|
||||
hwaccel_args: auto
|
||||
model:
|
||||
|
||||
@@ -22,12 +22,12 @@ mkdir -p /etc/garage
|
||||
RPC_SECRET=$(openssl rand -hex 32)
|
||||
ADMIN_TOKEN=$(openssl rand -base64 32)
|
||||
METRICS_TOKEN=$(openssl rand -base64 32)
|
||||
{
|
||||
echo "Garage Tokens and Secrets"
|
||||
echo "RPC Secret: $RPC_SECRET"
|
||||
echo "Admin Token: $ADMIN_TOKEN"
|
||||
echo "Metrics Token: $METRICS_TOKEN"
|
||||
} >>~/garage.creds
|
||||
cat <<EOF >~/garage.creds
|
||||
Garage Tokens and Secrets
|
||||
RPC Secret: $RPC_SECRET
|
||||
Admin Token: $ADMIN_TOKEN
|
||||
Metrics Token: $METRICS_TOKEN
|
||||
EOF
|
||||
echo $GITEA_RELEASE >>~/.garage
|
||||
cat <<EOF >/etc/garage.toml
|
||||
metadata_dir = "/var/lib/garage/meta"
|
||||
|
||||
@@ -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)
|
||||
ACCESS_TOKEN_SALT=$(openssl rand -base64 32)
|
||||
JWT_SECRET_KEY=$(openssl rand -base64 32)
|
||||
{
|
||||
echo "Ghostfolio Credentials"
|
||||
echo "Redis Password: $REDIS_PASS"
|
||||
echo "Access Token Salt: $ACCESS_TOKEN_SALT"
|
||||
echo "JWT Secret Key: $JWT_SECRET_KEY"
|
||||
} >>~/ghostfolio.creds
|
||||
cat <<EOF >~/ghostfolio.creds
|
||||
Ghostfolio Credentials
|
||||
Redis Password: $REDIS_PASS
|
||||
Access Token Salt: $ACCESS_TOKEN_SALT
|
||||
JWT Secret Key: $JWT_SECRET_KEY
|
||||
EOF
|
||||
msg_ok "Set up Database"
|
||||
|
||||
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 "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;"
|
||||
{
|
||||
echo "GLPI Database Credentials"
|
||||
echo "Database: $DB_NAME"
|
||||
echo "Username: $DB_USER"
|
||||
echo "Password: $DB_PASS"
|
||||
} >>~/glpi_db.creds
|
||||
cat <<EOF >~/glpi_db.creds
|
||||
GLPI Database Credentials
|
||||
Database: $DB_NAME
|
||||
Username: $DB_USER
|
||||
Password: $DB_PASS
|
||||
EOF
|
||||
msg_ok "Set up database"
|
||||
|
||||
msg_info "Installing GLPi"
|
||||
|
||||
@@ -28,11 +28,11 @@ msg_ok "Setup Graylog Data Node"
|
||||
msg_info "Setup ${APPLICATION}"
|
||||
$STD apt-get install graylog-server
|
||||
ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
|
||||
{
|
||||
echo "${APPLICATION} Credentials"
|
||||
echo "Admin User: admin"
|
||||
echo "Admin Password: ${ROOT_PASSWORD}"
|
||||
} >>~/graylog.creds
|
||||
cat <<EOF >~/graylog.creds
|
||||
${APPLICATION} Credentials
|
||||
Admin User: admin
|
||||
Admin Password: ${ROOT_PASSWORD}
|
||||
EOF
|
||||
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/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf
|
||||
|
||||
@@ -14,14 +14,14 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
gcc \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-venv \
|
||||
libpq-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libssl-dev \
|
||||
caddy
|
||||
gcc \
|
||||
python3 \
|
||||
python3-dev \
|
||||
python3-venv \
|
||||
libpq-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libssl-dev \
|
||||
caddy
|
||||
|
||||
mkdir -p ~/.config/pip
|
||||
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)"
|
||||
ADMIN_EMAIL="admin@community-scripts.org"
|
||||
ADMIN_PASSWORD="$PG_DB_PASS"
|
||||
{
|
||||
echo "healthchecks Admin Email: $ADMIN_EMAIL"
|
||||
echo "healthchecks Admin Password: $ADMIN_PASSWORD"
|
||||
} >>~/healthchecks.creds
|
||||
cat <<EOF >~/healthchecks.creds
|
||||
healthchecks Admin Email: $ADMIN_EMAIL
|
||||
healthchecks Admin Password: $ADMIN_PASSWORD
|
||||
EOF
|
||||
msg_ok "Set up Keys"
|
||||
|
||||
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
|
||||
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
|
||||
rm /etc/nginx/nginx.conf
|
||||
rm -f /etc/nginx/nginx.conf
|
||||
mkdir -p /etc/nginx/templates
|
||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
||||
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_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);"
|
||||
{
|
||||
echo ""
|
||||
echo "HortusFox-Admin-Creds:"
|
||||
echo "E-Mail: $ADMIN_EMAIL"
|
||||
echo "Passwort: $ADMIN_PASS"
|
||||
} >>~/hortusfox.creds
|
||||
cat <<EOF >~/hortusfox.creds
|
||||
|
||||
HortusFox-Admin-Creds:
|
||||
E-Mail: $ADMIN_EMAIL
|
||||
Passwort: $ADMIN_PASS
|
||||
EOF
|
||||
$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"
|
||||
|
||||
|
||||
@@ -293,13 +293,13 @@ ldconfig /usr/local/lib
|
||||
cd "$STAGING_DIR"
|
||||
rm -rf "$SOURCE"/build
|
||||
msg_ok "(5/5) Compiled libvips"
|
||||
{
|
||||
echo "imagemagick: $IMAGEMAGICK_REVISION"
|
||||
echo "libheif: $LIBHEIF_REVISION"
|
||||
echo "libjxl: $LIBJXL_REVISION"
|
||||
echo "libraw: $LIBRAW_REVISION"
|
||||
echo "libvips: $LIBVIPS_REVISION"
|
||||
} >~/.immich_library_revisions
|
||||
cat <<EOF >~/.immich_library_revisions
|
||||
imagemagick: $IMAGEMAGICK_REVISION
|
||||
libheif: $LIBHEIF_REVISION
|
||||
libjxl: $LIBJXL_REVISION
|
||||
libraw: $LIBRAW_REVISION
|
||||
libvips: $LIBVIPS_REVISION
|
||||
EOF
|
||||
msg_ok "Custom Photo-processing Libraries Compiled Successfully"
|
||||
|
||||
INSTALL_DIR="/opt/${APPLICATION}"
|
||||
|
||||
@@ -30,10 +30,10 @@ chmod +x /usr/local/bin/ironclaw
|
||||
msg_info "Configuring Environment"
|
||||
GATEWAY_TOKEN=$(openssl rand -hex 32)
|
||||
mkdir -p /root/.ironclaw
|
||||
{
|
||||
echo "Gateway-Token"
|
||||
echo "Token: $GATEWAY_TOKEN"
|
||||
} >> /root/.ironclaw/gateway.creds
|
||||
cat <<EOF >/root/.ironclaw/gateway.creds
|
||||
Gateway-Token
|
||||
Token: $GATEWAY_TOKEN
|
||||
EOF
|
||||
|
||||
mkdir -p /root/.ironclaw
|
||||
cat <<EOF >/root/.ironclaw/.env
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#!/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-x86_64-free.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 USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
$STD mariadb -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "Kimai-Credentials"
|
||||
echo "Kimai Database User: $DB_USER"
|
||||
echo "Kimai Database Password: $DB_PASS"
|
||||
echo "Kimai Database Name: $DB_NAME"
|
||||
} >>~/kimai.creds
|
||||
cat <<EOF >~/kimai.creds
|
||||
Kimai-Credentials
|
||||
Kimai Database User: $DB_USER
|
||||
Kimai Database Password: $DB_PASS
|
||||
Kimai Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up database"
|
||||
|
||||
fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball"
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
#!/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
|
||||
@@ -116,11 +116,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_USER="admin"
|
||||
{
|
||||
echo "LibreNMS Credentials"
|
||||
echo "Username: ${APP_USER}"
|
||||
echo "Password: ${APP_PASSWORD}"
|
||||
} >>~/librenms.creds
|
||||
cat <<EOF >~/librenms.creds
|
||||
LibreNMS Credentials
|
||||
Username: ${APP_USER}
|
||||
Password: ${APP_PASSWORD}
|
||||
EOF
|
||||
|
||||
$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"
|
||||
|
||||
@@ -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 USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "LimeSurvey-Credentials"
|
||||
echo "LimeSurvey Database User: $DB_USER"
|
||||
echo "LimeSurvey Database Password: $DB_PASS"
|
||||
echo "LimeSurvey Database Name: $DB_NAME"
|
||||
} >>~/limesurvey.creds
|
||||
cat <<EOF >~/limesurvey.creds
|
||||
LimeSurvey-Credentials
|
||||
LimeSurvey Database User: $DB_USER
|
||||
LimeSurvey Database Password: $DB_PASS
|
||||
LimeSurvey Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Configured MariaDB Database"
|
||||
|
||||
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)
|
||||
$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;"
|
||||
{
|
||||
echo "listmonk-Credentials"
|
||||
echo -e "listmonk Database User: \e[32m$DB_USER\e[0m"
|
||||
echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m"
|
||||
echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m"
|
||||
} >>~/listmonk.creds
|
||||
cat <<EOF >~/listmonk.creds
|
||||
listmonk-Credentials
|
||||
listmonk Database User: $DB_USER
|
||||
listmonk Database Password: $DB_PASS
|
||||
listmonk Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Configured PostgreSQL"
|
||||
|
||||
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 PATH="\$ESCRIPTS_BIN:\$ERLANG_BIN:\$ELIXIR_BIN:\$PATH"
|
||||
EOF
|
||||
{
|
||||
echo "Livebook-Credentials"
|
||||
echo "Livebook Password: $LIVEBOOK_PASSWORD"
|
||||
} >>~/livebook.creds
|
||||
cat <<EOF >~/livebook.creds
|
||||
Livebook-Credentials
|
||||
Livebook Password: $LIVEBOOK_PASSWORD
|
||||
EOF
|
||||
msg_ok "Installed Erlang $ERLANG_VERSION and Elixir $ELIXIR_VERSION"
|
||||
|
||||
msg_info "Installing Livebook"
|
||||
|
||||
@@ -70,14 +70,6 @@ chown loki /etc/loki/config.yml
|
||||
systemctl enable -q --now 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
|
||||
customize
|
||||
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 USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';"
|
||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "Manage My Damn Life Credentials"
|
||||
echo "Database User: $DB_USER"
|
||||
echo "Database Password: $DB_PASS"
|
||||
echo "Database Name: $DB_NAME"
|
||||
} >>~/mmdl.creds
|
||||
cat <<EOF >~/mmdl.creds
|
||||
Manage My Damn Life Credentials
|
||||
Database User: $DB_USER
|
||||
Database Password: $DB_PASS
|
||||
Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up Database"
|
||||
|
||||
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 "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
|
||||
$STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;"
|
||||
{
|
||||
echo "Mattermost Credentials"
|
||||
echo "Database User: $DB_USER"
|
||||
echo "Database Password: $DB_PASS"
|
||||
echo "Database Name: $DB_NAME"
|
||||
} >>~/mattermost.creds
|
||||
cat <<EOF >~/mattermost.creds
|
||||
Mattermost Credentials
|
||||
Database User: $DB_USER
|
||||
Database Password: $DB_PASS
|
||||
Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up PostgreSQL"
|
||||
|
||||
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 DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||
{
|
||||
echo "MediaManager Credentials"
|
||||
echo "MediaManager Database User: $DB_USER"
|
||||
echo "MediaManager Database Password: $DB_PASS"
|
||||
echo "MediaManager Database Name: $DB_NAME"
|
||||
} >>~/mediamanager.creds
|
||||
cat <<EOF >~/mediamanager.creds
|
||||
MediaManager Credentials
|
||||
MediaManager Database User: $DB_USER
|
||||
MediaManager Database Password: $DB_PASS
|
||||
MediaManager Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up PostgreSQL"
|
||||
|
||||
fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager"
|
||||
|
||||
@@ -28,10 +28,10 @@ ADMIN_USERNAME=$ADMIN_NAME
|
||||
ADMIN_PASSWORD=$ADMIN_PASS
|
||||
LISTEN_ADDR=0.0.0.0:8080
|
||||
EOF
|
||||
{
|
||||
echo "ADMIN_USERNAME: $ADMIN_NAME"
|
||||
echo "ADMIN_PASSWORD: $ADMIN_PASS"
|
||||
} >>~/miniflux.creds
|
||||
cat <<EOF >~/miniflux.creds
|
||||
ADMIN_USERNAME: $ADMIN_NAME
|
||||
ADMIN_PASSWORD: $ADMIN_PASS
|
||||
EOF
|
||||
$STD miniflux -migrate -config-file /etc/miniflux.conf
|
||||
systemctl enable -q --now miniflux
|
||||
msg_ok "Configured Miniflux"
|
||||
|
||||
@@ -85,12 +85,12 @@ user.is_superuser = True
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
EOF
|
||||
{
|
||||
echo ""
|
||||
echo "Netbox-Django-Credentials"
|
||||
echo -e "Django User: \e[32m$DJANGO_USER\e[0m"
|
||||
echo -e "Django Password: \e[32m$DJANGO_PASS\e[0m"
|
||||
} >>~/netbox.creds
|
||||
cat <<EOF >~/netbox.creds
|
||||
|
||||
Netbox-Django-Credentials
|
||||
Django User: $DJANGO_USER
|
||||
Django Password: $DJANGO_PASS
|
||||
EOF
|
||||
msg_ok "Setup Django Admin"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -18,7 +18,7 @@ $STD apt install -y \
|
||||
apache2-utils \
|
||||
logrotate \
|
||||
build-essential \
|
||||
libpcre3-dev \
|
||||
libpcre2-dev \
|
||||
libssl-dev \
|
||||
zlib1g-dev \
|
||||
git \
|
||||
@@ -36,7 +36,8 @@ $STD /opt/certbot/bin/pip install certbot certbot-dns-cloudflare
|
||||
ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
|
||||
msg_ok "Set up Certbot"
|
||||
|
||||
fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "latest" "/opt/openresty" "openresty-*.tar.gz"
|
||||
OPENRESTY_VERSION="1.29.2.5"
|
||||
fetch_and_deploy_from_url "https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz" "/opt/openresty"
|
||||
|
||||
msg_info "Building OpenResty"
|
||||
cd /opt/openresty
|
||||
@@ -52,6 +53,7 @@ $STD ./configure \
|
||||
--with-stream_ssl_module
|
||||
$STD make -j"$(nproc)"
|
||||
$STD make install
|
||||
echo "${OPENRESTY_VERSION}" >~/.openresty
|
||||
rm -rf /opt/openresty
|
||||
|
||||
cat <<'EOF' >/lib/systemd/system/openresty.service
|
||||
|
||||
@@ -59,10 +59,10 @@ EOF
|
||||
systemctl enable -q --now nightscout
|
||||
msg_ok "Created Service"
|
||||
|
||||
{
|
||||
echo "Nightscout Credentials"
|
||||
echo "API_SECRET: ${API_SECRET}"
|
||||
} >> ~/nightscout.creds
|
||||
cat <<EOF >~/nightscout.creds
|
||||
Nightscout Credentials
|
||||
API_SECRET: ${API_SECRET}
|
||||
EOF
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
+12
-12
@@ -15,10 +15,10 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies (Patience)"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
redis-server \
|
||||
expect \
|
||||
ca-certificates
|
||||
build-essential \
|
||||
redis-server \
|
||||
expect \
|
||||
ca-certificates
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mongodb
|
||||
@@ -31,14 +31,14 @@ NODEBB_USER="nodebb"
|
||||
NODEBB_PWD="$(openssl rand -base64 18 | cut -c1-13)"
|
||||
MONGO_CONNECTION_STRING="mongodb://${NODEBB_USER}:${NODEBB_PWD}@localhost:27017/nodebb"
|
||||
NODEBB_SECRET=$(uuidgen)
|
||||
{
|
||||
echo "NodeBB-Credentials"
|
||||
echo "Mongo Database User: $MONGO_ADMIN_USER"
|
||||
echo "Mongo Database Password: $MONGO_ADMIN_PWD"
|
||||
echo "NodeBB User: $NODEBB_USER"
|
||||
echo "NodeBB Password: $NODEBB_PWD"
|
||||
echo "NodeBB Secret: $NODEBB_SECRET"
|
||||
} >>~/nodebb.creds
|
||||
cat <<EOF >~/nodebb.creds
|
||||
NodeBB-Credentials
|
||||
Mongo Database User: $MONGO_ADMIN_USER
|
||||
Mongo Database Password: $MONGO_ADMIN_PWD
|
||||
NodeBB User: $NODEBB_USER
|
||||
NodeBB Password: $NODEBB_PWD
|
||||
NodeBB Secret: $NODEBB_SECRET
|
||||
EOF
|
||||
|
||||
$STD mongosh <<EOF
|
||||
use admin
|
||||
|
||||
@@ -42,12 +42,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 "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;"
|
||||
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
||||
{
|
||||
echo "Odoo-Credentials"
|
||||
echo -e "Odoo Database User: $DB_USER"
|
||||
echo -e "Odoo Database Password: $DB_PASS"
|
||||
echo -e "Odoo Database Name: $DB_NAME"
|
||||
} >>~/odoo.creds
|
||||
cat <<EOF >~/odoo.creds
|
||||
Odoo-Credentials
|
||||
Odoo Database User: $DB_USER
|
||||
Odoo Database Password: $DB_PASS
|
||||
Odoo Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Setup PostgreSQL"
|
||||
|
||||
msg_info "Configuring Odoo"
|
||||
|
||||
@@ -35,7 +35,7 @@ if ! dpkg -l | grep -q 'libssl1.1'; then
|
||||
fi
|
||||
|
||||
msg_info "Installing Omada Controller"
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
head -n1)
|
||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
|
||||
@@ -30,12 +30,12 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
|
||||
$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 default_transaction_isolation TO 'read committed';"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||
{
|
||||
echo "ONLYOFFICE-Credentials"
|
||||
echo "ONLYOFFICE Database User: $DB_USER"
|
||||
echo "ONLYOFFICE Database Password: $DB_PASS"
|
||||
echo "ONLYOFFICE Database Name: $DB_NAME"
|
||||
} >>~/onlyoffice.creds
|
||||
cat <<EOF >~/onlyoffice.creds
|
||||
ONLYOFFICE-Credentials
|
||||
ONLYOFFICE Database User: $DB_USER
|
||||
ONLYOFFICE Database Password: $DB_PASS
|
||||
ONLYOFFICE Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up Database"
|
||||
|
||||
msg_info "Adding ONLYOFFICE GPG Key"
|
||||
@@ -81,16 +81,13 @@ echo onlyoffice-documentserver onlyoffice/rabbitmq-pwd password $RMQ_PASS | debc
|
||||
echo onlyoffice-documentserver onlyoffice/jwt-enabled boolean true | debconf-set-selections
|
||||
echo onlyoffice-documentserver onlyoffice/jwt-secret password $JWT_SECRET | debconf-set-selections
|
||||
|
||||
echo "RabbitMQ User: $RMQ_USER" >>~/onlyoffice.creds
|
||||
echo "RabbitMQ Password: $RMQ_PASS" >>~/onlyoffice.creds
|
||||
echo "JWT Secret: $JWT_SECRET" >>~/onlyoffice.creds
|
||||
{
|
||||
echo ""
|
||||
echo "ONLYOFFICE RabbitMQ Credentials"
|
||||
echo "User: $RMQ_USER"
|
||||
echo "Password: $RMQ_PASS"
|
||||
echo "Secret: $JWT_SECRET"
|
||||
} >>~/onlyoffice.creds
|
||||
cat <<EOF >~/onlyoffice.creds
|
||||
|
||||
ONLYOFFICE RabbitMQ Credentials
|
||||
User: $RMQ_USER
|
||||
Password: $RMQ_PASS
|
||||
Secret: $JWT_SECRET
|
||||
EOF
|
||||
msg_ok "Debconf Preconfiguration Done"
|
||||
|
||||
msg_info "Installing ttf-mscorefonts-installer"
|
||||
|
||||
@@ -112,7 +112,7 @@ if grep -q 'authenticated' $PAPERCLIP_CONFIG; then
|
||||
PAPERCLIP_INVITE_URL=$(awk -F'Invite URL: ' '/Invite URL:/ {print $2; exit}' "$PAPERCLIP_BOOTSTRAP_LOG")
|
||||
PAPERCLIP_INVITE_EXPIRY=$(awk -F'Expires: ' '/Expires:/ {print $2; exit}' "$PAPERCLIP_BOOTSTRAP_LOG")
|
||||
if [[ -n "$PAPERCLIP_INVITE_URL" ]]; then
|
||||
cat <<EOF >>~/paperclip.creds
|
||||
cat <<EOF >~/paperclip.creds
|
||||
|
||||
Paperclip Admin Invite
|
||||
Invite URL: ${PAPERCLIP_INVITE_URL}
|
||||
|
||||
@@ -56,12 +56,12 @@ curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/p
|
||||
mkdir -p /opt/paperless_data/{consume,data,media,trash}
|
||||
mkdir -p /opt/paperless/static
|
||||
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
|
||||
{
|
||||
echo ""
|
||||
echo "Paperless-ngx Secret Key: $SECRET_KEY"
|
||||
echo "Paperless-ngx WebUI User: admin"
|
||||
echo "Paperless-ngx WebUI Password: $PG_DB_PASS"
|
||||
} >>~/paperless-ngx.creds
|
||||
cat <<EOF >~/paperless-ngx.creds
|
||||
|
||||
Paperless-ngx Secret Key: $SECRET_KEY
|
||||
Paperless-ngx WebUI User: admin
|
||||
Paperless-ngx WebUI Password: $PG_DB_PASS
|
||||
EOF
|
||||
sed -i \
|
||||
-e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' \
|
||||
-e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless_data/consume|" \
|
||||
|
||||
@@ -30,11 +30,11 @@ $STD php bin/console cache:clear
|
||||
php bin/console doctrine:migrations:migrate -n >~/database-migration-output
|
||||
chown -R www-data:www-data /opt/partdb
|
||||
ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/database-migration-output)
|
||||
{
|
||||
echo ""
|
||||
echo "Part-DB Admin User: admin"
|
||||
echo "Part-DB Admin Password: $ADMIN_PASS"
|
||||
} >>~/partdb.creds
|
||||
cat <<EOF >~/partdb.creds
|
||||
|
||||
Part-DB Admin User: admin
|
||||
Part-DB Admin Password: $ADMIN_PASS
|
||||
EOF
|
||||
rm -rf ~/database-migration-output
|
||||
msg_ok "Installed Part-DB"
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
git \
|
||||
nginx \
|
||||
redis-server \
|
||||
cron
|
||||
git \
|
||||
nginx \
|
||||
redis-server \
|
||||
cron
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
setup_mariadb
|
||||
@@ -35,12 +35,12 @@ mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
|
||||
$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 "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
|
||||
{
|
||||
echo "Paymenter Database Credentials"
|
||||
echo "Database: $DB_NAME"
|
||||
echo "Username: $DB_USER"
|
||||
echo "Password: $DB_PASS"
|
||||
} >>~/paymenter_db.creds
|
||||
cat <<EOF >~/paymenter_db.creds
|
||||
Paymenter Database Credentials
|
||||
Database: $DB_NAME
|
||||
Username: $DB_USER
|
||||
Password: $DB_PASS
|
||||
EOF
|
||||
cd /opt/paymenter
|
||||
cp .env.example .env
|
||||
$STD composer install --no-dev --optimize-autoloader --no-interaction
|
||||
|
||||
@@ -119,7 +119,7 @@ edns-packet-max=1232
|
||||
EOF
|
||||
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
cat <<EOF >>/etc/unbound/unbound.conf.d/pi-hole.conf
|
||||
cat <<EOF >/etc/unbound/unbound.conf.d/pi-hole.conf
|
||||
tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
|
||||
forward-zone:
|
||||
name: "."
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# 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
|
||||
|
||||
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 \
|
||||
elixir \
|
||||
erlang-dev \
|
||||
erlang-inets \
|
||||
erlang-os-mon \
|
||||
erlang-runtime-tools \
|
||||
erlang-syntax-tools \
|
||||
erlang-xmerl \
|
||||
git \
|
||||
libsqlite3-dev \
|
||||
locales \
|
||||
openssh-client \
|
||||
openssl \
|
||||
pipx \
|
||||
pkg-config \
|
||||
procps \
|
||||
python3-mutagen \
|
||||
zip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
FFMPEG_TYPE="binary" setup_ffmpeg
|
||||
setup_hwaccel
|
||||
fetch_and_deploy_gh_release "deno" "denoland/deno" "prebuild" "latest" "/usr/local/bin" "deno-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.zip"
|
||||
fetch_and_deploy_gh_release "yt-dlp" "yt-dlp/yt-dlp" "singlefile" "latest" "/usr/local/bin" "yt-dlp_$(arch_resolve "linux" "linux_aarch64")"
|
||||
|
||||
msg_info "Installing Apprise"
|
||||
export PIPX_HOME=/opt/pipx
|
||||
export PIPX_BIN_DIR=/usr/local/bin
|
||||
$STD pipx install apprise
|
||||
msg_ok "Installed Apprise"
|
||||
|
||||
fetch_and_deploy_gh_release "pinchflat" "kieraneglin/pinchflat" "tarball" "latest" "/opt/pinchflat-src"
|
||||
|
||||
msg_info "Configuring Pinchflat"
|
||||
CONFIG_PATH="/opt/pinchflat/config"
|
||||
DOWNLOADS_PATH="/opt/pinchflat/downloads"
|
||||
mkdir -p \
|
||||
/etc/elixir_tzdata_data \
|
||||
/etc/yt-dlp/plugins \
|
||||
/opt/pinchflat/app \
|
||||
"$CONFIG_PATH/db" \
|
||||
"$CONFIG_PATH/extras" \
|
||||
"$CONFIG_PATH/logs" \
|
||||
"$CONFIG_PATH/metadata" \
|
||||
"$DOWNLOADS_PATH"
|
||||
ln -sfn "$CONFIG_PATH" /config
|
||||
ln -sfn "$DOWNLOADS_PATH" /downloads
|
||||
chmod ugo+rw /etc/elixir_tzdata_data /etc/yt-dlp /etc/yt-dlp/plugins
|
||||
|
||||
cat <<EOF >/opt/pinchflat/.env
|
||||
LANG=en_US.UTF-8
|
||||
LANGUAGE=en_US:en
|
||||
LC_ALL=en_US.UTF-8
|
||||
MIX_ENV=prod
|
||||
PHX_SERVER=true
|
||||
PORT=8945
|
||||
RUN_CONTEXT=selfhosted
|
||||
CONFIG_PATH=${CONFIG_PATH}
|
||||
MEDIA_PATH=${DOWNLOADS_PATH}
|
||||
TZ_DATA_PATH=/etc/elixir_tzdata_data
|
||||
SECRET_KEY_BASE=$(openssl rand -base64 48)
|
||||
EOF
|
||||
msg_ok "Configured Pinchflat"
|
||||
|
||||
msg_info "Building Pinchflat"
|
||||
cd /opt/pinchflat-src
|
||||
export MIX_ENV=prod
|
||||
export ERL_FLAGS="+JPperf true"
|
||||
$STD mix local.hex --force
|
||||
$STD mix local.rebar --force
|
||||
$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 "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/pinchflat.service
|
||||
[Unit]
|
||||
Description=Pinchflat
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=/opt/pinchflat/.env
|
||||
WorkingDirectory=/opt/pinchflat/app
|
||||
UMask=0022
|
||||
ExecStartPre=/opt/pinchflat/app/bin/check_file_permissions
|
||||
ExecStartPre=/opt/pinchflat/app/bin/migrate
|
||||
ExecStart=/opt/pinchflat/app/bin/pinchflat start
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now pinchflat
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
+24
-24
@@ -15,21 +15,21 @@ update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
nginx \
|
||||
build-essential \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libxslt1-dev \
|
||||
libxmlsec1-dev \
|
||||
libxmlsec1-openssl \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
python3-venv \
|
||||
redis-server \
|
||||
erlang-base \
|
||||
erlang-{asn1,crypto,eldap,ftp,inets,mnesia,os-mon,parsetools} \
|
||||
erlang-{public-key,runtime-tools,snmp,ssl,syntax-tools,tftp,tools,xmerl} \
|
||||
rabbitmq-server
|
||||
nginx \
|
||||
build-essential \
|
||||
libpq-dev \
|
||||
libxml2-dev \
|
||||
libxslt1-dev \
|
||||
libxmlsec1-dev \
|
||||
libxmlsec1-openssl \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
python3-venv \
|
||||
redis-server \
|
||||
erlang-base \
|
||||
erlang-{asn1,crypto,eldap,ftp,inets,mnesia,os-mon,parsetools} \
|
||||
erlang-{public-key,runtime-tools,snmp,ssl,syntax-tools,tftp,tools,xmerl} \
|
||||
rabbitmq-server
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
@@ -86,7 +86,7 @@ VITE_LIVE_BASE_URL=http://${LOCAL_IP}
|
||||
VITE_LIVE_BASE_PATH=/live"
|
||||
# Each Vite app needs its own .env for the build
|
||||
for app in web admin space; do
|
||||
echo "$FRONTEND_ENV" >/opt/plane/apps/${app}/.env
|
||||
echo "$FRONTEND_ENV" >/opt/plane/apps/${app}/.env
|
||||
done
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
@@ -271,14 +271,14 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
systemctl enable -q --now plane-api plane-worker plane-beat plane-live plane-space
|
||||
{
|
||||
echo "RabbitMQ User: plane"
|
||||
echo "RabbitMQ Password: ${RABBITMQ_PASS}"
|
||||
echo "MinIO Access Key: ${MINIO_ACCESS_KEY}"
|
||||
echo "MinIO Secret Key: ${MINIO_SECRET_KEY}"
|
||||
echo "Secret Key: ${SECRET_KEY}"
|
||||
echo "Config: /opt/plane/apps/api/.env"
|
||||
} >>~/plane.creds
|
||||
cat <<EOF >~/plane.creds
|
||||
RabbitMQ User: plane
|
||||
RabbitMQ Password: ${RABBITMQ_PASS}
|
||||
MinIO Access Key: ${MINIO_ACCESS_KEY}
|
||||
MinIO Secret Key: ${MINIO_SECRET_KEY}
|
||||
Secret Key: ${SECRET_KEY}
|
||||
Config: /opt/plane/apps/api/.env
|
||||
EOF
|
||||
msg_ok "Created Services and MinIO Bucket"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
|
||||
+14
-14
@@ -32,12 +32,12 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
|
||||
$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 default_transaction_isolation TO 'read committed';"
|
||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||
{
|
||||
echo "PLANKA DB Credentials"
|
||||
echo "PLANKA Database User: $DB_USER"
|
||||
echo "PLANKA Database Password: $DB_PASS"
|
||||
echo "PLANKA Database Name: $DB_NAME"
|
||||
} >>~/planka.creds
|
||||
cat <<EOF >~/planka.creds
|
||||
PLANKA DB Credentials
|
||||
PLANKA Database User: $DB_USER
|
||||
PLANKA Database Password: $DB_PASS
|
||||
PLANKA Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up PostgreSQL Database"
|
||||
|
||||
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
|
||||
@@ -67,14 +67,14 @@ echo "DEFAULT_ADMIN_NAME=$ADMIN_NAME" >>.env
|
||||
echo "DEFAULT_ADMIN_USERNAME=$ADMIN_USERNAME" >>.env
|
||||
$STD npm run db:seed
|
||||
sed -i '/# Temporary admin user creation settings/,$d' .env
|
||||
{
|
||||
echo ""
|
||||
echo "PLANKA Admin Credentials"
|
||||
echo "Admin Email: $ADMIN_EMAIL"
|
||||
echo "Admin Password: $ADMIN_PASSWORD"
|
||||
echo "Admin Name: $ADMIN_NAME"
|
||||
echo "Admin Username: $ADMIN_USERNAME"
|
||||
} >>~/planka.creds
|
||||
cat <<EOF >~/planka.creds
|
||||
|
||||
PLANKA Admin Credentials
|
||||
Admin Email: $ADMIN_EMAIL
|
||||
Admin Password: $ADMIN_PASSWORD
|
||||
Admin Name: $ADMIN_NAME
|
||||
Admin Username: $ADMIN_USERNAME
|
||||
EOF
|
||||
msg_ok "Created Admin User"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -52,12 +52,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 USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||
{
|
||||
echo "pterodactyl Panel-Credentials"
|
||||
echo "pterodactyl Panel Database User: $DB_USER"
|
||||
echo "pterodactyl Panel Database Password: $DB_PASS"
|
||||
echo "pterodactyl Panel Database Name: $DB_NAME"
|
||||
} >>~/pterodactyl-panel.creds
|
||||
cat <<EOF >~/pterodactyl-panel.creds
|
||||
pterodactyl Panel-Credentials
|
||||
pterodactyl Panel Database User: $DB_USER
|
||||
pterodactyl Panel Database Password: $DB_PASS
|
||||
pterodactyl Panel Database Name: $DB_NAME
|
||||
EOF
|
||||
msg_ok "Set up MariaDB"
|
||||
|
||||
read -p "${TAB3}Provide an email address for admin login, this should be a valid email address: " ADMIN_EMAIL
|
||||
@@ -82,12 +82,12 @@ echo "* * * * * php /opt/pterodactyl-panel/artisan schedule:run >> /dev/null 2>&
|
||||
chown -R www-data:www-data /opt/pterodactyl-panel/*
|
||||
chmod -R 755 /opt/pterodactyl-panel/storage/* /opt/pterodactyl-panel/bootstrap/cache/
|
||||
ln -s /opt/pterodactyl-panel /var/www/pterodactyl
|
||||
{
|
||||
echo ""
|
||||
echo "pterodactyl Admin Username: admin"
|
||||
echo "pterodactyl Admin Email: $ADMIN_EMAIL"
|
||||
echo "pterodactyl Admin Password: $ADMIN_PASS"
|
||||
} >>~/pterodactyl-panel.creds
|
||||
cat <<EOF >~/pterodactyl-panel.creds
|
||||
|
||||
pterodactyl Admin Username: admin
|
||||
pterodactyl Admin Email: $ADMIN_EMAIL
|
||||
pterodactyl Admin Password: $ADMIN_PASS
|
||||
EOF
|
||||
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
|
||||
rm -rf "/tmp/debsuryorg-archive-keyring.deb"
|
||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
||||
|
||||
@@ -24,11 +24,11 @@ msg_info "Setting up Radicale"
|
||||
cd /opt/radicale
|
||||
RNDPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD htpasswd -c -b -5 /opt/radicale/users admin "$RNDPASS"
|
||||
{
|
||||
echo "Radicale Credentials"
|
||||
echo "Admin User: admin"
|
||||
echo "Admin Password: $RNDPASS"
|
||||
} >>~/radicale.creds
|
||||
cat <<EOF >~/radicale.creds
|
||||
Radicale Credentials
|
||||
Admin User: admin
|
||||
Admin Password: $RNDPASS
|
||||
EOF
|
||||
|
||||
mkdir -p /etc/radicale
|
||||
cat <<EOF >/etc/radicale/config
|
||||
|
||||
@@ -23,11 +23,11 @@ msg_info "Installing rclone"
|
||||
cd /opt/rclone
|
||||
RCLONE_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
|
||||
{
|
||||
echo "rclone-Credentials"
|
||||
echo "rclone User Name: admin"
|
||||
echo "rclone Password: $RCLONE_PASSWORD"
|
||||
} >>~/rclone.creds
|
||||
cat <<EOF >~/rclone.creds
|
||||
rclone-Credentials
|
||||
rclone User Name: admin
|
||||
rclone Password: $RCLONE_PASSWORD
|
||||
EOF
|
||||
msg_ok "Installed rclone"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -20,6 +20,11 @@ $STD apt install -y \
|
||||
potrace \
|
||||
libopenjp2-tools \
|
||||
libegl1 \
|
||||
libgl1 \
|
||||
libglib2.0-0 \
|
||||
libsm6 \
|
||||
libxext6 \
|
||||
libxrender1 \
|
||||
libwayland-client0 \
|
||||
libwayland-cursor0 \
|
||||
libwayland-egl1 \
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user