mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-19 15:04:56 +02:00
Compare commits
162 Commits
fix/pelica
...
fix/reacti
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87c26b56bd | ||
|
|
81737f733f | ||
|
|
6181e5aad4 | ||
|
|
0938891e77 | ||
|
|
f52b055350 | ||
|
|
5a322a4593 | ||
|
|
2944aa9100 | ||
|
|
afa59595f0 | ||
|
|
ff4a9d423b | ||
|
|
59d4ab70c3 | ||
|
|
7ecb1eb305 | ||
|
|
7076d03ab3 | ||
|
|
c874324f06 | ||
|
|
0cab1f7f89 | ||
|
|
f7432990cf | ||
|
|
39e67bc874 | ||
|
|
4ffa551202 | ||
|
|
0374da39f7 | ||
|
|
ade578edad | ||
|
|
c33dd2ae39 | ||
|
|
3a5f4454e6 | ||
|
|
c9d0196fee | ||
|
|
404463be21 | ||
|
|
5dc2b090d9 | ||
|
|
1c216fc582 | ||
|
|
1e795835fc | ||
|
|
e234f411c7 | ||
|
|
89025c9f28 | ||
|
|
3b308af40a | ||
|
|
1a93de8674 | ||
|
|
ebf755031b | ||
|
|
131a9d60f1 | ||
|
|
f7a69ac92d | ||
|
|
8f1c4a27a6 | ||
|
|
16cc639e1e | ||
|
|
168894e6a9 | ||
|
|
2a86c7e54e | ||
|
|
f16db2d515 | ||
|
|
cf56af0834 | ||
|
|
b05fd7889b | ||
|
|
369f901308 | ||
|
|
0d47f336b0 | ||
|
|
15377bb283 | ||
|
|
6f4cb4e9c9 | ||
|
|
b707d6c05b | ||
|
|
1b285e9b6f | ||
|
|
38b664fa85 | ||
|
|
e8b9d40b92 | ||
|
|
3b3ab1b8f9 | ||
|
|
6b60624b2d | ||
|
|
df37781e9a | ||
|
|
2448723d19 | ||
|
|
cfd9a8132b | ||
|
|
02f5589ff5 | ||
|
|
e68ea29996 | ||
|
|
79926030ae | ||
|
|
4fde0c0427 | ||
|
|
0a81ff53fd | ||
|
|
cd5816b263 | ||
|
|
d18d473583 | ||
|
|
af529716b1 | ||
|
|
2c950db3ac | ||
|
|
904f0bdd3c | ||
|
|
de08fc45d4 | ||
|
|
9e009c1dfd | ||
|
|
03ca1543d9 | ||
|
|
dd5ddb2b40 | ||
|
|
34edee92b2 | ||
|
|
355826a528 | ||
|
|
a4bfe6a8e2 | ||
|
|
506c729667 | ||
|
|
9aee7bcbf4 | ||
|
|
251df84840 | ||
|
|
5a1053fe08 | ||
|
|
757acde352 | ||
|
|
1c7a925b31 | ||
|
|
ce12ac0f71 | ||
|
|
8d706791ea | ||
|
|
3edaa3e3f2 | ||
|
|
ad343c78cb | ||
|
|
f4d50cac1a | ||
|
|
7b1c510b53 | ||
|
|
0a38dabb59 | ||
|
|
e332d74536 | ||
|
|
c0c34cc4c8 | ||
|
|
a30c5f9ed4 | ||
|
|
41590d777e | ||
|
|
a04983674a | ||
|
|
07abb105d0 | ||
|
|
b15e84e2ba | ||
|
|
2fddbd9c67 | ||
|
|
b6c78b7ff0 | ||
|
|
1abf0f8b6d | ||
|
|
e05f2d94b4 | ||
|
|
8b57c42cb4 | ||
|
|
ebaa526560 | ||
|
|
bd6117eb6a | ||
|
|
26c94d8613 | ||
|
|
9dddf45a89 | ||
|
|
e3b7f01056 | ||
|
|
8b387313cf | ||
|
|
806c68df91 | ||
|
|
3352c8a63e | ||
|
|
5c9facd1f1 | ||
|
|
5be86d4fdf | ||
|
|
719cbca50f | ||
|
|
d7b0c2f4c6 | ||
|
|
86280881b4 | ||
|
|
a2c2c0ff09 | ||
|
|
2b11d05e7d | ||
|
|
28311987ae | ||
|
|
ae3b3eb3de | ||
|
|
6217669d66 | ||
|
|
a13b28e714 | ||
|
|
e0c7fa3295 | ||
|
|
f07c463c88 | ||
|
|
7b7aecef02 | ||
|
|
24d7b943e9 | ||
|
|
36f8e1f320 | ||
|
|
90a8b450ed | ||
|
|
409c0aad1b | ||
|
|
d3cdf27a77 | ||
|
|
c09ac3fb31 | ||
|
|
e39ce3285f | ||
|
|
d996b5a719 | ||
|
|
3f445acf9a | ||
|
|
90bc1ae1e5 | ||
|
|
83575e5972 | ||
|
|
6329ad7fa2 | ||
|
|
a450266925 | ||
|
|
02eaf288bf | ||
|
|
24fbf24c6d | ||
|
|
001bd8bf93 | ||
|
|
03bd701926 | ||
|
|
61f3e32827 | ||
|
|
a3844707ad | ||
|
|
91fe10ec4b | ||
|
|
cd21d98854 | ||
|
|
cb7d9037fb | ||
|
|
cd314ddb3f | ||
|
|
45b9103657 | ||
|
|
8a6655b7d1 | ||
|
|
32a4239f28 | ||
|
|
1fc7368ff9 | ||
|
|
9d9d763e63 | ||
|
|
28ae38e502 | ||
|
|
be2e3a4a3a | ||
|
|
3c02868add | ||
|
|
07cd4c0c3e | ||
|
|
f11edd21c9 | ||
|
|
9fc822d936 | ||
|
|
bf1c32ace8 | ||
|
|
611021ae8c | ||
|
|
12eb19ae4c | ||
|
|
c8dc0cffe0 | ||
|
|
95c7628362 | ||
|
|
50b3c3ae7f | ||
|
|
752fff3c8f | ||
|
|
129e221664 | ||
|
|
21c064464a | ||
|
|
6317e7a867 | ||
|
|
739e0aa41e |
256
.github/changelogs/2026/05.md
generated
vendored
256
.github/changelogs/2026/05.md
generated
vendored
@@ -1,3 +1,259 @@
|
||||
## 2026-05-16
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Homelable: replace passlib with bcrypt for password hashing [@MickLesk](https://github.com/MickLesk) ([#14530](https://github.com/community-scripts/ProxmoxVE/pull/14530))
|
||||
- dashy: fix: restore [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14527](https://github.com/community-scripts/ProxmoxVE/pull/14527))
|
||||
- Update Tinyauth source URL in installation script [@MehrunesSky](https://github.com/MehrunesSky) ([#14483](https://github.com/community-scripts/ProxmoxVE/pull/14483))
|
||||
- Excalidraw: Fix build [@tremor021](https://github.com/tremor021) ([#14509](https://github.com/community-scripts/ProxmoxVE/pull/14509))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Update authentik version to 2026.2.3 [@thieneret](https://github.com/thieneret) ([#14517](https://github.com/community-scripts/ProxmoxVE/pull/14517))
|
||||
|
||||
## 2026-05-15
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- OPNsense: replace undefined msg_warn with inline echo in alloc retry [@MickLesk](https://github.com/MickLesk) ([#14500](https://github.com/community-scripts/ProxmoxVE/pull/14500))
|
||||
- Checkmk: detect OMD version suffix dynamically on update [@MickLesk](https://github.com/MickLesk) ([#14496](https://github.com/community-scripts/ProxmoxVE/pull/14496))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- SearXNG: enable JSON format by default for API integrations [@MickLesk](https://github.com/MickLesk) ([#14498](https://github.com/community-scripts/ProxmoxVE/pull/14498))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Ollama use tools.func [@MickLesk](https://github.com/MickLesk) ([#14501](https://github.com/community-scripts/ProxmoxVE/pull/14501))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fall back to silent mode when no TTY or whiptail unavailable [@MickLesk](https://github.com/MickLesk) ([#14497](https://github.com/community-scripts/ProxmoxVE/pull/14497))
|
||||
|
||||
## 2026-05-14
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- CLIProxyAPI ([#14443](https://github.com/community-scripts/ProxmoxVE/pull/14443))
|
||||
|
||||
## 2026-05-13
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix: Broken Manifold update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14468](https://github.com/community-scripts/ProxmoxVE/pull/14468))
|
||||
- SoulSync: Fix update function [@tremor021](https://github.com/tremor021) ([#14465](https://github.com/community-scripts/ProxmoxVE/pull/14465))
|
||||
- Reactive-Resume: fix PDF generation timeout in LXC containers [@MickLesk](https://github.com/MickLesk) ([#14416](https://github.com/community-scripts/ProxmoxVE/pull/14416))
|
||||
- (calibre-web) Add --no-sandbox for PDF conversion [@jamesmyatt](https://github.com/jamesmyatt) ([#14461](https://github.com/community-scripts/ProxmoxVE/pull/14461))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: encode GitHub tag, refine pin logic, add Codeberg [@MickLesk](https://github.com/MickLesk) ([#14473](https://github.com/community-scripts/ProxmoxVE/pull/14473))
|
||||
|
||||
## 2026-05-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- DocuSeal ([#14445](https://github.com/community-scripts/ProxmoxVE/pull/14445))
|
||||
- Authentik ([#14440](https://github.com/community-scripts/ProxmoxVE/pull/14440))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Save Omada version [@lucacome](https://github.com/lucacome) ([#14433](https://github.com/community-scripts/ProxmoxVE/pull/14433))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- OpenCloud: bump version to 6.2.0 [@vhsdream](https://github.com/vhsdream) ([#14451](https://github.com/community-scripts/ProxmoxVE/pull/14451))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- misc: bump node versions [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14447](https://github.com/community-scripts/ProxmoxVE/pull/14447))
|
||||
|
||||
## 2026-05-11
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Lychee ([#14424](https://github.com/community-scripts/ProxmoxVE/pull/14424))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Termix: fix nginx pid path and log paths on update (#) [@MickLesk](https://github.com/MickLesk) ([#14419](https://github.com/community-scripts/ProxmoxVE/pull/14419))
|
||||
- Nginxproxymanager: restore NPM nginx.conf after OpenResty rebuid [@MickLesk](https://github.com/MickLesk) ([#14421](https://github.com/community-scripts/ProxmoxVE/pull/14421))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- InvestBrain: add commented reverse proxy config hints to .env [@MickLesk](https://github.com/MickLesk) ([#14422](https://github.com/community-scripts/ProxmoxVE/pull/14422))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Cronmaster: fix unexpected EOF in update_cronmaster script [@MickLesk](https://github.com/MickLesk) ([#14420](https://github.com/community-scripts/ProxmoxVE/pull/14420))
|
||||
|
||||
## 2026-05-10
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Save Beszel version [@lucacome](https://github.com/lucacome) ([#14389](https://github.com/community-scripts/ProxmoxVE/pull/14389))
|
||||
- karakeep: Fix SERVER_VERSION update [@MickLesk](https://github.com/MickLesk) ([#14378](https://github.com/community-scripts/ProxmoxVE/pull/14378))
|
||||
- inspIRCd: Fix service not autostarting [@tremor021](https://github.com/tremor021) ([#14368](https://github.com/community-scripts/ProxmoxVE/pull/14368))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- refactor: webcheck [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14391](https://github.com/community-scripts/ProxmoxVE/pull/14391))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools.func]: Pin `pnpm` version [@tremor021](https://github.com/tremor021) ([#14386](https://github.com/community-scripts/ProxmoxVE/pull/14386))
|
||||
|
||||
## 2026-05-09
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- FlowiseAI: Migrate to pnpm [@MickLesk](https://github.com/MickLesk) ([#14344](https://github.com/community-scripts/ProxmoxVE/pull/14344))
|
||||
- Purge openresty [@lucacome](https://github.com/lucacome) ([#14353](https://github.com/community-scripts/ProxmoxVE/pull/14353))
|
||||
- Check for release for Sonarr [@lucacome](https://github.com/lucacome) ([#14354](https://github.com/community-scripts/ProxmoxVE/pull/14354))
|
||||
- fix(termix-install.sh): add tmpfiles.d persistence and systemd PIDFile path [@runnylogan](https://github.com/runnylogan) ([#14350](https://github.com/community-scripts/ProxmoxVE/pull/14350))
|
||||
- ERPNext: start bench Redis services before bench new-site [@MickLesk](https://github.com/MickLesk) ([#14343](https://github.com/community-scripts/ProxmoxVE/pull/14343))
|
||||
- [Hotfix]Jotty: use absolute path when creating data dir [@vhsdream](https://github.com/vhsdream) ([#14355](https://github.com/community-scripts/ProxmoxVE/pull/14355))
|
||||
|
||||
## 2026-05-08
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- wishlist: pin pnpm to v10 to match engine requirements [@MickLesk](https://github.com/MickLesk) ([#14342](https://github.com/community-scripts/ProxmoxVE/pull/14342))
|
||||
- [pelican] fix env copy regression [@LetterN](https://github.com/LetterN) ([#14328](https://github.com/community-scripts/ProxmoxVE/pull/14328))
|
||||
- fix(homepage): fix ERR_PNPM_IGNORED_BUILDS error [@Sergih28](https://github.com/Sergih28) ([#14315](https://github.com/community-scripts/ProxmoxVE/pull/14315))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add setup_nltk as new function [@MickLesk](https://github.com/MickLesk) ([#14314](https://github.com/community-scripts/ProxmoxVE/pull/14314))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: fix meilisearch import-dump background process handling [@MickLesk](https://github.com/MickLesk) ([#14341](https://github.com/community-scripts/ProxmoxVE/pull/14341))
|
||||
|
||||
## 2026-05-07
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- termix: create /tmp/nginx before nginx -t [@MickLesk](https://github.com/MickLesk) ([#14312](https://github.com/community-scripts/ProxmoxVE/pull/14312))
|
||||
- The Lounge: Fix service not starting automaticaly [@tremor021](https://github.com/tremor021) ([#14311](https://github.com/community-scripts/ProxmoxVE/pull/14311))
|
||||
- netbird-lxc: fix installation check [@MickLesk](https://github.com/MickLesk) ([#14309](https://github.com/community-scripts/ProxmoxVE/pull/14309))
|
||||
- databasus: Backup and secure configuration file [@MickLesk](https://github.com/MickLesk) ([#14308](https://github.com/community-scripts/ProxmoxVE/pull/14308))
|
||||
- vm: update disk image URL for Ubuntu 25.04 [@MickLesk](https://github.com/MickLesk) ([#14290](https://github.com/community-scripts/ProxmoxVE/pull/14290))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- pangolin: bump version to 1.18.3 [@MickLesk](https://github.com/MickLesk) ([#14297](https://github.com/community-scripts/ProxmoxVE/pull/14297))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove: LiteLLM [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14294](https://github.com/community-scripts/ProxmoxVE/pull/14294))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- update-apps: some improvements [@MickLesk](https://github.com/MickLesk) ([#14275](https://github.com/community-scripts/ProxmoxVE/pull/14275))
|
||||
|
||||
## 2026-05-06
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Hoodik ([#14279](https://github.com/community-scripts/ProxmoxVE/pull/14279))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pelican-Panel: create backup subdirectory before copying storage [@MickLesk](https://github.com/MickLesk) ([#14274](https://github.com/community-scripts/ProxmoxVE/pull/14274))
|
||||
- Rustdeskserver: remove redundant else with undefined RELEASE var [@MickLesk](https://github.com/MickLesk) ([#14272](https://github.com/community-scripts/ProxmoxVE/pull/14272))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- AdguardHome-Sync replace ifconfig with hostname -I for IP detection [@MickLesk](https://github.com/MickLesk) ([#14273](https://github.com/community-scripts/ProxmoxVE/pull/14273))
|
||||
|
||||
## 2026-05-05
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- LibreChat ([#14247](https://github.com/community-scripts/ProxmoxVE/pull/14247))
|
||||
- Matomo ([#14248](https://github.com/community-scripts/ProxmoxVE/pull/14248))
|
||||
- Storyteller ([#14122](https://github.com/community-scripts/ProxmoxVE/pull/14122))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- Fix container count message in update-apps.sh [@Quotacious](https://github.com/Quotacious) ([#14265](https://github.com/community-scripts/ProxmoxVE/pull/14265))
|
||||
|
||||
## 2026-05-04
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Databasus: move .env to filesystem root so service starts correctly [@Copilot](https://github.com/Copilot) ([#14252](https://github.com/community-scripts/ProxmoxVE/pull/14252))
|
||||
- Databasus: update mongo-tools fallback to 100.16.1 and use now pnpm instead of npm ci [@MickLesk](https://github.com/MickLesk) ([#14240](https://github.com/community-scripts/ProxmoxVE/pull/14240))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func get_latest_gh_tag - add pagination to find prefixed tags beyond first 50 [@MickLesk](https://github.com/MickLesk) ([#14241](https://github.com/community-scripts/ProxmoxVE/pull/14241))
|
||||
- tools.func: add GitLab release check/fetch/deploy helpers [@MickLesk](https://github.com/MickLesk) ([#14242](https://github.com/community-scripts/ProxmoxVE/pull/14242))
|
||||
|
||||
## 2026-05-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Hortusfox: fix update issues [@tomfrenzel](https://github.com/tomfrenzel) ([#14214](https://github.com/community-scripts/ProxmoxVE/pull/14214))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Refactor: PeaNUT for v6 [@MickLesk](https://github.com/MickLesk) ([#14224](https://github.com/community-scripts/ProxmoxVE/pull/14224))
|
||||
- pangolin: pin version, drop manual SQL, use upstream migrator [@MickLesk](https://github.com/MickLesk) ([#14223](https://github.com/community-scripts/ProxmoxVE/pull/14223))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix validate_bridge function [@MichaelOultram](https://github.com/MichaelOultram) ([#14206](https://github.com/community-scripts/ProxmoxVE/pull/14206))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- pve/pbs scripts: guard sed against missing /etc/apt/sources.list [@MickLesk](https://github.com/MickLesk) ([#14222](https://github.com/community-scripts/ProxmoxVE/pull/14222))
|
||||
|
||||
## 2026-05-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
529
CHANGELOG.md
529
CHANGELOG.md
@@ -44,6 +44,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -60,7 +66,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>May (2 entries)</h4></summary>
|
||||
<summary><h4>May (16 entries)</h4></summary>
|
||||
|
||||
[View May 2026 Changelog](.github/changelogs/2026/05.md)
|
||||
|
||||
@@ -458,6 +464,256 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-05-19
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- LobeHub ([#14441](https://github.com/community-scripts/ProxmoxVE/pull/14441))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Update nodejs Versions [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14582](https://github.com/community-scripts/ProxmoxVE/pull/14582))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- ReactiveResume: set correct WorkingDirectory for systemd service [@MickLesk](https://github.com/MickLesk) ([#14579](https://github.com/community-scripts/ProxmoxVE/pull/14579))
|
||||
- Sparkyfitness: add missing nginx template variable substitutions [@MickLesk](https://github.com/MickLesk) ([#14578](https://github.com/community-scripts/ProxmoxVE/pull/14578))
|
||||
- Wanderer: include dev dependencies during build [@MickLesk](https://github.com/MickLesk) ([#14577](https://github.com/community-scripts/ProxmoxVE/pull/14577))
|
||||
- Whisparr: switch from nightly to stable GitHub release [@MickLesk](https://github.com/MickLesk) ([#14581](https://github.com/community-scripts/ProxmoxVE/pull/14581))
|
||||
|
||||
## 2026-05-18
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- ESPconnect ([#14444](https://github.com/community-scripts/ProxmoxVE/pull/14444))
|
||||
- degoog ([#14533](https://github.com/community-scripts/ProxmoxVE/pull/14533))
|
||||
- Webtrees ([#14532](https://github.com/community-scripts/ProxmoxVE/pull/14532))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Bichon: Support v1 migration [@tomfrenzel](https://github.com/tomfrenzel) ([#14524](https://github.com/community-scripts/ProxmoxVE/pull/14524))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Pangolin: bump to 1.18.4, fix missing statusHistory migration [@MickLesk](https://github.com/MickLesk) ([#14566](https://github.com/community-scripts/ProxmoxVE/pull/14566))
|
||||
|
||||
## 2026-05-17
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- dashy: fix yarn-missing on update and back up full user-data [@lissy93](https://github.com/lissy93) ([#14548](https://github.com/community-scripts/ProxmoxVE/pull/14548))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: replace max-time with speed-limit stall detection in curl_download [@MickLesk](https://github.com/MickLesk) ([#14545](https://github.com/community-scripts/ProxmoxVE/pull/14545))
|
||||
|
||||
## 2026-05-16
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Homelable: replace passlib with bcrypt for password hashing [@MickLesk](https://github.com/MickLesk) ([#14530](https://github.com/community-scripts/ProxmoxVE/pull/14530))
|
||||
- dashy: fix: restore [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14527](https://github.com/community-scripts/ProxmoxVE/pull/14527))
|
||||
- Update Tinyauth source URL in installation script [@MehrunesSky](https://github.com/MehrunesSky) ([#14483](https://github.com/community-scripts/ProxmoxVE/pull/14483))
|
||||
- Excalidraw: Fix build [@tremor021](https://github.com/tremor021) ([#14509](https://github.com/community-scripts/ProxmoxVE/pull/14509))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Update authentik version to 2026.2.3 [@thieneret](https://github.com/thieneret) ([#14517](https://github.com/community-scripts/ProxmoxVE/pull/14517))
|
||||
|
||||
## 2026-05-15
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- OPNsense: replace undefined msg_warn with inline echo in alloc retry [@MickLesk](https://github.com/MickLesk) ([#14500](https://github.com/community-scripts/ProxmoxVE/pull/14500))
|
||||
- Checkmk: detect OMD version suffix dynamically on update [@MickLesk](https://github.com/MickLesk) ([#14496](https://github.com/community-scripts/ProxmoxVE/pull/14496))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- SearXNG: enable JSON format by default for API integrations [@MickLesk](https://github.com/MickLesk) ([#14498](https://github.com/community-scripts/ProxmoxVE/pull/14498))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Ollama use tools.func [@MickLesk](https://github.com/MickLesk) ([#14501](https://github.com/community-scripts/ProxmoxVE/pull/14501))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fall back to silent mode when no TTY or whiptail unavailable [@MickLesk](https://github.com/MickLesk) ([#14497](https://github.com/community-scripts/ProxmoxVE/pull/14497))
|
||||
|
||||
## 2026-05-14
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- CLIProxyAPI ([#14443](https://github.com/community-scripts/ProxmoxVE/pull/14443))
|
||||
|
||||
## 2026-05-13
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix: Broken Manifold update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14468](https://github.com/community-scripts/ProxmoxVE/pull/14468))
|
||||
- SoulSync: Fix update function [@tremor021](https://github.com/tremor021) ([#14465](https://github.com/community-scripts/ProxmoxVE/pull/14465))
|
||||
- Reactive-Resume: fix PDF generation timeout in LXC containers [@MickLesk](https://github.com/MickLesk) ([#14416](https://github.com/community-scripts/ProxmoxVE/pull/14416))
|
||||
- (calibre-web) Add --no-sandbox for PDF conversion [@jamesmyatt](https://github.com/jamesmyatt) ([#14461](https://github.com/community-scripts/ProxmoxVE/pull/14461))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: encode GitHub tag, refine pin logic, add Codeberg [@MickLesk](https://github.com/MickLesk) ([#14473](https://github.com/community-scripts/ProxmoxVE/pull/14473))
|
||||
|
||||
## 2026-05-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- DocuSeal ([#14445](https://github.com/community-scripts/ProxmoxVE/pull/14445))
|
||||
- Authentik ([#14440](https://github.com/community-scripts/ProxmoxVE/pull/14440))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Save Omada version [@lucacome](https://github.com/lucacome) ([#14433](https://github.com/community-scripts/ProxmoxVE/pull/14433))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- OpenCloud: bump version to 6.2.0 [@vhsdream](https://github.com/vhsdream) ([#14451](https://github.com/community-scripts/ProxmoxVE/pull/14451))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- misc: bump node versions [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14447](https://github.com/community-scripts/ProxmoxVE/pull/14447))
|
||||
|
||||
## 2026-05-11
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Lychee ([#14424](https://github.com/community-scripts/ProxmoxVE/pull/14424))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Termix: fix nginx pid path and log paths on update (#) [@MickLesk](https://github.com/MickLesk) ([#14419](https://github.com/community-scripts/ProxmoxVE/pull/14419))
|
||||
- Nginxproxymanager: restore NPM nginx.conf after OpenResty rebuid [@MickLesk](https://github.com/MickLesk) ([#14421](https://github.com/community-scripts/ProxmoxVE/pull/14421))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- InvestBrain: add commented reverse proxy config hints to .env [@MickLesk](https://github.com/MickLesk) ([#14422](https://github.com/community-scripts/ProxmoxVE/pull/14422))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Cronmaster: fix unexpected EOF in update_cronmaster script [@MickLesk](https://github.com/MickLesk) ([#14420](https://github.com/community-scripts/ProxmoxVE/pull/14420))
|
||||
|
||||
## 2026-05-10
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Save Beszel version [@lucacome](https://github.com/lucacome) ([#14389](https://github.com/community-scripts/ProxmoxVE/pull/14389))
|
||||
- karakeep: Fix SERVER_VERSION update [@MickLesk](https://github.com/MickLesk) ([#14378](https://github.com/community-scripts/ProxmoxVE/pull/14378))
|
||||
- inspIRCd: Fix service not autostarting [@tremor021](https://github.com/tremor021) ([#14368](https://github.com/community-scripts/ProxmoxVE/pull/14368))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- refactor: webcheck [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14391](https://github.com/community-scripts/ProxmoxVE/pull/14391))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools.func]: Pin `pnpm` version [@tremor021](https://github.com/tremor021) ([#14386](https://github.com/community-scripts/ProxmoxVE/pull/14386))
|
||||
|
||||
## 2026-05-09
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- FlowiseAI: Migrate to pnpm [@MickLesk](https://github.com/MickLesk) ([#14344](https://github.com/community-scripts/ProxmoxVE/pull/14344))
|
||||
- Purge openresty [@lucacome](https://github.com/lucacome) ([#14353](https://github.com/community-scripts/ProxmoxVE/pull/14353))
|
||||
- Check for release for Sonarr [@lucacome](https://github.com/lucacome) ([#14354](https://github.com/community-scripts/ProxmoxVE/pull/14354))
|
||||
- fix(termix-install.sh): add tmpfiles.d persistence and systemd PIDFile path [@runnylogan](https://github.com/runnylogan) ([#14350](https://github.com/community-scripts/ProxmoxVE/pull/14350))
|
||||
- ERPNext: start bench Redis services before bench new-site [@MickLesk](https://github.com/MickLesk) ([#14343](https://github.com/community-scripts/ProxmoxVE/pull/14343))
|
||||
- [Hotfix]Jotty: use absolute path when creating data dir [@vhsdream](https://github.com/vhsdream) ([#14355](https://github.com/community-scripts/ProxmoxVE/pull/14355))
|
||||
|
||||
## 2026-05-08
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- wishlist: pin pnpm to v10 to match engine requirements [@MickLesk](https://github.com/MickLesk) ([#14342](https://github.com/community-scripts/ProxmoxVE/pull/14342))
|
||||
- [pelican] fix env copy regression [@LetterN](https://github.com/LetterN) ([#14328](https://github.com/community-scripts/ProxmoxVE/pull/14328))
|
||||
- fix(homepage): fix ERR_PNPM_IGNORED_BUILDS error [@Sergih28](https://github.com/Sergih28) ([#14315](https://github.com/community-scripts/ProxmoxVE/pull/14315))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add setup_nltk as new function [@MickLesk](https://github.com/MickLesk) ([#14314](https://github.com/community-scripts/ProxmoxVE/pull/14314))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: fix meilisearch import-dump background process handling [@MickLesk](https://github.com/MickLesk) ([#14341](https://github.com/community-scripts/ProxmoxVE/pull/14341))
|
||||
|
||||
## 2026-05-07
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- termix: create /tmp/nginx before nginx -t [@MickLesk](https://github.com/MickLesk) ([#14312](https://github.com/community-scripts/ProxmoxVE/pull/14312))
|
||||
- The Lounge: Fix service not starting automaticaly [@tremor021](https://github.com/tremor021) ([#14311](https://github.com/community-scripts/ProxmoxVE/pull/14311))
|
||||
- netbird-lxc: fix installation check [@MickLesk](https://github.com/MickLesk) ([#14309](https://github.com/community-scripts/ProxmoxVE/pull/14309))
|
||||
- databasus: Backup and secure configuration file [@MickLesk](https://github.com/MickLesk) ([#14308](https://github.com/community-scripts/ProxmoxVE/pull/14308))
|
||||
- vm: update disk image URL for Ubuntu 25.04 [@MickLesk](https://github.com/MickLesk) ([#14290](https://github.com/community-scripts/ProxmoxVE/pull/14290))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- pangolin: bump version to 1.18.3 [@MickLesk](https://github.com/MickLesk) ([#14297](https://github.com/community-scripts/ProxmoxVE/pull/14297))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove: LiteLLM [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14294](https://github.com/community-scripts/ProxmoxVE/pull/14294))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- update-apps: some improvements [@MickLesk](https://github.com/MickLesk) ([#14275](https://github.com/community-scripts/ProxmoxVE/pull/14275))
|
||||
|
||||
## 2026-05-06
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Hoodik ([#14279](https://github.com/community-scripts/ProxmoxVE/pull/14279))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Pelican-Panel: create backup subdirectory before copying storage [@MickLesk](https://github.com/MickLesk) ([#14274](https://github.com/community-scripts/ProxmoxVE/pull/14274))
|
||||
- Rustdeskserver: remove redundant else with undefined RELEASE var [@MickLesk](https://github.com/MickLesk) ([#14272](https://github.com/community-scripts/ProxmoxVE/pull/14272))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- AdguardHome-Sync replace ifconfig with hostname -I for IP detection [@MickLesk](https://github.com/MickLesk) ([#14273](https://github.com/community-scripts/ProxmoxVE/pull/14273))
|
||||
|
||||
## 2026-05-05
|
||||
|
||||
### 🆕 New Scripts
|
||||
@@ -847,273 +1103,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: fix some pct create issues (telemetry) + cleanup [@MickLesk](https://github.com/MickLesk) ([#13810](https://github.com/community-scripts/ProxmoxVE/pull/13810))
|
||||
|
||||
## 2026-04-16
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Add pnpm as a dependency to ghost-cli install [@YourFavoriteKyle](https://github.com/YourFavoriteKyle) ([#13789](https://github.com/community-scripts/ProxmoxVE/pull/13789))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: wire ENABLE_MKNOD and ALLOW_MOUNT_FS into LXC features [@MickLesk](https://github.com/MickLesk) ([#13796](https://github.com/community-scripts/ProxmoxVE/pull/13796))
|
||||
|
||||
## 2026-04-15
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- iGotify ([#13773](https://github.com/community-scripts/ProxmoxVE/pull/13773))
|
||||
- GitHub-Runner ([#13709](https://github.com/community-scripts/ProxmoxVE/pull/13709))
|
||||
- Revert "Remove low-install-count CT scripts and installers (#13570)" [@CrazyWolf13](https://github.com/CrazyWolf13) ([#13752](https://github.com/community-scripts/ProxmoxVE/pull/13752))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [alpine-nextcloud] Update Nginx MIME types to support .mjs files [@GuiltyFox](https://github.com/GuiltyFox) ([#13771](https://github.com/community-scripts/ProxmoxVE/pull/13771))
|
||||
- Domain Monitor: Fix file ownership after update [@tremor021](https://github.com/tremor021) ([#13759](https://github.com/community-scripts/ProxmoxVE/pull/13759))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Reitti: refactor scripts for v4 - remove RabbitMQ and Photon [@MickLesk](https://github.com/MickLesk) ([#13728](https://github.com/community-scripts/ProxmoxVE/pull/13728))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Semaphore: add BoltDB to SQLite migration [@tremor021](https://github.com/tremor021) ([#13779](https://github.com/community-scripts/ProxmoxVE/pull/13779))
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- cleanup: remove docs/, update README & CONTRIBUTING, fix repo config [@MickLesk](https://github.com/MickLesk) ([#13770](https://github.com/community-scripts/ProxmoxVE/pull/13770))
|
||||
|
||||
## 2026-04-14
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Immich: Pin photo-processing library revisions [@vhsdream](https://github.com/vhsdream) ([#13748](https://github.com/community-scripts/ProxmoxVE/pull/13748))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- BentoPDF: Nginx fixes [@tremor021](https://github.com/tremor021) ([#13741](https://github.com/community-scripts/ProxmoxVE/pull/13741))
|
||||
- Zerobyte: add git to dependencies to fix bun install failure [@Copilot](https://github.com/Copilot) ([#13721](https://github.com/community-scripts/ProxmoxVE/pull/13721))
|
||||
- alpine-nextcloud-install: do not use deprecated nginx config [@AlexanderStein](https://github.com/AlexanderStein) ([#13726](https://github.com/community-scripts/ProxmoxVE/pull/13726))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Mealie: support v3.15+ Nuxt 4 migration [@MickLesk](https://github.com/MickLesk) ([#13731](https://github.com/community-scripts/ProxmoxVE/pull/13731))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Lyrion: correct service name and version file in update script [@MickLesk](https://github.com/MickLesk) ([#13734](https://github.com/community-scripts/ProxmoxVE/pull/13734))
|
||||
- Changedetection: move env vars from service file to .env [@tremor021](https://github.com/tremor021) ([#13732](https://github.com/community-scripts/ProxmoxVE/pull/13732))
|
||||
|
||||
## 2026-04-13
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Slskd: Remove stale Soularr lock file on startup and redirect logs to stderr [@MickLesk](https://github.com/MickLesk) ([#13669](https://github.com/community-scripts/ProxmoxVE/pull/13669))
|
||||
- Bambuddy: preserve database and archive on update [@Copilot](https://github.com/Copilot) ([#13706](https://github.com/community-scripts/ProxmoxVE/pull/13706))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Immich: Pin version to 2.7.5 [@vhsdream](https://github.com/vhsdream) ([#13715](https://github.com/community-scripts/ProxmoxVE/pull/13715))
|
||||
- Bytestash: auto backup/restore data on update [@MickLesk](https://github.com/MickLesk) ([#13707](https://github.com/community-scripts/ProxmoxVE/pull/13707))
|
||||
- OpenCloud: pin version to 6.0.0 [@vhsdream](https://github.com/vhsdream) ([#13691](https://github.com/community-scripts/ProxmoxVE/pull/13691))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Mealie: pin version to v3.14.0 in install and update scripts [@Copilot](https://github.com/Copilot) ([#13724](https://github.com/community-scripts/ProxmoxVE/pull/13724))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: remove unused TEMP_DIR mktemp leak in build_container / clean sonarqube [@MickLesk](https://github.com/MickLesk) ([#13708](https://github.com/community-scripts/ProxmoxVE/pull/13708))
|
||||
|
||||
## 2026-04-12
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Alpine-Wakapi: Remove container checks in update_script function [@MickLesk](https://github.com/MickLesk) ([#13694](https://github.com/community-scripts/ProxmoxVE/pull/13694))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- IronClaw: Install keychain dependencies and launch in a DBus session [@MickLesk](https://github.com/MickLesk) ([#13692](https://github.com/community-scripts/ProxmoxVE/pull/13692))
|
||||
- MeTube: Allow pnpm build scripts to fix ERR_PNPM_IGNORED_BUILDS [@MickLesk](https://github.com/MickLesk) ([#13668](https://github.com/community-scripts/ProxmoxVE/pull/13668))
|
||||
|
||||
## 2026-04-11
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Ensure newline before appending IMMICH_HELMET_FILE to .env [@MickLesk](https://github.com/MickLesk) ([#13667](https://github.com/community-scripts/ProxmoxVE/pull/13667))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- BentoPDF: replace http-server with nginx to fix WASM initialization timeout [@MickLesk](https://github.com/MickLesk) ([#13625](https://github.com/community-scripts/ProxmoxVE/pull/13625))
|
||||
- Element Synapse: Add MatrixRTC configuration for Element Call support [@MickLesk](https://github.com/MickLesk) ([#13665](https://github.com/community-scripts/ProxmoxVE/pull/13665))
|
||||
- RomM: Use ROMM_BASE_PATH from .env for symlinks and nginx config [@MickLesk](https://github.com/MickLesk) ([#13666](https://github.com/community-scripts/ProxmoxVE/pull/13666))
|
||||
- Immich: Pin version to 2.7.4 [@vhsdream](https://github.com/vhsdream) ([#13661](https://github.com/community-scripts/ProxmoxVE/pull/13661))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Crafty Controller: Wait for credentials file instead of fixed sleep [@MickLesk](https://github.com/MickLesk) ([#13670](https://github.com/community-scripts/ProxmoxVE/pull/13670))
|
||||
- Refactor: Alpine-Wakapi [@tremor021](https://github.com/tremor021) ([#13656](https://github.com/community-scripts/ProxmoxVE/pull/13656))
|
||||
|
||||
## 2026-04-10
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: ensure trailing newline in redis.conf before appending bind directive [@Copilot](https://github.com/Copilot) ([#13647](https://github.com/community-scripts/ProxmoxVE/pull/13647))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Immich: Pin version to 2.7.3 [@vhsdream](https://github.com/vhsdream) ([#13631](https://github.com/community-scripts/ProxmoxVE/pull/13631))
|
||||
- Homarr: bind Redis to localhost only [@MickLesk](https://github.com/MickLesk) ([#13552](https://github.com/community-scripts/ProxmoxVE/pull/13552))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: prevent script crash when entering GitHub token after rate limit [@MickLesk](https://github.com/MickLesk) ([#13638](https://github.com/community-scripts/ProxmoxVE/pull/13638))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- addons: Filebrowser & Filebrowser-Quantum get warning if host install [@MickLesk](https://github.com/MickLesk) ([#13639](https://github.com/community-scripts/ProxmoxVE/pull/13639))
|
||||
|
||||
## 2026-04-09
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- boostack: add: git [@CrazyWolf13](https://github.com/CrazyWolf13) ([#13620](https://github.com/community-scripts/ProxmoxVE/pull/13620))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Update OPNsense version from 25.7 to 26.1 [@tdn131](https://github.com/tdn131) ([#13626](https://github.com/community-scripts/ProxmoxVE/pull/13626))
|
||||
- CheckMK: Bump Default OS to 13 (trixie) + dynamic codename + fix RELEASE-Tag Fetching [@MickLesk](https://github.com/MickLesk) ([#13610](https://github.com/community-scripts/ProxmoxVE/pull/13610))
|
||||
|
||||
## 2026-04-08
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- IronClaw | Alpine-IronClaw ([#13591](https://github.com/community-scripts/ProxmoxVE/pull/13591))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- immich: disable upgrade-insecure-requests CSP directive [@MickLesk](https://github.com/MickLesk) ([#13600](https://github.com/community-scripts/ProxmoxVE/pull/13600))
|
||||
- Immich: v2.7.2 [@vhsdream](https://github.com/vhsdream) ([#13579](https://github.com/community-scripts/ProxmoxVE/pull/13579))
|
||||
- Update flaresolverr-install.sh [@maztheman](https://github.com/maztheman) ([#13584](https://github.com/community-scripts/ProxmoxVE/pull/13584))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- bambuddy: add mkdir before data restore & add ffmpeg dependency [@MickLesk](https://github.com/MickLesk) ([#13601](https://github.com/community-scripts/ProxmoxVE/pull/13601))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- feat: update UHF Server script to use setup_ffmpeg [@zackwithak13](https://github.com/zackwithak13) ([#13564](https://github.com/community-scripts/ProxmoxVE/pull/13564))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add script page badges to descriptions | change donate URL [@MickLesk](https://github.com/MickLesk) ([#13596](https://github.com/community-scripts/ProxmoxVE/pull/13596))
|
||||
|
||||
## 2026-04-07
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove low-install-count CT scripts and installers [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#13570](https://github.com/community-scripts/ProxmoxVE/pull/13570))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: improve resilience for top Proxmox error codes (209, 215, 118, 206) [@MickLesk](https://github.com/MickLesk) ([#13575](https://github.com/community-scripts/ProxmoxVE/pull/13575))
|
||||
|
||||
## 2026-04-06
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- OpenThread Border Router ([#13536](https://github.com/community-scripts/ProxmoxVE/pull/13536))
|
||||
- Homelable ([#13539](https://github.com/community-scripts/ProxmoxVE/pull/13539))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Papra: check env before copy [@MickLesk](https://github.com/MickLesk) ([#13553](https://github.com/community-scripts/ProxmoxVE/pull/13553))
|
||||
- changedetection: fix: typing_extensions error [@CrazyWolf13](https://github.com/CrazyWolf13) ([#13548](https://github.com/community-scripts/ProxmoxVE/pull/13548))
|
||||
- kasm: fix: fetch latest version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#13547](https://github.com/community-scripts/ProxmoxVE/pull/13547))
|
||||
|
||||
## 2026-04-05
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Grist: remove install:ee step (private repo, not needed for grist-core) [@MickLesk](https://github.com/MickLesk) ([#13526](https://github.com/community-scripts/ProxmoxVE/pull/13526))
|
||||
- Nginx Proxy Manager: ensure /tmp/nginx/body exists via openresty service [@MickLesk](https://github.com/MickLesk) ([#13528](https://github.com/community-scripts/ProxmoxVE/pull/13528))
|
||||
- MotionEye: run as root to enable SMB share support [@MickLesk](https://github.com/MickLesk) ([#13527](https://github.com/community-scripts/ProxmoxVE/pull/13527))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: silent() function - use return instead of exit to allow || true error handling [@MickLesk](https://github.com/MickLesk) ([#13529](https://github.com/community-scripts/ProxmoxVE/pull/13529))
|
||||
|
||||
## 2026-04-04
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- komodo: set `PERIPHERY_CORE_PUBLIC_KEYS` to default value if absent [@4ndv](https://github.com/4ndv) ([#13519](https://github.com/community-scripts/ProxmoxVE/pull/13519))
|
||||
|
||||
## 2026-04-03
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- netboot.xyz ([#13480](https://github.com/community-scripts/ProxmoxVE/pull/13480))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- OpenWRT-VM: use poweroff instead of halt to properly stop VM [@MickLesk](https://github.com/MickLesk) ([#13504](https://github.com/community-scripts/ProxmoxVE/pull/13504))
|
||||
- NginxProxyManager: fix openresty restart by setting user root before reload [@MickLesk](https://github.com/MickLesk) ([#13500](https://github.com/community-scripts/ProxmoxVE/pull/13500))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Crafty Controller: add Java 25 for Minecraft 1.26.1+ [@MickLesk](https://github.com/MickLesk) ([#13502](https://github.com/community-scripts/ProxmoxVE/pull/13502))
|
||||
- Wealthfolio: update to v3.2.1 and Node.js 24 [@afadil](https://github.com/afadil) ([#13486](https://github.com/community-scripts/ProxmoxVE/pull/13486))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core.func: prevent profile.d scripts from aborting on non-zero exit [@MickLesk](https://github.com/MickLesk) ([#13503](https://github.com/community-scripts/ProxmoxVE/pull/13503))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- APT Proxy: Support full URLs (http/https with custom ports) [@MickLesk](https://github.com/MickLesk) ([#13474](https://github.com/community-scripts/ProxmoxVE/pull/13474))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- PVE LXC-Updater: pipe apt list through cat to prevent pager hang [@MickLesk](https://github.com/MickLesk) ([#13501](https://github.com/community-scripts/ProxmoxVE/pull/13501))
|
||||
- core: fix some pct create issues (telemetry) + cleanup [@MickLesk](https://github.com/MickLesk) ([#13810](https://github.com/community-scripts/ProxmoxVE/pull/13810))
|
||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/steveiliop56/tinyauth
|
||||
# Source: https://github.com/tinyauthapp/tinyauth
|
||||
|
||||
APP="Alpine-Tinyauth"
|
||||
var_tags="${var_tags:-alpine;auth}"
|
||||
@@ -29,7 +29,7 @@ function update_script() {
|
||||
$STD apk -U upgrade
|
||||
msg_ok "Updated packages"
|
||||
|
||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE=$(curl -s https://api.github.com/repos/tinyauthapp/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [ "${RELEASE}" != "$(cat ~/.tinyauth 2>/dev/null)" ] || [ ! -f ~/.tinyauth ]; then
|
||||
msg_info "Stopping Service"
|
||||
$STD service tinyauth stop
|
||||
@@ -51,7 +51,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Tinyauth"
|
||||
rm -f /opt/tinyauth/tinyauth
|
||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
||||
curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
||||
chmod +x /opt/tinyauth/tinyauth
|
||||
echo "${RELEASE}" >~/.tinyauth
|
||||
msg_ok "Updated Tinyauth"
|
||||
|
||||
@@ -89,7 +89,7 @@ function update_script() {
|
||||
# Auth JDBC follows server version
|
||||
msg_info "Updating Guacamole Auth JDBC"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-jdbc-mysql-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-jdbc-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-jdbc.tar.gz"
|
||||
curl_download "/tmp/guacamole-auth-jdbc.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-jdbc-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-jdbc.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-jdbc-"${LATEST_SERVER}"/mysql/guacamole-auth-jdbc-mysql-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
echo "${LATEST_SERVER}" >~/.guacamole_auth_jdbc
|
||||
@@ -101,7 +101,7 @@ function update_script() {
|
||||
# Update Guacamole Client
|
||||
if [[ "$CURRENT_CLIENT" != "$LATEST_CLIENT" ]]; then
|
||||
msg_info "Updating Guacamole Client (${CURRENT_CLIENT} → ${LATEST_CLIENT})"
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_CLIENT}/binary/guacamole-${LATEST_CLIENT}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
curl_download "/opt/apache-guacamole/tomcat9/webapps/guacamole.war" "https://downloads.apache.org/guacamole/${LATEST_CLIENT}/binary/guacamole-${LATEST_CLIENT}.war"
|
||||
echo "${LATEST_CLIENT}" >~/.guacamole_client
|
||||
msg_ok "Updated Guacamole Client"
|
||||
else
|
||||
@@ -111,7 +111,7 @@ function update_script() {
|
||||
# Update MySQL Connector
|
||||
if [[ "$CURRENT_MYSQL_CONNECTOR" != "$LATEST_MYSQL_CONNECTOR" ]]; then
|
||||
msg_info "Updating MySQL Connector (${CURRENT_MYSQL_CONNECTOR} → ${LATEST_MYSQL_CONNECTOR})"
|
||||
curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${LATEST_MYSQL_CONNECTOR}/mysql-connector-j-${LATEST_MYSQL_CONNECTOR}.jar" -o "/etc/guacamole/lib/mysql-connector-j.jar"
|
||||
curl_download "/etc/guacamole/lib/mysql-connector-j.jar" "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${LATEST_MYSQL_CONNECTOR}/mysql-connector-j-${LATEST_MYSQL_CONNECTOR}.jar"
|
||||
echo "${LATEST_MYSQL_CONNECTOR}" >~/.guacamole_mysql_connector
|
||||
msg_ok "Updated MySQL Connector"
|
||||
else
|
||||
@@ -148,7 +148,7 @@ function update_script() {
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar ]]; then
|
||||
msg_info "Updating TOTP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-totp.tar.gz"
|
||||
curl_download "/tmp/guacamole-auth-totp.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-totp.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-totp-"${LATEST_SERVER}"/guacamole-auth-totp-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-totp-"${LATEST_SERVER}".jar
|
||||
@@ -160,7 +160,7 @@ function update_script() {
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar ]]; then
|
||||
msg_info "Updating DUO Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-duo.tar.gz"
|
||||
curl_download "/tmp/guacamole-auth-duo.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-duo.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-duo-"${LATEST_SERVER}"/guacamole-auth-duo-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-duo-"${LATEST_SERVER}".jar
|
||||
@@ -172,7 +172,7 @@ function update_script() {
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar ]]; then
|
||||
msg_info "Updating LDAP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-ldap.tar.gz"
|
||||
curl_download "/tmp/guacamole-auth-ldap.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-ldap.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-ldap-"${LATEST_SERVER}"/guacamole-auth-ldap-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-ldap-"${LATEST_SERVER}".jar
|
||||
@@ -184,7 +184,7 @@ function update_script() {
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar ]]; then
|
||||
msg_info "Updating Quick Connect Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-quickconnect.tar.gz"
|
||||
curl_download "/tmp/guacamole-auth-quickconnect.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-auth-quickconnect.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-auth-quickconnect-"${LATEST_SERVER}"/guacamole-auth-quickconnect-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-auth-quickconnect-"${LATEST_SERVER}".jar
|
||||
@@ -196,7 +196,7 @@ function update_script() {
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar ]]; then
|
||||
msg_info "Updating History Recording Storage Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-history-recording-storage.tar.gz"
|
||||
curl_download "/tmp/guacamole-history-recording-storage.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz"
|
||||
$STD tar -xf /tmp/guacamole-history-recording-storage.tar.gz -C /tmp
|
||||
mv /tmp/guacamole-history-recording-storage-"${LATEST_SERVER}"/guacamole-history-recording-storage-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
|
||||
chmod 664 /etc/guacamole/extensions/guacamole-history-recording-storage-"${LATEST_SERVER}".jar
|
||||
|
||||
155
ct/authentik.sh
Normal file
155
ct/authentik.sh
Normal file
@@ -0,0 +1,155 @@
|
||||
#!/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: Thieneret
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/goauthentik/authentik
|
||||
|
||||
APP="authentik"
|
||||
var_tags="${var_tags:-auth}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/authentik ]]; then
|
||||
msg_error "No authentik Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_go
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.3" setup_uv
|
||||
setup_rust
|
||||
|
||||
AUTHENTIK_VERSION="version/2026.2.3"
|
||||
XMLSEC_VERSION="1.3.11"
|
||||
|
||||
if check_for_gh_release "geoipupdate" "maxmind/geoipupdate"; then
|
||||
fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "xmlsec" "lsh123/xmlsec" "${XMLSEC_VERSION}"; then
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "xmlsec" "lsh123/xmlsec" "tarball" "${XMLSEC_VERSION}" "/opt/xmlsec"
|
||||
|
||||
msg_info "Updating xmlsec"
|
||||
cd /opt/xmlsec
|
||||
$STD ./autogen.sh
|
||||
$STD make -j $(nproc)
|
||||
$STD make check
|
||||
$STD make install
|
||||
$STD ldconfig
|
||||
msg_ok "Updated xmlsec"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop authentik-server authentik-worker
|
||||
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
|
||||
systemctl stop authentik-ldap
|
||||
fi
|
||||
if [[ $(systemctl is-active authentik-rac) == active ]]; then
|
||||
systemctl stop authentik-rac
|
||||
fi
|
||||
if [[ $(systemctl is-active authentik-radius) == active ]]; then
|
||||
systemctl stop authentik-radius
|
||||
fi
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
||||
|
||||
msg_info "Updating web"
|
||||
cd /opt/authentik/web
|
||||
export NODE_ENV="production"
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
$STD npm run build:sfe
|
||||
msg_ok "Updated web"
|
||||
|
||||
msg_info "Updating go proxy"
|
||||
cd /opt/authentik
|
||||
export CGO_ENABLED="1"
|
||||
$STD go mod download
|
||||
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
||||
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
||||
$STD go build -o /opt/authentik/rac ./cmd/rac
|
||||
$STD go build -o /opt/authentik/radius ./cmd/radius
|
||||
msg_ok "Updated go proxy"
|
||||
|
||||
msg_info "Updating python server"
|
||||
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export RUSTUP_PERMIT_COPY_RENAME="true"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
chown -R authentik:authentik /opt/authentik
|
||||
msg_ok "Updated python server"
|
||||
fi
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start authentik-server authentik-worker
|
||||
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
|
||||
systemctl start authentik-ldap
|
||||
fi
|
||||
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
|
||||
systemctl start authentik-rac
|
||||
fi
|
||||
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
|
||||
systemctl start authentik-radius
|
||||
fi
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
|
||||
msg_info "Attaching data storage volume"
|
||||
$STD pct stop "$CTID"
|
||||
if [ "${PROTECT_CT:-}" == "1" ] || [ "${PROTECT_CT:-}" == "yes" ]; then
|
||||
$STD pct set "$CTID" --protection 0
|
||||
$STD pct set "$CTID" -mp0 "${CONTAINER_STORAGE}":1,mp=/opt/authentik-data,backup=1
|
||||
$STD pct set "$CTID" --protection 1
|
||||
else
|
||||
$STD pct set "$CTID" -mp0 "${CONTAINER_STORAGE}":1,mp=/opt/authentik-data,backup=1
|
||||
fi
|
||||
$STD pct start "$CTID"
|
||||
for i in {1..10}; do
|
||||
pct status "$CTID" | grep -q "status: running" && break
|
||||
sleep 1
|
||||
done
|
||||
$STD pct exec "$CTID" -- bash -c "mkdir -p /opt/authentik-data/{certs,media,geoip,templates}; \
|
||||
cp /opt/authentik/tests/GeoLite2-ASN-Test.mmdb /opt/authentik-data/geoip/GeoLite2-ASN.mmdb; \
|
||||
cp /opt/authentik/tests/GeoLite2-City-Test.mmdb /opt/authentik-data/geoip/GeoLite2-City.mmdb; \
|
||||
chown authentik:authentik /opt/authentik-data; \
|
||||
chown -R authentik:authentik /opt/authentik-data/{certs,media,geoip,templates}"
|
||||
msg_ok "Attached data storage volume"
|
||||
|
||||
msg_info "Starting Services"
|
||||
pct exec "$CTID" -- systemctl enable -q --now authentik-server authentik-worker
|
||||
msg_ok "Started Services"
|
||||
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Initial setup URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000/if/flow/initial-setup/${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
||||
@@ -36,7 +36,9 @@ function update_script() {
|
||||
msg_info "Updating Beszel"
|
||||
$STD /opt/beszel/beszel update
|
||||
sleep 2 && chmod +x /opt/beszel/beszel
|
||||
msg_ok "Updated Beszel"
|
||||
VERSION=$(/opt/beszel/beszel -v | awk '{print $3}')
|
||||
echo "${VERSION}" >$HOME/.beszel
|
||||
msg_ok "Updated Beszel to ${VERSION}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start beszel-hub
|
||||
|
||||
80
ct/bichon.sh
80
ct/bichon.sh
@@ -28,15 +28,95 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
CURRENT_VERSION="unknown"
|
||||
if [[ -f /root/.bichon ]]; then
|
||||
CURRENT_VERSION=$(cat /root/.bichon)
|
||||
fi
|
||||
|
||||
MIGRATE_V1=0
|
||||
if [[ "$CURRENT_VERSION" == 0.* ]]; then
|
||||
MIGRATE_V1=1
|
||||
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt 50 ]; then
|
||||
echo -e "\n${RD}Warning: Less than 50% free storage remaining on the root disk.${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration temporarily duplicates data and requires free space for it.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed
|
||||
if [[ ! "$proceed" =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
RAM_TOTAL=$(free -m | awk '/^Mem:/{print $2}')
|
||||
if [ "$RAM_TOTAL" -lt 2000 ]; then
|
||||
echo -e "\n${RD}Warning: LXC has less than 2GB of RAM allocated (${RAM_TOTAL}MB).${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration consumes significant memory and may crash if insufficient.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed_ram
|
||||
if [[ ! "$proceed_ram" =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_for_gh_release "bichon" "rustmailer/bichon"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop bichon
|
||||
msg_ok "Stopped service"
|
||||
|
||||
cp /opt/bichon/bichon.env /tmp/bichon.env.backup
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then
|
||||
msg_info "Updating to intermediate version v0.3.7"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
||||
cp /tmp/bichon.env.backup /opt/bichon/bichon.env
|
||||
systemctl start bichon
|
||||
sleep 30
|
||||
systemctl stop bichon
|
||||
msg_ok "Intermediate update completed"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
||||
cp /tmp/bichon.env.backup /opt/bichon/bichon.env
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ]; then
|
||||
msg_info "Running Bichon v1 Data Migration (patience)"
|
||||
$STD apt install -y expect
|
||||
$STD expect <<'EOF'
|
||||
set timeout -1
|
||||
spawn /opt/bichon/bichon-admin
|
||||
expect "*Select an operation*"
|
||||
send "\033\[B\r"
|
||||
expect "*--bichon-root-dir*"
|
||||
send "/opt/bichon-data\r"
|
||||
expect "*--bichon-index-dir*"
|
||||
send "\r"
|
||||
expect "*--bichon-data-dir*"
|
||||
send "\r"
|
||||
expect "*Ready to migrate?*"
|
||||
send "y"
|
||||
expect "*Enter batch size*"
|
||||
send "1000\r"
|
||||
expect eof
|
||||
catch wait
|
||||
EOF
|
||||
$STD apt remove --purge expect -y
|
||||
$STD apt autoremove -y
|
||||
msg_ok "Migration completed"
|
||||
|
||||
msg_info "Cleaning up legacy Bichon v0.x storage files"
|
||||
rm -rf /opt/bichon-data/envelope
|
||||
rm -rf /opt/bichon-data/eml
|
||||
rm -f /opt/bichon-data/mailbox.db
|
||||
rm -f /opt/bichon-data/meta.db
|
||||
msg_ok "Cleanup completed"
|
||||
|
||||
msg_info "Updating Bichon service for v1"
|
||||
sed -i 's|ExecStart=/opt/bichon/bichon|ExecStart=/opt/bichon/bichon-server|g; s|RestartSec=5|RestartSec=5\n\nLimitNOFILE=65536|g' /etc/systemd/system/bichon.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Service updated"
|
||||
fi
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start bichon
|
||||
msg_ok "Service started"
|
||||
|
||||
@@ -33,9 +33,14 @@ function update_script() {
|
||||
msg_info "Updating checkmk"
|
||||
$STD omd stop monitoring
|
||||
$STD omd cp monitoring monitoringbackup
|
||||
curl_with_retry "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-community-${RELEASE}_0.$(get_os_info codename)_amd64.deb" "/opt/checkmk.deb"
|
||||
curl_download "/opt/checkmk.deb" "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-community-${RELEASE}_0.$(get_os_info codename)_amd64.deb"
|
||||
$STD apt install -y /opt/checkmk.deb
|
||||
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
|
||||
OMD_VERSION=$(omd versions 2>/dev/null | grep "^${RELEASE}" | awk '{print $1}')
|
||||
if [[ -z "${OMD_VERSION}" ]]; then
|
||||
msg_error "Could not find installed OMD version for release ${RELEASE}"
|
||||
exit 1
|
||||
fi
|
||||
$STD omd --force -V "${OMD_VERSION}" update --conflict=install monitoring
|
||||
$STD omd start monitoring
|
||||
$STD omd -f rm monitoringbackup
|
||||
$STD omd cleanup
|
||||
|
||||
55
ct/cliproxyapi.sh
Normal file
55
ct/cliproxyapi.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: mathiasnagler
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/router-for-me/CLIProxyAPI
|
||||
|
||||
APP="CLIProxyAPI"
|
||||
var_tags="${var_tags:-ai;proxy}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_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/cliproxyapi ]]; then
|
||||
msg_error "No CLIProxyAPI Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI"; then
|
||||
msg_info "Stopping CLIProxyAPI"
|
||||
systemctl stop cliproxyapi
|
||||
msg_ok "Stopped CLIProxyAPI"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting CLIProxyAPI"
|
||||
systemctl start cliproxyapi
|
||||
msg_ok "Started CLIProxyAPI"
|
||||
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}:8317${CL}"
|
||||
29
ct/dashy.sh
29
ct/dashy.sh
@@ -23,37 +23,34 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/dashy/public/ ]]; then
|
||||
if [[ ! -d /opt/dashy ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
if check_for_gh_release "dashy" "Lissy93/dashy"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop dashy
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up conf.yml"
|
||||
if [[ -f /opt/dashy/public/conf.yml ]]; then
|
||||
cp -R /opt/dashy/public/conf.yml /opt/dashy_conf_backup.yml
|
||||
else
|
||||
cp -R /opt/dashy/user-data/conf.yml /opt/dashy_conf_backup.yml
|
||||
fi
|
||||
msg_ok "Backed up conf.yml"
|
||||
msg_info "Backing up user-data"
|
||||
rm -rf /opt/dashy_user_data_backup
|
||||
cp -r /opt/dashy/user-data /opt/dashy_user_data_backup
|
||||
msg_ok "Backed up user-data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dashy" "Lissy93/dashy" "prebuild" "latest" "/opt/dashy" "dashy-*.tar.gz"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dashy" "lissy93/dashy" "prebuild" "latest" "/opt/dashy" "dashy-*.tar.gz"
|
||||
|
||||
msg_info "Updating Dashy"
|
||||
cd /opt/dashy
|
||||
$STD yarn install --ignore-engines --network-timeout 300000
|
||||
msg_ok "Updated Dashy"
|
||||
|
||||
msg_info "Restoring conf.yml"
|
||||
cp -R /opt/dashy_conf_backup.yml /opt/dashy/user-data
|
||||
msg_ok "Restored conf.yml"
|
||||
|
||||
msg_info "Cleaning"
|
||||
rm -rf /opt/dashy_conf_backup.yml /opt/dashy/public/conf.yml
|
||||
msg_ok "Cleaned"
|
||||
msg_info "Restoring user-data"
|
||||
cp -r /opt/dashy_user_data_backup/. /opt/dashy/user-data/
|
||||
rm -rf /opt/dashy_user_data_backup
|
||||
msg_ok "Restored user-data"
|
||||
|
||||
msg_info "Starting Dashy"
|
||||
systemctl start dashy
|
||||
|
||||
@@ -35,6 +35,8 @@ function update_script() {
|
||||
msg_ok "Stopped Databasus"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
[[ ! -f /.env && -f /opt/databasus/.env ]] && cp /opt/databasus/.env /.env
|
||||
chmod 600 /.env
|
||||
cp /.env /opt/databasus.env.bak
|
||||
chmod 600 /opt/databasus.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
|
||||
@@ -45,12 +45,12 @@ function update_script() {
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dawarich" "Freika/dawarich" "tarball" "latest" "/opt/dawarich/app"
|
||||
|
||||
RUBY_VERSION=$(cat /opt/dawarich/app/.ruby-version 2>/dev/null || echo "3.4.6")
|
||||
RUBY_VERSION=${RUBY_VERSION} RUBY_INSTALL_RAILS="false" setup_ruby
|
||||
RUBY_VERSION=${RUBY_VERSION} RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/dawarich/app
|
||||
source /root/.profile
|
||||
export PATH="/root/.rbenv/shims:/root/.rbenv/bin:$PATH"
|
||||
export PATH="/root/.rbenv/shims:/root/.rbenv/bin:${PATH}"
|
||||
eval "$(/root/.rbenv/bin/rbenv init - bash)"
|
||||
|
||||
if ! grep -q "OTP_ENCRYPTION_PRIMARY_KEY" /opt/dawarich/.env; then
|
||||
|
||||
73
ct/degoog.sh
Normal file
73
ct/degoog.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/fccview/degoog
|
||||
|
||||
APP="degoog"
|
||||
var_tags="${var_tags:-search;privacy}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/degoog ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "degoog" "fccview/degoog"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop degoog
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration & Data"
|
||||
[[ -f /opt/degoog/.env ]] && cp /opt/degoog/.env /opt/degoog.env.bak
|
||||
[[ -d /opt/degoog/data ]] && mv /opt/degoog/data /opt/degoog_data_backup
|
||||
msg_ok "Backed up Configuration & Data"
|
||||
|
||||
if ! command -v bun >/dev/null 2>&1; then
|
||||
msg_info "Installing Bun"
|
||||
export BUN_INSTALL="/root/.bun"
|
||||
curl -fsSL https://bun.sh/install | $STD bash
|
||||
ln -sf /root/.bun/bin/bun /usr/local/bin/bun
|
||||
ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx
|
||||
msg_ok "Installed Bun"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration & Data"
|
||||
[[ -f /opt/degoog.env.bak ]] && mv /opt/degoog.env.bak /opt/degoog/.env
|
||||
[[ -d /opt/degoog_data_backup ]] && mv /opt/degoog_data_backup /opt/degoog/data
|
||||
msg_ok "Restored Configuration & Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start degoog
|
||||
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}:4444${CL}"
|
||||
84
ct/docuseal.sh
Normal file
84
ct/docuseal.sh
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.docuseal.com/
|
||||
|
||||
APP="DocuSeal"
|
||||
var_tags="${var_tags:-document;esignature;pdf}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/docuseal ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "docuseal" "docusealco/docuseal"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop docuseal docuseal-sidekiq
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/docuseal/.env /opt/docuseal.env.bak
|
||||
[[ -d /opt/docuseal/data ]] && mv /opt/docuseal/data /opt/docuseal_data.bak
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
mv /opt/docuseal.env.bak /opt/docuseal/.env
|
||||
[[ -d /opt/docuseal_data.bak ]] && mv /opt/docuseal_data.bak /opt/docuseal/data
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/docuseal
|
||||
export PATH="/root/.rbenv/bin:/root/.rbenv/shims:${PATH}"
|
||||
eval "$(rbenv init - bash)" 2>/dev/null || true
|
||||
export RAILS_ENV=production
|
||||
export NODE_ENV=production
|
||||
export SECRET_KEY_BASE_DUMMY=1
|
||||
set -a
|
||||
source /opt/docuseal/.env
|
||||
set +a
|
||||
$STD bundle config set --local deployment 'true'
|
||||
$STD bundle config set --local without 'development:test'
|
||||
$STD bundle install -j"$(nproc)"
|
||||
$STD yarn install --network-timeout 1000000
|
||||
$STD ./bin/shakapacker
|
||||
$STD bundle exec rails db:migrate
|
||||
$STD bundle exec bootsnap precompile -j 1 --gemfile app/ lib/
|
||||
chown -R docuseal:docuseal /opt/docuseal
|
||||
msg_ok "Built Application"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start docuseal docuseal-sidekiq
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
54
ct/espconnect.sh
Normal file
54
ct/espconnect.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John Lombardo (programbo)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thelastoutpostworkshop/ESPConnect
|
||||
|
||||
APP="ESPConnect"
|
||||
var_tags="${var_tags:-iot;esp32;flash}"
|
||||
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_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/espconnect ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect"; then
|
||||
msg_info "Stopping Nginx"
|
||||
systemctl stop nginx
|
||||
msg_ok "Stopped Nginx"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect" "prebuild" "latest" "/opt/espconnect" "dist.zip"
|
||||
|
||||
msg_info "Starting Nginx"
|
||||
systemctl start nginx
|
||||
msg_ok "Started Nginx"
|
||||
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}${CL}"
|
||||
@@ -28,6 +28,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop excalidraw
|
||||
@@ -37,6 +40,7 @@ function update_script() {
|
||||
|
||||
msg_info "Updating Excalidraw"
|
||||
cd /opt/excalidraw
|
||||
$STD yarn config set ignore-engines true
|
||||
$STD yarn
|
||||
msg_ok "Updated Excalidraw"
|
||||
|
||||
|
||||
@@ -27,9 +27,16 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="20" NODE_MODULE="pnpm" setup_nodejs
|
||||
|
||||
msg_info "Updating FlowiseAI (this may take some time)"
|
||||
systemctl stop flowise
|
||||
$STD npm install -g flowise --upgrade
|
||||
$STD pnpm add -g flowise
|
||||
if grep -q 'ExecStart=npx flowise start' /etc/systemd/system/flowise.service; then
|
||||
sed -i 's|ExecStart=npx flowise start|ExecStart=flowise start|' /etc/systemd/system/flowise.service
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
systemctl start flowise
|
||||
msg_ok "Updated FlowiseAI"
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
@@ -34,7 +34,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||
PROJECT_NAME=$(</opt/fumadocs/.projectname)
|
||||
PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
|
||||
SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
|
||||
|
||||
6
ct/headers/authentik
Normal file
6
ct/headers/authentik
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __ __ _ __
|
||||
____ ___ __/ /_/ /_ ___ ____ / /_(_) /__
|
||||
/ __ `/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/
|
||||
/ /_/ / /_/ / /_/ / / / __/ / / / /_/ / ,<
|
||||
\__,_/\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_|
|
||||
|
||||
6
ct/headers/cliproxyapi
Normal file
6
ct/headers/cliproxyapi
Normal file
@@ -0,0 +1,6 @@
|
||||
________ ________ ___ ____ ____
|
||||
/ ____/ / / _/ __ \_________ _ ____ __/ | / __ \/ _/
|
||||
/ / / / / // /_/ / ___/ __ \| |/_/ / / / /| | / /_/ // /
|
||||
/ /___/ /____/ // ____/ / / /_/ /> </ /_/ / ___ |/ ____// /
|
||||
\____/_____/___/_/ /_/ \____/_/|_|\__, /_/ |_/_/ /___/
|
||||
/____/
|
||||
6
ct/headers/degoog
Normal file
6
ct/headers/degoog
Normal file
@@ -0,0 +1,6 @@
|
||||
__
|
||||
____/ /__ ____ _____ ____ ____ _
|
||||
/ __ / _ \/ __ `/ __ \/ __ \/ __ `/
|
||||
/ /_/ / __/ /_/ / /_/ / /_/ / /_/ /
|
||||
\__,_/\___/\__, /\____/\____/\__, /
|
||||
/____/ /____/
|
||||
6
ct/headers/docuseal
Normal file
6
ct/headers/docuseal
Normal file
@@ -0,0 +1,6 @@
|
||||
____ _____ __
|
||||
/ __ \____ _______ __/ ___/___ ____ _/ /
|
||||
/ / / / __ \/ ___/ / / /\__ \/ _ \/ __ `/ /
|
||||
/ /_/ / /_/ / /__/ /_/ /___/ / __/ /_/ / /
|
||||
/_____/\____/\___/\__,_//____/\___/\__,_/_/
|
||||
|
||||
6
ct/headers/espconnect
Normal file
6
ct/headers/espconnect
Normal file
@@ -0,0 +1,6 @@
|
||||
___________ ____ ______ __
|
||||
/ ____/ ___// __ \/ ____/___ ____ ____ ___ _____/ /_
|
||||
/ __/ \__ \/ /_/ / / / __ \/ __ \/ __ \/ _ \/ ___/ __/
|
||||
/ /___ ___/ / ____/ /___/ /_/ / / / / / / / __/ /__/ /_
|
||||
/_____//____/_/ \____/\____/_/ /_/_/ /_/\___/\___/\__/
|
||||
|
||||
6
ct/headers/hoodik
Normal file
6
ct/headers/hoodik
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __ ___ __
|
||||
/ / / /___ ____ ____/ (_) /__
|
||||
/ /_/ / __ \/ __ \/ __ / / //_/
|
||||
/ __ / /_/ / /_/ / /_/ / / ,<
|
||||
/_/ /_/\____/\____/\__,_/_/_/|_|
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
__ _ __ __ __ __ ___
|
||||
/ / (_) /____ / / / / / |/ /
|
||||
/ / / / __/ _ \/ / / / / /|_/ /
|
||||
/ /___/ / /_/ __/ /___/ /___/ / / /
|
||||
/_____/_/\__/\___/_____/_____/_/ /_/
|
||||
|
||||
6
ct/headers/lobehub
Normal file
6
ct/headers/lobehub
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __ __ __ __
|
||||
/ / ____ / /_ ___ / / / /_ __/ /_
|
||||
/ / / __ \/ __ \/ _ \/ /_/ / / / / __ \
|
||||
/ /___/ /_/ / /_/ / __/ __ / /_/ / /_/ /
|
||||
/_____/\____/_.___/\___/_/ /_/\__,_/_.___/
|
||||
|
||||
6
ct/headers/lychee
Normal file
6
ct/headers/lychee
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __
|
||||
/ / __ _______/ /_ ___ ___
|
||||
/ / / / / / ___/ __ \/ _ \/ _ \
|
||||
/ /___/ /_/ / /__/ / / / __/ __/
|
||||
/_____/\__, /\___/_/ /_/\___/\___/
|
||||
/____/
|
||||
6
ct/headers/shlink
Normal file
6
ct/headers/shlink
Normal file
@@ -0,0 +1,6 @@
|
||||
_____ __ ___ __
|
||||
/ ___// /_ / (_)___ / /__
|
||||
\__ \/ __ \/ / / __ \/ //_/
|
||||
___/ / / / / / / / / / ,<
|
||||
/____/_/ /_/_/_/_/ /_/_/|_|
|
||||
|
||||
6
ct/headers/solidtime
Normal file
6
ct/headers/solidtime
Normal file
@@ -0,0 +1,6 @@
|
||||
_____ ___ _________
|
||||
/ ___/____ / (_)___/ /_ __(_)___ ___ ___
|
||||
\__ \/ __ \/ / / __ / / / / / __ `__ \/ _ \
|
||||
___/ / /_/ / / / /_/ / / / / / / / / / / __/
|
||||
/____/\____/_/_/\__,_/ /_/ /_/_/ /_/ /_/\___/
|
||||
|
||||
6
ct/headers/webtrees
Normal file
6
ct/headers/webtrees
Normal file
@@ -0,0 +1,6 @@
|
||||
_ __ __ __
|
||||
| | / /__ / /_ / /_________ ___ _____
|
||||
| | /| / / _ \/ __ \/ __/ ___/ _ \/ _ \/ ___/
|
||||
| |/ |/ / __/ /_/ / /_/ / / __/ __(__ )
|
||||
|__/|__/\___/_.___/\__/_/ \___/\___/____/
|
||||
|
||||
@@ -54,6 +54,7 @@ function update_script() {
|
||||
msg_info "Updating Homepage (Patience)"
|
||||
RELEASE=$(get_latest_github_release "gethomepage/homepage")
|
||||
cd /opt/homepage
|
||||
echo 'onlyBuiltDependencies=*' >> .npmrc
|
||||
$STD pnpm install
|
||||
$STD pnpm update --no-save caniuse-lite
|
||||
export NEXT_PUBLIC_VERSION="v$RELEASE"
|
||||
|
||||
64
ct/hoodik.sh
Normal file
64
ct/hoodik.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/hudikhq/hoodik
|
||||
|
||||
APP="Hoodik"
|
||||
var_tags="${var_tags:-cloud;storage}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-5}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/hoodik/hoodik ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "hoodik" "hudikhq/hoodik"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop hoodik
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/hoodik/.env /opt/hoodik.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hoodik" "hudikhq/hoodik" "prebuild" "latest" "/opt/hoodik" "*x86_64.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/hoodik.env.bak /opt/hoodik/.env
|
||||
rm -f /opt/hoodik.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start hoodik
|
||||
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}:5443/auth/register${CL}"
|
||||
@@ -59,6 +59,7 @@ function update_script() {
|
||||
if command -v corepack >/dev/null; then
|
||||
$STD corepack disable
|
||||
fi
|
||||
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
||||
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||
setup_meilisearch
|
||||
@@ -83,7 +84,6 @@ function update_script() {
|
||||
cd /opt/karakeep/packages/db
|
||||
$STD pnpm migrate
|
||||
$STD pnpm store prune
|
||||
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
||||
msg_ok "Updated Karakeep"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
14
ct/kasm.sh
14
ct/kasm.sh
@@ -35,7 +35,7 @@ function update_script() {
|
||||
CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}')
|
||||
KASM_VERSION=$(curl -s https://kasm.com/downloads | grep -oP '<h1[^>]*>.*?</h1>' | sed -E 's/<\/?h1[^>]*>//g' | grep -oP '\d+\.\d+\.\d+')
|
||||
KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION:-var_kasm_version}.tar.gz"
|
||||
|
||||
|
||||
# KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||
# if [[ -z "$KASM_URL" ]]; then
|
||||
# SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
|
||||
@@ -46,7 +46,7 @@ function update_script() {
|
||||
# else
|
||||
# KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||
# fi
|
||||
|
||||
|
||||
if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then
|
||||
msg_error "Unable to detect latest Kasm release URL."
|
||||
exit 250
|
||||
@@ -56,10 +56,10 @@ function update_script() {
|
||||
msg_info "Removing outdated docker-compose plugin"
|
||||
[ -f ~/.docker/cli-plugins/docker-compose ] && rm -rf ~/.docker/cli-plugins/docker-compose
|
||||
msg_ok "Removed outdated docker-compose plugin"
|
||||
|
||||
|
||||
if [[ -z "$CURRENT_VERSION" ]] || [[ "$KASM_VERSION" != "$CURRENT_VERSION" ]]; then
|
||||
msg_info "Updating Kasm"
|
||||
cd /tmp
|
||||
cd /tmp
|
||||
|
||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
||||
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||
@@ -71,17 +71,17 @@ function update_script() {
|
||||
msg_error "Aborted by user. No changes have been made."
|
||||
exit 10
|
||||
fi
|
||||
curl -fsSL -o "/tmp/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||
curl_download "/tmp/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||
chmod +x /tmp/kasm_release/install.sh
|
||||
rm -f /tmp/kasm_release_"${KASM_VERSION}".tar.gz
|
||||
|
||||
|
||||
bash /tmp/kasm_release/upgrade.sh --proxy-port 443
|
||||
rm -rf /tmp/kasm_release
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. Kasm is already at v${KASM_VERSION}"
|
||||
|
||||
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: stout01
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/BerriAI/litellm
|
||||
|
||||
APP="LiteLLM"
|
||||
var_tags="${var_tags:-ai;interface}"
|
||||
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_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /etc/systemd/system/litellm.service ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop litellm
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
VENV_PATH="/opt/litellm/.venv"
|
||||
PYTHON_VERSION="3.13" USE_UVX="YES" setup_uv
|
||||
|
||||
msg_info "Updating LiteLLM"
|
||||
$STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
|
||||
$STD "$VENV_PATH/bin/prisma" generate
|
||||
msg_ok "LiteLLM updated"
|
||||
|
||||
msg_info "Updating DB Schema"
|
||||
$STD /opt/litellm/.venv/bin/litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
|
||||
msg_ok "DB Schema Updated"
|
||||
|
||||
msg_info "Updating Service"
|
||||
sed -i 's|ExecStart=uv --directory=/opt/litellm run litellm|ExecStart=/opt/litellm/.venv/bin/litellm|' /etc/systemd/system/litellm.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Updated Service"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start litellm
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"
|
||||
77
ct/lobehub.sh
Normal file
77
ct/lobehub.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/lobehub/lobehub
|
||||
|
||||
APP="LobeHub"
|
||||
var_tags="${var_tags:-ai;chat}"
|
||||
var_cpu="${var_cpu:-6}"
|
||||
var_ram="${var_ram:-10240}"
|
||||
var_disk="${var_disk:-15}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/lobehub ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "lobehub" "lobehub/lobehub"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop lobehub
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/lobehub/.env /opt/lobehub.env.bak
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lobehub" "lobehub/lobehub" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/lobehub.env.bak /opt/lobehub/.env
|
||||
rm -f /opt/lobehub.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/lobehub
|
||||
export NODE_OPTIONS="--max-old-space-size=8192"
|
||||
$STD pnpm install
|
||||
$STD pnpm run build:docker
|
||||
unset NODE_OPTIONS
|
||||
msg_ok "Built Application"
|
||||
|
||||
msg_info "Running Database Migrations"
|
||||
cd /opt/lobehub
|
||||
set -a && source /opt/lobehub/.env && set +a
|
||||
$STD node /opt/lobehub/.next/standalone/docker.cjs
|
||||
msg_ok "Ran Database Migrations"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start lobehub
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3210${CL}"
|
||||
73
ct/lychee.sh
Normal file
73
ct/lychee.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/LycheeOrg/Lychee
|
||||
|
||||
APP="Lychee"
|
||||
var_tags="${var_tags:-media;photos;gallery}"
|
||||
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}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/lychee ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "lychee" "LycheeOrg/Lychee"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/lychee/.env /opt/lychee.env.bak
|
||||
cp -r /opt/lychee/storage /opt/lychee_storage_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lychee" "LycheeOrg/Lychee" "prebuild" "latest" "/opt/lychee" "Lychee.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/lychee.env.bak /opt/lychee/.env
|
||||
rm -f /opt/lychee.env.bak
|
||||
cp -r /opt/lychee_storage_backup/. /opt/lychee/storage
|
||||
rm -rf /opt/lychee_storage_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/lychee
|
||||
$STD php artisan migrate --force
|
||||
$STD php artisan optimize:clear
|
||||
chmod -R 775 /opt/lychee/storage /opt/lychee/bootstrap/cache
|
||||
msg_ok "Updated Application"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start caddy
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
@@ -55,9 +55,20 @@ function update_script() {
|
||||
|
||||
RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby
|
||||
|
||||
msg_info "Installing Manyfold"
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/manyfold/app/{storage,tmp,config/credentials.yml.enc,config/master.key}
|
||||
cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true
|
||||
cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true
|
||||
cp /opt/manyfold_credentials.yml.enc /opt/manyfold/app/config/credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold_master.key /opt/manyfold/app/config/master.key 2>/dev/null || true
|
||||
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold}
|
||||
chown -R manyfold:manyfold /opt/manyfold
|
||||
chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config
|
||||
rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup /opt/manyfold_credentials.yml.enc /opt/manyfold_master.key
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Installing Manyfold"
|
||||
$STD npm install --global corepack
|
||||
$STD corepack enable yarn
|
||||
|
||||
sudo -u manyfold bash -c '
|
||||
source /opt/manyfold/.env
|
||||
@@ -66,7 +77,6 @@ function update_script() {
|
||||
cd /opt/manyfold/app
|
||||
gem install bundler sidekiq foreman
|
||||
bundle install
|
||||
corepack enable yarn
|
||||
corepack prepare '"$YARN_VERSION"' --activate
|
||||
corepack use '"$YARN_VERSION"'
|
||||
bin/rails db:migrate
|
||||
@@ -74,16 +84,6 @@ function update_script() {
|
||||
'
|
||||
msg_ok "Installed Manyfold"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/manyfold/app/{storage,tmp,config/credentials.yml.enc,config/master.key}
|
||||
cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true
|
||||
cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true
|
||||
cp /opt/manyfold_credentials.yml.enc /opt/manyfold/app/config/credentials.yml.enc 2>/dev/null || true
|
||||
cp /opt/manyfold_master.key /opt/manyfold/app/config/master.key 2>/dev/null || true
|
||||
chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config
|
||||
rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup /opt/manyfold_credentials.yml.enc /opt/manyfold_master.key
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Restarting Services"
|
||||
source /opt/manyfold/.env
|
||||
export PATH="/home/manyfold/.rbenv/shims:/home/manyfold/.rbenv/bin:$PATH"
|
||||
|
||||
@@ -81,11 +81,7 @@ STARTEOF
|
||||
cp -r /opt/mealie/frontend/dist/* /opt/mealie/mealie/frontend/
|
||||
msg_ok "Copied Frontend"
|
||||
|
||||
msg_info "Updating NLTK Data"
|
||||
mkdir -p /nltk_data/
|
||||
cd /opt/mealie
|
||||
$STD uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
|
||||
msg_ok "Updated NLTK Data"
|
||||
setup_nltk "averaged_perceptron_tagger_eng" "/nltk_data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start mealie
|
||||
|
||||
@@ -25,7 +25,7 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /etc/netbird/config.json ]]; then
|
||||
if [[ ! -d /var/lib/netbird/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -28,7 +28,6 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if command -v node &>/dev/null; then
|
||||
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
||||
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
|
||||
@@ -48,7 +47,7 @@ function update_script() {
|
||||
msg_info "Migrating from packaged OpenResty to source"
|
||||
rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg /etc/apt/trusted.gpg.d/openresty.gpg
|
||||
rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/openresty.sources
|
||||
$STD apt remove -y openresty
|
||||
$STD apt purge -y openresty
|
||||
$STD apt autoremove -y
|
||||
rm -f ~/.openresty
|
||||
msg_ok "Migrated from packaged OpenResty to source"
|
||||
@@ -93,6 +92,11 @@ ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
if [ -f /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf ]; then
|
||||
cp /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -i 's+^daemon+#daemon+g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
fi
|
||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||
systemctl daemon-reload
|
||||
systemctl unmask openresty 2>/dev/null || true
|
||||
|
||||
28
ct/ollama.sh
28
ct/ollama.sh
@@ -27,34 +27,26 @@ function update_script() {
|
||||
msg_error "No Ollama Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
|
||||
if [[ ! -f /opt/Ollama_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/Ollama_version.txt)" ]]; then
|
||||
if [[ ! -f /opt/Ollama_version.txt ]]; then
|
||||
touch /opt/Ollama_version.txt
|
||||
fi
|
||||
if check_for_gh_release "ollama" "ollama/ollama"; then
|
||||
ensure_dependencies zstd
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop ollama
|
||||
msg_ok "Services Stopped"
|
||||
|
||||
TMP_TAR=$(mktemp --suffix=.tar.zst)
|
||||
curl -fL# -C - -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tar.zst"
|
||||
msg_info "Updating Ollama to ${RELEASE}"
|
||||
rm -rf /usr/local/lib/ollama
|
||||
rm -rf /usr/local/bin/ollama
|
||||
mkdir -p /usr/local/lib/ollama
|
||||
tar --zstd -xf "${TMP_TAR}" -C /usr/local/lib/ollama
|
||||
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
|
||||
rm -f "${TMP_TAR}"
|
||||
echo "${RELEASE}" >/opt/Ollama_version.txt
|
||||
msg_ok "Updated Ollama to ${RELEASE}"
|
||||
OLLAMA_INSTALL_DIR="/usr/local/lib/ollama"
|
||||
rm -rf "$OLLAMA_INSTALL_DIR" /usr/local/bin/ollama
|
||||
mkdir -p "$OLLAMA_INSTALL_DIR"
|
||||
if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then
|
||||
msg_error "Download or deployment failed – check network connectivity and GitHub API availability"
|
||||
exit 250
|
||||
fi
|
||||
ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" /usr/local/bin/ollama
|
||||
msg_ok "Updated Ollama"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start ollama
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. Ollama is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
32
ct/omada.sh
32
ct/omada.sh
@@ -38,20 +38,32 @@ function update_script() {
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
msg_info "Updating Omada Controller"
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
head -n1)
|
||||
OMADA_PKG=$(basename "$OMADA_URL")
|
||||
if [ -z "$OMADA_PKG" ]; then
|
||||
msg_error "Could not retrieve Omada package – server may be down."
|
||||
exit
|
||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_.*_\([0-9]\{14\}\)\.deb$/\1-\2/p' <<<"${OMADA_PKG}")
|
||||
|
||||
CURRENT_VERSION=$(cat $HOME/.omada 2>/dev/null || echo "0")
|
||||
|
||||
if dpkg --compare-versions "${VERSION}" gt "${CURRENT_VERSION}"; then
|
||||
|
||||
msg_info "Updating Omada Controller"
|
||||
|
||||
if [ -z "${OMADA_PKG}" ]; then
|
||||
msg_error "Could not retrieve Omada package – server may be down."
|
||||
exit
|
||||
fi
|
||||
curl -fsSL "${OMADA_URL}" -o "${OMADA_PKG}"
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
$STD dpkg -i "${OMADA_PKG}"
|
||||
rm -f "${OMADA_PKG}"
|
||||
echo "${VERSION}" >$HOME/.omada
|
||||
msg_ok "Updated Omada Controller to ${VERSION}"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update available: ${APP} (${CURRENT_VERSION})"
|
||||
fi
|
||||
curl -fsSL "$OMADA_URL" -o "$OMADA_PKG"
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
$STD dpkg -i "$OMADA_PKG"
|
||||
rm -f "$OMADA_PKG"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
RELEASE="v6.1.0"
|
||||
RELEASE="v6.2.0"
|
||||
if check_for_gh_release "OpenCloud" "opencloud-eu/opencloud" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||
msg_info "Stopping services"
|
||||
systemctl stop opencloud opencloud-wopi
|
||||
|
||||
@@ -91,37 +91,22 @@ EOF
|
||||
|
||||
if [ -x "/usr/bin/ollama" ]; then
|
||||
msg_info "Checking for Ollama Update"
|
||||
OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
|
||||
RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||
if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
|
||||
msg_info "Ollama update available: v$OLLAMA_VERSION -> v$RELEASE"
|
||||
msg_info "Downloading Ollama v$RELEASE \n"
|
||||
curl -fS#LO https://github.com/ollama/ollama/releases/download/v${RELEASE}/ollama-linux-amd64.tar.zst
|
||||
msg_ok "Download Complete"
|
||||
if check_for_gh_release "ollama" "ollama/ollama"; then
|
||||
msg_info "Stopping Ollama Service"
|
||||
systemctl stop ollama
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
if [ -f "ollama-linux-amd64.tar.zst" ]; then
|
||||
|
||||
msg_info "Stopping Ollama Service"
|
||||
systemctl stop ollama
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Installing Ollama"
|
||||
rm -rf /usr/lib/ollama
|
||||
rm -rf /usr/bin/ollama
|
||||
tar --zstd -C /usr -xf ollama-linux-amd64.tar.zst
|
||||
rm -rf ollama-linux-amd64.tar.zst
|
||||
msg_ok "Installed Ollama"
|
||||
|
||||
msg_info "Starting Ollama Service"
|
||||
systemctl start ollama
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_ok "Ollama updated to version $RELEASE"
|
||||
rm -rf /usr/lib/ollama /usr/bin/ollama
|
||||
if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "/usr/lib/ollama" "ollama-linux-amd64.tar.zst"; then
|
||||
msg_error "Ollama download or deployment failed – check network connectivity and GitHub API availability"
|
||||
else
|
||||
msg_error "Ollama download failed. Aborting update."
|
||||
ln -sf /usr/lib/ollama/bin/ollama /usr/bin/ollama
|
||||
msg_ok "Updated Ollama to ${CHECK_UPDATE_RELEASE}"
|
||||
fi
|
||||
else
|
||||
msg_ok "Ollama is already up to date."
|
||||
|
||||
msg_info "Starting Ollama Service"
|
||||
systemctl start ollama
|
||||
msg_ok "Started Service"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Source: https://pangolin.net/ | Github: https://github.com/fosrl/pangolin
|
||||
|
||||
APP="Pangolin"
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.2}"
|
||||
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.4}"
|
||||
var_tags="${var_tags:-proxy}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
@@ -81,6 +81,12 @@ function update_script() {
|
||||
|
||||
msg_info "Running database migrations"
|
||||
cd /opt/pangolin
|
||||
SQLITE_DB="/opt/pangolin/config/db/db.sqlite"
|
||||
if [[ -f "$SQLITE_DB" ]]; then
|
||||
if ! sqlite3 "$SQLITE_DB" ".tables" 2>/dev/null | tr ' ' '\n' | grep -qx "statusHistory"; then
|
||||
sqlite3 "$SQLITE_DB" "DELETE FROM versionMigrations;" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
ENVIRONMENT=prod $STD node dist/migrations.mjs
|
||||
msg_ok "Ran database migrations"
|
||||
|
||||
|
||||
@@ -164,13 +164,7 @@ function update_script() {
|
||||
fi
|
||||
fi
|
||||
|
||||
msg_info "Updating NLTK Data"
|
||||
cd /opt/paperless
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data snowball_data
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data stopwords
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt_tab ||
|
||||
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt
|
||||
msg_ok "Updated NLTK Data"
|
||||
setup_nltk "snowball_data stopwords punkt_tab" "/usr/share/nltk_data"
|
||||
|
||||
msg_info "Starting all Paperless-ngx Services"
|
||||
systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
|
||||
|
||||
@@ -42,6 +42,9 @@ function update_script() {
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "papra" "papra-hq/papra" "tarball"
|
||||
|
||||
pnpm_version=$(grep -oP '"packageManager":\s*"pnpm@\K[^"]+' /opt/papra/package.json)
|
||||
NODE_VERSION="26" NODE_MODULE="pnpm@$pnpm_version" setup_nodejs
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/papra
|
||||
if [[ -f /opt/papra_env.bak ]]; then
|
||||
|
||||
@@ -45,6 +45,7 @@ function update_script() {
|
||||
$STD php artisan down
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
mkdir -p /opt/backup
|
||||
cp -a /opt/pelican-panel/.env /opt/backup
|
||||
mkdir -p /opt/backup/storage/app/
|
||||
cp -a /opt/pelican-panel/storage/app/public /opt/backup/storage/app/
|
||||
|
||||
@@ -48,9 +48,24 @@ function update_script() {
|
||||
export NODE_ENV="production"
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
msg_info "Deploying Nitro Runtime Externals"
|
||||
$STD pnpm --filter=@reactive-resume/runtime-externals deploy --prod --legacy /tmp/rr-runtime
|
||||
cp -r /tmp/rr-runtime/node_modules/. /opt/reactive-resume/apps/web/node_modules/
|
||||
rm -rf /tmp/rr-runtime
|
||||
msg_ok "Deployed Nitro Runtime Externals"
|
||||
mv /opt/reactive-resume.env.bak /opt/reactive-resume/.env
|
||||
# Inject ENCRYPTION_SECRET if missing (required for AI providers since v5.1.4)
|
||||
if ! grep -q '^ENCRYPTION_SECRET=' /opt/reactive-resume/.env; then
|
||||
ENCRYPTION_SECRET=$(openssl rand -hex 32)
|
||||
echo "ENCRYPTION_SECRET=${ENCRYPTION_SECRET}" >> /opt/reactive-resume/.env
|
||||
fi
|
||||
msg_ok "Updated Reactive Resume"
|
||||
|
||||
msg_info "Updating Service"
|
||||
sed -i 's|WorkingDirectory=/opt/reactive-resume$|WorkingDirectory=/opt/reactive-resume/apps/web|' /etc/systemd/system/reactive-resume.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Updated Service"
|
||||
|
||||
msg_info "Restarting services"
|
||||
systemctl start chromium-printer reactive-resume
|
||||
msg_ok "Restarted services"
|
||||
|
||||
@@ -48,8 +48,6 @@ function update_script() {
|
||||
msg_ok "Services started"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
85
ct/shlink.sh
Normal file
85
ct/shlink.sh
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://shlink.io/
|
||||
|
||||
APP="Shlink"
|
||||
var_tags="${var_tags:-url-shortener;analytics;php}"
|
||||
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_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/shlink ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "shlink" "shlinkio/shlink"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop shlink
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/shlink/.env /opt/shlink.env.bak
|
||||
cp -r /opt/shlink/data /opt/shlink_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink" "shlinkio/shlink" "prebuild" "latest" "/opt/shlink" "shlink*_php8.5_dist.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/shlink.env.bak /opt/shlink/.env
|
||||
rm -f /opt/shlink.env.bak
|
||||
cp -r /opt/shlink_data_backup/. /opt/shlink/data
|
||||
rm -rf /opt/shlink_data_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/shlink
|
||||
$STD php ./vendor/bin/rr get --no-interaction --location bin/
|
||||
chmod +x bin/rr
|
||||
set -a
|
||||
source /opt/shlink/.env
|
||||
set +a
|
||||
$STD php vendor/bin/shlink-installer init --no-interaction --clear-db-cache --skip-download-geolite
|
||||
msg_ok "Updated Application"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start shlink
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
|
||||
if [[ -d /opt/shlink-web-client ]]; then
|
||||
if check_for_gh_release "shlink-web-client" "shlinkio/shlink-web-client"; then
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink-web-client" "shlinkio/shlink-web-client" "prebuild" "latest" "/opt/shlink-web-client" "shlink-web-client_*_dist.zip"
|
||||
msg_ok "Updated Web Client"
|
||||
fi
|
||||
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 Shlink Web Client using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
echo -e "${INFO}${YW} Shlink HTTP API:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||
77
ct/solidtime.sh
Normal file
77
ct/solidtime.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.solidtime.io/
|
||||
|
||||
APP="SolidTime"
|
||||
var_tags="${var_tags:-time-tracking;productivity;business}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/solidtime ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "solidtime" "solidtime-io/solidtime"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/solidtime/.env /opt/solidtime.env.bak
|
||||
cp -r /opt/solidtime/storage /opt/solidtime_storage_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/solidtime.env.bak /opt/solidtime/.env
|
||||
rm -f /opt/solidtime.env.bak
|
||||
cp -r /opt/solidtime_storage_backup/. /opt/solidtime/storage
|
||||
rm -rf /opt/solidtime_storage_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/solidtime
|
||||
$STD composer install --no-dev --optimize-autoloader
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
$STD php artisan migrate --force
|
||||
$STD php artisan optimize:clear
|
||||
chown -R www-data:www-data /opt/solidtime
|
||||
msg_ok "Updated Application"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start caddy
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||
echo -e "${INFO}${YW}HTTPS is not enabled by default (use domain + reverse proxy/TLS if needed).${CL}"
|
||||
19
ct/sonarr.sh
19
ct/sonarr.sh
@@ -23,21 +23,24 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /var/lib/sonarr/ ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop sonarr
|
||||
msg_ok "Stopped Service"
|
||||
if check_for_gh_release "Sonarr" "Sonarr/Sonarr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop sonarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sonarr" "Sonarr/Sonarr" "prebuild" "latest" "/opt/Sonarr" "Sonarr.main.*.linux-x64.tar.gz"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sonarr" "Sonarr/Sonarr" "prebuild" "latest" "/opt/Sonarr" "Sonarr.main.*.linux-x64.tar.gz"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start sonarr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
msg_info "Starting Service"
|
||||
systemctl start sonarr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ function update_script() {
|
||||
msg_info "Updating Python Dependencies"
|
||||
cd /opt/soulsync
|
||||
$STD uv venv --clear /opt/soulsync/.venv --python 3.11
|
||||
$STD /opt/soulsync/.venv/bin/pip install -r requirements.txt
|
||||
$STD uv pip install -r requirements.txt
|
||||
msg_ok "Updated Python Dependencies"
|
||||
|
||||
mv /opt/soulsync-config.bak /opt/soulsync/config
|
||||
|
||||
@@ -62,6 +62,18 @@ function update_script() {
|
||||
cp -a /opt/sparkyfitness/SparkyFitnessFrontend/dist/. /var/www/sparkyfitness/
|
||||
msg_ok "Updated Sparky Fitness Frontend"
|
||||
|
||||
msg_info "Refreshing Nginx Config"
|
||||
sed \
|
||||
-e 's|${SPARKY_FITNESS_SERVER_HOST}|127.0.0.1|g' \
|
||||
-e 's|${SPARKY_FITNESS_SERVER_PORT}|3010|g' \
|
||||
-e 's|${NGINX_LISTEN_PORT}|80|g' \
|
||||
-e 's|${NGINX_ACCESS_LOG}|/var/log/nginx/sparkyfitness.access.log|g' \
|
||||
-e 's|${NGINX_ERROR_LOG}|/var/log/nginx/sparkyfitness.error.log|g' \
|
||||
-e 's|root /usr/share/nginx/html;|root /var/www/sparkyfitness;|g' \
|
||||
-e 's|server_name localhost;|server_name _;|g' \
|
||||
"/opt/sparkyfitness/docker/nginx.conf" >/etc/nginx/sites-available/sparkyfitness
|
||||
msg_ok "Refreshed Nginx Config"
|
||||
|
||||
msg_info "Refreshing SparkyFitness Service"
|
||||
cat <<EOF >/etc/systemd/system/sparkyfitness-server.service
|
||||
[Unit]
|
||||
|
||||
@@ -64,7 +64,7 @@ EOF
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Sure" "we-promise/sure" "tarball" "latest" "/opt/sure"
|
||||
RUBY_VERSION="$(cat /opt/sure/.ruby-version)" RUBY_INSTALL_RAILS=false setup_ruby
|
||||
RUBY_VERSION="$(cat /opt/sure/.ruby-version)" RUBY_INSTALL_RAILS=false HOME=/root setup_ruby
|
||||
|
||||
msg_info "Updating Sure"
|
||||
source ~/.profile
|
||||
|
||||
13
ct/termix.sh
13
ct/termix.sh
@@ -29,6 +29,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_tag "guacd" "apache/guacamole-server"; then
|
||||
msg_info "Stopping guacd"
|
||||
systemctl stop guacd 2>/dev/null || true
|
||||
@@ -155,8 +157,6 @@ EOF
|
||||
/opt/termix/nginx/client_body
|
||||
msg_ok "Recreated Directories"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/termix
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
@@ -199,12 +199,17 @@ 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 '/^pid \/app\/nginx/d' /etc/nginx/nginx.conf
|
||||
sed -i 's|pid /tmp/nginx/nginx.pid;|pid /run/nginx.pid;|' /etc/nginx/nginx.conf
|
||||
sed -i 's|error_log /tmp/nginx/error.log|error_log /var/log/nginx/error.log|' /etc/nginx/nginx.conf
|
||||
sed -i 's|access_log /tmp/nginx/access.log|access_log /var/log/nginx/access.log|' /etc/nginx/nginx.conf
|
||||
sed -i 's|/app/html|/opt/termix/html|g' /etc/nginx/nginx.conf
|
||||
sed -i 's|/app/nginx|/opt/termix/nginx|g' /etc/nginx/nginx.conf
|
||||
sed -i 's|listen ${PORT};|listen 80;|g' /etc/nginx/nginx.conf
|
||||
|
||||
nginx -t && systemctl reload nginx
|
||||
rm -f /etc/systemd/system/nginx.service.d/pidfile.conf
|
||||
rm -f /etc/tmpfiles.d/nginx-termix.conf
|
||||
systemctl daemon-reload
|
||||
nginx -t && systemctl restart nginx
|
||||
msg_ok "Updated Nginx Configuration"
|
||||
else
|
||||
msg_warn "Nginx configuration not updated. If Termix doesn't work, restore from backup or update manually."
|
||||
|
||||
@@ -35,6 +35,7 @@ function update_script() {
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "threadfin-app" "threadfin/threadfin" "singlefile" "latest" "/opt/threadfin" "Threadfin_linux_amd64"
|
||||
mv /opt/threadfin/threadfin-app /opt/threadfin/threadfin
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start threadfin
|
||||
|
||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/steveiliop56/tinyauth
|
||||
# Source: https://github.com/tinyauthapp/tinyauth
|
||||
|
||||
APP="Tinyauth"
|
||||
var_tags="${var_tags:-auth}"
|
||||
@@ -28,12 +28,12 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "tinyauth" "steveiliop56/tinyauth"; then
|
||||
if check_for_gh_release "tinyauth" "tinyauthapp/tinyauth"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop tinyauth
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "tinyauth" "steveiliop56/tinyauth" "singlefile" "latest" "/opt/tinyauth" "tinyauth-amd64"
|
||||
fetch_and_deploy_gh_release "tinyauth" "tinyauthapp/tinyauth" "singlefile" "latest" "/opt/tinyauth" "tinyauth-amd64"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tinyauth
|
||||
|
||||
@@ -29,6 +29,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "trek" "mauriceboe/TREK"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop trek
|
||||
|
||||
@@ -28,7 +28,10 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_mariadb
|
||||
|
||||
if check_for_gh_release "wallabag" "wallabag/wallabag"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop nginx php8.3-fpm
|
||||
|
||||
@@ -41,7 +41,7 @@ function update_script() {
|
||||
$STD go mod tidy
|
||||
$STD go build
|
||||
cd /opt/wanderer/source/web
|
||||
$STD npm ci --omit=dev
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
msg_ok "Updated wanderer"
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "web-check" "CrazyWolf13/web-check"; then
|
||||
if check_for_gh_release "web-check" "Lissy93/web-check"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop web-check
|
||||
msg_ok "Stopped Service"
|
||||
@@ -38,7 +38,7 @@ function update_script() {
|
||||
msg_ok "Created backup"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "CrazyWolf13/web-check" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "Lissy93/web-check" "tarball"
|
||||
|
||||
msg_info "Restoring backup"
|
||||
mv /opt/.env /opt/web-check
|
||||
|
||||
65
ct/webtrees.sh
Normal file
65
ct/webtrees.sh
Normal file
@@ -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: sudofly
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://webtrees.net/
|
||||
|
||||
APP="Webtrees"
|
||||
var_tags="${var_tags:-genealogy;cms}"
|
||||
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}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/webtrees ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "webtrees" "fisharebest/webtrees"; then
|
||||
msg_info "Stopping Service"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
systemctl stop caddy php${PHP_VER}-fpm
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/webtrees/data /opt/webtrees_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "webtrees" "fisharebest/webtrees" "prebuild" "latest" "/opt/webtrees" "webtrees-*.zip"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/webtrees_data_backup/. /opt/webtrees/data
|
||||
rm -rf /opt/webtrees_data_backup
|
||||
chown -R www-data:www-data /opt/webtrees
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start caddy php${PHP_VER}-fpm
|
||||
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}${CL}"
|
||||
@@ -28,7 +28,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn,node-gyp" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="yarn,node-gyp" setup_nodejs
|
||||
|
||||
if check_for_gh_release "wikijs" "requarks/wiki"; then
|
||||
msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
|
||||
|
||||
@@ -27,7 +27,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
||||
|
||||
if check_for_gh_release "zipline" "diced/zipline"; then
|
||||
msg_info "Stopping Service"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/steveiliop56/tinyauth
|
||||
# Source: https://github.com/tinyauthapp/tinyauth
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@@ -19,8 +19,8 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Tinyauth"
|
||||
mkdir -p /opt/tinyauth
|
||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
||||
RELEASE=$(curl -s https://api.github.com/repos/tinyauthapp/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
||||
chmod +x /opt/tinyauth/tinyauth
|
||||
PASS=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
|
||||
USER=$(htpasswd -Bbn "tinyauth" "${PASS}")
|
||||
|
||||
@@ -65,12 +65,12 @@ $STD make
|
||||
$STD make install
|
||||
$STD ldconfig
|
||||
echo "${GUAC_SERVER_VERSION}" >~/.guacamole_server
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${GUAC_CLIENT_VERSION}/binary/guacamole-${GUAC_CLIENT_VERSION}.war" -o "/opt/apache-guacamole/tomcat9/webapps/guacamole.war"
|
||||
curl_download "/opt/apache-guacamole/tomcat9/webapps/guacamole.war" "https://downloads.apache.org/guacamole/${GUAC_CLIENT_VERSION}/binary/guacamole-${GUAC_CLIENT_VERSION}.war"
|
||||
echo "${GUAC_CLIENT_VERSION}" >~/.guacamole_client
|
||||
curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${MYSQL_CONNECTOR_VERSION}/mysql-connector-j-${MYSQL_CONNECTOR_VERSION}.jar" -o "/etc/guacamole/lib/mysql-connector-j.jar"
|
||||
curl_download "/etc/guacamole/lib/mysql-connector-j.jar" "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${MYSQL_CONNECTOR_VERSION}/mysql-connector-j-${MYSQL_CONNECTOR_VERSION}.jar"
|
||||
echo "${MYSQL_CONNECTOR_VERSION}" >~/.guacamole_mysql_connector
|
||||
cd /root
|
||||
curl -fsSL "https://downloads.apache.org/guacamole/${GUAC_SERVER_VERSION}/binary/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz" -o "/root/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz"
|
||||
curl_download "/root/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz" "https://downloads.apache.org/guacamole/${GUAC_SERVER_VERSION}/binary/guacamole-auth-jdbc-${GUAC_SERVER_VERSION}.tar.gz"
|
||||
$STD tar -xf ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION".tar.gz
|
||||
mv ~/guacamole-auth-jdbc-"$GUAC_SERVER_VERSION"/mysql/guacamole-auth-jdbc-mysql-"$GUAC_SERVER_VERSION".jar /etc/guacamole/extensions/
|
||||
echo "${GUAC_SERVER_VERSION}" >~/.guacamole_auth_jdbc
|
||||
|
||||
@@ -66,7 +66,7 @@ esac
|
||||
msg_info "Installing Tomcat $TOMCAT_VERSION"
|
||||
LATEST_VERSION=$(curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/" | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?/' | sort -V | tail -n 1 | sed 's/\/$//; s/v//')
|
||||
TOMCAT_URL="https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/v$LATEST_VERSION/bin/apache-tomcat-$LATEST_VERSION.tar.gz"
|
||||
curl -fsSL "$TOMCAT_URL" -o "/tmp/tomcat.tar.gz"
|
||||
curl_download "/tmp/tomcat.tar.gz" "$TOMCAT_URL"
|
||||
mkdir -p /opt/tomcat-$TOMCAT_VERSION
|
||||
tar --strip-components=1 -xzf /tmp/tomcat.tar.gz -C /opt/tomcat-$TOMCAT_VERSION
|
||||
chown -R root:root /opt/tomcat-$TOMCAT_VERSION
|
||||
|
||||
257
install/authentik-install.sh
Normal file
257
install/authentik-install.sh
Normal file
@@ -0,0 +1,257 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: Thieneret
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/goauthentik/authentik
|
||||
|
||||
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 \
|
||||
libffi-dev \
|
||||
libxslt-dev \
|
||||
zlib1g-dev \
|
||||
libpq-dev \
|
||||
krb5-multidev \
|
||||
libkrb5-dev \
|
||||
heimdal-multidev \
|
||||
libclang-dev \
|
||||
libltdl-dev \
|
||||
libpq5 \
|
||||
libmaxminddb0 \
|
||||
libkrb5-3 \
|
||||
libkdb5-10 \
|
||||
libkadm5clnt-mit12 \
|
||||
libkadm5clnt7t64-heimdal \
|
||||
libltdl7 \
|
||||
libxslt1.1 \
|
||||
python3-dev \
|
||||
libxml2-dev \
|
||||
libxml2 \
|
||||
libxslt1-dev \
|
||||
automake \
|
||||
autoconf \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
gcc \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_yq
|
||||
setup_go
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.3" setup_uv
|
||||
setup_rust
|
||||
PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="authentik" PG_DB_USER="authentik" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
|
||||
|
||||
XMLSEC_VERSION="1.3.11"
|
||||
AUTHENTIK_VERSION="version/2026.2.3"
|
||||
fetch_and_deploy_gh_release "xmlsec" "lsh123/xmlsec" "tarball" "${XMLSEC_VERSION}" "/opt/xmlsec"
|
||||
fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
||||
fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary"
|
||||
|
||||
msg_info "Setup xmlsec"
|
||||
cd /opt/xmlsec
|
||||
$STD ./autogen.sh
|
||||
$STD make -j $(nproc)
|
||||
$STD make check
|
||||
$STD make install
|
||||
$STD ldconfig
|
||||
msg_ok "xmlsec installed"
|
||||
|
||||
msg_info "Setup web"
|
||||
cd /opt/authentik/web
|
||||
export NODE_ENV="production"
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
$STD npm run build:sfe
|
||||
msg_ok "Web installed"
|
||||
|
||||
msg_info "Setup go proxy"
|
||||
cd /opt/authentik
|
||||
export CGO_ENABLED="1"
|
||||
$STD go mod download
|
||||
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
||||
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
||||
$STD go build -o /opt/authentik/rac ./cmd/rac
|
||||
$STD go build -o /opt/authentik/radius ./cmd/radius
|
||||
msg_ok "Go proxy installed"
|
||||
|
||||
cat <<EOF >/usr/local/etc/GeoIP.conf
|
||||
AccountID ChangeME
|
||||
LicenseKey ChangeME
|
||||
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
|
||||
DatabaseDirectory /opt/authentik-data/geoip
|
||||
RetryFor 5m
|
||||
Parallelism 1
|
||||
EOF
|
||||
|
||||
echo "#39 19 * * 6,4 /usr/bin/geoipupdate -f /usr/local/etc/GeoIP.conf" | crontab -
|
||||
|
||||
msg_info "Setup python server"
|
||||
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export RUSTUP_PERMIT_COPY_RENAME="true"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
cp /opt/authentik/authentik/sources/kerberos/krb5.conf /etc/krb5.conf
|
||||
msg_ok "Installed python server"
|
||||
|
||||
msg_info "Creating authentik config"
|
||||
mkdir -p /etc/authentik
|
||||
mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml
|
||||
yq -i ".secret_key = \"$(openssl rand -base64 128 | tr -dc 'a-zA-Z0-9' | head -c64)\"" /etc/authentik/config.yml
|
||||
yq -i ".postgresql.password = \"${PG_DB_PASS}\"" /etc/authentik/config.yml
|
||||
yq -i ".events.context_processors.geoip = \"/opt/authentik-data/geoip/GeoLite2-City.mmdb\"" /etc/authentik/config.yml
|
||||
yq -i ".events.context_processors.asn = \"/opt/authentik-data/geoip/GeoLite2-ASN.mmdb\"" /etc/authentik/config.yml
|
||||
yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml
|
||||
yq -i ".cert_discovery_dir = \"/opt/authentik-data/certs\"" /etc/authentik/config.yml
|
||||
yq -i ".email.template_dir = \"/opt/authentik-data/templates\"" /etc/authentik/config.yml
|
||||
yq -i ".storage.file.path = \"/opt/authentik-data\"" /etc/authentik/config.yml
|
||||
yq -i ".disable_startup_analytics = \"true\"" /etc/authentik/config.yml
|
||||
$STD useradd -U -s /usr/sbin/nologin -r -M -d /opt/authentik authentik
|
||||
chown -R authentik:authentik /opt/authentik
|
||||
cat <<EOF >/etc/default/authentik
|
||||
TMPDIR=/dev/shm/
|
||||
UV_LINK_MODE=copy
|
||||
UV_PYTHON_DOWNLOADS=0
|
||||
UV_NATIVE_TLS=1
|
||||
VENV_PATH=/opt/authentik/.venv
|
||||
PYTHONDONTWRITEBYTECODE=1
|
||||
PYTHONUNBUFFERED=1
|
||||
PATH=/opt/authentik/lifecycle:/opt/authentik/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
DJANGO_SETTINGS_MODULE=authentik.root.settings
|
||||
PROMETHEUS_MULTIPROC_DIR="/tmp/authentik_prometheus_tmp"
|
||||
EOF
|
||||
cat <<EOF >/etc/default/authentik_ldap
|
||||
AUTHENTIK_HOST="https://127.0.0.1:9443"
|
||||
AUTHENTIK_INSECURE="true"
|
||||
AUTHENTIK_TOKEN="token-generated-by-authentik"
|
||||
EOF
|
||||
cat <<EOF >/etc/default/authentik_rac
|
||||
AUTHENTIK_HOST="https://127.0.0.1:9443"
|
||||
AUTHENTIK_INSECURE="true"
|
||||
AUTHENTIK_TOKEN="token-generated-by-authentik"
|
||||
EOF
|
||||
cat <<EOF >/etc/default/authentik_radius
|
||||
AUTHENTIK_HOST="https://127.0.0.1:9443"
|
||||
AUTHENTIK_INSECURE="true"
|
||||
AUTHENTIK_TOKEN="token-generated-by-authentik"
|
||||
EOF
|
||||
msg_ok "authentik config created"
|
||||
|
||||
msg_info "Creating services"
|
||||
cat <<EOF >/etc/systemd/system/authentik-server.service
|
||||
[Unit]
|
||||
Description=authentik Go Server (API Gateway)
|
||||
After=network.target
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
User=authentik
|
||||
Group=authentik
|
||||
ExecStartPre=/usr/bin/mkdir -p "\${PROMETHEUS_MULTIPROC_DIR}"
|
||||
ExecStart=/opt/authentik/authentik-server
|
||||
WorkingDirectory=/opt/authentik/
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
EnvironmentFile=/etc/default/authentik
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
||||
[Unit]
|
||||
Description=authentik Worker
|
||||
After=network.target postgresql.service
|
||||
|
||||
[Service]
|
||||
User=authentik
|
||||
Group=authentik
|
||||
Type=simple
|
||||
EnvironmentFile=/etc/default/authentik
|
||||
ExecStart=/usr/local/bin/uv run python -m manage worker --pid-file /dev/shm/authentik-worker.pid
|
||||
WorkingDirectory=/opt/authentik
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-ldap.service
|
||||
[Unit]
|
||||
Description=authentik LDAP Outpost
|
||||
After=network.target
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
User=authentik
|
||||
Group=authentik
|
||||
ExecStart=/opt/authentik/ldap
|
||||
WorkingDirectory=/opt/authentik/
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
EnvironmentFile=/etc/default/authentik_ldap
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-rac.service
|
||||
[Unit]
|
||||
Description=authentik RAC Outpost
|
||||
After=network.target
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
User=authentik
|
||||
Group=authentik
|
||||
ExecStart=/opt/authentik/rac
|
||||
WorkingDirectory=/opt/authentik/
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
EnvironmentFile=/etc/default/authentik_rac
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/authentik-radius.service
|
||||
[Unit]
|
||||
Description=authentik Radius Outpost
|
||||
After=network.target
|
||||
Wants=postgresql.service
|
||||
|
||||
[Service]
|
||||
User=authentik
|
||||
Group=authentik
|
||||
ExecStart=/opt/authentik/radius
|
||||
WorkingDirectory=/opt/authentik/
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
EnvironmentFile=/etc/default/authentik_radius
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
msg_ok "Services created"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -50,10 +50,12 @@ Type=simple
|
||||
User=root
|
||||
EnvironmentFile=/opt/bichon/bichon.env
|
||||
WorkingDirectory=/opt/bichon
|
||||
ExecStart=/opt/bichon/bichon
|
||||
ExecStart=/opt/bichon/bichon-server
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
@@ -52,6 +52,7 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox"
|
||||
WorkingDirectory=/opt/calibre-web
|
||||
ExecStart=/opt/calibre-web/.venv/bin/python /opt/calibre-web/cps.py
|
||||
Restart=on-failure
|
||||
|
||||
@@ -16,7 +16,7 @@ update_os
|
||||
msg_info "Install Checkmk"
|
||||
RELEASE=$(curl_with_retry "https://api.github.com/repos/checkmk/checkmk/tags" "-" | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
|
||||
RELEASE="${RELEASE%%+*}"
|
||||
curl_with_retry "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-community-${RELEASE}_0.$(get_os_info codename)_amd64.deb" "/opt/checkmk.deb"
|
||||
curl_download "/opt/checkmk.deb" "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-community-${RELEASE}_0.$(get_os_info codename)_amd64.deb"
|
||||
$STD apt install -y /opt/checkmk.deb
|
||||
rm -rf /opt/checkmk.deb
|
||||
echo "${RELEASE}" >"/opt/checkmk_version.txt"
|
||||
|
||||
64
install/cliproxyapi-install.sh
Normal file
64
install/cliproxyapi-install.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: mathiasnagler
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/router-for-me/CLIProxyAPI
|
||||
|
||||
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 openssl
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Configuring CLIProxyAPI"
|
||||
MANAGEMENT_PASSWORD=$(openssl rand -hex 32)
|
||||
API_KEY="sk-$(openssl rand -hex 16)"
|
||||
cat <<EOF >/opt/cliproxyapi/config.yaml
|
||||
host: ""
|
||||
port: 8317
|
||||
auth-dir: "/root/.cli-proxy-api"
|
||||
remote-management:
|
||||
allow-remote: true
|
||||
secret-key: "${MANAGEMENT_PASSWORD}"
|
||||
api-keys:
|
||||
- "${API_KEY}"
|
||||
request-retry: 3
|
||||
quota-exceeded:
|
||||
switch-project: true
|
||||
switch-preview-model: true
|
||||
routing:
|
||||
strategy: "round-robin"
|
||||
EOF
|
||||
msg_ok "Configured CLIProxyAPI"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/cliproxyapi.service
|
||||
[Unit]
|
||||
Description=CLIProxyAPI
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/cliproxyapi
|
||||
ExecStart=/opt/cliproxyapi/cli-proxy-api
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now cliproxyapi
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -29,7 +29,6 @@ Description=dashy
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/dashy
|
||||
Environment=NODE_OPTIONS=--openssl-legacy-provider
|
||||
ExecStart=/usr/bin/node server.js
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -72,12 +72,12 @@ msg_ok "Configured Environment"
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
RUBY_VERSION=$(cat /opt/dawarich/app/.ruby-version 2>/dev/null || echo "3.4.6")
|
||||
RUBY_VERSION=${RUBY_VERSION} RUBY_INSTALL_RAILS="false" setup_ruby
|
||||
RUBY_VERSION=${RUBY_VERSION} RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
||||
|
||||
msg_info "Installing Dawarich"
|
||||
cd /opt/dawarich/app
|
||||
source /root/.profile
|
||||
export PATH="/root/.rbenv/shims:/root/.rbenv/bin:$PATH"
|
||||
export PATH="/root/.rbenv/shims:/root/.rbenv/bin:${PATH}"
|
||||
eval "$(/root/.rbenv/bin/rbenv init - bash)"
|
||||
set -a && source /opt/dawarich/.env && set +a
|
||||
$STD gem install bundler
|
||||
|
||||
88
install/degoog-install.sh
Normal file
88
install/degoog-install.sh
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/fccview/degoog
|
||||
|
||||
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 \
|
||||
git \
|
||||
unzip
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Bun"
|
||||
export BUN_INSTALL="/root/.bun"
|
||||
curl -fsSL https://bun.sh/install | $STD bash
|
||||
ln -sf /root/.bun/bin/bun /usr/local/bin/bun
|
||||
ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx
|
||||
msg_ok "Installed Bun"
|
||||
|
||||
fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Setting up degoog"
|
||||
mkdir -p /opt/degoog/data/{engines,plugins,themes,store}
|
||||
|
||||
cat <<EOF >/opt/degoog/.env
|
||||
DEGOOG_PORT=4444
|
||||
DEGOOG_ENGINES_DIR=/opt/degoog/data/engines
|
||||
DEGOOG_PLUGINS_DIR=/opt/degoog/data/plugins
|
||||
DEGOOG_THEMES_DIR=/opt/degoog/data/themes
|
||||
DEGOOG_ALIASES_FILE=/opt/degoog/data/aliases.json
|
||||
DEGOOG_PLUGIN_SETTINGS_FILE=/opt/degoog/data/plugin-settings.json
|
||||
# DEGOOG_SETTINGS_PASSWORDS=changeme
|
||||
# DEGOOG_PUBLIC_INSTANCE=false
|
||||
# LOGGER=debug
|
||||
EOF
|
||||
|
||||
if [[ ! -f /opt/degoog/data/aliases.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/aliases.json
|
||||
{}
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ ! -f /opt/degoog/data/plugin-settings.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/plugin-settings.json
|
||||
{}
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ ! -f /opt/degoog/data/repos.json ]]; then
|
||||
cat <<EOF >/opt/degoog/data/repos.json
|
||||
[]
|
||||
EOF
|
||||
fi
|
||||
msg_ok "Set up degoog"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/degoog.service
|
||||
[Unit]
|
||||
Description=degoog
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/degoog
|
||||
EnvironmentFile=/opt/degoog/.env
|
||||
ExecStart=/usr/local/bin/bun run src/server/index.ts
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now degoog
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
164
install/docuseal-install.sh
Normal file
164
install/docuseal-install.sh
Normal file
@@ -0,0 +1,164 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.docuseal.com/
|
||||
|
||||
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 \
|
||||
git \
|
||||
libpq-dev \
|
||||
libssl-dev \
|
||||
libyaml-dev \
|
||||
libreadline-dev \
|
||||
zlib1g-dev \
|
||||
libffi-dev \
|
||||
libvips42 \
|
||||
libvips-dev \
|
||||
libheif1 \
|
||||
redis-server \
|
||||
fontconfig
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
RUBY_VERSION="4.0.1" RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
||||
PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="docuseal" PG_DB_USER="docuseal" setup_postgresql_db
|
||||
|
||||
msg_info "Downloading Fonts and PDFium"
|
||||
mkdir -p /opt/fonts /usr/share/fonts/noto
|
||||
ARCH=$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/')
|
||||
curl -fsSL -o /opt/fonts/GoNotoKurrent-Regular.ttf \
|
||||
https://github.com/satbyy/go-noto-universal/releases/download/v7.0/GoNotoKurrent-Regular.ttf
|
||||
curl -fsSL -o /opt/fonts/GoNotoKurrent-Bold.ttf \
|
||||
https://github.com/satbyy/go-noto-universal/releases/download/v7.0/GoNotoKurrent-Bold.ttf
|
||||
curl -fsSL -o /opt/fonts/DancingScript-Regular.otf \
|
||||
https://github.com/impallari/DancingScript/raw/master/fonts/DancingScript-Regular.otf
|
||||
ln -sf /opt/fonts/GoNotoKurrent-Regular.ttf /usr/share/fonts/noto/
|
||||
ln -sf /opt/fonts/GoNotoKurrent-Bold.ttf /usr/share/fonts/noto/
|
||||
$STD fc-cache -f
|
||||
curl -fsSL -o /tmp/pdfium.tgz \
|
||||
"https://github.com/bblanchon/pdfium-binaries/releases/latest/download/pdfium-linux-${ARCH}.tgz"
|
||||
mkdir -p /tmp/pdfium && tar -xzf /tmp/pdfium.tgz -C /tmp/pdfium
|
||||
cp /tmp/pdfium/lib/libpdfium.so /usr/lib/libpdfium.so
|
||||
rm -rf /tmp/pdfium /tmp/pdfium.tgz
|
||||
msg_ok "Downloaded Fonts and PDFium"
|
||||
|
||||
fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
|
||||
|
||||
msg_info "Downloading Field Detection Model"
|
||||
mkdir -p /opt/docuseal/tmp
|
||||
curl -fsSL -o /opt/docuseal/tmp/model.onnx \
|
||||
"https://github.com/docusealco/fields-detection/releases/download/2.0.0/model_704_int8.onnx"
|
||||
mkdir -p /opt/docuseal/public/fonts
|
||||
ln -sf /opt/fonts/DancingScript-Regular.otf /opt/docuseal/public/fonts/DancingScript-Regular.otf
|
||||
msg_ok "Downloaded Field Detection Model"
|
||||
|
||||
msg_info "Configuring DocuSeal"
|
||||
SECRET_KEY=$(openssl rand -hex 64)
|
||||
mkdir -p /opt/docuseal/data
|
||||
cat <<EOF >/opt/docuseal/.env
|
||||
RAILS_ENV=production
|
||||
NODE_ENV=production
|
||||
RAILS_LOG_TO_STDOUT=true
|
||||
RAILS_SERVE_STATIC_FILES=true
|
||||
SECRET_KEY_BASE=${SECRET_KEY}
|
||||
DATABASE_URL=postgresql://docuseal:${PG_DB_PASS}@127.0.0.1:5432/docuseal
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
WORKDIR=/opt/docuseal/data
|
||||
VIPS_MAX_COORD=17000
|
||||
EOF
|
||||
msg_ok "Configured DocuSeal"
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/docuseal
|
||||
export PATH="/root/.rbenv/bin:/root/.rbenv/shims:${PATH}"
|
||||
eval "$(rbenv init - bash)" 2>/dev/null || true
|
||||
export RAILS_ENV=production
|
||||
export NODE_ENV=production
|
||||
export SECRET_KEY_BASE_DUMMY=1
|
||||
set -a
|
||||
source /opt/docuseal/.env
|
||||
set +a
|
||||
$STD bundle config set --local deployment 'true'
|
||||
$STD bundle config set --local without 'development:test'
|
||||
$STD bundle install -j"$(nproc)"
|
||||
$STD yarn install --network-timeout 1000000
|
||||
$STD ./bin/shakapacker
|
||||
$STD bundle exec rails db:migrate
|
||||
$STD bundle exec bootsnap precompile -j 1 --gemfile app/ lib/
|
||||
msg_ok "Built Application"
|
||||
|
||||
msg_info "Enabling Redis"
|
||||
systemctl enable -q --now redis-server
|
||||
msg_ok "Enabled Redis"
|
||||
|
||||
msg_info "Creating docuseal User"
|
||||
id docuseal &>/dev/null || useradd -u 2000 -M -s /usr/sbin/nologin -d /opt/docuseal docuseal
|
||||
chmod o+x /root
|
||||
chmod -R o+rX /root/.rbenv
|
||||
chown -R docuseal:docuseal /opt/docuseal /opt/fonts
|
||||
msg_ok "Created docuseal User"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/docuseal.service
|
||||
[Unit]
|
||||
Description=DocuSeal Web
|
||||
After=network.target postgresql.service redis-server.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=docuseal
|
||||
Group=docuseal
|
||||
WorkingDirectory=/opt/docuseal
|
||||
EnvironmentFile=/opt/docuseal/.env
|
||||
Environment=HOME=/opt/docuseal
|
||||
Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
Environment=BUNDLE_GEMFILE=/opt/docuseal/Gemfile
|
||||
Environment=BUNDLE_WITHOUT=development:test
|
||||
ExecStart=/opt/docuseal/bin/bundle exec puma -C /opt/docuseal/config/puma.rb --dir /opt/docuseal -p 3000
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/docuseal-sidekiq.service
|
||||
[Unit]
|
||||
Description=DocuSeal Sidekiq
|
||||
After=network.target postgresql.service redis-server.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=docuseal
|
||||
Group=docuseal
|
||||
WorkingDirectory=/opt/docuseal
|
||||
EnvironmentFile=/opt/docuseal/.env
|
||||
Environment=HOME=/opt/docuseal
|
||||
Environment=PATH=/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
Environment=BUNDLE_GEMFILE=/opt/docuseal/Gemfile
|
||||
Environment=BUNDLE_WITHOUT=development:test
|
||||
ExecStart=/opt/docuseal/bin/bundle exec sidekiq
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now docuseal docuseal-sidekiq
|
||||
msg_ok "Created Services"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -69,6 +69,13 @@ 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'
|
||||
|
||||
msg_info "Starting Redis Services for Site Setup"
|
||||
$STD sudo -u frappe bash -c 'redis-server /opt/frappe-bench/config/redis_queue.conf --daemonize yes'
|
||||
$STD sudo -u frappe bash -c 'redis-server /opt/frappe-bench/config/redis_cache.conf --daemonize yes'
|
||||
sleep 3
|
||||
msg_ok "Started Redis Services for Site Setup"
|
||||
|
||||
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:\$PATH\"; cd /opt/frappe-bench && bench new-site site1.local --db-root-username root --db-root-password \"$DB_ROOT_PASS\" --admin-password \"$ADMIN_PASS\" --install-app erpnext --set-default"
|
||||
msg_ok "Initialized Frappe Bench"
|
||||
|
||||
|
||||
58
install/espconnect-install.sh
Normal file
58
install/espconnect-install.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: John Lombardo (programbo)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thelastoutpostworkshop/ESPConnect
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "espconnect" "thelastoutpostworkshop/ESPConnect" "prebuild" "latest" "/opt/espconnect" "dist.zip"
|
||||
create_self_signed_cert
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
mkdir -p /etc/ssl/private
|
||||
cat <<'EOF' >/etc/nginx/sites-available/espconnect
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
|
||||
ssl_certificate /etc/ssl/certs/espconnect-selfsigned.crt;
|
||||
ssl_certificate_key /etc/ssl/private/espconnect-selfsigned.key;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
root /opt/espconnect;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/espconnect /etc/nginx/sites-enabled/espconnect
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
systemctl enable -q nginx
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -17,11 +17,12 @@ msg_info "Installing Dependencies"
|
||||
$STD apt install -y xdg-utils
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
|
||||
|
||||
msg_info "Configuring Excalidraw"
|
||||
cd /opt/excalidraw
|
||||
$STD yarn config set ignore-engines true
|
||||
$STD yarn
|
||||
msg_ok "Setup Excalidraw"
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
NODE_VERSION="20" setup_nodejs
|
||||
NODE_VERSION="20" NODE_MODULE="pnpm" setup_nodejs
|
||||
|
||||
msg_info "Installing FlowiseAI (Patience)"
|
||||
$STD npm install -g flowise \
|
||||
$STD pnpm add -g flowise \
|
||||
@opentelemetry/exporter-trace-otlp-grpc \
|
||||
@opentelemetry/exporter-trace-otlp-proto \
|
||||
@opentelemetry/sdk-trace-node \
|
||||
@@ -33,7 +33,7 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/opt/flowiseai/.env
|
||||
ExecStart=npx flowise start
|
||||
ExecStart=flowise start
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -169,13 +169,13 @@ NODE_VERSION="20" setup_nodejs
|
||||
|
||||
msg_info "Downloading Inference Models"
|
||||
mkdir -p /models /openvino-model
|
||||
curl_with_retry "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite" "/edgetpu_model.tflite"
|
||||
curl_with_retry "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite" "/models/cpu_model.tflite"
|
||||
curl_download "/edgetpu_model.tflite" "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite"
|
||||
curl_download "/models/cpu_model.tflite" "https://github.com/google-coral/test_data/raw/release-frogfish/ssdlite_mobiledet_coco_qat_postprocess.tflite"
|
||||
cp /opt/frigate/labelmap.txt /labelmap.txt
|
||||
msg_ok "Downloaded Inference Models"
|
||||
|
||||
msg_info "Downloading Audio Model"
|
||||
curl_with_retry "https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download" "/tmp/yamnet.tar.gz"
|
||||
curl_download "/tmp/yamnet.tar.gz" "https://www.kaggle.com/api/v1/models/google/yamnet/tfLite/classification-tflite/1/download"
|
||||
$STD tar xzf /tmp/yamnet.tar.gz -C /
|
||||
mv /1.tflite /cpu_audio_model.tflite
|
||||
cp /opt/frigate/audio-labelmap.txt /audio-labelmap.txt
|
||||
@@ -188,7 +188,7 @@ msg_ok "Installed OpenVino"
|
||||
|
||||
msg_info "Building OpenVino Model"
|
||||
cd /models
|
||||
curl_with_retry "http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz" "ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz"
|
||||
curl_download "ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz" "http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz"
|
||||
$STD tar -zxf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz --no-same-owner
|
||||
if python3 /opt/frigate/docker/main/build_ov_model.py &>/dev/null; then
|
||||
mkdir -p /openvino-model
|
||||
@@ -246,7 +246,7 @@ msg_info "Configuring Frigate"
|
||||
mkdir -p /config /media/frigate
|
||||
cp -r /opt/frigate/config/. /config
|
||||
|
||||
curl_with_retry "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4" "/media/frigate/person-bicycle-car-detection.mp4"
|
||||
curl_download "/media/frigate/person-bicycle-car-detection.mp4" "https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4"
|
||||
|
||||
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >>/etc/fstab
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ $STD apt install -y \
|
||||
git
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
||||
|
||||
msg_info "Preparing Fumadocs - "
|
||||
mkdir -p /opt/fumadocs
|
||||
|
||||
@@ -33,7 +33,7 @@ msg_ok "Set up Python Backend"
|
||||
msg_info "Configuring Homelable"
|
||||
mkdir -p /opt/homelable/data
|
||||
SECRET_KEY=$(openssl rand -hex 32)
|
||||
BCRYPT_HASH=$(/opt/homelable/backend/.venv/bin/python -c "from passlib.context import CryptContext; print(CryptContext(schemes=['bcrypt']).hash('admin'))")
|
||||
BCRYPT_HASH=$(/opt/homelable/backend/.venv/bin/python -c "import bcrypt; print(bcrypt.hashpw(b'admin', bcrypt.gensalt()).decode())")
|
||||
cat <<EOF >/opt/homelable/backend/.env
|
||||
SECRET_KEY=${SECRET_KEY}
|
||||
SQLITE_PATH=/opt/homelable/data/homelab.db
|
||||
@@ -59,7 +59,7 @@ while [[ -z "$NEW_PASS" ]]; do
|
||||
fi
|
||||
done
|
||||
|
||||
HASH=$(/opt/homelable/backend/.venv/bin/python -c "from passlib.context import CryptContext; print(CryptContext(schemes=['bcrypt']).hash('${NEW_PASS}'))")
|
||||
HASH=$(/opt/homelable/backend/.venv/bin/python -c "import bcrypt; print(bcrypt.hashpw('${NEW_PASS}'.encode(), bcrypt.gensalt()).decode())")
|
||||
|
||||
sed -i "s|^AUTH_PASSWORD_HASH=.*|AUTH_PASSWORD_HASH='${HASH}'|" /opt/homelable/backend/.env
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ msg_info "Installing Homepage (Patience)"
|
||||
mkdir -p /opt/homepage/config
|
||||
cd /opt/homepage
|
||||
cp /opt/homepage/src/skeleton/* /opt/homepage/config
|
||||
echo 'onlyBuiltDependencies=*' >> .npmrc
|
||||
$STD pnpm install
|
||||
export NEXT_PUBLIC_VERSION="v$RELEASE"
|
||||
export NEXT_PUBLIC_REVISION="source"
|
||||
|
||||
58
install/hoodik-install.sh
Normal file
58
install/hoodik-install.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/hudikhq/hoodik
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "hoodik" "hudikhq/hoodik" "prebuild" "latest" "/opt/hoodik" "*x86_64.tar.gz"
|
||||
|
||||
msg_info "Configuring Hoodik"
|
||||
mkdir -p /opt/hoodik_data
|
||||
JWT_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)
|
||||
cat <<EOF >/opt/hoodik/.env
|
||||
DATA_DIR=/opt/hoodik_data
|
||||
HTTP_PORT=5443
|
||||
HTTP_ADDRESS=0.0.0.0
|
||||
JWT_SECRET=${JWT_SECRET}
|
||||
APP_URL=http://${LOCAL_IP}:5443
|
||||
SSL_DISABLED=true
|
||||
COOKIE_SECURE=false
|
||||
COOKIE_HTTP_ONLY=false
|
||||
MAILER_TYPE=none
|
||||
RUST_LOG=hoodik=info,error=info
|
||||
EOF
|
||||
msg_ok "Configured Hoodik"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/hoodik.service
|
||||
[Unit]
|
||||
Description=Hoodik - Encrypted File Storage
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/hoodik_data
|
||||
EnvironmentFile=/opt/hoodik/.env
|
||||
ExecStart=/opt/hoodik/hoodik
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now hoodik
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -30,6 +30,7 @@ cat <<EOF >/etc/inspircd/inspircd.conf
|
||||
email="irc@&networkDomain;">
|
||||
<bind address="" port="6667" type="clients">
|
||||
EOF
|
||||
systemctl enable -q --now inspircd
|
||||
msg_ok "Installed InspIRCd"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -90,6 +90,11 @@ MAIL_PORT=2525
|
||||
MAIL_FROM_ADDRESS="investbrain@${LOCAL_IP}"
|
||||
|
||||
VITE_APP_NAME=Investbrain
|
||||
|
||||
# Reverse Proxy Support (uncomment and set APP_URL/ASSET_URL to your domain when using a reverse proxy)
|
||||
# APP_URL=https://your-domain.com
|
||||
# ASSET_URL=https://your-domain.com
|
||||
# TRUSTED_PROXIES=*
|
||||
EOF
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
$STD /usr/local/bin/composer install --no-interaction --no-dev --optimize-autoloader
|
||||
|
||||
@@ -17,7 +17,7 @@ NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Setup jotty"
|
||||
mkdir -p data/{users,checklists,notes}
|
||||
mkdir -p /opt/jotty/data/{users,checklists,notes}
|
||||
|
||||
cat <<EOF >/opt/jotty/.env
|
||||
NODE_ENV=production
|
||||
|
||||
@@ -20,7 +20,7 @@ msg_ok "Installed Docker"
|
||||
msg_info "Detecting latest Kasm Workspaces release"
|
||||
KASM_VERSION=$(curl -s https://kasm.com/downloads | grep -oP '<h1[^>]*>.*?</h1>' | sed -E 's/<\/?h1[^>]*>//g' | grep -oP '\d+\.\d+\.\d+')
|
||||
KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION:-var_kasm_version}.tar.gz"
|
||||
|
||||
|
||||
# KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||
# if [[ -z "$KASM_URL" ]]; then
|
||||
# SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
|
||||
@@ -50,7 +50,7 @@ if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
fi
|
||||
|
||||
msg_info "Installing Kasm Workspaces"
|
||||
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||
curl_download "/opt/kasm_release_${KASM_VERSION}.tar.gz" "$KASM_URL"
|
||||
cd /opt
|
||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||
chmod +x /opt/kasm_release/install.sh
|
||||
|
||||
@@ -47,8 +47,7 @@ msg_info "Setting up KitchenOwl"
|
||||
cd /opt/kitchenowl/backend
|
||||
$STD uv sync --no-dev
|
||||
sed -i 's/default=True/default=False/' /opt/kitchenowl/backend/wsgi.py
|
||||
mkdir -p /nltk_data
|
||||
$STD uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
|
||||
setup_nltk "averaged_perceptron_tagger_eng" "/nltk_data"
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
mkdir -p /opt/kitchenowl/data
|
||||
cat <<EOF >/opt/kitchenowl/kitchenowl.env
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: stout01
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/BerriAI/litellm
|
||||
|
||||
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 \
|
||||
python3-dev
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
PG_DB_NAME="litellm_db" PG_DB_USER="litellm" setup_postgresql_db
|
||||
PYTHON_VERSION="3.13" USE_UVX="YES" setup_uv
|
||||
|
||||
msg_info "Setting up Virtual Environment"
|
||||
mkdir -p /opt/litellm
|
||||
cd /opt/litellm
|
||||
$STD uv venv --clear /opt/litellm/.venv
|
||||
$STD /opt/litellm/.venv/bin/python -m ensurepip --upgrade
|
||||
$STD /opt/litellm/.venv/bin/python -m pip install --upgrade pip
|
||||
$STD /opt/litellm/.venv/bin/python -m pip install litellm[proxy] prisma
|
||||
$STD /opt/litellm/.venv/bin/prisma generate
|
||||
msg_ok "Installed LiteLLM"
|
||||
|
||||
msg_info "Configuring LiteLLM"
|
||||
mkdir -p /opt
|
||||
cat <<EOF >/opt/litellm/litellm.yaml
|
||||
general_settings:
|
||||
master_key: sk-1234
|
||||
database_url: postgresql://$PG_DB_USER:$PG_DB_PASS@127.0.0.1:5432/$PG_DB_NAME
|
||||
store_model_in_db: true
|
||||
EOF
|
||||
$STD /opt/litellm/.venv/bin/litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
|
||||
msg_ok "Configured LiteLLM"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/litellm.service
|
||||
[Unit]
|
||||
Description=LiteLLM
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/opt/litellm/.venv/bin/litellm --config /opt/litellm/litellm.yaml
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now litellm
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
101
install/lobehub-install.sh
Normal file
101
install/lobehub-install.sh
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/lobehub/lobehub
|
||||
|
||||
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"
|
||||
|
||||
PG_VERSION="17" PG_MODULES="pgvector" setup_postgresql
|
||||
|
||||
CODENAME=$(. /etc/os-release && echo "${VERSION_CODENAME:-bookworm}")
|
||||
fetch_and_deploy_gh_release "paradedb" "paradedb/paradedb" "binary" "latest" "" "postgresql-17-pg-search_*-1PARADEDB-${CODENAME}_$(dpkg --print-architecture).deb"
|
||||
|
||||
msg_info "Configuring pg_search preload library"
|
||||
if ! grep -q "shared_preload_libraries.*pg_search" /etc/postgresql/17/main/postgresql.conf; then
|
||||
echo "shared_preload_libraries = 'pg_search'" >>/etc/postgresql/17/main/postgresql.conf
|
||||
fi
|
||||
systemctl restart postgresql
|
||||
msg_ok "Configured pg_search preload library"
|
||||
|
||||
PG_DB_NAME="lobehub" PG_DB_USER="lobehub" PG_DB_EXTENSIONS="vector,pg_search" setup_postgresql_db
|
||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
||||
|
||||
fetch_and_deploy_gh_release "lobehub" "lobehub/lobehub" "tarball"
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/lobehub
|
||||
export DATABASE_URL="postgres://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}"
|
||||
export DATABASE_DRIVER="node"
|
||||
export KEY_VAULTS_SECRET="$(openssl rand -base64 32)"
|
||||
export AUTH_SECRET="$(openssl rand -base64 32)"
|
||||
export APP_URL="http://localhost:3210"
|
||||
$STD pnpm install
|
||||
$STD pnpm run build:docker
|
||||
msg_ok "Built Application"
|
||||
|
||||
msg_info "Configuring Application"
|
||||
KEY_VAULTS_SECRET=$(openssl rand -base64 32)
|
||||
AUTH_SECRET=$(openssl rand -base64 32)
|
||||
cat <<EOF >/opt/lobehub/.env
|
||||
DATABASE_URL=postgres://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
||||
DATABASE_DRIVER=node
|
||||
KEY_VAULTS_SECRET=${KEY_VAULTS_SECRET}
|
||||
AUTH_SECRET=${AUTH_SECRET}
|
||||
APP_URL=http://${LOCAL_IP}:3210
|
||||
HOSTNAME=0.0.0.0
|
||||
PORT=3210
|
||||
NODE_ENV=production
|
||||
EOF
|
||||
msg_ok "Configured Application"
|
||||
|
||||
msg_info "Setting Up Standalone"
|
||||
cp -r /opt/lobehub/.next/static /opt/lobehub/.next/standalone/.next/static
|
||||
cp -r /opt/lobehub/public /opt/lobehub/.next/standalone/public
|
||||
cp -r /opt/lobehub/scripts/migrateServerDB/* /opt/lobehub/.next/standalone/
|
||||
cp -r /opt/lobehub/packages/database/migrations /opt/lobehub/.next/standalone/migrations
|
||||
msg_ok "Set Up Standalone"
|
||||
|
||||
msg_info "Running Database Migrations"
|
||||
cd /opt/lobehub/.next/standalone
|
||||
set -a && source /opt/lobehub/.env && set +a
|
||||
$STD node /opt/lobehub/.next/standalone/docker.cjs
|
||||
msg_ok "Ran Database Migrations"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/lobehub.service
|
||||
[Unit]
|
||||
Description=LobeHub
|
||||
After=network.target postgresql.service
|
||||
Requires=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/lobehub/.next/standalone
|
||||
EnvironmentFile=/opt/lobehub/.env
|
||||
ExecStart=/usr/bin/node /opt/lobehub/.next/standalone/server.js
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable -q --now lobehub
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
75
install/lychee-install.sh
Normal file
75
install/lychee-install.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/LycheeOrg/Lychee
|
||||
|
||||
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 \
|
||||
caddy \
|
||||
libimage-exiftool-perl \
|
||||
jpegoptim
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="bcmath,ldap,exif,gd,intl,imagick,redis,zip,pdo_pgsql,pcntl" setup_php
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="lychee" PG_DB_USER="lychee" setup_postgresql_db
|
||||
setup_ffmpeg
|
||||
setup_imagemagick
|
||||
|
||||
fetch_and_deploy_gh_release "lychee" "LycheeOrg/Lychee" "prebuild" "latest" "/opt/lychee" "Lychee.zip"
|
||||
|
||||
msg_info "Configuring Application"
|
||||
cd /opt/lychee
|
||||
cp .env.example .env
|
||||
APP_KEY=$($STD php artisan key:generate --show)
|
||||
sed -i "s|^APP_KEY=.*|APP_KEY=${APP_KEY}|" .env
|
||||
sed -i "s|^APP_ENV=.*|APP_ENV=production|" .env
|
||||
sed -i "s|^APP_DEBUG=.*|APP_DEBUG=false|" .env
|
||||
sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" .env
|
||||
sed -i "s|^DB_CONNECTION=.*|DB_CONNECTION=pgsql|" .env
|
||||
sed -i "s|^DB_HOST=.*|DB_HOST=127.0.0.1|" .env
|
||||
sed -i "s|^DB_PORT=.*|DB_PORT=5432|" .env
|
||||
sed -i "s|^#\?DB_DATABASE=.*|DB_DATABASE=${PG_DB_NAME}|" .env
|
||||
sed -i "s|^DB_USERNAME=.*|DB_USERNAME=${PG_DB_USER}|" .env
|
||||
sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${PG_DB_PASS}|" .env
|
||||
mkdir -p storage/framework/{cache,sessions,views} storage/logs bootstrap/cache public/dist public/uploads public/sym
|
||||
touch public/dist/user.css public/dist/custom.js
|
||||
chmod -R 775 storage bootstrap/cache public/dist public/uploads public/sym
|
||||
msg_ok "Configured Application"
|
||||
|
||||
msg_info "Running Database Migrations"
|
||||
cd /opt/lychee
|
||||
$STD php artisan migrate --force
|
||||
msg_ok "Ran Database Migrations"
|
||||
|
||||
chown -R www-data:www-data /opt/lychee
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
:80 {
|
||||
root * /opt/lychee/public
|
||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
||||
file_server
|
||||
encode gzip
|
||||
}
|
||||
EOF
|
||||
usermod -aG www-data caddy
|
||||
msg_ok "Configured Caddy"
|
||||
|
||||
systemctl enable -q --now php${PHP_VER}-fpm
|
||||
systemctl restart caddy
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -55,11 +55,7 @@ mkdir -p /opt/mealie/mealie/frontend
|
||||
cp -r /opt/mealie/frontend/dist/* /opt/mealie/mealie/frontend/
|
||||
msg_ok "Copied Frontend"
|
||||
|
||||
msg_info "Downloading NLTK Data"
|
||||
mkdir -p /nltk_data/
|
||||
cd /opt/mealie
|
||||
$STD uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
|
||||
msg_ok "Downloaded NLTK Data"
|
||||
setup_nltk "averaged_perceptron_tagger_eng" "/nltk_data"
|
||||
|
||||
msg_info "Writing Environment File"
|
||||
SECRET=$(openssl rand -hex 32)
|
||||
|
||||
@@ -30,7 +30,7 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup NextPVR (Patience)"
|
||||
cd /opt
|
||||
curl -fsSL "https://nextpvr.com/nextpvr-helper.deb" -o "/opt/nextpvr-helper.deb"
|
||||
curl_download "/opt/nextpvr-helper.deb" "https://nextpvr.com/nextpvr-helper.deb"
|
||||
$STD dpkg -i nextpvr-helper.deb
|
||||
rm -rf /opt/nextpvr-helper.deb
|
||||
msg_ok "Installed NextPVR"
|
||||
|
||||
@@ -62,26 +62,15 @@ $STD apt install -y --no-install-recommends intel-basekit-2024.1
|
||||
msg_ok "Installed Intel® oneAPI Base Toolkit"
|
||||
|
||||
msg_info "Installing Ollama (Patience)"
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
|
||||
OLLAMA_INSTALL_DIR="/usr/local/lib/ollama"
|
||||
BINDIR="/usr/local/bin"
|
||||
mkdir -p $OLLAMA_INSTALL_DIR
|
||||
OLLAMA_URL="https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tar.zst"
|
||||
TMP_TAR="/tmp/ollama.tar.zst"
|
||||
echo -e "\n"
|
||||
if curl -fL# -C - -o "$TMP_TAR" "$OLLAMA_URL"; then
|
||||
if tar --zstd -xf "$TMP_TAR" -C "$OLLAMA_INSTALL_DIR"; then
|
||||
ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" "$BINDIR/ollama"
|
||||
echo "${RELEASE}" >/opt/Ollama_version.txt
|
||||
msg_ok "Installed Ollama ${RELEASE}"
|
||||
else
|
||||
msg_error "Extraction failed – archive corrupt or incomplete"
|
||||
exit 251
|
||||
fi
|
||||
else
|
||||
msg_error "Download failed – $OLLAMA_URL not reachable"
|
||||
mkdir -p "$OLLAMA_INSTALL_DIR"
|
||||
if ! fetch_and_deploy_gh_release "ollama" "ollama/ollama" "prebuild" "latest" "$OLLAMA_INSTALL_DIR" "ollama-linux-amd64.tar.zst"; then
|
||||
msg_error "Failed to download or deploy Ollama – check network connectivity and GitHub API availability"
|
||||
exit 250
|
||||
fi
|
||||
ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" "$BINDIR/ollama"
|
||||
msg_ok "Installed Ollama"
|
||||
|
||||
msg_info "Creating ollama User and Group"
|
||||
if ! id ollama >/dev/null 2>&1; then
|
||||
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
|
||||
if ! dpkg -l | grep -q 'libssl1.1'; then
|
||||
msg_info "Installing libssl (if needed)"
|
||||
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u5_amd64.deb" -o "/tmp/libssl.deb"
|
||||
curl_download "/tmp/libssl.deb" "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u5_amd64.deb"
|
||||
$STD dpkg -i /tmp/libssl.deb
|
||||
rm -f /tmp/libssl.deb
|
||||
msg_ok "Installed libssl1.1"
|
||||
@@ -38,10 +38,12 @@ msg_info "Installing Omada Controller"
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
|
||||
head -n1)
|
||||
OMADA_PKG=$(basename "$OMADA_URL")
|
||||
curl -fsSL "$OMADA_URL" -o "$OMADA_PKG"
|
||||
$STD dpkg -i "$OMADA_PKG"
|
||||
rm -rf "$OMADA_PKG"
|
||||
OMADA_PKG=$(basename "${OMADA_URL}")
|
||||
curl_download "${OMADA_PKG}" "${OMADA_URL}"
|
||||
$STD dpkg -i "${OMADA_PKG}"
|
||||
rm -rf "${OMADA_PKG}"
|
||||
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_.*_\([0-9]\{14\}\)\.deb$/\1-\2/p' <<<"${OMADA_PKG}")
|
||||
echo "${VERSION}" >$HOME/.omada
|
||||
msg_ok "Installed Omada Controller"
|
||||
|
||||
motd_ssh
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user