Compare commits

...

383 Commits

Author SHA1 Message Date
ab8c5518de Update .app files 2025-12-13 22:05:23 +00:00
a411d780ea Switch to pnpm (#9937) 2025-12-13 23:05:07 +01:00
86a3099452 Update CHANGELOG.md (#9936)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 21:29:54 +00:00
26a8caa2eb Update category value in glance.json and adguard-home.json (#9932)
* Update category value in glance.json

* Change category value from 9 to 5 in adguardhome-sync.json
2025-12-13 22:29:31 +01:00
415a2c1215 Update CHANGELOG.md (#9931)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 16:01:53 +00:00
308a1cb91e Change category ID from 6 to 3 in coolify.json and dokploy.json (#9930) 2025-12-13 17:01:30 +01:00
1e97124c0c Update CHANGELOG.md (#9928)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 12:35:58 +00:00
3f8685067f Update CHANGELOG.md (#9927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 12:35:40 +00:00
5adf98fada Update date in json (#9926)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-13 12:35:36 +00:00
4cd81a9769 AdGuardHome-Sync (#9783)
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-13 13:35:19 +01:00
d83af67c62 Update versions.json (#9925)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 13:06:39 +01:00
e9d14b3a15 Update CHANGELOG.md (#9924)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 10:30:26 +00:00
13cbe0fdbf Refactor (#9873) 2025-12-13 11:30:06 +01:00
52db0d94ed Update CHANGELOG.md (#9923)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 10:29:40 +00:00
e38436340b Tunarr: Switch to prebuild archive (#9920) 2025-12-13 11:29:19 +01:00
139e86b945 Update CHANGELOG.md (#9921)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 09:08:09 +00:00
a91151549d [HOTFIX] NetVisor: backup OIDC config before update (#9895) 2025-12-13 10:07:45 +01:00
5ec7d0fd4d Update CHANGELOG.md (#9919)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 08:35:32 +00:00
02911dc07c Add optional TLS setup to Valkey installer (#9789) 2025-12-13 09:35:11 +01:00
1bb3837646 Update CHANGELOG.md (#9918)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 08:20:01 +00:00
8e6f911963 Update OPNsense download URL to version 14.3 (#9899) 2025-12-13 09:19:35 +01:00
05a66e3729 Update CHANGELOG.md (#9914)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 00:13:27 +00:00
5ef41a8ef0 Update versions.json (#9913)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-13 01:13:06 +01:00
9f264ff4a1 Update .app files (#9909)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-12 21:02:12 +01:00
21f55e5cab Update CHANGELOG.md (#9912)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 20:02:02 +00:00
d3f21bf6a0 Update date in json (#9911)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-12 20:01:55 +00:00
c1a953cd29 Update CHANGELOG.md (#9910)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 20:01:49 +00:00
909c323b57 Wallabag (#9904)
* Add wallabag (ct)

* Apply suggestion from @tremor021

* Apply suggestion from @tremor021

* Apply suggestion from @tremor021

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-12 21:01:37 +01:00
d03b38ea13 Update CHANGELOG.md (#9908)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 20:01:27 +00:00
276e1bbf10 Update date in json (#9907)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-12 20:01:23 +00:00
6135f1f8a6 Add invoiceninja (ct) (#9905)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-12-12 21:01:02 +01:00
cf14c1b540 Update CHANGELOG.md (#9903)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 13:21:42 +00:00
e27a68275b Fixed URLs (#9902) 2025-12-12 14:21:15 +01:00
ec433b3abc Update versions.json (#9901)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 13:06:19 +01:00
b4db6a6c70 Update CHANGELOG.md (#9897)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 00:15:56 +00:00
11a407b54f Update versions.json (#9896)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-12 01:15:30 +01:00
af5172a8cf Update CHANGELOG.md (#9893)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 17:32:43 +00:00
115ea10ecd dokploy: require unprivileged LXC environment (#9891) 2025-12-11 18:32:20 +01:00
8549f2a84d Update versions.json (#9889)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 13:06:13 +01:00
c80c2a2ecb Update CHANGELOG.md (#9888)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:32:05 +00:00
7255edc21b Fixes (#9872) 2025-12-11 12:31:37 +01:00
18d620705d Update CHANGELOG.md (#9887)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:30:50 +00:00
2b1f62e74f Fixes (#9874) 2025-12-11 12:30:27 +01:00
f5b0c03362 Update CHANGELOG.md (#9886)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 11:08:42 +00:00
1afefd20e9 Refactor (#9876) 2025-12-11 12:08:16 +01:00
723f9d63d6 Update CHANGELOG.md (#9884)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:57:28 +00:00
1ea0172b75 paperless: add note on website (uv usage) (#9833)
* paperless: add note on website (uv usage)

Added information about using 'uv run' for Paperless-NGX commands.

* switch branch to main to prevent conflicts
2025-12-11 10:57:05 +01:00
ef63f853b4 Update CHANGELOG.md (#9883)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:54:11 +00:00
179233810e Refactor (#9863) 2025-12-11 10:53:49 +01:00
748c08ddb5 Update CHANGELOG.md (#9882)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:53:14 +00:00
de944792de SonarQube: Fixes (#9875)
* Fixes

* Update
2025-12-11 10:52:49 +01:00
091271c8d6 Update CHANGELOG.md (#9881)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:52:34 +00:00
7fae5d71f5 fix(build): skip -features flag when empty (#9871)
Fixes '400 too many arguments' error when creating privileged containers without nesting/fuse features enabled.
2025-12-11 10:52:11 +01:00
3bc45aa0a2 Update CHANGELOG.md (#9880)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:51:50 +00:00
313b1b0b00 Update date in json (#9879)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-11 09:51:47 +00:00
3ad0777048 Speedtest-Tracker (#9802)
* Add speedtest-tracker (ct)

* Update speedtest-tracker.sh

* Update date_created and logo in JSON file

* Update Speedtest Tracker installation script for local IP

* Apply suggestion from @tremor021

* Update install/speedtest-tracker-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update install/speedtest-tracker-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-11 10:51:26 +01:00
7dcb2fa985 Update CHANGELOG.md (#9870)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 06:12:42 +00:00
6e86fa4c3b Update NetVisor repo information (#9864) 2025-12-11 07:12:19 +01:00
747e472d1f Update CHANGELOG.md (#9869)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 06:12:09 +00:00
38a9ad8e09 endurain: remove unneeded deps (#9855)
* Update endurain-install.sh

updated deps for v0.16.0. MariaDB support was dropped.

* chore: cosmetics

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-11 07:11:45 +01:00
5854318163 Update CHANGELOG.md (#9866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 00:15:06 +00:00
39eda9cb81 Update versions.json (#9865)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-11 01:14:43 +01:00
c757c7a8eb Update .app files (#9862)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-10 22:24:03 +01:00
94126be8f9 Update CHANGELOG.md (#9861)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 21:03:44 +00:00
d2cce38266 DiscoPanel (#9847)
* Add discopanel (ct)

* Update date_created and logo in discopanel.json

* Update discopanel-install.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-10 22:03:20 +01:00
59fa15af88 Update CHANGELOG.md (#9860)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 20:38:53 +00:00
cafee135c4 Refactor (#9839) 2025-12-10 21:38:24 +01:00
fe8e1be644 Update CHANGELOG.md (#9859)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 20:38:00 +00:00
840bdae6f3 Update CHANGELOG.md (#9858)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 20:37:42 +00:00
6352694326 Small fixes (#9836) 2025-12-10 21:37:36 +01:00
fb5fc0524b Refactor (#9835) 2025-12-10 21:37:10 +01:00
9cbbcbdda5 Update CHANGELOG.md (#9857)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 20:33:57 +00:00
300b4d2a3a Refactor (#9838) 2025-12-10 21:33:33 +01:00
0ed1e36d9d Update CHANGELOG.md (#9856)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 20:32:38 +00:00
ca27ae4e4c Refactor (#9840) 2025-12-10 21:32:12 +01:00
43f1e88b98 Update CHANGELOG.md (#9850)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 17:41:45 +00:00
f98d2d3d15 Update icon URLs from master to main branch (#9834) 2025-12-10 18:41:22 +01:00
e22f9fbce7 Update CHANGELOG.md (#9849)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 17:40:54 +00:00
12e8ca6a95 Refactor: UrBackup Server (#9837) 2025-12-10 18:40:26 +01:00
b9967cb56a Update CHANGELOG.md (#9848)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 17:39:21 +00:00
4134136918 Refactor (#9842) 2025-12-10 18:38:56 +01:00
da7cafd82c Update CHANGELOG.md (#9846)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 16:02:54 +00:00
7800578ad4 Fix formatting issues in tracktor-install.sh (#9841) 2025-12-10 17:02:25 +01:00
7c39bc8787 Enable the 'disable' option in palmr.json 2025-12-10 14:27:59 +01:00
7a91dc765a Update versions.json (#9843)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 13:07:39 +01:00
8b858f4a65 add redis 2025-12-10 07:19:55 +01:00
96dc87ddd5 Update CHANGELOG.md (#9830)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 00:15:36 +00:00
f0f1708c31 Update versions.json (#9829)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-10 01:15:09 +01:00
76c4277f4b Update CHANGELOG.md (#9825)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 18:27:57 +00:00
10ee5f2eb4 Disable Palmr (#9824) 2025-12-09 19:27:30 +01:00
9611267657 Update CHANGELOG.md (#9822)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:05:21 +00:00
4dce90530b Update CHANGELOG.md (#9821)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:05:09 +00:00
cb28199964 Refactor: Zigbee2MQTT (#9803) 2025-12-09 16:04:47 +01:00
c28e404bd9 Update CHANGELOG.md (#9820)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:04:36 +00:00
42d1f2980a Refactor: Zerotier-One (#9804) 2025-12-09 16:04:15 +01:00
0ab80c814b Update CHANGELOG.md (#9819)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:04:11 +00:00
0f183d0b2f Update CHANGELOG.md (#9818)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:03:51 +00:00
fd75b03435 Refactor (#9807) 2025-12-09 16:03:43 +01:00
2abb7db794 Update CHANGELOG.md (#9817)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:03:34 +00:00
f07e6a92b0 Refactor (#9808) 2025-12-09 16:03:13 +01:00
ee3c4f843d Update CHANGELOG.md (#9816)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:03:00 +00:00
5ad841da76 Fixes (#9809) 2025-12-09 16:02:38 +01:00
02da3fc888 Update CHANGELOG.md (#9815)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:02:31 +00:00
d51c37d134 Refactor (#9810) 2025-12-09 16:02:07 +01:00
938a66a67e Update CHANGELOG.md (#9814)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 15:01:58 +00:00
bea9a62cce Feature: extend advanced settings with more options & inherit app defaults (#9776) 2025-12-09 16:01:31 +01:00
1458aade19 Update CHANGELOG.md (#9813)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 14:58:35 +00:00
cf7d32548f Refactor (#9805) 2025-12-09 15:58:13 +01:00
3be34bdac8 Update CHANGELOG.md (#9812)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 14:53:43 +00:00
6cdc26badc Refactor: Zipline (#9801)
* Refactor

* Update icon URL
2025-12-09 15:53:19 +01:00
92a26677f7 Update CHANGELOG.md (#9811)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 14:50:10 +00:00
0bcffdc8b0 fix(tools): handle repos with 30+ pre-releases in check_for_gh_release (#9786) 2025-12-09 15:49:43 +01:00
f2597f4d35 Update CHANGELOG.md (#9806)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 14:24:46 +00:00
7b139fa763 fix(json): correct updateable flags for 11 apps with working update scripts (#9777)
Changed updateable from false to true for:
- aria2 (apt-get update/upgrade)
- casaos (apt-get update/upgrade)
- daemonsync (apt-get update/upgrade)
- iobroker (apt update/upgrade)
- librenms (daily.sh update)
- meshcentral (apt update/upgrade)
- nextcloudpi (apt update/upgrade)
- podman (apt update/upgrade)
- tasmoadmin (apt update/upgrade)
- wazuh (apt-get update/upgrade)
- whisparr (apt update/upgrade)
2025-12-09 15:24:19 +01:00
f6f131efab Update CHANGELOG.md (#9800)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 13:22:50 +00:00
e4d5ce221b fixed grammar on one of the alerts (#9799) 2025-12-09 14:22:23 +01:00
4e182bd5b9 Update versions.json (#9797)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 13:06:31 +01:00
12a7ecd85d Update .app files (#9795)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-09 10:08:03 +01:00
b658959c7b Update CHANGELOG.md (#9796)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 09:07:33 +00:00
5eb9d2bcdf Add dokploy (ct) (#9793)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-12-09 10:07:04 +01:00
7d37743981 Update CHANGELOG.md (#9794)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 09:05:57 +00:00
b0e7cdfe13 Coolify (#9792)
* Add coolify (ct)

* Update logo URL to use WebP format

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-09 10:05:36 +01:00
31c19bed09 Update CHANGELOG.md (#9788)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 00:13:26 +00:00
bff0650d72 Update versions.json (#9787)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-09 01:13:01 +01:00
d9b05882a3 Update CHANGELOG.md (#9782)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 18:36:34 +00:00
31dbf2554c Tandoor: Remove postgres17-contrib package (#9781)
* Remove contrib

* Update

* Update

* Upda
2025-12-08 19:36:06 +01:00
f95cc5a7ad Update CHANGELOG.md (#9775)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 13:20:30 +00:00
3fb9d02f36 fix: always show SSH access dialog in advanced settings (#9765)
- SSH access dialog is now always displayed regardless of password or SSH keys
- Added step indicator to SSH settings dialogs for consistency
- configure_ssh_settings() now accepts optional step_info parameter
- Updated documentation for SSH configuration functions

Fixes #9753
2025-12-08 14:20:05 +01:00
a748be9a1f Update CHANGELOG.md (#9774)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 12:52:51 +00:00
4d4ced6b63 feat: Add var_gpu flag for GPU passthrough configuration (#9764)
* feat: Add var_gpu flag for GPU passthrough configuration

Changes:
- Add var_gpu variable to CT scripts for explicit GPU control
- Remove hardcoded GPU_APPS list - GPU detection now uses var_gpu flag
- Add var_gpu to VAR_WHITELIST for persistence in default.vars and app.vars
- Add GPU Passthrough option (Step 19) to advanced_settings wizard (now 20 steps)
- Update documentation

Apps with var_gpu=yes (GPU enabled by default):
- Media: jellyfin, plex, emby, channels, ersatztv, tunarr
- Transcoding: tdarr, unmanic, fileflows
- AI/ML: ollama, openwebui
- NVR: frigate, immich

Usage:
- Disable GPU: var_gpu=no bash -c '$(curl -fsSL ...jellyfin.sh)'
- Enable GPU: var_gpu=yes bash -c '$(curl -fsSL ...debian.sh)'
- Via default.vars: echo 'var_gpu=yes' >> /usr/local/community-scripts/default.vars
- Via advanced settings wizard (Step 19)

* fix: tput rmcup timing, GPU line indentation, echo_default GPU display

* style: add GPU icon variable for consistent formatting
2025-12-08 13:52:30 +01:00
a5d017c83b Update versions.json (#9773)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 13:06:10 +01:00
5378d822f8 Update CHANGELOG.md (#9772)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 10:38:33 +00:00
243cb34d47 tandoor instead of trandoor (#9771) 2025-12-08 11:38:08 +01:00
59699425f8 Update CHANGELOG.md (#9768)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 00:14:20 +00:00
155a8571ba Update versions.json (#9767)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-08 01:13:57 +01:00
1cae72bdec Update CHANGELOG.md (#9762)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:48:24 +00:00
531ecad4c7 Refactor: Inventree (uses now ubuntu 24.04) (#9752) 2025-12-07 21:48:00 +01:00
9e8ab9de01 Update CHANGELOG.md (#9761)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:31:58 +00:00
70557798ec FAQ update (#9742) 2025-12-07 21:31:36 +01:00
4b554900ca Update CHANGELOG.md (#9760)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:30:44 +00:00
9f84eae07f Update CHANGELOG.md (#9759)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:30:37 +00:00
ba5bdd94ad fix(tools.func): handle empty grep results in stop_all_services (#9748) 2025-12-07 21:30:23 +01:00
d18baa2177 Update CHANGELOG.md (#9758)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:30:18 +00:00
779c06f232 fix(wanderer): add meilisearch dumpless upgrade for database migration (#9749) 2025-12-07 21:30:01 +01:00
9e2b6524c4 Update CHANGELOG.md (#9757)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:29:58 +00:00
a328d7b8ba fix(zammad): use Debian 12 and dynamic APT source version (#9750) 2025-12-07 21:29:39 +01:00
dfa4d82951 Update CHANGELOG.md (#9756)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:29:35 +00:00
5e5a8cd104 feat(motd): dynamically read OS version on each login (#9751) 2025-12-07 21:29:09 +01:00
0da3231d3c Update CHANGELOG.md (#9755)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 20:11:38 +00:00
5a6a30e594 Remove Debian from GPU passthrough (#9754) 2025-12-07 21:11:12 +01:00
97ac2520ec Update CHANGELOG.md (#9747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 15:09:37 +00:00
bd5fe17228 ComfyUI: Fix update script (#9740)
* Update error messages for ComfyUI installation check

* Update comfyui.json

* Change updateable status to true in comfyui.json

* Update comfyui.json
2025-12-07 16:09:14 +01:00
f42586c083 Update versions.json (#9745)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 13:05:30 +01:00
fab5539c82 Update CHANGELOG.md (#9744)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 11:39:00 +00:00
1ecb5bbeab Add DJANGO_SECRET_KEY support for Dispatcharr v0.13.1+ (#9730)
* Initial plan

* Add DJANGO_SECRET_KEY support for Dispatcharr v0.13.1+

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

* Improve DJANGO_SECRET_KEY generation to ensure consistent 50 character length

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

* short

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-07 12:38:37 +01:00
64dbd4e9f7 Update CHANGELOG.md (#9737)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 08:37:17 +00:00
2ba63b28f0 Update OPNsense version from 25.1 to 25.7 (#9736) 2025-12-07 09:36:47 +01:00
2a3b09b413 Update CHANGELOG.md (#9735)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 00:16:08 +00:00
d6ca5676df Update versions.json (#9734)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-07 01:15:43 +01:00
478194ba1a Update composer command path in bookstack.sh (#9656) 2025-12-06 16:55:45 +01:00
d241c03b3d Update CHANGELOG.md (#9724)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 15:40:28 +00:00
8cd037ff88 Remove InfluxData source list post-installation (#9723) 2025-12-06 16:40:06 +01:00
fb15c13833 Update CHANGELOG.md (#9722)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 15:04:53 +00:00
e95541260b Update InfluxDB repository key URL (#9720) 2025-12-06 16:04:27 +01:00
a37ac14907 Update versions.json (#9718)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 13:05:20 +01:00
74a870bc5c Update CHANGELOG.md (#9717)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 10:42:04 +00:00
e0f65f2db8 pin Portainer Update to CE Version only (#9710) 2025-12-06 11:41:43 +01:00
01b246f375 Update CHANGELOG.md (#9716)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 10:09:12 +00:00
53dd0efddd Update domain-locker-install.sh to enable auto-start after reboot (#9715)
* Update domain-locker-install.sh

It should be `systemctl enable --now`, so service would start again after reboot.

* Apply suggestion from @tremor021

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-06 11:08:40 +01:00
f31978a503 Update CHANGELOG.md (#9709)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 00:13:24 +00:00
4971bc46be Update versions.json (#9708)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-06 01:13:03 +01:00
28b894db2b Update CHANGELOG.md (#9706)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 22:10:39 +00:00
6ec4aeb4f0 Update CHANGELOG.md (#9705)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 22:10:20 +00:00
6409d64b93 fix(libretranslate): pin Python 3.12 for venv to ensure PyTorch compatibility (#9699) 2025-12-05 23:10:08 +01:00
08cb3cc76a Update CHANGELOG.md (#9704)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 22:09:59 +00:00
170d44e2aa Update CHANGELOG.md (#9703)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 22:09:45 +00:00
b436ba548d fix(alpine-mariadb/postgresql): correct php-cgi path for php83 (#9698) 2025-12-05 23:09:37 +01:00
ed435d58d6 Update CHANGELOG.md (#9702)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 22:09:22 +00:00
dd5993d7ab fix(tools.func): handle GitHub 300 Multiple Choices in tarball mode (#9697) 2025-12-05 23:09:20 +01:00
0c2521c05e chore(github): improve PR template and cleanup obsolete references | move contribution guide (#9700) 2025-12-05 23:08:58 +01:00
89595627a6 Update CHANGELOG.md (#9701)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 21:17:04 +00:00
a0e8ee2130 Refactor: OneDev (#9597)
* Refactor: OneDev

* Update onedev.sh

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-05 22:16:42 +01:00
e462aba7c2 Update .app files (#9691)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-05 18:20:19 +01:00
338762b30b Update CHANGELOG.md (#9692)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:19:57 +00:00
bda700a6c3 Update CHANGELOG.md (#9690)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:19:43 +00:00
976b9188a0 Update .app files (#9688)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-05 18:19:40 +01:00
2ef2ce0a4b [FIX]: NetVisor daemon auto-config (#9682) 2025-12-05 18:19:28 +01:00
6dc73981d9 Update CHANGELOG.md (#9689)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:19:16 +00:00
f64bed06d0 Update CHANGELOG.md (#9687)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:18:57 +00:00
ca4de7bbe9 Update date in json (#9686)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:18:52 +00:00
00ccef68bf Endurain (#9681)
* 'Add new script'

* Remove explicit exit code from endurain.sh

* Apply suggestion from @tremor021

* Use LOCAL_IP for Endurain host configuration

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-05 18:18:31 +01:00
e0dc02a3e7 Update CHANGELOG.md (#9684)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 17:08:05 +00:00
1c325f6885 fix(librespeed-rs): use correct service name (#9683) 2025-12-05 18:07:38 +01:00
64407dfccb Update .app files (#9677)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-05 13:51:50 +01:00
c7f04f379c Update CHANGELOG.md (#9678)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 12:49:11 +00:00
86491da8b5 Fix AdventureLog installation failure: missing postgis extension permissions (#9674)
* Initial plan

* Add PG_DB_EXTENSIONS="postgis" to fix installation error

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-05 13:48:43 +01:00
0d6ea7fa59 Update CHANGELOG.md (#9676)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 12:46:20 +00:00
a0c1243c94 MeTube (#9671)
* 'Add new script'

* Update metube.json

* Update metube.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-05 13:45:55 +01:00
2799201cfe Update versions.json (#9675)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 13:05:52 +01:00
f971c077d6 Update CHANGELOG.md (#9673)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 11:44:45 +00:00
d2e9997d0d Improve NVIDIA device detection for container passthrough (#9670) 2025-12-05 12:44:23 +01:00
316082eaaa Update CHANGELOG.md (#9669)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 10:14:26 +00:00
a81c074228 paperless: ASGI interface typo (#9668) 2025-12-05 11:14:02 +01:00
33ce3fdbc5 Update CHANGELOG.md (#9667)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 08:17:40 +00:00
e73f35e2c8 var. core fixes (bash to sh in fix_gpu_gids ...) (#9666)
* Switch container exec from bash to sh in fix_gpu_gids

Replaces bash with sh for container execution in fix_gpu_gids and updates device matching logic to use a POSIX-compliant case statement. This improves compatibility with containers that may not have bash installed.

* fix(apt): auto-recover from interrupted dpkg operations

When a previous installation is interrupted (e.g., by script error or
user cancellation), dpkg can be left in an inconsistent state requiring
'dpkg --configure -a' to fix.

This change:
- Adds dpkg --configure -a check to ensure_apt_working()
- Adds dpkg --configure -a to retry logic in install_packages_with_retry()
- Adds dpkg --configure -a to retry logic in upgrade_packages_with_retry()

Fixes: Omada Controller update failing after interrupted installation
Reported-in: #9663
2025-12-05 09:17:19 +01:00
eb53af44c9 Changelog 04.12 hint for core system and improve documentation
Refactor the entire '/misc' subsystem with a new three-tier defaults architecture and various improvements. Documentation added under '/docs/guides'.
2025-12-05 08:33:26 +01:00
7ce32cc320 Update CHANGELOG.md (#9659)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 00:13:55 +00:00
0e263ad54e Update versions.json (#9658)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-05 01:13:24 +01:00
85c20e3b25 Update CHANGELOG.md (#9654)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 21:00:26 +00:00
268464781e update pdm repo to stable (#9648) 2025-12-04 22:00:02 +01:00
775caae9c9 Update CHANGELOG.md (#9653)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 18:41:27 +00:00
0f7c201b57 core: extend storage type support (rbd, nfs, cifs) and validation (iscidirect, isci, zfs, cephfs, pbs) (#9646)
* core: enhance storage type validation and error codes

Improve storage validation for LXC container creation with
explicit checks for unsupported storage types.

Changes:
- Add validation for storage types that don't support containers:
  - iscsidirect (exit 212) - VMs only
  - iscsi/zfs (exit 213) - no rootdir support
  - cephfs (exit 219) - use RBD instead
  - pbs (exit 224) - backups only
- Add connectivity check for network storage (linstor, rbd, nfs, cifs)
- Simplify storage content validation using pvesm status
- Reorganize Proxmox error codes (200-231) for consistency
- Update error messages to be more descriptive and actionable

This helps users identify storage compatibility issues early
before container creation fails with cryptic errors.

* Update build.func
2025-12-04 19:41:01 +01:00
5780dc1532 Update CHANGELOG.md (#9650)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 15:55:26 +00:00
5333e9f4b6 Fix kimai.sh update script path typo for local.yaml (#9645)
* Initial plan

* Fix typo in kimai.sh: correct config path to config/packages/local.yaml

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-04 16:55:00 +01:00
513e11569b Update versions.json (#9642)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 13:06:00 +01:00
9ed56051b9 Update CHANGELOG.md (#9640)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 08:44:57 +00:00
4b496ebf2e Update CHANGELOG.md 2025-12-04 09:44:31 +01:00
530438a721 chore(frontend): update bun.lock for tooltip component 2025-12-04 09:31:04 +01:00
62201a0872 Refactor DataPage for cleaner imports and UI improvements
Consolidated and reordered import statements for better readability. Simplified JSX formatting and conditional rendering throughout the file. Added error tooltips for failed installations in the log table, improved table cell formatting, and fixed disk size unit from MB to GB. Minor code style and consistency improvements applied across the component.
2025-12-04 09:23:28 +01:00
8e93f5cb1d Improve Temurin JDK version detection
Enhances the setup_java function to attempt a package purge and reinstall if a Temurin JDK is detected but its version cannot be determined. This helps recover from inconsistent or broken JDK installations.
2025-12-04 09:20:32 +01:00
838e663a6d Update CHANGELOG.md (#9638)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 06:52:42 +00:00
a826769899 Three-tier defaults system | security improvements | error_handler | improved logging | improved container creation | improved architecture (#9540)
* Refactor Core

Refactored misc/alpine-install.func to improve error handling, network checks, and MOTD setup. Added misc/alpine-tools.func and misc/error_handler.func for modular tool installation and error management. Enhanced misc/api.func with detailed exit code explanations and telemetry functions. Updated misc/core.func for better initialization, validation, and execution helpers. Removed misc/create_lxc.sh as part of cleanup.

* Delete config-file.func

* Update install.func

* Refactor stop_all_services function and variable names

Refactor service stopping logic and improve variable handling

* Refactor installation script and update copyright

Updated copyright information and adjusted package installation commands. Enhanced IPv6 disabling logic and improved container customization process.

* Update install.func

* Update license comment format in install.func

* Refactor IPv6 handling and enhance MOTD and SSH

Refactor IPv6 handling and update OS function. Enhance MOTD with additional details and configure SSH settings.

* big core refactor

* Enhance IPv6 configuration menu options

Updated IPv6 Address Management menu options for clarity and added a new option for fully disabling IPv6.

* Update default Node.js version to 24 LTS

* Update misc/alpine-tools.func

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* indention

* remove debugf and duplicate codes

* Update whiptail backtitles and error codes

Removed '[dev]' from whiptail --backtitle strings for consistency. Refactored custom exit codes in build.func and error_handler.func: updated Proxmox error codes, shifted MySQL/MariaDB codes to 260-263, and removed unused MongoDB code. Updated error descriptions to match new codes.

* comments

* Refactor error handling and clean up debug comments

Standardized bash variable checks, removed unnecessary debug and commented code, and clarified error handling logic in container build and setup scripts. These changes improve code readability and maintainability without altering functional behavior.

* Update build.func

* feat: Improve LXC network checks and LINSTOR storage handling

Enhanced LXC container network setup to check for both IPv4 and IPv6 addresses, added connectivity (ping) tests, and provided troubleshooting tips on failure. Updated storage validation to support LINSTOR, including cluster connectivity checks and special handling for LINSTOR template storage.

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-12-04 07:52:18 +01:00
a5e6810872 Update CHANGELOG.md (#9637)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 00:13:57 +00:00
7c73dac819 Update versions.json (#9636)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-04 01:13:31 +01:00
cf616cbc9f Update CHANGELOG.md (#9635)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 23:06:22 +00:00
84057a657a explicit node versions (#9594) 2025-12-04 00:05:56 +01:00
fc1389ce8f Update CHANGELOG.md (#9634)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 22:15:23 +00:00
952c35ecc7 Bump next in /frontend in the npm_and_yarn group across 1 directory (#9632)
Bumps the npm_and_yarn group with 1 update in the /frontend directory: [next](https://github.com/vercel/next.js).


Updates `next` from 15.5.2 to 15.5.7
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.5.2...v15.5.7)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.7
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-03 23:14:42 +01:00
d41538e1b1 Update CHANGELOG.md (#9633)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 21:10:03 +00:00
3b84a80f7a Update logo URL in swizzin.json (#9627) 2025-12-03 22:09:38 +01:00
cb7fb45edb Fix service name mismatch between librespeed-rust install and update scripts (#9628)
* Initial plan

* Fix service name inconsistency - use librespeed-rs for both install and update

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-03 21:01:38 +01:00
462b68637d Update CHANGELOG.md (#9631)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 19:02:02 +00:00
fb12b1eea6 Fix Homebridge update detection for Debian 13 DEB822 format (#9629)
* Initial plan

* Fix Homebridge update detection for Debian 13

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-03 20:01:37 +01:00
41329f919a Update versions.json (#9624)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 13:06:00 +01:00
72efc88a96 Update CHANGELOG.md (#9619)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 09:05:23 +00:00
d29a11acda Add WorkingDirectory to go2rtc service configuration (#9618) 2025-12-03 10:04:55 +01:00
5fd2a7cade Update CHANGELOG.md (#9617)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 07:49:05 +00:00
3d4e7ea986 Update CHANGELOG.md (#9616)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 07:48:45 +00:00
7d40b03359 Enable OPNsense VM by setting disable to false 2025-12-03 08:48:43 +01:00
1c9e03d6b7 fix(opnsense-vm): improve script robustness and add single-interface mode (#9614)
- Fix typo in send_line_to_vm: 'shift=x' -> 'shift-x' for uppercase X
- Fix typo in FILE variable: 'Fressbsd.qcow2' -> 'FreeBSD.qcow2'
- Add network mode selection: dual interface (firewall) or single interface (proxy/VPN/IDS)
- Add conditional WAN interface configuration based on selected network mode
- Improve WAN interface setup: only add when WAN_BRG is configured
- Add proper quoting for VM_NAME and CORE_COUNT variable checks
- Improve download URL message formatting
- Remove sleep 2 delay before URL display
- Fix WAN IP configuration: only attempt when WAN bridge is configured
- Clean up whitespace and formatting inconsistencies
- Remove orphaned TEMP_DIR initialization
2025-12-03 08:48:12 +01:00
056d064584 Update CHANGELOG.md (#9612)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 00:13:36 +00:00
1603d930ae Update versions.json (#9611)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-03 01:13:11 +01:00
4801aca8aa Update CHANGELOG.md (#9610)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 23:23:24 +00:00
5d1c6a7460 Update category for "Wanderer" (#9607) 2025-12-03 00:22:56 +01:00
c34a229f02 Update CHANGELOG.md (#9606)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 21:32:44 +00:00
6944797213 Set Valkey memory and eviction defaults (#9602) 2025-12-02 22:32:16 +01:00
1b1677ab7c Update CHANGELOG.md (#9604)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 19:34:07 +00:00
833866d097 Fix ExecStart command in matterbridge service install script to allow childbridge mode (#9603) 2025-12-02 20:33:37 +01:00
277abdf0e4 Update CHANGELOG.md (#9599)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 16:11:28 +00:00
3ab710472c Open-webui add .env backup and restore functionality from older versions (#9592) 2025-12-02 17:10:59 +01:00
a06cab39a9 Update CHANGELOG.md (#9598)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 15:37:08 +00:00
0f1db8cc8e Refactor: 2FAuth (#9582)
* Refactor

* Update

* Update
2025-12-02 16:36:44 +01:00
fc2f72b2ac Update CHANGELOG.md (#9596)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 13:55:32 +00:00
433aafe365 Refactor: Paperless-AI (#9588)
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-02 14:55:02 +01:00
7978c3176c Update CHANGELOG.md (#9593)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 13:34:37 +00:00
e53bb2d825 Add configuration and deployment guides to docs (#9591) 2025-12-02 14:34:14 +01:00
d079ac7d67 Update CHANGELOG.md (#9589)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 12:56:47 +00:00
f513fd09db Refactor (#9583) 2025-12-02 13:56:23 +01:00
fb118eb0ca Refactor Node.js setup command for Matterbridge 2025-12-02 13:39:10 +01:00
dd440be505 Update versions.json (#9587)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 13:06:07 +01:00
dcbec67b65 Update CHANGELOG.md (#9586)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 12:04:48 +00:00
34b17c4b18 Update CHANGELOG.md (#9585)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 12:04:24 +00:00
3bc2c968ab Update date in json (#9584)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-02 12:04:22 +00:00
188e33485b Snowshare (#9578)
* 'Add new script'

* Update logo URL in snowshare.json

* Update snowshare-install.sh

* Update snowshare-install.sh

* Add source comment for snowshare-install.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-02 13:03:59 +01:00
b55deb69ac Update CHANGELOG.md (#9580)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 11:04:22 +00:00
787882db51 NetVisor: patch systemd file to fix new OIDC config (#9562) 2025-12-02 12:03:55 +01:00
3e2c9c997c Update CHANGELOG.md (#9577)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 10:04:42 +00:00
55fed2209d CommaFeed: Bump Java and service file (#9564)
* Bump Java and service file

* Update Java
2025-12-02 11:04:22 +01:00
b4feb4331d Update CHANGELOG.md (#9576)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 10:04:18 +00:00
183dc7ac69 Refactor: BookStack (#9567)
* Refactor

* Fix db names
2025-12-02 11:03:56 +01:00
d52908bd6e Update CHANGELOG.md (#9574)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 08:51:13 +00:00
327cb37a55 Add auth via requirepass to Valkey (#9570)
* Add auth via requirepass to Valkey

* Refactor notes in valkey.json for clarity

Updated notes structure to include detailed login instructions.

* Remove password saving message from installation script

Removed message indicating Valkey password saving.

* Fix JSON syntax error in valkey.json

* Update valkey.json

* refactor

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-02 09:50:48 +01:00
d2f86996db Update CHANGELOG.md (#9573)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 08:45:26 +00:00
8cf12d7f4d Refactor (#9563) 2025-12-02 09:44:59 +01:00
a2c31c7eaf Update CHANGELOG.md (#9572)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 08:16:35 +00:00
fa5ccdf3f1 Cloudflared: Add repo via helper function (#9565)
* Use setup_deb822_repo

* Fixes
2025-12-02 09:16:14 +01:00
bd21c9f8ad Update CHANGELOG.md (#9571)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 06:05:46 +00:00
6341ca0cf7 Booklore: Downgrad Java from 25 to 21 (#9566)
* Downgrade Java version from 25 to 21

https://github.com/booklore-app/booklore/pull/1697/files

* Downgrade Java version from 25 to 21 in installer

https://github.com/booklore-app/booklore/pull/1697/files
2025-12-02 07:05:24 +01:00
2a20c5b22d Update CHANGELOG.md (#9569)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 00:13:29 +00:00
279427f38d Update versions.json (#9568)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-02 01:13:01 +01:00
2bd3b8bffa Update CHANGELOG.md (#9561)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 19:50:12 +00:00
c7ecc9cd13 Update CHANGELOG.md (#9560)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 19:49:27 +00:00
3d99dfd218 Update date in json (#9559)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-01 19:49:24 +00:00
11f1fdf2fa Wanderer (#9556)
* 'Add new script'

* refactor

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-01 20:48:49 +01:00
3596312f20 Update CHANGELOG.md (#9558)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 19:35:34 +00:00
e5cc0a4726 core: sanitize appname for certificate generation (#9552)
* Update SSL key and certificate paths for Actual Budget

* Use lowercase app name for certificate paths

* revert changes at actualbudget

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-01 20:35:12 +01:00
c34659ced2 Update CHANGELOG.md (#9555)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 19:08:13 +00:00
c5eae09b93 Fix Django superuser creation failing with ImproperlyConfigured error (#9554)
* Initial plan

* Fix Django superuser creation by using manage.py shell

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

* Add $STD prefix to superuser creation for consistency

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-01 20:07:39 +01:00
fd8a305129 fix unbound env 2025-12-01 19:31:16 +01:00
64d0070756 unbound var 2025-12-01 19:23:08 +01:00
5dcada4ef9 fix wrong var 2025-12-01 19:22:27 +01:00
452007b654 Update CHANGELOG.md (#9549)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 17:30:22 +00:00
6cf4eb603a update selfhst icon-URLs to use @master path (#9543)
* update selfhst icon-URLs to use @master path

Changed all icon URLs in JSON files from 'cdn.jsdelivr.net/gh/selfhst/icons/webp/' to 'cdn.jsdelivr.net/gh/selfhst/icons@master/webp/' for consistency and to ensure the latest icons are referenced.

* added missing icons
2025-12-01 18:29:58 +01:00
1b40a62959 Refactor: Mealie (#9308)
* Refactor: Mealie

Updated Node.js version and adjusted database setup. Improved installation steps for Python dependencies and NLTK data.

* Update mealie.sh

* Modify mealie-install.sh for dependencies and config

Updated dependencies and added environment variables for Mealie installation.

* Update logo URL and increase RAM requirement

* Increase default RAM allocation from 2048 to 3072

* Update Mealie installation script for versioning and settings

* Update mealie.sh
2025-12-01 18:29:51 +01:00
01cba0213f Update CHANGELOG.md (#9548)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 17:26:57 +00:00
6f12aa7a5d Bump Baikal to deb13 (#9544)
Bump default OS version to Debian 13 and PHP to 8.3 in Baikal install scripts and config. Add curl to PHP modules. Refactor PostgreSQL database setup to use new variable names and helper function for credentials.
2025-12-01 18:26:30 +01:00
ec182aeaaf Update CHANGELOG.md (#9547)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 17:25:37 +00:00
4d4095cd7d Enhance MariaDB version fallback logic (#9545)
Updated fallback mechanism for MariaDB version retrieval to use mariadb_repo_setup script when the mirror is unreachable.
2025-12-01 18:25:08 +01:00
40ccccb557 Update CHANGELOG.md (#9546)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 17:24:39 +00:00
59b80031fe Refactor: Healthchecks (#9188)
* Refactor: Healthchecks

* Enhance healthchecks update process with backup and venv

Added backup creation for existing healthchecks installation before updating. Enhanced the update process by recreating the Python virtual environment and installing requirements.

* -

Added copyright, author, and license information.
2025-12-01 18:24:16 +01:00
1294b89fcb add comprehensive documentation (#9537) 2025-12-01 13:50:11 +01:00
605c11d43f Update CHANGELOG.md (#9541)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 12:50:05 +00:00
b0586e347c core: add cloud-init.func library for VM configuration (#9538) 2025-12-01 13:49:42 +01:00
ce42f9077a Update versions.json (#9539)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 13:05:53 +01:00
d0f82d7c23 Update CHANGELOG.md (#9533)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 00:17:15 +00:00
1ec9a00abf Update versions.json (#9532)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 01:16:49 +01:00
8ab9666368 Update CHANGELOG.md (#9530)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 22:16:15 +00:00
fc559e0e09 Update CHANGELOG.md (#9529)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 18:15:21 +00:00
380bf26d38 fix(recyclarr): remove update script systemctl commands (#9522) 2025-11-30 19:15:01 +01:00
c1f7d3d8d7 Update CHANGELOG.md (#9527)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 16:34:42 +00:00
33489e607b Refactor: Actual Budget (#9518)
* Update create_self_signed_cert function

* Refactor

* Remove old version file check
2025-11-30 17:34:14 +01:00
877a25c0cc Update versions.json (#9525)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 13:05:24 +01:00
8c0abc9ffb Update CHANGELOG.md (#9520)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 00:15:35 +00:00
a43e287db2 Update versions.json (#9519)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 01:15:08 +01:00
1cd394a754 Update CHANGELOG.md (#9513)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:23 +00:00
04bd9af89c Update CHANGELOG.md (#9512)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:07 +00:00
4d8fa37ba0 Update date in json (#9511)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:02 +00:00
b4fe802d49 'Add new script' (#9510)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-11-29 22:53:41 +01:00
9b6c816c6f Update CHANGELOG.md (#9508)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 19:12:54 +00:00
769e541938 Fix duplicate ORIGIN in .env for OpenArchiver install script (#9503)
* Initial plan

* Fix duplicate ORIGIN in .env for OpenArchiver install script

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-11-29 20:12:28 +01:00
af9491d70d Remove Documenso (#9507)
* Delete ct/documenso.sh

* Delete ct/headers/documenso

* Delete install/documenso-install.sh

* Delete frontend/public/json/documenso.json
2025-11-29 19:01:45 +01:00
38dd38a9e2 Update CHANGELOG.md (#9505)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 15:13:44 +00:00
5465a5dc58 Update Discord link (#9499) 2025-11-29 16:13:20 +01:00
5c6e73d4b6 Update versions.json (#9501)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 13:05:48 +01:00
f3c2ca6f8a Update CHANGELOG.md (#9497)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 00:12:48 +00:00
64df48c9b5 Update versions.json (#9496)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 01:12:26 +01:00
9f20c898fb Update CHANGELOG.md (#9495)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 21:52:55 +00:00
efdb44bc2e Update CHANGELOG.md (#9493)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 20:22:29 +00:00
8caec1d13e Update apache-guacamole-install.sh issue #9458 (#9492)
Issue 9458
2025-11-28 21:22:04 +01:00
39388a1b77 Remove Habitica (#9489) 2025-11-28 14:31:47 +01:00
91b80caaa5 Update versions.json (#9488)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 13:07:10 +01:00
dc3736146a Update CHANGELOG.md (#9486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 00:14:09 +00:00
40edc3e908 Update versions.json (#9485)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 01:13:45 +01:00
92bc24d1e5 Update CHANGELOG.md (#9483)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 14:24:38 +00:00
bdef4cbfef PBS: fix typo (#9482)
* fix PBS warning typo

* lowercase IPv6

---------

Co-authored-by: jharmsen <jharmsen@JH-MBA.local>
2025-11-27 15:24:08 +01:00
7d47eb81e9 Update CHANGELOG.md (#9481)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 13:31:39 +00:00
276ce230f3 Upgrade pve-scripts-local to node 24 (#9457)
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-11-27 14:31:15 +01:00
5f911164e3 Fix MongoDB setup version assignment 2025-11-27 14:02:11 +01:00
8c6843f180 Update versions.json (#9477)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 13:05:49 +01:00
5004477246 Update CHANGELOG.md (#9474)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 08:14:01 +00:00
8e15e0a524 Update date in json (#9473)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-27 08:13:36 +00:00
54b634cea4 Qdrant (#9465)
* 'Add new script'

* Update qdrant.sh

* Update qdrant.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-11-27 09:13:15 +01:00
d4e1b8f354 Update CHANGELOG.md (#9470)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 00:12:56 +00:00
1a4f9ff815 Update versions.json (#9469)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 01:12:34 +01:00
ee3d4874d1 Update CHANGELOG.md (#9463)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 13:19:49 +00:00
Cam
01442d08ec Fix Open-WebUI install and upgrade commands (#9461) 2025-11-26 14:19:24 +01:00
e1bf05ad69 Update CHANGELOG.md (#9462)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 12:49:34 +00:00
7d435a1a5e Increase RAM for LXC (#9460) 2025-11-26 13:49:07 +01:00
7184755a0f Update versions.json (#9459)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 13:07:04 +01:00
f0a23be999 Update CHANGELOG.md (#9451)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 00:14:31 +00:00
93a764676f Update versions.json (#9450)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 01:14:11 +01:00
21e9030946 Update CHANGELOG.md (#9449)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 22:59:01 +00:00
01774b1967 Change install command to upgrade for Open-WebUI (#9448) 2025-11-25 23:58:39 +01:00
63c5b922de Remove pip cache purge from cleanup script
Removed pip cache purge command from cleanup function.
2025-11-25 22:24:16 +01:00
789cd3e187 Update CHANGELOG.md (#9446)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 21:13:16 +00:00
282e8ef186 Update CHANGELOG.md (#9444)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 19:39:04 +00:00
8a0b1d864b Update install scripts for improved dependency handling (#9441)
Replaces 'npm ci' with 'npm install --legacy-peer-deps' in install and update scripts to address peer dependency issues. Adds global npm update and turbo prune steps to the update script for better Docker build support.
2025-11-25 20:38:35 +01:00
d2a103c230 Set default LANG in locale configuration (#9440)
Ensures LANG is set to en_US.UTF-8 by default if not already defined before updating /etc/locale.gen.
2025-11-25 20:32:18 +01:00
949ecc39ad Update CHANGELOG.md (#9443)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 19:31:24 +00:00
a9c08a611e Refactor Asterisk installation process (#9429)
Refactor Asterisk installation script to fetch versions directly from Asterisk download URLs and streamline dependency installation.
2025-11-25 20:31:00 +01:00
e13119250d Add missing config files to build output 2025-11-25 18:34:14 +01:00
87f71f75b1 Update CHANGELOG.md (#9439)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:21:39 +00:00
3b6e5aae5f paperless: patch consume to uv (#9425) 2025-11-25 18:21:15 +01:00
f90fdadbb2 Update CHANGELOG.md (#9438)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:15:09 +00:00
120affbcc5 Add Zabbix version selection to install and update scripts (#9430)
Prompts user to select Zabbix version (7.0 LTS, 7.4, or latest) during installation and update. Refactors download logic to use the chosen version, improving flexibility and user control over Zabbix deployment.
2025-11-25 18:14:37 +01:00
ae81cafa10 Update CHANGELOG.md (#9437)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:08:37 +00:00
f60493a862 attempt to fix mtk (#9434) 2025-11-25 18:08:11 +01:00
0cbce2287d Update versions.json (#9428)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 13:08:31 +01:00
edfeda61ad Update source URL in domain-locker-install.sh (#9423) 2025-11-25 09:51:25 +01:00
1815fee99b Update CHANGELOG.md (#9424)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 07:53:11 +00:00
4bf830c6bf gh: update supported PVE Version (#9422)
* gh: update supported PVE Version

* Update supported versions in SECURITY.md
2025-11-25 08:52:46 +01:00
d0cced9a1d Update CHANGELOG.md (#9419)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 00:11:49 +00:00
a56f7cfd45 Update versions.json (#9418)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 01:11:30 +01:00
79f7852777 Update CHANGELOG.md (#9416)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 21:03:42 +00:00
e54f372079 [Fix]: Wizarr DB error during install (#9415)
* test skip scheduler during install & not running migration

- migration is run by the start script anyway, I think

* restore db upgrade during install/update; add new env vars; patch start.sh
2025-11-24 22:03:19 +01:00
cf89b17b0d Update CHANGELOG.md (#9414)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 20:35:25 +00:00
bb40a3fdd3 core: remove Python uv cache clean command (#9413) 2025-11-24 21:34:59 +01:00
4ffa571a34 Update CHANGELOG.md (#9409)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 17:24:44 +00:00
48f1f07892 Update CHANGELOG.md (#9408)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 17:24:18 +00:00
e5e587aa37 Update gitea.json (#9406) 2025-11-24 18:24:15 +01:00
b4bce4964c Joplin-Server: Bump Node.js version from 22 to 24 (#9405) 2025-11-24 18:23:50 +01:00
c8ed59b148 huntarr: disable on website during install issues (#9403) 2025-11-24 18:23:21 +01:00
ce9323ab17 Update versions.json (#9402)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 13:05:43 +01:00
696 changed files with 34312 additions and 5647 deletions

View File

@ -1,86 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: [YourUserName]
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: [SOURCE_URL]
# App Default Values
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
APP="[APP_NAME]"
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
var_tags="${var_tags:-[TAGS]}"
# Number of cores (1-X) (e.g. 4) - default are 2
var_cpu="${var_cpu:-[CPU]}"
# Amount of used RAM in MB (e.g. 2048 or 4096)
var_ram="${var_ram:-[RAM]}"
# Amount of used disk space in GB (e.g. 4 or 10)
var_disk="${var_disk:-[DISK]}"
# Default OS (e.g. debian, ubuntu, alpine)
var_os="${var_os:-[OS]}"
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
var_version="${var_version:-[VERSION]}"
# 1 = unprivileged container, 0 = privileged container
var_unprivileged="${var_unprivileged:-[UNPRIVILEGED]}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
# Check if installation is present | -f for file, -d for folder
if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
# Crawling the new version and checking whether an update is required
RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
# Stopping Services
msg_info "Stopping $APP"
systemctl stop [SERVICE_NAME]
msg_ok "Stopped $APP"
# Creating Backup
msg_info "Creating Backup"
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
msg_ok "Backup Created"
# Execute Update
msg_info "Updating $APP to v${RELEASE}"
[UPDATE_COMMANDS]
msg_ok "Updated $APP to v${RELEASE}"
# Starting Services
msg_info "Starting $APP"
systemctl start [SERVICE_NAME]
msg_ok "Started $APP"
# Cleaning up
msg_info "Cleaning Up"
rm -rf [TEMP_FILES]
msg_ok "Cleanup Completed"
# Last Action
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:[PORT]${CL}"

114
.github/autolabeler-config.json generated vendored
View File

@ -4,9 +4,7 @@
"fileStatus": "added", "fileStatus": "added",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**",
"turnkey/**", "turnkey/**",
"vm/**" "vm/**"
], ],
@ -18,9 +16,7 @@
"fileStatus": "modified", "fileStatus": "modified",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**",
"turnkey/**", "turnkey/**",
"vm/**" "vm/**"
], ],
@ -32,71 +28,27 @@
"fileStatus": "removed", "fileStatus": "removed",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**",
"turnkey/**", "turnkey/**",
"vm/**" "vm/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"maintenance": [ "vm": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"*.md" "vm/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"core": [ "tools": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"misc/*.func", "tools/**"
"misc/create_lxc.sh"
],
"excludeGlobs": [
"misc/api.func"
]
}
],
"website": [
{
"fileStatus": null,
"includeGlobs": [
"frontend/**"
],
"excludeGlobs": [
"frontend/public/json/**"
]
}
],
"api": [
{
"fileStatus": null,
"includeGlobs": [
"api/**",
"misc/api.func"
],
"excludeGlobs": []
}
],
"github": [
{
"fileStatus": null,
"includeGlobs": [
".github/**"
],
"excludeGlobs": []
}
],
"json": [
{
"fileStatus": "modified",
"includeGlobs": [
"frontend/public/json/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }
@ -119,11 +71,65 @@
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"vm": [ "core": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"vm/**" "misc/*.func"
],
"excludeGlobs": [
"misc/api.func"
]
}
],
"documentation": [
{
"fileStatus": null,
"includeGlobs": [
"docs/**"
],
"excludeGlobs": []
}
],
"github": [
{
"fileStatus": null,
"includeGlobs": [
".github/**",
"README.md",
"SECURITY.md",
"LICENSE",
"CHANGELOG.md"
],
"excludeGlobs": []
}
],
"api": [
{
"fileStatus": null,
"includeGlobs": [
"api/**",
"misc/api.func"
],
"excludeGlobs": []
}
],
"website": [
{
"fileStatus": null,
"includeGlobs": [
"frontend/**"
],
"excludeGlobs": [
"frontend/public/json/**"
]
}
],
"json": [
{
"fileStatus": "modified",
"includeGlobs": [
"frontend/public/json/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }

88
.github/changelog-pr-config.json generated vendored
View File

@ -42,9 +42,15 @@
] ]
}, },
{ {
"title": "🧰 Maintenance", "title": "🗑️ Deleted Scripts",
"labels": [ "labels": [
"maintenance" "delete script"
]
},
{
"title": "💾 Core",
"labels": [
"core"
], ],
"subCategories": [ "subCategories": [
{ {
@ -69,30 +75,86 @@
"notes": [] "notes": []
}, },
{ {
"title": "📡 API", "title": "🔧 Refactor",
"labels": [ "labels": [
"api" "refactor"
],
"notes": []
}
]
},
{
"title": "🧰 Tools",
"labels": [
"tools"
],
"subCategories": [
{
"title": "🐞 Bug Fixes",
"labels": [
"bugfix"
], ],
"notes": [] "notes": []
}, },
{ {
"title": "💾 Core", "title": "✨ New Features",
"labels": [ "labels": [
"core" "feature"
], ],
"notes": [] "notes": []
}, },
{ {
"title": "📂 Github", "title": "💥 Breaking Changes",
"labels": [ "labels": [
"github" "breaking change"
], ],
"notes": [] "notes": []
}, },
{ {
"title": "📝 Documentation", "title": "🔧 Refactor",
"labels": [ "labels": [
"maintenance" "refactor"
],
"notes": []
}
]
},
{
"title": "📚 Documentation",
"labels": [
"documentation"
]
},
{
"title": "📂 Github",
"labels": [
"github"
]
},
{
"title": "📡 API",
"labels": [
"api"
],
"subCategories": [
{
"title": "🐞 Bug Fixes",
"labels": [
"bugfix"
],
"notes": []
},
{
"title": "✨ New Features",
"labels": [
"feature"
],
"notes": []
},
{
"title": "💥 Breaking Changes",
"labels": [
"breaking change"
], ],
"notes": [] "notes": []
}, },
@ -142,7 +204,9 @@
] ]
}, },
{ {
"title": "❔ Unlabelled", "title": "❔ Uncategorized",
"labels": [] "labels": [
"needs triage"
]
} }
] ]

33
.github/pull_request_template.md generated vendored
View File

@ -1,27 +1,26 @@
<!--🛑 New scripts must be submitted to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) for testing. <!--🛑 New scripts must be submitted to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) for testing.
PRs without prior testing will be closed. --> PRs without prior testing will be closed. -->
## ✍️ Description
## ✍️ Description
## 🔗 Related Issue
## 🔗 Related PR / Issue Fixes #
Link: #
## ✅ Prerequisites (**X** in brackets)
## ✅ Prerequisites (**X** in brackets) - [ ] **Self-review completed** Code follows project standards.
- [ ] **Tested thoroughly** Changes work as expected.
- [ ] **Self-review completed** Code follows project standards. - [ ] **No security risks** No hardcoded secrets, unnecessary privilege escalations, or permission issues.
- [ ] **Tested thoroughly** Changes work as expected.
- [ ] **No security risks** No hardcoded secrets, unnecessary privilege escalations, or permission issues.
--- ---
## 🛠️ Type of Change (**X** in brackets) ## 🛠️ Type of Change (**X** in brackets)
- [ ] 🐞 **Bug fix** Resolves an issue without breaking functionality. - [ ] 🐞 **Bug fix** Resolves an issue without breaking functionality.
- [ ]**New feature** Adds new, non-breaking functionality. - [ ]**New feature** Adds new, non-breaking functionality.
- [ ] 💥 **Breaking change** Alters existing functionality in a way that may require updates. - [ ] 💥 **Breaking change** Alters existing functionality in a way that may require updates.
- [ ] 🆕 **New script** A fully functional and tested script or script set. - [ ] 🆕 **New script** A fully functional and tested script or script set.
- [ ] 🌍 **Website update** Changes to website-related JSON files or metadata. - [ ] 🌍 **Website update** Changes to website-related JSON files or metadata.
- [ ] 🔧 **Refactoring / Code Cleanup** Improves readability or maintainability without changing functionality. - [ ] 🔧 **Refactoring / Code Cleanup** Improves readability or maintainability without changing functionality.
- [ ] 📝 **Documentation update** Changes to `README`, `AppName.md`, `CONTRIBUTING.md`, or other docs. - [ ] 📝 **Documentation update** Changes to `README`, `AppName.md`, `CONTRIBUTING.md`, or other docs.

64
.github/workflows/autolabeler.yml generated vendored
View File

@ -57,10 +57,10 @@ jobs:
if (shouldAddLabel) { if (shouldAddLabel) {
labelsToAdd.add(label); labelsToAdd.add(label);
if (label === "update script") { // Add specific sub-labels for tools
if (label === "tools") {
for (const prFile of prFiles) { for (const prFile of prFiles) {
const filename = prFile.filename; const filename = prFile.filename;
if (filename.startsWith("vm/")) labelsToAdd.add("vm");
if (filename.startsWith("tools/addon/")) labelsToAdd.add("addon"); if (filename.startsWith("tools/addon/")) labelsToAdd.add("addon");
if (filename.startsWith("tools/pve/")) labelsToAdd.add("pve-tool"); if (filename.startsWith("tools/pve/")) labelsToAdd.add("pve-tool");
} }
@ -68,38 +68,42 @@ jobs:
} }
} }
if (labelsToAdd.size < 2) { // Always parse template checkboxes to add content-type labels (bugfix, feature, etc.)
const templateLabelMappings = { const templateLabelMappings = {
"🐞 **Bug fix**": "bugfix", "🐞 **Bug fix**": "bugfix",
"✨ **New feature**": "feature", "✨ **New feature**": "feature",
"💥 **Breaking change**": "breaking change", "💥 **Breaking change**": "breaking change",
"🆕 **New script**": "new script", "🆕 **New script**": "new script",
"🌍 **Website update**": "website", // handled special "🔧 **Refactoring / Code Cleanup**": "refactor",
"🔧 **Refactoring / Code Cleanup**": "refactor", "📝 **Documentation update**": "documentation"
"📝 **Documentation update**": "documentation" // mapped to maintenance };
};
for (const [checkbox, label] of Object.entries(templateLabelMappings)) { for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escapedCheckbox}`, "i"); const regex = new RegExp(`- \\[(x|X)\\]\\s*${escapedCheckbox}`, "i");
if (regex.test(prBody)) { if (regex.test(prBody)) {
if (label === "website") { labelsToAdd.add(label);
const hasJson = prFiles.some((f) => f.filename.startsWith("frontend/public/json/"));
const hasUpdateScript = labelsToAdd.has("update script");
const hasContentLabel = ["bugfix", "feature", "refactor"].some((l) => labelsToAdd.has(l));
if (!(hasUpdateScript && hasContentLabel)) {
labelsToAdd.add(hasJson ? "json" : "website");
}
} else if (label === "documentation") {
labelsToAdd.add("maintenance");
} else {
labelsToAdd.add(label);
}
}
} }
} }
// Handle website checkbox specially - only add if not already an update script with content label
const websiteCheckbox = "🌍 **Website update**";
const escapedWebsite = websiteCheckbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
const websiteRegex = new RegExp(`- \\[(x|X)\\]\\s*${escapedWebsite}`, "i");
if (websiteRegex.test(prBody)) {
const hasJson = prFiles.some((f) => f.filename.startsWith("frontend/public/json/"));
const hasUpdateScript = labelsToAdd.has("update script");
const hasContentLabel = ["bugfix", "feature", "refactor"].some((l) => labelsToAdd.has(l));
// 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
if (!(hasUpdateScript && hasJson && hasContentLabel)) {
labelsToAdd.add(hasJson ? "json" : "website");
}
}
if (labelsToAdd.size === 0) { if (labelsToAdd.size === 0) {
labelsToAdd.add("needs triage"); labelsToAdd.add("needs triage");
} }

33
.github/workflows/changelog-pr.yml generated vendored
View File

@ -157,13 +157,31 @@ jobs:
let categorized = false; let categorized = false;
const priorityCategories = categorizedPRs.slice(); const priorityCategories = categorizedPRs.slice();
// Priority order for content-type labels (highest priority first)
const subCategoryPriority = ["breaking change", "bugfix", "feature", "refactor"];
for (const category of priorityCategories) { for (const category of priorityCategories) {
if (categorized) break; if (categorized) break;
if (category.labels.some(label => prLabels.includes(label))) { if (category.labels.some(label => prLabels.includes(label))) {
if (category.subCategories && category.subCategories.length > 0) { if (category.subCategories && category.subCategories.length > 0) {
const subCategory = category.subCategories.find(sub => // Find subcategory by priority order instead of first match
sub.labels.some(label => prLabels.includes(label)) let subCategory = null;
); for (const priorityLabel of subCategoryPriority) {
if (prLabels.includes(priorityLabel)) {
subCategory = category.subCategories.find(sub =>
sub.labels.includes(priorityLabel)
);
if (subCategory) break;
}
}
// Fallback: check for any other subcategory match (api, github, json, etc.)
if (!subCategory) {
subCategory = category.subCategories.find(sub =>
sub.labels.some(label => prLabels.includes(label))
);
}
if (subCategory) { if (subCategory) {
subCategory.notes.push(prNote); subCategory.notes.push(prNote);
@ -176,6 +194,15 @@ jobs:
categorized = true; categorized = true;
} }
} }
// Fallback: Add to Uncategorized if no category matched
if (!categorized) {
const uncategorized = categorizedPRs.find(category =>
category.title.includes("Uncategorized") || category.labels.includes("needs triage"));
if (uncategorized) {
uncategorized.notes.push(prNote);
}
}
} }
} }

View File

@ -51,10 +51,6 @@ jobs:
NON_COMPLIANT_FILES="" NON_COMPLIANT_FILES=""
for FILE in $CHANGED_FILES; do for FILE in $CHANGED_FILES; do
# Skip File "misc/create_lxc.sh"
if [[ "$FILE" == "misc/create_lxc.sh" ]]; then
continue
fi
BASENAME=$(echo "$(basename "${FILE%.*}")") BASENAME=$(echo "$(basename "${FILE%.*}")")
if [[ ! "$BASENAME" =~ ^[a-z0-9-]+$ ]]; then if [[ ! "$BASENAME" =~ ^[a-z0-9-]+$ ]]; then
NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE" NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"

View File

@ -10,8 +10,483 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-12-13
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Tunarr: Switch to prebuild archive [@tremor021](https://github.com/tremor021) ([#9920](https://github.com/community-scripts/ProxmoxVE/pull/9920))
- [HOTFIX] NetVisor: backup OIDC config before update [@vhsdream](https://github.com/vhsdream) ([#9895](https://github.com/community-scripts/ProxmoxVE/pull/9895))
- Update OPNsense download URL to version 14.3 [@jaredcarling42-design](https://github.com/jaredcarling42-design) ([#9899](https://github.com/community-scripts/ProxmoxVE/pull/9899))
- #### ✨ New Features
- Add optional TLS setup to Valkey installer [@pshankinclarke](https://github.com/pshankinclarke) ([#9789](https://github.com/community-scripts/ProxmoxVE/pull/9789))
- #### 🔧 Refactor
- Refactor: Spoolman [@tremor021](https://github.com/tremor021) ([#9873](https://github.com/community-scripts/ProxmoxVE/pull/9873))
### 🧰 Tools
- AdGuardHome-Sync ([#9783](https://github.com/community-scripts/ProxmoxVE/pull/9783))
### ❔ Uncategorized
- Update category value in glance.json and adguard-home.json [@Bensonheimer992](https://github.com/Bensonheimer992) ([#9932](https://github.com/community-scripts/ProxmoxVE/pull/9932))
- Change category ID from 6 to 3 in coolify.json and dokploy.json [@Bensonheimer992](https://github.com/Bensonheimer992) ([#9930](https://github.com/community-scripts/ProxmoxVE/pull/9930))
## 2025-12-12
### 🆕 New Scripts
- Wallabag ([#9904](https://github.com/community-scripts/ProxmoxVE/pull/9904))
- InvoiceNinja ([#9905](https://github.com/community-scripts/ProxmoxVE/pull/9905))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Pangolin: URL fixes [@tremor021](https://github.com/tremor021) ([#9902](https://github.com/community-scripts/ProxmoxVE/pull/9902))
## 2025-12-11
### 🆕 New Scripts
- Speedtest-Tracker ([#9802](https://github.com/community-scripts/ProxmoxVE/pull/9802))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- dokploy: require unprivileged LXC environment [@MickLesk](https://github.com/MickLesk) ([#9891](https://github.com/community-scripts/ProxmoxVE/pull/9891))
- Update NetVisor repo information [@vhsdream](https://github.com/vhsdream) ([#9864](https://github.com/community-scripts/ProxmoxVE/pull/9864))
- #### 🔧 Refactor
- Syncthing: Various fixes [@tremor021](https://github.com/tremor021) ([#9872](https://github.com/community-scripts/ProxmoxVE/pull/9872))
- Sonarr: Fix standard [@tremor021](https://github.com/tremor021) ([#9874](https://github.com/community-scripts/ProxmoxVE/pull/9874))
- Refactor: Snipe-IT [@tremor021](https://github.com/tremor021) ([#9876](https://github.com/community-scripts/ProxmoxVE/pull/9876))
- Technitium DNS: Various fixes [@tremor021](https://github.com/tremor021) ([#9863](https://github.com/community-scripts/ProxmoxVE/pull/9863))
- SonarQube: Fixes [@tremor021](https://github.com/tremor021) ([#9875](https://github.com/community-scripts/ProxmoxVE/pull/9875))
- endurain: remove unneeded deps [@johanngrobe](https://github.com/johanngrobe) ([#9855](https://github.com/community-scripts/ProxmoxVE/pull/9855))
### 💾 Core
- #### 🐞 Bug Fixes
- core: skip -features flag when empty [@MickLesk](https://github.com/MickLesk) ([#9871](https://github.com/community-scripts/ProxmoxVE/pull/9871))
### 🌐 Website
- #### 📝 Script Information
- paperless: add note on website (uv usage) [@MickLesk](https://github.com/MickLesk) ([#9833](https://github.com/community-scripts/ProxmoxVE/pull/9833))
## 2025-12-10
### 🆕 New Scripts
- DiscoPanel ([#9847](https://github.com/community-scripts/ProxmoxVE/pull/9847))
### 🚀 Updated Scripts
- #### 🔧 Refactor
- Refactor: UmlautAdaptarr [@tremor021](https://github.com/tremor021) ([#9839](https://github.com/community-scripts/ProxmoxVE/pull/9839))
- Verdaccio: Small fixes [@tremor021](https://github.com/tremor021) ([#9836](https://github.com/community-scripts/ProxmoxVE/pull/9836))
- Refactor: WaveLog [@tremor021](https://github.com/tremor021) ([#9835](https://github.com/community-scripts/ProxmoxVE/pull/9835))
- Refactor: Unifi Network Server [@tremor021](https://github.com/tremor021) ([#9838](https://github.com/community-scripts/ProxmoxVE/pull/9838))
- Refactor: Umami [@tremor021](https://github.com/tremor021) ([#9840](https://github.com/community-scripts/ProxmoxVE/pull/9840))
- Refactor: UrBackup Server [@tremor021](https://github.com/tremor021) ([#9837](https://github.com/community-scripts/ProxmoxVE/pull/9837))
- Refactor: Tianji [@tremor021](https://github.com/tremor021) ([#9842](https://github.com/community-scripts/ProxmoxVE/pull/9842))
- Tracktor: Remove unused variable [@tremor021](https://github.com/tremor021) ([#9841](https://github.com/community-scripts/ProxmoxVE/pull/9841))
### ❔ Uncategorized
- Update icon URLs from master to main branch [@MickLesk](https://github.com/MickLesk) ([#9834](https://github.com/community-scripts/ProxmoxVE/pull/9834))
## 2025-12-09
### 🆕 New Scripts
- Dokploy ([#9793](https://github.com/community-scripts/ProxmoxVE/pull/9793))
- Coolify ([#9792](https://github.com/community-scripts/ProxmoxVE/pull/9792))
### 🚀 Updated Scripts
- #### ✨ New Features
- Refactor: Zerotier-One [@tremor021](https://github.com/tremor021) ([#9804](https://github.com/community-scripts/ProxmoxVE/pull/9804))
- Refactor: Zabbix [@tremor021](https://github.com/tremor021) ([#9807](https://github.com/community-scripts/ProxmoxVE/pull/9807))
- #### 🔧 Refactor
- Refactor: Zigbee2MQTT [@tremor021](https://github.com/tremor021) ([#9803](https://github.com/community-scripts/ProxmoxVE/pull/9803))
- Refactor: Wordpress [@tremor021](https://github.com/tremor021) ([#9808](https://github.com/community-scripts/ProxmoxVE/pull/9808))
- Wizarr: Various fixes [@tremor021](https://github.com/tremor021) ([#9809](https://github.com/community-scripts/ProxmoxVE/pull/9809))
- Refactor: Wiki.js [@tremor021](https://github.com/tremor021) ([#9810](https://github.com/community-scripts/ProxmoxVE/pull/9810))
- Zammad: Various fixes [@tremor021](https://github.com/tremor021) ([#9805](https://github.com/community-scripts/ProxmoxVE/pull/9805))
- Refactor: Zipline [@tremor021](https://github.com/tremor021) ([#9801](https://github.com/community-scripts/ProxmoxVE/pull/9801))
### 💾 Core
- #### 🐞 Bug Fixes
- fix(tools): handle repos with 30+ pre-releases in check_for_gh_release [@vidonnus](https://github.com/vidonnus) ([#9786](https://github.com/community-scripts/ProxmoxVE/pull/9786))
- #### ✨ New Features
- Feature: extend advanced settings with more options & inherit app defaults [@MickLesk](https://github.com/MickLesk) ([#9776](https://github.com/community-scripts/ProxmoxVE/pull/9776))
### 📚 Documentation
- website: fix/check updateable flags [@MickLesk](https://github.com/MickLesk) ([#9777](https://github.com/community-scripts/ProxmoxVE/pull/9777))
- fixed grammar on alert that pops up when you copy the curl command [@Sarthak-Sidhant](https://github.com/Sarthak-Sidhant) ([#9799](https://github.com/community-scripts/ProxmoxVE/pull/9799))
### ❔ Uncategorized
- Website: Remove Palmr script [@tremor021](https://github.com/tremor021) ([#9824](https://github.com/community-scripts/ProxmoxVE/pull/9824))
## 2025-12-08
### 🚀 Updated Scripts
- typo: tandoor instead of trandoor [@Neonize](https://github.com/Neonize) ([#9771](https://github.com/community-scripts/ProxmoxVE/pull/9771))
- #### 🐞 Bug Fixes
- Tandoor: Remove postgres17-contrib package [@tremor021](https://github.com/tremor021) ([#9781](https://github.com/community-scripts/ProxmoxVE/pull/9781))
- #### ✨ New Features
- feat: Add var_gpu flag for GPU passthrough configuration [@MickLesk](https://github.com/MickLesk) ([#9764](https://github.com/community-scripts/ProxmoxVE/pull/9764))
### 💾 Core
- #### 🐞 Bug Fixes
- fix: always show SSH access dialog in advanced settings [@MickLesk](https://github.com/MickLesk) ([#9765](https://github.com/community-scripts/ProxmoxVE/pull/9765))
## 2025-12-07
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- wanderer: add meilisearch dumpless upgrade for database migration [@MickLesk](https://github.com/MickLesk) ([#9749](https://github.com/community-scripts/ProxmoxVE/pull/9749))
- #### 💥 Breaking Changes
- Refactor: Inventree (uses now ubuntu 24.04) [@MickLesk](https://github.com/MickLesk) ([#9752](https://github.com/community-scripts/ProxmoxVE/pull/9752))
- Revert Zammad: use Debian 12 and dynamic APT source version [@MickLesk](https://github.com/MickLesk) ([#9750](https://github.com/community-scripts/ProxmoxVE/pull/9750))
### 💾 Core
- #### 🐞 Bug Fixes
- tools.func: handle empty grep results in stop_all_services [@MickLesk](https://github.com/MickLesk) ([#9748](https://github.com/community-scripts/ProxmoxVE/pull/9748))
- Remove Debian from GPU passthrough [@MickLesk](https://github.com/MickLesk) ([#9754](https://github.com/community-scripts/ProxmoxVE/pull/9754))
- #### ✨ New Features
- core: motd - dynamically read OS version on each login [@MickLesk](https://github.com/MickLesk) ([#9751](https://github.com/community-scripts/ProxmoxVE/pull/9751))
### 🌐 Website
- FAQ update [@tremor021](https://github.com/tremor021) ([#9742](https://github.com/community-scripts/ProxmoxVE/pull/9742))
## 2025-12-06
### 🚀 Updated Scripts
- Update domain-locker-install.sh to enable auto-start after reboot [@alexindigo](https://github.com/alexindigo) ([#9715](https://github.com/community-scripts/ProxmoxVE/pull/9715))
- #### 🐞 Bug Fixes
- InfluxDB: Remove InfluxData source list post-installation [@tremor021](https://github.com/tremor021) ([#9723](https://github.com/community-scripts/ProxmoxVE/pull/9723))
- InfluxDB: Update InfluxDB repository key URL [@tremor021](https://github.com/tremor021) ([#9720](https://github.com/community-scripts/ProxmoxVE/pull/9720))
- #### ✨ New Features
- pin Portainer Update to CE Version only [@sgaert](https://github.com/sgaert) ([#9710](https://github.com/community-scripts/ProxmoxVE/pull/9710))
## 2025-12-05
### 🆕 New Scripts
- Endurain ([#9681](https://github.com/community-scripts/ProxmoxVE/pull/9681))
- MeTube ([#9671](https://github.com/community-scripts/ProxmoxVE/pull/9671))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- libretranslate: pin uv python to 3.12 (pytorch fix) [@MickLesk](https://github.com/MickLesk) ([#9699](https://github.com/community-scripts/ProxmoxVE/pull/9699))
- alpine: (mariadb/postgresql): correct php-cgi path for php83 (adminer) [@MickLesk](https://github.com/MickLesk) ([#9698](https://github.com/community-scripts/ProxmoxVE/pull/9698))
- fix(librespeed-rs): use correct service name [@jniles](https://github.com/jniles) ([#9683](https://github.com/community-scripts/ProxmoxVE/pull/9683))
- NetVisor: fix daemon auto-config [@vhsdream](https://github.com/vhsdream) ([#9682](https://github.com/community-scripts/ProxmoxVE/pull/9682))
- Improve NVIDIA device detection for container passthrough [@MickLesk](https://github.com/MickLesk) ([#9670](https://github.com/community-scripts/ProxmoxVE/pull/9670))
- Fix AdventureLog installation failure: missing postgis extension permissions [@Copilot](https://github.com/Copilot) ([#9674](https://github.com/community-scripts/ProxmoxVE/pull/9674))
- paperless: ASGI interface typo [@MickLesk](https://github.com/MickLesk) ([#9668](https://github.com/community-scripts/ProxmoxVE/pull/9668))
- var. core fixes (bash to sh in fix_gpu_gids ...) [@MickLesk](https://github.com/MickLesk) ([#9666](https://github.com/community-scripts/ProxmoxVE/pull/9666))
- #### ✨ New Features
- tools.func: handle GitHub 300 Multiple Choices in tarball mode [@MickLesk](https://github.com/MickLesk) ([#9697](https://github.com/community-scripts/ProxmoxVE/pull/9697))
- #### 🔧 Refactor
- Refactor: OneDev [@MickLesk](https://github.com/MickLesk) ([#9597](https://github.com/community-scripts/ProxmoxVE/pull/9597))
### 📂 Github
- chore(github): improve PR template and cleanup obsolete references | move contribution guide [@MickLesk](https://github.com/MickLesk) ([#9700](https://github.com/community-scripts/ProxmoxVE/pull/9700))
## 2025-12-04
### 🛠️ Core Overhaul
- Major refactor of the entire `/misc` subsystem introducing a secure, modular and fully extensible foundation for all future scripts.
Includes the new three-tier defaults architecture (ENV → App → User), strict variable whitelisting, safe `.vars` parsing without `source/eval`, centralized `error_handler.func`, structured logging, an improved 19-step advanced wizard, unified container creation, dedicated storage selector, updated sysctl handling, IPv6 disable mode, cloud-init library, SSH key auto-discovery, and a complete cleanup of legacy components.
Documentation added under `/docs/guides`.
[@MickLesk](https://github.com/MickLesk) ([#9540](https://github.com/community-scripts/ProxmoxVE/pull/9540))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix kimai.sh update script path typo for local.yaml [@Copilot](https://github.com/Copilot) ([#9645](https://github.com/community-scripts/ProxmoxVE/pull/9645))
- #### ✨ New Features
- core: extend storage type support (rbd, nfs, cifs) and validation (iscidirect, isci, zfs, cephfs, pbs) [@MickLesk](https://github.com/MickLesk) ([#9646](https://github.com/community-scripts/ProxmoxVE/pull/9646))
- #### 🔧 Refactor
- update pdm repo to stable [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9648](https://github.com/community-scripts/ProxmoxVE/pull/9648))
## 2025-12-03
### 🚀 Updated Scripts
- fix(opnsense-vm): improve script and add single-interface mode [@AlphaLawless](https://github.com/AlphaLawless) ([#9614](https://github.com/community-scripts/ProxmoxVE/pull/9614))
- #### 🐞 Bug Fixes
- Fix Homebridge update detection for Debian 13 DEB822 format [@Copilot](https://github.com/Copilot) ([#9629](https://github.com/community-scripts/ProxmoxVE/pull/9629))
- go2rtc: Add WorkingDirectory to go2rtc service configuration [@tremor021](https://github.com/tremor021) ([#9618](https://github.com/community-scripts/ProxmoxVE/pull/9618))
- #### 🔧 Refactor
- explicit node versions [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9594](https://github.com/community-scripts/ProxmoxVE/pull/9594))
### 🌐 Website
- Bump next from 15.5.2 to 15.5.7 in /frontend in the npm_and_yarn group across 1 directory [@dependabot[bot]](https://github.com/dependabot[bot]) ([#9632](https://github.com/community-scripts/ProxmoxVE/pull/9632))
- #### 📝 Script Information
- Update logo URL in swizzin.json [@MickLesk](https://github.com/MickLesk) ([#9627](https://github.com/community-scripts/ProxmoxVE/pull/9627))
## 2025-12-02
### 🆕 New Scripts
- Snowshare ([#9578](https://github.com/community-scripts/ProxmoxVE/pull/9578))
### 🚀 Updated Scripts
- NetVisor: patch systemd file to fix new OIDC config [@vhsdream](https://github.com/vhsdream) ([#9562](https://github.com/community-scripts/ProxmoxVE/pull/9562))
- Refactor: BookStack [@tremor021](https://github.com/tremor021) ([#9567](https://github.com/community-scripts/ProxmoxVE/pull/9567))
- #### 🐞 Bug Fixes
- Matterbridge: Fix ExecStart command in service install script to allow childbridge mode [@jonalbr](https://github.com/jonalbr) ([#9603](https://github.com/community-scripts/ProxmoxVE/pull/9603))
- Open-webui add .env backup and restore functionality from older versions [@DrDonoso](https://github.com/DrDonoso) ([#9592](https://github.com/community-scripts/ProxmoxVE/pull/9592))
- Booklore: Downgrad Java from 25 to 21 [@Pr0mises](https://github.com/Pr0mises) ([#9566](https://github.com/community-scripts/ProxmoxVE/pull/9566))
- #### ✨ New Features
- Set Valkey memory and eviction defaults [@pshankinclarke](https://github.com/pshankinclarke) ([#9602](https://github.com/community-scripts/ProxmoxVE/pull/9602))
- Add auth via requirepass to Valkey [@pshankinclarke](https://github.com/pshankinclarke) ([#9570](https://github.com/community-scripts/ProxmoxVE/pull/9570))
- #### 🔧 Refactor
- Refactor: 2FAuth [@tremor021](https://github.com/tremor021) ([#9582](https://github.com/community-scripts/ProxmoxVE/pull/9582))
- Refactor: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#9588](https://github.com/community-scripts/ProxmoxVE/pull/9588))
- Refactor: AdventureLog [@tremor021](https://github.com/tremor021) ([#9583](https://github.com/community-scripts/ProxmoxVE/pull/9583))
- CommaFeed: Bump Java and service file [@tremor021](https://github.com/tremor021) ([#9564](https://github.com/community-scripts/ProxmoxVE/pull/9564))
- Refactor: Docmost [@tremor021](https://github.com/tremor021) ([#9563](https://github.com/community-scripts/ProxmoxVE/pull/9563))
- Cloudflared: Add repo via helper function [@tremor021](https://github.com/tremor021) ([#9565](https://github.com/community-scripts/ProxmoxVE/pull/9565))
### 🧰 Maintenance
- #### 📝 Documentation
- add configuration and deployment guides to docs [@MickLesk](https://github.com/MickLesk) ([#9591](https://github.com/community-scripts/ProxmoxVE/pull/9591))
### 🌐 Website
- #### 📝 Script Information
- Update category for "Wanderer" [@Lorondos](https://github.com/Lorondos) ([#9607](https://github.com/community-scripts/ProxmoxVE/pull/9607))
## 2025-12-01
### 🆕 New Scripts
- Wanderer ([#9556](https://github.com/community-scripts/ProxmoxVE/pull/9556))
- core: add cloud-init.func library for VM configuration [@MickLesk](https://github.com/MickLesk) ([#9538](https://github.com/community-scripts/ProxmoxVE/pull/9538))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- core: sanitize appname for certificate generation [@tremor021](https://github.com/tremor021) ([#9552](https://github.com/community-scripts/ProxmoxVE/pull/9552))
- Fix Django superuser creation failing with ImproperlyConfigured error [@Copilot](https://github.com/Copilot) ([#9554](https://github.com/community-scripts/ProxmoxVE/pull/9554))
- #### ✨ New Features
- Bump Baikal to deb13 [@MickLesk](https://github.com/MickLesk) ([#9544](https://github.com/community-scripts/ProxmoxVE/pull/9544))
- Enhance MariaDB version fallback logic [@MickLesk](https://github.com/MickLesk) ([#9545](https://github.com/community-scripts/ProxmoxVE/pull/9545))
- #### 💥 Breaking Changes
- Refactor: Healthchecks [@MickLesk](https://github.com/MickLesk) ([#9188](https://github.com/community-scripts/ProxmoxVE/pull/9188))
- #### 🔧 Refactor
- Refactor: Mealie [@MickLesk](https://github.com/MickLesk) ([#9308](https://github.com/community-scripts/ProxmoxVE/pull/9308))
### 🧰 Maintenance
- #### 📂 Github
- add comprehensive documentation (core, develop, functions, technical guide, contributor guide) [@MickLesk](https://github.com/MickLesk) ([#9537](https://github.com/community-scripts/ProxmoxVE/pull/9537))
### 🌐 Website
- #### 📝 Script Information
- update selfhst icon-URLs to use @master path [@MickLesk](https://github.com/MickLesk) ([#9543](https://github.com/community-scripts/ProxmoxVE/pull/9543))
## 2025-11-30
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(recyclarr): remove update script systemctl commands [@vidonnus](https://github.com/vidonnus) ([#9522](https://github.com/community-scripts/ProxmoxVE/pull/9522))
- #### 🔧 Refactor
- Refactor: Actual Budget [@tremor021](https://github.com/tremor021) ([#9518](https://github.com/community-scripts/ProxmoxVE/pull/9518))
## 2025-11-29
### 🆕 New Scripts
- Valkey ([#9510](https://github.com/community-scripts/ProxmoxVE/pull/9510))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix duplicate ORIGIN in .env for OpenArchiver install script [@Copilot](https://github.com/Copilot) ([#9503](https://github.com/community-scripts/ProxmoxVE/pull/9503))
- #### 💥 Breaking Changes
- Remove: Documenso [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9507](https://github.com/community-scripts/ProxmoxVE/pull/9507))
### 🌐 Website
- Update Discord link on website [@tremor021](https://github.com/tremor021) ([#9499](https://github.com/community-scripts/ProxmoxVE/pull/9499))
## 2025-11-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Apache-guacamole: fixed to early rm [@mtorazzi](https://github.com/mtorazzi) ([#9492](https://github.com/community-scripts/ProxmoxVE/pull/9492))
- #### 💥 Breaking Changes
- Remove: Habitica [@MickLesk](https://github.com/MickLesk) ([#9489](https://github.com/community-scripts/ProxmoxVE/pull/9489))
## 2025-11-27
### 🆕 New Scripts
- Qdrant ([#9465](https://github.com/community-scripts/ProxmoxVE/pull/9465))
### 🚀 Updated Scripts
- #### 💥 Breaking Changes
- Upgrade pve-scripts-local to node 24 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9457](https://github.com/community-scripts/ProxmoxVE/pull/9457))
### 🌐 Website
- #### 🐞 Bug Fixes
- PBS: fix typo [@joshuaharmsen845](https://github.com/joshuaharmsen845) ([#9482](https://github.com/community-scripts/ProxmoxVE/pull/9482))
## 2025-11-26
### 🚀 Updated Scripts
- Joplin Server: Increase RAM for LXC [@tremor021](https://github.com/tremor021) ([#9460](https://github.com/community-scripts/ProxmoxVE/pull/9460))
- #### 🐞 Bug Fixes
- Fix Open WebUI update logic (swap upgrade/install) [@camcop](https://github.com/camcop) ([#9461](https://github.com/community-scripts/ProxmoxVE/pull/9461))
## 2025-11-25
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Open WebUI: Change install command to upgrade for Open-WebUI [@tremor021](https://github.com/tremor021) ([#9448](https://github.com/community-scripts/ProxmoxVE/pull/9448))
- core: set default LANG in locale configuration [@MickLesk](https://github.com/MickLesk) ([#9440](https://github.com/community-scripts/ProxmoxVE/pull/9440))
- documenso: switch to npm peer-.deps to get build running [@MickLesk](https://github.com/MickLesk) ([#9441](https://github.com/community-scripts/ProxmoxVE/pull/9441))
- Refactor Asterisk installation process [@MickLesk](https://github.com/MickLesk) ([#9429](https://github.com/community-scripts/ProxmoxVE/pull/9429))
- Fix the mikrotik VM installer after they reformatted their downloads page [@paul-ridgway](https://github.com/paul-ridgway) ([#9434](https://github.com/community-scripts/ProxmoxVE/pull/9434))
- paperless: patch consume to uv [@MickLesk](https://github.com/MickLesk) ([#9425](https://github.com/community-scripts/ProxmoxVE/pull/9425))
- #### ✨ New Features
- add Zabbix version selection to install and update scripts [@MickLesk](https://github.com/MickLesk) ([#9430](https://github.com/community-scripts/ProxmoxVE/pull/9430))
### 🧰 Maintenance
- #### 📂 Github
- gh: update supported PVE Version [@MickLesk](https://github.com/MickLesk) ([#9422](https://github.com/community-scripts/ProxmoxVE/pull/9422))
## 2025-11-24 ## 2025-11-24
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- core: remove uv cache clean command [@MickLesk](https://github.com/MickLesk) ([#9413](https://github.com/community-scripts/ProxmoxVE/pull/9413))
- Joplin-Server: Bump Node.js version from 22 to 24 [@tremor021](https://github.com/tremor021) ([#9405](https://github.com/community-scripts/ProxmoxVE/pull/9405))
- #### 🔧 Refactor
- [Fix]: Wizarr DB error during install [@vhsdream](https://github.com/vhsdream) ([#9415](https://github.com/community-scripts/ProxmoxVE/pull/9415))
### 🌐 Website
- #### 📝 Script Information
- Gitea: Update website [@tremor021](https://github.com/tremor021) ([#9406](https://github.com/community-scripts/ProxmoxVE/pull/9406))
- huntarr: disable on website during install issues [@MickLesk](https://github.com/MickLesk) ([#9403](https://github.com/community-scripts/ProxmoxVE/pull/9403))
## 2025-11-23 ## 2025-11-23
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@ -17,10 +17,10 @@
</p> </p>
<p> <p>
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md"> <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/docs/contribution/README.md">
<img src="https://img.shields.io/badge/🤝_Contribute-Guidelines-ff4785?style=for-the-badge&labelColor=2d3748" alt="Contribute" /> <img src="https://img.shields.io/badge/🤝_Contribute-Guidelines-ff4785?style=for-the-badge&labelColor=2d3748" alt="Contribute" />
</a> </a>
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md"> <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/docs/contribution/USER_SUBMITTED_GUIDES.md">
<img src="https://img.shields.io/badge/📚_Guides-Read-0077b5?style=for-the-badge&labelColor=2d3748" alt="Guides" /> <img src="https://img.shields.io/badge/📚_Guides-Read-0077b5?style=for-the-badge&labelColor=2d3748" alt="Guides" />
</a> </a>
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md"> <a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
@ -30,8 +30,8 @@
<br /> <br />
> **Simplify your Proxmox VE setup with community-driven automation scripts** > **Simplify your Proxmox VE setup with community-driven automation scripts**
> Originally created by tteck, now maintained and expanded by the community > Originally created by tteck, now maintained and expanded by the community
</div> </div>
@ -105,7 +105,7 @@
<tr> <tr>
<td align="center" width="33%"> <td align="center" width="33%">
<h3>🖥️ Proxmox VE</h3> <h3>🖥️ Proxmox VE</h3>
<p>Version 8.4.x or 9.0.x</p> <p>Version: 8.4.x | 9.0.x | 9.1.x</p>
</td> </td>
<td align="center" width="33%"> <td align="center" width="33%">
<h3>🐧 Operating System</h3> <h3>🐧 Operating System</h3>
@ -214,7 +214,7 @@ This adds a menu to your Proxmox interface for easy script access without visiti
<div align="center"> <div align="center">
<br /> <br />
👉 Check our **[Contributing Guidelines](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md)** to get started 👉 Check our **[Contributing Guidelines](https://github.com/community-scripts/ProxmoxVE/blob/main/docs/contribution/README.md)** to get started
</div> </div>

View File

@ -6,6 +6,7 @@ This project currently supports the following versions of Proxmox VE (PVE):
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 9.1.x | :white_check_mark: |
| 9.0.x | :white_check_mark: | | 9.0.x | :white_check_mark: |
| 8.4.x | :white_check_mark: | | 8.4.x | :white_check_mark: |
| 8.3.x | Limited support* ❕ | | 8.3.x | Limited support* ❕ |

View File

@ -40,10 +40,7 @@ function update_script() {
msg_ok "Backup Created" msg_ok "Backup Created"
if ! dpkg -l | grep -q 'php8.3'; then if ! dpkg -l | grep -q 'php8.3'; then
$STD apt-get install -y \ PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,mysql,cli,tokenizer,dom,redis,session,openssl" PHP_FPM="YES" setup_php
lsb-release \
gnupg2
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,mysql,cli" PHP_FPM="YES" setup_php
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
fi fi
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth" fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"

View File

@ -24,33 +24,32 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /opt/actualbudget_version.txt ]]; then if [[ ! -f ~/.actualbudget && ! -f /opt/actualbudget_version.txt ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(get_latest_github_release "actualbudget/actual")
if [[ -f /opt/actualbudget-data/config.json ]]; then if [[ -f /opt/actualbudget-data/config.json ]]; then
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then if check_for_gh_release "actualbudget" "actualbudget/actual"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop actualbudget systemctl stop actualbudget
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Updating Actual Budget to ${RELEASE}"
$STD npm update -g @actual-app/sync-server $STD npm update -g @actual-app/sync-server
echo "${RELEASE}" >/opt/actualbudget_version.txt echo "${RELEASE}" >~/.actualbudget
msg_ok "Updated ${APP} to ${RELEASE}" msg_ok "Updated Actual Budget to ${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start actualbudget systemctl start actualbudget
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_info "${APP} is already up to date"
fi fi
else else
msg_info "Old Installation Found, you need to migrate your data and recreate to a new container" msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
msg_info "Please follow the instructions on the ${APP} website to migrate your data" msg_info "Please follow the instructions on the Actual Budget website to migrate your data"
msg_info "https://actualbudget.org/docs/backup-restore/backup" msg_info "https://actualbudget.org/docs/backup-restore/backup"
exit exit
fi fi

View File

@ -45,10 +45,14 @@ function update_script() {
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv
msg_info "Ensuring PostgreSQL Extensions"
$STD sudo -u postgres psql -d adventurelog_db -c "CREATE EXTENSION IF NOT EXISTS postgis;"
msg_ok "PostgreSQL Extensions Ready"
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
cd /opt/adventurelog/backend/server || exit cd /opt/adventurelog/backend/server
if [[ ! -x .venv/bin/python ]]; then if [[ ! -x .venv/bin/python ]]; then
$STD uv venv .venv $STD uv venv .venv
$STD .venv/bin/python -m ensurepip --upgrade $STD .venv/bin/python -m ensurepip --upgrade
@ -59,7 +63,7 @@ function update_script() {
$STD .venv/bin/python -m manage migrate $STD .venv/bin/python -m manage migrate
cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
cd /opt/adventurelog/frontend || exit cd /opt/adventurelog/frontend
$STD pnpm i $STD pnpm i
$STD pnpm build $STD pnpm build
rm -rf /opt/adventurelog-backup rm -rf /opt/adventurelog-backup

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -37,8 +37,9 @@ function update_script() {
mv /opt/baikal /opt/baikal-backup mv /opt/baikal /opt/baikal-backup
msg_ok "Backed up data" msg_ok "Backed up data"
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal" PHP_APACHE="YES" PHP_MODULE="pgsql,curl" PHP_VERSION="8.3" setup_php
setup_composer setup_composer
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
msg_info "Configuring Baikal" msg_info "Configuring Baikal"
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/ cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/

View File

@ -45,7 +45,7 @@ function update_script() {
$STD npm run build --configuration=production $STD npm run build --configuration=production
msg_ok "Built Frontend" msg_ok "Built Frontend"
JAVA_VERSION="25" setup_java JAVA_VERSION="21" setup_java
msg_info "Building Backend" msg_info "Building Backend"
cd /opt/booklore/booklore-api cd /opt/booklore/booklore-api

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -51,7 +51,7 @@ function update_script() {
msg_info "Configuring BookStack" msg_info "Configuring BookStack"
cd /opt/bookstack cd /opt/bookstack
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev $STD /usr/local/bin/composer install --no-dev
$STD php artisan migrate --force $STD php artisan migrate --force
chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables
@ -38,4 +39,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}:8089${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8089${CL}"

View File

@ -24,11 +24,11 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /opt/${APP} ]]; then if [[ ! -d /opt/ComfyUI ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "To update use the ${APP} Manager." msg_error "To update use the ComfyUI Manager."
exit exit
} }

View File

@ -28,6 +28,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
JAVA_VERSION="25" setup_java
if check_for_gh_release "commafeed" "Athou/commafeed"; then if check_for_gh_release "commafeed" "Athou/commafeed"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop commafeed systemctl stop commafeed

46
ct/coolify.sh Normal file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://coolify.io/
APP="Coolify"
var_tags="${var_tags:-docker;paas}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-30}"
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 /data/coolify ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating Coolify"
$STD bash <(curl -fsSL https://cdn.coollabs.io/coolify/install.sh)
msg_ok "Updated Coolify"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

80
ct/discopanel.sh Normal file
View File

@ -0,0 +1,80 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: DragoQC
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://discopanel.app/
APP="DiscoPanel"
var_tags="${var_tags:-gaming}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-15}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d "/opt/discopanel" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_docker
if check_for_gh_release "discopanel" "nickheyer/discopanel"; then
msg_info "Stopping Service"
systemctl stop discopanel
msg_ok "Stopped Service"
msg_info "Creating Backup"
mkdir -p /opt/discopanel_backup_temp
cp -r /opt/discopanel/data/discopanel.db \
/opt/discopanel/data/.recovery_key \
/opt/discopanel_backup_temp/
if [[ -d /opt/discopanel/data/servers ]]; then
cp -r /opt/discopanel/data/servers /opt/discopanel_backup_temp/
fi
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "tarball" "latest" "/opt/discopanel"
msg_info "Setting up DiscoPanel"
cd /opt/discopanel/web/discopanel
$STD npm install
$STD npm run build
cd /opt/discopanel
$STD go build -o discopanel cmd/discopanel/main.go
msg_ok "Setup DiscoPanel"
msg_info "Restoring Data"
mkdir -p /opt/discopanel/data
cp -a /opt/discopanel_backup_temp/. /opt/discopanel/data/
rm -rf /opt/discopanel_backup_temp
msg_ok "Restored Data"
msg_info "Starting Service"
systemctl start discopanel
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

@ -87,6 +87,11 @@ function update_script() {
mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh
fi fi
if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >> /opt/dispatcharr/.env
fi
cd /opt/dispatcharr cd /opt/dispatcharr
rm -rf .venv rm -rf .venv
$STD uv venv $STD uv venv

View File

@ -47,7 +47,7 @@ function update_script() {
msg_ok "Docker Compose updated" msg_ok "Docker Compose updated"
fi fi
if docker ps -a --format '{{.Names}}' | grep -q '^portainer$'; then if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
msg_info "Updating Portainer" msg_info "Updating Portainer"
$STD docker pull portainer/portainer-ce:latest $STD docker pull portainer/portainer-ce:latest
$STD docker stop portainer && docker rm portainer $STD docker stop portainer && docker rm portainer

View File

@ -1,74 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/documenso/documenso
APP="Documenso"
var_tags="${var_tags:-document}"
var_disk="${var_disk:-12}"
var_cpu="${var_cpu:-6}"
var_ram="${var_ram:-6144}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/documenso ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop documenso
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/documenso/.env /opt/
rm -rf /opt/documenso
cd /opt
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
$STD unzip v${RELEASE}.zip
mv documenso-${RELEASE} /opt/documenso
cd /opt/documenso
mv /opt/.env /opt/documenso/.env
export TURBO_CACHE=1
export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm ci
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy
$STD turbo daemon stop
rm -rf /opt/v${RELEASE}.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start documenso
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

46
ct/dokploy.sh Normal file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://dokploy.com/
APP="Dokploy"
var_tags="${var_tags:-docker;paas}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-0}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /etc/dokploy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating Dokploy"
$STD bash <(curl -sSL https://dokploy.com/install.sh)
msg_ok "Updated Dokploy"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@ -34,7 +34,7 @@ function update_script() {
msg_info "Service stopped" msg_info "Service stopped"
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
setup_nodejs NODE_VERSION="22" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-locker" "Lissy93/domain-locker"
msg_info "Installing Modules (patience)" msg_info "Installing Modules (patience)"

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

83
ct/endurain.sh Normal file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: johanngrobe
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/joaovitoriasilva/endurain
APP="Endurain"
var_tags="${var_tags:-sport;social-media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/endurain ]]; then
msg_error "No ${APP} installation found!"
exit 1
fi
if check_for_gh_release "endurain" "joaovitoriasilva/endurain"; then
msg_info "Stopping Service"
systemctl stop endurain
msg_ok "Stopped Service"
msg_info "Creating Backup"
cp /opt/endurain/.env /opt/endurain.env
cp /opt/endurain/frontend/app/dist/env.js /opt/endurain.env.js
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "endurain" "joaovitoriasilva/endurain" "tarball" "latest" "/opt/endurain"
msg_info "Preparing Update"
cd /opt/endurain
rm -rf \
/opt/endurain/{docs,example.env,screenshot_01.png} \
/opt/endurain/docker* \
/opt/endurain/*.yml
cp /opt/endurain.env /opt/endurain/.env
rm /opt/endurain.env
msg_ok "Prepared Update"
msg_info "Updating Frontend"
cd /opt/endurain/frontend/app
$STD npm ci
$STD npm run build
cp /opt/endurain.env.js /opt/endurain/frontend/app/dist/env.js
rm /opt/endurain.env.js
msg_ok "Updated Frontend"
msg_info "Updating Backend"
cd /opt/endurain/backend
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
$STD uv venv
$STD uv pip install -r requirements.txt
msg_ok "Backend Updated"
msg_info "Starting Service"
systemctl start endurain
msg_ok "Started Service"
msg_ok "Update Completed 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}:8080${CL}"

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-20}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-11}" var_version="${var_version:-11}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables
@ -38,4 +39,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}:5000${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"

View File

@ -1,82 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/HabitRPG/habitica
APP="Habitica"
var_tags="${var_tags:-gaming}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d "/opt/habitica" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
if check_for_gh_release "habitica" "HabitRPG/habitica"; then
msg_info "Stopping Service"
systemctl stop habitica-mongodb
systemctl stop habitica
systemctl stop habitica-client
msg_info "Stopped Service"
msg_info "Save configuration"
if [[ -f /opt/habitica/config.json ]]; then
cp /opt/habitica/config.json ~/config.json
msg_ok "Saved configuration"
else
msg_warn "No configuration file found, skipping save"
fi
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Updating $APP"
cd /opt/habitica
$STD npm i
$STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
msg_ok "Updated $APP"
msg_info "Restoring configuration"
if [[ -f ~/config.json ]]; then
cp ~/config.json /opt/habitica/config.json
msg_ok "Restored configuration"
else
msg_warn "No configuration file found to restore"
fi
msg_info "Starting Service"
systemctl start habitica-mongodb
systemctl start habitica
systemctl start habitica-client
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

6
ct/headers/coolify Normal file
View File

@ -0,0 +1,6 @@
______ ___ ____
/ ____/___ ____ / (_) __/_ __
/ / / __ \/ __ \/ / / /_/ / / /
/ /___/ /_/ / /_/ / / / __/ /_/ /
\____/\____/\____/_/_/_/ \__, /
/____/

6
ct/headers/discopanel Normal file
View File

@ -0,0 +1,6 @@
____ _ ____ __
/ __ \(_)_____________ / __ \____ _____ ___ / /
/ / / / / ___/ ___/ __ \/ /_/ / __ `/ __ \/ _ \/ /
/ /_/ / (__ ) /__/ /_/ / ____/ /_/ / / / / __/ /
/_____/_/____/\___/\____/_/ \__,_/_/ /_/\___/_/

View File

@ -1,6 +0,0 @@
____
/ __ \____ _______ ______ ___ ___ ____ _________
/ / / / __ \/ ___/ / / / __ `__ \/ _ \/ __ \/ ___/ __ \
/ /_/ / /_/ / /__/ /_/ / / / / / / __/ / / (__ ) /_/ /
/_____/\____/\___/\__,_/_/ /_/ /_/\___/_/ /_/____/\____/

6
ct/headers/dokploy Normal file
View File

@ -0,0 +1,6 @@
____ __ __
/ __ \____ / /______ / /___ __ __
/ / / / __ \/ //_/ __ \/ / __ \/ / / /
/ /_/ / /_/ / ,< / /_/ / / /_/ / /_/ /
/_____/\____/_/|_/ .___/_/\____/\__, /
/_/ /____/

6
ct/headers/endurain Normal file
View File

@ -0,0 +1,6 @@
______ __ _
/ ____/___ ____/ /_ ___________ _(_)___
/ __/ / __ \/ __ / / / / ___/ __ `/ / __ \
/ /___/ / / / /_/ / /_/ / / / /_/ / / / / /
/_____/_/ /_/\__,_/\__,_/_/ \__,_/_/_/ /_/

View File

@ -1,6 +0,0 @@
__ __ __ _ __ _
/ / / /___ _/ /_ (_) /_(_)________ _
/ /_/ / __ `/ __ \/ / __/ / ___/ __ `/
/ __ / /_/ / /_/ / / /_/ / /__/ /_/ /
/_/ /_/\__,_/_.___/_/\__/_/\___/\__,_/

6
ct/headers/invoiceninja Normal file
View File

@ -0,0 +1,6 @@
____ _ _ ___ _
/ _/___ _ ______ (_)_______ / | / (_)___ (_)___ _
/ // __ \ | / / __ \/ / ___/ _ \/ |/ / / __ \ / / __ `/
_/ // / / / |/ / /_/ / / /__/ __/ /| / / / / / / / /_/ /
/___/_/ /_/|___/\____/_/\___/\___/_/ |_/_/_/ /_/_/ /\__,_/
/___/

6
ct/headers/metube Normal file
View File

@ -0,0 +1,6 @@
__ ___ ______ __
/ |/ /__/_ __/_ __/ /_ ___
/ /|_/ / _ \/ / / / / / __ \/ _ \
/ / / / __/ / / /_/ / /_/ / __/
/_/ /_/\___/_/ \__,_/_.___/\___/

6
ct/headers/qdrant Normal file
View File

@ -0,0 +1,6 @@
____ __ __
/ __ \____/ /________ _____ / /_
/ / / / __ / ___/ __ `/ __ \/ __/
/ /_/ / /_/ / / / /_/ / / / / /_
\___\_\__,_/_/ \__,_/_/ /_/\__/

6
ct/headers/snowshare Normal file
View File

@ -0,0 +1,6 @@
_____ _____ __
/ ___/____ ____ _ __/ ___// /_ ____ _________
\__ \/ __ \/ __ \ | /| / /\__ \/ __ \/ __ `/ ___/ _ \
___/ / / / / /_/ / |/ |/ /___/ / / / / /_/ / / / __/
/____/_/ /_/\____/|__/|__//____/_/ /_/\__,_/_/ \___/

View File

@ -0,0 +1,6 @@
_____ ____ __ ______ __
/ ___/____ ___ ___ ____/ / /____ _____/ /_ /_ __/________ ______/ /_____ _____
\__ \/ __ \/ _ \/ _ \/ __ / __/ _ \/ ___/ __/_____/ / / ___/ __ `/ ___/ //_/ _ \/ ___/
___/ / /_/ / __/ __/ /_/ / /_/ __(__ ) /_/_____/ / / / / /_/ / /__/ ,< / __/ /
/____/ .___/\___/\___/\__,_/\__/\___/____/\__/ /_/ /_/ \__,_/\___/_/|_|\___/_/
/_/

6
ct/headers/valkey Normal file
View File

@ -0,0 +1,6 @@
_ __ ____
| | / /___ _/ / /_____ __ __
| | / / __ `/ / //_/ _ \/ / / /
| |/ / /_/ / / ,< / __/ /_/ /
|___/\__,_/_/_/|_|\___/\__, /
/____/

6
ct/headers/wallabag Normal file
View File

@ -0,0 +1,6 @@
_ __ ____ __
| | / /___ _/ / /___ _/ /_ ____ _____ _
| | /| / / __ `/ / / __ `/ __ \/ __ `/ __ `/
| |/ |/ / /_/ / / / /_/ / /_/ / /_/ / /_/ /
|__/|__/\__,_/_/_/\__,_/_.___/\__,_/\__, /
/____/

6
ct/headers/wanderer Normal file
View File

@ -0,0 +1,6 @@
_ __ __
| | / /___ _____ ____/ /__ ________ _____
| | /| / / __ `/ __ \/ __ / _ \/ ___/ _ \/ ___/
| |/ |/ / /_/ / / / / /_/ / __/ / / __/ /
|__/|__/\__,_/_/ /_/\__,_/\___/_/ \___/_/

View File

@ -28,26 +28,42 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop healthchecks systemctl stop healthchecks
msg_ok "Stopped Services" msg_ok "Stopped Services"
PYTHON_VERSION="3.13" setup_uv msg_info "Backing up existing installation"
BACKUP="/opt/healthchecks-backup-$(date +%F-%H%M)"
cp -a /opt/healthchecks "$BACKUP"
msg_ok "Backup created at $BACKUP"
fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
msg_info "Updating healthchecks"
cd /opt/healthchecks cd /opt/healthchecks
mkdir -p /opt/healthchecks/static-collected/ if [[ -d venv ]]; then
$STD uv pip install wheel gunicorn -r requirements.txt --system rm -rf venv
$STD uv run -- python manage.py makemigrations fi
$STD uv run -- python manage.py migrate --noinput msg_info "Recreating Python venv"
$STD uv run -- python manage.py collectstatic --noinput $STD python3 -m venv venv
$STD uv run -- python manage.py compress $STD source venv/bin/activate
msg_ok "Updated healthchecks" $STD pip install --upgrade pip wheel
msg_ok "Created venv"
msg_info "Installing requirements"
$STD pip install gunicorn -r requirements.txt
msg_ok "Installed requirements"
msg_info "Running Django migrations"
$STD python manage.py migrate --noinput
$STD python manage.py collectstatic --noinput
$STD python manage.py compress
msg_ok "Completed Django migrations and static build"
msg_info "Starting Services" msg_info "Starting Services"
systemctl start healthchecks systemctl start healthchecks
systemctl restart caddy systemctl reload caddy
msg_ok "Started Services" msg_ok "Started Services"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi

View File

@ -23,7 +23,7 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/sources.list.d/homebridge.list ]]; then if ! dpkg -s homebridge >/dev/null 2>&1; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi

View File

@ -13,6 +13,7 @@ var_ram="${var_ram:-4096}"
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}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -10,8 +10,8 @@ var_tags="${var_tags:-inventory}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-13}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -28,10 +28,16 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP"
if ! grep -qE "^ID=(ubuntu)$" /etc/os-release; then
msg_error "Unsupported OS. InvenTree requires Ubuntu (20.04/22.04/24.04)."
exit
fi
msg_info "Updating InvenTree"
$STD apt update $STD apt update
$STD apt install --only-upgrade inventree -y $STD apt install --only-upgrade inventree -y
msg_ok "Updated $APP" msg_ok "Updated InvenTree"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

79
ct/invoiceninja.sh Normal file
View 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-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://invoiceninja.com/
APP="InvoiceNinja"
var_tags="${var_tags:-invoicing;business}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/invoiceninja ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "invoiceninja" "invoiceninja/invoiceninja"; then
msg_info "Stopping Services"
systemctl stop supervisor nginx php8.4-fpm
msg_ok "Stopped Services"
msg_info "Creating Backup"
mkdir -p /tmp/invoiceninja_backup
cp /opt/invoiceninja/.env /tmp/invoiceninja_backup/
cp -r /opt/invoiceninja/storage /tmp/invoiceninja_backup/ 2>/dev/null || true
cp -r /opt/invoiceninja/public/storage /tmp/invoiceninja_backup/public_storage 2>/dev/null || true
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
msg_info "Restoring Data"
cp /tmp/invoiceninja_backup/.env /opt/invoiceninja/
cp -r /tmp/invoiceninja_backup/storage/* /opt/invoiceninja/storage/ 2>/dev/null || true
cp -r /tmp/invoiceninja_backup/public_storage/* /opt/invoiceninja/public/storage/ 2>/dev/null || true
rm -rf /tmp/invoiceninja_backup
msg_ok "Restored Data"
msg_info "Running Migrations"
cd /opt/invoiceninja
$STD php artisan migrate --force
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan optimize
chown -R www-data:www-data /opt/invoiceninja
chmod -R 755 /opt/invoiceninja/storage
msg_ok "Ran Migrations"
msg_info "Starting Services"
systemctl start php8.4-fpm nginx supervisor
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}:8080/setup${CL}"

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-16}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Joplin-Server" APP="Joplin-Server"
var_tags="${var_tags:-notes}" var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-6144}"
var_disk="${var_disk:-20}" var_disk="${var_disk:-20}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
@ -28,6 +28,8 @@ function update_script() {
exit exit
fi fi
NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" setup_nodejs
if check_for_gh_release "joplin-server" "laurent22/joplin"; then if check_for_gh_release "joplin-server" "laurent22/joplin"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop joplin-server systemctl stop joplin-server

View File

@ -56,7 +56,7 @@ function update_script() {
[ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/ [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
rm -rf "$BACKUP_DIR" rm -rf "$BACKUP_DIR"
cd /opt/kimai cd /opt/kimai
sed -i '/^admin_lte:/,/^[^[:space:]]/d' config/local.yaml sed -i '/^admin_lte:/,/^[^[:space:]]/d' config/packages/local.yaml
$STD composer install --no-dev --optimize-autoloader $STD composer install --no-dev --optimize-autoloader
$STD bin/console kimai:update $STD bin/console kimai:update
msg_ok "Updated Kimai" msg_ok "Updated Kimai"

View File

@ -30,13 +30,13 @@ function update_script() {
if check_for_gh_release "librespeed-rust" "librespeed/speedtest-rust"; then if check_for_gh_release "librespeed-rust" "librespeed/speedtest-rust"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop librespeed_rs systemctl stop speedtest_rs
msg_ok "Services Stopped" msg_ok "Services Stopped"
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb" fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start librespeed_rs systemctl start speedtest_rs
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi

View File

@ -29,7 +29,7 @@ function update_script() {
exit exit
fi fi
setup_uv PYTHON_VERSION="3.12" setup_uv
if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then
msg_info "Stopping Service" msg_info "Stopping Service"
@ -39,7 +39,7 @@ function update_script() {
msg_info "Updating LibreTranslate" msg_info "Updating LibreTranslate"
cd /opt/libretranslate cd /opt/libretranslate
source .venv/bin/activate source .venv/bin/activate
$STD pip install -U libretranslate $STD uv pip install -U libretranslate
msg_ok "Updated LibreTranslate" msg_ok "Updated LibreTranslate"
msg_info "Starting Service" msg_info "Starting Service"

View File

@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Mealie" APP="Mealie"
var_tags="${var_tags:-recipes}" var_tags="${var_tags:-recipes}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
@ -30,53 +30,61 @@ function update_script() {
fi fi
if check_for_gh_release "mealie" "mealie-recipes/mealie"; then if check_for_gh_release "mealie" "mealie-recipes/mealie"; then
PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12" setup_uv
NODE_MODULE="yarn" NODE_VERSION="20" setup_nodejs NODE_MODULE="yarn" NODE_VERSION="24" setup_nodejs
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop mealie systemctl stop mealie
msg_info "Stopped Service" msg_ok "Stopped Service"
msg_info "Backing up .env and start.sh" msg_info "Backing up Configuration"
cp -f /opt/mealie/mealie.env /opt/mealie/mealie.env.bak cp -f /opt/mealie/mealie.env /opt/mealie.env
cp -f /opt/mealie/start.sh /opt/mealie/start.sh.bak
msg_ok "Backup completed" msg_ok "Backup completed"
fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" "latest" "/opt/mealie"
msg_info "Rebuilding Frontend" msg_info "Installing Python Dependencies with uv"
cd /opt/mealie
$STD uv sync --frozen --extra pgsql
msg_ok "Installed Python Dependencies"
msg_info "Building Frontend"
MEALIE_VERSION=$(<$HOME/.mealie)
$STD sed -i "s|https://github.com/mealie-recipes/mealie/commit/|https://github.com/mealie-recipes/mealie/releases/tag/|g" /opt/mealie/frontend/pages/admin/site-settings.vue
$STD sed -i "s|value: data.buildId,|value: \"v${MEALIE_VERSION}\",|g" /opt/mealie/frontend/pages/admin/site-settings.vue
$STD sed -i "s|value: data.production ? i18n.t(\"about.production\") : i18n.t(\"about.development\"),|value: \"bare-metal\",|g" /opt/mealie/frontend/pages/admin/site-settings.vue
export NUXT_TELEMETRY_DISABLED=1 export NUXT_TELEMETRY_DISABLED=1
cd /opt/mealie/frontend cd /opt/mealie/frontend
$STD yarn install --prefer-offline --frozen-lockfile --non-interactive --production=false --network-timeout 1000000 $STD yarn install --prefer-offline --frozen-lockfile --non-interactive --production=false --network-timeout 1000000
$STD yarn generate $STD yarn generate
cp -r /opt/mealie/frontend/dist /opt/mealie/mealie/frontend msg_ok "Built Frontend"
msg_ok "Frontend rebuilt"
msg_info "Rebuilding Backend Environment" msg_info "Copying Built Frontend"
mkdir -p /opt/mealie/mealie/frontend
cp -r /opt/mealie/frontend/dist/* /opt/mealie/mealie/frontend/
msg_ok "Copied Frontend"
msg_info "Updating NLTK Data"
mkdir -p /nltk_data/
cd /opt/mealie cd /opt/mealie
$STD /opt/mealie/.venv/bin/poetry self add "poetry-plugin-export>=1.9" $STD uv run python -m nltk.downloader -d /nltk_data averaged_perceptron_tagger_eng
MEALIE_VERSION=$(/opt/mealie/.venv/bin/poetry version --short) msg_ok "Updated NLTK Data"
$STD /opt/mealie/.venv/bin/poetry build --output dist
$STD /opt/mealie/.venv/bin/poetry export --only=main --extras=pgsql --output=dist/requirements.txt
echo "mealie[pgsql]==$MEALIE_VERSION \\" >>dist/requirements.txt
/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.whl | tail -n1 | tr -d '\n' >>dist/requirements.txt
echo " \\" >>dist/requirements.txt
/opt/mealie/.venv/bin/poetry run pip hash dist/mealie-$MEALIE_VERSION*.tar.gz | tail -n1 >>dist/requirements.txt
msg_ok "Backend prepared"
msg_info "Finalize Installation"
$STD /opt/mealie/.venv/bin/uv pip install --require-hashes -r /opt/mealie/dist/requirements.txt --find-links dist
msg_ok "Mealie installed"
msg_info "Restoring Configuration" msg_info "Restoring Configuration"
mv -f /opt/mealie/mealie.env.bak /opt/mealie/mealie.env mv -f /opt/mealie.env /opt/mealie/mealie.env
mv -f /opt/mealie/start.sh.bak /opt/mealie/start.sh cat <<'STARTEOF' >/opt/mealie/start.sh
#!/bin/bash
set -a
source /opt/mealie/mealie.env
set +a
exec uv run mealie
STARTEOF
chmod +x /opt/mealie/start.sh chmod +x /opt/mealie/start.sh
msg_ok "Configuration restored" msg_ok "Configuration restored"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start mealie systemctl start mealie
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Update Successful" msg_ok "Updated successfully"
fi fi
exit exit
} }
@ -89,3 +97,4 @@ 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}:9000${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"

113
ct/metube.sh Normal file
View File

@ -0,0 +1,113 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alexta69/metube
APP="MeTube"
var_tags="${var_tags:-media;youtube}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/metube ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then
echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc
source ~/.bashrc
if ! command -v deno &>/dev/null; then
export DENO_INSTALL="/usr/local"
curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y
else
$STD deno upgrade
fi
fi
if check_for_gh_release "metube" "alexta69/metube"; then
msg_info "Stopping Service"
systemctl stop metube
msg_ok "Stopped Service"
msg_info "Backing up Old Installation"
if [[ -d /opt/metube_bak ]]; then
rm -rf /opt/metube_bak
fi
mv /opt/metube /opt/metube_bak
msg_ok "Backup created"
fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
msg_info "Building Frontend"
cd /opt/metube/ui
$STD npm install
$STD node_modules/.bin/ng build
msg_ok "Built Frontend"
PYTHON_VERSION="3.13" setup_uv
msg_info "Installing Backend Requirements"
cd /opt/metube
$STD uv sync
msg_ok "Installed Backend"
msg_info "Restoring .env"
if [[ -f /opt/metube_bak/.env ]]; then
cp /opt/metube_bak/.env /opt/metube/.env
fi
rm -rf /opt/metube_bak
msg_ok "Restored .env"
if grep -q 'pipenv' /etc/systemd/system/metube.service; then
msg_info "Patching systemd Service"
cat <<EOF >/etc/systemd/system/metube.service
[Unit]
Description=Metube - YouTube Downloader
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/metube
EnvironmentFile=/opt/metube/.env
ExecStart=/opt/metube/.venv/bin/python3 app/main.py
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Patched systemd Service"
fi
$STD systemctl daemon-reload
msg_ok "Service Updated"
msg_info "Starting Service"
systemctl start metube
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"

View File

@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream # Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/maynayza/netvisor # Source: https://github.com/netvisor-io/netvisor
APP="NetVisor" APP="NetVisor"
var_tags="${var_tags:-analytics}" var_tags="${var_tags:-analytics}"
@ -29,16 +29,19 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "netvisor" "mayanayza/netvisor"; then if check_for_gh_release "netvisor" "netvisor-io/netvisor"; then
msg_info "Stopping services" msg_info "Stopping services"
systemctl stop netvisor-daemon netvisor-server systemctl stop netvisor-daemon netvisor-server
msg_ok "Stopped services" msg_ok "Stopped services"
msg_info "Backing up configurations" msg_info "Backing up configurations"
cp /opt/netvisor/.env /opt/netvisor.env.bak cp /opt/netvisor/.env /opt/netvisor.env.bak
if [[ -f /opt/netvisor/oidc.toml ]]; then
cp /opt/netvisor/oidc.toml /opt/netvisor.oidc.toml
fi
msg_ok "Backed up configurations" msg_ok "Backed up configurations"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "netvisor-io/netvisor" "tarball" "latest" "/opt/netvisor"
if ! dpkg -l | grep -q "pkg-config"; then if ! dpkg -l | grep -q "pkg-config"; then
$STD apt install -y pkg-config $STD apt install -y pkg-config
@ -49,7 +52,10 @@ function update_script() {
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')" TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
cp /opt/netvisor.env.bak /opt/netvisor/.env mv /opt/netvisor.env.bak /opt/netvisor/.env
if [[ -f /opt/netvisor.oidc.toml ]]; then
mv /opt/netvisor.oidc.toml /opt/netvisor/oidc.toml
fi
LOCAL_IP="$(hostname -I | awk '{print $1}')" LOCAL_IP="$(hostname -I | awk '{print $1}')"
if ! grep -q "PUBLIC_URL" /opt/netvisor/.env; then if ! grep -q "PUBLIC_URL" /opt/netvisor/.env; then
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/netvisor/.env
@ -79,6 +85,9 @@ function update_script() {
-e 's| --server-port |:|' \ -e 's| --server-port |:|' \
/etc/systemd/system/netvisor-daemon.service /etc/systemd/system/netvisor-daemon.service
sed -i '/^ \"server_target.*$/d' /root/.config/daemon/config.json sed -i '/^ \"server_target.*$/d' /root/.config/daemon/config.json
if ! grep -q "WorkingD" /etc/systemd/system/netvisor-server.service; then
sed -i '\|simple$|a\WorkingDirectory=/opt/netvisor/backend' /etc/systemd/system/netvisor-server.service
fi
systemctl daemon-reload systemctl daemon-reload
msg_info "Starting services" msg_info "Starting services"
@ -96,3 +105,4 @@ 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}:60072${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:60072${CL}"
echo -e "${INFO}${YW} Then create your account, and run the 'configure_daemon.sh' script to setup the daemon.${CL}"

View File

@ -12,6 +12,7 @@ var_ram="${var_ram:-4096}"
var_disk="${var_disk:-35}" var_disk="${var_disk:-35}"
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}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -30,7 +30,7 @@ function update_script() {
msg_info "Updating MongoDB" msg_info "Updating MongoDB"
if lscpu | grep -q 'avx'; then if lscpu | grep -q 'avx'; then
MONGO_VERSION="8.0" setup_mongodb MONGO_VERSION="8.0"
else else
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs." msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs."
exit 10 exit 10

View File

@ -27,31 +27,30 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
GITHUB_RELEASE=$(curl -fsSL https://api.github.com/repos/theonedev/onedev/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${GITHUB_RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if check_for_gh_release "onedev" "theonedev/onedev"; then
JAVA_VERSION="21" setup_java
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop onedev systemctl stop onedev
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${GITHUB_RELEASE}" msg_info "Updating OneDev"
cd /opt cd /opt
curl -fsSL "https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz" -o $(basename "https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz") curl -fsSL "https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz" -o onedev-latest.tar.gz
tar -xzf onedev-latest.tar.gz tar -xzf onedev-latest.tar.gz
$STD /opt/onedev-latest/bin/upgrade.sh /opt/onedev $STD /opt/onedev-latest/bin/upgrade.sh /opt/onedev
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
rm -rf /opt/onedev-latest rm -rf /opt/onedev-latest
rm -rf /opt/onedev-latest.tar.gz rm -rf /opt/onedev-latest.tar.gz
echo "${RELEASE}" >"/opt/${APP}_version.txt" echo "${CHECK_UPDATE_RELEASE}" >~/.onedev
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated OneDev"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start onedev systemctl start onedev
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else exit
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi fi
exit
} }
start start

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-25}"
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}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables
@ -33,6 +34,7 @@ function update_script() {
msg_info "Creating Backup" msg_info "Creating Backup"
mkdir -p /opt/open-webui-backup mkdir -p /opt/open-webui-backup
cp -a /opt/open-webui/backend/data /opt/open-webui-backup/data || true cp -a /opt/open-webui/backend/data /opt/open-webui-backup/data || true
cp -a /opt/open-webui/.env /opt/open-webui-backup/.env || true
msg_ok "Created Backup" msg_ok "Created Backup"
msg_info "Removing legacy installation" msg_info "Removing legacy installation"
@ -48,6 +50,7 @@ function update_script() {
msg_info "Restoring data" msg_info "Restoring data"
mkdir -p /root/.open-webui mkdir -p /root/.open-webui
cp -a /opt/open-webui-backup/data/* /root/.open-webui/ || true cp -a /opt/open-webui-backup/data/* /root/.open-webui/ || true
cp -a /opt/open-webui-backup/.env /root/.env || true
rm -rf /opt/open-webui-backup || true rm -rf /opt/open-webui-backup || true
msg_ok "Restored data" msg_ok "Restored data"
@ -108,7 +111,7 @@ EOF
msg_info "Updating Open WebUI via uv" msg_info "Updating Open WebUI via uv"
PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12" setup_uv
$STD uv tool install --python 3.12 open-webui[all] $STD uv tool upgrade --python 3.12 open-webui[all]
systemctl restart open-webui systemctl restart open-webui
msg_ok "Updated Open WebUI" msg_ok "Updated Open WebUI"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"

View File

@ -27,58 +27,33 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! dpkg -s python3-pip >/dev/null 2>&1; then
$STD apt install -y python3-pip if check_for_gh_release "paperless-ai" "clusterzx/paperless-ai"; then
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop paperless-ai systemctl stop paperless-ai paperless-rag
msg_info "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating $APP to v${RELEASE}" fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai"
cd /opt
mv /opt/paperless-ai /opt/paperless-ai_bak msg_info "Updating Paperless-AI"
curl -fsSL "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip")
$STD unzip v${RELEASE}.zip
mv paperless-ai-${RELEASE} /opt/paperless-ai
mkdir -p /opt/paperless-ai/data
cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/
cd /opt/paperless-ai cd /opt/paperless-ai
if [[ ! -f /etc/systemd/system/paperless-rag.service ]]; then source /opt/paperless-ai/venv/bin/activate
cat <<EOF >/etc/systemd/system/paperless-rag.service $STD pip install --upgrade pip
[Unit]
Description=PaperlessAI-RAG Service
After=network.target
[Service]
WorkingDirectory=/opt/paperless-ai
ExecStart=/usr/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize
Restart=always
[Install]
WantedBy=multi-user.target
EOF
echo "RAG_SERVICE_URL=http://localhost:8000" >>/opt/paperless-ai/data/.env
echo "RAG_SERVICE_ENABLED=true" >>/opt/paperless-ai/data/.env
fi
$STD pip install --no-cache-dir -r requirements.txt $STD pip install --no-cache-dir -r requirements.txt
mkdir -p data/chromadb mkdir -p data/chromadb
$STD npm install $STD npm ci --only=production
rm -rf /opt/v${RELEASE}.zip msg_ok "Updated Paperless-AI"
rm -rf /opt/paperless-ai_bak
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start paperless-rag
sleep 3
systemctl start paperless-ai systemctl start paperless-ai
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit exit
} }
start start
build_container build_container
description description

View File

@ -28,12 +28,12 @@ function update_script() {
exit exit
fi fi
# Check for old data structure and prompt migration # Check for old data structure and prompt migration (exclude symlinks)
if [[ -f /opt/paperless/paperless.conf ]]; then if [[ -f /opt/paperless/paperless.conf ]]; then
local OLD_DIRS=() local OLD_DIRS=()
[[ -d /opt/paperless/consume ]] && OLD_DIRS+=("consume") [[ -d /opt/paperless/consume && ! -L /opt/paperless/consume ]] && OLD_DIRS+=("consume")
[[ -d /opt/paperless/data ]] && OLD_DIRS+=("data") [[ -d /opt/paperless/data && ! -L /opt/paperless/data ]] && OLD_DIRS+=("data")
[[ -d /opt/paperless/media ]] && OLD_DIRS+=("media") [[ -d /opt/paperless/media && ! -L /opt/paperless/media ]] && OLD_DIRS+=("media")
if [[ ${#OLD_DIRS[@]} -gt 0 ]]; then if [[ ${#OLD_DIRS[@]} -gt 0 ]]; then
msg_error "Old data structure detected in /opt/paperless/" msg_error "Old data structure detected in /opt/paperless/"
@ -105,6 +105,7 @@ function update_script() {
msg_ok "Backup completed to $BACKUP_DIR" msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=( declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO" ["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO" ["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\"" ["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables
@ -23,8 +24,8 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] \ if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]] &&
&& [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi

View File

@ -37,6 +37,20 @@ function update_script() {
msg_ok "Updated old sources" msg_ok "Updated old sources"
fi fi
if grep -q 'Debian GNU/Linux 13' /etc/os-release; then
if [ -f "/etc/apt/sources.list.d/pdm-test.sources" ]; then
if ! grep -qx "Enabled: false" "/etc/apt/sources.list.d/pdm-test.sources"; then
echo "Enabled: false" >> "/etc/apt/sources.list.d/pdm-test.sources"
setup_deb822_repo \
"pdm" \
"https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg" \
"http://download.proxmox.com/debian/pdm" \
"trixie" \
"pdm-no-subscription"
fi
fi
fi
msg_info "Updating $APP LXC" msg_info "Updating $APP LXC"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt -y upgrade

View File

@ -27,42 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"; then msg_custom "🚀" "${GN}" "The app offers a built-in updater. Please use it."
msg_info "Stopping Services"
systemctl stop pvescriptslocal
msg_ok "Stopped Services"
msg_info "Backup Data"
cp /opt/ProxmoxVE-Local/.env /opt/.env.bak
cp -r /opt/ProxmoxVE-Local/data /opt/data.bak
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"
msg_info "Restoring Data"
if [[ -f /opt/.env.bak ]]; then
mv /opt/.env.bak /opt/ProxmoxVE-Local/.env
fi
if [[ -d /opt/data.bak ]]; then
rm -rf /opt/ProxmoxVE-Local/data
mv /opt/data.bak /opt/ProxmoxVE-Local/data
fi
msg_ok "Restored Data"
msg_info "Updating PVE Scripts local"
cd /opt/ProxmoxVE-Local
chmod 755 data
$STD npm install
$STD npm run build
msg_ok "Updated PVE Scripts local"
msg_info "Starting Services"
systemctl start pvescriptslocal
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
} }
start start

45
ct/qdrant.sh Normal file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/qdrant/qdrant
APP="Qdrant"
var_tags="${var_tags:-database;vector}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/lib/qdrant ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "qdrant" "qdrant/qdrant"; then
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
chown -R root:root /var/lib/qdrant
chmod -R 755 /var/lib/qdrant
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6333/dashboard${CL}"

View File

@ -29,15 +29,10 @@ function update_script() {
fi fi
if check_for_gh_release "recyclarr" "recyclarr/recyclarr"; then if check_for_gh_release "recyclarr" "recyclarr/recyclarr"; then
msg_info "Stopping Service" msg_info "Updating ${APP}"
systemctl stop recyclarr
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz" fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
msg_info "Starting Service"
systemctl start recyclarr
msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit

View File

@ -36,16 +36,16 @@ function update_script() {
systemctl stop nginx systemctl stop nginx
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Creating backup" msg_info "Creating Backup"
mv /opt/snipe-it /opt/snipe-it-backup mv /opt/snipe-it /opt/snipe-it-backup
msg_ok "Backup created" msg_ok "Created Backup"
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball" fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
[[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php [[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_MODULE="common,ctype,ldap,fileinfo,iconv,mysql,soap,xsl" PHP_FPM="YES" setup_php
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf
setup_composer setup_composer
msg_info "Updating ${APP}" msg_info "Updating Snipe-IT"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt -y upgrade
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
@ -63,7 +63,7 @@ function update_script() {
chown -R www-data: /opt/snipe-it chown -R www-data: /opt/snipe-it
chmod -R 755 /opt/snipe-it chmod -R 755 /opt/snipe-it
rm -rf /opt/snipe-it-backup rm -rf /opt/snipe-it-backup
msg_ok "Updated ${APP}" msg_ok "Updated Snipe-IT"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start nginx systemctl start nginx

60
ct/snowshare.sh Normal file
View File

@ -0,0 +1,60 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: TuroYT
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/TuroYT/snowshare
APP="SnowShare"
var_tags="${var_tags:-file-sharing}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/snowshare ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "snowshare" "TuroYT/snowshare"; then
msg_info "Stopping Service"
systemctl stop snowshare
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare"
msg_info "Updating Snowshare"
cd /opt/snowshare
$STD npm ci
$STD npx prisma generate
$STD npm run build
msg_ok "Updated Snowshare"
msg_info "Starting Service"
systemctl start snowshare
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@ -33,30 +33,30 @@ function update_script() {
systemctl stop sonarqube systemctl stop sonarqube
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Creating backup" msg_info "Creating Backup"
BACKUP_DIR="/opt/sonarqube-backup" BACKUP_DIR="/opt/sonarqube-backup"
mv /opt/sonarqube ${BACKUP_DIR} mv /opt/sonarqube ${BACKUP_DIR}
msg_ok "Backup created" msg_ok "Created Backup"
msg_info "Installing sonarqube" msg_info "Updating SonarQube"
temp_file=$(mktemp) temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube mv /opt/sonarqube-* /opt/sonarqube
msg_ok "Installed sonarqube" msg_ok "Updated SonarQube"
msg_info "Restoring backup" msg_info "Restoring Backup"
cp -rp ${BACKUP_DIR}/data/ /opt/sonarqube/data/ cp -rp ${BACKUP_DIR}/data/ /opt/sonarqube/data/
cp -rp ${BACKUP_DIR}/extensions/ /opt/sonarqube/extensions/ cp -rp ${BACKUP_DIR}/extensions/ /opt/sonarqube/extensions/
cp -p ${BACKUP_DIR}/conf/sonar.properties /opt/sonarqube/conf/sonar.properties cp -p ${BACKUP_DIR}/conf/sonar.properties /opt/sonarqube/conf/sonar.properties
rm -rf ${BACKUP_DIR} rm -rf ${BACKUP_DIR}
chown -R sonarqube:sonarqube /opt/sonarqube chown -R sonarqube:sonarqube /opt/sonarqube
msg_ok "Backup restored" msg_ok "Restored Backup"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start sonarqube systemctl start sonarqube
msg_ok "Service started" msg_ok "Service Started"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit

View File

@ -27,6 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop sonarr systemctl stop sonarr
msg_ok "Stopped Service" msg_ok "Stopped Service"
@ -38,6 +39,7 @@ function update_script() {
mv Sonarr /opt mv Sonarr /opt
rm -rf SonarrV4.tar.gz rm -rf SonarrV4.tar.gz
msg_ok "Updated Sonarr" msg_ok "Updated Sonarr"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start sonarr systemctl start sonarr
msg_ok "Started Service" msg_ok "Started Service"

83
ct/speedtest-tracker.sh Normal file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: AlphaLawless
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/alexjustesen/speedtest-tracker
APP="Speedtest-Tracker"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/speedtest-tracker ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker"; then
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
msg_info "Stopping Service"
systemctl stop speedtest-tracker
msg_ok "Stopped Service"
msg_info "Updating Speedtest CLI"
$STD apt update
$STD apt --only-upgrade install -y speedtest
msg_ok "Updated Speedtest CLI"
msg_info "Creating Backup"
cp -r /opt/speedtest-tracker /opt/speedtest-tracker-backup
msg_ok "Backup Created"
fetch_and_deploy_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker" "tarball" "latest" "/opt/speedtest-tracker"
msg_info "Updating Speedtest Tracker"
cp -r /opt/speedtest-tracker-backup/.env /opt/speedtest-tracker/.env
cd /opt/speedtest-tracker
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --optimize-autoloader --no-dev
$STD npm ci
$STD npm run build
$STD php artisan migrate --force
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan view:clear
chown -R www-data:www-data /opt/speedtest-tracker
chmod -R 755 /opt/speedtest-tracker/storage
chmod -R 755 /opt/speedtest-tracker/bootstrap/cache
msg_ok "Updated Speedtest Tracker"
msg_info "Starting Service"
systemctl start speedtest-tracker
msg_ok "Started Service"
msg_ok "Updated successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@ -27,32 +27,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://github.com/Donkie/Spoolman/releases/latest | grep "title>Release" | cut -d " " -f 4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if check_for_gh_release "spoolman" "Donkie/Spoolman"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop spoolman systemctl stop spoolman
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating Backup"
cd /opt [ -d /opt/spoolman_bak ] && rm -rf /opt/spoolman_bak
rm -rf spoolman_bak mv /opt/spoolman /opt/spoolman_bak
mv spoolman spoolman_bak msg_ok "Created Backup"
curl -fsSL "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip" -o $(basename "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip")
$STD unzip spoolman.zip -d spoolman fetch_and_deploy_gh_release "spoolman" "Donkie/Spoolman" "prebuild" "latest" "/opt/spoolman" "spoolman.zip"
cd spoolman
msg_info "Updating Spoolman"
cd /opt/spoolman
$STD pip3 install -r requirements.txt $STD pip3 install -r requirements.txt
curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env" cp /opt/spoolman_bak/.env /opt/spoolman
rm -rf /opt/spoolman.zip msg_ok "Updated Spoolman"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start spoolman systemctl start spoolman
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

View File

@ -27,9 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP} LXC"
msg_info "Updating Syncthing"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

View File

@ -55,7 +55,7 @@ function update_script() {
cd /opt/tandoor/vue3 cd /opt/tandoor/vue3
$STD yarn install $STD yarn install
$STD yarn build $STD yarn build
TANDOOR_VERSION="$(curl -fsSL https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r .tag_name)" TANDOOR_VERSION=$(get_latest_github_release "TandoorRecipes/recipes")
cat <<EOF >/opt/tandoor/cookbook/version_info.py cat <<EOF >/opt/tandoor/cookbook/version_info.py
TANDOOR_VERSION = "$TANDOOR_VERSION" TANDOOR_VERSION = "$TANDOOR_VERSION"
TANDOOR_REF = "bare-metal" TANDOOR_REF = "bare-metal"
@ -65,7 +65,7 @@ EOF
$STD /opt/tandoor/.venv/bin/python manage.py migrate $STD /opt/tandoor/.venv/bin/python manage.py migrate
$STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input $STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
rm -rf /opt/tandoor.bak rm -rf /opt/tandoor.bak
msg_ok "Updated Trandoor" msg_ok "Updated Tandoor"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start tandoor systemctl start tandoor

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -30,6 +30,14 @@ function update_script() {
if is_package_installed "aspnetcore-runtime-8.0"; then if is_package_installed "aspnetcore-runtime-8.0"; then
$STD apt remove -y aspnetcore-runtime-8.0 $STD apt remove -y aspnetcore-runtime-8.0
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
[ -f /usr/share/keyrings/microsoft-prod.gpg ] && rm -f /usr/share/keyrings/microsoft-prod.gpg
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie" \
"main"
$STD apt install -y aspnetcore-runtime-9.0 $STD apt install -y aspnetcore-runtime-9.0
fi fi

View File

@ -28,7 +28,6 @@ function update_script() {
fi fi
setup_uv setup_uv
if check_for_gh_release "tianji" "msgbyte/tianji"; then if check_for_gh_release "tianji" "msgbyte/tianji"; then
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs

View File

@ -65,7 +65,7 @@ EOF
fi fi
msg_ok "Corrected Services" msg_ok "Corrected Services"
setup_nodejs NODE_VERSION="22" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
msg_info "Updating tracktor" msg_info "Updating tracktor"

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-5}"
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}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables
@ -39,7 +40,9 @@ function update_script() {
msg_error "Backup failed: /usr/local/share/tunarr does not exist" msg_error "Backup failed: /usr/local/share/tunarr does not exist"
fi fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "prebuild" "latest" "/opt/tunarr" "*linux-x64.tar.gz"
cd /opt/tunarr
mv tunarr* tunarr
msg_info "Starting Service" msg_info "Starting Service"
systemctl start tunarr systemctl start tunarr

View File

@ -37,8 +37,8 @@ function update_script() {
msg_info "Updating Umami" msg_info "Updating Umami"
cd /opt/umami cd /opt/umami
$STD yarn install $STD pnpm install
$STD yarn run build $STD pnpm run build
msg_ok "Updated Umami" msg_ok "Updated Umami"
msg_info "Starting Service" msg_info "Starting Service"

View File

@ -27,24 +27,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/PCJones/Umlautadaptarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ ! -f /opt/UmlautAdaptarr_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/UmlautAdaptarr_version.txt)" ]]; then if check_for_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop umlautadaptarr systemctl stop umlautadaptarr
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP}" fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
temp_file=$(mktemp)
curl -fsSL "https://github.com/PCJones/Umlautadaptarr/releases/download/${RELEASE}/linux-x64.zip" -o $temp_file
$STD unzip -u $temp_file '*/**' -d /opt/UmlautAdaptarr
msg_ok "Updated ${APP}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start umlautadaptarr systemctl start umlautadaptarr
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

View File

@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Source: https://ui.com/download/unifi # Source: https://ui.com/download/unifi
APP="Unifi" APP="Unifi"
var_tags="${var_tags:-network;controller;unifi}" var_tags="${var_tags:-network;unifi}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
@ -27,6 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
$STD apt update --allow-releaseinfo-change $STD apt update --allow-releaseinfo-change
$STD apt install -y unifi $STD apt install -y unifi

View File

@ -13,6 +13,7 @@ var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-0}" var_unprivileged="${var_unprivileged:-0}"
var_gpu="${var_gpu:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Source: https://www.urbackup.org/ # Source: https://www.urbackup.org/
APP="UrBackup Server" APP="UrBackup Server"
var_tags="${var_tags:-web}" var_tags="${var_tags:-backup}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-16}" var_disk="${var_disk:-16}"
@ -29,7 +29,7 @@ function update_script() {
fi fi
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

45
ct/valkey.sh Normal file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: pshankinclarke (lazarillo)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://valkey.io/
APP="Valkey"
var_tags="${var_tags:-database}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /lib/systemd/system/valkey-server.service ]]; then
msg_error "No Valkey Installation Found!"
exit
fi
msg_info "Updating Valkey LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Valkey LXC"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6379${CL}"

View File

@ -30,7 +30,7 @@ function update_script() {
msg_info "Updating LXC Container" msg_info "Updating LXC Container"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated LXC Container" msg_ok "Updated LXC Container"
NODE_VERSION="22" NODE_MODULE="verdaccio" setup_nodejs NODE_VERSION="22" NODE_MODULE="verdaccio" setup_nodejs

71
ct/wallabag.sh Normal file
View File

@ -0,0 +1,71 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://wallabag.org/
APP="Wallabag"
var_tags="${var_tags:-productivity;read-it-later}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/wallabag ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "wallabag" "wallabag/wallabag"; then
msg_info "Stopping Services"
systemctl stop nginx php8.3-fpm
msg_ok "Stopped Services"
msg_info "Creating Backup"
cp /opt/wallabag/app/config/parameters.yml /tmp/wallabag_parameters.yml.bak
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wallabag" "wallabag/wallabag" "prebuild" "latest" "/opt/wallabag" "wallabag-*.tar.gz"
msg_info "Restoring Configuration"
cp /tmp/wallabag_parameters.yml.bak /opt/wallabag/app/config/parameters.yml
rm -f /tmp/wallabag_parameters.yml.bak
msg_ok "Restored Configuration"
msg_info "Running Migrations"
cd /opt/wallabag
$STD php bin/console cache:clear --env=prod
$STD php bin/console doctrine:migrations:migrate --env=prod --no-interaction
chown -R www-data:www-data /opt/wallabag
chmod -R 755 /opt/wallabag/{var,web/assets}
msg_ok "Ran Migrations"
msg_info "Starting Services"
systemctl start php8.3-fpm nginx
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}:8000${CL}"

76
ct/wanderer.sh Normal file
View File

@ -0,0 +1,76 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: rrole
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://wanderer.to
APP="Wanderer"
var_tags="${var_tags:-travelling;sport}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/wanderer/start.sh ]]; then
msg_error "No wanderer Installation Found!"
exit
fi
if check_for_gh_release "wanderer" "Flomp/wanderer"; then
msg_info "Stopping service"
systemctl stop wanderer-web
msg_ok "Stopped service"
fetch_and_deploy_gh_release "wanderer" "Flomp/wanderer" "tarball" "latest" "/opt/wanderer/source"
msg_info "Updating wanderer"
cd /opt/wanderer/source/db
$STD go mod tidy
$STD go build
cd /opt/wanderer/source/web
$STD npm ci --omit=dev
$STD npm run build
msg_ok "Updated wanderer"
msg_info "Starting service"
systemctl start wanderer-web
msg_ok "Started service"
msg_ok "Update Successful"
fi
if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
msg_info "Stopping service"
systemctl stop wanderer-web
msg_ok "Stopped service"
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" "latest" "/opt/wanderer/source/search"
grep -q -- '--experimental-dumpless-upgrade' /opt/wanderer/start.sh || sed -i 's|meilisearch --master-key|meilisearch --experimental-dumpless-upgrade --master-key|' /opt/wanderer/start.sh
msg_info "Starting service"
systemctl start wanderer-web
msg_ok "Started service"
msg_ok "Update Successful"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@ -52,11 +52,21 @@ function update_script() {
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/ $STD tar -xf "$BACKUP_FILE" --directory=/
$STD /usr/local/bin/uv run --frozen flask db upgrade if grep -q 'workers' /opt/wizarr/start.sh; then
if ! grep -q 'frozen' /opt/wizarr/start.sh; then sed -i 's/--workers 4//' /opt/wizarr/start.sh
sed -i 's/run/& --frozen/' /opt/wizarr/start.sh fi
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
{
echo "FLASK_ENV=production"
echo "GUNICORN_WORKERS=4"
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
} >>/opt/wizarr/.env
else
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
fi fi
rm -rf "$BACKUP_FILE" rm -rf "$BACKUP_FILE"
export FLASK_SKIP_SCHEDULER=true
$STD /usr/local/bin/uv run --frozen flask db upgrade
msg_ok "Updated Wizarr" msg_ok "Updated Wizarr"
msg_info "Starting Service" msg_info "Starting Service"

View File

@ -46,7 +46,20 @@ function update_script() {
systemctl stop "$AGENT_SERVICE" systemctl stop "$AGENT_SERVICE"
msg_ok "Stopped Services" msg_ok "Stopped Services"
msg_info "Updating Zabbix" read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
ZABBIX_CHOICE=${ZABBIX_CHOICE:-2}
case "$ZABBIX_CHOICE" in
1) ZABBIX_VERSION="7.0" ;;
2) ZABBIX_VERSION="7.4" ;;
3) ZABBIX_VERSION=$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1) ;;
*)
ZABBIX_VERSION="7.4"
echo "Invalid choice. Defaulting to 7.4."
;;
esac
msg_info "Updating Zabbix to $ZABBIX_VERSION"
mkdir -p /opt/zabbix-backup/ mkdir -p /opt/zabbix-backup/
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/ cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/ cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
@ -54,10 +67,8 @@ function update_script() {
rm -Rf /etc/apt/sources.list.d/zabbix.list rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp cd /tmp
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ | ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 | curl -fsSL "$ZABBIX_DEB_URL" -o /tmp/zabbix-release_latest+debian13_all.deb
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
-o /tmp/zabbix-release_latest+debian13_all.deb
$STD dpkg -i zabbix-release_latest+debian13_all.deb $STD dpkg -i zabbix-release_latest+debian13_all.deb
rm -rf /tmp/zabbix-release_latest+debian13_all.deb rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt update $STD apt update

View File

@ -11,7 +11,7 @@ var_disk="${var_disk:-8}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-4096}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@ -27,21 +27,22 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop zammad systemctl stop zammad
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP}" msg_info "Updating Zammad"
$STD apt update $STD apt update
$STD apt-mark hold zammad $STD apt-mark hold zammad
$STD apt -y upgrade $STD apt upgrade -y
$STD apt-mark unhold zammad $STD apt-mark unhold zammad
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated ${APP}" msg_ok "Updated Zammad"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start zammad systemctl start zammad
msg_ok "Updated ${APP} LXC" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

View File

@ -33,10 +33,10 @@ function update_script() {
systemctl stop zerotier-one systemctl stop zerotier-one
msg_ok "Stopping Service" msg_ok "Stopping Service"
msg_info "Updating ${APP}" msg_info "Updating Zerotier-One"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt upgrade -y
msg_ok "Updated ${APP}" msg_ok "Updated Zerotier-One"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start zerotier-one systemctl start zerotier-one

View File

@ -43,7 +43,7 @@ function update_script() {
fetch_and_deploy_gh_release "Zigbee2MQTT" "Koenkk/zigbee2mqtt" "tarball" "latest" "/opt/zigbee2mqtt" fetch_and_deploy_gh_release "Zigbee2MQTT" "Koenkk/zigbee2mqtt" "tarball" "latest" "/opt/zigbee2mqtt"
msg_info "Updating ${APP}" msg_info "Updating Zigbee2MQTT"
rm -rf /opt/zigbee2mqtt/data rm -rf /opt/zigbee2mqtt/data
mv /opt/z2m_backup/data /opt/zigbee2mqtt mv /opt/z2m_backup/data /opt/zigbee2mqtt
cd /opt/zigbee2mqtt cd /opt/zigbee2mqtt

532
docs/DEV_MODE.md Normal file
View File

@ -0,0 +1,532 @@
# Dev Mode - Debugging & Development Guide
Development modes provide powerful debugging and testing capabilities for container creation and installation processes.
## Quick Start
```bash
# Single mode
export dev_mode="motd"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
# Multiple modes (comma-separated)
export dev_mode="motd,keep,trace"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
# Combine with verbose output
export var_verbose="yes"
export dev_mode="pause,logs"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
```
## Available Modes
### 1. **motd** - Early SSH/MOTD Setup
Sets up SSH access and MOTD **before** the main application installation.
**Use Case**:
- Quick access to container for manual debugging
- Continue installation manually if something goes wrong
- Verify container networking before main install
**Behavior**:
```
✔ Container created
✔ Network configured
[DEV] Setting up MOTD and SSH before installation
✔ [DEV] MOTD/SSH ready - container accessible
# Container is now accessible via SSH while installation proceeds
```
**Combined with**: `keep`, `breakpoint`, `logs`
---
### 2. **keep** - Preserve Container on Failure
Never delete the container when installation fails. Skips cleanup prompt.
**Use Case**:
- Repeated tests of the same installation
- Debugging failed installations
- Manual fix attempts
**Behavior**:
```
✖ Installation failed in container 107 (exit code: 1)
✔ Container creation log: /tmp/create-lxc-107-abc12345.log
✔ Installation log: /tmp/install-lxc-107-abc12345.log
🔧 [DEV] Keep mode active - container 107 preserved
root@proxmox:~#
```
**Container remains**: `pct enter 107` to access and debug
**Combined with**: `motd`, `trace`, `logs`
---
### 3. **trace** - Bash Command Tracing
Enables `set -x` for complete command-line tracing. Shows every command before execution.
**Use Case**:
- Deep debugging of installation logic
- Understanding script flow
- Identifying where errors occur exactly
**Behavior**:
```
+(/opt/wallabag/bin/console): /opt/wallabag/bin/console cache:warmup
+(/opt/wallabag/bin/console): env APP_ENV=prod /opt/wallabag/bin/console cache:warmup
+(/opt/wallabag/bin/console): [[ -d /opt/wallabag/app/cache ]]
+(/opt/wallabag/bin/console): rm -rf /opt/wallabag/app/cache/*
```
**⚠️ Warning**: Exposes passwords and secrets in log output! Only use in isolated environments.
**Log Output**: All trace output saved to logs (see `logs` mode)
**Combined with**: `keep`, `pause`, `logs`
---
### 4. **pause** - Step-by-Step Execution
Pauses after each major step (`msg_info`). Requires manual Enter press to continue.
**Use Case**:
- Inspect container state between steps
- Understand what each step does
- Identify which step causes problems
**Behavior**:
```
⏳ Setting up Container OS
[PAUSE] Press Enter to continue...
⏳ Updating Container OS
[PAUSE] Press Enter to continue...
⏳ Installing Dependencies
[PAUSE] Press Enter to continue...
```
**Between pauses**: You can open another terminal and inspect the container
```bash
# In another terminal while paused
pct enter 107
root@container:~# df -h # Check disk usage
root@container:~# ps aux # Check running processes
```
**Combined with**: `motd`, `keep`, `logs`
---
### 5. **breakpoint** - Interactive Shell on Error
Opens interactive shell inside the container when an error occurs instead of cleanup prompt.
**Use Case**:
- Live debugging in the actual container
- Manual command testing
- Inspect container state at point of failure
**Behavior**:
```
✖ Installation failed in container 107 (exit code: 1)
✔ Container creation log: /tmp/create-lxc-107-abc12345.log
✔ Installation log: /tmp/install-lxc-107-abc12345.log
🐛 [DEV] Breakpoint mode - opening shell in container 107
Type 'exit' to return to host
root@wallabag:~#
# Now you can debug:
root@wallabag:~# tail -f /root/.install-abc12345.log
root@wallabag:~# mysql -u root -p$PASSWORD wallabag
root@wallabag:~# apt-get install -y strace
root@wallabag:~# exit
Container 107 still running. Remove now? (y/N): n
🔧 Container 107 kept for debugging
```
**Combined with**: `keep`, `logs`, `trace`
---
### 6. **logs** - Persistent Logging
Saves all logs to `/var/log/community-scripts/` with timestamps. Logs persist even on successful installation.
**Use Case**:
- Post-mortem analysis
- Performance analysis
- Automated testing with log collection
- CI/CD integration
**Behavior**:
```
Logs location: /var/log/community-scripts/
create-lxc-abc12345-20251117_143022.log (host-side creation)
install-abc12345-20251117_143022.log (container-side installation)
```
**Access logs**:
```bash
# View creation log
tail -f /var/log/community-scripts/create-lxc-*.log
# Search for errors
grep ERROR /var/log/community-scripts/*.log
# Analyze performance
grep "msg_info\|msg_ok" /var/log/community-scripts/create-*.log
```
**With trace mode**: Creates detailed trace of all commands
```bash
grep "^+" /var/log/community-scripts/install-*.log
```
**Combined with**: All other modes (recommended for CI/CD)
---
### 7. **dryrun** - Simulation Mode
Shows all commands that would be executed without actually running them.
**Use Case**:
- Test script logic without making changes
- Verify command syntax
- Understand what will happen
- Pre-flight checks
**Behavior**:
```
[DRYRUN] apt-get update
[DRYRUN] apt-get install -y curl
[DRYRUN] mkdir -p /opt/wallabag
[DRYRUN] cd /opt/wallabag
[DRYRUN] git clone https://github.com/wallabag/wallabag.git .
```
**No actual changes made**: Container/system remains unchanged
**Combined with**: `trace` (shows dryrun trace), `logs` (shows what would run)
---
## Mode Combinations
### Development Workflow
```bash
# First test: See what would happen
export dev_mode="dryrun,logs"
bash -c "$(curl ...)"
# Then test with tracing and pauses
export dev_mode="pause,trace,logs"
bash -c "$(curl ...)"
# Finally full debug with early SSH access
export dev_mode="motd,keep,breakpoint,logs"
bash -c "$(curl ...)"
```
### CI/CD Integration
```bash
# Automated testing with full logging
export dev_mode="logs"
export var_verbose="yes"
bash -c "$(curl ...)"
# Capture logs for analysis
tar czf installation-logs-$(date +%s).tar.gz /var/log/community-scripts/
```
### Production-like Testing
```bash
# Keep containers for manual verification
export dev_mode="keep,logs"
for i in {1..5}; do
bash -c "$(curl ...)"
done
# Inspect all created containers
pct list
pct enter 100
```
### Live Debugging
```bash
# SSH in early, step through installation, debug on error
export dev_mode="motd,pause,breakpoint,keep"
bash -c "$(curl ...)"
```
---
## Environment Variables Reference
### Dev Mode Variables
- `dev_mode` (string): Comma-separated list of modes
- Format: `"motd,keep,trace"`
- Default: Empty (no dev modes)
### Output Control
- `var_verbose="yes"`: Show all command output (disables silent mode)
- Pairs well with: `trace`, `pause`, `logs`
### Examples with vars
```bash
# Maximum verbosity and debugging
export var_verbose="yes"
export dev_mode="motd,trace,pause,logs"
bash -c "$(curl ...)"
# Silent debug (logs only)
export dev_mode="keep,logs"
bash -c "$(curl ...)"
# Interactive debugging
export var_verbose="yes"
export dev_mode="motd,breakpoint"
bash -c "$(curl ...)"
```
---
## Troubleshooting with Dev Mode
### "Installation failed at step X"
```bash
export dev_mode="pause,logs"
# Step through until the failure point
# Check container state between pauses
pct enter 107
```
### "Password/credentials not working"
```bash
export dev_mode="motd,keep,trace"
# With trace mode, see exact password handling (be careful with logs!)
# Use motd to SSH in and test manually
ssh root@container-ip
```
### "Permission denied errors"
```bash
export dev_mode="breakpoint,keep"
# Get shell at failure point
# Check file permissions, user context, SELinux status
ls -la /path/to/file
whoami
```
### "Networking issues"
```bash
export dev_mode="motd"
# SSH in with motd mode before main install
ssh root@container-ip
ping 8.8.8.8
nslookup example.com
```
### "Need to manually complete installation"
```bash
export dev_mode="motd,keep"
# Container accessible via SSH while installation runs
# After failure, SSH in and manually continue
ssh root@container-ip
# ... manual commands ...
exit
# Then use 'keep' mode to preserve container for inspection
```
---
## Log Files Locations
### Default (without `logs` mode)
- Host creation: `/tmp/create-lxc-<SESSION_ID>.log`
- Container install: Copied to `/tmp/install-lxc-<CTID>-<SESSION_ID>.log` on failure
### With `logs` mode
- Host creation: `/var/log/community-scripts/create-lxc-<SESSION_ID>-<TIMESTAMP>.log`
- Container install: `/var/log/community-scripts/install-<SESSION_ID>-<TIMESTAMP>.log`
### View logs
```bash
# Tail in real-time
tail -f /var/log/community-scripts/*.log
# Search for errors
grep -r "exit code [1-9]" /var/log/community-scripts/
# Filter by session
grep "ed563b19" /var/log/community-scripts/*.log
```
---
## Best Practices
### ✅ DO
- Use `logs` mode for CI/CD and automated testing
- Use `motd` for early SSH access during long installations
- Use `pause` when learning the installation flow
- Use `trace` when debugging logic issues (watch for secrets!)
- Combine modes for comprehensive debugging
- Archive logs after successful tests
### ❌ DON'T
- Use `trace` in production or with untrusted networks (exposes secrets)
- Leave `keep` mode enabled for unattended scripts (containers accumulate)
- Use `dryrun` and expect actual changes
- Commit `dev_mode` exports to production deployment scripts
- Use `breakpoint` in non-interactive environments (will hang)
---
## Examples
### Example 1: Debug a Failed Installation
```bash
# Initial test to see the failure
export dev_mode="keep,logs"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wallabag.sh)"
# Container 107 kept, check logs
tail /var/log/community-scripts/install-*.log
# SSH in to debug
pct enter 107
root@wallabag:~# cat /root/.install-*.log | tail -100
root@wallabag:~# apt-get update # Retry the failing command
root@wallabag:~# exit
# Re-run with manual step-through
export dev_mode="motd,pause,keep"
bash -c "$(curl ...)"
```
### Example 2: Verify Installation Steps
```bash
export dev_mode="pause,logs"
export var_verbose="yes"
bash -c "$(curl ...)"
# Press Enter through each step
# Monitor container in another terminal
# pct enter 107
# Review logs in real-time
```
### Example 3: CI/CD Pipeline Integration
```bash
#!/bin/bash
export dev_mode="logs"
export var_verbose="no"
for app in wallabag nextcloud wordpress; do
echo "Testing $app installation..."
APP="$app" bash -c "$(curl ...)" || {
echo "FAILED: $app"
tar czf logs-$app.tar.gz /var/log/community-scripts/
exit 1
}
echo "SUCCESS: $app"
done
echo "All installations successful"
tar czf all-logs.tar.gz /var/log/community-scripts/
```
---
## Advanced Usage
### Custom Log Analysis
```bash
# Extract all errors
grep "ERROR\|exit code [1-9]" /var/log/community-scripts/*.log
# Performance timeline
grep "^$(date +%Y-%m-%d)" /var/log/community-scripts/*.log | grep "msg_"
# Memory usage during install
grep "free\|available" /var/log/community-scripts/*.log
```
### Integration with External Tools
```bash
# Send logs to Elasticsearch
curl -X POST "localhost:9200/installation-logs/_doc" \
-H 'Content-Type: application/json' \
-d @/var/log/community-scripts/install-*.log
# Archive for compliance
tar czf installation-records-$(date +%Y%m).tar.gz \
/var/log/community-scripts/
gpg --encrypt installation-records-*.tar.gz
```
---
## Support & Issues
When reporting installation issues, always include:
```bash
# Collect all relevant information
export dev_mode="logs"
# Run the failing installation
# Then provide:
tar czf debug-logs.tar.gz /var/log/community-scripts/
```
Include the `debug-logs.tar.gz` when reporting issues for better diagnostics.

298
docs/EXIT_CODES.md Normal file
View File

@ -0,0 +1,298 @@
# Exit Code Reference
Comprehensive documentation of all exit codes used in ProxmoxVE scripts.
## Table of Contents
- [Generic/Shell Errors (1-255)](#genericshell-errors)
- [Package Manager Errors (100-101, 255)](#package-manager-errors)
- [Node.js/npm Errors (243-254)](#nodejsnpm-errors)
- [Python/pip Errors (210-212)](#pythonpip-errors)
- [Database Errors (231-254)](#database-errors)
- [Proxmox Custom Codes (200-231)](#proxmox-custom-codes)
---
## Generic/Shell Errors
Standard Unix/Linux exit codes used across all scripts.
| Code | Description | Common Causes | Solutions |
| ------- | --------------------------------------- | ----------------------------------------- | ---------------------------------------------- |
| **1** | General error / Operation not permitted | Permission denied, general failure | Check user permissions, run as root if needed |
| **2** | Misuse of shell builtins | Syntax error in script | Review script syntax, check bash version |
| **126** | Command cannot execute | Permission problem, not executable | `chmod +x script.sh` or check file permissions |
| **127** | Command not found | Missing binary, wrong PATH | Install required package, check PATH variable |
| **128** | Invalid argument to exit | Invalid exit code passed | Use exit codes 0-255 only |
| **130** | Terminated by Ctrl+C (SIGINT) | User interrupted script | Expected behavior, no action needed |
| **137** | Killed (SIGKILL) | Out of memory, forced termination | Check memory usage, increase RAM allocation |
| **139** | Segmentation fault | Memory access violation, corrupted binary | Reinstall package, check system stability |
| **143** | Terminated (SIGTERM) | Graceful shutdown signal | Expected during container stops |
---
## Package Manager Errors
APT, DPKG, and package installation errors.
| Code | Description | Common Causes | Solutions |
| ------- | -------------------------- | --------------------------------------- | ------------------------------------------------- |
| **100** | APT: Package manager error | Broken packages, dependency conflicts | `apt --fix-broken install`, `dpkg --configure -a` |
| **101** | APT: Configuration error | Malformed sources.list, bad repo config | Check `/etc/apt/sources.list`, run `apt update` |
| **255** | DPKG: Fatal internal error | Corrupted package database | `dpkg --configure -a`, restore from backup |
---
## Node.js/npm Errors
Node.js runtime and package manager errors.
| Code | Description | Common Causes | Solutions |
| ------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------- |
| **243** | Node.js: Out of memory | JavaScript heap exhausted | Increase `--max-old-space-size`, optimize code |
| **245** | Node.js: Invalid command-line option | Wrong Node.js flags | Check Node.js version, verify CLI options |
| **246** | Node.js: Internal JavaScript Parse Error | Syntax error in JS code | Review JavaScript syntax, check dependencies |
| **247** | Node.js: Fatal internal error | Node.js runtime crash | Update Node.js, check for known bugs |
| **248** | Node.js: Invalid C++ addon / N-API failure | Native module incompatibility | Rebuild native modules, update packages |
| **249** | Node.js: Inspector error | Debug/inspect protocol failure | Disable inspector, check port conflicts |
| **254** | npm/pnpm/yarn: Unknown fatal error | Package manager crash | Clear cache, reinstall package manager |
---
## Python/pip Errors
Python runtime and package installation errors.
| Code | Description | Common Causes | Solutions |
| ------- | ------------------------------------ | --------------------------------------- | -------------------------------------------------------- |
| **210** | Python: Virtualenv missing or broken | venv not created, corrupted environment | `python3 -m venv venv`, recreate virtualenv |
| **211** | Python: Dependency resolution failed | Conflicting package versions | Use `pip install --upgrade`, check requirements.txt |
| **212** | Python: Installation aborted | EXTERNALLY-MANAGED, permission denied | Use `--break-system-packages` or venv, check permissions |
---
## Database Errors
### PostgreSQL (231-234)
| Code | Description | Common Causes | Solutions |
| ------- | ----------------------- | ---------------------------------- | ----------------------------------------------------- |
| **231** | Connection failed | Server not running, wrong socket | `systemctl start postgresql`, check connection string |
| **232** | Authentication failed | Wrong credentials | Verify username/password, check `pg_hba.conf` |
| **233** | Database does not exist | Database not created | `CREATE DATABASE`, restore from backup |
| **234** | Fatal error in query | Syntax error, constraint violation | Review SQL syntax, check constraints |
### MySQL/MariaDB (241-244)
| Code | Description | Common Causes | Solutions |
| ------- | ----------------------- | ---------------------------------- | ---------------------------------------------------- |
| **241** | Connection failed | Server not running, wrong socket | `systemctl start mysql`, check connection parameters |
| **242** | Authentication failed | Wrong credentials | Verify username/password, grant privileges |
| **243** | Database does not exist | Database not created | `CREATE DATABASE`, restore from backup |
| **244** | Fatal error in query | Syntax error, constraint violation | Review SQL syntax, check constraints |
### MongoDB (251-254)
| Code | Description | Common Causes | Solutions |
| ------- | --------------------- | -------------------- | ------------------------------------------ |
| **251** | Connection failed | Server not running | `systemctl start mongod`, check port 27017 |
| **252** | Authentication failed | Wrong credentials | Verify username/password, create user |
| **253** | Database not found | Database not created | Database auto-created on first write |
| **254** | Fatal query error | Invalid query syntax | Review MongoDB query syntax |
---
## Proxmox Custom Codes
Custom exit codes specific to ProxmoxVE scripts.
### Container Creation Errors (200-209)
| Code | Description | Common Causes | Solutions |
| ------- | ---------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
| **200** | Failed to create lock file | Permission denied, disk full | Check `/tmp` permissions, free disk space |
| **203** | Missing CTID variable | Script configuration error | Set CTID in script or via prompt |
| **204** | Missing PCT_OSTYPE variable | Template selection failed | Verify template availability |
| **205** | Invalid CTID (<100) | CTID below minimum value | Use CTID 100 (1-99 reserved for Proxmox) |
| **206** | CTID already in use | Container/VM with same ID exists | Check `pct list` and `/etc/pve/lxc/`, use different ID |
| **207** | Password contains unescaped special characters | Special chars like `-`, `/`, `\`, `*` at start/end | Avoid leading special chars, use alphanumeric passwords |
| **208** | Invalid configuration | DNS format (`.home` vs `home`), MAC format (`-` vs `:`) | Remove leading dots from DNS, use `:` in MAC addresses |
| **209** | Container creation failed | Multiple possible causes | Check logs in `/tmp/pct_create_*.log`, verify template |
### Cluster & Storage Errors (210, 214, 217)
| Code | Description | Common Causes | Solutions |
| ------- | --------------------------------- | ---------------------------------- | ----------------------------------------------------------- |
| **210** | Cluster not quorate | Cluster nodes down, network issues | Check cluster status: `pvecm status`, fix node connectivity |
| **211** | Timeout waiting for template lock | Concurrent download in progress | Wait for other download to complete (60s timeout) |
| **214** | Not enough storage space | Disk full, quota exceeded | Free disk space, increase storage allocation |
| **217** | Storage does not support rootdir | Wrong storage type selected | Use storage supporting containers (dir, zfspool, lvm-thin) |
### Container Verification Errors (215-216)
| Code | Description | Common Causes | Solutions |
| ------- | -------------------------------- | -------------------------------- | --------------------------------------------------------- |
| **215** | Container created but not listed | Ghost state, incomplete creation | Check `/etc/pve/lxc/CTID.conf`, remove manually if needed |
| **216** | RootFS entry missing in config | Incomplete container creation | Delete container, retry creation |
### Template Errors (218, 220-223, 225)
| Code | Description | Common Causes | Solutions |
| ------- | ----------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------- |
| **218** | Template file corrupted or incomplete | Download interrupted, file <1MB, invalid archive | Delete template, run `pveam update && pveam download` |
| **220** | Unable to resolve template path | Template storage not accessible | Check storage availability, verify permissions |
| **221** | Template file exists but not readable | Permission denied | `chmod 644 template.tar.zst`, check storage permissions |
| **222** | Template download failed after 3 attempts | Network issues, storage problems | Check internet connectivity, verify storage space |
| **223** | Template not available after download | Storage sync issue, I/O delay | Wait a few seconds, verify storage is mounted |
| **225** | No template available for OS/Version | Unsupported OS version, catalog outdated | Run `pveam update`, check `pveam available -section system` |
### LXC Stack Errors (231)
| Code | Description | Common Causes | Solutions |
| ------- | ------------------------------ | ------------------------------------------- | -------------------------------------------- |
| **231** | LXC stack upgrade/retry failed | Outdated `pve-container`, Debian 13.1 issue | See [Debian 13.1 Fix Guide](#debian-131-fix) |
---
## Special Case: Debian 13.1 "unsupported version" Error
### Problem
```
TASK ERROR: unable to create CT 129 - unsupported debian version '13.1'
```
### Root Cause
Outdated `pve-container` package doesn't recognize Debian 13 (Trixie).
### Solutions
#### Option 1: Full System Upgrade (Recommended)
```bash
apt update
apt full-upgrade -y
reboot
```
Verify fix:
```bash
dpkg -l pve-container
# PVE 8: Should show 5.3.3+
# PVE 9: Should show 6.0.13+
```
#### Option 2: Update Only pve-container
```bash
apt update
apt install --only-upgrade pve-container -y
```
**Warning:** If Proxmox fails to boot after this, your system was inconsistent. Perform Option 1 instead.
#### Option 3: Verify Repository Configuration
Many users disable Enterprise repos but forget to add no-subscription repos.
**For PVE 9 (Trixie):**
```bash
cat /etc/apt/sources.list.d/pve-no-subscription.list
```
Should contain:
```
deb http://download.proxmox.com/debian/pve trixie pve-no-subscription
deb http://download.proxmox.com/debian/ceph-squid trixie no-subscription
```
**For PVE 8 (Bookworm):**
```
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription
```
Then:
```bash
apt update
apt full-upgrade -y
```
### Reference
Official discussion: [GitHub #8126](https://github.com/community-scripts/ProxmoxVE/discussions/8126)
---
## Troubleshooting Tips
### Finding Error Details
1. **Check logs:**
```bash
tail -n 50 /tmp/pct_create_*.log
```
2. **Enable verbose mode:**
```bash
bash -x script.sh # Shows every command executed
```
3. **Check container status:**
```bash
pct list
pct status CTID
```
4. **Verify storage:**
```bash
pvesm status
df -h
```
### Common Patterns
- **Exit 0 with error message:** Configuration validation failed (check DNS, MAC, password format)
- **Exit 206 but container not visible:** Ghost container state - check `/etc/pve/lxc/` manually
- **Exit 209 generic error:** Check `/tmp/pct_create_*.log` for specific `pct create` failure reason
- **Exit 218 or 222:** Template issues - delete and re-download template
---
## Quick Reference Chart
| Exit Code Range | Category | Typical Issue |
| --------------- | ------------------ | ------------------------------------------- |
| 1-2, 126-143 | Shell/System | Permissions, signals, missing commands |
| 100-101, 255 | Package Manager | APT/DPKG errors, broken packages |
| 200-209 | Container Creation | CTID, password, configuration |
| 210-217 | Storage/Cluster | Disk space, quorum, storage type |
| 218-225 | Templates | Download, corruption, availability |
| 231-254 | Databases/Runtime | PostgreSQL, MySQL, MongoDB, Node.js, Python |
---
## Contributing
Found an undocumented exit code or have a solution to share? Please:
1. Open an issue on [GitHub](https://github.com/community-scripts/ProxmoxVE/issues)
2. Include:
- Exit code number
- Error message
- Steps to reproduce
- Solution that worked for you
---
_Last updated: November 2025_
_ProxmoxVE Version: 2.x_

298
docs/README.md Normal file
View File

@ -0,0 +1,298 @@
# 📚 ProxmoxVE Documentation
Complete guide to all ProxmoxVE documentation - quickly find what you need.
---
## 🎯 **Quick Navigation by Goal**
### 👤 **I want to...**
**Contribute a new application**
→ Start with: [contribution/README.md](contribution/README.md)
→ Then: [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) + [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
**Understand the architecture**
→ Read: [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
→ Then: [misc/README.md](misc/README.md)
**Debug a failed installation**
→ Check: [EXIT_CODES.md](EXIT_CODES.md)
→ Then: [DEV_MODE.md](DEV_MODE.md)
→ See also: [misc/error_handler.func/](misc/error_handler.func/)
**Configure system defaults**
→ Read: [guides/DEFAULTS_SYSTEM_GUIDE.md](guides/DEFAULTS_SYSTEM_GUIDE.md)
**Deploy containers automatically**
→ Read: [guides/UNATTENDED_DEPLOYMENTS.md](guides/UNATTENDED_DEPLOYMENTS.md)
**Develop a function library**
→ Study: [misc/](misc/) documentation
---
## 👤 **Quick Start by Role**
### **I'm a...**
**New Contributor**
→ Start: [contribution/README.md](contribution/README.md)
→ Then: Choose your path below
**Container Creator**
→ Read: [ct/README.md](ct/README.md)
→ Deep Dive: [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
→ Reference: [misc/build.func/](misc/build.func/)
**Installation Script Developer**
→ Read: [install/README.md](install/README.md)
→ Deep Dive: [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
→ Reference: [misc/tools.func/](misc/tools.func/)
**VM Provisioner**
→ Read: [vm/README.md](vm/README.md)
→ Reference: [misc/cloud-init.func/](misc/cloud-init.func/)
**Tools Developer**
→ Read: [tools/README.md](tools/README.md)
→ Reference: [misc/build.func/](misc/build.func/)
**API Integrator**
→ Read: [api/README.md](api/README.md)
→ Reference: [misc/api.func/](misc/api.func/)
**System Operator**
→ Start: [EXIT_CODES.md](EXIT_CODES.md)
→ Then: [guides/DEFAULTS_SYSTEM_GUIDE.md](guides/DEFAULTS_SYSTEM_GUIDE.md)
→ Automate: [guides/UNATTENDED_DEPLOYMENTS.md](guides/UNATTENDED_DEPLOYMENTS.md)
→ Debug: [DEV_MODE.md](DEV_MODE.md)
**Architect**
→ Read: [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
→ Deep Dive: [misc/README.md](misc/README.md)
---
## 📂 **Documentation Structure**
### Project-Mirrored Directories
Each major project directory has documentation:
```
ProxmoxVE/
├─ ct/ ↔ docs/ct/ (README.md + DETAILED_GUIDE.md)
├─ install/ ↔ docs/install/ (README.md + DETAILED_GUIDE.md)
├─ vm/ ↔ docs/vm/ (README.md)
├─ tools/ ↔ docs/tools/ (README.md)
├─ api/ ↔ docs/api/ (README.md)
├─ misc/ ↔ docs/misc/ (9 function libraries)
└─ [system-wide] ↔ docs/guides/ (configuration & deployment guides)
```
### Core Documentation
| Document | Purpose | Audience |
|----------|---------|----------|
| [contribution/README.md](contribution/README.md) | How to contribute | Contributors |
| [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) | Create ct scripts | Container developers |
| [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md) | Create install scripts | Installation developers |
| [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md) | Architecture deep-dive | Architects, advanced users |
| [guides/DEFAULTS_SYSTEM_GUIDE.md](guides/DEFAULTS_SYSTEM_GUIDE.md) | Configuration system | Operators, power users |
| [guides/CONFIGURATION_REFERENCE.md](guides/CONFIGURATION_REFERENCE.md) | Configuration options reference | Advanced users |
| [guides/UNATTENDED_DEPLOYMENTS.md](guides/UNATTENDED_DEPLOYMENTS.md) | Automated deployments | DevOps, automation |
| [EXIT_CODES.md](EXIT_CODES.md) | Exit code reference | Troubleshooters |
| [DEV_MODE.md](DEV_MODE.md) | Debugging tools | Developers |
---
## 📂 **Directory Guide**
### [ct/](ct/) - Container Scripts
Documentation for `/ct` - Container creation scripts that run on the Proxmox host.
**Includes**:
- Overview of container creation process
- Deep dive: [DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md) - Complete reference with examples
- Reference to [misc/build.func/](misc/build.func/)
- Quick start for creating new containers
### [install/](install/) - Installation Scripts
Documentation for `/install` - Scripts that run inside containers to install applications.
**Includes**:
- Overview of 10-phase installation pattern
- Deep dive: [DETAILED_GUIDE.md](install/DETAILED_GUIDE.md) - Complete reference with examples
- Reference to [misc/tools.func/](misc/tools.func/)
- Alpine vs Debian differences
### [vm/](vm/) - Virtual Machine Scripts
Documentation for `/vm` - VM creation scripts using cloud-init provisioning.
**Includes**:
- Overview of VM provisioning
- Link to [misc/cloud-init.func/](misc/cloud-init.func/)
- VM vs Container comparison
- Cloud-init examples
### [tools/](tools/) - Tools & Utilities
Documentation for `/tools` - Management tools and add-ons.
**Includes**:
- Overview of tools structure
- Integration points
- Contributing new tools
- Common operations
### [api/](api/) - API Integration
Documentation for `/api` - Telemetry and API backend.
**Includes**:
- API overview
- Integration methods
- API endpoints
- Privacy information
### [misc/](misc/) - Function Libraries
Documentation for `/misc` - 9 core function libraries with complete references.
**Contains**:
- **build.func/** - Container orchestration (7 files)
- **core.func/** - Utilities and messaging (5 files)
- **error_handler.func/** - Error handling (5 files)
- **api.func/** - API integration (5 files)
- **install.func/** - Container setup (5 files)
- **tools.func/** - Package installation (6 files)
- **alpine-install.func/** - Alpine setup (5 files)
- **alpine-tools.func/** - Alpine tools (5 files)
- **cloud-init.func/** - VM provisioning (5 files)
---
## 🎓 **Learning Paths**
### Path 1: First-Time Contributor (2-3 hours)
1. [contribution/README.md](contribution/README.md) - Quick Start
2. Pick your area:
- Containers → [ct/README.md](ct/README.md) + [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
- Installation → [install/README.md](install/README.md) + [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
- VMs → [vm/README.md](vm/README.md)
3. Study existing similar script
4. Create your contribution
5. Submit PR
### Path 2: Intermediate Developer (4-6 hours)
1. [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
2. Dive into function libraries:
- [misc/build.func/README.md](misc/build.func/README.md)
- [misc/tools.func/README.md](misc/tools.func/README.md)
- [misc/install.func/README.md](misc/install.func/README.md)
3. Study advanced examples
4. Create complex applications
### Path 3: Advanced Architect (8+ hours)
1. All of Intermediate Path
2. Study all 9 function libraries in depth
3. [guides/DEFAULTS_SYSTEM_GUIDE.md](guides/DEFAULTS_SYSTEM_GUIDE.md) - Configuration system
4. [DEV_MODE.md](DEV_MODE.md) - Debugging and development
5. Design new features or function libraries
### Path 4: Troubleshooter (30 minutes - 1 hour)
1. [EXIT_CODES.md](EXIT_CODES.md) - Find error code
2. [DEV_MODE.md](DEV_MODE.md) - Run with debugging
3. Check relevant function library docs
4. Review logs and fix
---
## 📊 **By the Numbers**
| Metric | Count |
|--------|:---:|
| **Documentation Files** | 63 |
| **Total Lines** | 15,000+ |
| **Function Libraries** | 9 |
| **Functions Documented** | 150+ |
| **Code Examples** | 50+ |
| **Flowcharts** | 15+ |
| **Do/Don't Sections** | 20+ |
| **Real-World Examples** | 30+ |
---
## 🔍 **Find It Fast**
### By Feature
- **How do I create a container?** → [ct/DETAILED_GUIDE.md](ct/DETAILED_GUIDE.md)
- **How do I create an install script?** → [install/DETAILED_GUIDE.md](install/DETAILED_GUIDE.md)
- **How do I create a VM?** → [vm/README.md](vm/README.md)
- **How do I install Node.js?** → [misc/tools.func/](misc/tools.func/)
- **How do I debug?** → [DEV_MODE.md](DEV_MODE.md)
### By Error
- **Exit code 206?** → [EXIT_CODES.md](EXIT_CODES.md)
- **Network failed?** → [misc/install.func/](misc/install.func/)
- **Package error?** → [misc/tools.func/](misc/tools.func/)
### By Role
- **Contributor** → [contribution/README.md](contribution/README.md)
- **Operator** → [guides/DEFAULTS_SYSTEM_GUIDE.md](guides/DEFAULTS_SYSTEM_GUIDE.md)
- **Automation** → [guides/UNATTENDED_DEPLOYMENTS.md](guides/UNATTENDED_DEPLOYMENTS.md)
- **Developer** → [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
- **Architect** → [misc/README.md](misc/README.md)
---
## ✅ **Documentation Features**
-**Project-mirrored structure** - Organized like the actual project
-**Complete function references** - Every function documented
-**Real-world examples** - Copy-paste ready code
-**Visual flowcharts** - ASCII diagrams of workflows
-**Integration guides** - How components connect
-**Troubleshooting** - Common issues and solutions
-**Best practices** - DO/DON'T sections throughout
-**Learning paths** - Structured curriculum by role
-**Quick references** - Fast lookup by error code
-**Comprehensive navigation** - This page
---
## 🚀 **Start Here**
**New to ProxmoxVE?** → [contribution/README.md](contribution/README.md)
**Looking for something specific?** → Choose your role above or browse by directory
**Need to debug?** → [EXIT_CODES.md](EXIT_CODES.md)
**Want to understand architecture?** → [TECHNICAL_REFERENCE.md](TECHNICAL_REFERENCE.md)
---
## 🤝 **Contributing Documentation**
Found an error? Want to improve docs?
1. See: [contribution/README.md](contribution/README.md) for full contribution guide
2. Open issue: [GitHub Issues](https://github.com/community-scripts/ProxmoxVE/issues)
3. Or submit PR with improvements
---
## 📝 **Status**
- **Last Updated**: December 2025
- **Version**: 2.3 (Consolidated & Reorganized)
- **Completeness**: ✅ 100% - All components documented
- **Quality**: ✅ Production-ready
- **Structure**: ✅ Clean and organized
---
**Welcome to ProxmoxVE! Start with [CONTRIBUTION_GUIDE.md](CONTRIBUTION_GUIDE.md) or choose your role above.** 🚀

Some files were not shown because too many files have changed in this diff Show More