mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-16 18:23:27 +01:00
Compare commits
69 Commits
disable-se
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4418e72856 | ||
|
|
896714e06f | ||
|
|
96389a02cb | ||
|
|
a4e6286260 | ||
|
|
a6617cc6a1 | ||
|
|
f1377e6cb0 | ||
|
|
56cff01240 | ||
|
|
26ba17c8c3 | ||
|
|
2bd4b063d9 | ||
|
|
40bd7dc366 | ||
|
|
a81ebcb16c | ||
|
|
cebdbcc35d | ||
|
|
42475ed4f6 | ||
|
|
11eba0093f | ||
|
|
f6e535c7b7 | ||
|
|
58329f99ea | ||
|
|
558220fb0e | ||
|
|
61aee12a82 | ||
|
|
215c441129 | ||
|
|
32afe0c2e4 | ||
|
|
73ee5f8f19 | ||
|
|
34db7c652f | ||
|
|
c5c6e660ba | ||
|
|
ae8dd5ba36 | ||
|
|
c975b25ad5 | ||
|
|
4e3ee020e4 | ||
|
|
90ce773247 | ||
|
|
704f8d7e10 | ||
|
|
d7fbbbde0f | ||
|
|
2edd2ffaf8 | ||
|
|
cba1a0bb6b | ||
|
|
97bc69452d | ||
|
|
4257954cfa | ||
|
|
39354352ff | ||
|
|
652920ee49 | ||
|
|
057bdefcc0 | ||
|
|
74b2a29d37 | ||
|
|
607e868328 | ||
|
|
9839bfb5a9 | ||
|
|
983e0f39ca | ||
|
|
8afbf73be0 | ||
|
|
1ca59363ea | ||
|
|
f5180606b3 | ||
|
|
de4857cf53 | ||
|
|
d63c0362bb | ||
|
|
b647868cb5 | ||
|
|
2bae310cc3 | ||
|
|
98b6c59986 | ||
|
|
f4e7edd51d | ||
|
|
142a7ff66d | ||
|
|
f374d2431e | ||
|
|
3c189f66ee | ||
|
|
4d125e29fe | ||
|
|
88c898a946 | ||
|
|
d529150360 | ||
|
|
a4467e9b04 | ||
|
|
ba8c929ac3 | ||
|
|
a8977a25d4 | ||
|
|
81ec696ac5 | ||
|
|
39afa87703 | ||
|
|
6c5f2aa9c1 | ||
|
|
2d3c346650 | ||
|
|
46886ed706 | ||
|
|
b3baf3c307 | ||
|
|
26904fad1a | ||
|
|
54140e7d6e | ||
|
|
00b543c5b6 | ||
|
|
fe0fc4231a | ||
|
|
240f1f391f |
216
.github/changelogs/2026/02.md
generated
vendored
216
.github/changelogs/2026/02.md
generated
vendored
@@ -1,3 +1,219 @@
|
|||||||
|
## 2026-02-14
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Increase disk allocation for OpenWebUI and Ollama to prevent installation failures [@Copilot](https://github.com/Copilot) ([#11920](https://github.com/community-scripts/ProxmoxVE/pull/11920))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: handle missing RAM speed in nested VMs [@MickLesk](https://github.com/MickLesk) ([#11913](https://github.com/community-scripts/ProxmoxVE/pull/11913))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: overwriteable app version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11753](https://github.com/community-scripts/ProxmoxVE/pull/11753))
|
||||||
|
- core: validate container IDs cluster-wide across all nodes [@MickLesk](https://github.com/MickLesk) ([#11906](https://github.com/community-scripts/ProxmoxVE/pull/11906))
|
||||||
|
- core: improve error reporting with structured error strings and better categorization + output formatting [@MickLesk](https://github.com/MickLesk) ([#11907](https://github.com/community-scripts/ProxmoxVE/pull/11907))
|
||||||
|
- core: unified logging system with combined logs [@MickLesk](https://github.com/MickLesk) ([#11761](https://github.com/community-scripts/ProxmoxVE/pull/11761))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- lxc-updater: add patchmon aware [@failure101](https://github.com/failure101) ([#11905](https://github.com/community-scripts/ProxmoxVE/pull/11905))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Disable UniFi script - APT packages no longer available [@Copilot](https://github.com/Copilot) ([#11898](https://github.com/community-scripts/ProxmoxVE/pull/11898))
|
||||||
|
|
||||||
|
## 2026-02-13
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- OpenWebUI: pin numba constraint [@MickLesk](https://github.com/MickLesk) ([#11874](https://github.com/community-scripts/ProxmoxVE/pull/11874))
|
||||||
|
- Planka: add migrate step to update function [@ZimmermannLeon](https://github.com/ZimmermannLeon) ([#11877](https://github.com/community-scripts/ProxmoxVE/pull/11877))
|
||||||
|
- Pangolin: switch sqlite-specific back to generic [@MickLesk](https://github.com/MickLesk) ([#11868](https://github.com/community-scripts/ProxmoxVE/pull/11868))
|
||||||
|
- [Hotfix] Jotty: Copy contents of config backup into /opt/jotty/config [@vhsdream](https://github.com/vhsdream) ([#11864](https://github.com/community-scripts/ProxmoxVE/pull/11864))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Radicale [@vhsdream](https://github.com/vhsdream) ([#11850](https://github.com/community-scripts/ProxmoxVE/pull/11850))
|
||||||
|
- chore(donetick): add config entry for v0.1.73 [@tomfrenzel](https://github.com/tomfrenzel) ([#11872](https://github.com/community-scripts/ProxmoxVE/pull/11872))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: retry reporting with fallback payloads [@MickLesk](https://github.com/MickLesk) ([#11885](https://github.com/community-scripts/ProxmoxVE/pull/11885))
|
||||||
|
|
||||||
|
### 📡 API
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- error-handler: Implement json_escape and enhance error handling [@MickLesk](https://github.com/MickLesk) ([#11875](https://github.com/community-scripts/ProxmoxVE/pull/11875))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- SQLServer-2025: add PVE9/Kernel 6.x incompatibility warning [@MickLesk](https://github.com/MickLesk) ([#11829](https://github.com/community-scripts/ProxmoxVE/pull/11829))
|
||||||
|
|
||||||
|
## 2026-02-12
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- EMQX: increase disk to 6GB and add optional MQ disable prompt [@MickLesk](https://github.com/MickLesk) ([#11844](https://github.com/community-scripts/ProxmoxVE/pull/11844))
|
||||||
|
- Increased the Grafana container default disk size. [@shtefko](https://github.com/shtefko) ([#11840](https://github.com/community-scripts/ProxmoxVE/pull/11840))
|
||||||
|
- Pangolin: Update database generation command in install script [@tremor021](https://github.com/tremor021) ([#11825](https://github.com/community-scripts/ProxmoxVE/pull/11825))
|
||||||
|
- Deluge: add python3-setuptools as dep [@MickLesk](https://github.com/MickLesk) ([#11833](https://github.com/community-scripts/ProxmoxVE/pull/11833))
|
||||||
|
- Dispatcharr: migrate to uv sync [@MickLesk](https://github.com/MickLesk) ([#11831](https://github.com/community-scripts/ProxmoxVE/pull/11831))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Archlinux-VM: fix LVM/LVM-thin storage and improve error reporting | VM's add correct exit_code for analytics [@MickLesk](https://github.com/MickLesk) ([#11842](https://github.com/community-scripts/ProxmoxVE/pull/11842))
|
||||||
|
- Debian13-VM: Optimize First Boot & add noCloud/Cloud Selection [@MickLesk](https://github.com/MickLesk) ([#11810](https://github.com/community-scripts/ProxmoxVE/pull/11810))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: auto-detect binary vs armored GPG keys in setup_deb822_repo [@MickLesk](https://github.com/MickLesk) ([#11841](https://github.com/community-scripts/ProxmoxVE/pull/11841))
|
||||||
|
- core: remove old Go API and extend misc/api.func with new backend [@MickLesk](https://github.com/MickLesk) ([#11822](https://github.com/community-scripts/ProxmoxVE/pull/11822))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- error_handler: prevent stuck 'installing' status [@MickLesk](https://github.com/MickLesk) ([#11845](https://github.com/community-scripts/ProxmoxVE/pull/11845))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Tailscale: fix DNS check and keyrings directory issues [@MickLesk](https://github.com/MickLesk) ([#11837](https://github.com/community-scripts/ProxmoxVE/pull/11837))
|
||||||
|
|
||||||
|
## 2026-02-11
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Draw.io ([#11788](https://github.com/community-scripts/ProxmoxVE/pull/11788))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- dispatcharr: include port 9191 in success-message [@MickLesk](https://github.com/MickLesk) ([#11808](https://github.com/community-scripts/ProxmoxVE/pull/11808))
|
||||||
|
- fix: make donetick 0.1.71 compatible [@tomfrenzel](https://github.com/tomfrenzel) ([#11804](https://github.com/community-scripts/ProxmoxVE/pull/11804))
|
||||||
|
- Kasm: Support new version URL format without hash suffix [@MickLesk](https://github.com/MickLesk) ([#11787](https://github.com/community-scripts/ProxmoxVE/pull/11787))
|
||||||
|
- LibreTranslate: Remove Torch [@tremor021](https://github.com/tremor021) ([#11783](https://github.com/community-scripts/ProxmoxVE/pull/11783))
|
||||||
|
- Snowshare: fix update script [@TuroYT](https://github.com/TuroYT) ([#11726](https://github.com/community-scripts/ProxmoxVE/pull/11726))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [Feature] OpenCloud: support PosixFS Collaborative Mode [@vhsdream](https://github.com/vhsdream) ([#11806](https://github.com/community-scripts/ProxmoxVE/pull/11806))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: respect EDITOR variable for config editing [@ls-root](https://github.com/ls-root) ([#11693](https://github.com/community-scripts/ProxmoxVE/pull/11693))
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- Fix formatting in kutt.json notes section [@tiagodenoronha](https://github.com/tiagodenoronha) ([#11774](https://github.com/community-scripts/ProxmoxVE/pull/11774))
|
||||||
|
|
||||||
|
## 2026-02-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: Pin version to 2.5.6 [@vhsdream](https://github.com/vhsdream) ([#11775](https://github.com/community-scripts/ProxmoxVE/pull/11775))
|
||||||
|
- Libretranslate: Fix setuptools [@tremor021](https://github.com/tremor021) ([#11772](https://github.com/community-scripts/ProxmoxVE/pull/11772))
|
||||||
|
- Element Synapse: prevent systemd invoke failure during apt install [@MickLesk](https://github.com/MickLesk) ([#11758](https://github.com/community-scripts/ProxmoxVE/pull/11758))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Slskd & Soularr [@vhsdream](https://github.com/vhsdream) ([#11674](https://github.com/community-scripts/ProxmoxVE/pull/11674))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- move paperless-exporter from LXC to addon ([#11737](https://github.com/community-scripts/ProxmoxVE/pull/11737))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- feat: improve storage parsing & add guestname [@carlosmaroot](https://github.com/carlosmaroot) ([#11752](https://github.com/community-scripts/ProxmoxVE/pull/11752))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- Github-Version Workflow: include addon scripts in extraction [@MickLesk](https://github.com/MickLesk) ([#11757](https://github.com/community-scripts/ProxmoxVE/pull/11757))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Snowshare: fix typo in config file path on website [@BirdMakingStuff](https://github.com/BirdMakingStuff) ([#11754](https://github.com/community-scripts/ProxmoxVE/pull/11754))
|
||||||
|
|
||||||
|
## 2026-02-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- several scripts: add --clear to uv venv calls for uv 0.10 compatibility [@MickLesk](https://github.com/MickLesk) ([#11723](https://github.com/community-scripts/ProxmoxVE/pull/11723))
|
||||||
|
- Koillection: ensure setup_composer is in update script [@MickLesk](https://github.com/MickLesk) ([#11734](https://github.com/community-scripts/ProxmoxVE/pull/11734))
|
||||||
|
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
||||||
|
- Umlautadaptarr: use release appsettings.json instead of hardcoded copy [@MickLesk](https://github.com/MickLesk) ([#11725](https://github.com/community-scripts/ProxmoxVE/pull/11725))
|
||||||
|
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- remove whiptail from update scripts for unattended update support [@MickLesk](https://github.com/MickLesk) ([#11712](https://github.com/community-scripts/ProxmoxVE/pull/11712))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: FileFlows [@tremor021](https://github.com/tremor021) ([#11108](https://github.com/community-scripts/ProxmoxVE/pull/11108))
|
||||||
|
- Refactor: wger [@MickLesk](https://github.com/MickLesk) ([#11722](https://github.com/community-scripts/ProxmoxVE/pull/11722))
|
||||||
|
- Nginx-UI: better User Handling | ACME [@MickLesk](https://github.com/MickLesk) ([#11715](https://github.com/community-scripts/ProxmoxVE/pull/11715))
|
||||||
|
- NginxProxymanager: use better-sqlite3 [@MickLesk](https://github.com/MickLesk) ([#11708](https://github.com/community-scripts/ProxmoxVE/pull/11708))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- hwaccel: add libmfx-gen1.2 to Intel Arc setup for QSV support [@MickLesk](https://github.com/MickLesk) ([#11707](https://github.com/community-scripts/ProxmoxVE/pull/11707))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- addons: ensure curl is installed before use [@MickLesk](https://github.com/MickLesk) ([#11718](https://github.com/community-scripts/ProxmoxVE/pull/11718))
|
||||||
|
- Netbird (addon): add systemd ordering to start after Docker [@MickLesk](https://github.com/MickLesk) ([#11716](https://github.com/community-scripts/ProxmoxVE/pull/11716))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- Bichon: Update website [@tremor021](https://github.com/tremor021) ([#11711](https://github.com/community-scripts/ProxmoxVE/pull/11711))
|
||||||
|
|
||||||
|
## 2026-02-08
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- feat(healthchecks): add sendalerts service [@Mika56](https://github.com/Mika56) ([#11694](https://github.com/community-scripts/ProxmoxVE/pull/11694))
|
||||||
|
- ComfyUI: Dynamic Fetch PyTorch Versions [@MickLesk](https://github.com/MickLesk) ([#11657](https://github.com/community-scripts/ProxmoxVE/pull/11657))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Semaphore: switch from Debian to Ubuntu 24.04 [@MickLesk](https://github.com/MickLesk) ([#11670](https://github.com/community-scripts/ProxmoxVE/pull/11670))
|
||||||
|
|
||||||
## 2026-02-07
|
## 2026-02-07
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
3
.github/workflows/autolabeler.yml
generated
vendored
3
.github/workflows/autolabeler.yml
generated
vendored
@@ -100,7 +100,8 @@ jobs:
|
|||||||
// If it's an update script PR with json changes and a content label, skip adding website/json
|
// If it's an update script PR with json changes and a content label, skip adding website/json
|
||||||
// The PR should be categorized as update script with the content label
|
// The PR should be categorized as update script with the content label
|
||||||
if (!(hasUpdateScript && hasJson && hasContentLabel)) {
|
if (!(hasUpdateScript && hasJson && hasContentLabel)) {
|
||||||
labelsToAdd.add(hasJson ? "json" : "website");
|
labelsToAdd.add("website");
|
||||||
|
if (hasJson) labelsToAdd.add("json");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
244
CHANGELOG.md
244
CHANGELOG.md
@@ -15,6 +15,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h2>📜 History</h2></summary>
|
<summary><h2>📜 History</h2></summary>
|
||||||
|
|
||||||
@@ -24,7 +27,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><h4>February (7 entries)</h4></summary>
|
<summary><h4>February (14 entries)</h4></summary>
|
||||||
|
|
||||||
[View February 2026 Changelog](.github/changelogs/2026/02.md)
|
[View February 2026 Changelog](.github/changelogs/2026/02.md)
|
||||||
|
|
||||||
@@ -401,18 +404,85 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 2026-02-14
|
## 2026-02-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- RomM ([#11987](https://github.com/community-scripts/ProxmoxVE/pull/11987))
|
||||||
|
- LinkDing ([#11976](https://github.com/community-scripts/ProxmoxVE/pull/11976))
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
- core: overwriteable app version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11753](https://github.com/community-scripts/ProxmoxVE/pull/11753))
|
- Tududi: Fix sed command for DB_FILE configuration [@tremor021](https://github.com/tremor021) ([#11988](https://github.com/community-scripts/ProxmoxVE/pull/11988))
|
||||||
|
- slskd: fix exit position [@MickLesk](https://github.com/MickLesk) ([#11963](https://github.com/community-scripts/ProxmoxVE/pull/11963))
|
||||||
|
- cryptpad: restore config earlier and run onlyoffice upgrade [@MickLesk](https://github.com/MickLesk) ([#11964](https://github.com/community-scripts/ProxmoxVE/pull/11964))
|
||||||
|
- jellyseerr/overseerr: Migrate update script to Seerr; prompt rerun [@MickLesk](https://github.com/MickLesk) ([#11965](https://github.com/community-scripts/ProxmoxVE/pull/11965))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core/vm's: ensure script state is sent on script exit [@MickLesk](https://github.com/MickLesk) ([#11991](https://github.com/community-scripts/ProxmoxVE/pull/11991))
|
||||||
|
- Vaultwarden: export VW_VERSION as version number [@MickLesk](https://github.com/MickLesk) ([#11966](https://github.com/community-scripts/ProxmoxVE/pull/11966))
|
||||||
|
- Zabbix: Improve zabbix-agent service detection [@MickLesk](https://github.com/MickLesk) ([#11968](https://github.com/community-scripts/ProxmoxVE/pull/11968))
|
||||||
|
|
||||||
### 💾 Core
|
### 💾 Core
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: ensure /usr/local/bin PATH persists for pct enter sessions [@MickLesk](https://github.com/MickLesk) ([#11970](https://github.com/community-scripts/ProxmoxVE/pull/11970))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: remove duplicate error handler from alpine-install.func [@MickLesk](https://github.com/MickLesk) ([#11971](https://github.com/community-scripts/ProxmoxVE/pull/11971))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- github: add "website" label if "json" changed [@MickLesk](https://github.com/MickLesk) ([#11975](https://github.com/community-scripts/ProxmoxVE/pull/11975))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Update Wishlist LXC webpage to include reverse proxy info [@summoningpixels](https://github.com/summoningpixels) ([#11973](https://github.com/community-scripts/ProxmoxVE/pull/11973))
|
||||||
|
- Update OpenCloud LXC webpage to include services ports [@summoningpixels](https://github.com/summoningpixels) ([#11969](https://github.com/community-scripts/ProxmoxVE/pull/11969))
|
||||||
|
|
||||||
|
## 2026-02-15
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- ebusd ([#11942](https://github.com/community-scripts/ProxmoxVE/pull/11942))
|
||||||
|
- add: seer script and migrations [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11930](https://github.com/community-scripts/ProxmoxVE/pull/11930))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix seerr URL in jellyseerr script [@lucacome](https://github.com/lucacome) ([#11951](https://github.com/community-scripts/ProxmoxVE/pull/11951))
|
||||||
|
- Fix jellyseer and overseer script replacement [@lucacome](https://github.com/lucacome) ([#11949](https://github.com/community-scripts/ProxmoxVE/pull/11949))
|
||||||
|
- Tautulli: Add setuptools < 81 [@tremor021](https://github.com/tremor021) ([#11943](https://github.com/community-scripts/ProxmoxVE/pull/11943))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Refactor: Patchmon [@vhsdream](https://github.com/vhsdream) ([#11888](https://github.com/community-scripts/ProxmoxVE/pull/11888))
|
||||||
|
|
||||||
|
## 2026-02-14
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Increase disk allocation for OpenWebUI and Ollama to prevent installation failures [@Copilot](https://github.com/Copilot) ([#11920](https://github.com/community-scripts/ProxmoxVE/pull/11920))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: handle missing RAM speed in nested VMs [@MickLesk](https://github.com/MickLesk) ([#11913](https://github.com/community-scripts/ProxmoxVE/pull/11913))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: overwriteable app version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11753](https://github.com/community-scripts/ProxmoxVE/pull/11753))
|
||||||
- core: validate container IDs cluster-wide across all nodes [@MickLesk](https://github.com/MickLesk) ([#11906](https://github.com/community-scripts/ProxmoxVE/pull/11906))
|
- core: validate container IDs cluster-wide across all nodes [@MickLesk](https://github.com/MickLesk) ([#11906](https://github.com/community-scripts/ProxmoxVE/pull/11906))
|
||||||
- core: improve error reporting with structured error strings and better categorization + output formatting [@MickLesk](https://github.com/MickLesk) ([#11907](https://github.com/community-scripts/ProxmoxVE/pull/11907))
|
- core: improve error reporting with structured error strings and better categorization + output formatting [@MickLesk](https://github.com/MickLesk) ([#11907](https://github.com/community-scripts/ProxmoxVE/pull/11907))
|
||||||
- core: unified logging system with combined logs [@MickLesk](https://github.com/MickLesk) ([#11761](https://github.com/community-scripts/ProxmoxVE/pull/11761))
|
- core: unified logging system with combined logs [@MickLesk](https://github.com/MickLesk) ([#11761](https://github.com/community-scripts/ProxmoxVE/pull/11761))
|
||||||
@@ -421,9 +491,11 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- lxc-updater: add patchmon aware [@failure101](https://github.com/failure101) ([#11905](https://github.com/community-scripts/ProxmoxVE/pull/11905))
|
- lxc-updater: add patchmon aware [@failure101](https://github.com/failure101) ([#11905](https://github.com/community-scripts/ProxmoxVE/pull/11905))
|
||||||
|
|
||||||
### ❔ Uncategorized
|
### 🌐 Website
|
||||||
|
|
||||||
- Disable UniFi script - APT packages no longer available [@Copilot](https://github.com/Copilot) ([#11898](https://github.com/community-scripts/ProxmoxVE/pull/11898))
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Disable UniFi script - APT packages no longer available [@Copilot](https://github.com/Copilot) ([#11898](https://github.com/community-scripts/ProxmoxVE/pull/11898))
|
||||||
|
|
||||||
## 2026-02-13
|
## 2026-02-13
|
||||||
|
|
||||||
@@ -1345,162 +1417,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
### ❔ Uncategorized
|
### ❔ Uncategorized
|
||||||
|
|
||||||
- qui: fix: category [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10847](https://github.com/community-scripts/ProxmoxVE/pull/10847))
|
- qui: fix: category [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10847](https://github.com/community-scripts/ProxmoxVE/pull/10847))
|
||||||
|
|
||||||
## 2026-01-15
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Qui ([#10829](https://github.com/community-scripts/ProxmoxVE/pull/10829))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- Refactor: FreshRSS + Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10824](https://github.com/community-scripts/ProxmoxVE/pull/10824))
|
|
||||||
|
|
||||||
## 2026-01-14
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Kutt ([#10812](https://github.com/community-scripts/ProxmoxVE/pull/10812))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Switch Ollama install to .tar.zst and add zstd dependency [@MickLesk](https://github.com/MickLesk) ([#10814](https://github.com/community-scripts/ProxmoxVE/pull/10814))
|
|
||||||
- Immich: Install libde265-dev from Debian Testing [@vhsdream](https://github.com/vhsdream) ([#10810](https://github.com/community-scripts/ProxmoxVE/pull/10810))
|
|
||||||
- nginxproxymanager: allow updates now the build is fixed [@durzo](https://github.com/durzo) ([#10796](https://github.com/community-scripts/ProxmoxVE/pull/10796))
|
|
||||||
- Fixed Apache Guacamole installer [@horvatbenjamin](https://github.com/horvatbenjamin) ([#10798](https://github.com/community-scripts/ProxmoxVE/pull/10798))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- core: Improve NVIDIA GPU setup (5000x Series) [@MickLesk](https://github.com/MickLesk) ([#10807](https://github.com/community-scripts/ProxmoxVE/pull/10807))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- Fix whiptail dialog hanging in Proxmox web console [@comk22](https://github.com/comk22) ([#10794](https://github.com/community-scripts/ProxmoxVE/pull/10794))
|
|
||||||
|
|
||||||
### 🌐 Website
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Add search filtering to CommandDialog for improved script search functionality [@BramSuurdje](https://github.com/BramSuurdje) ([#10800](https://github.com/community-scripts/ProxmoxVE/pull/10800))
|
|
||||||
|
|
||||||
## 2026-01-13
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Investbrain ([#10774](https://github.com/community-scripts/ProxmoxVE/pull/10774))
|
|
||||||
- Fladder ([#10768](https://github.com/community-scripts/ProxmoxVE/pull/10768))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Immich: Fix Intel version check; install legacy Intel packages during new install [@vhsdream](https://github.com/vhsdream) ([#10787](https://github.com/community-scripts/ProxmoxVE/pull/10787))
|
|
||||||
- Openwrt: Remove default VLAN for LAN [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#10782](https://github.com/community-scripts/ProxmoxVE/pull/10782))
|
|
||||||
- Refactor: Joplin Server [@tremor021](https://github.com/tremor021) ([#10769](https://github.com/community-scripts/ProxmoxVE/pull/10769))
|
|
||||||
- Fix Zammad nginx configuration causing installation failure [@Copilot](https://github.com/Copilot) ([#10757](https://github.com/community-scripts/ProxmoxVE/pull/10757))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Backrest: Bump to Trixie [@tremor021](https://github.com/tremor021) ([#10758](https://github.com/community-scripts/ProxmoxVE/pull/10758))
|
|
||||||
- Refactor: Caddy [@tremor021](https://github.com/tremor021) ([#10759](https://github.com/community-scripts/ProxmoxVE/pull/10759))
|
|
||||||
- Refactor: Leantime [@tremor021](https://github.com/tremor021) ([#10760](https://github.com/community-scripts/ProxmoxVE/pull/10760))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- update_lxcs.sh: Add the option to skip stopped LXC [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#10783](https://github.com/community-scripts/ProxmoxVE/pull/10783))
|
|
||||||
|
|
||||||
## 2026-01-12
|
|
||||||
|
|
||||||
### 🆕 New Scripts
|
|
||||||
|
|
||||||
- Jellystat ([#10628](https://github.com/community-scripts/ProxmoxVE/pull/10628))
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- InfluxSB: fix If / fi [@chrnie](https://github.com/chrnie) ([#10753](https://github.com/community-scripts/ProxmoxVE/pull/10753))
|
|
||||||
- Cockpit: Downgrade to Debian 12 Bookworm (45Drives Issue) [@MickLesk](https://github.com/MickLesk) ([#10717](https://github.com/community-scripts/ProxmoxVE/pull/10717))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- InfluxDB: add setup for influxdb v3 [@victorlap](https://github.com/victorlap) ([#10736](https://github.com/community-scripts/ProxmoxVE/pull/10736))
|
|
||||||
- Apache Guacamole: add schema upgrades and extension updates [@MickLesk](https://github.com/MickLesk) ([#10746](https://github.com/community-scripts/ProxmoxVE/pull/10746))
|
|
||||||
- Apache Tomcat: update support and refactor install script + debian 13 [@MickLesk](https://github.com/MickLesk) ([#10739](https://github.com/community-scripts/ProxmoxVE/pull/10739))
|
|
||||||
- Apache Guacamole: Function Bump + update_script [@MickLesk](https://github.com/MickLesk) ([#10728](https://github.com/community-scripts/ProxmoxVE/pull/10728))
|
|
||||||
- Apache CouchDB: bump to debian 13 and add update support [@MickLesk](https://github.com/MickLesk) ([#10721](https://github.com/community-scripts/ProxmoxVE/pull/10721))
|
|
||||||
- Apache Cassandra: bump to debian 13 and add update support [@MickLesk](https://github.com/MickLesk) ([#10720](https://github.com/community-scripts/ProxmoxVE/pull/10720))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: Booklore [@MickLesk](https://github.com/MickLesk) ([#10742](https://github.com/community-scripts/ProxmoxVE/pull/10742))
|
|
||||||
- Bump Argus to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10718](https://github.com/community-scripts/ProxmoxVE/pull/10718))
|
|
||||||
- Refactor Docker/Dockge & Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10719](https://github.com/community-scripts/ProxmoxVE/pull/10719))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- core: remove duplicated pve_version in advanced installs [@MickLesk](https://github.com/MickLesk) ([#10743](https://github.com/community-scripts/ProxmoxVE/pull/10743))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- core: add storage validation & fix GB/MB display [@MickLesk](https://github.com/MickLesk) ([#10745](https://github.com/community-scripts/ProxmoxVE/pull/10745))
|
|
||||||
- core: validate container ID before pct create to prevent failures [@MickLesk](https://github.com/MickLesk) ([#10729](https://github.com/community-scripts/ProxmoxVE/pull/10729))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Enforce non-interactive apt mode in DB setup scripts [@MickLesk](https://github.com/MickLesk) ([#10714](https://github.com/community-scripts/ProxmoxVE/pull/10714))
|
|
||||||
|
|
||||||
## 2026-01-11
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Fix Invoice Ninja Error 500 by restoring file ownership after artisan commands [@Copilot](https://github.com/Copilot) ([#10709](https://github.com/community-scripts/ProxmoxVE/pull/10709))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: Infisical [@tremor021](https://github.com/tremor021) ([#10693](https://github.com/community-scripts/ProxmoxVE/pull/10693))
|
|
||||||
- Refactor: HortusFox [@tremor021](https://github.com/tremor021) ([#10697](https://github.com/community-scripts/ProxmoxVE/pull/10697))
|
|
||||||
- Refactor: Homer [@tremor021](https://github.com/tremor021) ([#10698](https://github.com/community-scripts/ProxmoxVE/pull/10698))
|
|
||||||
|
|
||||||
## 2026-01-10
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- [Endurain] Increase default RAM from 2048 to 4096 [@FutureCow](https://github.com/FutureCow) ([#10690](https://github.com/community-scripts/ProxmoxVE/pull/10690))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- tools.func: hwaccel - make beignet-opencl-icd optional for legacy Intel GPUs [@MickLesk](https://github.com/MickLesk) ([#10677](https://github.com/community-scripts/ProxmoxVE/pull/10677))
|
|
||||||
|
|
||||||
## 2026-01-09
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- Jenkins: Fix application repository setup [@tremor021](https://github.com/tremor021) ([#10671](https://github.com/community-scripts/ProxmoxVE/pull/10671))
|
|
||||||
- deCONZ: Fix sources check in update script [@tremor021](https://github.com/tremor021) ([#10664](https://github.com/community-scripts/ProxmoxVE/pull/10664))
|
|
||||||
- Remove '--cpu' option from ExecStart command [@sethgregory](https://github.com/sethgregory) ([#10659](https://github.com/community-scripts/ProxmoxVE/pull/10659))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 💥 Breaking Changes
|
|
||||||
|
|
||||||
- fix: setup_mariadb hangs on [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10672](https://github.com/community-scripts/ProxmoxVE/pull/10672))
|
|
||||||
@@ -27,7 +27,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1) && set -o pipefail
|
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | awk 'NR==1')
|
||||||
|
|
||||||
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
|
|||||||
@@ -39,17 +39,20 @@ function update_script() {
|
|||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
|
||||||
|
|
||||||
|
msg_info "Restoring configuration"
|
||||||
|
mv /opt/config.js /opt/cryptpad/config/
|
||||||
|
msg_ok "Configuration restored"
|
||||||
|
|
||||||
msg_info "Updating CryptaPad"
|
msg_info "Updating CryptaPad"
|
||||||
cd /opt/cryptpad
|
cd /opt/cryptpad
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run install:components
|
$STD npm run install:components
|
||||||
|
if [ -f "/opt/cryptpad/install-onlyoffice.sh" ]; then
|
||||||
|
$STD bash /opt/cryptpad/install-onlyoffice.sh --accept-license
|
||||||
|
fi
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
msg_ok "Updated CryptaPad"
|
msg_ok "Updated CryptaPad"
|
||||||
|
|
||||||
msg_info "Restoring configuration"
|
|
||||||
mv /opt/config.js /opt/cryptpad/config/
|
|
||||||
msg_ok "Configuration restored"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start cryptpad
|
systemctl start cryptpad
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|||||||
50
ct/ebusd.sh
Normal file
50
ct/ebusd.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Joerg Heinemann (heinemannj)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/john30/ebusd
|
||||||
|
|
||||||
|
APP="ebusd"
|
||||||
|
var_tags="${var_tags:-automation}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /etc/default/ebusd ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
if check_for_gh_release "ebusd" "john30/ebusd"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop ebusd
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "/opt/ebusd" "ebusd-*_amd64-trixie_mqtt1.deb"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start ebusd
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
6
ct/headers/ebusd
Normal file
6
ct/headers/ebusd
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __
|
||||||
|
___ / /_ __ ___________/ /
|
||||||
|
/ _ \/ __ \/ / / / ___/ __ /
|
||||||
|
/ __/ /_/ / /_/ (__ ) /_/ /
|
||||||
|
\___/_.___/\__,_/____/\__,_/
|
||||||
|
|
||||||
6
ct/headers/jellyseerr
Normal file
6
ct/headers/jellyseerr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ ____
|
||||||
|
/ /__ / / /_ __________ ___ __________
|
||||||
|
__ / / _ \/ / / / / / ___/ _ \/ _ \/ ___/ ___/
|
||||||
|
/ /_/ / __/ / / /_/ (__ ) __/ __/ / / /
|
||||||
|
\____/\___/_/_/\__, /____/\___/\___/_/ /_/
|
||||||
|
/____/
|
||||||
6
ct/headers/linkding
Normal file
6
ct/headers/linkding
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
___ __ ___
|
||||||
|
/ (_)___ / /______/ (_)___ ____ _
|
||||||
|
/ / / __ \/ //_/ __ / / __ \/ __ `/
|
||||||
|
/ / / / / / ,< / /_/ / / / / / /_/ /
|
||||||
|
/_/_/_/ /_/_/|_|\__,_/_/_/ /_/\__, /
|
||||||
|
/____/
|
||||||
6
ct/headers/overseerr
Normal file
6
ct/headers/overseerr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____
|
||||||
|
/ __ \_ _____ _____________ ___ __________
|
||||||
|
/ / / / | / / _ \/ ___/ ___/ _ \/ _ \/ ___/ ___/
|
||||||
|
/ /_/ /| |/ / __/ / (__ ) __/ __/ / / /
|
||||||
|
\____/ |___/\___/_/ /____/\___/\___/_/ /_/
|
||||||
|
|
||||||
6
ct/headers/romm
Normal file
6
ct/headers/romm
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ __ ___
|
||||||
|
/ __ \____ ____ ___ / |/ /
|
||||||
|
/ /_/ / __ \/ __ `__ \/ /|_/ /
|
||||||
|
/ _, _/ /_/ / / / / / / / / /
|
||||||
|
/_/ |_|\____/_/ /_/ /_/_/ /_/
|
||||||
|
|
||||||
6
ct/headers/seerr
Normal file
6
ct/headers/seerr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
_____
|
||||||
|
/ ___/___ ___ __________
|
||||||
|
\__ \/ _ \/ _ \/ ___/ ___/
|
||||||
|
___/ / __/ __/ / / /
|
||||||
|
/____/\___/\___/_/ /_/
|
||||||
|
|
||||||
@@ -45,13 +45,18 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Switching update script to Seerr"
|
msg_info "Switching update script to Seerr"
|
||||||
sed -i 's|https://github.com/community-scripts/ProxmoxVE/raw/main/ct/jellyseerr.sh|https://github.com/community-scripts/ProxmoxVE/raw/main/ct/seerr.sh|g' /usr/bin/update
|
cat <<'EOF' >/usr/bin/update
|
||||||
msg_ok "Switched update script to Seerr. Running update..."
|
#!/usr/bin/env bash
|
||||||
exec /usr/bin/update
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/seerr.sh)"
|
||||||
|
EOF
|
||||||
|
chmod +x /usr/bin/update
|
||||||
|
msg_ok "Switched update script to Seerr"
|
||||||
|
msg_warn "Please type 'update' again to complete the migration"
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating Jellyseerr"
|
msg_info "Updating Jellyseerr"
|
||||||
cd /opt/jellyseerr
|
cd /opt/jellyseerr
|
||||||
systemctl stop jellyseerr
|
systemctl stop jellyseerr
|
||||||
output=$(git pull --no-rebase)
|
output=$(git pull --no-rebase)
|
||||||
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
|
pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json)
|
||||||
@@ -62,7 +67,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
rm -rf dist .next node_modules
|
rm -rf dist .next node_modules
|
||||||
export CYPRESS_INSTALL_BINARY=0
|
export CYPRESS_INSTALL_BINARY=0
|
||||||
cd /opt/jellyseerr
|
cd /opt/jellyseerr
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
|
|||||||
79
ct/linkding.sh
Normal file
79
ct/linkding.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (MickLesk)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://linkding.link/
|
||||||
|
|
||||||
|
APP="linkding"
|
||||||
|
var_tags="${var_tags:-bookmarks;management}"
|
||||||
|
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_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/linkding ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "linkding" "sissbruecker/linkding"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop nginx linkding linkding-tasks
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
msg_info "Backing up Data"
|
||||||
|
cp -r /opt/linkding/data /opt/linkding_data_backup
|
||||||
|
cp /opt/linkding/.env /opt/linkding_env_backup
|
||||||
|
msg_ok "Backed up Data"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkding" "sissbruecker/linkding"
|
||||||
|
|
||||||
|
msg_info "Restoring Data"
|
||||||
|
cp -r /opt/linkding_data_backup/. /opt/linkding/data
|
||||||
|
cp /opt/linkding_env_backup /opt/linkding/.env
|
||||||
|
rm -rf /opt/linkding_data_backup /opt/linkding_env_backup
|
||||||
|
ln -sf /usr/lib/x86_64-linux-gnu/mod_icu.so /opt/linkding/libicu.so
|
||||||
|
msg_ok "Restored Data"
|
||||||
|
|
||||||
|
msg_info "Updating LinkDing"
|
||||||
|
cd /opt/linkding
|
||||||
|
rm -f bookmarks/settings/dev.py
|
||||||
|
touch bookmarks/settings/custom.py
|
||||||
|
$STD npm ci
|
||||||
|
$STD npm run build
|
||||||
|
$STD uv sync --no-dev --frozen
|
||||||
|
$STD uv pip install gunicorn
|
||||||
|
set -a && source /opt/linkding/.env && set +a
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py migrate
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py collectstatic --no-input
|
||||||
|
msg_ok "Updated LinkDing"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start nginx linkding linkding-tasks
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9090${CL}"
|
||||||
@@ -9,7 +9,7 @@ APP="Ollama"
|
|||||||
var_tags="${var_tags:-ai}"
|
var_tags="${var_tags:-ai}"
|
||||||
var_cpu="${var_cpu:-4}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-35}"
|
var_disk="${var_disk:-40}"
|
||||||
var_os="${var_os:-ubuntu}"
|
var_os="${var_os:-ubuntu}"
|
||||||
var_version="${var_version:-24.04}"
|
var_version="${var_version:-24.04}"
|
||||||
var_gpu="${var_gpu:-yes}"
|
var_gpu="${var_gpu:-yes}"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ APP="Open WebUI"
|
|||||||
var_tags="${var_tags:-ai;interface}"
|
var_tags="${var_tags:-ai;interface}"
|
||||||
var_cpu="${var_cpu:-4}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-8192}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-25}"
|
var_disk="${var_disk:-50}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -44,9 +44,14 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Switching update script to Seerr"
|
msg_info "Switching update script to Seerr"
|
||||||
sed -i 's|https://github.com/community-scripts/ProxmoxVE/raw/main/ct/overseerr.sh|https://github.com/community-scripts/ProxmoxVE/raw/main/ct/seerr.sh|g' /usr/bin/update
|
cat <<'EOF' >/usr/bin/update
|
||||||
msg_ok "Switched update script to Seerr. Running update..."
|
#!/usr/bin/env bash
|
||||||
exec /usr/bin/update
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/seerr.sh)"
|
||||||
|
EOF
|
||||||
|
chmod +x /usr/bin/update
|
||||||
|
msg_ok "Switched update script to Seerr"
|
||||||
|
msg_warn "Please type 'update' again to complete the migration"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "overseerr" "sct/overseerr"; then
|
if check_for_gh_release "overseerr" "sct/overseerr"; then
|
||||||
|
|||||||
@@ -43,22 +43,40 @@ function update_script() {
|
|||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||||
|
|
||||||
msg_info "Updating PatchMon"
|
msg_info "Updating PatchMon"
|
||||||
cd /opt/patchmon
|
VERSION=$(get_latest_github_release "PatchMon/PatchMon")
|
||||||
|
PROTO="$(sed -n '/SERVER_PROTOCOL/s/[^=]*=//p' /opt/backend.env)"
|
||||||
|
HOST="$(sed -n '/SERVER_HOST/s/[^=]*=//p' /opt/backend.env)"
|
||||||
|
[[ "${PROTO:-http}" == "http" ]] && PORT=":3001"
|
||||||
|
sed -i 's/PORT=3399/PORT=3001/' /opt/backend.env
|
||||||
|
sed -i -e "s/VERSION=.*/VERSION=$VERSION/" \
|
||||||
|
-e "\|VITE_API_URL=|s|http.*|${PROTO:-http}://${HOST:-$LOCAL_IP}${PORT:-}/api/v1|" /opt/frontend.env
|
||||||
export NODE_ENV=production
|
export NODE_ENV=production
|
||||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
cd /opt/patchmon
|
||||||
cd /opt/patchmon/backend
|
|
||||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||||
cd /opt/patchmon/frontend
|
cd /opt/patchmon/frontend
|
||||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
mv /opt/frontend.env /opt/patchmon/frontend/.env
|
||||||
|
$STD npm install --no-audit --no-fund --no-save --ignore-scripts --include=dev
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
cd /opt/patchmon/backend
|
cd /opt/patchmon/backend
|
||||||
mv /opt/backend.env /opt/patchmon/backend/.env
|
mv /opt/backend.env /opt/patchmon/backend/.env
|
||||||
mv /opt/frontend.env /opt/patchmon/frontend/.env
|
$STD npm run db:generate
|
||||||
$STD npx prisma migrate deploy
|
$STD npx prisma migrate deploy
|
||||||
$STD npx prisma generate
|
cp /opt/patchmon/docker/nginx.conf.template /etc/nginx/sites-available/patchmon.conf
|
||||||
|
sed -i -e 's|proxy_pass .*|proxy_pass http://127.0.0.1:3001;|' \
|
||||||
|
-e '\|try_files |i\ root /opt/patchmon/frontend/dist;' \
|
||||||
|
-e 's|alias.*|alias /opt/patchmon/frontend/dist/assets;|' \
|
||||||
|
-e '\|expires 1y|i\ root /opt/patchmon/frontend/dist;' /etc/nginx/sites-available/patchmon.conf
|
||||||
|
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
|
||||||
|
rm -f /etc/nginx/sites-enabled/default
|
||||||
|
$STD nginx -t
|
||||||
|
systemctl restart nginx
|
||||||
msg_ok "Updated PatchMon"
|
msg_ok "Updated PatchMon"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
if grep -q '/usr/bin/node' /etc/systemd/system/patchmon-server.service; then
|
||||||
|
sed -i 's|ExecStart=.*|ExecStart=/usr/bin/npm run start|' /etc/systemd/system/patchmon-server.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
systemctl start patchmon-server
|
systemctl start patchmon-server
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
@@ -73,4 +91,4 @@ description
|
|||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
74
ct/romm.sh
Normal file
74
ct/romm.sh
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ) | DevelopmentCats | AlphaLawless
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://romm.app
|
||||||
|
|
||||||
|
APP="RomM"
|
||||||
|
var_tags="${var_tags:-emulation}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/romm ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "romm" "rommapp/romm"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
msg_info "Backing up configuration"
|
||||||
|
cp /opt/romm/.env /opt/romm/.env.backup
|
||||||
|
msg_ok "Backed up configuration"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||||
|
|
||||||
|
msg_info "Updating ROMM"
|
||||||
|
cp /opt/romm/.env.backup /opt/romm/.env
|
||||||
|
cd /opt/romm
|
||||||
|
$STD uv sync --all-extras
|
||||||
|
cd /opt/romm/backend
|
||||||
|
$STD uv run alembic upgrade head
|
||||||
|
cd /opt/romm/frontend
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
# Merge static assets into dist folder
|
||||||
|
cp -rf /opt/romm/frontend/assets/* /opt/romm/frontend/dist/assets/
|
||||||
|
mkdir -p /opt/romm/frontend/dist/assets/romm
|
||||||
|
ln -sfn /var/lib/romm/resources /opt/romm/frontend/dist/assets/romm/resources
|
||||||
|
ln -sfn /var/lib/romm/assets /opt/romm/frontend/dist/assets/romm/assets
|
||||||
|
msg_ok "Updated ROMM"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
@@ -83,6 +83,7 @@ function update_script() {
|
|||||||
msg_ok "Started Soularr Timer"
|
msg_ok "Started Soularr Timer"
|
||||||
msg_ok "Updated Soularr successfully!"
|
msg_ok "Updated Soularr successfully!"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating VaultWarden to $VAULT (Patience)"
|
msg_info "Updating VaultWarden to $VAULT (Patience)"
|
||||||
cd /tmp/vaultwarden-src
|
cd /tmp/vaultwarden-src
|
||||||
|
VW_VERSION="$VAULT"
|
||||||
|
export VW_VERSION
|
||||||
$STD cargo build --features "sqlite,mysql,postgresql" --release
|
$STD cargo build --features "sqlite,mysql,postgresql" --release
|
||||||
if [[ -f /usr/bin/vaultwarden ]]; then
|
if [[ -f /usr/bin/vaultwarden ]]; then
|
||||||
cp target/release/vaultwarden /usr/bin/
|
cp target/release/vaultwarden /usr/bin/
|
||||||
|
|||||||
15
ct/zabbix.sh
15
ct/zabbix.sh
@@ -35,15 +35,18 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if systemctl list-unit-files | grep -q zabbix-agent2.service; then
|
if systemctl cat zabbix-agent2.service &>/dev/null; then
|
||||||
AGENT_SERVICE="zabbix-agent2"
|
AGENT_SERVICE="zabbix-agent2"
|
||||||
else
|
elif systemctl cat zabbix-agent.service &>/dev/null; then
|
||||||
AGENT_SERVICE="zabbix-agent"
|
AGENT_SERVICE="zabbix-agent"
|
||||||
|
else
|
||||||
|
AGENT_SERVICE=""
|
||||||
|
msg_warn "No Zabbix Agent service found, skipping agent actions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop zabbix-server
|
systemctl stop zabbix-server
|
||||||
systemctl stop "$AGENT_SERVICE"
|
[[ -n "$AGENT_SERVICE" ]] && systemctl stop "$AGENT_SERVICE"
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
|
read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
|
||||||
@@ -83,13 +86,13 @@ function update_script() {
|
|||||||
|
|
||||||
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
|
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
|
||||||
|
|
||||||
if [ "$AGENT_SERVICE" = "zabbix-agent2" ]; then
|
if [[ "$AGENT_SERVICE" == "zabbix-agent2" ]]; then
|
||||||
$STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
|
$STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
|
||||||
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
|
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
|
||||||
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
|
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
|
||||||
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
|
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
|
||||||
fi
|
fi
|
||||||
else
|
elif [[ "$AGENT_SERVICE" == "zabbix-agent" ]]; then
|
||||||
$STD apt install --only-upgrade zabbix-agent
|
$STD apt install --only-upgrade zabbix-agent
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -105,7 +108,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start zabbix-server
|
systemctl start zabbix-server
|
||||||
systemctl start "$AGENT_SERVICE"
|
[[ -n "$AGENT_SERVICE" ]] && systemctl start "$AGENT_SERVICE"
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
|
|||||||
40
frontend/public/json/ebusd.json
Normal file
40
frontend/public/json/ebusd.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "ebusd",
|
||||||
|
"slug": "ebusd",
|
||||||
|
"categories": [
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"date_created": "2026-02-15",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": "https://github.com/john30/ebusd/wiki",
|
||||||
|
"website": "https://github.com/john30/ebusd",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ebusd.webp",
|
||||||
|
"config_path": "/etc/default/ebusd",
|
||||||
|
"description": "ebusd is a daemon for handling communication with eBUS devices connected to a 2-wire `energy bus` used by numerous heating systems.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/ebusd.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 512,
|
||||||
|
"hdd": 2,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "root",
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "For required post installation actions, checkout: `https://github.com/community-scripts/ProxmoxVE/discussions/11352`",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated": "2026-02-14T18:07:29Z",
|
"generated": "2026-02-16T12:14:16Z",
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"slug": "2fauth",
|
"slug": "2fauth",
|
||||||
@@ -193,16 +193,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "cleanuparr",
|
"slug": "cleanuparr",
|
||||||
"repo": "Cleanuparr/Cleanuparr",
|
"repo": "Cleanuparr/Cleanuparr",
|
||||||
"version": "v2.6.1",
|
"version": "v2.6.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-13T10:00:19Z"
|
"date": "2026-02-15T02:15:19Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "cloudreve",
|
"slug": "cloudreve",
|
||||||
"repo": "cloudreve/cloudreve",
|
"repo": "cloudreve/cloudreve",
|
||||||
"version": "4.14.0",
|
"version": "4.14.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-14T06:05:06Z"
|
"date": "2026-02-15T01:39:24Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "comfyui",
|
"slug": "comfyui",
|
||||||
@@ -256,9 +256,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "dawarich",
|
"slug": "dawarich",
|
||||||
"repo": "Freika/dawarich",
|
"repo": "Freika/dawarich",
|
||||||
"version": "1.1.0",
|
"version": "1.2.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-08T14:42:45Z"
|
"date": "2026-02-15T22:33:56Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "discopanel",
|
"slug": "discopanel",
|
||||||
@@ -298,9 +298,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "donetick",
|
"slug": "donetick",
|
||||||
"repo": "donetick/donetick",
|
"repo": "donetick/donetick",
|
||||||
"version": "v0.1.73",
|
"version": "v0.1.74",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-12T23:42:30Z"
|
"date": "2026-02-14T23:21:45Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "drawio",
|
"slug": "drawio",
|
||||||
@@ -316,6 +316,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-06T12:05:40Z"
|
"date": "2026-01-06T12:05:40Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "ebusd",
|
||||||
|
"repo": "john30/ebusd",
|
||||||
|
"version": "26.1",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-02-09T06:09:24Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "elementsynapse",
|
"slug": "elementsynapse",
|
||||||
"repo": "etkecc/synapse-admin",
|
"repo": "etkecc/synapse-admin",
|
||||||
@@ -354,9 +361,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "firefly",
|
"slug": "firefly",
|
||||||
"repo": "firefly-iii/firefly-iii",
|
"repo": "firefly-iii/firefly-iii",
|
||||||
"version": "v6.4.20",
|
"version": "v6.4.22",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-14T12:39:02Z"
|
"date": "2026-02-15T18:43:08Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "fladder",
|
"slug": "fladder",
|
||||||
@@ -403,9 +410,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "ghostfolio",
|
"slug": "ghostfolio",
|
||||||
"repo": "ghostfolio/ghostfolio",
|
"repo": "ghostfolio/ghostfolio",
|
||||||
"version": "2.238.0",
|
"version": "2.239.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-12T18:28:55Z"
|
"date": "2026-02-15T09:51:16Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "gitea",
|
"slug": "gitea",
|
||||||
@@ -550,9 +557,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "immich-public-proxy",
|
"slug": "immich-public-proxy",
|
||||||
"repo": "alangrainger/immich-public-proxy",
|
"repo": "alangrainger/immich-public-proxy",
|
||||||
"version": "v1.15.1",
|
"version": "v1.15.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-26T08:04:27Z"
|
"date": "2026-02-16T08:54:59Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "inspircd",
|
"slug": "inspircd",
|
||||||
@@ -571,16 +578,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "invoiceninja",
|
"slug": "invoiceninja",
|
||||||
"repo": "invoiceninja/invoiceninja",
|
"repo": "invoiceninja/invoiceninja",
|
||||||
"version": "v5.12.59",
|
"version": "v5.12.60",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-13T02:26:13Z"
|
"date": "2026-02-15T00:11:31Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "jackett",
|
"slug": "jackett",
|
||||||
"repo": "Jackett/Jackett",
|
"repo": "Jackett/Jackett",
|
||||||
"version": "v0.24.1113",
|
"version": "v0.24.1127",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-14T17:46:58Z"
|
"date": "2026-02-16T08:43:41Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "jellystat",
|
"slug": "jellystat",
|
||||||
@@ -634,9 +641,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "kimai",
|
"slug": "kimai",
|
||||||
"repo": "kimai/kimai",
|
"repo": "kimai/kimai",
|
||||||
"version": "2.48.0",
|
"version": "2.49.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-31T18:10:59Z"
|
"date": "2026-02-15T20:40:19Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "kitchenowl",
|
"slug": "kitchenowl",
|
||||||
@@ -722,6 +729,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-11-16T22:40:18Z"
|
"date": "2025-11-16T22:40:18Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "linkding",
|
||||||
|
"repo": "sissbruecker/linkding",
|
||||||
|
"version": "v1.45.0",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-06T20:31:04Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "linkstack",
|
"slug": "linkstack",
|
||||||
"repo": "linkstackorg/linkstack",
|
"repo": "linkstackorg/linkstack",
|
||||||
@@ -886,9 +900,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "nginx-ui",
|
"slug": "nginx-ui",
|
||||||
"repo": "0xJacky/nginx-ui",
|
"repo": "0xJacky/nginx-ui",
|
||||||
"version": "v2.3.2",
|
"version": "v2.3.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-09T09:47:15Z"
|
"date": "2026-02-15T00:58:14Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "nightscout",
|
"slug": "nightscout",
|
||||||
@@ -956,23 +970,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "ots",
|
"slug": "ots",
|
||||||
"repo": "Luzifer/ots",
|
"repo": "Luzifer/ots",
|
||||||
"version": "v1.21.0",
|
"version": "v1.21.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-19T23:21:29Z"
|
"date": "2026-02-16T12:12:23Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "outline",
|
"slug": "outline",
|
||||||
"repo": "outline/outline",
|
"repo": "outline/outline",
|
||||||
"version": "v1.4.0",
|
"version": "v1.5.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-27T23:43:03Z"
|
"date": "2026-02-15T18:04:16Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"slug": "overseerr",
|
|
||||||
"repo": "sct/overseerr",
|
|
||||||
"version": "v1.34.0",
|
|
||||||
"pinned": false,
|
|
||||||
"date": "2025-03-26T08:48:34Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "owncast",
|
"slug": "owncast",
|
||||||
@@ -1012,9 +1019,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "paperless-gpt",
|
"slug": "paperless-gpt",
|
||||||
"repo": "icereed/paperless-gpt",
|
"repo": "icereed/paperless-gpt",
|
||||||
"version": "v0.24.0",
|
"version": "v0.25.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-14T21:28:09Z"
|
"date": "2026-02-16T08:31:48Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "paperless-ngx",
|
"slug": "paperless-ngx",
|
||||||
@@ -1054,9 +1061,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "pelican-wings",
|
"slug": "pelican-wings",
|
||||||
"repo": "pelican-dev/wings",
|
"repo": "pelican-dev/wings",
|
||||||
"version": "v1.0.0-beta23",
|
"version": "v1.0.0-beta24",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T22:10:26Z"
|
"date": "2026-02-15T16:09:56Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "pf2etools",
|
"slug": "pf2etools",
|
||||||
@@ -1268,6 +1275,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-03-28T13:00:23Z"
|
"date": "2025-03-28T13:00:23Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "romm",
|
||||||
|
"repo": "RetroAchievements/RALibretro",
|
||||||
|
"version": "1.8.2",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-23T17:03:31Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "rustdeskserver",
|
"slug": "rustdeskserver",
|
||||||
"repo": "rustdesk/rustdesk-server",
|
"repo": "rustdesk/rustdesk-server",
|
||||||
@@ -1310,12 +1324,19 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-03-08T10:49:04Z"
|
"date": "2025-03-08T10:49:04Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "seerr",
|
||||||
|
"repo": "seerr-team/seerr",
|
||||||
|
"version": "v3.0.1",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-02-14T19:30:24Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "semaphore",
|
"slug": "semaphore",
|
||||||
"repo": "semaphoreui/semaphore",
|
"repo": "semaphoreui/semaphore",
|
||||||
"version": "v2.17.0",
|
"version": "v2.17.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-13T21:08:30Z"
|
"date": "2026-02-16T10:27:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "shelfmark",
|
"slug": "shelfmark",
|
||||||
@@ -1425,9 +1446,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "tautulli",
|
"slug": "tautulli",
|
||||||
"repo": "Tautulli/Tautulli",
|
"repo": "Tautulli/Tautulli",
|
||||||
"version": "v2.16.0",
|
"version": "v2.16.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-09-09T01:05:45Z"
|
"date": "2026-02-15T20:40:37Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "teddycloud",
|
"slug": "teddycloud",
|
||||||
@@ -1481,9 +1502,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "tracearr",
|
"slug": "tracearr",
|
||||||
"repo": "connorgallopo/Tracearr",
|
"repo": "connorgallopo/Tracearr",
|
||||||
"version": "v1.4.17",
|
"version": "v1.4.18",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T01:33:21Z"
|
"date": "2026-02-15T19:55:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "tracktor",
|
"slug": "tracktor",
|
||||||
@@ -1698,9 +1719,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "yubal",
|
"slug": "yubal",
|
||||||
"repo": "guillevc/yubal",
|
"repo": "guillevc/yubal",
|
||||||
"version": "v0.5.0",
|
"version": "v0.6.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T22:11:32Z"
|
"date": "2026-02-15T17:47:56Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "zigbee2mqtt",
|
"slug": "zigbee2mqtt",
|
||||||
@@ -1719,16 +1740,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "zitadel",
|
"slug": "zitadel",
|
||||||
"repo": "zitadel/zitadel",
|
"repo": "zitadel/zitadel",
|
||||||
"version": "v4.10.1",
|
"version": "v4.11.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-30T06:52:53Z"
|
"date": "2026-02-16T09:48:38Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "zoraxy",
|
"slug": "zoraxy",
|
||||||
"repo": "tobychui/zoraxy",
|
"repo": "tobychui/zoraxy",
|
||||||
"version": "v3.3.1",
|
"version": "v3.3.2-rc1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-28T13:52:02Z"
|
"date": "2026-02-15T02:16:17Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "zwave-js-ui",
|
"slug": "zwave-js-ui",
|
||||||
|
|||||||
40
frontend/public/json/linkding.json
Normal file
40
frontend/public/json/linkding.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "linkding",
|
||||||
|
"slug": "linkding",
|
||||||
|
"categories": [
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"date_created": "2026-02-16",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 9090,
|
||||||
|
"documentation": "https://linkding.link/",
|
||||||
|
"website": "https://linkding.link/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/linkding.webp",
|
||||||
|
"config_path": "/opt/linkding/.env",
|
||||||
|
"description": "linkding is a self-hosted bookmark manager that is designed to be minimal, fast, and easy to set up. It features a clean UI, tag-based organization, bulk editing, Markdown notes, read it later functionality, sharing, REST API, and browser extensions for Firefox and Chrome.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/linkding.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "admin",
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Admin credentials are stored in /opt/linkding/.env",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 4,
|
"cpu": 4,
|
||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 35,
|
"hdd": 40,
|
||||||
"os": "Ubuntu",
|
"os": "Ubuntu",
|
||||||
"version": "24.04"
|
"version": "24.04"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Valid TLS certificates and fully-qualified domain names behind a reverse proxy (Caddy) for 3 services - OpenCloud, Collabora, and WOPI are **REQUIRED**",
|
"text": "Valid TLS certificates and fully-qualified domain names behind a reverse proxy (Caddy) for 3 services - OpenCloud (port: 9200), Collabora (port: 9980), and WOPI (port: 9300) are **REQUIRED**",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 4,
|
"cpu": 4,
|
||||||
"ram": 8192,
|
"ram": 8192,
|
||||||
"hdd": 25,
|
"hdd": 50,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3399,
|
"interface_port": 3000,
|
||||||
"documentation": "https://docs.patchmon.net",
|
"documentation": "https://docs.patchmon.net",
|
||||||
"website": "https://patchmon.net",
|
"website": "https://patchmon.net",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/patchmon.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/patchmon.webp",
|
||||||
|
|||||||
35
frontend/public/json/romm.json
Normal file
35
frontend/public/json/romm.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "RomM",
|
||||||
|
"slug": "romm",
|
||||||
|
"categories": [
|
||||||
|
24
|
||||||
|
],
|
||||||
|
"date_created": "2026-02-16",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://docs.romm.app/latest/",
|
||||||
|
"website": "https://romm.app/",
|
||||||
|
"config_path": "/opt/romm/.env",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/romm.webp",
|
||||||
|
"description": "RomM (ROM Manager) allows you to scan, enrich, browse and play your game collection with a clean and responsive interface. Support for multiple platforms, various naming schemes, and custom tags.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/romm.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 4096,
|
||||||
|
"hdd": 20,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
"categories": [
|
"categories": [
|
||||||
13
|
13
|
||||||
],
|
],
|
||||||
"date_created": "2026-01-19",
|
"date_created": "2026-02-15",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
|
|||||||
@@ -1,35 +1,40 @@
|
|||||||
{
|
{
|
||||||
"name": "Wishlist",
|
"name": "Wishlist",
|
||||||
"slug": "wishlist",
|
"slug": "wishlist",
|
||||||
"categories": [
|
"categories": [
|
||||||
12
|
12
|
||||||
],
|
],
|
||||||
"date_created": "2026-02-04",
|
"date_created": "2026-02-04",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3280,
|
"interface_port": 3280,
|
||||||
"documentation": "https://github.com/cmintey/wishlist/blob/main/README.md#getting-started",
|
"documentation": "https://github.com/cmintey/wishlist/blob/main/README.md#getting-started",
|
||||||
"config_path": "/opt/wishlist/.env",
|
"website": "https://github.com/cmintey/wishlist",
|
||||||
"website": "https://github.com/cmintey/wishlist",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cmintey-wishlist.webp",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cmintey-wishlist.webp",
|
"config_path": "/opt/wishlist/.env",
|
||||||
"description": "Wishlist is a self-hosted wishlist application that you can share with your friends and family. You no longer have to wonder what to get your family for the holidays, simply check their wishlist and claim any available item!",
|
"description": "Wishlist is a self-hosted wishlist application that you can share with your friends and family. You no longer have to wonder what to get your family for the holidays, simply check their wishlist and claim any available item!",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/wishlist.sh",
|
"script": "ct/wishlist.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 5,
|
"hdd": 5,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "When using a reverse proxy with this script, please edit the`ORIGIN` value in `/opt/wishlist/.env` to point to your new URL, otherwise creating an admin account or logging in will not work.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $STD apk add --no-cache \
|
|||||||
libc6-compat
|
libc6-compat
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1)
|
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | awk 'NR==1')
|
||||||
msg_info "Installing Teamspeak Server v${RELEASE}"
|
msg_info "Installing Teamspeak Server v${RELEASE}"
|
||||||
mkdir -p /opt/teamspeak-server
|
mkdir -p /opt/teamspeak-server
|
||||||
cd /opt/teamspeak-server
|
cd /opt/teamspeak-server
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ msg_info "Setup CryptPad"
|
|||||||
cd /opt/cryptpad
|
cd /opt/cryptpad
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run install:components
|
$STD npm run install:components
|
||||||
$STD npm run build
|
|
||||||
cp config/config.example.js config/config.js
|
|
||||||
sed -i "51s/localhost/${LOCAL_IP}/g" /opt/cryptpad/config/config.js
|
|
||||||
sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/config/config.js
|
|
||||||
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
|
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
|
||||||
$STD bash -c "./install-onlyoffice.sh --accept-license"
|
$STD bash -c "./install-onlyoffice.sh --accept-license"
|
||||||
fi
|
fi
|
||||||
|
cp config/config.example.js config/config.js
|
||||||
|
sed -i "51s/localhost/${LOCAL_IP}/g" /opt/cryptpad/config/config.js
|
||||||
|
sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/config/config.js
|
||||||
|
$STD npm run build
|
||||||
msg_ok "Setup CryptPad"
|
msg_ok "Setup CryptPad"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
23
install/ebusd-install.sh
Normal file
23
install/ebusd-install.sh
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Joerg Heinemann (heinemannj)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/john30/ebusd
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing ebusd"
|
||||||
|
fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "" "ebusd-*_amd64-trixie_mqtt1.deb"
|
||||||
|
systemctl enable -q ebusd
|
||||||
|
msg_ok "Installed ebusd"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
126
install/linkding-install.sh
Normal file
126
install/linkding-install.sh
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (MickLesk)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://linkding.link/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
build-essential \
|
||||||
|
pkg-config \
|
||||||
|
python3-dev \
|
||||||
|
nginx \
|
||||||
|
libpq-dev \
|
||||||
|
libicu-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
libffi-dev
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
setup_uv
|
||||||
|
fetch_and_deploy_gh_release "linkding" "sissbruecker/linkding"
|
||||||
|
|
||||||
|
msg_info "Building Frontend"
|
||||||
|
cd /opt/linkding
|
||||||
|
$STD npm ci
|
||||||
|
$STD npm run build
|
||||||
|
ln -sf /usr/lib/x86_64-linux-gnu/mod_icu.so /opt/linkding/libicu.so
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
|
msg_info "Setting up LinkDing"
|
||||||
|
rm -f bookmarks/settings/dev.py
|
||||||
|
touch bookmarks/settings/custom.py
|
||||||
|
$STD uv sync --no-dev --frozen
|
||||||
|
$STD uv pip install gunicorn
|
||||||
|
mkdir -p data/{favicons,previews,assets}
|
||||||
|
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
|
cat <<EOF >/opt/linkding/.env
|
||||||
|
LD_SUPERUSER_NAME=admin
|
||||||
|
LD_SUPERUSER_PASSWORD=${ADMIN_PASS}
|
||||||
|
LD_CSRF_TRUSTED_ORIGINS=http://${LOCAL_IP}:9090
|
||||||
|
EOF
|
||||||
|
set -a && source /opt/linkding/.env && set +a
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py generate_secret_key
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py migrate
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py enable_wal
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py create_initial_superuser
|
||||||
|
$STD /opt/linkding/.venv/bin/python manage.py collectstatic --no-input
|
||||||
|
msg_ok "Set up LinkDing"
|
||||||
|
|
||||||
|
msg_info "Creating Services"
|
||||||
|
cat <<EOF >/etc/systemd/system/linkding.service
|
||||||
|
[Unit]
|
||||||
|
Description=linkding Bookmark Manager
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/linkding
|
||||||
|
EnvironmentFile=/opt/linkding/.env
|
||||||
|
ExecStart=/opt/linkding/.venv/bin/gunicorn \
|
||||||
|
--bind 127.0.0.1:8000 \
|
||||||
|
--workers 3 \
|
||||||
|
--threads 2 \
|
||||||
|
--timeout 120 \
|
||||||
|
bookmarks.wsgi:application
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
cat <<EOF >/etc/systemd/system/linkding-tasks.service
|
||||||
|
[Unit]
|
||||||
|
Description=linkding Background Tasks
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/linkding
|
||||||
|
EnvironmentFile=/opt/linkding/.env
|
||||||
|
ExecStart=/opt/linkding/.venv/bin/python manage.py run_huey
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
cat <<'EOF' >/etc/nginx/sites-available/linkding
|
||||||
|
server {
|
||||||
|
listen 9090;
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
client_max_body_size 20M;
|
||||||
|
|
||||||
|
location /static/ {
|
||||||
|
alias /opt/linkding/static/;
|
||||||
|
expires 30d;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://127.0.0.1:8000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
$STD rm -f /etc/nginx/sites-enabled/default
|
||||||
|
$STD ln -sf /etc/nginx/sites-available/linkding /etc/nginx/sites-enabled/linkding
|
||||||
|
systemctl enable -q --now nginx linkding linkding-tasks
|
||||||
|
systemctl restart nginx
|
||||||
|
msg_ok "Created Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -27,162 +27,42 @@ PG_DB_NAME="patchmon_db" PG_DB_USER="patchmon_usr" setup_postgresql_db
|
|||||||
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
|
||||||
|
|
||||||
msg_info "Configuring PatchMon"
|
msg_info "Configuring PatchMon"
|
||||||
cd /opt/patchmon
|
VERSION=$(get_latest_github_release "PatchMon/PatchMon")
|
||||||
export NODE_ENV=production
|
export NODE_ENV=production
|
||||||
|
cd /opt/patchmon
|
||||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
||||||
cd /opt/patchmon/backend
|
|
||||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
|
|
||||||
cd /opt/patchmon/frontend
|
cd /opt/patchmon/frontend
|
||||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
|
cat <<EOF >./.env
|
||||||
$STD npm run build
|
VITE_API_URL=http://${LOCAL_IP}:3001/api/v1
|
||||||
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
|
|
||||||
cat <<EOF >/opt/patchmon/backend/.env
|
|
||||||
# Database Configuration
|
|
||||||
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
|
|
||||||
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
|
|
||||||
PM_DB_CONN_WAIT_INTERVAL=2
|
|
||||||
|
|
||||||
# JWT Configuration
|
|
||||||
JWT_SECRET="$JWT_SECRET"
|
|
||||||
JWT_EXPIRES_IN=1h
|
|
||||||
JWT_REFRESH_EXPIRES_IN=7d
|
|
||||||
|
|
||||||
# Server Configuration
|
|
||||||
PORT=3399
|
|
||||||
NODE_ENV=production
|
|
||||||
|
|
||||||
# API Configuration
|
|
||||||
API_VERSION=v1
|
|
||||||
|
|
||||||
# CORS Configuration
|
|
||||||
CORS_ORIGIN="http://$LOCAL_IP"
|
|
||||||
|
|
||||||
# Session Configuration
|
|
||||||
SESSION_INACTIVITY_TIMEOUT_MINUTES=30
|
|
||||||
|
|
||||||
# User Configuration
|
|
||||||
DEFAULT_USER_ROLE=user
|
|
||||||
|
|
||||||
# Rate Limiting (times in milliseconds)
|
|
||||||
RATE_LIMIT_WINDOW_MS=900000
|
|
||||||
RATE_LIMIT_MAX=5000
|
|
||||||
AUTH_RATE_LIMIT_WINDOW_MS=600000
|
|
||||||
AUTH_RATE_LIMIT_MAX=500
|
|
||||||
AGENT_RATE_LIMIT_WINDOW_MS=60000
|
|
||||||
AGENT_RATE_LIMIT_MAX=1000
|
|
||||||
|
|
||||||
# Redis Configuration
|
|
||||||
REDIS_HOST=localhost
|
|
||||||
REDIS_PORT=6379
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
LOG_LEVEL=info
|
|
||||||
ENABLE_LOGGING=true
|
|
||||||
|
|
||||||
# TFA Configuration
|
|
||||||
TFA_REMEMBER_ME_EXPIRES_IN=30d
|
|
||||||
TFA_MAX_REMEMBER_SESSIONS=5
|
|
||||||
TFA_SUSPICIOUS_ACTIVITY_THRESHOLD=3
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/opt/patchmon/frontend/.env
|
|
||||||
VITE_API_URL=http://$LOCAL_IP/api/v1
|
|
||||||
VITE_APP_NAME=PatchMon
|
VITE_APP_NAME=PatchMon
|
||||||
VITE_APP_VERSION=1.3.0
|
VITE_APP_VERSION=${VERSION}
|
||||||
EOF
|
EOF
|
||||||
|
$STD npm install --no-audit --no-fund --no-save --ignore-scripts --include=dev
|
||||||
|
$STD npm run build
|
||||||
|
|
||||||
|
JWT_SECRET="$(openssl rand -hex 64)"
|
||||||
|
mv /opt/patchmon/backend/env.example /opt/patchmon/backend/.env
|
||||||
|
sed -i -e "s|DATABASE_URL=.*|DATABASE_URL=\"postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME\"|" \
|
||||||
|
-e "/JWT_SECRET/s/[=$].*/=$JWT_SECRET/" \
|
||||||
|
-e "\|CORS_ORIGIN|s|localhost|$LOCAL_IP|" \
|
||||||
|
-e "/PORT=3001/aSERVER_PROTOCOL=http \\
|
||||||
|
SERVER_HOST=$LOCAL_IP \\
|
||||||
|
SERVER_PORT=3000" \
|
||||||
|
-e '/_ENV=production/aTRUST_PROXY=1' \
|
||||||
|
-e '/REDIS_USER=.*/,+1d' /opt/patchmon/backend/.env
|
||||||
|
|
||||||
cd /opt/patchmon/backend
|
cd /opt/patchmon/backend
|
||||||
|
$STD npm run db:generate
|
||||||
$STD npx prisma migrate deploy
|
$STD npx prisma migrate deploy
|
||||||
$STD npx prisma generate
|
|
||||||
msg_ok "Configured PatchMon"
|
msg_ok "Configured PatchMon"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
cat <<EOF >/etc/nginx/sites-available/patchmon.conf
|
cp /opt/patchmon/docker/nginx.conf.template /etc/nginx/sites-available/patchmon.conf
|
||||||
map \$http_x_forwarded_proto \$proxy_corrected_scheme {
|
sed -i -e 's|proxy_pass .*|proxy_pass http://127.0.0.1:3001;|' \
|
||||||
default \$scheme; # Fallback to Nginx's actual connection scheme if no X-Forwarded-Proto header was set
|
-e '\|try_files |i\ root /opt/patchmon/frontend/dist;' \
|
||||||
https https; # If X-Forwarded-Proto is 'https', use 'https'
|
-e 's|alias.*|alias /opt/patchmon/frontend/dist/assets;|' \
|
||||||
http http; # If X-Forwarded-Proto is 'http', use 'http'
|
-e '\|expires 1y|i\ root /opt/patchmon/frontend/dist;' /etc/nginx/sites-available/patchmon.conf
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
# Listen on both IPv4 and IPv6 (with all hostnames)
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
|
|
||||||
# Security headers
|
|
||||||
add_header X-Frame-Options DENY always;
|
|
||||||
add_header X-Content-Type-Options nosniff always;
|
|
||||||
add_header X-XSS-Protection "1; mode=block" always;
|
|
||||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
|
||||||
|
|
||||||
# Frontend
|
|
||||||
location / {
|
|
||||||
root /opt/patchmon/frontend/dist;
|
|
||||||
try_files \$uri \$uri/ /index.html;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Bull Board proxy
|
|
||||||
location /bullboard {
|
|
||||||
proxy_pass http://127.0.0.1:3399;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade \$http_upgrade;
|
|
||||||
proxy_set_header Connection 'upgrade';
|
|
||||||
proxy_set_header Host \$host;
|
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto \$proxy_corrected_scheme;
|
|
||||||
proxy_set_header X-Forwarded-Host \$host;
|
|
||||||
proxy_set_header Cookie \$http_cookie;
|
|
||||||
proxy_cache_bypass \$http_upgrade;
|
|
||||||
proxy_read_timeout 300s;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
# Enable cookie passthrough
|
|
||||||
proxy_pass_header Set-Cookie;
|
|
||||||
proxy_cookie_path / /;
|
|
||||||
|
|
||||||
# Preserve original client IP
|
|
||||||
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
|
|
||||||
if (\$request_method = 'OPTIONS') {
|
|
||||||
return 204;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# API proxy
|
|
||||||
location /api/ {
|
|
||||||
proxy_pass http://127.0.0.1:3399;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade \$http_upgrade;
|
|
||||||
proxy_set_header Connection 'upgrade';
|
|
||||||
proxy_set_header Host \$host;
|
|
||||||
proxy_set_header X-Real-IP \$remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto \$proxy_corrected_scheme;
|
|
||||||
proxy_cache_bypass \$http_upgrade;
|
|
||||||
proxy_read_timeout 300s;
|
|
||||||
proxy_connect_timeout 75s;
|
|
||||||
|
|
||||||
# Preserve original client IP
|
|
||||||
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
|
|
||||||
if (\$request_method = 'OPTIONS') {
|
|
||||||
return 204;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Static assets caching (exclude Bull Board assets)
|
|
||||||
location ~* ^/(?!bullboard).*\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
|
||||||
root /opt/patchmon/frontend/dist;
|
|
||||||
expires 1y;
|
|
||||||
add_header Cache-Control "public, immutable";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Health check endpoint
|
|
||||||
location /health {
|
|
||||||
proxy_pass http://127.0.0.1:3399/health;
|
|
||||||
access_log off;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
|
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
rm -f /etc/nginx/sites-enabled/default
|
||||||
$STD nginx -t
|
$STD nginx -t
|
||||||
@@ -198,7 +78,7 @@ After=network.target postgresql.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/patchmon/backend
|
WorkingDirectory=/opt/patchmon/backend
|
||||||
ExecStart=/usr/bin/node src/server.js
|
ExecStart=/usr/bin/npm run start
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
Environment=NODE_ENV=production
|
Environment=NODE_ENV=production
|
||||||
@@ -215,57 +95,6 @@ EOF
|
|||||||
systemctl enable -q --now patchmon-server
|
systemctl enable -q --now patchmon-server
|
||||||
msg_ok "Created and started service"
|
msg_ok "Created and started service"
|
||||||
|
|
||||||
msg_info "Updating settings"
|
|
||||||
cat <<EOF >/opt/patchmon/backend/update-settings.js
|
|
||||||
const { PrismaClient } = require('@prisma/client');
|
|
||||||
const { v4: uuidv4 } = require('uuid');
|
|
||||||
const prisma = new PrismaClient();
|
|
||||||
|
|
||||||
async function updateSettings() {
|
|
||||||
try {
|
|
||||||
const existingSettings = await prisma.settings.findFirst();
|
|
||||||
|
|
||||||
const settingsData = {
|
|
||||||
id: uuidv4(),
|
|
||||||
server_url: 'http://$LOCAL_IP',
|
|
||||||
server_protocol: 'http',
|
|
||||||
server_host: '$LOCAL_IP',
|
|
||||||
server_port: 3399,
|
|
||||||
update_interval: 60,
|
|
||||||
auto_update: true,
|
|
||||||
signup_enabled: false,
|
|
||||||
ignore_ssl_self_signed: false,
|
|
||||||
updated_at: new Date()
|
|
||||||
};
|
|
||||||
|
|
||||||
if (existingSettings) {
|
|
||||||
// Update existing settings
|
|
||||||
await prisma.settings.update({
|
|
||||||
where: { id: existingSettings.id },
|
|
||||||
data: settingsData
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// Create new settings record
|
|
||||||
await prisma.settings.create({
|
|
||||||
data: settingsData
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('✅ Database settings updated successfully');
|
|
||||||
} catch (error) {
|
|
||||||
console.error('❌ Error updating settings:', error.message);
|
|
||||||
process.exit(1);
|
|
||||||
} finally {
|
|
||||||
await prisma.\$disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateSettings();
|
|
||||||
EOF
|
|
||||||
cd /opt/patchmon/backend
|
|
||||||
$STD node update-settings.js
|
|
||||||
msg_ok "Settings updated successfully"
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
cleanup_lxc
|
cleanup_lxc
|
||||||
|
|||||||
344
install/romm-install.sh
Normal file
344
install/romm-install.sh
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ) | DevelopmentCats | AlphaLawless
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://romm.app
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
acl \
|
||||||
|
git \
|
||||||
|
build-essential \
|
||||||
|
libssl-dev \
|
||||||
|
libffi-dev \
|
||||||
|
libmagic-dev \
|
||||||
|
python3-dev \
|
||||||
|
python3-pip \
|
||||||
|
python3-venv \
|
||||||
|
libmariadb3 \
|
||||||
|
libmariadb-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libbz2-dev \
|
||||||
|
libreadline-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
liblzma-dev \
|
||||||
|
libncurses5-dev \
|
||||||
|
libncursesw5-dev \
|
||||||
|
redis-server \
|
||||||
|
redis-tools \
|
||||||
|
p7zip-full \
|
||||||
|
tzdata \
|
||||||
|
nginx
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
setup_mariadb
|
||||||
|
MARIADB_DB_NAME="romm" MARIADB_DB_USER="romm" setup_mariadb_db
|
||||||
|
|
||||||
|
msg_info "Creating directories"
|
||||||
|
mkdir -p /opt/romm \
|
||||||
|
/var/lib/romm/config \
|
||||||
|
/var/lib/romm/resources \
|
||||||
|
/var/lib/romm/assets/{saves,states,screenshots} \
|
||||||
|
/var/lib/romm/library/roms \
|
||||||
|
/var/lib/romm/library/bios
|
||||||
|
msg_ok "Created directories"
|
||||||
|
|
||||||
|
msg_info "Creating configuration file"
|
||||||
|
cat <<'EOF' >/var/lib/romm/config/config.yml
|
||||||
|
# RomM Configuration File
|
||||||
|
# Documentation: https://docs.romm.app/latest/Getting-Started/Configuration-File/
|
||||||
|
# Only uncomment the lines you want to use/modify
|
||||||
|
|
||||||
|
# exclude:
|
||||||
|
# platforms:
|
||||||
|
# - excluded_folder_a
|
||||||
|
# roms:
|
||||||
|
# single_file:
|
||||||
|
# extensions:
|
||||||
|
# - xml
|
||||||
|
# - txt
|
||||||
|
# names:
|
||||||
|
# - '._*'
|
||||||
|
# - '*.nfo'
|
||||||
|
# multi_file:
|
||||||
|
# names:
|
||||||
|
# - downloaded_media
|
||||||
|
# - media
|
||||||
|
|
||||||
|
# system:
|
||||||
|
# platforms:
|
||||||
|
# gc: ngc
|
||||||
|
# ps1: psx
|
||||||
|
|
||||||
|
# The folder name where your roms are located (relative to library path)
|
||||||
|
# filesystem:
|
||||||
|
# roms_folder: 'roms'
|
||||||
|
|
||||||
|
# scan:
|
||||||
|
# priority:
|
||||||
|
# metadata:
|
||||||
|
# - "igdb"
|
||||||
|
# - "moby"
|
||||||
|
# - "ss"
|
||||||
|
# - "ra"
|
||||||
|
# artwork:
|
||||||
|
# - "igdb"
|
||||||
|
# - "moby"
|
||||||
|
# - "ss"
|
||||||
|
# region:
|
||||||
|
# - "us"
|
||||||
|
# - "eu"
|
||||||
|
# - "jp"
|
||||||
|
# language:
|
||||||
|
# - "en"
|
||||||
|
# media:
|
||||||
|
# - box2d
|
||||||
|
# - box3d
|
||||||
|
# - screenshot
|
||||||
|
# - manual
|
||||||
|
|
||||||
|
# emulatorjs:
|
||||||
|
# debug: false
|
||||||
|
# cache_limit: null
|
||||||
|
EOF
|
||||||
|
chmod 644 /var/lib/romm/config/config.yml
|
||||||
|
msg_ok "Created configuration file"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "RAHasher" "RetroAchievements/RALibretro" "prebuild" "latest" "/opt/RALibretro" "RAHasher-x64-Linux-*.zip"
|
||||||
|
cp /opt/RALibretro/RAHasher /usr/bin/RAHasher
|
||||||
|
chmod +x /usr/bin/RAHasher
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "romm" "rommapp/romm"
|
||||||
|
|
||||||
|
msg_info "Creating environment file"
|
||||||
|
sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf
|
||||||
|
systemctl restart redis-server
|
||||||
|
systemctl enable -q --now redis-server
|
||||||
|
AUTH_SECRET_KEY=$(openssl rand -hex 32)
|
||||||
|
|
||||||
|
cat <<EOF >/opt/romm/.env
|
||||||
|
ROMM_BASE_PATH=/var/lib/romm
|
||||||
|
ROMM_CONFIG_PATH=/var/lib/romm/config/config.yml
|
||||||
|
WEB_CONCURRENCY=4
|
||||||
|
|
||||||
|
DB_HOST=127.0.0.1
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_NAME=$MARIADB_DB_NAME
|
||||||
|
DB_USER=$MARIADB_DB_USER
|
||||||
|
DB_PASSWD=$MARIADB_DB_PASS
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
ROMM_AUTH_SECRET_KEY=$AUTH_SECRET_KEY
|
||||||
|
DISABLE_DOWNLOAD_ENDPOINT_AUTH=false
|
||||||
|
DISABLE_CSRF_PROTECTION=false
|
||||||
|
|
||||||
|
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true
|
||||||
|
RESCAN_ON_FILESYSTEM_CHANGE_DELAY=5
|
||||||
|
|
||||||
|
ENABLE_SCHEDULED_RESCAN=true
|
||||||
|
SCHEDULED_RESCAN_CRON=0 3 * * *
|
||||||
|
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB=true
|
||||||
|
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON=0 4 * * *
|
||||||
|
|
||||||
|
LOGLEVEL=INFO
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 600 /opt/romm/.env
|
||||||
|
msg_ok "Created environment file"
|
||||||
|
|
||||||
|
msg_info "Setting up RomM Backend"
|
||||||
|
cd /opt/romm
|
||||||
|
export UV_CONCURRENT_DOWNLOADS=1
|
||||||
|
$STD uv sync --all-extras
|
||||||
|
cd /opt/romm/backend
|
||||||
|
$STD uv run alembic upgrade head
|
||||||
|
msg_ok "Set up RomM Backend"
|
||||||
|
|
||||||
|
msg_info "Setting up RomM Frontend"
|
||||||
|
cd /opt/romm/frontend
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run build
|
||||||
|
|
||||||
|
cp -rf /opt/romm/frontend/assets/* /opt/romm/frontend/dist/assets/
|
||||||
|
|
||||||
|
mkdir -p /opt/romm/frontend/dist/assets/romm
|
||||||
|
ln -sfn /var/lib/romm/resources /opt/romm/frontend/dist/assets/romm/resources
|
||||||
|
ln -sfn /var/lib/romm/assets /opt/romm/frontend/dist/assets/romm/assets
|
||||||
|
msg_ok "Set up RomM Frontend"
|
||||||
|
|
||||||
|
msg_info "Configuring Nginx"
|
||||||
|
cat <<'EOF' >/etc/nginx/sites-available/romm
|
||||||
|
upstream romm_backend {
|
||||||
|
server 127.0.0.1:5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
map $http_upgrade $connection_upgrade {
|
||||||
|
default upgrade;
|
||||||
|
'' close;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
root /opt/romm/frontend/dist;
|
||||||
|
client_max_body_size 0;
|
||||||
|
|
||||||
|
# Frontend SPA
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Static assets
|
||||||
|
location /assets {
|
||||||
|
alias /opt/romm/frontend/dist/assets;
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
|
|
||||||
|
# EmulatorJS player - requires COOP/COEP headers for SharedArrayBuffer
|
||||||
|
location ~ ^/rom/.*/ejs$ {
|
||||||
|
add_header Cross-Origin-Embedder-Policy "require-corp";
|
||||||
|
add_header Cross-Origin-Opener-Policy "same-origin";
|
||||||
|
try_files $uri /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Backend API
|
||||||
|
location /api {
|
||||||
|
proxy_pass http://romm_backend;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_request_buffering off;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
# WebSocket and Netplay
|
||||||
|
location ~ ^/(ws|netplay) {
|
||||||
|
proxy_pass http://romm_backend;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $connection_upgrade;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_read_timeout 86400;
|
||||||
|
}
|
||||||
|
|
||||||
|
# OpenAPI docs
|
||||||
|
location = /openapi.json {
|
||||||
|
proxy_pass http://romm_backend;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Internal library file serving
|
||||||
|
location /library/ {
|
||||||
|
internal;
|
||||||
|
alias /var/lib/romm/library/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
rm -f /etc/nginx/sites-enabled/default
|
||||||
|
ln -sf /etc/nginx/sites-available/romm /etc/nginx/sites-enabled/romm
|
||||||
|
systemctl restart nginx
|
||||||
|
systemctl enable -q --now nginx
|
||||||
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
|
msg_info "Creating Services"
|
||||||
|
cat <<EOF >/etc/systemd/system/romm-backend.service
|
||||||
|
[Unit]
|
||||||
|
Description=RomM Backend
|
||||||
|
After=network.target mariadb.service redis-server.service
|
||||||
|
Requires=mariadb.service redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/romm/backend
|
||||||
|
EnvironmentFile=/opt/romm/.env
|
||||||
|
Environment="PYTHONPATH=/opt/romm"
|
||||||
|
ExecStart=/opt/romm/.venv/bin/python main.py
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/romm-worker.service
|
||||||
|
[Unit]
|
||||||
|
Description=RomM RQ Worker
|
||||||
|
After=network.target mariadb.service redis-server.service romm-backend.service
|
||||||
|
Requires=mariadb.service redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/romm/backend
|
||||||
|
EnvironmentFile=/opt/romm/.env
|
||||||
|
Environment="PYTHONPATH=/opt/romm/backend"
|
||||||
|
ExecStart=/opt/romm/.venv/bin/rq worker --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/romm-scheduler.service
|
||||||
|
[Unit]
|
||||||
|
Description=RomM RQ Scheduler
|
||||||
|
After=network.target mariadb.service redis-server.service romm-backend.service
|
||||||
|
Requires=mariadb.service redis-server.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/romm/backend
|
||||||
|
EnvironmentFile=/opt/romm/.env
|
||||||
|
Environment="PYTHONPATH=/opt/romm/backend"
|
||||||
|
Environment="RQ_REDIS_HOST=127.0.0.1"
|
||||||
|
Environment="RQ_REDIS_PORT=6379"
|
||||||
|
ExecStart=/opt/romm/.venv/bin/rqscheduler --path /opt/romm/backend
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/romm-watcher.service
|
||||||
|
[Unit]
|
||||||
|
Description=RomM Filesystem Watcher
|
||||||
|
After=network.target romm-backend.service
|
||||||
|
Requires=romm-backend.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/romm/backend
|
||||||
|
EnvironmentFile=/opt/romm/.env
|
||||||
|
Environment="PYTHONPATH=/opt/romm/backend"
|
||||||
|
ExecStart=/opt/romm/.venv/bin/watchfiles --target-type command '/opt/romm/.venv/bin/python watcher.py' /var/lib/romm/library
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl enable -q --now romm-backend romm-worker romm-scheduler romm-watcher
|
||||||
|
msg_ok "Created Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -29,6 +29,7 @@ $STD uv venv --clear
|
|||||||
$STD source /opt/Tautulli/.venv/bin/activate
|
$STD source /opt/Tautulli/.venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
$STD uv pip install pyopenssl
|
$STD uv pip install pyopenssl
|
||||||
|
$STD uv pip install "setuptools<81"
|
||||||
msg_ok "Installed Tautulli"
|
msg_ok "Installed Tautulli"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ SECRET="$(openssl rand -hex 64)"
|
|||||||
sed -e '/^NODE_ENV=/s/=.*$/=production/' \
|
sed -e '/^NODE_ENV=/s/=.*$/=production/' \
|
||||||
-e 's/^TUDUDI_USER/# TUDUDI_USER/g' \
|
-e 's/^TUDUDI_USER/# TUDUDI_USER/g' \
|
||||||
-e "/_SECRET=/s/=.*$/=${SECRET}/" \
|
-e "/_SECRET=/s/=.*$/=${SECRET}/" \
|
||||||
-e "/^# DB_FILE/s/^# //; \
|
-e '/^# DB_FILE=/s/^# //' \
|
||||||
\|DB_FILE|s|/path.*$|${DB_LOCATION}/production.sqlite3|" \
|
-e "s|^DB_FILE=.*|DB_FILE=${DB_LOCATION}/production.sqlite3|" \
|
||||||
-e "/^# TUDUDI_ALLOWED/s/^# //; \
|
-e "/^# TUDUDI_ALLOWED/s/^# //; \
|
||||||
\|_ORIGINS=|s|=.*$|=<your tududi IP or FDQN>|" \
|
\|_ORIGINS=|s|=.*$|=<your tududi IP or FDQN>|" \
|
||||||
-e "/^# TUDUDI_UPLOAD/s/^# //; \
|
-e "/^# TUDUDI_UPLOAD/s/^# //; \
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ fetch_and_deploy_gh_release "vaultwarden" "dani-garcia/vaultwarden" "tarball" "l
|
|||||||
|
|
||||||
msg_info "Building Vaultwarden (Patience)"
|
msg_info "Building Vaultwarden (Patience)"
|
||||||
cd /tmp/vaultwarden-src
|
cd /tmp/vaultwarden-src
|
||||||
|
VW_VERSION=$(get_latest_github_release "dani-garcia/vaultwarden")
|
||||||
|
export VW_VERSION
|
||||||
$STD cargo build --features "sqlite,mysql,postgresql" --release
|
$STD cargo build --features "sqlite,mysql,postgresql" --release
|
||||||
msg_ok "Built Vaultwarden"
|
msg_ok "Built Vaultwarden"
|
||||||
|
|
||||||
|
|||||||
@@ -34,42 +34,6 @@ EOF
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
set -Eeuo pipefail
|
|
||||||
trap 'error_handler $? $LINENO "$BASH_COMMAND"' ERR
|
|
||||||
trap on_exit EXIT
|
|
||||||
trap on_interrupt INT
|
|
||||||
trap on_terminate TERM
|
|
||||||
|
|
||||||
error_handler() {
|
|
||||||
local exit_code="$1"
|
|
||||||
local line_number="$2"
|
|
||||||
local command="$3"
|
|
||||||
|
|
||||||
if [[ "$exit_code" -eq 0 ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "\e[?25h"
|
|
||||||
echo -e "\n${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}\n"
|
|
||||||
exit "$exit_code"
|
|
||||||
}
|
|
||||||
|
|
||||||
on_exit() {
|
|
||||||
local exit_code="$?"
|
|
||||||
[[ -n "${lockfile:-}" && -e "$lockfile" ]] && rm -f "$lockfile"
|
|
||||||
exit "$exit_code"
|
|
||||||
}
|
|
||||||
|
|
||||||
on_interrupt() {
|
|
||||||
echo -e "\n${RD}Interrupted by user (SIGINT)${CL}"
|
|
||||||
exit 130
|
|
||||||
}
|
|
||||||
|
|
||||||
on_terminate() {
|
|
||||||
echo -e "\n${RD}Terminated by signal (SIGTERM)${CL}"
|
|
||||||
exit 143
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection
|
# This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection
|
||||||
setting_up_container() {
|
setting_up_container() {
|
||||||
msg_info "Setting up Container OS"
|
msg_info "Setting up Container OS"
|
||||||
|
|||||||
@@ -34,11 +34,19 @@ net_resolves() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ensure_usr_local_bin_persist() {
|
ensure_usr_local_bin_persist() {
|
||||||
|
# Login shells: /etc/profile.d/
|
||||||
local PROFILE_FILE="/etc/profile.d/10-localbin.sh"
|
local PROFILE_FILE="/etc/profile.d/10-localbin.sh"
|
||||||
if [ ! -f "$PROFILE_FILE" ]; then
|
if [ ! -f "$PROFILE_FILE" ]; then
|
||||||
echo 'case ":$PATH:" in *:/usr/local/bin:*) ;; *) export PATH="/usr/local/bin:$PATH";; esac' >"$PROFILE_FILE"
|
echo 'case ":$PATH:" in *:/usr/local/bin:*) ;; *) export PATH="/usr/local/bin:$PATH";; esac' >"$PROFILE_FILE"
|
||||||
chmod +x "$PROFILE_FILE"
|
chmod +x "$PROFILE_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Non-login shells (pct enter): /root/.profile and /root/.bashrc
|
||||||
|
for rc_file in /root/.profile /root/.bashrc; do
|
||||||
|
if [ -f "$rc_file" ] && ! grep -q '/usr/local/bin' "$rc_file"; then
|
||||||
|
echo 'export PATH="/usr/local/bin:$PATH"' >>"$rc_file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
download_with_progress() {
|
download_with_progress() {
|
||||||
|
|||||||
@@ -91,8 +91,8 @@ detect_repo_source() {
|
|||||||
community-scripts/ProxmoxVED) REPO_SOURCE="ProxmoxVED" ;;
|
community-scripts/ProxmoxVED) REPO_SOURCE="ProxmoxVED" ;;
|
||||||
"")
|
"")
|
||||||
# No URL detected — use hardcoded fallback
|
# No URL detected — use hardcoded fallback
|
||||||
# CI sed transforms this on promotion: ProxmoxVED → ProxmoxVE
|
# This value must match the repo: ProxmoxVE for production, ProxmoxVED for dev
|
||||||
REPO_SOURCE="ProxmoxVED"
|
REPO_SOURCE="ProxmoxVE"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Fork or unknown repo
|
# Fork or unknown repo
|
||||||
@@ -135,19 +135,44 @@ explain_exit_code() {
|
|||||||
# --- Generic / Shell ---
|
# --- Generic / Shell ---
|
||||||
1) echo "General error / Operation not permitted" ;;
|
1) echo "General error / Operation not permitted" ;;
|
||||||
2) echo "Misuse of shell builtins (e.g. syntax error)" ;;
|
2) echo "Misuse of shell builtins (e.g. syntax error)" ;;
|
||||||
|
10) echo "Docker / privileged mode required (unsupported environment)" ;;
|
||||||
|
|
||||||
# --- curl / wget errors (commonly seen in downloads) ---
|
# --- curl / wget errors (commonly seen in downloads) ---
|
||||||
|
4) echo "curl: Feature not supported or protocol error" ;;
|
||||||
|
5) echo "curl: Could not resolve proxy" ;;
|
||||||
6) echo "curl: DNS resolution failed (could not resolve host)" ;;
|
6) echo "curl: DNS resolution failed (could not resolve host)" ;;
|
||||||
7) echo "curl: Failed to connect (network unreachable / host down)" ;;
|
7) echo "curl: Failed to connect (network unreachable / host down)" ;;
|
||||||
|
8) echo "curl: FTP server reply error" ;;
|
||||||
22) echo "curl: HTTP error returned (404, 429, 500+)" ;;
|
22) echo "curl: HTTP error returned (404, 429, 500+)" ;;
|
||||||
|
23) echo "curl: Write error (disk full or permissions)" ;;
|
||||||
|
25) echo "curl: Upload failed" ;;
|
||||||
28) echo "curl: Operation timeout (network slow or server not responding)" ;;
|
28) echo "curl: Operation timeout (network slow or server not responding)" ;;
|
||||||
|
30) echo "curl: FTP port command failed" ;;
|
||||||
35) echo "curl: SSL/TLS handshake failed (certificate error)" ;;
|
35) echo "curl: SSL/TLS handshake failed (certificate error)" ;;
|
||||||
|
56) echo "curl: Receive error (connection reset by peer)" ;;
|
||||||
|
75) echo "Temporary failure (retry later)" ;;
|
||||||
|
78) echo "curl: Remote file not found (404 on FTP/file)" ;;
|
||||||
|
|
||||||
# --- Package manager / APT / DPKG ---
|
# --- Package manager / APT / DPKG ---
|
||||||
100) echo "APT: Package manager error (broken packages / dependency problems)" ;;
|
100) echo "APT: Package manager error (broken packages / dependency problems)" ;;
|
||||||
101) echo "APT: Configuration error (bad sources.list, malformed config)" ;;
|
101) echo "APT: Configuration error (bad sources.list, malformed config)" ;;
|
||||||
102) echo "APT: Lock held by another process (dpkg/apt still running)" ;;
|
102) echo "APT: Lock held by another process (dpkg/apt still running)" ;;
|
||||||
|
|
||||||
|
# --- BSD sysexits.h (64-78) ---
|
||||||
|
64) echo "Usage error (wrong arguments)" ;;
|
||||||
|
65) echo "Data format error (bad input data)" ;;
|
||||||
|
66) echo "Input file not found (cannot open input)" ;;
|
||||||
|
67) echo "User not found (addressee unknown)" ;;
|
||||||
|
68) echo "Host not found (hostname unknown)" ;;
|
||||||
|
69) echo "Service unavailable" ;;
|
||||||
|
70) echo "Internal software error" ;;
|
||||||
|
71) echo "System error (OS-level failure)" ;;
|
||||||
|
72) echo "Critical OS file missing" ;;
|
||||||
|
73) echo "Cannot create output file" ;;
|
||||||
|
74) echo "I/O error" ;;
|
||||||
|
76) echo "Remote protocol error" ;;
|
||||||
|
77) echo "Permission denied" ;;
|
||||||
|
|
||||||
# --- Common shell/system errors ---
|
# --- Common shell/system errors ---
|
||||||
124) echo "Command timed out (timeout command)" ;;
|
124) echo "Command timed out (timeout command)" ;;
|
||||||
126) echo "Command invoked cannot execute (permission problem?)" ;;
|
126) echo "Command invoked cannot execute (permission problem?)" ;;
|
||||||
@@ -400,18 +425,19 @@ detect_cpu() {
|
|||||||
# - Detects RAM speed using dmidecode
|
# - Detects RAM speed using dmidecode
|
||||||
# - Sets RAM_SPEED global (e.g., "4800" for DDR5-4800)
|
# - Sets RAM_SPEED global (e.g., "4800" for DDR5-4800)
|
||||||
# - Requires root access for dmidecode
|
# - Requires root access for dmidecode
|
||||||
# - Returns empty if not available
|
# - Returns empty if not available or if speed is "Unknown" (nested VMs)
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
detect_ram() {
|
detect_ram() {
|
||||||
RAM_SPEED=""
|
RAM_SPEED=""
|
||||||
|
|
||||||
if command -v dmidecode &>/dev/null; then
|
if command -v dmidecode &>/dev/null; then
|
||||||
# Get configured memory speed (actual running speed)
|
# Get configured memory speed (actual running speed)
|
||||||
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Configured Memory Speed:" | grep -oE "[0-9]+" | head -1)
|
# Use || true to handle "Unknown" values in nested VMs (no numeric match)
|
||||||
|
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Configured Memory Speed:" | grep -oE "[0-9]+" | head -1) || true
|
||||||
|
|
||||||
# Fallback to Speed: if Configured not available
|
# Fallback to Speed: if Configured not available
|
||||||
if [[ -z "$RAM_SPEED" ]]; then
|
if [[ -z "$RAM_SPEED" ]]; then
|
||||||
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Speed:" | grep -oE "[0-9]+" | head -1)
|
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Speed:" | grep -oE "[0-9]+" | head -1) || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -623,6 +649,8 @@ EOF
|
|||||||
curl -fsS -m "${TELEMETRY_TIMEOUT}" -X POST "${TELEMETRY_URL}" \
|
curl -fsS -m "${TELEMETRY_TIMEOUT}" -X POST "${TELEMETRY_URL}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$JSON_PAYLOAD" &>/dev/null || true
|
-d "$JSON_PAYLOAD" &>/dev/null || true
|
||||||
|
|
||||||
|
POST_TO_API_DONE=true
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -5253,14 +5253,20 @@ ensure_log_on_host() {
|
|||||||
# - Exit trap handler for reporting to API telemetry
|
# - Exit trap handler for reporting to API telemetry
|
||||||
# - Captures exit code and reports to PocketBase using centralized error descriptions
|
# - Captures exit code and reports to PocketBase using centralized error descriptions
|
||||||
# - Uses explain_exit_code() from api.func for consistent error messages
|
# - Uses explain_exit_code() from api.func for consistent error messages
|
||||||
# - Posts failure status with exit code to API (error description resolved automatically)
|
# - For non-zero exit codes: posts "failed" status
|
||||||
# - Only executes on non-zero exit codes
|
# - For zero exit codes where post_update_to_api was never called:
|
||||||
|
# catches orphaned "installing" records (e.g., script exited cleanly
|
||||||
|
# but description() was never reached)
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
api_exit_script() {
|
api_exit_script() {
|
||||||
exit_code=$?
|
local exit_code=$?
|
||||||
if [ $exit_code -ne 0 ]; then
|
if [ $exit_code -ne 0 ]; then
|
||||||
ensure_log_on_host
|
ensure_log_on_host
|
||||||
post_update_to_api "failed" "$exit_code"
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
elif [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
# Script exited with 0 but never sent a completion status
|
||||||
|
# This catches edge cases like early returns after post_to_api()
|
||||||
|
post_update_to_api "failed" "1"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5268,5 +5274,5 @@ if command -v pveversion >/dev/null 2>&1; then
|
|||||||
trap 'api_exit_script' EXIT
|
trap 'api_exit_script' EXIT
|
||||||
fi
|
fi
|
||||||
trap 'ensure_log_on_host; post_update_to_api "failed" "$?"' ERR
|
trap 'ensure_log_on_host; post_update_to_api "failed" "$?"' ERR
|
||||||
trap 'ensure_log_on_host; post_update_to_api "failed" "130"' SIGINT
|
trap 'ensure_log_on_host; post_update_to_api "failed" "130"; exit 130' SIGINT
|
||||||
trap 'ensure_log_on_host; post_update_to_api "failed" "143"' SIGTERM
|
trap 'ensure_log_on_host; post_update_to_api "failed" "143"; exit 143' SIGTERM
|
||||||
|
|||||||
@@ -37,11 +37,34 @@ if ! declare -f explain_exit_code &>/dev/null; then
|
|||||||
case "$code" in
|
case "$code" in
|
||||||
1) echo "General error / Operation not permitted" ;;
|
1) echo "General error / Operation not permitted" ;;
|
||||||
2) echo "Misuse of shell builtins (e.g. syntax error)" ;;
|
2) echo "Misuse of shell builtins (e.g. syntax error)" ;;
|
||||||
|
10) echo "Docker / privileged mode required (unsupported environment)" ;;
|
||||||
|
4) echo "curl: Feature not supported or protocol error" ;;
|
||||||
|
5) echo "curl: Could not resolve proxy" ;;
|
||||||
6) echo "curl: DNS resolution failed (could not resolve host)" ;;
|
6) echo "curl: DNS resolution failed (could not resolve host)" ;;
|
||||||
7) echo "curl: Failed to connect (network unreachable / host down)" ;;
|
7) echo "curl: Failed to connect (network unreachable / host down)" ;;
|
||||||
|
8) echo "curl: FTP server reply error" ;;
|
||||||
22) echo "curl: HTTP error returned (404, 429, 500+)" ;;
|
22) echo "curl: HTTP error returned (404, 429, 500+)" ;;
|
||||||
|
23) echo "curl: Write error (disk full or permissions)" ;;
|
||||||
|
25) echo "curl: Upload failed" ;;
|
||||||
28) echo "curl: Operation timeout (network slow or server not responding)" ;;
|
28) echo "curl: Operation timeout (network slow or server not responding)" ;;
|
||||||
|
30) echo "curl: FTP port command failed" ;;
|
||||||
35) echo "curl: SSL/TLS handshake failed (certificate error)" ;;
|
35) echo "curl: SSL/TLS handshake failed (certificate error)" ;;
|
||||||
|
56) echo "curl: Receive error (connection reset by peer)" ;;
|
||||||
|
75) echo "Temporary failure (retry later)" ;;
|
||||||
|
78) echo "curl: Remote file not found (404 on FTP/file)" ;;
|
||||||
|
64) echo "Usage error (wrong arguments)" ;;
|
||||||
|
65) echo "Data format error (bad input data)" ;;
|
||||||
|
66) echo "Input file not found (cannot open input)" ;;
|
||||||
|
67) echo "User not found (addressee unknown)" ;;
|
||||||
|
68) echo "Host not found (hostname unknown)" ;;
|
||||||
|
69) echo "Service unavailable" ;;
|
||||||
|
70) echo "Internal software error" ;;
|
||||||
|
71) echo "System error (OS-level failure)" ;;
|
||||||
|
72) echo "Critical OS file missing" ;;
|
||||||
|
73) echo "Cannot create output file" ;;
|
||||||
|
74) echo "I/O error" ;;
|
||||||
|
76) echo "Remote protocol error" ;;
|
||||||
|
77) echo "Permission denied" ;;
|
||||||
100) echo "APT: Package manager error (broken packages / dependency problems)" ;;
|
100) echo "APT: Package manager error (broken packages / dependency problems)" ;;
|
||||||
101) echo "APT: Configuration error (bad sources.list, malformed config)" ;;
|
101) echo "APT: Configuration error (bad sources.list, malformed config)" ;;
|
||||||
102) echo "APT: Lock held by another process (dpkg/apt still running)" ;;
|
102) echo "APT: Lock held by another process (dpkg/apt still running)" ;;
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ network_check() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
trap 'error_handler' ERR
|
||||||
}
|
}
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|||||||
@@ -1851,16 +1851,26 @@ function download_with_progress() {
|
|||||||
# Ensures /usr/local/bin is permanently in system PATH.
|
# Ensures /usr/local/bin is permanently in system PATH.
|
||||||
#
|
#
|
||||||
# Description:
|
# Description:
|
||||||
# - Adds to /etc/profile.d if not present
|
# - Adds to /etc/profile.d for login shells (SSH, noVNC)
|
||||||
|
# - Adds to /root/.bashrc for non-login shells (pct enter)
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
function ensure_usr_local_bin_persist() {
|
function ensure_usr_local_bin_persist() {
|
||||||
local PROFILE_FILE="/etc/profile.d/custom_path.sh"
|
# Skip on Proxmox host
|
||||||
|
command -v pveversion &>/dev/null && return
|
||||||
|
|
||||||
if [[ ! -f "$PROFILE_FILE" ]] && ! command -v pveversion &>/dev/null; then
|
# Login shells: /etc/profile.d/
|
||||||
|
local PROFILE_FILE="/etc/profile.d/custom_path.sh"
|
||||||
|
if [[ ! -f "$PROFILE_FILE" ]]; then
|
||||||
echo 'export PATH="/usr/local/bin:$PATH"' >"$PROFILE_FILE"
|
echo 'export PATH="/usr/local/bin:$PATH"' >"$PROFILE_FILE"
|
||||||
chmod +x "$PROFILE_FILE"
|
chmod +x "$PROFILE_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Non-login shells (pct enter): /root/.bashrc
|
||||||
|
local BASHRC="/root/.bashrc"
|
||||||
|
if [[ -f "$BASHRC" ]] && ! grep -q '/usr/local/bin' "$BASHRC"; then
|
||||||
|
echo 'export PATH="/usr/local/bin:$PATH"' >>"$BASHRC"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -529,9 +529,21 @@ cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
if [[ "$(dirs -p | wc -l)" -gt 1 ]]; then
|
if [[ "$(dirs -p | wc -l)" -gt 1 ]]; then
|
||||||
popd >/dev/null || true
|
popd >/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
# Report final telemetry status if post_to_api_vm was called but no update was sent
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if declare -f post_update_to_api >/dev/null 2>&1; then
|
||||||
|
if [[ $exit_code -ne 0 ]]; then
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
else
|
||||||
|
# Exited cleanly but description()/success was never called — shouldn't happen
|
||||||
|
post_update_to_api "failed" "1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_root() {
|
check_root() {
|
||||||
|
|||||||
@@ -100,8 +100,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,8 +100,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,8 +100,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,8 +104,16 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
# Only send telemetry if post_to_api_vm was called (installing status was sent)
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,8 +101,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,8 +100,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,8 +79,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,8 +101,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,8 +109,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -99,8 +99,15 @@ function cleanup_vmid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
|
local exit_code=$?
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
post_update_to_api "done" "none"
|
if [[ "${POST_TO_API_DONE:-}" == "true" && "${POST_UPDATE_DONE:-}" != "true" ]]; then
|
||||||
|
if [[ $exit_code -eq 0 ]]; then
|
||||||
|
post_update_to_api "done" "none"
|
||||||
|
else
|
||||||
|
post_update_to_api "failed" "$exit_code"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
rm -rf $TEMP_DIR
|
rm -rf $TEMP_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user