mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-07 18:28:11 +00:00
Compare commits
234 Commits
2025-11-16
...
2025-12-01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a20c5b22d | ||
|
|
279427f38d | ||
|
|
2bd3b8bffa | ||
|
|
c7ecc9cd13 | ||
|
|
3d99dfd218 | ||
|
|
11f1fdf2fa | ||
|
|
3596312f20 | ||
|
|
e5cc0a4726 | ||
|
|
c34659ced2 | ||
|
|
c5eae09b93 | ||
|
|
fd8a305129 | ||
|
|
64d0070756 | ||
|
|
5dcada4ef9 | ||
|
|
452007b654 | ||
|
|
6cf4eb603a | ||
|
|
1b40a62959 | ||
|
|
01cba0213f | ||
|
|
6f12aa7a5d | ||
|
|
ec182aeaaf | ||
|
|
4d4095cd7d | ||
|
|
40ccccb557 | ||
|
|
59b80031fe | ||
|
|
1294b89fcb | ||
|
|
605c11d43f | ||
|
|
b0586e347c | ||
|
|
ce42f9077a | ||
|
|
d0f82d7c23 | ||
|
|
1ec9a00abf | ||
|
|
8ab9666368 | ||
|
|
fc559e0e09 | ||
|
|
380bf26d38 | ||
|
|
c1f7d3d8d7 | ||
|
|
33489e607b | ||
|
|
877a25c0cc | ||
|
|
8c0abc9ffb | ||
|
|
a43e287db2 | ||
|
|
1cd394a754 | ||
|
|
04bd9af89c | ||
|
|
4d8fa37ba0 | ||
|
|
b4fe802d49 | ||
|
|
9b6c816c6f | ||
|
|
769e541938 | ||
|
|
af9491d70d | ||
|
|
38dd38a9e2 | ||
|
|
5465a5dc58 | ||
|
|
5c6e73d4b6 | ||
|
|
f3c2ca6f8a | ||
|
|
64df48c9b5 | ||
|
|
9f20c898fb | ||
|
|
efdb44bc2e | ||
|
|
8caec1d13e | ||
|
|
39388a1b77 | ||
|
|
91b80caaa5 | ||
|
|
dc3736146a | ||
|
|
40edc3e908 | ||
|
|
92bc24d1e5 | ||
|
|
bdef4cbfef | ||
|
|
7d47eb81e9 | ||
|
|
276ce230f3 | ||
|
|
5f911164e3 | ||
|
|
8c6843f180 | ||
|
|
5004477246 | ||
|
|
8e15e0a524 | ||
|
|
54b634cea4 | ||
|
|
d4e1b8f354 | ||
|
|
1a4f9ff815 | ||
|
|
ee3d4874d1 | ||
|
|
01442d08ec | ||
|
|
e1bf05ad69 | ||
|
|
7d435a1a5e | ||
|
|
7184755a0f | ||
|
|
f0a23be999 | ||
|
|
93a764676f | ||
|
|
21e9030946 | ||
|
|
01774b1967 | ||
|
|
63c5b922de | ||
|
|
789cd3e187 | ||
|
|
282e8ef186 | ||
|
|
8a0b1d864b | ||
|
|
d2a103c230 | ||
|
|
949ecc39ad | ||
|
|
a9c08a611e | ||
|
|
e13119250d | ||
|
|
87f71f75b1 | ||
|
|
3b6e5aae5f | ||
|
|
f90fdadbb2 | ||
|
|
120affbcc5 | ||
|
|
ae81cafa10 | ||
|
|
f60493a862 | ||
|
|
0cbce2287d | ||
|
|
edfeda61ad | ||
|
|
1815fee99b | ||
|
|
4bf830c6bf | ||
|
|
d0cced9a1d | ||
|
|
a56f7cfd45 | ||
|
|
79f7852777 | ||
|
|
e54f372079 | ||
|
|
cf89b17b0d | ||
|
|
bb40a3fdd3 | ||
|
|
4ffa571a34 | ||
|
|
48f1f07892 | ||
|
|
e5e587aa37 | ||
|
|
b4bce4964c | ||
|
|
c8ed59b148 | ||
|
|
ce9323ab17 | ||
|
|
279ed5325c | ||
|
|
b66fb43fff | ||
|
|
ff7b321065 | ||
|
|
6a5ad42279 | ||
|
|
4631f1c09e | ||
|
|
6bcf8b3097 | ||
|
|
7ac9023a57 | ||
|
|
07e46a4585 | ||
|
|
4003aad7d5 | ||
|
|
b9809d6768 | ||
|
|
70d59b825c | ||
|
|
72a39012b6 | ||
|
|
4134f68fb4 | ||
|
|
c9e7662c5c | ||
|
|
4d6fa0a73d | ||
|
|
84412d9d9c | ||
|
|
581fed294f | ||
|
|
c72a810179 | ||
|
|
a335779c5f | ||
|
|
05f3be1dbb | ||
|
|
040ccaafe7 | ||
|
|
156d6e46a1 | ||
|
|
b6a47aa6c5 | ||
|
|
fc15ef3fd1 | ||
|
|
899e1f6b1f | ||
|
|
afe330173e | ||
|
|
89198b0601 | ||
|
|
b5c82137cb | ||
|
|
ca7478f815 | ||
|
|
5410542d25 | ||
|
|
a08869b843 | ||
|
|
9777abe56d | ||
|
|
fae0552c04 | ||
|
|
c4ad9b5361 | ||
|
|
61477cc3f8 | ||
|
|
265a02286c | ||
|
|
e4b2e051bf | ||
|
|
e05a351712 | ||
|
|
053e5ab128 | ||
|
|
1f6a141341 | ||
|
|
b47d4747d6 | ||
|
|
27bd55364c | ||
|
|
8ad68e7c97 | ||
|
|
088186712a | ||
|
|
6dd0195912 | ||
|
|
afa385d225 | ||
|
|
f43efc1431 | ||
|
|
06d8e5354a | ||
|
|
60fc5573aa | ||
|
|
29ee6cdff3 | ||
|
|
bda9286043 | ||
|
|
4389a43670 | ||
|
|
43877a8b17 | ||
|
|
ff6cb3b87e | ||
|
|
4b0fb547e9 | ||
|
|
e2c6020c64 | ||
|
|
33f4482012 | ||
|
|
9b375bccab | ||
|
|
3f2f29d352 | ||
|
|
636b0d3afd | ||
|
|
36acad3b25 | ||
|
|
00060740d9 | ||
|
|
4a5f7ab855 | ||
|
|
dd8bb6f42b | ||
|
|
9879cb4b69 | ||
|
|
264a29980c | ||
|
|
3af525882a | ||
|
|
17bb0af069 | ||
|
|
3850960eca | ||
|
|
323ca24625 | ||
|
|
6fc20ae5c2 | ||
|
|
318574fcd1 | ||
|
|
fe3dab0ee1 | ||
|
|
b314ba4bf1 | ||
|
|
0153f4bd40 | ||
|
|
3b7de3da6b | ||
|
|
7ea03832ec | ||
|
|
e849fd0ffe | ||
|
|
a11bb982e4 | ||
|
|
2ff85e7aeb | ||
|
|
2d5c3f9f6d | ||
|
|
ff00e90746 | ||
|
|
acb1c4efbd | ||
|
|
26444515d4 | ||
|
|
5b39f2931e | ||
|
|
73490605c5 | ||
|
|
abc0f261fa | ||
|
|
18f474c4e7 | ||
|
|
c7342399f3 | ||
|
|
988ad7e624 | ||
|
|
e3164f6ea5 | ||
|
|
783db6630a | ||
|
|
e5db2c6eb9 | ||
|
|
29d0d98fa2 | ||
|
|
f3af0f6c34 | ||
|
|
ae8c3002ab | ||
|
|
868218a5d6 | ||
|
|
a065d1fe8f | ||
|
|
71985f47b4 | ||
|
|
cd3ceeb245 | ||
|
|
d702dcf0bb | ||
|
|
3279bc48b9 | ||
|
|
a900ebdce5 | ||
|
|
06316c2bde | ||
|
|
14c3bac046 | ||
|
|
52a18af573 | ||
|
|
97a5b21394 | ||
|
|
1f1a41e5c7 | ||
|
|
5ccc5227d7 | ||
|
|
69d9baac1f | ||
|
|
cec5c40e4a | ||
|
|
e93c4f90d9 | ||
|
|
a7b21b40fd | ||
|
|
28dc130c4a | ||
|
|
5dc53965b6 | ||
|
|
eae070cc6c | ||
|
|
c1f12b4e3f | ||
|
|
251c842cd5 | ||
|
|
d7b8474af1 | ||
|
|
44fbd31eb7 | ||
|
|
f229e6910c | ||
|
|
18c2e22de5 | ||
|
|
4074fb67e1 | ||
|
|
ee2f5ef9b3 | ||
|
|
9fc45c1929 | ||
|
|
5f31313422 | ||
|
|
99d441e37c | ||
|
|
55c21416de | ||
|
|
0296bd63c3 |
12
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
12
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
@@ -22,6 +22,18 @@ body:
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: verbose_run
|
||||
attributes:
|
||||
label: 🔎 Did you run the script with verbose mode enabled?
|
||||
description: "Required for debugging any script issue. A verbose log is mandatory."
|
||||
options:
|
||||
- ""
|
||||
- "Yes, verbose mode was enabled and the output is included below"
|
||||
- "No (this issue will likely be closed automatically)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: script_name
|
||||
attributes:
|
||||
|
||||
300
CHANGELOG.md
300
CHANGELOG.md
@@ -10,8 +10,308 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-12-02
|
||||
|
||||
## 2025-12-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Wanderer ([#9556](https://github.com/community-scripts/ProxmoxVE/pull/9556))
|
||||
- core: add cloud-init.func library for VM configuration [@MickLesk](https://github.com/MickLesk) ([#9538](https://github.com/community-scripts/ProxmoxVE/pull/9538))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: sanitize appname for certificate generation [@tremor021](https://github.com/tremor021) ([#9552](https://github.com/community-scripts/ProxmoxVE/pull/9552))
|
||||
- Fix Django superuser creation failing with ImproperlyConfigured error [@Copilot](https://github.com/Copilot) ([#9554](https://github.com/community-scripts/ProxmoxVE/pull/9554))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Bump Baikal to deb13 [@MickLesk](https://github.com/MickLesk) ([#9544](https://github.com/community-scripts/ProxmoxVE/pull/9544))
|
||||
- Enhance MariaDB version fallback logic [@MickLesk](https://github.com/MickLesk) ([#9545](https://github.com/community-scripts/ProxmoxVE/pull/9545))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Refactor: Healthchecks [@MickLesk](https://github.com/MickLesk) ([#9188](https://github.com/community-scripts/ProxmoxVE/pull/9188))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Mealie [@MickLesk](https://github.com/MickLesk) ([#9308](https://github.com/community-scripts/ProxmoxVE/pull/9308))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- add comprehensive documentation (core, develop, functions, technical guide, contributor guide) [@MickLesk](https://github.com/MickLesk) ([#9537](https://github.com/community-scripts/ProxmoxVE/pull/9537))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- update selfhst icon-URLs to use @master path [@MickLesk](https://github.com/MickLesk) ([#9543](https://github.com/community-scripts/ProxmoxVE/pull/9543))
|
||||
|
||||
## 2025-11-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(recyclarr): remove update script systemctl commands [@vidonnus](https://github.com/vidonnus) ([#9522](https://github.com/community-scripts/ProxmoxVE/pull/9522))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Actual Budget [@tremor021](https://github.com/tremor021) ([#9518](https://github.com/community-scripts/ProxmoxVE/pull/9518))
|
||||
|
||||
## 2025-11-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Valkey ([#9510](https://github.com/community-scripts/ProxmoxVE/pull/9510))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix duplicate ORIGIN in .env for OpenArchiver install script [@Copilot](https://github.com/Copilot) ([#9503](https://github.com/community-scripts/ProxmoxVE/pull/9503))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Remove: Documenso [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9507](https://github.com/community-scripts/ProxmoxVE/pull/9507))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- Update Discord link on website [@tremor021](https://github.com/tremor021) ([#9499](https://github.com/community-scripts/ProxmoxVE/pull/9499))
|
||||
|
||||
## 2025-11-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Apache-guacamole: fixed to early rm [@mtorazzi](https://github.com/mtorazzi) ([#9492](https://github.com/community-scripts/ProxmoxVE/pull/9492))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Remove: Habitica [@MickLesk](https://github.com/MickLesk) ([#9489](https://github.com/community-scripts/ProxmoxVE/pull/9489))
|
||||
|
||||
## 2025-11-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Qdrant ([#9465](https://github.com/community-scripts/ProxmoxVE/pull/9465))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Upgrade pve-scripts-local to node 24 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9457](https://github.com/community-scripts/ProxmoxVE/pull/9457))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- PBS: fix typo [@joshuaharmsen845](https://github.com/joshuaharmsen845) ([#9482](https://github.com/community-scripts/ProxmoxVE/pull/9482))
|
||||
|
||||
## 2025-11-26
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Joplin Server: Increase RAM for LXC [@tremor021](https://github.com/tremor021) ([#9460](https://github.com/community-scripts/ProxmoxVE/pull/9460))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix Open WebUI update logic (swap upgrade/install) [@camcop](https://github.com/camcop) ([#9461](https://github.com/community-scripts/ProxmoxVE/pull/9461))
|
||||
|
||||
## 2025-11-25
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Open WebUI: Change install command to upgrade for Open-WebUI [@tremor021](https://github.com/tremor021) ([#9448](https://github.com/community-scripts/ProxmoxVE/pull/9448))
|
||||
- core: set default LANG in locale configuration [@MickLesk](https://github.com/MickLesk) ([#9440](https://github.com/community-scripts/ProxmoxVE/pull/9440))
|
||||
- documenso: switch to npm peer-.deps to get build running [@MickLesk](https://github.com/MickLesk) ([#9441](https://github.com/community-scripts/ProxmoxVE/pull/9441))
|
||||
- Refactor Asterisk installation process [@MickLesk](https://github.com/MickLesk) ([#9429](https://github.com/community-scripts/ProxmoxVE/pull/9429))
|
||||
- Fix the mikrotik VM installer after they reformatted their downloads page [@paul-ridgway](https://github.com/paul-ridgway) ([#9434](https://github.com/community-scripts/ProxmoxVE/pull/9434))
|
||||
- paperless: patch consume to uv [@MickLesk](https://github.com/MickLesk) ([#9425](https://github.com/community-scripts/ProxmoxVE/pull/9425))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- add Zabbix version selection to install and update scripts [@MickLesk](https://github.com/MickLesk) ([#9430](https://github.com/community-scripts/ProxmoxVE/pull/9430))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- gh: update supported PVE Version [@MickLesk](https://github.com/MickLesk) ([#9422](https://github.com/community-scripts/ProxmoxVE/pull/9422))
|
||||
|
||||
## 2025-11-24
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: remove uv cache clean command [@MickLesk](https://github.com/MickLesk) ([#9413](https://github.com/community-scripts/ProxmoxVE/pull/9413))
|
||||
- Joplin-Server: Bump Node.js version from 22 to 24 [@tremor021](https://github.com/tremor021) ([#9405](https://github.com/community-scripts/ProxmoxVE/pull/9405))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- [Fix]: Wizarr DB error during install [@vhsdream](https://github.com/vhsdream) ([#9415](https://github.com/community-scripts/ProxmoxVE/pull/9415))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 📝 Script Information
|
||||
|
||||
- Gitea: Update website [@tremor021](https://github.com/tremor021) ([#9406](https://github.com/community-scripts/ProxmoxVE/pull/9406))
|
||||
- huntarr: disable on website during install issues [@MickLesk](https://github.com/MickLesk) ([#9403](https://github.com/community-scripts/ProxmoxVE/pull/9403))
|
||||
|
||||
## 2025-11-23
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: remove journal log rotation [@MickLesk](https://github.com/MickLesk) ([#9392](https://github.com/community-scripts/ProxmoxVE/pull/9392))
|
||||
- [LibreNMS] Correcting mariadb sed string for Debian 13 default in install/librenms-install.sh, website config for Debian 13 #9369 [@htmlspinnr](https://github.com/htmlspinnr) ([#9370](https://github.com/community-scripts/ProxmoxVE/pull/9370))
|
||||
- fix: Snipe-IT update check failure [@ruanmed](https://github.com/ruanmed) ([#9371](https://github.com/community-scripts/ProxmoxVE/pull/9371))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- PVE Kernel Clean: Add info about currently running kernel [@tremor021](https://github.com/tremor021) ([#9388](https://github.com/community-scripts/ProxmoxVE/pull/9388))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Update glpi-install.sh to remove install.php [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9378](https://github.com/community-scripts/ProxmoxVE/pull/9378))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: enhance back navigation in NotFoundPage component and remove unused deps [@BramSuurdje](https://github.com/BramSuurdje) ([#9341](https://github.com/community-scripts/ProxmoxVE/pull/9341))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- feat(frontend): add script disable functionality with visual indicators [@AlphaLawless](https://github.com/AlphaLawless) ([#9374](https://github.com/community-scripts/ProxmoxVE/pull/9374))
|
||||
|
||||
## 2025-11-22
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Upgopher ([#9360](https://github.com/community-scripts/ProxmoxVE/pull/9360))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Expand support to Proxmox VE 9.1 in VM scripts [@MickLesk](https://github.com/MickLesk) ([#9351](https://github.com/community-scripts/ProxmoxVE/pull/9351))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: Snipe-IT install and update failure due to new repository url [@ruanmed](https://github.com/ruanmed) ([#9362](https://github.com/community-scripts/ProxmoxVE/pull/9362))
|
||||
- glpi - allow migration of existing databases [@moodyblue](https://github.com/moodyblue) ([#9353](https://github.com/community-scripts/ProxmoxVE/pull/9353))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Refactor cleanup steps to use cleanup_lxc function (install/ Folder) [@MickLesk](https://github.com/MickLesk) ([#9354](https://github.com/community-scripts/ProxmoxVE/pull/9354))
|
||||
- Remove redundant cleanup steps from update scripts (ct/ Folder) [@MickLesk](https://github.com/MickLesk) ([#9359](https://github.com/community-scripts/ProxmoxVE/pull/9359))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Refactor /data page [@BramSuurdje](https://github.com/BramSuurdje) ([#9343](https://github.com/community-scripts/ProxmoxVE/pull/9343))
|
||||
|
||||
## 2025-11-21
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- plex: prevent [] syntax issue [@MickLesk](https://github.com/MickLesk) ([#9318](https://github.com/community-scripts/ProxmoxVE/pull/9318))
|
||||
- fix: karakeep strip "v" from release version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9324](https://github.com/community-scripts/ProxmoxVE/pull/9324))
|
||||
- NetVisor: fix grep in update [@vhsdream](https://github.com/vhsdream) ([#9334](https://github.com/community-scripts/ProxmoxVE/pull/9334))
|
||||
- Immich: pin correct version [@vhsdream](https://github.com/vhsdream) ([#9332](https://github.com/community-scripts/ProxmoxVE/pull/9332))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor IPv6 disable logic and add 'disable' option [@MickLesk](https://github.com/MickLesk) ([#9326](https://github.com/community-scripts/ProxmoxVE/pull/9326))
|
||||
|
||||
## 2025-11-20
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: change 'uv cache clear' to 'uv cache clean' [@MickLesk](https://github.com/MickLesk) ([#9299](https://github.com/community-scripts/ProxmoxVE/pull/9299))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Immich v2.3.1: OpenVINO tuning, OCR fixes, Maintenance mode, workflows/plugin framework [@vhsdream](https://github.com/vhsdream) ([#9310](https://github.com/community-scripts/ProxmoxVE/pull/9310))
|
||||
- kasm: add: update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9253](https://github.com/community-scripts/ProxmoxVE/pull/9253))
|
||||
- tools/pve: expand PVE support to 9.0–9.1 (post-install & netdata) [@MickLesk](https://github.com/MickLesk) ([#9298](https://github.com/community-scripts/ProxmoxVE/pull/9298))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Omada - AVX-only support [@MickLesk](https://github.com/MickLesk) ([#9295](https://github.com/community-scripts/ProxmoxVE/pull/9295))
|
||||
|
||||
## 2025-11-19
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- HotFix: Fix NetVisor env var [@vhsdream](https://github.com/vhsdream) ([#9286](https://github.com/community-scripts/ProxmoxVE/pull/9286))
|
||||
- Jotty: reduce RAM requirement [@vhsdream](https://github.com/vhsdream) ([#9272](https://github.com/community-scripts/ProxmoxVE/pull/9272))
|
||||
- Nginx Proxy Manager: Pin version to v2.13.4 [@tremor021](https://github.com/tremor021) ([#9259](https://github.com/community-scripts/ProxmoxVE/pull/9259))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- PVE 9.1 version support [@MickLesk](https://github.com/MickLesk) ([#9280](https://github.com/community-scripts/ProxmoxVE/pull/9280))
|
||||
- force disable IPv6 if IPV6_METHOD = none [@MickLesk](https://github.com/MickLesk) ([#9277](https://github.com/community-scripts/ProxmoxVE/pull/9277))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- NetVisor: v0.10.0 fixes [@vhsdream](https://github.com/vhsdream) ([#9255](https://github.com/community-scripts/ProxmoxVE/pull/9255))
|
||||
|
||||
## 2025-11-18
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- librenms: Fix password to short [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9236](https://github.com/community-scripts/ProxmoxVE/pull/9236))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Huntarr: Downgrade Python to 3.12 [@MickLesk](https://github.com/MickLesk) ([#9246](https://github.com/community-scripts/ProxmoxVE/pull/9246))
|
||||
- kasm: fix release fetching [@MickLesk](https://github.com/MickLesk) ([#9244](https://github.com/community-scripts/ProxmoxVE/pull/9244))
|
||||
|
||||
## 2025-11-17
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Passbolt ([#9226](https://github.com/community-scripts/ProxmoxVE/pull/9226))
|
||||
- Domain-Locker ([#9214](https://github.com/community-scripts/ProxmoxVE/pull/9214))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Domain Monitor: Fix encryption key length in install script [@tremor021](https://github.com/tremor021) ([#9239](https://github.com/community-scripts/ProxmoxVE/pull/9239))
|
||||
- NetVisor: add build deps, increase RAM [@vhsdream](https://github.com/vhsdream) ([#9205](https://github.com/community-scripts/ProxmoxVE/pull/9205))
|
||||
- fix: restart apache2 after installing zabbix config [@AlphaLawless](https://github.com/AlphaLawless) ([#9206](https://github.com/community-scripts/ProxmoxVE/pull/9206))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [core]: harmonize app_name for creds [@MickLesk](https://github.com/MickLesk) ([#9224](https://github.com/community-scripts/ProxmoxVE/pull/9224))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Refactor: paperless-ngx (Breaking Change Inside) [@MickLesk](https://github.com/MickLesk) ([#9223](https://github.com/community-scripts/ProxmoxVE/pull/9223))
|
||||
|
||||
### 🧰 Maintenance
|
||||
|
||||
- #### 📂 Github
|
||||
|
||||
- github: add verbose mode check to bug report template [@MickLesk](https://github.com/MickLesk) ([#9234](https://github.com/community-scripts/ProxmoxVE/pull/9234))
|
||||
|
||||
## 2025-11-16
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<tr>
|
||||
<td align="center" width="33%">
|
||||
<h3>🖥️ Proxmox VE</h3>
|
||||
<p>Version 8.4.x or 9.0.x</p>
|
||||
<p>Version: 8.4.x | 9.0.x | 9.1.x</p>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
<h3>🐧 Operating System</h3>
|
||||
|
||||
@@ -6,6 +6,7 @@ This project currently supports the following versions of Proxmox VE (PVE):
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 9.1.x | :white_check_mark: |
|
||||
| 9.0.x | :white_check_mark: |
|
||||
| 8.4.x | :white_check_mark: |
|
||||
| 8.3.x | Limited support* ❕ |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module proxmox-api
|
||||
|
||||
go 1.23.2
|
||||
go 1.24.0
|
||||
|
||||
require (
|
||||
github.com/gorilla/mux v1.8.1
|
||||
@@ -17,7 +17,7 @@ require (
|
||||
github.com/xdg-go/scram v1.1.2 // indirect
|
||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
||||
golang.org/x/crypto v0.35.0 // indirect
|
||||
golang.org/x/sync v0.11.0 // indirect
|
||||
golang.org/x/text v0.22.0 // indirect
|
||||
golang.org/x/crypto v0.45.0 // indirect
|
||||
golang.org/x/sync v0.18.0 // indirect
|
||||
golang.org/x/text v0.31.0 // indirect
|
||||
)
|
||||
|
||||
12
api/go.sum
12
api/go.sum
@@ -27,16 +27,16 @@ go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793Sqyh
|
||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
||||
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
||||
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
||||
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
|
||||
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
@@ -48,8 +48,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
|
||||
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
|
||||
@@ -57,15 +57,6 @@ function update_script() {
|
||||
$STD composer install --no-dev --prefer-dist
|
||||
php artisan 2fauth:install
|
||||
$STD systemctl restart nginx
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
if dpkg -l | grep -q 'php8.2'; then
|
||||
$STD apt remove --purge -y php8.2*
|
||||
fi
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -24,33 +24,32 @@ function update_script() {
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/actualbudget_version.txt ]]; then
|
||||
if [[ ! -f ~/.actualbudget && ! -f /opt/actualbudget_version.txt ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE=$(get_latest_github_release "actualbudget/actual")
|
||||
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
||||
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
|
||||
if check_for_gh_release "actualbudget" "actualbudget/actual"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop actualbudget
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
msg_info "Updating Actual Budget to ${RELEASE}"
|
||||
$STD npm update -g @actual-app/sync-server
|
||||
echo "${RELEASE}" >/opt/actualbudget_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
echo "${RELEASE}" >~/.actualbudget
|
||||
msg_ok "Updated Actual Budget to ${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start actualbudget
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_info "${APP} is already up to date"
|
||||
fi
|
||||
else
|
||||
msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
|
||||
msg_info "Please follow the instructions on the ${APP} website to migrate your data"
|
||||
msg_info "Please follow the instructions on the Actual Budget website to migrate your data"
|
||||
msg_info "https://actualbudget.org/docs/backup-restore/backup"
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -62,6 +62,7 @@ function update_script() {
|
||||
cd /opt/adventurelog/frontend || exit
|
||||
$STD pnpm i
|
||||
$STD pnpm build
|
||||
rm -rf /opt/adventurelog-backup
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Services"
|
||||
@@ -69,10 +70,6 @@ function update_script() {
|
||||
systemctl start adventurelog-backend
|
||||
systemctl start adventurelog-frontend
|
||||
msg_ok "Services Started"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/adventurelog-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -38,15 +38,13 @@ function update_script() {
|
||||
curl -fsSL -o tika-server-standard-${RELEASE}.jar "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
|
||||
mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
|
||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
|
||||
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache-tika
|
||||
msg_ok "Started Service"
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -31,15 +31,11 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "authelia" "authelia/authelia"; then
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
|
||||
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -39,16 +39,13 @@ function update_script() {
|
||||
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
|
||||
tar xzf $temp_file -C /opt/backrest/bin
|
||||
chmod +x /opt/backrest/bin/backrest
|
||||
rm -f "$temp_file"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start backrest
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
10
ct/baikal.sh
10
ct/baikal.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -37,8 +37,9 @@ function update_script() {
|
||||
mv /opt/baikal /opt/baikal-backup
|
||||
msg_ok "Backed up data"
|
||||
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||
PHP_APACHE="YES" PHP_MODULE="pgsql,curl" PHP_VERSION="8.3" setup_php
|
||||
setup_composer
|
||||
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||
|
||||
msg_info "Configuring Baikal"
|
||||
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
||||
@@ -47,15 +48,12 @@ function update_script() {
|
||||
chmod -R 755 /opt/baikal/
|
||||
cd /opt/baikal
|
||||
$STD composer install
|
||||
rm -rf /opt/baikal-backup
|
||||
msg_ok "Configured Baikal"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/baikal-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -54,15 +54,12 @@ function update_script() {
|
||||
$STD php artisan route:cache
|
||||
$STD php artisan event:cache
|
||||
chown -R www-data:www-data /opt/bar-assistant
|
||||
rm -rf /opt/bar-assistant-backup
|
||||
msg_ok "Updated Bar-Assistant"
|
||||
|
||||
msg_info "Starting nginx"
|
||||
systemctl start nginx
|
||||
msg_ok "Started nginx"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/bar-assistant-backup
|
||||
msg_ok "Cleaned"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim"; then
|
||||
@@ -81,15 +78,12 @@ function update_script() {
|
||||
cd /opt/vue-salt-rim
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
rm -rf /opt/vue-salt-rim-backup
|
||||
msg_ok "Updated Vue Salt Rim"
|
||||
|
||||
msg_info "Starting nginx"
|
||||
systemctl start nginx
|
||||
msg_ok "Started nginx"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/vue-salt-rim-backup
|
||||
msg_ok "Cleaned"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
|
||||
|
||||
@@ -57,15 +57,12 @@ function update_script() {
|
||||
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
|
||||
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
||||
chmod -R 640 /opt/bookstack/.env
|
||||
rm -rf /opt/bookstack-backup
|
||||
msg_ok "Configured BookStack"
|
||||
|
||||
msg_info "Starting Apache2"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Apache2"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/bookstack-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -109,6 +109,7 @@ function update_script() {
|
||||
fi
|
||||
$STD uv run python manage.py migrate --noinput
|
||||
$STD uv run python manage.py collectstatic --noinput
|
||||
rm -f /tmp/dispatcharr_db_*.sql
|
||||
msg_ok "Migrations Complete"
|
||||
|
||||
msg_info "Starting Services"
|
||||
@@ -117,10 +118,6 @@ function update_script() {
|
||||
systemctl start dispatcharr-celerybeat
|
||||
systemctl start dispatcharr-daphne
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f /tmp/dispatcharr_db_*.sql
|
||||
msg_ok "Cleanup completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -76,11 +76,6 @@ function update_script() {
|
||||
portainer/agent
|
||||
msg_ok "Updated Portainer Agent"
|
||||
fi
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleanup complete"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/documenso/documenso
|
||||
|
||||
APP="Documenso"
|
||||
var_tags="${var_tags:-document}"
|
||||
var_disk="${var_disk:-12}"
|
||||
var_cpu="${var_cpu:-6}"
|
||||
var_ram="${var_ram:-6144}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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/documenso ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop documenso
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
cp /opt/documenso/.env /opt/
|
||||
rm -rf /opt/documenso
|
||||
cd /opt
|
||||
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
|
||||
$STD unzip v${RELEASE}.zip
|
||||
mv documenso-${RELEASE} /opt/documenso
|
||||
cd /opt/documenso
|
||||
mv /opt/.env /opt/documenso/.env
|
||||
export TURBO_CACHE=1
|
||||
export NEXT_TELEMETRY_DISABLED=1
|
||||
export CYPRESS_INSTALL_BINARY=0
|
||||
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||
$STD npm ci
|
||||
$STD turbo run build --filter=@documenso/remix
|
||||
$STD npm run prisma:migrate-deploy
|
||||
$STD turbo daemon stop
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start documenso
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/v${RELEASE}.zip
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
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}"
|
||||
67
ct/domain-locker.sh
Normal file
67
ct/domain-locker.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Lissy93/domain-locker
|
||||
|
||||
APP="Domain-Locker"
|
||||
var_tags="${var_tags:-Monitoring}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-10240}"
|
||||
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/domain-locker ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop domain-locker
|
||||
msg_info "Service stopped"
|
||||
|
||||
PG_VERSION="17" setup_postgresql
|
||||
setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
|
||||
|
||||
msg_info "Installing Modules (patience)"
|
||||
cd /opt/domain-locker
|
||||
$STD npm install
|
||||
msg_ok "Installed Modules"
|
||||
|
||||
msg_info "Building Domain-Locker (a lot of patience)"
|
||||
set -a
|
||||
source /opt/domain-locker.env
|
||||
set +a
|
||||
$STD npm run build
|
||||
msg_info "Built Domain-Locker"
|
||||
|
||||
msg_info "Restarting Services"
|
||||
systemctl start domain-locker
|
||||
msg_ok "Restarted 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}"
|
||||
@@ -47,16 +47,13 @@ function update_script() {
|
||||
|
||||
msg_info "Installing EMQX"
|
||||
$STD apt-get install -y "$DEB_FILE"
|
||||
rm -f "$DEB_FILE"
|
||||
echo "$RELEASE" >~/.emqx
|
||||
msg_ok "Installed EMQX v${RELEASE}"
|
||||
|
||||
msg_info "Starting EMQX"
|
||||
systemctl start emqx
|
||||
echo "$RELEASE" >~/.emqx
|
||||
msg_ok "Started EMQX"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f "$DEB_FILE"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. EMQX is already at v${RELEASE}"
|
||||
|
||||
@@ -48,16 +48,13 @@ function update_script() {
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
||||
$STD unzip -o -d /opt/fileflows "$temp_file"
|
||||
rm -rf "$temp_file"
|
||||
rm -rf "$backup_filename"
|
||||
msg_ok "Updated $APP to latest version"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start fileflows
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf "$temp_file"
|
||||
rm -rf "$backup_filename"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at latest version"
|
||||
|
||||
@@ -56,10 +56,6 @@ function update_script() {
|
||||
msg_info "Starting Service"
|
||||
systemctl start ghostfolio
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
$STD npm cache clean --force
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/HabitRPG/habitica
|
||||
|
||||
APP="Habitica"
|
||||
var_tags="${var_tags:-gaming}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
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/habitica" ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
|
||||
if check_for_gh_release "habitica" "HabitRPG/habitica"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop habitica-mongodb
|
||||
systemctl stop habitica
|
||||
systemctl stop habitica-client
|
||||
msg_info "Stopped Service"
|
||||
|
||||
msg_info "Save configuration"
|
||||
if [[ -f /opt/habitica/config.json ]]; then
|
||||
cp /opt/habitica/config.json ~/config.json
|
||||
msg_ok "Saved configuration"
|
||||
else
|
||||
msg_warn "No configuration file found, skipping save"
|
||||
fi
|
||||
|
||||
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
|
||||
|
||||
msg_info "Updating $APP"
|
||||
cd /opt/habitica
|
||||
$STD npm i
|
||||
$STD npm run postinstall
|
||||
$STD npm run client:build
|
||||
$STD gulp build:prod
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
msg_info "Restoring configuration"
|
||||
if [[ -f ~/config.json ]]; then
|
||||
cp ~/config.json /opt/habitica/config.json
|
||||
msg_ok "Restored configuration"
|
||||
else
|
||||
msg_warn "No configuration file found to restore"
|
||||
fi
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start habitica-mongodb
|
||||
systemctl start habitica
|
||||
systemctl start habitica-client
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
@@ -1,6 +0,0 @@
|
||||
____
|
||||
/ __ \____ _______ ______ ___ ___ ____ _________
|
||||
/ / / / __ \/ ___/ / / / __ `__ \/ _ \/ __ \/ ___/ __ \
|
||||
/ /_/ / /_/ / /__/ /_/ / / / / / / __/ / / (__ ) /_/ /
|
||||
/_____/\____/\___/\__,_/_/ /_/ /_/\___/_/ /_/____/\____/
|
||||
|
||||
6
ct/headers/domain-locker
Normal file
6
ct/headers/domain-locker
Normal file
@@ -0,0 +1,6 @@
|
||||
____ _ __ __
|
||||
/ __ \____ ____ ___ ____ _(_)___ / / ____ _____/ /_____ _____
|
||||
/ / / / __ \/ __ `__ \/ __ `/ / __ \______/ / / __ \/ ___/ //_/ _ \/ ___/
|
||||
/ /_/ / /_/ / / / / / / /_/ / / / / /_____/ /___/ /_/ / /__/ ,< / __/ /
|
||||
/_____/\____/_/ /_/ /_/\__,_/_/_/ /_/ /_____/\____/\___/_/|_|\___/_/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
__ __ __ _ __ _
|
||||
/ / / /___ _/ /_ (_) /_(_)________ _
|
||||
/ /_/ / __ `/ __ \/ / __/ / ___/ __ `/
|
||||
/ __ / /_/ / /_/ / / /_/ / /__/ /_/ /
|
||||
/_/ /_/\__,_/_.___/_/\__/_/\___/\__,_/
|
||||
|
||||
6
ct/headers/passbolt
Normal file
6
ct/headers/passbolt
Normal file
@@ -0,0 +1,6 @@
|
||||
____ __ ____
|
||||
/ __ \____ ___________/ /_ ____ / / /_
|
||||
/ /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
|
||||
/ ____/ /_/ (__ |__ ) /_/ / /_/ / / /_
|
||||
/_/ \__,_/____/____/_.___/\____/_/\__/
|
||||
|
||||
6
ct/headers/qdrant
Normal file
6
ct/headers/qdrant
Normal file
@@ -0,0 +1,6 @@
|
||||
____ __ __
|
||||
/ __ \____/ /________ _____ / /_
|
||||
/ / / / __ / ___/ __ `/ __ \/ __/
|
||||
/ /_/ / /_/ / / / /_/ / / / / /_
|
||||
\___\_\__,_/_/ \__,_/_/ /_/\__/
|
||||
|
||||
6
ct/headers/upgopher
Normal file
6
ct/headers/upgopher
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __ __
|
||||
/ / / /___ ____ _____ ____ / /_ ___ _____
|
||||
/ / / / __ \/ __ `/ __ \/ __ \/ __ \/ _ \/ ___/
|
||||
/ /_/ / /_/ / /_/ / /_/ / /_/ / / / / __/ /
|
||||
\____/ .___/\__, /\____/ .___/_/ /_/\___/_/
|
||||
/_/ /____/ /_/
|
||||
6
ct/headers/valkey
Normal file
6
ct/headers/valkey
Normal file
@@ -0,0 +1,6 @@
|
||||
_ __ ____
|
||||
| | / /___ _/ / /_____ __ __
|
||||
| | / / __ `/ / //_/ _ \/ / / /
|
||||
| |/ / /_/ / / ,< / __/ /_/ /
|
||||
|___/\__,_/_/_/|_|\___/\__, /
|
||||
/____/
|
||||
6
ct/headers/wanderer
Normal file
6
ct/headers/wanderer
Normal file
@@ -0,0 +1,6 @@
|
||||
_ __ __
|
||||
| | / /___ _____ ____/ /__ ________ _____
|
||||
| | /| / / __ `/ __ \/ __ / _ \/ ___/ _ \/ ___/
|
||||
| |/ |/ / /_/ / / / / /_/ / __/ / / __/ /
|
||||
|__/|__/\__,_/_/ /_/\__,_/\___/_/ \___/_/
|
||||
|
||||
@@ -28,26 +28,42 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop healthchecks
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
msg_info "Backing up existing installation"
|
||||
BACKUP="/opt/healthchecks-backup-$(date +%F-%H%M)"
|
||||
cp -a /opt/healthchecks "$BACKUP"
|
||||
msg_ok "Backup created at $BACKUP"
|
||||
|
||||
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
|
||||
|
||||
msg_info "Updating healthchecks"
|
||||
cd /opt/healthchecks
|
||||
mkdir -p /opt/healthchecks/static-collected/
|
||||
$STD uv pip install wheel gunicorn -r requirements.txt --system
|
||||
$STD uv run -- python manage.py makemigrations
|
||||
$STD uv run -- python manage.py migrate --noinput
|
||||
$STD uv run -- python manage.py collectstatic --noinput
|
||||
$STD uv run -- python manage.py compress
|
||||
msg_ok "Updated healthchecks"
|
||||
if [[ -d venv ]]; then
|
||||
rm -rf venv
|
||||
fi
|
||||
msg_info "Recreating Python venv"
|
||||
$STD python3 -m venv venv
|
||||
$STD source venv/bin/activate
|
||||
$STD pip install --upgrade pip wheel
|
||||
msg_ok "Created venv"
|
||||
|
||||
msg_info "Installing requirements"
|
||||
$STD pip install gunicorn -r requirements.txt
|
||||
msg_ok "Installed requirements"
|
||||
|
||||
msg_info "Running Django migrations"
|
||||
$STD python manage.py migrate --noinput
|
||||
$STD python manage.py collectstatic --noinput
|
||||
$STD python manage.py compress
|
||||
msg_ok "Completed Django migrations and static build"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start healthchecks
|
||||
systemctl restart caddy
|
||||
systemctl reload caddy
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
|
||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -29,7 +29,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
setup_uv
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
if check_for_gh_release "huntarr" "plexguide/Huntarr.io"; then
|
||||
msg_info "Stopping Service"
|
||||
|
||||
29
ct/immich.sh
29
ct/immich.sh
@@ -61,6 +61,15 @@ EOF
|
||||
msg_ok "Installed libmimalloc3"
|
||||
fi
|
||||
|
||||
if [[ ! -f /etc/apt/sources.list.d/mise.list ]]; then
|
||||
msg_info "Installing Mise"
|
||||
curl -fSs https://mise.jdx.dev/gpg-key.pub | tee /etc/apt/keyrings/mise-archive-keyring.pub 1>/dev/null
|
||||
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | tee /etc/apt/sources.list.d/mise.list
|
||||
$STD apt update
|
||||
$STD apt install -y mise
|
||||
msg_ok "Installed Mise"
|
||||
fi
|
||||
|
||||
STAGING_DIR=/opt/staging
|
||||
BASE_DIR=${STAGING_DIR}/base-images
|
||||
SOURCE_DIR=${STAGING_DIR}/image-source
|
||||
@@ -93,7 +102,7 @@ EOF
|
||||
msg_ok "Image-processing libraries up to date"
|
||||
fi
|
||||
|
||||
RELEASE="2.2.3"
|
||||
RELEASE="2.3.1"
|
||||
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop immich-web
|
||||
@@ -121,6 +130,7 @@ EOF
|
||||
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
||||
SRC_DIR="${INSTALL_DIR}/source"
|
||||
APP_DIR="${INSTALL_DIR}/app"
|
||||
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||
ML_DIR="${APP_DIR}/machine-learning"
|
||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||
|
||||
@@ -145,9 +155,7 @@ EOF
|
||||
rm -rf "${APP_DIR:?}"/*
|
||||
)
|
||||
|
||||
rm -rf "$SRC_DIR"
|
||||
|
||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||
|
||||
msg_info "Updating ${APP} web and microservices"
|
||||
cd "$SRC_DIR"/server
|
||||
@@ -180,7 +188,18 @@ EOF
|
||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||
cd "$APP_DIR"
|
||||
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||
msg_ok "Updated ${APP} web and microservices"
|
||||
|
||||
# plugins
|
||||
cd "$SRC_DIR"
|
||||
$STD mise trust --ignore ./mise.toml
|
||||
$STD mise trust ./plugins/mise.toml
|
||||
cd plugins
|
||||
$STD mise install
|
||||
$STD mise run build
|
||||
mkdir -p "$PLUGIN_DIR"
|
||||
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||
cp ./manifest.json "$PLUGIN_DIR"
|
||||
msg_ok "Updated ${APP} server, web, cli and plugins"
|
||||
|
||||
cd "$SRC_DIR"/machine-learning
|
||||
mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"
|
||||
|
||||
@@ -20,62 +20,57 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/jellyseerr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if [[ ! -d /opt/jellyseerr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$(node -v | cut -c2-3)" -ne 22 ]; then
|
||||
msg_info "Updating Node.js Repository"
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||
msg_ok "Updating Node.js Repository"
|
||||
if [ "$(node -v | cut -c2-3)" -ne 22 ]; then
|
||||
msg_info "Updating Node.js Repository"
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||
msg_ok "Updating Node.js Repository"
|
||||
|
||||
msg_info "Updating Packages"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
msg_ok "Updating Packages"
|
||||
msg_info "Updating Packages"
|
||||
$STD apt-get update
|
||||
$STD apt-get -y upgrade
|
||||
msg_ok "Updating Packages"
|
||||
fi
|
||||
|
||||
msg_info "Cleaning up"
|
||||
apt-get -y autoremove
|
||||
apt-get -y autoclean
|
||||
msg_ok "Cleaning up"
|
||||
fi
|
||||
cd /opt/jellyseerr
|
||||
output=$(git pull --no-rebase)
|
||||
|
||||
cd /opt/jellyseerr
|
||||
output=$(git pull --no-rebase)
|
||||
pnpm_current=$(pnpm --version 2>/dev/null)
|
||||
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
|
||||
|
||||
pnpm_current=$(pnpm --version 2>/dev/null)
|
||||
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
|
||||
if [ -z "$pnpm_current" ]; then
|
||||
msg_error "pnpm not found. Installing version $pnpm_desired..."
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
|
||||
elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
|
||||
msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
|
||||
else
|
||||
msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
|
||||
fi
|
||||
|
||||
if [ -z "$pnpm_current" ]; then
|
||||
msg_error "pnpm not found. Installing version $pnpm_desired..."
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
|
||||
elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
|
||||
msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
|
||||
else
|
||||
msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
|
||||
fi
|
||||
msg_info "Updating $APP"
|
||||
if echo "$output" | grep -q "Already up to date."; then
|
||||
msg_ok "$APP is already up to date."
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Updating $APP"
|
||||
if echo "$output" | grep -q "Already up to date."; then
|
||||
msg_ok "$APP is already up to date."
|
||||
exit
|
||||
fi
|
||||
systemctl stop jellyseerr
|
||||
rm -rf dist .next node_modules
|
||||
export CYPRESS_INSTALL_BINARY=0
|
||||
cd /opt/jellyseerr
|
||||
$STD pnpm install --frozen-lockfile
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD pnpm build
|
||||
|
||||
systemctl stop jellyseerr
|
||||
rm -rf dist .next node_modules
|
||||
export CYPRESS_INSTALL_BINARY=0
|
||||
cd /opt/jellyseerr
|
||||
$STD pnpm install --frozen-lockfile
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD pnpm build
|
||||
|
||||
cat <<EOF >/etc/systemd/system/jellyseerr.service
|
||||
cat <<EOF >/etc/systemd/system/jellyseerr.service
|
||||
[Unit]
|
||||
Description=jellyseerr Service
|
||||
After=network.target
|
||||
@@ -91,10 +86,10 @@ ExecStart=/usr/bin/node dist/index.js
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl start jellyseerr
|
||||
msg_ok "Updated $APP"
|
||||
exit
|
||||
systemctl daemon-reload
|
||||
systemctl start jellyseerr
|
||||
msg_ok "Updated $APP"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="Joplin-Server"
|
||||
var_tags="${var_tags:-notes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_ram="${var_ram:-6144}"
|
||||
var_disk="${var_disk:-20}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
@@ -28,6 +28,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" setup_nodejs
|
||||
|
||||
if check_for_gh_release "joplin-server" "laurent22/joplin"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop joplin-server
|
||||
|
||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
||||
APP="jotty"
|
||||
var_tags="${var_tags:-tasks;notes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
|
||||
@@ -82,7 +82,7 @@ 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}/" /etc/karakeep/karakeep.env
|
||||
sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE#v}/" /etc/karakeep/karakeep.env
|
||||
msg_ok "Updated Karakeep"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
47
ct/kasm.sh
47
ct/kasm.sh
@@ -25,14 +25,51 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /var ]]; then
|
||||
if [[ ! -d /opt/kasm/current ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated LXC"
|
||||
|
||||
msg_info "Checking for new version"
|
||||
CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}')
|
||||
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
|
||||
msg_error "Unable to detect latest Kasm release URL."
|
||||
exit 1
|
||||
fi
|
||||
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||
msg_info "Checked for new version"
|
||||
|
||||
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
|
||||
|
||||
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."
|
||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ upgrade.sh inside tar.gz $KASM_URL"
|
||||
echo
|
||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
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"
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@@ -49,15 +49,12 @@ function update_script() {
|
||||
cp -a keycloak.old/conf/. keycloak/conf/
|
||||
cp -a keycloak.old/providers/. keycloak/providers/ 2>/dev/null || true
|
||||
cp -a keycloak.old/themes/. keycloak/themes/ 2>/dev/null || true
|
||||
rm -rf keycloak.old
|
||||
msg_ok "Updated Keycloak"
|
||||
|
||||
msg_info "Restarting Service"
|
||||
systemctl restart keycloak
|
||||
msg_ok "Restarted Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf keycloak.old
|
||||
msg_ok "Cleanup complete"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -50,15 +50,12 @@ function update_script() {
|
||||
$STD yarn install
|
||||
$STD yarn build
|
||||
chown -R www-data:www-data /opt/koillection/public/uploads
|
||||
rm -r /opt/koillection-backup
|
||||
msg_ok "Updated Koillection"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -r /opt/koillection-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -52,17 +52,14 @@ function update_script() {
|
||||
$STD yarn web:build
|
||||
$STD yarn prisma:deploy
|
||||
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
|
||||
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
|
||||
rm -rf /root/.cache/yarn
|
||||
rm -rf /opt/linkwarden/.next/cache
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start linkwarden
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
|
||||
rm -rf /root/.cache/yarn
|
||||
rm -rf /opt/linkwarden/.next/cache
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -42,15 +42,12 @@ function update_script() {
|
||||
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
|
||||
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
|
||||
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
|
||||
rm -rf /opt/listmonk-backup/
|
||||
msg_ok "Configured listmonk"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start listmonk
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/listmonk-backup/
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -53,15 +53,12 @@ function update_script() {
|
||||
msg_info "Configuring LubeLogger"
|
||||
chmod 700 /opt/lubelogger/CarCareTracker
|
||||
cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
|
||||
rm -rf /tmp/lubeloggerData
|
||||
msg_ok "Configured LubeLogger"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start lubelogger
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /tmp/lubeloggerData
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -38,15 +38,9 @@ function update_script() {
|
||||
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
|
||||
$STD apt install "$DEB_FILE" -y
|
||||
systemctl restart lyrion
|
||||
$STD rm -f "$DEB_FILE"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to ${RELEASE}"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD rm -f "$DEB_FILE"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "$APP is already up to date (${RELEASE})"
|
||||
|
||||
63
ct/mealie.sh
63
ct/mealie.sh
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="Mealie"
|
||||
var_tags="${var_tags:-recipes}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
@@ -30,53 +30,61 @@ function update_script() {
|
||||
fi
|
||||
if check_for_gh_release "mealie" "mealie-recipes/mealie"; then
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
NODE_MODULE="yarn" NODE_VERSION="20" setup_nodejs
|
||||
NODE_MODULE="yarn" NODE_VERSION="24" setup_nodejs
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop mealie
|
||||
msg_info "Stopped Service"
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up .env and start.sh"
|
||||
cp -f /opt/mealie/mealie.env /opt/mealie/mealie.env.bak
|
||||
cp -f /opt/mealie/start.sh /opt/mealie/start.sh.bak
|
||||
msg_info "Backing up Configuration"
|
||||
cp -f /opt/mealie/mealie.env /opt/mealie.env
|
||||
msg_ok "Backup completed"
|
||||
|
||||
fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie"
|
||||
|
||||
msg_info "Rebuilding Frontend"
|
||||
msg_info "Installing Python Dependencies with uv"
|
||||
cd /opt/mealie
|
||||
$STD uv sync --frozen --extra pgsql
|
||||
msg_ok "Installed Python Dependencies"
|
||||
|
||||
msg_info "Building Frontend"
|
||||
MEALIE_VERSION=$(<$HOME/.mealie)
|
||||
$STD sed -i "s|https://github.com/mealie-recipes/mealie/commit/|https://github.com/mealie-recipes/mealie/releases/tag/|g" /opt/mealie/frontend/pages/admin/site-settings.vue
|
||||
$STD sed -i "s|value: data.buildId,|value: \"v${MEALIE_VERSION}\",|g" /opt/mealie/frontend/pages/admin/site-settings.vue
|
||||
$STD sed -i "s|value: data.production ? i18n.t(\"about.production\") : i18n.t(\"about.development\"),|value: \"bare-metal\",|g" /opt/mealie/frontend/pages/admin/site-settings.vue
|
||||
export NUXT_TELEMETRY_DISABLED=1
|
||||
cd /opt/mealie/frontend
|
||||
$STD yarn install --prefer-offline --frozen-lockfile --non-interactive --production=false --network-timeout 1000000
|
||||
$STD yarn generate
|
||||
cp -r /opt/mealie/frontend/dist /opt/mealie/mealie/frontend
|
||||
msg_ok "Frontend rebuilt"
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Rebuilding Backend Environment"
|
||||
msg_info "Copying Built Frontend"
|
||||
mkdir -p /opt/mealie/mealie/frontend
|
||||
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 /opt/mealie/.venv/bin/poetry self add "poetry-plugin-export>=1.9"
|
||||
MEALIE_VERSION=$(/opt/mealie/.venv/bin/poetry version --short)
|
||||
$STD /opt/mealie/.venv/bin/poetry build --output dist
|
||||
$STD /opt/mealie/.venv/bin/poetry export --only=main --extras=pgsql --output=dist/requirements.txt
|
||||
echo "mealie[pgsql]==$MEALIE_VERSION \\" >>dist/requirements.txt
|
||||
/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.whl | tail -n1 | tr -d '\n' >>dist/requirements.txt
|
||||
echo " \\" >>dist/requirements.txt
|
||||
/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.tar.gz | tail -n1 >>dist/requirements.txt
|
||||
msg_ok "Backend prepared"
|
||||
|
||||
msg_info "Finalize Installation"
|
||||
$STD /opt/mealie/.venv/bin/uv pip install --require-hashes -r /opt/mealie/dist/requirements.txt --find-links dist
|
||||
msg_ok "Mealie installed"
|
||||
$STD uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
|
||||
msg_ok "Updated NLTK Data"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
mv -f /opt/mealie/mealie.env.bak /opt/mealie/mealie.env
|
||||
mv -f /opt/mealie/start.sh.bak /opt/mealie/start.sh
|
||||
mv -f /opt/mealie.env /opt/mealie/mealie.env
|
||||
cat <<'STARTEOF' >/opt/mealie/start.sh
|
||||
#!/bin/bash
|
||||
set -a
|
||||
source /opt/mealie/mealie.env
|
||||
set +a
|
||||
exec uv run mealie
|
||||
STARTEOF
|
||||
chmod +x /opt/mealie/start.sh
|
||||
msg_ok "Configuration restored"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start mealie
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Update Successful"
|
||||
msg_ok "Updated successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
@@ -89,3 +97,4 @@ 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}:9000${CL}"
|
||||
|
||||
|
||||
@@ -55,17 +55,13 @@ function update_script() {
|
||||
mv /usr/local/bin/minio /usr/local/bin/minio_bak
|
||||
curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio
|
||||
chmod +x /usr/local/bin/minio
|
||||
rm -f /usr/local/bin/minio_bak
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start minio
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f /usr/local/bin/minio_bak
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
@@ -52,15 +52,12 @@ function update_script() {
|
||||
$STD php artisan monica:update --force
|
||||
chown -R www-data:www-data /opt/monica
|
||||
chmod -R 775 /opt/monica/storage
|
||||
rm -r /opt/monica-backup
|
||||
msg_ok "Configured monica"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -r /opt/monica-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -57,17 +57,14 @@ function update_script() {
|
||||
fi
|
||||
|
||||
$STD /opt/netbox/upgrade.sh
|
||||
rm -r "/opt/v${RELEASE}.zip"
|
||||
rm -r /opt/netbox-backup
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start netbox netbox-rq
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -r "/opt/v${RELEASE}.zip"
|
||||
rm -r /opt/netbox-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
||||
APP="NetVisor"
|
||||
var_tags="${var_tags:-analytics}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-6}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
@@ -35,18 +35,30 @@ function update_script() {
|
||||
msg_ok "Stopped services"
|
||||
|
||||
msg_info "Backing up configurations"
|
||||
cp /opt/netvisor/.env /opt/netvisor.env
|
||||
cp /opt/netvisor/.env /opt/netvisor.env.bak
|
||||
msg_ok "Backed up configurations"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
|
||||
|
||||
if ! dpkg -l | grep -q "pkg-config"; then
|
||||
$STD apt install -y pkg-config
|
||||
fi
|
||||
if ! dpkg -l | grep -q "libssl-dev"; then
|
||||
$STD apt install -y libssl-dev
|
||||
fi
|
||||
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
|
||||
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
|
||||
|
||||
mv /opt/netvisor.env /opt/netvisor/.env
|
||||
cp /opt/netvisor.env.bak /opt/netvisor/.env
|
||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
|
||||
if ! grep -q "PUBLIC_URL" /opt/netvisor/.env; then
|
||||
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env
|
||||
fi
|
||||
sed -i 's|_TARGET=.*$|_URL=http://127.0.0.1:60072|' /opt/netvisor/.env
|
||||
|
||||
msg_info "Creating frontend UI"
|
||||
export PUBLIC_SERVER_HOSTNAME=default
|
||||
export PUBLIC_SERVER_PORT=60072
|
||||
export PUBLIC_SERVER_PORT=""
|
||||
cd /opt/netvisor/ui
|
||||
$STD npm ci --no-fund --no-audit
|
||||
$STD npm run build
|
||||
@@ -58,10 +70,16 @@ function update_script() {
|
||||
mv ./target/release/server /usr/bin/netvisor-server
|
||||
msg_ok "Built Netvisor-server"
|
||||
|
||||
msg_info "Building Netvisor-daemon (amd64 version)"
|
||||
msg_info "Building Netvisor-daemon"
|
||||
$STD cargo build --release --bin daemon
|
||||
cp ./target/release/daemon /usr/bin/netvisor-daemon
|
||||
msg_ok "Built Netvisor-daemon (amd64 version)"
|
||||
msg_ok "Built Netvisor-daemon"
|
||||
|
||||
sed -i -e 's|-target|-url|' \
|
||||
-e 's| --server-port |:|' \
|
||||
/etc/systemd/system/netvisor-daemon.service
|
||||
sed -i '/^ \"server_target.*$/d' /root/.config/daemon/config.json
|
||||
systemctl daemon-reload
|
||||
|
||||
msg_info "Starting services"
|
||||
systemctl start netvisor-server netvisor-daemon
|
||||
|
||||
@@ -21,37 +21,34 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/nextpvr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop nextpvr-server
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating LXC packages"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated LXC packages"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt
|
||||
curl -fsSL "https://nextpvr.com/nextpvr-helper.deb" -o $(basename "https://nextpvr.com/nextpvr-helper.deb")
|
||||
$STD dpkg -i nextpvr-helper.deb
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start nextpvr-server
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/nextpvr-helper.deb
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/nextpvr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop nextpvr-server
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating LXC packages"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated LXC packages"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt
|
||||
curl -fsSL "https://nextpvr.com/nextpvr-helper.deb" -o $(basename "https://nextpvr.com/nextpvr-helper.deb")
|
||||
$STD dpkg -i nextpvr-helper.deb
|
||||
rm -rf /opt/nextpvr-helper.deb
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start nextpvr-server
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -49,12 +49,13 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
grep "tag_name" |
|
||||
awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"
|
||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
|
||||
#grep "tag_name" |
|
||||
#awk '{print substr($2, 3, length($2)-4) }')
|
||||
|
||||
RELEASE="2.13.4"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
|
||||
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop openresty
|
||||
systemctl stop npm
|
||||
|
||||
@@ -42,17 +42,13 @@ function update_script() {
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
export DEBCONF_NOWARNINGS=yes
|
||||
$STD dpkg -i nxwitness-server-$RELEASE-linux_x64.deb
|
||||
rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start networkoptix-root-tool networkoptix-mediaserver
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
@@ -50,17 +50,13 @@ function update_script() {
|
||||
msg_info "Updating ${APP} to ${LATEST_VERSION}"
|
||||
curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
|
||||
$STD apt install -y /opt/odoo.deb
|
||||
rm -f /opt/odoo.deb
|
||||
echo "$LATEST_VERSION" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${LATEST_VERSION}"
|
||||
|
||||
msg_info "Starting ${APP} service"
|
||||
msg_info "Starting Service"
|
||||
systemctl start odoo
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f /opt/odoo.deb
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${LATEST_VERSION}"
|
||||
|
||||
@@ -43,16 +43,13 @@ function update_script() {
|
||||
mkdir -p /usr/local/lib/ollama
|
||||
tar -xzf "${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}"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start ollama
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f "${TMP_TAR}"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. Ollama is already at ${RELEASE}"
|
||||
|
||||
18
ct/omada.sh
18
ct/omada.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-3072}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
@@ -30,21 +30,13 @@ function update_script() {
|
||||
|
||||
msg_info "Updating MongoDB"
|
||||
if lscpu | grep -q 'avx'; then
|
||||
MONGO_VERSION="8.0" setup_mongodb
|
||||
MONGO_VERSION="8.0"
|
||||
else
|
||||
msg_warn "No AVX detected: Using older MongoDB 4.4"
|
||||
MONGO_VERSION="4.4" setup_mongodb
|
||||
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs."
|
||||
exit 10
|
||||
fi
|
||||
|
||||
msg_info "Checking if right Azul Zulu Java is installed"
|
||||
java_version=$(java -version 2>&1 | awk -F[\"_] '/version/ {print $2}')
|
||||
if [[ "$java_version" =~ ^1\.8\.* ]]; then
|
||||
$STD apt remove --purge -y zulu8-jdk
|
||||
$STD apt -y install zulu21-jre-headless
|
||||
msg_ok "Updated Azul Zulu Java to 21"
|
||||
else
|
||||
msg_ok "Azul Zulu Java 21 already installed"
|
||||
fi
|
||||
JAVA_VERSION="21" setup_java
|
||||
|
||||
msg_info "Updating Omada Controller"
|
||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
|
||||
|
||||
@@ -39,17 +39,14 @@ function update_script() {
|
||||
tar -xzf onedev-latest.tar.gz
|
||||
$STD /opt/onedev-latest/bin/upgrade.sh /opt/onedev
|
||||
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
|
||||
rm -rf /opt/onedev-latest
|
||||
rm -rf /opt/onedev-latest.tar.gz
|
||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start onedev
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/onedev-latest
|
||||
rm -rf /opt/onedev-latest.tar.gz
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||
|
||||
@@ -108,7 +108,7 @@ EOF
|
||||
|
||||
msg_info "Updating Open WebUI via uv"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
$STD uv tool install --python 3.12 open-webui[all]
|
||||
$STD uv tool upgrade --python 3.12 open-webui[all]
|
||||
systemctl restart open-webui
|
||||
msg_ok "Updated Open WebUI"
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
@@ -65,17 +65,14 @@ EOF
|
||||
$STD pip install --no-cache-dir -r requirements.txt
|
||||
mkdir -p data/chromadb
|
||||
$STD npm install
|
||||
rm -rf /opt/v${RELEASE}.zip
|
||||
rm -rf /opt/paperless-ai_bak
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start paperless-ai
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/v${RELEASE}.zip
|
||||
rm -rf /opt/paperless-ai_bak
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -20,48 +20,45 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/paperless-gpt ]]; then
|
||||
msg_error "No Paperless-GPT installation found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop paperless-gpt
|
||||
msg_ok "Service Stopped"
|
||||
|
||||
msg_info "Updating Paperless-GPT to ${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf $temp_file
|
||||
rm -rf /opt/paperless-gpt
|
||||
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||
cd /opt/paperless-gpt/web-app
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
cd /opt/paperless-gpt
|
||||
go mod download
|
||||
export CC=musl-gcc
|
||||
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
|
||||
msg_ok "Updated Paperless-GPT to ${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start paperless-gpt
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f $temp_file
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/paperless-gpt ]]; then
|
||||
msg_error "No Paperless-GPT installation found!"
|
||||
exit
|
||||
fi
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop paperless-gpt
|
||||
msg_ok "Service Stopped"
|
||||
|
||||
msg_info "Updating Paperless-GPT to ${RELEASE}"
|
||||
temp_file=$(mktemp)
|
||||
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||
tar zxf $temp_file
|
||||
rm -rf /opt/paperless-gpt
|
||||
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
|
||||
cd /opt/paperless-gpt/web-app
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
cd /opt/paperless-gpt
|
||||
go mod download
|
||||
export CC=musl-gcc
|
||||
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
|
||||
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
|
||||
rm -f $temp_file
|
||||
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
|
||||
msg_ok "Updated Paperless-GPT to ${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start paperless-gpt
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
@@ -27,6 +27,27 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check for old data structure and prompt migration
|
||||
if [[ -f /opt/paperless/paperless.conf ]]; then
|
||||
local OLD_DIRS=()
|
||||
[[ -d /opt/paperless/consume ]] && OLD_DIRS+=("consume")
|
||||
[[ -d /opt/paperless/data ]] && OLD_DIRS+=("data")
|
||||
[[ -d /opt/paperless/media ]] && OLD_DIRS+=("media")
|
||||
|
||||
if [[ ${#OLD_DIRS[@]} -gt 0 ]]; then
|
||||
msg_error "Old data structure detected in /opt/paperless/"
|
||||
msg_custom "📂" "Found directories: ${OLD_DIRS[*]}"
|
||||
echo -e ""
|
||||
msg_custom "🔄" "Migration required to new data structure (/opt/paperless_data/)"
|
||||
msg_custom "📖" "Please follow the migration guide:"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/9223${CL}"
|
||||
echo -e ""
|
||||
msg_custom "⚠️" "Update aborted. Please migrate your data first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx"; then
|
||||
msg_info "Stopping all Paperless-ngx Services"
|
||||
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
|
||||
@@ -34,15 +55,9 @@ function update_script() {
|
||||
|
||||
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
|
||||
|
||||
msg_info "Backing up user data and configuration"
|
||||
msg_info "Backing up configuration"
|
||||
local BACKUP_DIR="/opt/paperless_backup_$$"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
for dir in /opt/paperless/*/; do
|
||||
dir_name=$(basename "$dir")
|
||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||
msg_ok "Backup completed to $BACKUP_DIR"
|
||||
|
||||
@@ -83,20 +98,14 @@ function update_script() {
|
||||
rm -rf /opt/paperless/venv
|
||||
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
|
||||
|
||||
msg_info "Backing up user data and configuration"
|
||||
msg_info "Backing up configuration"
|
||||
local BACKUP_DIR="/opt/paperless_backup_$$"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
for dir in /opt/paperless/*/; do
|
||||
dir_name=$(basename "$dir")
|
||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||
msg_ok "Backup completed to $BACKUP_DIR"
|
||||
|
||||
declare -A PATCHES=(
|
||||
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
|
||||
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
|
||||
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
|
||||
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
|
||||
@@ -121,16 +130,9 @@ function update_script() {
|
||||
done
|
||||
|
||||
$STD systemctl daemon-reload
|
||||
msg_info "Backing up user data and configuration"
|
||||
msg_info "Backing up configuration"
|
||||
BACKUP_DIR="/opt/paperless_backup_$$"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
for dir in /opt/paperless/*/; do
|
||||
dir_name=$(basename "$dir")
|
||||
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
|
||||
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
|
||||
msg_ok "Backup completed to $BACKUP_DIR"
|
||||
|
||||
|
||||
@@ -52,17 +52,14 @@ function update_script() {
|
||||
$STD php bin/console cache:clear
|
||||
$STD php bin/console doctrine:migrations:migrate -n
|
||||
chown -R www-data:www-data /opt/partdb
|
||||
rm -r "/opt/v${RELEASE}.zip"
|
||||
rm -r /opt/partdb-backup
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start apache2
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -r "/opt/v${RELEASE}.zip"
|
||||
rm -r /opt/partdb-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
44
ct/passbolt.sh
Normal file
44
ct/passbolt.sh
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.passbolt.com/
|
||||
|
||||
APP="Passbolt"
|
||||
var_tags="${var_tags:-auth}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
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 /var ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating $APP LXC"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated $APP LXC"
|
||||
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}"
|
||||
@@ -67,6 +67,7 @@ function update_script() {
|
||||
$STD php artisan migrate --seed --force
|
||||
chown -R www-data:www-data /opt/pelican-panel
|
||||
chmod -R 755 /opt/pelican-panel/storage /opt/pelican-panel/bootstrap/cache/
|
||||
rm -rf "/opt/pelican-panel/panel.tar.gz"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
@@ -74,10 +75,6 @@ function update_script() {
|
||||
$STD php artisan queue:restart
|
||||
$STD php artisan up
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/opt/pelican-panel/panel.tar.gz"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -23,7 +23,8 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] && [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||
if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] \
|
||||
&& [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -70,6 +70,7 @@ EOF
|
||||
$STD php artisan migrate --seed --force --no-interaction
|
||||
chown -R www-data:www-data /opt/pterodactyl-panel/*
|
||||
chmod -R 755 /opt/pterodactyl-panel/storage /opt/pterodactyl-panel/bootstrap/cache/
|
||||
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
@@ -77,10 +78,6 @@ EOF
|
||||
$STD php artisan queue:restart
|
||||
$STD php artisan up
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -27,42 +27,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop pvescriptslocal
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backup Data"
|
||||
cp /opt/ProxmoxVE-Local/.env /opt/.env.bak
|
||||
cp -r /opt/ProxmoxVE-Local/data /opt/data.bak
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
if [[ -f /opt/.env.bak ]]; then
|
||||
mv /opt/.env.bak /opt/ProxmoxVE-Local/.env
|
||||
fi
|
||||
if [[ -d /opt/data.bak ]]; then
|
||||
rm -rf /opt/ProxmoxVE-Local/data
|
||||
mv /opt/data.bak /opt/ProxmoxVE-Local/data
|
||||
fi
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating PVE Scripts local"
|
||||
cd /opt/ProxmoxVE-Local
|
||||
chmod 755 data
|
||||
$STD npm install
|
||||
$STD npm run build
|
||||
msg_ok "Updated PVE Scripts local"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start pvescriptslocal
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
msg_custom "🚀" "${GN}" "The app offers a built-in updater. Please use it."
|
||||
|
||||
}
|
||||
|
||||
start
|
||||
|
||||
45
ct/qdrant.sh
Normal file
45
ct/qdrant.sh
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/qdrant/qdrant
|
||||
|
||||
APP="Qdrant"
|
||||
var_tags="${var_tags:-database;vector}"
|
||||
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 [[ ! -d /var/lib/qdrant ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "qdrant" "qdrant/qdrant"; then
|
||||
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
|
||||
chown -R root:root /var/lib/qdrant
|
||||
chmod -R 755 /var/lib/qdrant
|
||||
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}:6333/dashboard${CL}"
|
||||
@@ -43,14 +43,11 @@ function update_script() {
|
||||
$STD apt remove --purge -y dotnet-sdk-8.0
|
||||
$STD apt install -y dotnet-sdk-9.0
|
||||
fi
|
||||
rm -rf /opt/rdtc-backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start rdtc
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/rdtc-backup
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -54,6 +54,7 @@ function update_script() {
|
||||
cd /tmp
|
||||
curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb
|
||||
$STD dpkg -i minio.deb
|
||||
rm -f /tmp/minio.deb
|
||||
msg_ok "Updated Minio"
|
||||
|
||||
msg_info "Updating Browserless (Patience)"
|
||||
@@ -75,16 +76,12 @@ function update_script() {
|
||||
$STD npm run build:function
|
||||
$STD npm prune production
|
||||
mv /opt/browserless.env /opt/browserless/.env
|
||||
rm -f "$brwsr_tmp"
|
||||
msg_ok "Updated Browserless"
|
||||
|
||||
msg_info "Restarting services"
|
||||
systemctl start minio Reactive-Resume browserless
|
||||
msg_ok "Restarted services"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f /tmp/minio.deb
|
||||
rm -f "$brwsr_tmp"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -29,15 +29,10 @@ function update_script() {
|
||||
fi
|
||||
if check_for_gh_release "recyclarr" "recyclarr/recyclarr"; then
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop recyclarr
|
||||
msg_ok "Stopped Service"
|
||||
msg_info "Updating ${APP}"
|
||||
|
||||
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start recyclarr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -41,15 +41,12 @@ function update_script() {
|
||||
$STD npm install
|
||||
cp -f /opt/index.html /opt/revealjs
|
||||
sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js
|
||||
rm -f /opt/index.html
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start revealjs
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f /opt/index.html
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -61,15 +61,12 @@ function update_script() {
|
||||
$STD pip install -r requirements.txt
|
||||
mv /opt/config.ini.bak /opt/soularr/config.ini
|
||||
mv /opt/run.sh.bak /opt/soularr/run.sh
|
||||
rm -rf /tmp/main.zip
|
||||
msg_ok "Updated soularr"
|
||||
|
||||
msg_info "Starting soularr timer"
|
||||
systemctl start soularr.timer
|
||||
msg_ok "Started soularr timer"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /tmp/main.zip
|
||||
msg_ok "Cleanup Completed"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ function update_script() {
|
||||
sed -i '/index index.php;/i \ client_max_body_size 100M;' /etc/nginx/conf.d/snipeit.conf
|
||||
fi
|
||||
|
||||
if check_for_gh_release "snipe-it" "snipe/snipe-it"; then
|
||||
if check_for_gh_release "snipe-it" "grokability/snipe-it"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop nginx
|
||||
msg_ok "Services Stopped"
|
||||
@@ -40,7 +40,7 @@ function update_script() {
|
||||
mv /opt/snipe-it /opt/snipe-it-backup
|
||||
msg_ok "Backup created"
|
||||
|
||||
fetch_and_deploy_gh_release "snipe-it" "snipe/snipe-it" "tarball"
|
||||
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
|
||||
[[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
|
||||
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf
|
||||
setup_composer
|
||||
|
||||
@@ -43,17 +43,13 @@ function update_script() {
|
||||
cd spoolman
|
||||
$STD pip3 install -r requirements.txt
|
||||
curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
|
||||
rm -rf /opt/spoolman.zip
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start spoolman
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/spoolman.zip
|
||||
msg_ok "Cleaned"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
@@ -64,16 +64,13 @@ EOF
|
||||
cd /opt/tandoor
|
||||
$STD /opt/tandoor/.venv/bin/python manage.py migrate
|
||||
$STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
|
||||
rm -rf /opt/tandoor.bak
|
||||
msg_ok "Updated Trandoor"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tandoor
|
||||
systemctl reload nginx
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/tandoor.bak
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -45,16 +45,13 @@ function update_script() {
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
$STD npm i
|
||||
$STD yarn build
|
||||
rm -r "/opt/v${RELEASE}.tar.gz"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated TasmoCompiler"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start tasmocompiler
|
||||
msg_ok "Started Service"
|
||||
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_info "Cleaning up"
|
||||
rm -r "/opt/v${RELEASE}.tar.gz"
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -37,11 +37,8 @@ function update_script() {
|
||||
$STD unzip Tdarr_Updater.zip
|
||||
chmod +x Tdarr_Updater
|
||||
$STD ./Tdarr_Updater
|
||||
msg_ok "Updated Tdarr"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/tdarr/Tdarr_Updater.zip
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated Tdarr"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -38,11 +38,8 @@ function update_script() {
|
||||
msg_info "Updating Technitium DNS"
|
||||
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
||||
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
||||
msg_ok "Updated Technitium DNS"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -f /opt/DnsServerPortable.tar.gz
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated Technitium DNS"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. Technitium DNS is already at v${RELEASE}."
|
||||
|
||||
@@ -41,15 +41,12 @@ function update_script() {
|
||||
|
||||
msg_info "Restoring data"
|
||||
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
|
||||
rm -rf /opt/teddycloud_bak
|
||||
msg_ok "Data restored"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start teddycloud
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/teddycloud_bak
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
15
ct/tianji.sh
15
ct/tianji.sh
@@ -43,7 +43,7 @@ function update_script() {
|
||||
|
||||
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
msg_info "Updating Tianji"
|
||||
cd /opt/tianji
|
||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
|
||||
@@ -55,7 +55,11 @@ function update_script() {
|
||||
mv /opt/.env /opt/tianji/src/server/.env
|
||||
cd src/server
|
||||
$STD pnpm db:migrate:apply
|
||||
msg_ok "Updated ${APP}"
|
||||
rm -rf /opt/tianji_bak
|
||||
rm -rf /opt/tianji/src/client
|
||||
rm -rf /opt/tianji/website
|
||||
rm -rf /opt/tianji/reporter
|
||||
msg_ok "Updated Tianji"
|
||||
|
||||
msg_info "Updating AppRise"
|
||||
$STD uv pip install apprise cryptography --system
|
||||
@@ -64,13 +68,6 @@ function update_script() {
|
||||
msg_info "Starting Service"
|
||||
systemctl start tianji
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/tianji_bak
|
||||
rm -rf /opt/tianji/src/client
|
||||
rm -rf /opt/tianji/website
|
||||
rm -rf /opt/tianji/reporter
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -50,18 +50,12 @@ function update_script() {
|
||||
mv /opt/traccar.xml /opt/traccar/conf
|
||||
[[ -d /opt/data ]] && mv /opt/data /opt/traccar
|
||||
[[ -d /opt/media ]] && mv /opt/media /opt/traccar
|
||||
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
|
||||
msg_ok "Data restored"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start traccar
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
@@ -55,14 +55,8 @@ function update_script() {
|
||||
msg_info "Restoring Database"
|
||||
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
|
||||
cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}"
|
||||
msg_ok "Restored Database"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/trilium_backup
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Restored Database"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start trilium
|
||||
|
||||
@@ -43,12 +43,6 @@ function update_script() {
|
||||
msg_info "Starting Service"
|
||||
systemctl start uhf-server
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
54
ct/upgopher.sh
Normal file
54
ct/upgopher.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-2025 community-scripts ORG
|
||||
# Author: Eduard González (wanetty)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/wanetty/upgopher
|
||||
|
||||
APP="Upgopher"
|
||||
var_tags="${var_tags:-file-sharing}"
|
||||
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/upgopher ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "upgopher" "wanetty/upgopher"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop upgopher
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "upgopher" "wanetty/upgopher" "prebuild" "latest" "/opt/upgopher" "upgopher_*_linux_amd64.tar.gz"
|
||||
chmod +x /opt/upgopher/upgopher
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start upgopher
|
||||
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}:9090${CL}"
|
||||
45
ct/valkey.sh
Normal file
45
ct/valkey.sh
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: pshankinclarke (lazarillo)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://valkey.io/
|
||||
|
||||
APP="Valkey"
|
||||
var_tags="${var_tags:-database}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /lib/systemd/system/valkey-server.service ]]; then
|
||||
msg_error "No Valkey Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating Valkey LXC"
|
||||
$STD apt update
|
||||
$STD apt -y upgrade
|
||||
msg_ok "Updated Valkey LXC"
|
||||
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}:6379${CL}"
|
||||
@@ -57,11 +57,8 @@ function update_script() {
|
||||
else
|
||||
cp target/release/vaultwarden /opt/vaultwarden/bin/
|
||||
fi
|
||||
msg_ok "Updated VaultWarden"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
cd ~ && rm -rf vaultwarden
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated VaultWarden"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start vaultwarden
|
||||
@@ -77,11 +74,8 @@ function update_script() {
|
||||
msg_info "Updating Web-Vault to $WVRELEASE"
|
||||
$STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/"$WVRELEASE"/bw_web_"$WVRELEASE".tar.gz
|
||||
$STD tar -zxf bw_web_"$WVRELEASE".tar.gz -C /opt/vaultwarden/
|
||||
msg_ok "Updated Web-Vault"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm bw_web_"$WVRELEASE".tar.gz
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated Web-Vault"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start vaultwarden
|
||||
|
||||
@@ -39,16 +39,13 @@ function update_script() {
|
||||
curl -fsSL "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb" -o $(basename "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb")
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
$STD dpkg -i vikunja-"$RELEASE"-amd64.deb
|
||||
rm -rf /opt/vikunja-"$RELEASE"-amd64.deb
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start vikunja
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/vikunja-"$RELEASE"-amd64.deb
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||
|
||||
75
ct/wanderer.sh
Normal file
75
ct/wanderer.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: rrole
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://wanderer.to
|
||||
|
||||
APP="Wanderer"
|
||||
var_tags="${var_tags:-travelling;sport}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
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 [[ ! -f /opt/wanderer/start.sh ]]; then
|
||||
msg_error "No wanderer Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "wanderer" "Flomp/wanderer"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop wanderer-web
|
||||
msg_ok "Stopped service"
|
||||
|
||||
fetch_and_deploy_gh_release "wanderer" "Flomp/wanderer" "tarball" "latest" "/opt/wanderer/source"
|
||||
|
||||
msg_info "Updating wanderer"
|
||||
cd /opt/wanderer/source/db
|
||||
$STD go mod tidy
|
||||
$STD go build
|
||||
cd /opt/wanderer/source/web
|
||||
$STD npm ci --omit=dev
|
||||
$STD npm run build
|
||||
msg_ok "Updated wanderer"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start wanderer-web
|
||||
msg_ok "Started service"
|
||||
msg_ok "Update Successful"
|
||||
fi
|
||||
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop wanderer-web
|
||||
msg_ok "Stopped service"
|
||||
|
||||
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start wanderer-web
|
||||
msg_ok "Started service"
|
||||
msg_ok "Update Successful"
|
||||
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}"
|
||||
@@ -73,16 +73,13 @@ EOF
|
||||
cp -f wastebin* /opt/wastebin/
|
||||
chmod +x /opt/wastebin/wastebin
|
||||
chmod +x /opt/wastebin/wastebin-ctl
|
||||
rm -f "$temp_file"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated Wastebin"
|
||||
|
||||
msg_info "Starting Wastebin"
|
||||
systemctl start wastebin
|
||||
msg_ok "Started Wastebin"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -f "$temp_file"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -37,10 +37,7 @@ function update_script() {
|
||||
fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
|
||||
cp -R config.yaml /data/config.yaml
|
||||
sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm ~/config.yaml
|
||||
msg_ok "Cleaned up"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl enable -q --now watchyourlan
|
||||
|
||||
@@ -45,16 +45,13 @@ function update_script() {
|
||||
$STD python3 manage.py collectstatic --no-input
|
||||
$STD yarn install
|
||||
$STD yarn build:css:sass
|
||||
rm -rf "$temp_file"
|
||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||
msg_ok "Updated $APP to v${RELEASE}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start wger
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf "$temp_file"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
else
|
||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||
|
||||
@@ -54,15 +54,12 @@ function update_script() {
|
||||
msg_info "Restoring Data"
|
||||
cp -R /opt/wikijs-backup/* /opt/wikijs
|
||||
$SQLITE_INSTALL && $STD npm rebuild sqlite3
|
||||
rm -rf /opt/wikijs-backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start wikijs
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /opt/wikijs-backup
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
21
ct/wizarr.sh
21
ct/wizarr.sh
@@ -52,19 +52,26 @@ function update_script() {
|
||||
$STD npm --prefix app/static run build:css
|
||||
mkdir -p ./.cache
|
||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
||||
$STD /usr/local/bin/uv run --frozen flask db upgrade
|
||||
if ! grep -q 'frozen' /opt/wizarr/start.sh; then
|
||||
sed -i 's/run/& --frozen/' /opt/wizarr/start.sh
|
||||
if grep -q 'workers' /opt/wizarr/start.sh; then
|
||||
sed -i 's/--workers 4//' /opt/wizarr/start.sh
|
||||
fi
|
||||
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
|
||||
{
|
||||
echo "FLASK_ENV=production"
|
||||
echo "GUNICORN_WORKERS=4"
|
||||
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
|
||||
} >>/opt/wizarr/.env
|
||||
else
|
||||
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
|
||||
fi
|
||||
rm -rf "$BACKUP_FILE"
|
||||
export FLASK_SKIP_SCHEDULER=true
|
||||
$STD /usr/local/bin/uv run --frozen flask db upgrade
|
||||
msg_ok "Updated Wizarr"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start wizarr
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf "$BACKUP_FILE"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
29
ct/zabbix.sh
29
ct/zabbix.sh
@@ -46,7 +46,20 @@ function update_script() {
|
||||
systemctl stop "$AGENT_SERVICE"
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Updating Zabbix"
|
||||
read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
|
||||
ZABBIX_CHOICE=${ZABBIX_CHOICE:-2}
|
||||
case "$ZABBIX_CHOICE" in
|
||||
1) ZABBIX_VERSION="7.0" ;;
|
||||
2) ZABBIX_VERSION="7.4" ;;
|
||||
3) ZABBIX_VERSION=$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
||||
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1) ;;
|
||||
*)
|
||||
ZABBIX_VERSION="7.4"
|
||||
echo "Invalid choice. Defaulting to 7.4."
|
||||
;;
|
||||
esac
|
||||
|
||||
msg_info "Updating Zabbix to $ZABBIX_VERSION"
|
||||
mkdir -p /opt/zabbix-backup/
|
||||
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
|
||||
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
|
||||
@@ -54,11 +67,10 @@ function update_script() {
|
||||
|
||||
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
||||
cd /tmp
|
||||
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
||||
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
|
||||
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
|
||||
-o /tmp/zabbix-release_latest+debian13_all.deb
|
||||
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"
|
||||
curl -fsSL "$ZABBIX_DEB_URL" -o /tmp/zabbix-release_latest+debian13_all.deb
|
||||
$STD dpkg -i zabbix-release_latest+debian13_all.deb
|
||||
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
|
||||
$STD apt update
|
||||
|
||||
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
|
||||
@@ -88,13 +100,6 @@ function update_script() {
|
||||
systemctl start "$AGENT_SERVICE"
|
||||
systemctl restart apache2
|
||||
msg_ok "Started Services"
|
||||
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
|
||||
$STD apt -y autoremove
|
||||
$STD apt -y autoclean
|
||||
$STD apt -y clean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -47,18 +47,15 @@ function update_script() {
|
||||
rm -rf /opt/zigbee2mqtt/data
|
||||
mv /opt/z2m_backup/data /opt/zigbee2mqtt
|
||||
cd /opt/zigbee2mqtt
|
||||
grep -q "^packageImportMethod" ./pnpm-workspace.yaml || echo "packageImportMethod: hardlink" >> ./pnpm-workspace.yaml
|
||||
grep -q "^packageImportMethod" ./pnpm-workspace.yaml || echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm build
|
||||
rm -rf /opt/z2m_backup
|
||||
msg_ok "Updated Zigbee2MQTT"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start zigbee2mqtt
|
||||
msg_ok "Started Service"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
rm -rf /opt/z2m_backup
|
||||
msg_ok "Cleaned up"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
748
docs/DEFAULTS_SYSTEM_GUIDE.md
Normal file
748
docs/DEFAULTS_SYSTEM_GUIDE.md
Normal file
@@ -0,0 +1,748 @@
|
||||
# Configuration & Defaults System - User Guide
|
||||
|
||||
> **Complete Guide to App Defaults and User Defaults**
|
||||
>
|
||||
> *Learn how to configure, save, and reuse your installation settings*
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Quick Start](#quick-start)
|
||||
2. [Understanding the Defaults System](#understanding-the-defaults-system)
|
||||
3. [Installation Modes](#installation-modes)
|
||||
4. [How to Save Defaults](#how-to-save-defaults)
|
||||
5. [How to Use Saved Defaults](#how-to-use-saved-defaults)
|
||||
6. [Managing Your Defaults](#managing-your-defaults)
|
||||
7. [Advanced Configuration](#advanced-configuration)
|
||||
8. [Troubleshooting](#troubleshooting)
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 30-Second Setup
|
||||
|
||||
```bash
|
||||
# 1. Run any container installation script
|
||||
bash pihole-install.sh
|
||||
|
||||
# 2. When prompted, select: "Advanced Settings"
|
||||
# (This allows you to customize everything)
|
||||
|
||||
# 3. Answer all configuration questions
|
||||
|
||||
# 4. At the end, when asked "Save as App Defaults?"
|
||||
# Select: YES
|
||||
|
||||
# 5. Done! Your settings are now saved
|
||||
```
|
||||
|
||||
**Next Time**: Run the same script again, select **"App Defaults"** and your settings will be applied automatically!
|
||||
|
||||
---
|
||||
|
||||
## Understanding the Defaults System
|
||||
|
||||
### The Three-Tier System
|
||||
|
||||
Your installation settings are managed through three layers:
|
||||
|
||||
#### 🔷 **Tier 1: Built-in Defaults** (Fallback)
|
||||
```
|
||||
These are hardcoded in the scripts
|
||||
Provide sensible defaults for each application
|
||||
Example: PiHole uses 2 CPU cores by default
|
||||
```
|
||||
|
||||
#### 🔶 **Tier 2: User Defaults** (Global)
|
||||
```
|
||||
Your personal global defaults
|
||||
Applied to ALL container installations
|
||||
Location: /usr/local/community-scripts/default.vars
|
||||
Example: "I always want 4 CPU cores and 2GB RAM"
|
||||
```
|
||||
|
||||
#### 🔴 **Tier 3: App Defaults** (Specific)
|
||||
```
|
||||
Application-specific saved settings
|
||||
Only applied when installing that specific app
|
||||
Location: /usr/local/community-scripts/defaults/<appname>.vars
|
||||
Example: "Whenever I install PiHole, use these exact settings"
|
||||
```
|
||||
|
||||
### Priority System
|
||||
|
||||
When installing a container, settings are applied in this order:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 1. Environment Variables (HIGHEST) │ Set in shell: export var_cpu=8
|
||||
│ (these override everything) │
|
||||
├─────────────────────────────────────┤
|
||||
│ 2. App Defaults │ From: defaults/pihole.vars
|
||||
│ (app-specific saved settings) │
|
||||
├─────────────────────────────────────┤
|
||||
│ 3. User Defaults │ From: default.vars
|
||||
│ (your global defaults) │
|
||||
├─────────────────────────────────────┤
|
||||
│ 4. Built-in Defaults (LOWEST) │ Hardcoded in script
|
||||
│ (failsafe, always available) │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**In Plain English**:
|
||||
- If you set an environment variable → it wins
|
||||
- Otherwise, if you have app-specific defaults → use those
|
||||
- Otherwise, if you have user defaults → use those
|
||||
- Otherwise, use the hardcoded defaults
|
||||
|
||||
---
|
||||
|
||||
## Installation Modes
|
||||
|
||||
When you run any installation script, you'll be presented with a menu:
|
||||
|
||||
### Option 1️⃣ : **Default Settings**
|
||||
|
||||
```
|
||||
Quick installation with standard settings
|
||||
├─ Best for: First-time users, quick deployments
|
||||
├─ What happens:
|
||||
│ 1. Script uses built-in defaults
|
||||
│ 2. Container created immediately
|
||||
│ 3. No questions asked
|
||||
└─ Time: ~2 minutes
|
||||
```
|
||||
|
||||
**When to use**: You want a standard installation, don't need customization
|
||||
|
||||
---
|
||||
|
||||
### Option 2️⃣ : **Advanced Settings**
|
||||
|
||||
```
|
||||
Full customization with 19 configuration steps
|
||||
├─ Best for: Power users, custom requirements
|
||||
├─ What happens:
|
||||
│ 1. Script asks for EVERY setting
|
||||
│ 2. You control: CPU, RAM, Disk, Network, SSH, etc.
|
||||
│ 3. Shows summary before creating
|
||||
│ 4. Offers to save as App Defaults
|
||||
└─ Time: ~5-10 minutes
|
||||
```
|
||||
|
||||
**When to use**: You want full control over the configuration
|
||||
|
||||
**Available Settings**:
|
||||
- CPU cores, RAM amount, Disk size
|
||||
- Container name, network settings
|
||||
- SSH access, API access, Features
|
||||
- Password, SSH keys, Tags
|
||||
|
||||
---
|
||||
|
||||
### Option 3️⃣ : **User Defaults**
|
||||
|
||||
```
|
||||
Use your saved global defaults
|
||||
├─ Best for: Consistent deployments across many containers
|
||||
├─ Requires: You've previously saved User Defaults
|
||||
├─ What happens:
|
||||
│ 1. Loads settings from: /usr/local/community-scripts/default.vars
|
||||
│ 2. Shows you the loaded settings
|
||||
│ 3. Creates container immediately
|
||||
└─ Time: ~2 minutes
|
||||
```
|
||||
|
||||
**When to use**: You have preferred defaults you want to use for every app
|
||||
|
||||
---
|
||||
|
||||
### Option 4️⃣ : **App Defaults** (if available)
|
||||
|
||||
```
|
||||
Use previously saved app-specific defaults
|
||||
├─ Best for: Repeating the same configuration multiple times
|
||||
├─ Requires: You've previously saved App Defaults for this app
|
||||
├─ What happens:
|
||||
│ 1. Loads settings from: /usr/local/community-scripts/defaults/<app>.vars
|
||||
│ 2. Shows you the loaded settings
|
||||
│ 3. Creates container immediately
|
||||
└─ Time: ~2 minutes
|
||||
```
|
||||
|
||||
**When to use**: You've installed this app before and want identical settings
|
||||
|
||||
---
|
||||
|
||||
### Option 5️⃣ : **Settings Menu**
|
||||
|
||||
```
|
||||
Manage your saved configurations
|
||||
├─ Functions:
|
||||
│ • View current settings
|
||||
│ • Edit storage selections
|
||||
│ • Manage defaults location
|
||||
│ • See what's currently configured
|
||||
└─ Time: ~1 minute
|
||||
```
|
||||
|
||||
**When to use**: You want to review or modify saved settings
|
||||
|
||||
---
|
||||
|
||||
## How to Save Defaults
|
||||
|
||||
### Method 1: Save While Installing
|
||||
|
||||
This is the easiest way:
|
||||
|
||||
#### Step-by-Step: Create App Defaults
|
||||
|
||||
```bash
|
||||
# 1. Run the installation script
|
||||
bash pihole-install.sh
|
||||
|
||||
# 2. Choose installation mode
|
||||
# ┌─────────────────────────┐
|
||||
# │ Select installation mode:│
|
||||
# │ 1) Default Settings │
|
||||
# │ 2) Advanced Settings │
|
||||
# │ 3) User Defaults │
|
||||
# │ 4) App Defaults │
|
||||
# │ 5) Settings Menu │
|
||||
# └─────────────────────────┘
|
||||
#
|
||||
# Enter: 2 (Advanced Settings)
|
||||
|
||||
# 3. Answer all configuration questions
|
||||
# • Container name? → my-pihole
|
||||
# • CPU cores? → 4
|
||||
# • RAM amount? → 2048
|
||||
# • Disk size? → 20
|
||||
# • SSH access? → yes
|
||||
# ... (more options)
|
||||
|
||||
# 4. Review summary (shown before creation)
|
||||
# ✓ Confirm to proceed
|
||||
|
||||
# 5. After creation completes, you'll see:
|
||||
# ┌──────────────────────────────────┐
|
||||
# │ Save as App Defaults for PiHole? │
|
||||
# │ (Yes/No) │
|
||||
# └──────────────────────────────────┘
|
||||
#
|
||||
# Select: Yes
|
||||
|
||||
# 6. Done! Settings saved to:
|
||||
# /usr/local/community-scripts/defaults/pihole.vars
|
||||
```
|
||||
|
||||
#### Step-by-Step: Create User Defaults
|
||||
|
||||
```bash
|
||||
# Same as App Defaults, but:
|
||||
# When you select "Advanced Settings"
|
||||
# FIRST app you run with this selection will offer
|
||||
# to save as "User Defaults" additionally
|
||||
|
||||
# This saves to: /usr/local/community-scripts/default.vars
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Method 2: Manual File Creation
|
||||
|
||||
For advanced users who want to create defaults without running installation:
|
||||
|
||||
```bash
|
||||
# Create User Defaults manually
|
||||
sudo tee /usr/local/community-scripts/default.vars > /dev/null << 'EOF'
|
||||
# Global User Defaults
|
||||
var_cpu=4
|
||||
var_ram=2048
|
||||
var_disk=20
|
||||
var_unprivileged=1
|
||||
var_brg=vmbr0
|
||||
var_gateway=192.168.1.1
|
||||
var_timezone=Europe/Berlin
|
||||
var_ssh=yes
|
||||
var_container_storage=local
|
||||
var_template_storage=local
|
||||
EOF
|
||||
|
||||
# Create App Defaults manually
|
||||
sudo tee /usr/local/community-scripts/defaults/pihole.vars > /dev/null << 'EOF'
|
||||
# App-specific defaults for PiHole
|
||||
var_unprivileged=1
|
||||
var_cpu=2
|
||||
var_ram=1024
|
||||
var_disk=10
|
||||
var_brg=vmbr0
|
||||
var_gateway=192.168.1.1
|
||||
var_hostname=pihole
|
||||
var_container_storage=local
|
||||
var_template_storage=local
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Method 3: Using Environment Variables
|
||||
|
||||
Set defaults via environment before running:
|
||||
|
||||
```bash
|
||||
# Set as environment variables
|
||||
export var_cpu=4
|
||||
export var_ram=2048
|
||||
export var_disk=20
|
||||
export var_hostname=my-container
|
||||
|
||||
# Run installation
|
||||
bash pihole-install.sh
|
||||
|
||||
# These settings will be used
|
||||
# (Can still be overridden by saved defaults)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How to Use Saved Defaults
|
||||
|
||||
### Using User Defaults
|
||||
|
||||
```bash
|
||||
# 1. Run any installation script
|
||||
bash pihole-install.sh
|
||||
|
||||
# 2. When asked for mode, select:
|
||||
# Option: 3 (User Defaults)
|
||||
|
||||
# 3. Your settings from default.vars are applied
|
||||
# 4. Container created with your saved settings
|
||||
```
|
||||
|
||||
### Using App Defaults
|
||||
|
||||
```bash
|
||||
# 1. Run the app you configured before
|
||||
bash pihole-install.sh
|
||||
|
||||
# 2. When asked for mode, select:
|
||||
# Option: 4 (App Defaults)
|
||||
|
||||
# 3. Your settings from defaults/pihole.vars are applied
|
||||
# 4. Container created with exact same settings
|
||||
```
|
||||
|
||||
### Overriding Saved Defaults
|
||||
|
||||
```bash
|
||||
# Even if you have defaults saved,
|
||||
# you can override them with environment variables
|
||||
|
||||
export var_cpu=8 # Override saved defaults
|
||||
export var_hostname=custom-name
|
||||
|
||||
bash pihole-install.sh
|
||||
# Installation will use these values instead of saved defaults
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Managing Your Defaults
|
||||
|
||||
### View Your Settings
|
||||
|
||||
#### View User Defaults
|
||||
```bash
|
||||
cat /usr/local/community-scripts/default.vars
|
||||
```
|
||||
|
||||
#### View App Defaults
|
||||
```bash
|
||||
cat /usr/local/community-scripts/defaults/pihole.vars
|
||||
```
|
||||
|
||||
#### List All Saved App Defaults
|
||||
```bash
|
||||
ls -la /usr/local/community-scripts/defaults/
|
||||
```
|
||||
|
||||
### Edit Your Settings
|
||||
|
||||
#### Edit User Defaults
|
||||
```bash
|
||||
sudo nano /usr/local/community-scripts/default.vars
|
||||
```
|
||||
|
||||
#### Edit App Defaults
|
||||
```bash
|
||||
sudo nano /usr/local/community-scripts/defaults/pihole.vars
|
||||
```
|
||||
|
||||
### Update Existing Defaults
|
||||
|
||||
```bash
|
||||
# Run installation again with your app
|
||||
bash pihole-install.sh
|
||||
|
||||
# Select: Advanced Settings
|
||||
# Make desired changes
|
||||
# At end, when asked to save:
|
||||
# "Defaults already exist, Update?"
|
||||
# Select: Yes
|
||||
|
||||
# Your saved defaults are updated
|
||||
```
|
||||
|
||||
### Delete Defaults
|
||||
|
||||
#### Delete User Defaults
|
||||
```bash
|
||||
sudo rm /usr/local/community-scripts/default.vars
|
||||
```
|
||||
|
||||
#### Delete App Defaults
|
||||
```bash
|
||||
sudo rm /usr/local/community-scripts/defaults/pihole.vars
|
||||
```
|
||||
|
||||
#### Delete All App Defaults
|
||||
```bash
|
||||
sudo rm /usr/local/community-scripts/defaults/*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### Available Variables
|
||||
|
||||
All configurable variables start with `var_`:
|
||||
|
||||
#### Resource Allocation
|
||||
```bash
|
||||
var_cpu=4 # CPU cores
|
||||
var_ram=2048 # RAM in MB
|
||||
var_disk=20 # Disk in GB
|
||||
var_unprivileged=1 # 0=privileged, 1=unprivileged
|
||||
```
|
||||
|
||||
#### Network
|
||||
```bash
|
||||
var_brg=vmbr0 # Bridge interface
|
||||
var_net=veth # Network driver
|
||||
var_gateway=192.168.1.1 # Default gateway
|
||||
var_mtu=1500 # MTU size
|
||||
var_vlan=100 # VLAN ID
|
||||
```
|
||||
|
||||
#### System
|
||||
```bash
|
||||
var_hostname=pihole # Container name
|
||||
var_timezone=Europe/Berlin # Timezone
|
||||
var_pw=SecurePass123 # Root password
|
||||
var_tags=dns,pihole # Tags for organization
|
||||
var_verbose=yes # Enable verbose output
|
||||
```
|
||||
|
||||
#### Security & Access
|
||||
```bash
|
||||
var_ssh=yes # Enable SSH
|
||||
var_ssh_authorized_key="ssh-rsa AA..." # SSH public key
|
||||
var_protection=1 # Enable protection flag
|
||||
```
|
||||
|
||||
#### Features
|
||||
```bash
|
||||
var_fuse=1 # FUSE filesystem support
|
||||
var_tun=1 # TUN device support
|
||||
var_nesting=1 # Nesting (Docker in LXC)
|
||||
var_keyctl=1 # Keyctl syscall
|
||||
var_mknod=1 # Device node creation
|
||||
```
|
||||
|
||||
#### Storage
|
||||
```bash
|
||||
var_container_storage=local # Where to store container
|
||||
var_template_storage=local # Where to store templates
|
||||
```
|
||||
|
||||
### Example Configuration Files
|
||||
|
||||
#### Gaming Server Defaults
|
||||
```bash
|
||||
# High performance for gaming containers
|
||||
var_cpu=8
|
||||
var_ram=4096
|
||||
var_disk=50
|
||||
var_unprivileged=0
|
||||
var_fuse=1
|
||||
var_nesting=1
|
||||
var_tags=gaming
|
||||
```
|
||||
|
||||
#### Development Server
|
||||
```bash
|
||||
# Development with Docker support
|
||||
var_cpu=4
|
||||
var_ram=2048
|
||||
var_disk=30
|
||||
var_unprivileged=1
|
||||
var_nesting=1
|
||||
var_ssh=yes
|
||||
var_tags=development
|
||||
```
|
||||
|
||||
#### IoT/Monitoring
|
||||
```bash
|
||||
# Low-resource, always-on containers
|
||||
var_cpu=2
|
||||
var_ram=512
|
||||
var_disk=10
|
||||
var_unprivileged=1
|
||||
var_nesting=0
|
||||
var_fuse=0
|
||||
var_tun=0
|
||||
var_tags=iot,monitoring
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "App Defaults not available" Message
|
||||
|
||||
**Problem**: You want to use App Defaults, but option says they're not available
|
||||
|
||||
**Solution**:
|
||||
1. You haven't created App Defaults yet for this app
|
||||
2. Run the app with "Advanced Settings"
|
||||
3. When finished, save as App Defaults
|
||||
4. Next time, App Defaults will be available
|
||||
|
||||
---
|
||||
|
||||
### "Settings not being applied"
|
||||
|
||||
**Problem**: You saved defaults, but they're not being used
|
||||
|
||||
**Checklist**:
|
||||
```bash
|
||||
# 1. Verify files exist
|
||||
ls -la /usr/local/community-scripts/default.vars
|
||||
ls -la /usr/local/community-scripts/defaults/<app>.vars
|
||||
|
||||
# 2. Check file permissions (should be readable)
|
||||
stat /usr/local/community-scripts/default.vars
|
||||
|
||||
# 3. Verify correct mode selected
|
||||
# (Make sure you selected "User Defaults" or "App Defaults")
|
||||
|
||||
# 4. Check for environment variable override
|
||||
env | grep var_
|
||||
# If you have var_* set in environment,
|
||||
# those override your saved defaults
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### "Cannot write to defaults location"
|
||||
|
||||
**Problem**: Permission denied when saving defaults
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Create the defaults directory if missing
|
||||
sudo mkdir -p /usr/local/community-scripts/defaults
|
||||
|
||||
# Fix permissions
|
||||
sudo chmod 755 /usr/local/community-scripts
|
||||
sudo chmod 755 /usr/local/community-scripts/defaults
|
||||
|
||||
# Make sure you're running as root
|
||||
sudo bash pihole-install.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### "Defaults directory doesn't exist"
|
||||
|
||||
**Problem**: Script can't find where to save defaults
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Create the directory
|
||||
sudo mkdir -p /usr/local/community-scripts/defaults
|
||||
|
||||
# Verify
|
||||
ls -la /usr/local/community-scripts/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Settings seem random or wrong
|
||||
|
||||
**Problem**: Container gets different settings than expected
|
||||
|
||||
**Possible Causes & Solutions**:
|
||||
|
||||
```bash
|
||||
# 1. Check if environment variables are set
|
||||
env | grep var_
|
||||
# If you see var_* entries, those override your defaults
|
||||
# Clear them: unset var_cpu var_ram (etc)
|
||||
|
||||
# 2. Verify correct defaults are in files
|
||||
cat /usr/local/community-scripts/default.vars
|
||||
cat /usr/local/community-scripts/defaults/pihole.vars
|
||||
|
||||
# 3. Check which mode you actually selected
|
||||
# (Script output shows which defaults were applied)
|
||||
|
||||
# 4. Check Proxmox logs for errors
|
||||
sudo journalctl -u pve-daemon -n 50
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### "Variable not recognized"
|
||||
|
||||
**Problem**: You set a variable that doesn't work
|
||||
|
||||
**Solution**:
|
||||
Only certain variables are allowed (security whitelist):
|
||||
|
||||
```
|
||||
Allowed variables (starting with var_):
|
||||
✓ var_cpu, var_ram, var_disk, var_unprivileged
|
||||
✓ var_brg, var_gateway, var_mtu, var_vlan, var_net
|
||||
✓ var_hostname, var_pw, var_timezone
|
||||
✓ var_ssh, var_ssh_authorized_key
|
||||
✓ var_fuse, var_tun, var_nesting, var_keyctl
|
||||
✓ var_container_storage, var_template_storage
|
||||
✓ var_tags, var_verbose
|
||||
✓ var_apt_cacher, var_apt_cacher_ip
|
||||
✓ var_protection, var_mount_fs
|
||||
|
||||
✗ Other variables are NOT supported
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### ✅ Do's
|
||||
|
||||
✓ Use **App Defaults** when you want app-specific settings
|
||||
✓ Use **User Defaults** for your global preferences
|
||||
✓ Edit defaults files directly with `nano` (safe)
|
||||
✓ Keep separate App Defaults for each app
|
||||
✓ Back up your defaults regularly
|
||||
✓ Use environment variables for temporary overrides
|
||||
|
||||
### ❌ Don'ts
|
||||
|
||||
✗ Don't use `source` on defaults files (security risk)
|
||||
✗ Don't put sensitive passwords in defaults (use SSH keys)
|
||||
✗ Don't modify defaults while installation is running
|
||||
✗ Don't delete defaults.d while containers are being created
|
||||
✗ Don't use special characters without escaping
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
### Defaults Locations
|
||||
|
||||
| Type | Location | Example |
|
||||
|------|----------|---------|
|
||||
| User Defaults | `/usr/local/community-scripts/default.vars` | Global settings |
|
||||
| App Defaults | `/usr/local/community-scripts/defaults/<app>.vars` | PiHole-specific |
|
||||
| Backup Dir | `/usr/local/community-scripts/defaults/` | All app defaults |
|
||||
|
||||
### File Format
|
||||
|
||||
```bash
|
||||
# Comments start with #
|
||||
var_name=value
|
||||
|
||||
# No spaces around =
|
||||
✓ var_cpu=4
|
||||
✗ var_cpu = 4
|
||||
|
||||
# String values don't need quotes
|
||||
✓ var_hostname=mycontainer
|
||||
✓ var_hostname='mycontainer'
|
||||
|
||||
# Values with spaces need quotes
|
||||
✓ var_tags="docker,production,testing"
|
||||
✗ var_tags=docker,production,testing
|
||||
```
|
||||
|
||||
### Command Reference
|
||||
|
||||
```bash
|
||||
# View defaults
|
||||
cat /usr/local/community-scripts/default.vars
|
||||
|
||||
# Edit defaults
|
||||
sudo nano /usr/local/community-scripts/default.vars
|
||||
|
||||
# List all app defaults
|
||||
ls /usr/local/community-scripts/defaults/
|
||||
|
||||
# Backup your defaults
|
||||
cp -r /usr/local/community-scripts/defaults/ ~/defaults-backup/
|
||||
|
||||
# Set temporary override
|
||||
export var_cpu=8
|
||||
bash pihole-install.sh
|
||||
|
||||
# Create custom defaults
|
||||
sudo tee /usr/local/community-scripts/defaults/custom.vars << 'EOF'
|
||||
var_cpu=4
|
||||
var_ram=2048
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Help
|
||||
|
||||
### Need More Information?
|
||||
|
||||
- 📖 [Main Documentation](../../docs/)
|
||||
- 🐛 [Report Issues](https://github.com/community-scripts/ProxmoxVE/issues)
|
||||
- 💬 [Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)
|
||||
|
||||
### Useful Commands
|
||||
|
||||
```bash
|
||||
# Check what variables are available
|
||||
grep "var_" /path/to/app-install.sh | head -20
|
||||
|
||||
# Verify defaults syntax
|
||||
cat /usr/local/community-scripts/default.vars
|
||||
|
||||
# Monitor installation with defaults
|
||||
bash pihole-install.sh 2>&1 | tee installation.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Document Information
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 1.0 |
|
||||
| Last Updated | November 28, 2025 |
|
||||
| Status | Current |
|
||||
| License | MIT |
|
||||
|
||||
---
|
||||
|
||||
**Happy configuring! 🚀**
|
||||
532
docs/DEV_MODE.md
Normal file
532
docs/DEV_MODE.md
Normal file
@@ -0,0 +1,532 @@
|
||||
# Dev Mode - Debugging & Development Guide
|
||||
|
||||
Development modes provide powerful debugging and testing capabilities for container creation and installation processes.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Single mode
|
||||
export dev_mode="motd"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
|
||||
|
||||
# Multiple modes (comma-separated)
|
||||
export dev_mode="motd,keep,trace"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
|
||||
|
||||
# Combine with verbose output
|
||||
export var_verbose="yes"
|
||||
export dev_mode="pause,logs"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
|
||||
```
|
||||
|
||||
## Available Modes
|
||||
|
||||
### 1. **motd** - Early SSH/MOTD Setup
|
||||
|
||||
Sets up SSH access and MOTD **before** the main application installation.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Quick access to container for manual debugging
|
||||
- Continue installation manually if something goes wrong
|
||||
- Verify container networking before main install
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
✔ Container created
|
||||
✔ Network configured
|
||||
[DEV] Setting up MOTD and SSH before installation
|
||||
✔ [DEV] MOTD/SSH ready - container accessible
|
||||
# Container is now accessible via SSH while installation proceeds
|
||||
```
|
||||
|
||||
**Combined with**: `keep`, `breakpoint`, `logs`
|
||||
|
||||
---
|
||||
|
||||
### 2. **keep** - Preserve Container on Failure
|
||||
|
||||
Never delete the container when installation fails. Skips cleanup prompt.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Repeated tests of the same installation
|
||||
- Debugging failed installations
|
||||
- Manual fix attempts
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
✖ Installation failed in container 107 (exit code: 1)
|
||||
✔ Container creation log: /tmp/create-lxc-107-abc12345.log
|
||||
✔ Installation log: /tmp/install-lxc-107-abc12345.log
|
||||
|
||||
🔧 [DEV] Keep mode active - container 107 preserved
|
||||
root@proxmox:~#
|
||||
```
|
||||
|
||||
**Container remains**: `pct enter 107` to access and debug
|
||||
|
||||
**Combined with**: `motd`, `trace`, `logs`
|
||||
|
||||
---
|
||||
|
||||
### 3. **trace** - Bash Command Tracing
|
||||
|
||||
Enables `set -x` for complete command-line tracing. Shows every command before execution.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Deep debugging of installation logic
|
||||
- Understanding script flow
|
||||
- Identifying where errors occur exactly
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
+(/opt/wallabag/bin/console): /opt/wallabag/bin/console cache:warmup
|
||||
+(/opt/wallabag/bin/console): env APP_ENV=prod /opt/wallabag/bin/console cache:warmup
|
||||
+(/opt/wallabag/bin/console): [[ -d /opt/wallabag/app/cache ]]
|
||||
+(/opt/wallabag/bin/console): rm -rf /opt/wallabag/app/cache/*
|
||||
```
|
||||
|
||||
**⚠️ Warning**: Exposes passwords and secrets in log output! Only use in isolated environments.
|
||||
|
||||
**Log Output**: All trace output saved to logs (see `logs` mode)
|
||||
|
||||
**Combined with**: `keep`, `pause`, `logs`
|
||||
|
||||
---
|
||||
|
||||
### 4. **pause** - Step-by-Step Execution
|
||||
|
||||
Pauses after each major step (`msg_info`). Requires manual Enter press to continue.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Inspect container state between steps
|
||||
- Understand what each step does
|
||||
- Identify which step causes problems
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
⏳ Setting up Container OS
|
||||
[PAUSE] Press Enter to continue...
|
||||
⏳ Updating Container OS
|
||||
[PAUSE] Press Enter to continue...
|
||||
⏳ Installing Dependencies
|
||||
[PAUSE] Press Enter to continue...
|
||||
```
|
||||
|
||||
**Between pauses**: You can open another terminal and inspect the container
|
||||
|
||||
```bash
|
||||
# In another terminal while paused
|
||||
pct enter 107
|
||||
root@container:~# df -h # Check disk usage
|
||||
root@container:~# ps aux # Check running processes
|
||||
```
|
||||
|
||||
**Combined with**: `motd`, `keep`, `logs`
|
||||
|
||||
---
|
||||
|
||||
### 5. **breakpoint** - Interactive Shell on Error
|
||||
|
||||
Opens interactive shell inside the container when an error occurs instead of cleanup prompt.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Live debugging in the actual container
|
||||
- Manual command testing
|
||||
- Inspect container state at point of failure
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
✖ Installation failed in container 107 (exit code: 1)
|
||||
✔ Container creation log: /tmp/create-lxc-107-abc12345.log
|
||||
✔ Installation log: /tmp/install-lxc-107-abc12345.log
|
||||
|
||||
🐛 [DEV] Breakpoint mode - opening shell in container 107
|
||||
Type 'exit' to return to host
|
||||
root@wallabag:~#
|
||||
|
||||
# Now you can debug:
|
||||
root@wallabag:~# tail -f /root/.install-abc12345.log
|
||||
root@wallabag:~# mysql -u root -p$PASSWORD wallabag
|
||||
root@wallabag:~# apt-get install -y strace
|
||||
root@wallabag:~# exit
|
||||
|
||||
Container 107 still running. Remove now? (y/N): n
|
||||
🔧 Container 107 kept for debugging
|
||||
```
|
||||
|
||||
**Combined with**: `keep`, `logs`, `trace`
|
||||
|
||||
---
|
||||
|
||||
### 6. **logs** - Persistent Logging
|
||||
|
||||
Saves all logs to `/var/log/community-scripts/` with timestamps. Logs persist even on successful installation.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Post-mortem analysis
|
||||
- Performance analysis
|
||||
- Automated testing with log collection
|
||||
- CI/CD integration
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
Logs location: /var/log/community-scripts/
|
||||
|
||||
create-lxc-abc12345-20251117_143022.log (host-side creation)
|
||||
install-abc12345-20251117_143022.log (container-side installation)
|
||||
```
|
||||
|
||||
**Access logs**:
|
||||
|
||||
```bash
|
||||
# View creation log
|
||||
tail -f /var/log/community-scripts/create-lxc-*.log
|
||||
|
||||
# Search for errors
|
||||
grep ERROR /var/log/community-scripts/*.log
|
||||
|
||||
# Analyze performance
|
||||
grep "msg_info\|msg_ok" /var/log/community-scripts/create-*.log
|
||||
```
|
||||
|
||||
**With trace mode**: Creates detailed trace of all commands
|
||||
|
||||
```bash
|
||||
grep "^+" /var/log/community-scripts/install-*.log
|
||||
```
|
||||
|
||||
**Combined with**: All other modes (recommended for CI/CD)
|
||||
|
||||
---
|
||||
|
||||
### 7. **dryrun** - Simulation Mode
|
||||
|
||||
Shows all commands that would be executed without actually running them.
|
||||
|
||||
**Use Case**:
|
||||
|
||||
- Test script logic without making changes
|
||||
- Verify command syntax
|
||||
- Understand what will happen
|
||||
- Pre-flight checks
|
||||
|
||||
**Behavior**:
|
||||
|
||||
```
|
||||
[DRYRUN] apt-get update
|
||||
[DRYRUN] apt-get install -y curl
|
||||
[DRYRUN] mkdir -p /opt/wallabag
|
||||
[DRYRUN] cd /opt/wallabag
|
||||
[DRYRUN] git clone https://github.com/wallabag/wallabag.git .
|
||||
```
|
||||
|
||||
**No actual changes made**: Container/system remains unchanged
|
||||
|
||||
**Combined with**: `trace` (shows dryrun trace), `logs` (shows what would run)
|
||||
|
||||
---
|
||||
|
||||
## Mode Combinations
|
||||
|
||||
### Development Workflow
|
||||
|
||||
```bash
|
||||
# First test: See what would happen
|
||||
export dev_mode="dryrun,logs"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Then test with tracing and pauses
|
||||
export dev_mode="pause,trace,logs"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Finally full debug with early SSH access
|
||||
export dev_mode="motd,keep,breakpoint,logs"
|
||||
bash -c "$(curl ...)"
|
||||
```
|
||||
|
||||
### CI/CD Integration
|
||||
|
||||
```bash
|
||||
# Automated testing with full logging
|
||||
export dev_mode="logs"
|
||||
export var_verbose="yes"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Capture logs for analysis
|
||||
tar czf installation-logs-$(date +%s).tar.gz /var/log/community-scripts/
|
||||
```
|
||||
|
||||
### Production-like Testing
|
||||
|
||||
```bash
|
||||
# Keep containers for manual verification
|
||||
export dev_mode="keep,logs"
|
||||
for i in {1..5}; do
|
||||
bash -c "$(curl ...)"
|
||||
done
|
||||
|
||||
# Inspect all created containers
|
||||
pct list
|
||||
pct enter 100
|
||||
```
|
||||
|
||||
### Live Debugging
|
||||
|
||||
```bash
|
||||
# SSH in early, step through installation, debug on error
|
||||
export dev_mode="motd,pause,breakpoint,keep"
|
||||
bash -c "$(curl ...)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Environment Variables Reference
|
||||
|
||||
### Dev Mode Variables
|
||||
|
||||
- `dev_mode` (string): Comma-separated list of modes
|
||||
- Format: `"motd,keep,trace"`
|
||||
- Default: Empty (no dev modes)
|
||||
|
||||
### Output Control
|
||||
|
||||
- `var_verbose="yes"`: Show all command output (disables silent mode)
|
||||
- Pairs well with: `trace`, `pause`, `logs`
|
||||
|
||||
### Examples with vars
|
||||
|
||||
```bash
|
||||
# Maximum verbosity and debugging
|
||||
export var_verbose="yes"
|
||||
export dev_mode="motd,trace,pause,logs"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Silent debug (logs only)
|
||||
export dev_mode="keep,logs"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Interactive debugging
|
||||
export var_verbose="yes"
|
||||
export dev_mode="motd,breakpoint"
|
||||
bash -c "$(curl ...)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting with Dev Mode
|
||||
|
||||
### "Installation failed at step X"
|
||||
|
||||
```bash
|
||||
export dev_mode="pause,logs"
|
||||
# Step through until the failure point
|
||||
# Check container state between pauses
|
||||
pct enter 107
|
||||
```
|
||||
|
||||
### "Password/credentials not working"
|
||||
|
||||
```bash
|
||||
export dev_mode="motd,keep,trace"
|
||||
# With trace mode, see exact password handling (be careful with logs!)
|
||||
# Use motd to SSH in and test manually
|
||||
ssh root@container-ip
|
||||
```
|
||||
|
||||
### "Permission denied errors"
|
||||
|
||||
```bash
|
||||
export dev_mode="breakpoint,keep"
|
||||
# Get shell at failure point
|
||||
# Check file permissions, user context, SELinux status
|
||||
ls -la /path/to/file
|
||||
whoami
|
||||
```
|
||||
|
||||
### "Networking issues"
|
||||
|
||||
```bash
|
||||
export dev_mode="motd"
|
||||
# SSH in with motd mode before main install
|
||||
ssh root@container-ip
|
||||
ping 8.8.8.8
|
||||
nslookup example.com
|
||||
```
|
||||
|
||||
### "Need to manually complete installation"
|
||||
|
||||
```bash
|
||||
export dev_mode="motd,keep"
|
||||
# Container accessible via SSH while installation runs
|
||||
# After failure, SSH in and manually continue
|
||||
ssh root@container-ip
|
||||
# ... manual commands ...
|
||||
exit
|
||||
# Then use 'keep' mode to preserve container for inspection
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Log Files Locations
|
||||
|
||||
### Default (without `logs` mode)
|
||||
|
||||
- Host creation: `/tmp/create-lxc-<SESSION_ID>.log`
|
||||
- Container install: Copied to `/tmp/install-lxc-<CTID>-<SESSION_ID>.log` on failure
|
||||
|
||||
### With `logs` mode
|
||||
|
||||
- Host creation: `/var/log/community-scripts/create-lxc-<SESSION_ID>-<TIMESTAMP>.log`
|
||||
- Container install: `/var/log/community-scripts/install-<SESSION_ID>-<TIMESTAMP>.log`
|
||||
|
||||
### View logs
|
||||
|
||||
```bash
|
||||
# Tail in real-time
|
||||
tail -f /var/log/community-scripts/*.log
|
||||
|
||||
# Search for errors
|
||||
grep -r "exit code [1-9]" /var/log/community-scripts/
|
||||
|
||||
# Filter by session
|
||||
grep "ed563b19" /var/log/community-scripts/*.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### ✅ DO
|
||||
|
||||
- Use `logs` mode for CI/CD and automated testing
|
||||
- Use `motd` for early SSH access during long installations
|
||||
- Use `pause` when learning the installation flow
|
||||
- Use `trace` when debugging logic issues (watch for secrets!)
|
||||
- Combine modes for comprehensive debugging
|
||||
- Archive logs after successful tests
|
||||
|
||||
### ❌ DON'T
|
||||
|
||||
- Use `trace` in production or with untrusted networks (exposes secrets)
|
||||
- Leave `keep` mode enabled for unattended scripts (containers accumulate)
|
||||
- Use `dryrun` and expect actual changes
|
||||
- Commit `dev_mode` exports to production deployment scripts
|
||||
- Use `breakpoint` in non-interactive environments (will hang)
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Debug a Failed Installation
|
||||
|
||||
```bash
|
||||
# Initial test to see the failure
|
||||
export dev_mode="keep,logs"
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
|
||||
|
||||
# Container 107 kept, check logs
|
||||
tail /var/log/community-scripts/install-*.log
|
||||
|
||||
# SSH in to debug
|
||||
pct enter 107
|
||||
root@wallabag:~# cat /root/.install-*.log | tail -100
|
||||
root@wallabag:~# apt-get update # Retry the failing command
|
||||
root@wallabag:~# exit
|
||||
|
||||
# Re-run with manual step-through
|
||||
export dev_mode="motd,pause,keep"
|
||||
bash -c "$(curl ...)"
|
||||
```
|
||||
|
||||
### Example 2: Verify Installation Steps
|
||||
|
||||
```bash
|
||||
export dev_mode="pause,logs"
|
||||
export var_verbose="yes"
|
||||
bash -c "$(curl ...)"
|
||||
|
||||
# Press Enter through each step
|
||||
# Monitor container in another terminal
|
||||
# pct enter 107
|
||||
# Review logs in real-time
|
||||
```
|
||||
|
||||
### Example 3: CI/CD Pipeline Integration
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
export dev_mode="logs"
|
||||
export var_verbose="no"
|
||||
|
||||
for app in wallabag nextcloud wordpress; do
|
||||
echo "Testing $app installation..."
|
||||
APP="$app" bash -c "$(curl ...)" || {
|
||||
echo "FAILED: $app"
|
||||
tar czf logs-$app.tar.gz /var/log/community-scripts/
|
||||
exit 1
|
||||
}
|
||||
echo "SUCCESS: $app"
|
||||
done
|
||||
|
||||
echo "All installations successful"
|
||||
tar czf all-logs.tar.gz /var/log/community-scripts/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Custom Log Analysis
|
||||
|
||||
```bash
|
||||
# Extract all errors
|
||||
grep "ERROR\|exit code [1-9]" /var/log/community-scripts/*.log
|
||||
|
||||
# Performance timeline
|
||||
grep "^$(date +%Y-%m-%d)" /var/log/community-scripts/*.log | grep "msg_"
|
||||
|
||||
# Memory usage during install
|
||||
grep "free\|available" /var/log/community-scripts/*.log
|
||||
```
|
||||
|
||||
### Integration with External Tools
|
||||
|
||||
```bash
|
||||
# Send logs to Elasticsearch
|
||||
curl -X POST "localhost:9200/installation-logs/_doc" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d @/var/log/community-scripts/install-*.log
|
||||
|
||||
# Archive for compliance
|
||||
tar czf installation-records-$(date +%Y%m).tar.gz \
|
||||
/var/log/community-scripts/
|
||||
gpg --encrypt installation-records-*.tar.gz
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Support & Issues
|
||||
|
||||
When reporting installation issues, always include:
|
||||
|
||||
```bash
|
||||
# Collect all relevant information
|
||||
export dev_mode="logs"
|
||||
# Run the failing installation
|
||||
# Then provide:
|
||||
tar czf debug-logs.tar.gz /var/log/community-scripts/
|
||||
```
|
||||
|
||||
Include the `debug-logs.tar.gz` when reporting issues for better diagnostics.
|
||||
298
docs/EXIT_CODES.md
Normal file
298
docs/EXIT_CODES.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# Exit Code Reference
|
||||
|
||||
Comprehensive documentation of all exit codes used in ProxmoxVE scripts.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Generic/Shell Errors (1-255)](#genericshell-errors)
|
||||
- [Package Manager Errors (100-101, 255)](#package-manager-errors)
|
||||
- [Node.js/npm Errors (243-254)](#nodejsnpm-errors)
|
||||
- [Python/pip Errors (210-212)](#pythonpip-errors)
|
||||
- [Database Errors (231-254)](#database-errors)
|
||||
- [Proxmox Custom Codes (200-231)](#proxmox-custom-codes)
|
||||
|
||||
---
|
||||
|
||||
## Generic/Shell Errors
|
||||
|
||||
Standard Unix/Linux exit codes used across all scripts.
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | --------------------------------------- | ----------------------------------------- | ---------------------------------------------- |
|
||||
| **1** | General error / Operation not permitted | Permission denied, general failure | Check user permissions, run as root if needed |
|
||||
| **2** | Misuse of shell builtins | Syntax error in script | Review script syntax, check bash version |
|
||||
| **126** | Command cannot execute | Permission problem, not executable | `chmod +x script.sh` or check file permissions |
|
||||
| **127** | Command not found | Missing binary, wrong PATH | Install required package, check PATH variable |
|
||||
| **128** | Invalid argument to exit | Invalid exit code passed | Use exit codes 0-255 only |
|
||||
| **130** | Terminated by Ctrl+C (SIGINT) | User interrupted script | Expected behavior, no action needed |
|
||||
| **137** | Killed (SIGKILL) | Out of memory, forced termination | Check memory usage, increase RAM allocation |
|
||||
| **139** | Segmentation fault | Memory access violation, corrupted binary | Reinstall package, check system stability |
|
||||
| **143** | Terminated (SIGTERM) | Graceful shutdown signal | Expected during container stops |
|
||||
|
||||
---
|
||||
|
||||
## Package Manager Errors
|
||||
|
||||
APT, DPKG, and package installation errors.
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | -------------------------- | --------------------------------------- | ------------------------------------------------- |
|
||||
| **100** | APT: Package manager error | Broken packages, dependency conflicts | `apt --fix-broken install`, `dpkg --configure -a` |
|
||||
| **101** | APT: Configuration error | Malformed sources.list, bad repo config | Check `/etc/apt/sources.list`, run `apt update` |
|
||||
| **255** | DPKG: Fatal internal error | Corrupted package database | `dpkg --configure -a`, restore from backup |
|
||||
|
||||
---
|
||||
|
||||
## Node.js/npm Errors
|
||||
|
||||
Node.js runtime and package manager errors.
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------- |
|
||||
| **243** | Node.js: Out of memory | JavaScript heap exhausted | Increase `--max-old-space-size`, optimize code |
|
||||
| **245** | Node.js: Invalid command-line option | Wrong Node.js flags | Check Node.js version, verify CLI options |
|
||||
| **246** | Node.js: Internal JavaScript Parse Error | Syntax error in JS code | Review JavaScript syntax, check dependencies |
|
||||
| **247** | Node.js: Fatal internal error | Node.js runtime crash | Update Node.js, check for known bugs |
|
||||
| **248** | Node.js: Invalid C++ addon / N-API failure | Native module incompatibility | Rebuild native modules, update packages |
|
||||
| **249** | Node.js: Inspector error | Debug/inspect protocol failure | Disable inspector, check port conflicts |
|
||||
| **254** | npm/pnpm/yarn: Unknown fatal error | Package manager crash | Clear cache, reinstall package manager |
|
||||
|
||||
---
|
||||
|
||||
## Python/pip Errors
|
||||
|
||||
Python runtime and package installation errors.
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ------------------------------------ | --------------------------------------- | -------------------------------------------------------- |
|
||||
| **210** | Python: Virtualenv missing or broken | venv not created, corrupted environment | `python3 -m venv venv`, recreate virtualenv |
|
||||
| **211** | Python: Dependency resolution failed | Conflicting package versions | Use `pip install --upgrade`, check requirements.txt |
|
||||
| **212** | Python: Installation aborted | EXTERNALLY-MANAGED, permission denied | Use `--break-system-packages` or venv, check permissions |
|
||||
|
||||
---
|
||||
|
||||
## Database Errors
|
||||
|
||||
### PostgreSQL (231-234)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ----------------------- | ---------------------------------- | ----------------------------------------------------- |
|
||||
| **231** | Connection failed | Server not running, wrong socket | `systemctl start postgresql`, check connection string |
|
||||
| **232** | Authentication failed | Wrong credentials | Verify username/password, check `pg_hba.conf` |
|
||||
| **233** | Database does not exist | Database not created | `CREATE DATABASE`, restore from backup |
|
||||
| **234** | Fatal error in query | Syntax error, constraint violation | Review SQL syntax, check constraints |
|
||||
|
||||
### MySQL/MariaDB (241-244)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ----------------------- | ---------------------------------- | ---------------------------------------------------- |
|
||||
| **241** | Connection failed | Server not running, wrong socket | `systemctl start mysql`, check connection parameters |
|
||||
| **242** | Authentication failed | Wrong credentials | Verify username/password, grant privileges |
|
||||
| **243** | Database does not exist | Database not created | `CREATE DATABASE`, restore from backup |
|
||||
| **244** | Fatal error in query | Syntax error, constraint violation | Review SQL syntax, check constraints |
|
||||
|
||||
### MongoDB (251-254)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | --------------------- | -------------------- | ------------------------------------------ |
|
||||
| **251** | Connection failed | Server not running | `systemctl start mongod`, check port 27017 |
|
||||
| **252** | Authentication failed | Wrong credentials | Verify username/password, create user |
|
||||
| **253** | Database not found | Database not created | Database auto-created on first write |
|
||||
| **254** | Fatal query error | Invalid query syntax | Review MongoDB query syntax |
|
||||
|
||||
---
|
||||
|
||||
## Proxmox Custom Codes
|
||||
|
||||
Custom exit codes specific to ProxmoxVE scripts.
|
||||
|
||||
### Container Creation Errors (200-209)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ---------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
|
||||
| **200** | Failed to create lock file | Permission denied, disk full | Check `/tmp` permissions, free disk space |
|
||||
| **203** | Missing CTID variable | Script configuration error | Set CTID in script or via prompt |
|
||||
| **204** | Missing PCT_OSTYPE variable | Template selection failed | Verify template availability |
|
||||
| **205** | Invalid CTID (<100) | CTID below minimum value | Use CTID ≥ 100 (1-99 reserved for Proxmox) |
|
||||
| **206** | CTID already in use | Container/VM with same ID exists | Check `pct list` and `/etc/pve/lxc/`, use different ID |
|
||||
| **207** | Password contains unescaped special characters | Special chars like `-`, `/`, `\`, `*` at start/end | Avoid leading special chars, use alphanumeric passwords |
|
||||
| **208** | Invalid configuration | DNS format (`.home` vs `home`), MAC format (`-` vs `:`) | Remove leading dots from DNS, use `:` in MAC addresses |
|
||||
| **209** | Container creation failed | Multiple possible causes | Check logs in `/tmp/pct_create_*.log`, verify template |
|
||||
|
||||
### Cluster & Storage Errors (210, 214, 217)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | --------------------------------- | ---------------------------------- | ----------------------------------------------------------- |
|
||||
| **210** | Cluster not quorate | Cluster nodes down, network issues | Check cluster status: `pvecm status`, fix node connectivity |
|
||||
| **211** | Timeout waiting for template lock | Concurrent download in progress | Wait for other download to complete (60s timeout) |
|
||||
| **214** | Not enough storage space | Disk full, quota exceeded | Free disk space, increase storage allocation |
|
||||
| **217** | Storage does not support rootdir | Wrong storage type selected | Use storage supporting containers (dir, zfspool, lvm-thin) |
|
||||
|
||||
### Container Verification Errors (215-216)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | -------------------------------- | -------------------------------- | --------------------------------------------------------- |
|
||||
| **215** | Container created but not listed | Ghost state, incomplete creation | Check `/etc/pve/lxc/CTID.conf`, remove manually if needed |
|
||||
| **216** | RootFS entry missing in config | Incomplete container creation | Delete container, retry creation |
|
||||
|
||||
### Template Errors (218, 220-223, 225)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ----------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------- |
|
||||
| **218** | Template file corrupted or incomplete | Download interrupted, file <1MB, invalid archive | Delete template, run `pveam update && pveam download` |
|
||||
| **220** | Unable to resolve template path | Template storage not accessible | Check storage availability, verify permissions |
|
||||
| **221** | Template file exists but not readable | Permission denied | `chmod 644 template.tar.zst`, check storage permissions |
|
||||
| **222** | Template download failed after 3 attempts | Network issues, storage problems | Check internet connectivity, verify storage space |
|
||||
| **223** | Template not available after download | Storage sync issue, I/O delay | Wait a few seconds, verify storage is mounted |
|
||||
| **225** | No template available for OS/Version | Unsupported OS version, catalog outdated | Run `pveam update`, check `pveam available -section system` |
|
||||
|
||||
### LXC Stack Errors (231)
|
||||
|
||||
| Code | Description | Common Causes | Solutions |
|
||||
| ------- | ------------------------------ | ------------------------------------------- | -------------------------------------------- |
|
||||
| **231** | LXC stack upgrade/retry failed | Outdated `pve-container`, Debian 13.1 issue | See [Debian 13.1 Fix Guide](#debian-131-fix) |
|
||||
|
||||
---
|
||||
|
||||
## Special Case: Debian 13.1 "unsupported version" Error
|
||||
|
||||
### Problem
|
||||
|
||||
```
|
||||
TASK ERROR: unable to create CT 129 - unsupported debian version '13.1'
|
||||
```
|
||||
|
||||
### Root Cause
|
||||
|
||||
Outdated `pve-container` package doesn't recognize Debian 13 (Trixie).
|
||||
|
||||
### Solutions
|
||||
|
||||
#### Option 1: Full System Upgrade (Recommended)
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt full-upgrade -y
|
||||
reboot
|
||||
```
|
||||
|
||||
Verify fix:
|
||||
|
||||
```bash
|
||||
dpkg -l pve-container
|
||||
# PVE 8: Should show 5.3.3+
|
||||
# PVE 9: Should show 6.0.13+
|
||||
```
|
||||
|
||||
#### Option 2: Update Only pve-container
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt install --only-upgrade pve-container -y
|
||||
```
|
||||
|
||||
**Warning:** If Proxmox fails to boot after this, your system was inconsistent. Perform Option 1 instead.
|
||||
|
||||
#### Option 3: Verify Repository Configuration
|
||||
|
||||
Many users disable Enterprise repos but forget to add no-subscription repos.
|
||||
|
||||
**For PVE 9 (Trixie):**
|
||||
|
||||
```bash
|
||||
cat /etc/apt/sources.list.d/pve-no-subscription.list
|
||||
```
|
||||
|
||||
Should contain:
|
||||
|
||||
```
|
||||
deb http://download.proxmox.com/debian/pve trixie pve-no-subscription
|
||||
deb http://download.proxmox.com/debian/ceph-squid trixie no-subscription
|
||||
```
|
||||
|
||||
**For PVE 8 (Bookworm):**
|
||||
|
||||
```
|
||||
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
|
||||
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription
|
||||
```
|
||||
|
||||
Then:
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt full-upgrade -y
|
||||
```
|
||||
|
||||
### Reference
|
||||
|
||||
Official discussion: [GitHub #8126](https://github.com/community-scripts/ProxmoxVE/discussions/8126)
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting Tips
|
||||
|
||||
### Finding Error Details
|
||||
|
||||
1. **Check logs:**
|
||||
|
||||
```bash
|
||||
tail -n 50 /tmp/pct_create_*.log
|
||||
```
|
||||
|
||||
2. **Enable verbose mode:**
|
||||
|
||||
```bash
|
||||
bash -x script.sh # Shows every command executed
|
||||
```
|
||||
|
||||
3. **Check container status:**
|
||||
|
||||
```bash
|
||||
pct list
|
||||
pct status CTID
|
||||
```
|
||||
|
||||
4. **Verify storage:**
|
||||
```bash
|
||||
pvesm status
|
||||
df -h
|
||||
```
|
||||
|
||||
### Common Patterns
|
||||
|
||||
- **Exit 0 with error message:** Configuration validation failed (check DNS, MAC, password format)
|
||||
- **Exit 206 but container not visible:** Ghost container state - check `/etc/pve/lxc/` manually
|
||||
- **Exit 209 generic error:** Check `/tmp/pct_create_*.log` for specific `pct create` failure reason
|
||||
- **Exit 218 or 222:** Template issues - delete and re-download template
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference Chart
|
||||
|
||||
| Exit Code Range | Category | Typical Issue |
|
||||
| --------------- | ------------------ | ------------------------------------------- |
|
||||
| 1-2, 126-143 | Shell/System | Permissions, signals, missing commands |
|
||||
| 100-101, 255 | Package Manager | APT/DPKG errors, broken packages |
|
||||
| 200-209 | Container Creation | CTID, password, configuration |
|
||||
| 210-217 | Storage/Cluster | Disk space, quorum, storage type |
|
||||
| 218-225 | Templates | Download, corruption, availability |
|
||||
| 231-254 | Databases/Runtime | PostgreSQL, MySQL, MongoDB, Node.js, Python |
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
Found an undocumented exit code or have a solution to share? Please:
|
||||
|
||||
1. Open an issue on [GitHub](https://github.com/community-scripts/ProxmoxVE/issues)
|
||||
2. Include:
|
||||
- Exit code number
|
||||
- Error message
|
||||
- Steps to reproduce
|
||||
- Solution that worked for you
|
||||
|
||||
---
|
||||
|
||||
_Last updated: November 2025_
|
||||
_ProxmoxVE Version: 2.x_
|
||||
290
docs/README.md
Normal file
290
docs/README.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 📚 ProxmoxVE Documentation
|
||||
|
||||
Complete guide to all ProxmoxVE documentation - quickly find what you need.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **Quick Navigation by Goal**
|
||||
|
||||
### 👤 **I want to...**
|
||||
|
||||
**Contribute a new application**
|
||||
→ Start with: [contribution/README.md](contribution/README.md)
|
||||
→ Then: [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) + [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
|
||||
|
||||
**Understand the architecture**
|
||||
→ Read: [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
|
||||
→ Then: [misc/README.md](misc/README.md)
|
||||
|
||||
**Debug a failed installation**
|
||||
→ Check: [EXIT_CODES.md](EXIT_CODES.md)
|
||||
→ Then: [DEV_MODE.md](DEV_MODE.md)
|
||||
→ See also: [misc/error_handler.func/](misc/error_handler.func/)
|
||||
|
||||
**Configure system defaults**
|
||||
→ Read: [DEFAULTS_SYSTEM_GUIDE.md](DEFAULTS_SYSTEM_GUIDE.md)
|
||||
|
||||
**Develop a function library**
|
||||
→ Study: [misc/](misc/) documentation
|
||||
|
||||
---
|
||||
|
||||
## 👤 **Quick Start by Role**
|
||||
|
||||
### **I'm a...**
|
||||
|
||||
**New Contributor**
|
||||
→ Start: [contribution/README.md](contribution/README.md)
|
||||
→ Then: Choose your path below
|
||||
|
||||
**Container Creator**
|
||||
→ Read: [ct/README.md](ct/README.md)
|
||||
→ Deep Dive: [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
|
||||
→ Reference: [misc/build.func/](misc/build.func/)
|
||||
|
||||
**Installation Script Developer**
|
||||
→ Read: [install/README.md](install/README.md)
|
||||
→ Deep Dive: [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
|
||||
→ Reference: [misc/tools.func/](misc/tools.func/)
|
||||
|
||||
**VM Provisioner**
|
||||
→ Read: [vm/README.md](vm/README.md)
|
||||
→ Reference: [misc/cloud-init.func/](misc/cloud-init.func/)
|
||||
|
||||
**Tools Developer**
|
||||
→ Read: [tools/README.md](tools/README.md)
|
||||
→ Reference: [misc/build.func/](misc/build.func/)
|
||||
|
||||
**API Integrator**
|
||||
→ Read: [api/README.md](api/README.md)
|
||||
→ Reference: [misc/api.func/](misc/api.func/)
|
||||
|
||||
**System Operator**
|
||||
→ Start: [EXIT_CODES.md](EXIT_CODES.md)
|
||||
→ Then: [DEFAULTS_SYSTEM_GUIDE.md](DEFAULTS_SYSTEM_GUIDE.md)
|
||||
→ Debug: [DEV_MODE.md](DEV_MODE.md)
|
||||
|
||||
**Architect**
|
||||
→ Read: [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
|
||||
→ Deep Dive: [misc/README.md](misc/README.md)
|
||||
|
||||
---
|
||||
|
||||
## 📂 **Documentation Structure**
|
||||
|
||||
### Project-Mirrored Directories
|
||||
|
||||
Each major project directory has documentation:
|
||||
|
||||
```
|
||||
ProxmoxVE/
|
||||
├─ ct/ ↔ docs/ct/ (README.md + DETAILED_GUIDE.md)
|
||||
├─ install/ ↔ docs/install/ (README.md + DETAILED_GUIDE.md)
|
||||
├─ vm/ ↔ docs/vm/ (README.md)
|
||||
├─ tools/ ↔ docs/tools/ (README.md)
|
||||
├─ api/ ↔ docs/api/ (README.md)
|
||||
└─ misc/ ↔ docs/misc/ (9 function libraries)
|
||||
```
|
||||
|
||||
### Core Documentation
|
||||
|
||||
| Document | Purpose | Audience |
|
||||
|----------|---------|----------|
|
||||
| [contribution/README.md](contribution/README.md) | How to contribute | Contributors |
|
||||
| [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) | Create ct scripts | Container developers |
|
||||
| [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md) | Create install scripts | Installation developers |
|
||||
| [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md) | Architecture deep-dive | Architects, advanced users |
|
||||
| [DEFAULTS_SYSTEM_GUIDE.md](DEFAULTS_SYSTEM_GUIDE.md) | Configuration system | Operators, power users |
|
||||
| [EXIT_CODES.md](EXIT_CODES.md) | Exit code reference | Troubleshooters |
|
||||
| [DEV_MODE.md](DEV_MODE.md) | Debugging tools | Developers |
|
||||
|
||||
---
|
||||
|
||||
## 📂 **Directory Guide**
|
||||
|
||||
### [ct/](ct/) - Container Scripts
|
||||
Documentation for `/ct` - Container creation scripts that run on the Proxmox host.
|
||||
|
||||
**Includes**:
|
||||
- Overview of container creation process
|
||||
- Deep dive: [DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) - Complete reference with examples
|
||||
- Reference to [misc/build.func/](misc/build.func/)
|
||||
- Quick start for creating new containers
|
||||
|
||||
### [install/](install/) - Installation Scripts
|
||||
Documentation for `/install` - Scripts that run inside containers to install applications.
|
||||
|
||||
**Includes**:
|
||||
- Overview of 10-phase installation pattern
|
||||
- Deep dive: [DETAILED_GUIDE.md](install/DETAILED_GUIDE.md) - Complete reference with examples
|
||||
- Reference to [misc/tools.func/](misc/tools.func/)
|
||||
- Alpine vs Debian differences
|
||||
|
||||
### [vm/](vm/) - Virtual Machine Scripts
|
||||
Documentation for `/vm` - VM creation scripts using cloud-init provisioning.
|
||||
|
||||
**Includes**:
|
||||
- Overview of VM provisioning
|
||||
- Link to [misc/cloud-init.func/](misc/cloud-init.func/)
|
||||
- VM vs Container comparison
|
||||
- Cloud-init examples
|
||||
|
||||
### [tools/](tools/) - Tools & Utilities
|
||||
Documentation for `/tools` - Management tools and add-ons.
|
||||
|
||||
**Includes**:
|
||||
- Overview of tools structure
|
||||
- Integration points
|
||||
- Contributing new tools
|
||||
- Common operations
|
||||
|
||||
### [api/](api/) - API Integration
|
||||
Documentation for `/api` - Telemetry and API backend.
|
||||
|
||||
**Includes**:
|
||||
- API overview
|
||||
- Integration methods
|
||||
- API endpoints
|
||||
- Privacy information
|
||||
|
||||
### [misc/](misc/) - Function Libraries
|
||||
Documentation for `/misc` - 9 core function libraries with complete references.
|
||||
|
||||
**Contains**:
|
||||
- **build.func/** - Container orchestration (7 files)
|
||||
- **core.func/** - Utilities and messaging (5 files)
|
||||
- **error_handler.func/** - Error handling (5 files)
|
||||
- **api.func/** - API integration (5 files)
|
||||
- **install.func/** - Container setup (5 files)
|
||||
- **tools.func/** - Package installation (6 files)
|
||||
- **alpine-install.func/** - Alpine setup (5 files)
|
||||
- **alpine-tools.func/** - Alpine tools (5 files)
|
||||
- **cloud-init.func/** - VM provisioning (5 files)
|
||||
|
||||
---
|
||||
|
||||
## 🎓 **Learning Paths**
|
||||
|
||||
### Path 1: First-Time Contributor (2-3 hours)
|
||||
|
||||
1. [contribution/README.md](contribution/README.md) - Quick Start
|
||||
2. Pick your area:
|
||||
- Containers → [ct/README.md](ct/README.md) + [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
|
||||
- Installation → [install/README.md](install/README.md) + [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
|
||||
- VMs → [vm/README.md](vm/README.md)
|
||||
3. Study existing similar script
|
||||
4. Create your contribution
|
||||
5. Submit PR
|
||||
|
||||
### Path 2: Intermediate Developer (4-6 hours)
|
||||
|
||||
1. [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
|
||||
2. Dive into function libraries:
|
||||
- [misc/build.func/README.md](misc/build.func/README.md)
|
||||
- [misc/tools.func/README.md](misc/tools.func/README.md)
|
||||
- [misc/install.func/README.md](misc/install.func/README.md)
|
||||
3. Study advanced examples
|
||||
4. Create complex applications
|
||||
|
||||
### Path 3: Advanced Architect (8+ hours)
|
||||
|
||||
1. All of Intermediate Path
|
||||
2. Study all 9 function libraries in depth
|
||||
3. [DEFAULTS_SYSTEM_GUIDE.md](DEFAULTS_SYSTEM_GUIDE.md) - Configuration system
|
||||
4. [DEV_MODE.md](DEV_MODE.md) - Debugging and development
|
||||
5. Design new features or function libraries
|
||||
|
||||
### Path 4: Troubleshooter (30 minutes - 1 hour)
|
||||
|
||||
1. [EXIT_CODES.md](EXIT_CODES.md) - Find error code
|
||||
2. [DEV_MODE.md](DEV_MODE.md) - Run with debugging
|
||||
3. Check relevant function library docs
|
||||
4. Review logs and fix
|
||||
|
||||
---
|
||||
|
||||
## 📊 **By the Numbers**
|
||||
|
||||
| Metric | Count |
|
||||
|--------|:---:|
|
||||
| **Documentation Files** | 63 |
|
||||
| **Total Lines** | 15,000+ |
|
||||
| **Function Libraries** | 9 |
|
||||
| **Functions Documented** | 150+ |
|
||||
| **Code Examples** | 50+ |
|
||||
| **Flowcharts** | 15+ |
|
||||
| **Do/Don't Sections** | 20+ |
|
||||
| **Real-World Examples** | 30+ |
|
||||
|
||||
---
|
||||
|
||||
## 🔍 **Find It Fast**
|
||||
|
||||
### By Feature
|
||||
- **How do I create a container?** → [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
|
||||
- **How do I create an install script?** → [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
|
||||
- **How do I create a VM?** → [vm/README.md](vm/README.md)
|
||||
- **How do I install Node.js?** → [misc/tools.func/](misc/tools.func/)
|
||||
- **How do I debug?** → [DEV_MODE.md](DEV_MODE.md)
|
||||
|
||||
### By Error
|
||||
- **Exit code 206?** → [EXIT_CODES.md](EXIT_CODES.md)
|
||||
- **Network failed?** → [misc/install.func/](misc/install.func/)
|
||||
- **Package error?** → [misc/tools.func/](misc/tools.func/)
|
||||
|
||||
### By Role
|
||||
- **Contributor** → [contribution/README.md](contribution/README.md)
|
||||
- **Operator** → [DEFAULTS_SYSTEM_GUIDE.md](DEFAULTS_SYSTEM_GUIDE.md)
|
||||
- **Developer** → [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
|
||||
- **Architect** → [misc/README.md](misc/README.md)
|
||||
|
||||
---
|
||||
|
||||
## ✅ **Documentation Features**
|
||||
|
||||
- ✅ **Project-mirrored structure** - Organized like the actual project
|
||||
- ✅ **Complete function references** - Every function documented
|
||||
- ✅ **Real-world examples** - Copy-paste ready code
|
||||
- ✅ **Visual flowcharts** - ASCII diagrams of workflows
|
||||
- ✅ **Integration guides** - How components connect
|
||||
- ✅ **Troubleshooting** - Common issues and solutions
|
||||
- ✅ **Best practices** - DO/DON'T sections throughout
|
||||
- ✅ **Learning paths** - Structured curriculum by role
|
||||
- ✅ **Quick references** - Fast lookup by error code
|
||||
- ✅ **Comprehensive navigation** - This page
|
||||
|
||||
---
|
||||
|
||||
## 🚀 **Start Here**
|
||||
|
||||
**New to ProxmoxVE?** → [contribution/README.md](contribution/README.md)
|
||||
|
||||
**Looking for something specific?** → Choose your role above or browse by directory
|
||||
|
||||
**Need to debug?** → [EXIT_CODES.md](EXIT_CODES.md)
|
||||
|
||||
**Want to understand architecture?** → [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
|
||||
|
||||
---
|
||||
|
||||
## 🤝 **Contributing Documentation**
|
||||
|
||||
Found an error? Want to improve docs?
|
||||
|
||||
1. See: [contribution/README.md](contribution/README.md) for full contribution guide
|
||||
2. Open issue: [GitHub Issues](https://github.com/community-scripts/ProxmoxVE/issues)
|
||||
3. Or submit PR with improvements
|
||||
|
||||
---
|
||||
|
||||
## 📝 **Status**
|
||||
|
||||
- **Last Updated**: December 2025
|
||||
- **Version**: 2.3 (Consolidated & Reorganized)
|
||||
- **Completeness**: ✅ 100% - All components documented
|
||||
- **Quality**: ✅ Production-ready
|
||||
- **Structure**: ✅ Clean and organized
|
||||
|
||||
---
|
||||
|
||||
**Welcome to ProxmoxVE! Start with [CONTRIBUTION_GUIDE.md](CONTRIBUTION_GUIDE.md) or choose your role above.** 🚀
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user