Compare commits

...

135 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
7ddc50bfe7 Update CHANGELOG.md (#7951)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-28 00:15:09 +00:00
community-scripts-pr-app[bot]
484a46beb1 Update versions.json (#7950)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-28 02:14:45 +02:00
community-scripts-pr-app[bot]
b85d1e5062 Update CHANGELOG.md (#7948)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 21:12:00 +00:00
Slaviša Arežina
05e41f67e1 Update goaway-install.sh (#7946) 2025-09-27 23:11:38 +02:00
community-scripts-pr-app[bot]
bfe6445c64 Update CHANGELOG.md (#7947)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 20:36:34 +00:00
Chris
ffde3a731c MeTube: Various fixes (#7936) 2025-09-27 22:36:14 +02:00
community-scripts-pr-app[bot]
d5b9da8f5f Update CHANGELOG.md (#7943)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 18:14:55 +00:00
Slaviša Arežina
1b8d790a14 Update odoo.sh (#7941) 2025-09-27 20:14:34 +02:00
community-scripts-pr-app[bot]
175b925ae4 Update versions.json (#7939)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 14:04:31 +02:00
community-scripts-pr-app[bot]
38a8773d2f Update CHANGELOG.md (#7934)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 00:13:08 +00:00
community-scripts-pr-app[bot]
e7dafcbf3e Update versions.json (#7933)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-27 02:12:41 +02:00
community-scripts-pr-app[bot]
380fb1cfb7 Update CHANGELOG.md (#7932)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 20:59:46 +00:00
Slaviša Arežina
10cd6c3f0b Odoo: Fix missing dependencies (#7931)
* Fix odoo

* Update
2025-09-26 22:59:21 +02:00
community-scripts-pr-app[bot]
710bd7f4e7 Update CHANGELOG.md (#7930)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 19:37:04 +00:00
Slaviša Arežina
4d72852e53 Clarify descriptions of update scripts (#7929) 2025-09-26 21:36:43 +02:00
community-scripts-pr-app[bot]
9ad538c2d2 Update CHANGELOG.md (#7926)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 16:42:24 +00:00
Michel Roegl-Brunner
ee3872e7e1 OpenWebUI: Update NODE_OPTIONS to increase memory limit (#7919) 2025-09-26 18:41:58 +02:00
community-scripts-pr-app[bot]
f6ca81833e Update versions.json (#7916)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 14:05:29 +02:00
community-scripts-pr-app[bot]
c41b18f083 Update CHANGELOG.md (#7909)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 00:13:48 +00:00
community-scripts-pr-app[bot]
f983f75b30 Update versions.json (#7908)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-26 02:13:21 +02:00
community-scripts-pr-app[bot]
137dd647dd Update CHANGELOG.md (#7903)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 13:03:41 +00:00
community-scripts-pr-app[bot]
2f5c608f45 Update CHANGELOG.md (#7902)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 13:03:20 +00:00
community-scripts-pr-app[bot]
b8e06c05d0 Update date in json (#7901)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-25 13:03:15 +00:00
push-app-to-main[bot]
2beb89055c 'Add new script' (#7900)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-09-25 15:02:52 +02:00
community-scripts-pr-app[bot]
308897fdc7 Update versions.json (#7898)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 14:07:08 +02:00
community-scripts-pr-app[bot]
5b73367c80 Update CHANGELOG.md (#7897)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 09:07:03 +00:00
Tobias
5c0eefa652 ntfy: bump to debian 13 (#7895)
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-09-25 11:06:39 +02:00
community-scripts-pr-app[bot]
7c5c654dbe Update CHANGELOG.md (#7896)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 08:49:43 +00:00
Bram Suurd
984eeedf31 Enhance category metadata in JSON and update script accordion to display icons. Added 'icon' property to categories in metadata.json and modified script-accordion component to render corresponding icons for each category. (#7894) 2025-09-25 10:49:12 +02:00
community-scripts-pr-app[bot]
7fd08cbe69 Update CHANGELOG.md (#7892)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 00:13:14 +00:00
community-scripts-pr-app[bot]
285447b67f Update versions.json (#7891)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-25 02:12:49 +02:00
community-scripts-pr-app[bot]
b394cdf6e0 Update CHANGELOG.md (#7884)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 12:28:46 +00:00
community-scripts-pr-app[bot]
ab2a6ed38e Update CHANGELOG.md (#7883)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 12:28:32 +00:00
community-scripts-pr-app[bot]
f8e109c529 Update .app files (#7882)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-24 12:28:28 +00:00
community-scripts-pr-app[bot]
46e4bc3a04 Update date in json (#7881)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-24 12:28:21 +00:00
push-app-to-main[bot]
d0a1f305c7 Add Script: Joplin Server (#7879)
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>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-09-24 14:28:02 +02:00
community-scripts-pr-app[bot]
6948e1f695 Update CHANGELOG.md (#7880)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 12:26:43 +00:00
Slaviša Arežina
8c860da4ed Fix dependencies (#7877) 2025-09-24 14:26:19 +02:00
community-scripts-pr-app[bot]
d32e9fad59 Update versions.json (#7878)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 14:06:22 +02:00
community-scripts-pr-app[bot]
9096a388c7 Update CHANGELOG.md (#7873)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 07:42:47 +00:00
Michel Roegl-Brunner
9f0efc27df Update name in lxc-delete.json to 'PVE LXC Deletion' (#7872) 2025-09-24 09:42:20 +02:00
community-scripts-pr-app[bot]
06ca6e2087 Update CHANGELOG.md (#7871)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 00:13:00 +00:00
community-scripts-pr-app[bot]
8c48ea6718 Update versions.json (#7870)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-24 02:12:36 +02:00
community-scripts-pr-app[bot]
b626e705eb Update CHANGELOG.md (#7869)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 20:39:42 +00:00
community-scripts-pr-app[bot]
f103d09c09 Update CHANGELOG.md (#7867)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 19:35:46 +00:00
Chris
82a7d252ab Bump Immich to v1.143.1 (#7864) 2025-09-23 21:35:27 +02:00
community-scripts-pr-app[bot]
48af77e928 Update CHANGELOG.md (#7866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 19:21:34 +00:00
Chris
d24308a409 Manage My Damn Life: use NodeJS 22 (#7861) 2025-09-23 21:21:05 +02:00
community-scripts-pr-app[bot]
584365fff1 Update CHANGELOG.md (#7863)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 19:03:42 +00:00
Giovanni Pellerano
95c54dccd7 Improve globaleaks install ensuring install can proceed without user input (#7860) 2025-09-23 21:03:15 +02:00
community-scripts-pr-app[bot]
eb28463d86 Update CHANGELOG.md (#7859)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 18:01:51 +00:00
community-scripts-pr-app[bot]
bddde99252 Update CHANGELOG.md (#7858)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 18:01:39 +00:00
Chris
f1f8c1b279 BookLore: increase RAM (#7855)
- Build was failing due to OOM
2025-09-23 20:01:24 +02:00
community-scripts-pr-app[bot]
37a0a4add9 Update CHANGELOG.md (#7857)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 18:01:15 +00:00
Chris
02cede3f5d tools.func: Check for /usr/local/bin in PATH during yq setup (#7856)
- My Booklore update failed due to yq not being found despite installed
2025-09-23 20:00:48 +02:00
community-scripts-pr-app[bot]
42a7d57a42 Update versions.json (#7851)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 14:05:40 +02:00
community-scripts-pr-app[bot]
53b5f0d1fe Update CHANGELOG.md (#7850)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 11:23:29 +00:00
CanbiZ
4a56d8d9aa Remove not exist admin credentials from output (#7849) 2025-09-23 13:23:03 +02:00
community-scripts-pr-app[bot]
f819188a5e Update CHANGELOG.md (#7847)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 10:11:48 +00:00
Slaviša Arežina
4d6e3e5977 Update openwebui.json (#7843) 2025-09-23 12:11:21 +02:00
community-scripts-pr-app[bot]
d6fc527200 Update CHANGELOG.md (#7846)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 10:07:01 +00:00
community-scripts-pr-app[bot]
c103c3b03d Update CHANGELOG.md (#7845)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 10:06:51 +00:00
CanbiZ
2d290cb27f VM: Increase pv & xz functions (HA OS / Umbrel OS) (#7838) 2025-09-23 12:06:35 +02:00
community-scripts-pr-app[bot]
883efd1cd2 Update CHANGELOG.md (#7844)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 10:06:31 +00:00
CanbiZ
1f40670ea0 cosmos: add info note for configuration file (#7824) 2025-09-23 12:06:07 +02:00
community-scripts-pr-app[bot]
cec4e2d5c1 Update CHANGELOG.md (#7841)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 09:40:12 +00:00
CanbiZ
1fafb3f661 Suppress wrong errors from uv shell integration in setup_uv (#7822) 2025-09-23 11:39:46 +02:00
community-scripts-pr-app[bot]
b56b053e8b Update CHANGELOG.md (#7840)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 09:38:32 +00:00
CanbiZ
21f98835dc Update Tandoor install scripts for newer dependencies (#7826) 2025-09-23 11:38:07 +02:00
community-scripts-pr-app[bot]
ab455d7748 Update CHANGELOG.md (#7839)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 09:36:51 +00:00
CanbiZ
5382fa1dbd Update Monica and Outline to use Node.js 22 (#7833) 2025-09-23 11:36:29 +02:00
community-scripts-pr-app[bot]
6fa1938360 Update CHANGELOG.md (#7837)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:47:49 +00:00
community-scripts-pr-app[bot]
2a2df5b5cc Update CHANGELOG.md (#7836)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:47:27 +00:00
CanbiZ
f99d582eb5 ElementSynapse: add note for Bridge Install Methods (#7820) 2025-09-23 10:47:25 +02:00
community-scripts-pr-app[bot]
d3f24ae5b2 Update CHANGELOG.md (#7835)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:47:05 +00:00
CanbiZ
25e89f7bac Refactor Caddyfile configuration for headscale-admin (#7821) 2025-09-23 10:47:00 +02:00
community-scripts-pr-app[bot]
2686753448 Update CHANGELOG.md (#7834)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:46:56 +00:00
CanbiZ
19678e2534 Update Zabbix install for Debian 13 and agent selection (#7819) 2025-09-23 10:46:32 +02:00
community-scripts-pr-app[bot]
1ac8f90281 Update CHANGELOG.md (#7832)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:46:29 +00:00
Tobias
7cd3e40f9c tracktor: bump to debian 13 | feature bump (#7818) 2025-09-23 10:46:03 +02:00
community-scripts-pr-app[bot]
42191bdb5a Update CHANGELOG.md (#7831)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:45:46 +00:00
CanbiZ
aab1a9bce5 LiteLLM: Bump to Debian 13 & add deps (#7815) 2025-09-23 10:45:20 +02:00
community-scripts-pr-app[bot]
208226065b Update CHANGELOG.md (#7830)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:44:49 +00:00
community-scripts-pr-app[bot]
54e62749be Update CHANGELOG.md (#7829)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:44:40 +00:00
community-scripts-pr-app[bot]
2a8e2e62cd Update date in json (#7827)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-23 10:44:24 +02:00
CanbiZ
b15d7be4c3 Improve subscription element removal in post-install script (#7814) 2025-09-23 10:44:14 +02:00
community-scripts-pr-app[bot]
e208bc110b Update CHANGELOG.md (#7828)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 08:43:52 +00:00
push-app-to-main[bot]
b26ad61a33 UpSnap (#7825)
* 'Add new script'

* Remove redundant success message in upsnap.sh

* Update upsnap.json

* Fix JSON formatting in upsnap.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-09-23 10:43:29 +02:00
community-scripts-pr-app[bot]
5beaec9514 Update CHANGELOG.md (#7823)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 07:47:32 +00:00
CanbiZ
3a668870b7 gh: remove ai autolabel test (#7817) 2025-09-23 09:47:05 +02:00
community-scripts-pr-app[bot]
3266962630 Update CHANGELOG.md (#7816)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 06:14:21 +00:00
Chris
2a3f5d7b47 Immich: bump to v1.143.0 (#7801) 2025-09-23 08:13:57 +02:00
community-scripts-pr-app[bot]
fb4c3cf9e9 Update CHANGELOG.md (#7813)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 05:00:17 +00:00
Slaviša Arežina
e96ea4eb40 Fix release fetching (#7807) 2025-09-23 06:59:52 +02:00
community-scripts-pr-app[bot]
dfbe5f03ce Update CHANGELOG.md (#7810)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 00:14:05 +00:00
community-scripts-pr-app[bot]
9c53c70f6b Update versions.json (#7809)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-23 02:13:40 +02:00
community-scripts-pr-app[bot]
a3c7f468ef Update versions.json (#7800)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-22 14:05:53 +02:00
community-scripts-pr-app[bot]
605f7a0330 Update CHANGELOG.md (#7797)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-22 07:52:02 +00:00
Slaviša Arežina
306627378e Update shell check (#7796) 2025-09-22 09:51:34 +02:00
community-scripts-pr-app[bot]
0e464cb192 Update CHANGELOG.md (#7795)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-22 06:08:06 +00:00
Slaviša Arežina
277f6ce7d1 Paymenter: Installation and update fixes (#7792) 2025-09-22 08:07:33 +02:00
community-scripts-pr-app[bot]
a6d6f79943 Update CHANGELOG.md (#7794)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-22 00:13:28 +00:00
community-scripts-pr-app[bot]
a7ced850ab Update versions.json (#7793)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-22 02:13:01 +02:00
community-scripts-pr-app[bot]
eadca5f81f Update CHANGELOG.md (#7789)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 16:56:56 +00:00
HeedfulCrayon
5ab375fd89 fix openwebui update and installer (#7788)
* Update curl command to support resuming downloads

* fix: correct curl command for downloading Ollama to support resuming
2025-09-21 18:56:31 +02:00
community-scripts-pr-app[bot]
2dc95b6b22 Update CHANGELOG.md (#7787)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 16:14:33 +00:00
Tobias
57dd3d5a44 tracktor: add: cleanup before upgrade (#7782)
* tracktor: add: cleanup before upgrade

* tracktor: change to new clean_install
2025-09-21 18:14:12 +02:00
community-scripts-pr-app[bot]
25ddf48190 Update CHANGELOG.md (#7786)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 14:20:44 +00:00
CanbiZ
01b6bec1fe Implement clean install option in tools.func (#7785) 2025-09-21 16:20:18 +02:00
community-scripts-pr-app[bot]
d1ff8201b1 Update versions.json (#7784)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 14:05:18 +02:00
community-scripts-pr-app[bot]
c5c5ba1ede Update CHANGELOG.md (#7783)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 09:40:57 +00:00
HeedfulCrayon
e3aabd81a3 Update Ollama Installer in OpenWebUI to resume downloads if interrupted (#7779)
* Fix curl command options for downloading file

* Update curl command for Ollama installation
2025-09-21 11:40:33 +02:00
community-scripts-pr-app[bot]
4713941415 Update CHANGELOG.md (#7781)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 06:29:01 +00:00
CanbiZ
adda76f587 caddy: modify disk size and implement xCaddy update (#7775) 2025-09-21 08:28:39 +02:00
community-scripts-pr-app[bot]
cf597b6a26 Update CHANGELOG.md (#7780)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 06:28:35 +00:00
CanbiZ
20e8730a34 Harmonize and shorten JSON Names for PVE/PBS/PMG (#7773) 2025-09-21 08:28:14 +02:00
CanbiZ
9ce9de8e84 Fix regex to extract MySQL version correctly (#7774) 2025-09-21 08:28:07 +02:00
community-scripts-pr-app[bot]
ac3f969016 Update CHANGELOG.md (#7777)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 00:13:58 +00:00
community-scripts-pr-app[bot]
c0597842f8 Update versions.json (#7776)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-21 02:13:30 +02:00
community-scripts-pr-app[bot]
667d354059 Update CHANGELOG.md (#7767)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 16:26:54 +00:00
Michel Roegl-Brunner
d56c1e2f50 checkmk.sh update (#7765) 2025-09-20 18:26:28 +02:00
community-scripts-pr-app[bot]
3dfbc2d6ea Update versions.json (#7764)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 14:05:36 +02:00
community-scripts-pr-app[bot]
31b33d370e Update CHANGELOG.md (#7760)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 08:01:43 +00:00
Slaviša Arežina
d4d4c0e07a Increase resources (#7759) 2025-09-20 10:01:19 +02:00
community-scripts-pr-app[bot]
aded4d5809 Update CHANGELOG.md (#7758)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 07:02:31 +00:00
Michel Roegl-Brunner
c00308524b Replace Ubuntu 20.04 with Debian 13 in bug report template (#7757) 2025-09-20 09:02:08 +02:00
community-scripts-pr-app[bot]
fef7786714 Update CHANGELOG.md (#7756)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 00:12:08 +00:00
community-scripts-pr-app[bot]
0dfd337a9a Update versions.json (#7755)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 02:11:46 +02:00
community-scripts-pr-app[bot]
d99862fa24 Update CHANGELOG.md (#7747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 18:52:42 +00:00
Slaviša Arežina
ac08d385c0 SigNoz: Fix wrong URL for Zookeeper (#7742)
* Fix install

* Update signoz-install.sh
2025-09-19 20:52:11 +02:00
community-scripts-pr-app[bot]
7a9de76acb Update CHANGELOG.md (#7745)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:29 +00:00
community-scripts-pr-app[bot]
35f3f043a7 Update CHANGELOG.md (#7744)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:13 +00:00
community-scripts-pr-app[bot]
4276df26d7 Update date in json (#7743)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:07 +00:00
push-app-to-main[bot]
5fec573533 Tunarr (#7735)
* 'Add new script'

* Refactor Intel Hardware Acceleration installation script

* Refactor hardware acceleration setup in tunarr-install.sh

Updated prompts and adjusted user group permissions for hardware acceleration setup.

---------

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-09-19 14:56:46 +02:00
community-scripts-pr-app[bot]
ebd269a808 Update versions.json (#7740)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 14:07:04 +02:00
97 changed files with 2270 additions and 951 deletions

View File

@@ -60,7 +60,7 @@ body:
- Alpine
- Debian 11
- Debian 12
- Ubuntu 20.04
- Debian 13
- Ubuntu 22.04
- Ubuntu 24.04
- Ubuntu 24.10

38
.github/label-priority.json generated vendored
View File

@@ -1,38 +0,0 @@
{
"priorities": {
"refactor": 3,
"feature": 2,
"bugfix": 1,
"new script": 3,
"update script": 2,
"delete script": 2,
"json": 3,
"website": 2,
"maintenance": 1,
"documentation": 1,
"core": 2,
"api": 2,
"addon": 2,
"pve-tool": 2,
"vm": 2,
"github": 1
},
"conflicts": {
"bugfix": ["refactor"],
"website": ["json"],
"update script": ["new script", "delete script"],
"new script": ["update script", "delete script"],
"delete script": ["new script", "update script"]
},
"rules": {
"always_combine": [
"maintenance",
"core",
"api",
"addon",
"pve-tool",
"vm",
"github"
]
}
}

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

@@ -112,119 +112,3 @@ jobs:
labels: Array.from(labelsToAdd),
});
}
ai-check:
needs: autolabeler
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load priority config
run: |
echo "PRIORITY_JSON=$(jq -c . .github/label-priority.json)" >> $GITHUB_ENV
- name: Fetch PR metadata
id: pr
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const files = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number
});
const prData = {
title: pr.title || "",
body: pr.body || "",
files: files.data.map(f => f.filename)
};
require('fs').writeFileSync(process.env.GITHUB_ENV, `PR_DATA=${JSON.stringify(prData)}\n`, {flag: 'a'});
- name: AI Label Review
id: ai
uses: actions/github-script@v7
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
script: |
const prData = JSON.parse(process.env.PR_DATA);
const prompt = `
You are a GitHub labeling bot.
Task:
- Analyze PR title, body, and file list.
- For each possible label, return a confidence score (01).
- If both bugfix and refactor apply, prefer refactor.
- Output JSON: {"labels":[{"name":"bugfix","score":0.9},{"name":"refactor","score":0.6}]}
Valid labels: [new script, update script, delete script, bugfix, feature, maintenance, refactor, website, json, api, core, github, addon, pve-tool, vm].
PR data: ${JSON.stringify(prData)}
`;
const response = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + process.env.OPENAI_API_KEY,
},
body: JSON.stringify({
model: "gpt-4.1-mini",
messages: [{ role: "user", content: prompt }],
temperature: 0
})
});
const data = await response.json();
const labels = JSON.parse(data.choices[0].message.content).labels;
core.setOutput("labels", JSON.stringify(labels));
- name: Apply AI Labels
uses: actions/github-script@v7
with:
script: |
const raw = JSON.parse('${{ steps.ai.outputs.labels }}');
const prNumber = context.payload.pull_request.number;
const config = JSON.parse(process.env.PRIORITY_JSON);
let toApply = [];
let toSuggest = [];
raw.forEach(l => {
if (l.score >= 0.8) {
const conflicts = config.conflicts[l.name] || [];
const hasStrongerConflict = conflicts.some(c =>
raw.some(x =>
x.name === c &&
x.score >= 0.6 &&
(config.priorities[c] || 0) >= (config.priorities[l.name] || 0)
)
);
if (!hasStrongerConflict) {
toApply.push(l.name);
}
} else if (l.score >= 0.5) {
toSuggest.push(`${l.name} (${Math.round(l.score*100)}%)`);
}
});
if (toApply.length > 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: toApply
});
}
if (toSuggest.length > 0) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body: `🤖 AI suggests these possible labels (uncertain): ${toSuggest.join(", ")}`
});
}

View File

@@ -10,8 +10,173 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-28
## 2025-09-27
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- GoAway: Make admin password aquisition more reliable [@tremor021](https://github.com/tremor021) ([#7946](https://github.com/community-scripts/ProxmoxVE/pull/7946))
- MeTube: Various fixes [@vhsdream](https://github.com/vhsdream) ([#7936](https://github.com/community-scripts/ProxmoxVE/pull/7936))
- Oddo: Fix typo in update procedure [@tremor021](https://github.com/tremor021) ([#7941](https://github.com/community-scripts/ProxmoxVE/pull/7941))
## 2025-09-26
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Odoo: Fix missing dependencies [@tremor021](https://github.com/tremor021) ([#7931](https://github.com/community-scripts/ProxmoxVE/pull/7931))
- OpenWebUI: Update NODE_OPTIONS to increase memory limit [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7919](https://github.com/community-scripts/ProxmoxVE/pull/7919))
### 🌐 Website
- #### 📝 Script Information
- Clarify descriptions of update scripts [@tremor021](https://github.com/tremor021) ([#7929](https://github.com/community-scripts/ProxmoxVE/pull/7929))
## 2025-09-25
### 🆕 New Scripts
- GoAway ([#7900](https://github.com/community-scripts/ProxmoxVE/pull/7900))
### 🚀 Updated Scripts
- #### ✨ New Features
- ntfy: bump to debian 13 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7895](https://github.com/community-scripts/ProxmoxVE/pull/7895))
### 🌐 Website
- #### ✨ New Features
- feat: add menu icons to website [@BramSuurdje](https://github.com/BramSuurdje) ([#7894](https://github.com/community-scripts/ProxmoxVE/pull/7894))
## 2025-09-24
### 🆕 New Scripts
- Add Script: Joplin Server ([#7879](https://github.com/community-scripts/ProxmoxVE/pull/7879))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Monica: Fix dependencies [@tremor021](https://github.com/tremor021) ([#7877](https://github.com/community-scripts/ProxmoxVE/pull/7877))
### 🌐 Website
- #### 📝 Script Information
- Update name in lxc-delete.json to 'PVE LXC Deletion' [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7872](https://github.com/community-scripts/ProxmoxVE/pull/7872))
## 2025-09-23
### 🆕 New Scripts
- UpSnap ([#7825](https://github.com/community-scripts/ProxmoxVE/pull/7825))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- tools.func: Check for /usr/local/bin in PATH during yq setup [@vhsdream](https://github.com/vhsdream) ([#7856](https://github.com/community-scripts/ProxmoxVE/pull/7856))
- BookLore: increase RAM [@vhsdream](https://github.com/vhsdream) ([#7855](https://github.com/community-scripts/ProxmoxVE/pull/7855))
- Bump Immich to v1.143.1 [@vhsdream](https://github.com/vhsdream) ([#7864](https://github.com/community-scripts/ProxmoxVE/pull/7864))
- zabbix: Remove not exist admin credentials from output [@MickLesk](https://github.com/MickLesk) ([#7849](https://github.com/community-scripts/ProxmoxVE/pull/7849))
- Suppress wrong errors from uv shell integration in setup_uv [@MickLesk](https://github.com/MickLesk) ([#7822](https://github.com/community-scripts/ProxmoxVE/pull/7822))
- Refactor Caddyfile configuration for headscale-admin [@MickLesk](https://github.com/MickLesk) ([#7821](https://github.com/community-scripts/ProxmoxVE/pull/7821))
- Improve subscription element removal (mobile) in post-pve script [@MickLesk](https://github.com/MickLesk) ([#7814](https://github.com/community-scripts/ProxmoxVE/pull/7814))
- Blocky: Fix release fetching [@tremor021](https://github.com/tremor021) ([#7807](https://github.com/community-scripts/ProxmoxVE/pull/7807))
- #### ✨ New Features
- Improve globaleaks install ensuring install can proceed without user … [@evilaliv3](https://github.com/evilaliv3) ([#7860](https://github.com/community-scripts/ProxmoxVE/pull/7860))
- Manage My Damn Life: use NodeJS 22 [@vhsdream](https://github.com/vhsdream) ([#7861](https://github.com/community-scripts/ProxmoxVE/pull/7861))
- VM: Increase pv & xz functions (HA OS / Umbrel OS) [@MickLesk](https://github.com/MickLesk) ([#7838](https://github.com/community-scripts/ProxmoxVE/pull/7838))
- Tandoor: update for newer dependencies (psql) + bump nodejs to 22 [@MickLesk](https://github.com/MickLesk) ([#7826](https://github.com/community-scripts/ProxmoxVE/pull/7826))
- Update Monica and Outline to use Node.js 22 [@MickLesk](https://github.com/MickLesk) ([#7833](https://github.com/community-scripts/ProxmoxVE/pull/7833))
- Update Zabbix install for Debian 13 and agent selection [@MickLesk](https://github.com/MickLesk) ([#7819](https://github.com/community-scripts/ProxmoxVE/pull/7819))
- tracktor: bump to debian 13 | feature bump [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7818](https://github.com/community-scripts/ProxmoxVE/pull/7818))
- LiteLLM: Bump to Debian 13 & add deps [@MickLesk](https://github.com/MickLesk) ([#7815](https://github.com/community-scripts/ProxmoxVE/pull/7815))
- Immich: bump to v1.143.0 [@vhsdream](https://github.com/vhsdream) ([#7801](https://github.com/community-scripts/ProxmoxVE/pull/7801))
### 🧰 Maintenance
- #### 📂 Github
- gh: remove ai autolabel test [@MickLesk](https://github.com/MickLesk) ([#7817](https://github.com/community-scripts/ProxmoxVE/pull/7817))
### 🌐 Website
- #### 📝 Script Information
- OpenWebUI: Add information about Ollama [@tremor021](https://github.com/tremor021) ([#7843](https://github.com/community-scripts/ProxmoxVE/pull/7843))
- cosmos: add info note for configuration file [@MickLesk](https://github.com/MickLesk) ([#7824](https://github.com/community-scripts/ProxmoxVE/pull/7824))
- ElementSynapse: add note for Bridge Install Methods [@MickLesk](https://github.com/MickLesk) ([#7820](https://github.com/community-scripts/ProxmoxVE/pull/7820))
## 2025-09-22
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- [core]: Update detection of current running subshell [@tremor021](https://github.com/tremor021) ([#7796](https://github.com/community-scripts/ProxmoxVE/pull/7796))
- Paymenter: Installation and update fixes [@tremor021](https://github.com/tremor021) ([#7792](https://github.com/community-scripts/ProxmoxVE/pull/7792))
## 2025-09-21
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix openwebui update and installer [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7788](https://github.com/community-scripts/ProxmoxVE/pull/7788))
- tracktor: add: cleanup before upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7782](https://github.com/community-scripts/ProxmoxVE/pull/7782))
- Fix regex to extract MySQL version correctly [@MickLesk](https://github.com/MickLesk) ([#7774](https://github.com/community-scripts/ProxmoxVE/pull/7774))
- Update Ollama Installer in OpenWebUI to resume downloads if interrupted [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7779](https://github.com/community-scripts/ProxmoxVE/pull/7779))
- #### ✨ New Features
- Implement clean install option in tools.func (fetch_and_deploy_gh_release) [@MickLesk](https://github.com/MickLesk) ([#7785](https://github.com/community-scripts/ProxmoxVE/pull/7785))
- caddy: modify disk size and implement xCaddy update [@MickLesk](https://github.com/MickLesk) ([#7775](https://github.com/community-scripts/ProxmoxVE/pull/7775))
### 🌐 Website
- #### 📝 Script Information
- Harmonize and shorten JSON Names for PVE/PBS/PMG [@MickLesk](https://github.com/MickLesk) ([#7773](https://github.com/community-scripts/ProxmoxVE/pull/7773))
## 2025-09-20
### 🚀 Updated Scripts
- checkmk.sh Update: Revert old Pr [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7765](https://github.com/community-scripts/ProxmoxVE/pull/7765))
- #### 🐞 Bug Fixes
- Wazuh: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7759](https://github.com/community-scripts/ProxmoxVE/pull/7759))
### 🧰 Maintenance
- #### 📂 Github
- Add Debian 13 in bug report template [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7757](https://github.com/community-scripts/ProxmoxVE/pull/7757))
## 2025-09-19
### 🆕 New Scripts
- Tunarr ([#7735](https://github.com/community-scripts/ProxmoxVE/pull/7735))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- SigNoz: Fix wrong URL for Zookeeper [@tremor021](https://github.com/tremor021) ([#7742](https://github.com/community-scripts/ProxmoxVE/pull/7742))
## 2025-09-18
### 🆕 New Scripts

View File

@@ -40,7 +40,7 @@ function update_script() {
rm -rf /opt/blocky
msg_ok "Removed Old Version"
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
msg_info "Restore Config"
mv /opt/config.yml /opt/blocky/config.yml

View File

@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="BookLore"
var_tags="${var_tags:-books;library}"
var_cpu="${var_cpu:-3}"
var_ram="${var_ram:-2048}"
var_ram="${var_ram:-3072}"
var_disk="${var_disk:-7}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"

View File

@@ -9,7 +9,7 @@ APP="Caddy"
var_tags="${var_tags:-webserver}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
@@ -31,6 +31,19 @@ function update_script() {
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
if command -v xcaddy >/dev/null 2>&1; then
install_go
msg_info "Updating xCaddy"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
VERSION="${RELEASE#v}"
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${VERSION}_linux_amd64.deb" -o "xcaddy_${VERSION}_linux_amd64.deb"
$STD dpkg -i "xcaddy_${VERSION}_linux_amd64.deb"
rm -f "xcaddy_${VERSION}_linux_amd64.deb"
$STD xcaddy build
msg_ok "Updated xCaddy"
fi
exit
}
@@ -41,4 +54,4 @@ 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}:80${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"

View File

@@ -27,21 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "checkmk" "checkmk/checkmk"; then
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
msg_info "Updating ${APP} to v${RELEASE}"
$STD omd stop monitoring
$STD omd cp monitoring monitoringbackup
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
$STD apt-get install -y /opt/checkmk.deb
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
$STD omd start monitoring
$STD omd -f rm monitoringbackup
$STD omd cleanup
rm -rf /opt/checkmk.deb
msg_ok "Updated ${APP}"
msg_ok "Updated Successfully"
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
msg_info "Updating ${APP} to v${RELEASE}"
$STD omd stop monitoring
$STD omd cp monitoring monitoringbackup
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
$STD apt-get install -y /opt/checkmk.deb
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
$STD omd start monitoring
$STD omd -f rm monitoringbackup
$STD omd cleanup
rm -rf /opt/checkmk.deb
msg_ok "Updated ${APP}"
msg_ok "Updated Successfully"
exit
}

54
ct/goaway.sh Normal file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pommee/goaway
APP="GoAway"
var_tags="${var_tags:-network}"
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 [[ ! -d /opt/goaway ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "goaway" "pommee/goaway"; then
msg_info "Stopping Services"
systemctl stop goaway
msg_ok "Stopped Services"
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
msg_info "Starting Services"
systemctl start goaway
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${CL}"

6
ct/headers/goaway Normal file
View File

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

6
ct/headers/joplin-server Normal file
View File

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

6
ct/headers/tunarr Normal file
View File

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

6
ct/headers/upsnap Normal file
View File

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

View File

@@ -53,3 +53,5 @@ 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}Headscale API: ${IP}/api (no Frontend) | headscale-admin: http://${IP}/admin/${CL}"

View File

@@ -74,7 +74,7 @@ function update_script() {
done
msg_ok "Image-processing libraries up to date"
fi
RELEASE="1.142.1"
RELEASE="1.143.1"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services"
systemctl stop immich-web

62
ct/joplin-server.sh Normal file
View File

@@ -0,0 +1,62 @@
#!/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://joplinapp.org/
APP="Joplin-Server"
var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
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/joplin-server ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "joplin-server" "laurent22/joplin"; then
msg_info "Stopping Services"
systemctl stop joplin-server
msg_ok "Stopped Services"
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
msg_info "Updating ${APP}"
cd /opt/joplin-server
sed -i "/onenote-converter/d" packages/lib/package.json
$STD yarn config set --home enableTelemetry 0
export BUILD_SEQUENCIAL=1
$STD yarn install --inline-builds
msg_ok "Updated ${APP}"
msg_info "Starting Services"
systemctl start joplin-server
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}:22300${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -29,23 +29,24 @@ function update_script() {
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop litellm
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
VENV_PATH="/opt/litellm/.venv"
PYTHON_VERSION="3.13" setup_uv
msg_info "Updating $APP"
msg_info "Updating LiteLLM"
$STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
msg_ok "LiteLLM updated"
msg_info "Updating DB Schema"
$STD uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
msg_ok "DB Schema Updated"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start litellm
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}

View File

@@ -35,12 +35,15 @@ function update_script() {
msg_info "Creating Backup"
cp /opt/mmdl/.env /opt/mmdl.env
rm -rf /opt/mmdl
msg_ok "Backup Created"
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
NODE_VERSION="22" setup_nodejs
msg_info "Configuring ${APP}"
cd /opt/mmdl
export NEXT_TELEMETRY_DISABLED=1
$STD npm install
$STD npm run migrate
$STD npm run build

View File

@@ -29,59 +29,53 @@ function update_script() {
exit
fi
msg_info "Stopping ${APP} Service"
systemctl stop metube
msg_ok "Stopped ${APP} Service"
msg_info "Backing up Old Installation"
if [[ -d /opt/metube_bak ]]; then
rm -rf /opt/metube_bak
if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then
echo 'export 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
mv /opt/metube /opt/metube_bak
msg_ok "Backup created"
msg_info "Cloning Latest ${APP} Release"
$STD git clone https://github.com/alexta69/metube /opt/metube
msg_ok "Cloned ${APP}"
if check_for_gh_release "metube" "alexta69/metube"; then
msg_info "Stopping ${APP} Service"
systemctl stop metube
msg_ok "Stopped ${APP} Service"
msg_info "Building Frontend"
cd /opt/metube/ui
$STD npm install
$STD node_modules/.bin/ng build
msg_ok "Built Frontend"
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"
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
msg_info "Setting up Python Environment (uv)"
$STD uv venv /opt/metube/.venv
$STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
msg_ok "Python Environment Ready"
msg_info "Building Frontend"
cd /opt/metube/ui
$STD npm install
$STD node_modules/.bin/ng build
msg_ok "Built Frontend"
msg_info "Installing Backend Requirements"
cd /opt/metube
$STD /opt/metube/.venv/bin/pipenv install
msg_ok "Installed Backend"
msg_info "Restoring Environment File"
if [[ -f /opt/metube_bak/.env ]]; then
cp /opt/metube_bak/.env /opt/metube/.env
fi
msg_ok "Restored .env"
if [[ ! -d /opt/metube/.venv ]]; then
msg_info "Migrating to uv-based environment"
PYTHON_VERSION="3.13" setup_uv
$STD uv venv /opt/metube/.venv
$STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
$STD /opt/metube/.venv/bin/pipenv install
$STD /opt/metube/.venv/bin/pipenv update yt-dlp
msg_info "Patching systemd Service"
cat <<EOF >/etc/systemd/system/metube.service
msg_info "Installing Backend Requirements"
cd /opt/metube
$STD uv sync --frozen --no-dev
msg_ok "Installed Backend"
msg_info "Restoring Environment File"
if [[ -f /opt/metube_bak/.env ]]; then
cp /opt/metube_bak/.env /opt/metube/.env
fi
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
@@ -90,30 +84,31 @@ After=network.target
Type=simple
WorkingDirectory=/opt/metube
EnvironmentFile=/opt/metube/.env
ExecStart=/opt/metube/.venv/bin/pipenv run python3 app/main.py
ExecStart=/opt/metube/.venv/bin/python3 app/main.py
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
msg_ok "Patched systemd Service"
msg_ok "Patched systemd Service"
fi
$STD systemctl daemon-reload
msg_ok "Service Updated"
msg_info "Cleaning up"
rm -rf /opt/metube_bak
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned Up"
msg_info "Starting ${APP} Service"
systemctl start metube
sleep 1
msg_ok "Started ${APP} Service"
msg_ok "Updated Successfully!"
fi
$STD systemctl daemon-reload
msg_ok "Service Updated"
msg_info "Cleaning up"
rm -rf /opt/metube_bak
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned Up"
msg_info "Starting ${APP} Service"
systemctl enable -q --now metube
sleep 1
msg_ok "Started ${APP} Service"
msg_ok "Updated Successfully!"
}
start

View File

@@ -27,6 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
if check_for_gh_release "monica" "monicahq/monica"; then
msg_info "Stopping Service"
systemctl stop apache2
@@ -43,6 +46,7 @@ function update_script() {
cp -r /opt/monica-backup/.env /opt/monica
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
$STD composer install --no-interaction --no-dev
$STD yarn config set ignore-engines true
$STD yarn install
$STD yarn run production
$STD php artisan monica:update --force

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://ntfy.sh/
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -23,13 +23,31 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var ]]; then
if [[ ! -d /etc/ntfy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [ -f /etc/apt/keyrings/archive.heckel.io.gpg ]; then
msg_info "Correcting old Ntfy Repository"
rm -f /etc/apt/keyrings/archive.heckel.io.gpg
rm -f /etc/apt/sources.list.d/archive.heckel.io.list
rm -f /etc/apt/sources.list.d/archive.heckel.io.list.bak
rm -f /etc/apt/sources.list.d/archive.heckel.io.sources
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
cat <<'EOF' >/etc/apt/sources.list.d/ntfy.sources
Types: deb
URIs: https://archive.ntfy.sh/apt/
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/ntfy.gpg
EOF
msg_ok "Corrected old Ntfy Repository"
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
$STD apt update
$STD apt -y upgrade
msg_ok "Updated $APP LXC"
exit
}
@@ -41,4 +59,4 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -28,6 +28,13 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit 1
fi
if ! [[ $(dpkg -s python3-lxml-html-clean 2>/dev/null) ]]; then
$STD apt-get install python3-lxml
curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/universe/l/lxml-html-clean/python3-lxml-html-clean_0.1.1-1_all.deb" -o /opt/python3-lxml-html-clean.deb
$STD dpkg -i /opt/python3-lxml-html-clean.deb
rm -f /opt/python3-lxml-html-clean.deb
fi
RELEASE=$(curl -fsSL https://nightly.odoo.com/ | grep -oE 'href="[0-9]+\.[0-9]+/nightly"' | head -n1 | cut -d'"' -f2 | cut -d/ -f1)
LATEST_VERSION=$(curl -fsSL "https://nightly.odoo.com/${RELEASE}/nightly/deb/" |
grep -oP "odoo_${RELEASE}\.\d+_all\.deb" |

View File

@@ -36,7 +36,7 @@ function update_script() {
msg_info "Stopping Service"
systemctl stop ollama
msg_ok "Stopped Service"
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
rm -rf /usr/lib/ollama
rm -rf /usr/bin/ollama
tar -C /usr -xzf ollama-linux-amd64.tgz
@@ -64,7 +64,7 @@ function update_script() {
fi
systemctl stop open-webui.service
$STD npm install --force
export NODE_OPTIONS="--max-old-space-size=3584"
export NODE_OPTIONS="--max-old-space-size=6000"
$STD npm run build
cd ./backend
$STD pip install -r requirements.txt -U

View File

@@ -28,6 +28,8 @@ function update_script() {
exit
fi
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
if check_for_gh_release "outline" "outline/outline"; then
msg_info "Stopping Services"
systemctl stop outline
@@ -37,7 +39,7 @@ function update_script() {
cp /opt/outline/.env /opt
msg_ok "Backup created"
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
msg_info "Updating ${APP}"
cd /opt/outline

View File

@@ -39,7 +39,7 @@ function update_script() {
if check_for_gh_release "paymenter" "paymenter/paymenter"; then
msg_info "Updating ${APP}"
cd /opt/paymenter
$STD php artisan p:upgrade --no-interaction
$STD php artisan app:upgrade --no-interaction
echo "${CHECK_UPDATE_RELEASE}" >~/.paymenter
msg_ok "Updated Successfully"
fi

View File

@@ -42,7 +42,7 @@ function update_script() {
mv /opt/tandoor /opt/tandoor.bak
msg_ok "Backup Created"
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -33,22 +33,23 @@ function update_script() {
systemctl stop tracktor
msg_ok "Stopped Service"
msg_info "Creating Backup"
cp /opt/tracktor/app/backend/.env /opt/tracktor.env
msg_ok "Created Backup"
msg_info "Correcting Services"
if [ -f /opt/tracktor/app/backend/.env ]; then
mv /opt/tracktor/app/backend/.env /opt/tracktor.env
echo 'AUTH_PIN=123456' >> /opt/tracktor.env
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
systemctl daemon-reload
fi
msg_ok "Corrected Services"
setup_nodejs
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 ${APP}"
msg_info "Updating tracktor"
cd /opt/tracktor
$STD npm install
$STD npm run build
msg_ok "Updated $APP"
msg_info "Restoring Backup"
cp /opt/tracktor.env /opt/tracktor/app/backend/.env
msg_ok "Restored Backup"
msg_ok "Updated tracktor"
msg_info "Starting Service"
systemctl start tracktor

79
ct/tunarr.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: chrisbenincasa
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://tunarr.com/
APP="Tunarr"
var_tags="${var_tags:-iptv}"
var_cpu="${var_cpu:-2}"
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/tunarr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "tunarr" "chrisbenincasa/tunarr"; then
msg_info "Stopping Service"
systemctl stop tunarr
msg_ok "Stopped Service"
msg_info "Creating Backup"
if [ -d "/usr/local/share/tunarr" ]; then
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /usr/local/share/tunarr $STD
msg_ok "Backup Created"
else
msg_error "Backup failed: /usr/local/share/tunarr does not exist"
fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
msg_info "Starting Service"
systemctl start tunarr
msg_ok "Started Service"
msg_ok "Update Successfully"
fi
if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
msg_info "Stopping Service"
systemctl stop tunarr
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
msg_info "Set ErsatzTV-ffmpeg links"
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/local/bin/ffplay
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
msg_ok "ffmpeg links set"
msg_info "Starting Service"
systemctl start tunarr
msg_ok "Started Service"
msg_ok "Update 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}"

53
ct/upsnap.sh Normal file
View File

@@ -0,0 +1,53 @@
#!/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/seriousm4x/UpSnap
APP="UpSnap"
var_tags="${var_tags:-network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/upsnap ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "upsnap" "seriousm4x/UpSnap"; then
msg_info "Stopping Services"
systemctl stop upsnap
msg_ok "Stopped Services"
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
msg_info "Starting Services"
systemctl start upsnap
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}:8090${CL}"

View File

@@ -9,7 +9,7 @@ APP="Wazuh"
var_tags="${var_tags:-security;monitoring}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-18}"
var_disk="${var_disk:-25}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
@@ -41,4 +41,4 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:443${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:443${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -23,37 +23,72 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP} Services"
systemctl stop zabbix-server zabbix-agent2
msg_ok "Stopped ${APP} Services"
msg_info "Updating $APP LXC"
. /etc/os-release
if [ "$VERSION_CODENAME" != "trixie" ]; then
msg_error "Unsupported Debian version: $VERSION_CODENAME please upgrade to Debian 13 (Trixie) before updating Zabbix."
exit 1
fi
if systemctl list-unit-files | grep -q zabbix-agent2.service; then
AGENT_SERVICE="zabbix-agent2"
else
AGENT_SERVICE="zabbix-agent"
fi
msg_info "Stopping Services"
systemctl stop zabbix-server $AGENT_SERVICE
msg_ok "Stopped Services"
msg_info "Updating Zabbix"
mkdir -p /opt/zabbix-backup/
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
#cp -R /usr/share/zabbix-* /opt/zabbix-backup/ Remove temporary
rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
-o /tmp/zabbix-release_latest+debian12_all.deb
$STD dpkg -i zabbix-release_latest+debian12_all.deb
$STD apt-get update
$STD apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-*
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 apt update
msg_info "Starting ${APP} Services"
systemctl start zabbix-server zabbix-agent2
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
if [ "$AGENT_SERVICE" = "zabbix-agent2" ]; then
$STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
fi
else
$STD apt install --only-upgrade zabbix-agent
fi
if command -v fping >/dev/null 2>&1; then
FPING_PATH=$(command -v fping)
sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
fi
if command -v fping6 >/dev/null 2>&1; then
FPING6_PATH=$(command -v fping6)
sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
fi
msg_ok "Updated Zabbix"
msg_info "Starting Services"
systemctl start zabbix-server $AGENT_SERVICE
systemctl restart apache2
msg_ok "Started ${APP} Services"
msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
msg_ok "Cleaned"
msg_ok "Updated Successfully"
exit

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE LXC Tag",
"name": "PVE LXC Tag",
"slug": "add-iptag",
"categories": [
1

View File

@@ -20,7 +20,7 @@
"script": "ct/booklore.sh",
"resources": {
"cpu": 3,
"ram": 2048,
"ram": 3072,
"hdd": 7,
"os": "debian",
"version": "12"

View File

@@ -21,7 +21,7 @@
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"hdd": 6,
"os": "debian",
"version": "12"
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE LXC Cleaner",
"name": "PVE LXC Cleaner",
"slug": "clean-lxcs",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Clean Orphaned LVM",
"name": "PVE Clean Orphaned LVM",
"slug": "clean-orphaned-lvm",
"categories": [
1

View File

@@ -32,5 +32,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"type": "info",
"text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Cron LXC Updater",
"name": "PVE Cron LXC Updater",
"slug": "cron-update-lxcs",
"categories": [
1
@@ -13,7 +13,7 @@
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
"config_path": "",
"description": "This script will add/remove a crontab schedule that updates all LXCs every Sunday at midnight.",
"description": "This script will add/remove a crontab schedule that updates the operating system of all LXCs every Sunday at midnight.",
"install_methods": [
{
"type": "default",

View File

@@ -39,6 +39,10 @@
{
"type": "info",
"text": "Synapse-Admin is running on port 5173"
},
{
"type": "info",
"text": "For bridges Installation methods (WhatsApp, Signal, Discord, etc.), see: ´https://docs.mau.fi/bridges/go/setup.html´"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE LXC Filesystem Trim",
"name": "PVE LXC Filesystem Trim",
"slug": "fstrim",
"categories": [
1

View File

@@ -0,0 +1,40 @@
{
"name": "GoAway",
"slug": "goaway",
"categories": [
5
],
"date_created": "2025-09-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://github.com/pommee/goaway#configuration-file",
"config_path": "/opt/goaway/config/settings.yaml",
"website": "https://github.com/pommee/goaway",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/goaway.webp",
"description": "Lightweight DNS sinkhole written in Go with a modern dashboard client. Very good looking new alternative to Pi-Hole and Adguard Home.",
"install_methods": [
{
"type": "default",
"script": "ct/goaway.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Type `cat ~/goaway.creds` to see login credentials.",
"type": "info"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Host Backup",
"name": "PVE Host Backup",
"slug": "host-backup",
"categories": [
1

View File

@@ -0,0 +1,40 @@
{
"name": "Joplin Server",
"slug": "joplin-server",
"categories": [
12
],
"date_created": "2025-09-24",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 22300,
"documentation": "https://joplinapp.org/help/",
"config_path": "/opt/joplin-server/.env",
"website": "https://joplinapp.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/joplin.webp",
"description": "Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.",
"install_methods": [
{
"type": "default",
"script": "ct/joplin-server.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 20,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin@localhost",
"password": "admin"
},
"notes": [
{
"text": "Application can take some time to build, depending on your host speed. Please be patient.",
"type": "info"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Kernel Clean",
"name": "PVE Kernel Clean",
"slug": "kernel-clean",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Kernel Pin",
"name": "PVE Kernel Pin",
"slug": "kernel-pin",
"categories": [
1

View File

@@ -23,7 +23,7 @@
"ram": 2048,
"hdd": 4,
"os": "Debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -1,5 +1,5 @@
{
"name": "Container LXC Deletion",
"name": "PVE LXC Deletion",
"slug": "lxc-delete",
"categories": [
1

View File

@@ -1,31 +1,186 @@
{
"categories": [
{ "name": "Proxmox & Virtualization", "id": 1, "sort_order": 1.0, "description": "Tools and scripts to manage Proxmox VE and virtualization platforms effectively." },
{ "name": "Operating Systems", "id": 2, "sort_order": 2.0, "description": "Scripts for deploying and managing various operating systems." },
{ "name": "Containers & Docker", "id": 3, "sort_order": 3.0, "description": "Solutions for containerization using Docker and related technologies." },
{ "name": "Network & Firewall", "id": 4, "sort_order": 4.0, "description": "Enhance network security and configure firewalls with ease." },
{ "name": "Adblock & DNS", "id": 5, "sort_order": 5.0, "description": "Optimize your network with DNS and ad-blocking solutions." },
{ "name": "Authentication & Security", "id": 6, "sort_order": 6.0, "description": "Secure your infrastructure with authentication and security tools." },
{ "name": "Backup & Recovery", "id": 7, "sort_order": 7.0, "description": "Reliable backup and recovery scripts to protect your data." },
{ "name": "Databases", "id": 8, "sort_order": 8.0, "description": "Deploy and manage robust database systems with ease." },
{ "name": "Monitoring & Analytics", "id": 9, "sort_order": 9.0, "description": "Monitor system performance and analyze data seamlessly." },
{ "name": "Dashboards & Frontends", "id": 10, "sort_order": 10.0, "description": "Create interactive dashboards and user-friendly frontends." },
{ "name": "Files & Downloads", "id": 11, "sort_order": 11.0, "description": "Manage file sharing and downloading solutions efficiently." },
{ "name": "Documents & Notes", "id": 12, "sort_order": 12.0, "description": "Organize and manage documents and note-taking tools." },
{ "name": "Media & Streaming", "id": 13, "sort_order": 13.0, "description": "Stream and manage media effortlessly across devices." },
{ "name": "*Arr Suite", "id": 14, "sort_order": 14.0, "description": "Automated media management with the popular *Arr suite tools." },
{ "name": "NVR & Cameras", "id": 15, "sort_order": 15.0, "description": "Manage network video recorders and camera setups." },
{ "name": "IoT & Smart Home", "id": 16, "sort_order": 16.0, "description": "Control and automate IoT devices and smart home systems." },
{ "name": "ZigBee, Z-Wave & Matter", "id": 17, "sort_order": 17.0, "description": "Solutions for ZigBee, Z-Wave, and Matter-based device management." },
{ "name": "MQTT & Messaging", "id": 18, "sort_order": 18.0, "description": "Set up reliable messaging and MQTT-based communication systems." },
{ "name": "Automation & Scheduling", "id": 19, "sort_order": 19.0, "description": "Automate tasks and manage scheduling with powerful tools." },
{ "name": "AI / Coding & Dev-Tools", "id": 20, "sort_order": 20.0, "description": "Leverage AI and developer tools for smarter coding workflows." },
{ "name": "Webservers & Proxies", "id": 21, "sort_order": 21.0, "description": "Deploy and configure web servers and proxy solutions." },
{ "name": "Bots & ChatOps", "id": 22, "sort_order": 22.0, "description": "Enhance collaboration with bots and ChatOps integrations." },
{ "name": "Finance & Budgeting", "id": 23, "sort_order": 23.0, "description": "Track expenses and manage budgets efficiently." },
{ "name": "Gaming & Leisure", "id": 24, "sort_order": 24.0, "description": "Scripts for gaming servers and leisure-related tools." },
{ "name": "Business & ERP", "id": 25, "sort_order": 25.0, "description": "Streamline business operations with ERP and management tools." },
{ "name": "Miscellaneous", "id": 0, "sort_order": 99.0, "description": "General scripts and tools that don't fit into other categories." }
]
"categories": [
{
"name": "Proxmox & Virtualization",
"id": 1,
"sort_order": 1.0,
"description": "Tools and scripts to manage Proxmox VE and virtualization platforms effectively.",
"icon": "server"
},
{
"name": "Operating Systems",
"id": 2,
"sort_order": 2.0,
"description": "Scripts for deploying and managing various operating systems.",
"icon": "monitor"
},
{
"name": "Containers & Docker",
"id": 3,
"sort_order": 3.0,
"description": "Solutions for containerization using Docker and related technologies.",
"icon": "box"
},
{
"name": "Network & Firewall",
"id": 4,
"sort_order": 4.0,
"description": "Enhance network security and configure firewalls with ease.",
"icon": "shield"
},
{
"name": "Adblock & DNS",
"id": 5,
"sort_order": 5.0,
"description": "Optimize your network with DNS and ad-blocking solutions.",
"icon": "ban"
},
{
"name": "Authentication & Security",
"id": 6,
"sort_order": 6.0,
"description": "Secure your infrastructure with authentication and security tools.",
"icon": "lock"
},
{
"name": "Backup & Recovery",
"id": 7,
"sort_order": 7.0,
"description": "Reliable backup and recovery scripts to protect your data.",
"icon": "archive"
},
{
"name": "Databases",
"id": 8,
"sort_order": 8.0,
"description": "Deploy and manage robust database systems with ease.",
"icon": "database"
},
{
"name": "Monitoring & Analytics",
"id": 9,
"sort_order": 9.0,
"description": "Monitor system performance and analyze data seamlessly.",
"icon": "bar-chart"
},
{
"name": "Dashboards & Frontends",
"id": 10,
"sort_order": 10.0,
"description": "Create interactive dashboards and user-friendly frontends.",
"icon": "layout"
},
{
"name": "Files & Downloads",
"id": 11,
"sort_order": 11.0,
"description": "Manage file sharing and downloading solutions efficiently.",
"icon": "download"
},
{
"name": "Documents & Notes",
"id": 12,
"sort_order": 12.0,
"description": "Organize and manage documents and note-taking tools.",
"icon": "file-text"
},
{
"name": "Media & Streaming",
"id": 13,
"sort_order": 13.0,
"description": "Stream and manage media effortlessly across devices.",
"icon": "play"
},
{
"name": "*Arr Suite",
"id": 14,
"sort_order": 14.0,
"description": "Automated media management with the popular *Arr suite tools.",
"icon": "tv"
},
{
"name": "NVR & Cameras",
"id": 15,
"sort_order": 15.0,
"description": "Manage network video recorders and camera setups.",
"icon": "camera"
},
{
"name": "IoT & Smart Home",
"id": 16,
"sort_order": 16.0,
"description": "Control and automate IoT devices and smart home systems.",
"icon": "home"
},
{
"name": "ZigBee, Z-Wave & Matter",
"id": 17,
"sort_order": 17.0,
"description": "Solutions for ZigBee, Z-Wave, and Matter-based device management.",
"icon": "radio"
},
{
"name": "MQTT & Messaging",
"id": 18,
"sort_order": 18.0,
"description": "Set up reliable messaging and MQTT-based communication systems.",
"icon": "message-circle"
},
{
"name": "Automation & Scheduling",
"id": 19,
"sort_order": 19.0,
"description": "Automate tasks and manage scheduling with powerful tools.",
"icon": "clock"
},
{
"name": "AI / Coding & Dev-Tools",
"id": 20,
"sort_order": 20.0,
"description": "Leverage AI and developer tools for smarter coding workflows.",
"icon": "code"
},
{
"name": "Webservers & Proxies",
"id": 21,
"sort_order": 21.0,
"description": "Deploy and configure web servers and proxy solutions.",
"icon": "globe"
},
{
"name": "Bots & ChatOps",
"id": 22,
"sort_order": 22.0,
"description": "Enhance collaboration with bots and ChatOps integrations.",
"icon": "bot"
},
{
"name": "Finance & Budgeting",
"id": 23,
"sort_order": 23.0,
"description": "Track expenses and manage budgets efficiently.",
"icon": "dollar-sign"
},
{
"name": "Gaming & Leisure",
"id": 24,
"sort_order": 24.0,
"description": "Scripts for gaming servers and leisure-related tools.",
"icon": "gamepad-2"
},
{
"name": "Business & ERP",
"id": 25,
"sort_order": 25.0,
"description": "Streamline business operations with ERP and management tools.",
"icon": "building"
},
{
"name": "Miscellaneous",
"id": 0,
"sort_order": 99.0,
"description": "General scripts and tools that don't fit into other categories.",
"icon": "more-horizontal"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Processor Microcode",
"name": "PVE Processor Microcode",
"slug": "microcode",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Monitor-All",
"name": "PVE Monitor-All",
"slug": "monitor-all",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Netdata",
"name": "PVE Netdata",
"slug": "netdata",
"categories": [
1

View File

@@ -23,7 +23,7 @@
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -31,5 +31,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"text": "Script contains optional installation of Ollama.",
"type": "info"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Backup Server Processor Microcode",
"name": "PBS Processor Microcode",
"slug": "pbs-microcode",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Backup Server Post Install",
"name": "PBS Post Install",
"slug": "post-pbs-install",
"categories": [
1
@@ -13,7 +13,7 @@
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
"config_path": "",
"description": "The script will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
"description": "The script is designed for Proxmox Backup Server (PBS) and will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
"install_methods": [
{
"type": "default",

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Mail Gateway Post Install",
"name": "PMG Post Install",
"slug": "post-pmg-install",
"categories": [
1
@@ -13,7 +13,7 @@
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
"config_path": "",
"description": "The script will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
"description": "The script is designed for Proxmox Mail Gateway and will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
"install_methods": [
{
"type": "default",

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE Post Install",
"name": "PVE Post Install",
"slug": "post-pve-install",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Backup Server",
"name": "Proxmox Backup Server (PBS)",
"slug": "proxmox-backup-server",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Datacenter Manager",
"name": "Proxmox Datacenter Manager (PDM)",
"slug": "proxmox-datacenter-manager",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Mail Gateway",
"name": "Proxmox Mail Gateway (PMG)",
"slug": "proxmox-mail-gateway",
"categories": [
1

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE CPU Scaling Governor",
"name": "PVE CPU Scaling Governor",
"slug": "scaling-governor",
"categories": [
1

View File

@@ -10,7 +10,7 @@
"privileged": false,
"interface_port": 3000,
"documentation": "https://tracktor.bytedge.in/introduction.html",
"config_path": "/opt/tracktor/app/server/.env",
"config_path": "/opt/tracktor.env",
"website": "https://tracktor.bytedge.in/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
@@ -23,17 +23,17 @@
"ram": 1024,
"hdd": 6,
"os": "Debian",
"version": "12"
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
"password": "123456"
},
"notes": [
{
"text": "Please check and update the '/opt/tracktor/app/backend/.env' file if using behind reverse proxy.",
"text": "Please check and update the '/opt/tracktor.env' file if using behind reverse proxy.",
"type": "info"
}
]

View File

@@ -0,0 +1,35 @@
{
"name": "Tunarr",
"slug": "tunarr",
"categories": [
13
],
"date_created": "2025-09-19",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/opt/tunarr/.env",
"interface_port": 8000,
"documentation": "https://tunarr.com/",
"website": "https://tunarr.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tunarr.webp",
"description": "Create a classic TV experience using your own media - IPTV backed by Plex/Jellyfin/Emby.",
"install_methods": [
{
"type": "default",
"script": "ct/tunarr.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 5,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox VE LXC Updater",
"name": "PVE LXC Updater",
"slug": "update-lxcs",
"categories": [
1
@@ -13,7 +13,7 @@
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/linuxcontainers.webp",
"config_path": "",
"description": "This script has been created to simplify and speed up the process of updating all LXC containers across various Linux distributions, such as Ubuntu, Debian, Devuan, Alpine Linux, CentOS-Rocky-Alma, Fedora, and ArchLinux. It's designed to automatically skip templates and specific containers during the update, enhancing its convenience and usability.",
"description": "This script has been created to simplify and speed up the process of updating the operating system running inside LXC containers across various Linux distributions, such as Ubuntu, Debian, Devuan, Alpine Linux, CentOS-Rocky-Alma, Fedora, and ArchLinux. It's designed to automatically skip templates and specific containers during the update, enhancing its convenience and usability.",
"install_methods": [
{
"type": "default",
@@ -35,6 +35,10 @@
{
"text": "Execute within the Proxmox shell",
"type": "info"
},
{
"text": "The script updates only the operating system of the LXC container. It DOES NOT update the application installed within the container!",
"type": "warning"
}
]
}

View File

@@ -1,5 +1,5 @@
{
"name": "Proxmox Update Repositories",
"name": "PVE Update Repositories",
"slug": "update-repo",
"categories": [
1

View File

@@ -0,0 +1,40 @@
{
"name": "UpSnap",
"slug": "upsnap",
"categories": [
4
],
"date_created": "2025-09-23",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8090,
"documentation": "https://github.com/seriousm4x/UpSnap/wiki",
"config_path": "",
"website": "https://github.com/seriousm4x/UpSnap",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/upsnap.webp",
"description": "UpSnap is a self-hosted web app that lets you wake up, manage and monitor devices on your network with ease. Built with SvelteKit, Go and PocketBase, it offers a clean dashboard, scheduled wake-ups, device discovery and secure user management.",
"install_methods": [
{
"type": "default",
"script": "ct/upsnap.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 2,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The first user you register will be the admin user.",
"type": "info"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@
"resources": {
"cpu": 4,
"ram": 4096,
"hdd": 18,
"hdd": 25,
"os": "debian",
"version": "12"
}

View File

@@ -23,7 +23,7 @@
"ram": 4096,
"hdd": 6,
"os": "debian",
"version": "12"
"version": "13"
}
}
],
@@ -33,11 +33,19 @@
},
"notes": [
{
"text": "Database credentials: `cat zabbix.creds`",
"text": "Database credentials: `cat ~/zabbix.creds`",
"type": "info"
},
{
"text": "Zabbix agent 2 is used by default",
"text": "You can choose between Zabbix agent (classic) and agent2 (modern) during installation",
"type": "info"
},
{
"text": "For agent2 the PostgreSQL plugin is installed by default; all plugins are optional",
"type": "info"
},
{
"text": "If agent2 with NVIDIA plugin is installed in an environment without GPU, the installer disables it automatically",
"type": "info"
}
]

View File

@@ -1,4 +1,5 @@
import { useCallback, useEffect, useRef, useState } from "react";
import * as Icons from "lucide-react";
import Image from "next/image";
import Link from "next/link";
@@ -9,6 +10,17 @@ import { formattedBadge } from "@/components/command-menu";
import { basePath } from "@/config/site-config";
import { cn } from "@/lib/utils";
function getCategoryIcon(iconName: string) {
// Convert kebab-case to PascalCase for Lucide icon names
const pascalCaseName = iconName
.split("-")
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join("");
const IconComponent = (Icons as any)[pascalCaseName];
return IconComponent ? <IconComponent className="size-4 text-[#0083c3] mr-2" /> : null;
}
export default function ScriptAccordion({
items,
selectedScript,
@@ -81,10 +93,13 @@ export default function ScriptAccordion({
)}
>
<div className="mr-2 flex w-full items-center justify-between">
<span className="pl-2 text-left">
{category.name}
{" "}
</span>
<div className="flex items-center pl-2 text-left">
{getCategoryIcon(category.icon)}
<span>
{category.name}
{" "}
</span>
</div>
<span className="rounded-full bg-gray-200 px-2 py-1 text-xs text-muted-foreground hover:no-underline dark:bg-blue-800/20">
{category.scripts.length}
</span>
@@ -103,10 +118,9 @@ export default function ScriptAccordion({
query: { id: script.slug, category: category.name },
}}
prefetch={false}
className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${
selectedScript === script.slug
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
: ""
className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${selectedScript === script.slug
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
: ""
}`}
onClick={() => {
handleSelected(script.slug);

View File

@@ -41,6 +41,8 @@ export type Category = {
name: string;
id: number;
sort_order: number;
description: string;
icon: string;
scripts: Script[];
};

View File

@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
msg_info "Configuring Blocky"
if systemctl is-active systemd-resolved >/dev/null 2>&1; then

View File

@@ -18,7 +18,7 @@ curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt
echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list
echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks
$STD apt update
$STD apt -y install globaleaks
$STD apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install globaleaks
msg_ok "Setup GlobaLeaks"
motd_ssh

62
install/goaway-install.sh Normal file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# 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/pommee/goaway
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y net-tools
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/goaway.service
[Unit]
Description=GoAway Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/goaway
ExecStart=/opt/goaway/goaway
StandardOutput=file:/var/log/goaway.log
StandardError=inherit
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now goaway
sleep 10
for i in {1..30}; do
ADMIN_PASS=$(awk -F': ' "/Randomly generated admin password:/ {print \$2; exit}" /var/log/goaway.log)
[ -n "$ADMIN_PASS" ] && break
sleep 1
done
{
echo "GoAway Credentials"
echo "Admin User: admin"
echo "Admin Password: $ADMIN_PASS"
} >>~/goaway.creds
msg_ok "Service Created"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -24,26 +24,24 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
$STD caddy stop
rm /etc/caddy/Caddyfile
cat <<'EOF' >/etc/caddy/Caddyfile
:{$PORT:80}
:80
redir /admin /admin/
handle_path /admin* {
root * /opt/headscale-admin
encode gzip zstd
root * /opt/headscale-admin
encode gzip zstd
# Correct MIME types for JS/WASM
header {
@js_files path *.js
@wasm_files path *.wasm
header {
X-Content-Type-Options nosniff
}
Content-Type @js_files application/javascript
Content-Type @wasm_files application/wasm
try_files {path} {path}/ /opt/headscale-admin/index.html
file_server
}
X-Content-Type-Options nosniff
}
# Fallback for SPA routing
try_files {path} {path}/ index.html
file_server
handle /api/* {
reverse_proxy localhost:8080
}
EOF

View File

@@ -272,7 +272,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.142.1" "$SRC_DIR"
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.143.1" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (patience)"

View File

@@ -0,0 +1,98 @@
#!/usr/bin/env bash
# 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://joplinapp.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
git \
rsync
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
NODE_VERSION=22 NODE_MODULE="yarn@latest,npm@latest,pm2@latest" setup_nodejs
mkdir -p /opt/pm2
export PM2_HOME=/opt/pm2
$STD pm2 install pm2-logrotate
$STD pm2 set pm2-logrotate:max_size 100MB
$STD pm2 set pm2-logrotate:retain 5
$STD pm2 set pm2-logrotate:compress tr
msg_info "Setting up PostgreSQL Database"
DB_NAME=joplin
DB_USER=joplin
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
{
echo "Joplin-Credentials"
echo "Joplin Database User: $DB_USER"
echo "Joplin Database Password: $DB_PASS"
echo "Joplin Database Name: $DB_NAME"
} >>~/joplin.creds
msg_ok "Set up PostgreSQL Database"
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
msg_info "Setting up Joplin Server (Patience)"
LOCAL_IP=$(hostname -I | awk '{print $1}')
cd /opt/joplin-server
sed -i "/onenote-converter/d" packages/lib/package.json
$STD yarn config set --home enableTelemetry 0
export BUILD_SEQUENCIAL=1
$STD yarn install --inline-builds
cat <<EOF >/opt/joplin-server/.env
PM2_HOME=/opt/pm2
NODE_ENV=production
APP_BASE_URL=http://$LOCAL_IP:22300
APP_PORT=22300
DB_CLIENT=pg
POSTGRES_PASSWORD=$DB_PASS
POSTGRES_DATABASE=$DB_NAME
POSTGRES_USER=$DB_USER
POSTGRES_PORT=5432
POSTGRES_HOST=localhost
EOF
msg_ok "Setup Joplin Server"
msg_info "Setting up Service"
cat <<EOF >/etc/systemd/system/joplin-server.service
[Unit]
Description=Joplin Server Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/joplin-server/packages/server
EnvironmentFile=/opt/joplin-server/.env
ExecStart=/usr/bin/yarn start-prod
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now joplin-server
msg_ok "Service Setup"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,6 +13,12 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
python3-dev
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
PYTHON_VERSION="3.13" setup_uv
@@ -75,6 +81,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -17,7 +17,7 @@ msg_info "Installing dependencies"
$STD apt-get install --no-install-recommends -y build-essential
msg_ok "Installed dependencies"
NODE_VERSION="20" setup_nodejs
NODE_VERSION="22" setup_nodejs
MYSQL_VERSION="8.0" setup_mysql
msg_info "Setting up Database"
@@ -48,7 +48,7 @@ sed -i -e 's|db|localhost|' \
-e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
/opt/mmdl/.env
cd /opt/mmdl
export NEXT_TELEMETRY_DISABLE=1
export NEXT_TELEMETRY_DISABLED=1
export CI="true"
$STD npm install
$STD npm run migrate

View File

@@ -22,7 +22,6 @@ $STD apt-get install -y --no-install-recommends \
g++ \
musl-dev \
ffmpeg \
git \
make \
ca-certificates
msg_ok "Installed Dependencies"
@@ -30,25 +29,29 @@ msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="22" setup_nodejs
msg_info "Installing Deno"
export DENO_INSTALL="/usr/local"
curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y
[[ ":$PATH:" != *":/usr/local/bin:"* ]] &&
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc &&
source ~/.bashrc
msg_ok "Installed Deno"
fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
msg_info "Installing MeTube"
$STD git clone https://github.com/alexta69/metube /opt/metube
cd /opt/metube/ui
$STD npm install
$STD node_modules/.bin/ng build
cd /opt/metube
$STD uv venv /opt/metube/.venv
$STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
$STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
$STD /opt/metube/.venv/bin/python -m pip install pipenv
$STD /opt/metube/.venv/bin/pipenv install
$STD /opt/metube/.venv/bin/pipenv update yt-dlp
$STD uv sync --frozen --no-dev
mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos
cat <<EOF >/opt/metube/.env
DOWNLOAD_DIR=/opt/metube_downloads
STATE_DIR=/opt/metube_downloads/.metube
TEMP_DIR=/opt/metube_downloads
YTDL_OPTIONS={"trim_file_name":10}
YTDL_OPTIONS={"trim_file_name":10,"extractor_args":{"youtube":{"player_client":["default","-tv_simply"]}}}
EOF
msg_ok "Installed MeTube"
@@ -62,7 +65,7 @@ After=network.target
Type=simple
WorkingDirectory=/opt/metube
EnvironmentFile=/opt/metube/.env
ExecStart=/opt/metube/.venv/bin/pipenv run python3 app/main.py
ExecStart=/opt/metube/.venv/bin/python3 app/main.py
Restart=always
User=root

View File

@@ -16,7 +16,7 @@ update_os
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
setup_composer
setup_mariadb
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
msg_info "Setting up MariaDB"
DB_NAME=monica
@@ -44,6 +44,7 @@ sed -i -e "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USER}|" \
-e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \
/opt/monica/.env
$STD composer install --no-dev -o --no-interaction
$STD yarn config set ignore-engines true
$STD yarn install
$STD yarn run production
$STD php artisan key:generate

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://ntfy.sh/
@@ -13,17 +13,19 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apt-transport-https
msg_ok "Installed Dependencies"
msg_info "Installing ntfy"
mkdir -p /etc/apt/keyrings
curl -fsSL https://archive.heckel.io/apt/pubkey.txt | gpg --dearmor -o /etc/apt/keyrings/archive.heckel.io.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main" >/etc/apt/sources.list.d/archive.heckel.io.list
$STD apt-get update
$STD apt-get install -y ntfy
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
cat <<EOF >/etc/apt/sources.list.d/ntfy.sources
Types: deb
URIs: https://archive.ntfy.sh/apt/
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/ntfy.gpg
EOF
$STD apt update
$STD apt install -y ntfy
systemctl enable -q --now ntfy
msg_ok "Installed ntfy"
@@ -31,6 +33,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -14,11 +14,13 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
build-essential \
make
$STD apt-get install -y python3-lxml
curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/universe/l/lxml-html-clean/python3-lxml-html-clean_0.1.1-1_all.deb" -o /opt/python3-lxml-html-clean.deb
$STD dpkg -i /opt/python3-lxml-html-clean.deb
msg_ok "Installed Dependencies"
PG_VERSION="18" setup_postgresql
RELEASE=$(curl -fsSL https://nightly.odoo.com/ | grep -oE 'href="[0-9]+\.[0-9]+/nightly"' | head -n1 | cut -d'"' -f2 | cut -d/ -f1)
LATEST_VERSION=$(curl -fsSL "https://nightly.odoo.com/${RELEASE}/nightly/deb/" |
grep -oP "odoo_${RELEASE}\.\d+_all\.deb" |
@@ -69,6 +71,7 @@ customize
msg_info "Cleaning up"
rm -f /opt/odoo.deb
rm -f /opt/python3-lxml-html-clean.deb
$STD apt-get autoremove
$STD apt-get autoclean
msg_ok "Cleaned"

View File

@@ -41,14 +41,14 @@ ENABLE_OLLAMA_API=false
OLLAMA_BASE_URL=http://0.0.0.0:11434
EOF
$STD npm install --force
export NODE_OPTIONS="--max-old-space-size=3584"
export NODE_OPTIONS="--max-old-space-size=6000"
$STD npm run build
msg_ok "Installed Open WebUI"
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Ollama"
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
tar -C /usr -xzf ollama-linux-amd64.tgz
rm -rf ollama-linux-amd64.tgz
cat <<EOF >/etc/systemd/system/ollama.service

View File

@@ -20,7 +20,7 @@ $STD apt-get install -y \
redis
msg_ok "Installed Dependencies"
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql
msg_info "Set up PostgreSQL Database"

View File

@@ -21,7 +21,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies"
setup_mariadb
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,fpm,redis" setup_php
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,redis" setup_php
setup_composer
fetch_and_deploy_gh_release "paymenter" "paymenter/paymenter" "prebuild" "latest" "/opt/paymenter" "paymenter.tar.gz"
chmod -R 755 /opt/paymenter/storage/* /opt/paymenter/bootstrap/cache/
@@ -30,7 +30,7 @@ msg_info "Setting up database"
DB_NAME=paymenter
DB_USER=paymenter
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
@@ -108,8 +108,8 @@ RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now paymenter
systemctl enable --now redis-server
systemctl enable -q --now paymenter
systemctl enable -q --now redis-server
msg_ok "Setup Service"
motd_ssh

View File

@@ -30,12 +30,13 @@ $STD apt-get install -y clickhouse-server clickhouse-client
msg_ok "Setup ClickHouse"
msg_info "Setting up Zookeeper"
curl -fsSL "https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz" -o "$HOME/zookeeper.tar.gz"
ZOOURL=$(curl -fsSL https://dlcdn.apache.org/zookeeper/current/ | grep -o 'apache-zookeeper-[0-9.]\+-bin\.tar\.gz' | head -n1)
curl -fsSL "https://dlcdn.apache.org/zookeeper/current/$ZOOURL" -o ~/zookeeper.tar.gz
tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME"
mkdir -p /opt/zookeeper
mkdir -p /var/lib/zookeeper
mkdir -p /var/log/zookeeper
cp -r ~/apache-zookeeper-3.8.4-bin/* /opt/zookeeper
cp -r ~/apache-zookeeper-*-bin/* /opt/zookeeper
cat <<EOF >/opt/zookeeper/conf/zoo.cfg
tickTime=2000
@@ -104,8 +105,8 @@ fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collect
msg_info "Running ClickHouse migrations"
cd /opt/signoz-schema-migrator/bin
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
msg_ok "ClickHouse Migrations Completed"
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
@@ -256,7 +257,7 @@ customize
msg_info "Cleaning up"
rm -rf ~/zookeeper.tar.gz
rm -rf ~/apache-zookeeper-3.8.4-bin
rm -rf ~/apache-zookeeper-*-bin
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -30,9 +30,9 @@ $STD apt-get install -y --no-install-recommends \
libxmlsec1-openssl
msg_ok "Installed Dependencies"
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
PG_VERSION="16" setup_postgresql
PG_VERSION="17" PG_MODULES="contrib" setup_postgresql
PYTHON_VERSION="3.13" setup_uv
msg_info "Set up PostgreSQL Database"
@@ -45,6 +45,8 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
{
echo "Tandoor-Credentials"
echo "Tandoor Database Name: $DB_NAME"

View File

@@ -22,7 +22,7 @@ $STD npm install
$STD npm run build
mkdir /opt/tracktor-data
HOST_IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/tracktor/app/backend/.env
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
PUBLIC_DEMO_MODE=false
DB_PATH=/opt/tracktor-data/tracktor.db
@@ -31,6 +31,7 @@ PUBLIC_API_BASE_URL=http://$HOST_IP:3000
# Here add the reverse proxy url as well to avoid cross errors from the app.
CORS_ORIGINS=http://$HOST_IP:3000
PORT=3000
AUTH_PIN=123456
EOF
msg_ok "Configured Tracktor"
@@ -43,7 +44,7 @@ After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/tracktor
EnvironmentFile=/opt/tracktor/app/backend/.env
EnvironmentFile=/opt/tracktor.env
ExecStart=/usr/bin/npm start
[Install]
@@ -56,6 +57,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

101
install/tunarr-install.sh Normal file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: chrisbenincasa
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://tunarr.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setting Up Hardware Acceleration"
if [[ "$CTTYPE" == "0" ]]; then
$STD adduser "$(id -un)" video
$STD adduser "$(id -un)" render
fi
msg_ok "Base Hardware Acceleration Set Up"
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 13 only)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Intel Hardware Acceleration (non-free)"
cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie
Components: non-free non-free-firmware
Types: deb deb-src
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: non-free non-free-firmware
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie-updates
Components: non-free non-free-firmware
EOF
$STD apt update
$STD apt -y install \
intel-media-va-driver-non-free \
ocl-icd-libopencl1 \
mesa-opencl-icd \
mesa-va-drivers \
libvpl2 \
vainfo \
intel-gpu-tools
else
msg_info "Installing Intel Hardware Acceleration (open packages)"
$STD apt -y install \
va-driver-all \
ocl-icd-libopencl1 \
mesa-opencl-icd \
mesa-va-drivers \
vainfo \
intel-gpu-tools
fi
msg_ok "Installed and Set Up Intel Hardware Acceleration"
fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
msg_info "Set ErsatzTV-ffmpeg links"
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/bin/ffplay
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/bin/ffprobe
msg_ok "ffmpeg links set"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/tunarr.service
[Unit]
Description=Tunarr Service
After=multi-user.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/tunarr
ExecStart=/opt/tunarr/tunarr
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now tunarr
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

56
install/upsnap-install.sh Normal file
View File

@@ -0,0 +1,56 @@
#!/usr/bin/env bash
# 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/seriousm4x/UpSnap
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
nmap \
samba \
samba-common-bin \
openssh-client \
openssh-server \
sshpass
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
setcap 'cap_net_raw=+ep' /opt/upsnap/upsnap
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/upsnap.service
[Unit]
Description=UpSnap Service
Documentation=https://github.com/seriousm4x/UpSnap/wiki
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
WorkingDirectory=/opt/upsnap
ExecStart=/opt/upsnap/upsnap serve --http=0.0.0.0:8090
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now upsnap
msg_ok "Service Created"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -13,20 +13,61 @@ setting_up_container
network_check
update_os
PG_VERSION="17" setup_postgresql
msg_info "Installing Zabbix"
cd /tmp
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
-o /tmp/zabbix-release_latest+debian12_all.deb
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
$STD apt-get update
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
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 /tmp/zabbix-release_latest+debian13_all.deb
$STD apt update
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
msg_ok "Installed Zabbix"
while true; do
read -rp "Which agent do you want to install? [1=agent (classic), 2=agent2 (modern), default=1]: " AGENT_CHOICE
case "$AGENT_CHOICE" in
2)
AGENT_PKG="zabbix-agent2"
break
;;
"" | 1)
AGENT_PKG="zabbix-agent"
break
;;
*)
echo "Invalid choice. Please enter 1 or 2."
;;
esac
done
msg_ok "Selected $AGENT_PKG"
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
echo "Choose plugins for Zabbix Agent2:"
echo "1) PostgreSQL only (default, recommended)"
echo "2) All plugins (may cause issues)"
read -rp "Choose option [1-2]: " PLUGIN_CHOICE
case "$PLUGIN_CHOICE" in
2)
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-*
;;
*)
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
;;
esac
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
fi
else
$STD apt install -y zabbix-agent
fi
msg_info "Setting up PostgreSQL"
$STD apt-get install -y postgresql
DB_NAME=zabbixdb
DB_USER=zabbix
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
@@ -35,18 +76,31 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
{
echo "Zabbix-Credentials"
echo "Zabbix Database User: $DB_USER"
echo "Zabbix Database Password: $DB_PASS"
echo "Zabbix Database Name: $DB_NAME"
} >>~/zabbix.creds
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
echo "" >~/zabbix.creds
echo "zabbix Database Credentials" >>~/zabbix.creds
echo "" >>~/zabbix.creds
echo -e "zabbix Database User: \e[32m$DB_USER\e[0m" >>~/zabbix.creds
echo -e "zabbix Database Password: \e[32m$DB_PASS\e[0m" >>~/zabbix.creds
echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
msg_ok "Set up PostgreSQL"
msg_info "Configuring Fping"
if command -v fping >/dev/null 2>&1; then
FPING_PATH=$(command -v fping)
sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
fi
if command -v fping6 >/dev/null 2>&1; then
FPING6_PATH=$(command -v fping6)
sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
fi
msg_ok "Configured Fping"
msg_info "Starting Services"
systemctl restart zabbix-server zabbix-agent2 apache2
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
@@ -56,7 +110,8 @@ motd_ssh
customize
msg_info "Cleaning up"
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
$STD apt-get -y autoremove
$STD apt-get -y autoclean
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -42,11 +42,11 @@ error_handler() {
echo -e "\n$error_message\n"
}
# Check if the shell is using bash
# Check if the current shell is using bash
shell_check() {
if [[ "$(basename "$SHELL")" != "bash" ]]; then
if [[ "$(ps -p $$ -o comm=)" != "bash" ]]; then
clear
msg_error "Your default shell is currently not set to Bash. To use these scripts, please switch to the Bash shell."
msg_error "Your default shell is not bash. Please report this to our github issues or discord."
echo -e "\nExiting..."
sleep 2
exit

View File

@@ -306,6 +306,9 @@ function fetch_and_deploy_gh_release() {
msg_info "Fetching GitHub release: $app ($version)"
local clean_install=false
[[ -n "${CLEAN_INSTALL:-}" && "$CLEAN_INSTALL" == "1" ]] && clean_install=true
### Tarball Mode ###
if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
url=$(echo "$json" | jq -r '.tarball_url // empty')
@@ -319,6 +322,10 @@ function fetch_and_deploy_gh_release() {
}
mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
rm -rf "${target:?}/"*
fi
tar -xzf "$tmpdir/$filename" -C "$tmpdir"
local unpack_dir
unpack_dir=$(find "$tmpdir" -mindepth 1 -maxdepth 1 -type d | head -n1)
@@ -388,7 +395,7 @@ function fetch_and_deploy_gh_release() {
}
}
### Prebuild Mode ###
### Prebuild Mode ###
elif [[ "$mode" == "prebuild" ]]; then
local pattern="${6%\"}"
pattern="${pattern#\"}"
@@ -425,6 +432,9 @@ function fetch_and_deploy_gh_release() {
local unpack_tmp
unpack_tmp=$(mktemp -d)
mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
rm -rf "${target:?}/"*
fi
if [[ "$filename" == *.zip ]]; then
if ! command -v unzip &>/dev/null; then
@@ -1322,7 +1332,7 @@ function setup_mysql() {
CURRENT_OS="$(awk -F= '/^ID=/{print $2}' /etc/os-release)"
if command -v mysql >/dev/null; then
CURRENT_VERSION="$(mysql --version | grep -oP 'Distrib\s+\K[0-9]+\.[0-9]+')"
CURRENT_VERSION="$(mysql --version | grep -oP '[0-9]+\.[0-9]+' | head -n1)"
if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
$STD msg_info "MySQL $CURRENT_VERSION will be upgraded to $MYSQL_VERSION"
NEED_INSTALL=true
@@ -1960,9 +1970,8 @@ function setup_uv() {
export PATH="/usr/local/bin:$PATH"
fi
ensure_usr_local_bin_persist
if ! $STD uv python update-shell; then
msg_error "uv shell integration failed continuing anyway"
fi
$STD uv python update-shell >/dev/null 2>&1 || true
msg_ok "Setup uv $LATEST_VERSION"
# Optional: install specific Python version
@@ -2012,6 +2021,8 @@ function setup_yq() {
}
fi
[[ ":$PATH:" != *":/usr/local/bin:"* ]] && echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc && source ~/.bashrc
if command -v yq &>/dev/null; then
if ! yq --version 2>&1 | grep -q 'mikefarah'; then
rm -f "$(command -v yq)"

View File

@@ -532,20 +532,28 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
"$MARKER" \
"<script>" \
" function removeSubscriptionElements() {" \
" // --- Remove subscription dialogs ---" \
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
" dialogs.forEach(dialog => {" \
" const closeButton = dialog.querySelector('.fa-close');" \
" const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
" const continueButton = dialog.querySelector('button');" \
" if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
" const text = (dialog.textContent || '').toLowerCase();" \
" if (text.includes('subscription')) {" \
" dialog.remove();" \
" console.log('Removed subscription dialog');" \
" }" \
" });" \
"" \
" // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
" cards.forEach(card => {" \
" const hasInteractiveElements = card.querySelector('button, input, a');" \
" const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
" if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
" const text = (card.textContent || '').toLowerCase();" \
" const hasButton = card.querySelector('button');" \
" if (!hasButton && text.includes('subscription')) {" \
" card.remove();" \
" console.log('Removed subscription card');" \
" }" \
" });" \
" }" \
"" \
" const observer = new MutationObserver(removeSubscriptionElements);" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" removeSubscriptionElements();" \
@@ -555,9 +563,8 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
"" >> "$MOBILE_TPL"
fi
EOF
chmod 755 /usr/local/bin/pve-remove-nag.sh
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
DPkg::Post-Invoke { "/usr/local/bin/pve-remove-nag.sh"; };
EOF

View File

@@ -205,15 +205,69 @@ function exit-script() {
exit
}
# Ensure pv is installed or abort with instructions
function ensure_pv() {
if ! command -v pv &>/dev/null; then
msg_info "Installing required package: pv"
apt-get update -qq &>/dev/null
apt-get install -y pv &>/dev/null
if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
msg_error "Failed to install pv automatically."
echo -e "\nPlease run manually on the Proxmox host:\n apt install pv\n"
exit 1
fi
msg_ok "Installed pv"
fi
}
# Download an .xz file and validate it
# Args: $1=url $2=cache_file
function download_and_validate_xz() {
local url="$1"
local file="$2"
# If file exists, check validity
if [[ -s "$file" ]]; then
if xz -t "$file" &>/dev/null; then
msg_ok "Using cached image $(basename "$file")"
return 0
else
msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
rm -f "$file"
fi
fi
# Download fresh file
msg_info "Downloading image: $(basename "$file")"
if ! curl -fSL -o "$file" "$url"; then
msg_error "Download failed: $url"
rm -f "$file"
exit 1
fi
# Validate again
if ! xz -t "$file" &>/dev/null; then
msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
rm -f "$file"
exit 1
fi
msg_ok "Downloaded and validated $(basename "$file")"
}
# Extract .xz with pv
# Args: $1=cache_file $2=target_img
function extract_xz_with_pv() {
set -o pipefail
local file="$1"
local target="$2"
msg_info "Decompressing $(basename "$file") to $target"
if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
msg_error "Failed to extract $file"
rm -f "$target"
exit 1
fi
msg_ok "Decompressed to $target"
}
function default_settings() {
BRANCH="$stable"
VMID=$(get_valid_nextid)
@@ -507,23 +561,15 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}" # .qcow2
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
msg_ok "${CL}${BL}${URL}${CL}"
if [[ ! -s "$CACHE_FILE" ]]; then
curl -f#SL -o "$CACHE_FILE" "$URL"
msg_ok "Downloaded ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
else
msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
fi
download_and_validate_xz "$URL" "$CACHE_FILE"
set -o pipefail
msg_info "Creating Home Assistant OS VM shell"
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
msg_ok "Created VM shell"
msg_info "Decompressing $(basename "$CACHE_FILE") to $FILE_IMG"
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
msg_ok "Decompressed to $FILE_IMG"
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
msg_info "Importing disk into storage ($STORAGE)"
if qm disk import --help >/dev/null 2>&1; then

View File

@@ -35,7 +35,6 @@ GN=$(echo "\033[1;92m")
DGN=$(echo "\033[32m")
CL=$(echo "\033[m")
CL=$(echo "\033[m")
BOLD=$(echo "\033[1m")
BFR="\\r\\033[K"
HOLD=" "
@@ -201,15 +200,69 @@ function exit-script() {
exit
}
# Ensure pv is installed or abort with instructions
function ensure_pv() {
if ! command -v pv &>/dev/null; then
msg_info "Installing required package: pv"
apt-get update -qq &>/dev/null
apt-get install -y pv &>/dev/null
if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
msg_error "Failed to install pv automatically."
echo -e "\nPlease run manually on the Proxmox host:\n apt install pv\n"
exit 1
fi
msg_ok "Installed pv"
fi
}
# Download an .xz file and validate it
# Args: $1=url $2=cache_file
function download_and_validate_xz() {
local url="$1"
local file="$2"
# If file exists, check validity
if [[ -s "$file" ]]; then
if xz -t "$file" &>/dev/null; then
msg_ok "Using cached image $(basename "$file")"
return 0
else
msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
rm -f "$file"
fi
fi
# Download fresh file
msg_info "Downloading image: $(basename "$file")"
if ! curl -fSL -o "$file" "$url"; then
msg_error "Download failed: $url"
rm -f "$file"
exit 1
fi
# Validate again
if ! xz -t "$file" &>/dev/null; then
msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
rm -f "$file"
exit 1
fi
msg_ok "Downloaded and validated $(basename "$file")"
}
# Extract .xz with pv
# Args: $1=cache_file $2=target_img
function extract_xz_with_pv() {
set -o pipefail
local file="$1"
local target="$2"
msg_info "Decompressing $(basename "$file") to $target"
if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
msg_error "Failed to extract $file"
rm -f "$target"
exit 1
fi
msg_ok "Decompressed to $target"
}
function default_settings() {
VMID=$(get_valid_nextid)
MACHINE="q35"
@@ -475,19 +528,13 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}"
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
if [[ ! -s "$CACHE_FILE" ]]; then
msg_ok "Downloading Umbrel OS image"
curl -f#SL -o "$CACHE_FILE" "$URL"
else
msg_ok "Using cached Umbrel OS image"
fi
download_and_validate_xz "$URL" "$CACHE_FILE"
set -o pipefail
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
if qm disk import --help >/dev/null 2>&1; then
IMPORT_CMD=(qm disk import)