Compare commits

...

216 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
5cd24b503c Update CHANGELOG.md (#7120)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-23 00:13:39 +00:00
community-scripts-pr-app[bot]
2e5db6a283 Update versions.json (#7119)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-23 02:13:15 +02:00
community-scripts-pr-app[bot]
32f6a76426 Update CHANGELOG.md (#7115)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 18:20:06 +00:00
Slaviša Arežina
5d526717ef Refactor (#7093) 2025-08-22 20:19:41 +02:00
community-scripts-pr-app[bot]
287265d554 Update CHANGELOG.md (#7114)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 18:17:59 +00:00
Slaviša Arežina
e72f248918 Refactor (#7095) 2025-08-22 20:17:32 +02:00
community-scripts-pr-app[bot]
c207d65b1b Update CHANGELOG.md (#7113)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 18:14:35 +00:00
Slaviša Arežina
fb1d5d5a33 Refactor (#7092) 2025-08-22 20:14:12 +02:00
community-scripts-pr-app[bot]
ed5dfa6eef Update CHANGELOG.md (#7112)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 18:13:19 +00:00
Slaviša Arežina
8314e59973 Refactor (#7090) 2025-08-22 20:12:47 +02:00
community-scripts-pr-app[bot]
b73c50399d Update CHANGELOG.md (#7110)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 16:01:33 +00:00
Slaviša Arežina
50feb0d846 Refactor: qBittorrent (#7089) 2025-08-22 18:01:10 +02:00
community-scripts-pr-app[bot]
4773649706 Update CHANGELOG.md (#7109)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 13:56:12 +00:00
Slaviša Arežina
ebb5d8f2c4 Refactor: RDTClient (#7086)
* Refactor

* Update rdtclient.sh
2025-08-22 15:55:47 +02:00
CanbiZ
0555dbd93c fix conf 2025-08-22 15:47:46 +02:00
community-scripts-pr-app[bot]
e63bc92368 Update CHANGELOG.md (#7108)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:59:29 +00:00
Slaviša Arežina
a74b7c4763 Refactor: Recyclarr (#7085)
* Refactor

* Update recyclarr.sh
2025-08-22 14:59:11 +02:00
CanbiZ
73178f5ff4 correct install place of nltk 2025-08-22 14:58:27 +02:00
community-scripts-pr-app[bot]
0358111f5f Update CHANGELOG.md (#7107)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:23:48 +00:00
Slaviša Arežina
7346e7b1ab Refactor: RevealJS (#7084)
* Refactor

* Update revealjs.sh
2025-08-22 14:23:21 +02:00
CanbiZ
4add8e8273 popd 2025-08-22 14:22:47 +02:00
community-scripts-pr-app[bot]
49f1f7b1e2 Update CHANGELOG.md (#7106)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:16:05 +00:00
Slaviša Arežina
e5a6a5f1c0 Refactor: Rclone (#7087)
* Refactor

* Update rclone.sh
2025-08-22 14:15:44 +02:00
community-scripts-pr-app[bot]
19365b5083 Update CHANGELOG.md (#7105)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:13:33 +00:00
Slaviša Arežina
12d3457002 Refactor: Semaphore (#7083)
* Refactor

* Update semaphore.sh
2025-08-22 14:13:13 +02:00
community-scripts-pr-app[bot]
18abecbf9b Update CHANGELOG.md (#7104)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:11:47 +00:00
Slaviša Arežina
2ead98c480 Refactor: Silverbullet (#7082)
* Refactor

* Update silverbullet.sh
2025-08-22 14:11:23 +02:00
community-scripts-pr-app[bot]
265321b0c0 Update CHANGELOG.md (#7103)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:09:21 +00:00
Slaviša Arežina
bae22ebf82 Refactor (#7094) 2025-08-22 14:09:00 +02:00
CanbiZ
c80f136871 fix nltk issue with uv python 2025-08-22 14:08:25 +02:00
community-scripts-pr-app[bot]
faf4fbd0fd Update CHANGELOG.md (#7102)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 12:07:40 +00:00
Slaviša Arežina
41e8958ab9 Refactor (#7080) 2025-08-22 14:07:13 +02:00
community-scripts-pr-app[bot]
cdc546f879 Update versions.json (#7101)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 14:05:24 +02:00
community-scripts-pr-app[bot]
4ded6585a2 Update CHANGELOG.md (#7099)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 11:03:13 +00:00
CanbiZ
2892b85a6f paperless: nltk fix (#7098) 2025-08-22 13:02:51 +02:00
CanbiZ
e28ab86797 add system flag for uv 2025-08-22 12:01:06 +02:00
CanbiZ
2c3193ebb3 nltk 2025-08-22 03:37:32 +02:00
community-scripts-pr-app[bot]
96959ffdb0 Update CHANGELOG.md (#7078)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 01:36:43 +00:00
Chris
13fbf25ecd Fix: use correct tag parsing for release during update check (#7072) 2025-08-22 03:36:22 +02:00
community-scripts-pr-app[bot]
21d2159f22 Update CHANGELOG.md (#7076)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 00:12:57 +00:00
community-scripts-pr-app[bot]
a42ceeac98 Update versions.json (#7075)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-22 02:12:34 +02:00
community-scripts-pr-app[bot]
6e7ad44d36 Update CHANGELOG.md (#7071)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 18:54:24 +00:00
CanbiZ
9ea852ffad tianji: add uv deps (#7066) 2025-08-21 20:53:56 +02:00
community-scripts-pr-app[bot]
d4bd7a6fda Update date in json (#7070)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-21 18:05:06 +00:00
community-scripts-pr-app[bot]
316f4043d4 Update CHANGELOG.md (#7069)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 18:04:58 +00:00
push-app-to-main[bot]
f799c90712 'Add new script' (#7052)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-08-21 20:04:40 +02:00
community-scripts-pr-app[bot]
7de8934105 Update CHANGELOG.md (#7068)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 18:04:30 +00:00
CanbiZ
15dedc1e16 zitadel: installer for v4 (#7058) 2025-08-21 20:04:09 +02:00
community-scripts-pr-app[bot]
13f46d2c58 Update CHANGELOG.md (#7065)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 17:50:27 +00:00
CanbiZ
ff7e7a6e10 Paperless-NGX: create direction for nltk (#7064) 2025-08-21 19:50:03 +02:00
community-scripts-pr-app[bot]
c49519a7de Update versions.json (#7057)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 14:05:19 +02:00
community-scripts-pr-app[bot]
8ce4776a87 Update CHANGELOG.md (#7055)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 11:44:47 +00:00
Chris
9cda1a8680 Immich: hotfix - revert 7035 (#7054) 2025-08-21 13:44:26 +02:00
community-scripts-pr-app[bot]
c9b5e27d74 Update CHANGELOG.md (#7051)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 08:13:24 +00:00
CanbiZ
70ec048aa9 duplicati: fix release pattern (#7049)
* duplicati: fix pattern

* Update duplicati.sh
2025-08-21 10:12:59 +02:00
community-scripts-pr-app[bot]
89af0c466b Update CHANGELOG.md (#7050)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 08:03:06 +00:00
CanbiZ
93a1710e20 technitiumdns: fix unbound variable (#7047) 2025-08-21 10:02:48 +02:00
community-scripts-pr-app[bot]
91a5c9c48f Update CHANGELOG.md (#7045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 07:15:24 +00:00
CanbiZ
e85353856b [core]: improve binary globbing for gh releases (#7044) 2025-08-21 09:14:59 +02:00
community-scripts-pr-app[bot]
bf99523a94 Update CHANGELOG.md (#7041)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 00:11:36 +00:00
community-scripts-pr-app[bot]
c1b3321801 Update versions.json (#7040)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-21 02:11:13 +02:00
community-scripts-pr-app[bot]
beb9189c72 Update CHANGELOG.md (#7038)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 20:23:50 +00:00
community-scripts-pr-app[bot]
186c82d156 Update CHANGELOG.md (#7036)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 19:48:09 +00:00
Chris
9d431458ca Immich: fix small issue with immich-admin "start" script (#7035) 2025-08-20 21:47:44 +02:00
community-scripts-pr-app[bot]
9c86eea347 Update CHANGELOG.md (#7034)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 18:49:44 +00:00
Tobias
e20af295f0 fix: verbose (#7023) 2025-08-20 20:49:17 +02:00
community-scripts-pr-app[bot]
68832d71fa Update CHANGELOG.md (#7033)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 18:19:08 +00:00
CanbiZ
2e13483f19 Post-Install, change pve-test for trixie (#7031)
* Postinstall, Change pve-test

* MSG improved
2025-08-20 20:18:48 +02:00
community-scripts-pr-app[bot]
c7643ae88c Update CHANGELOG.md (#7032)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 18:08:55 +00:00
Slaviša Arežina
f16f7a130a Fix update (#7027) 2025-08-20 20:08:33 +02:00
community-scripts-pr-app[bot]
94a8fe7132 Update CHANGELOG.md (#7029)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 15:29:42 +00:00
CanbiZ
059d297305 remove unneeded line in paperless 2025-08-20 17:29:21 +02:00
CanbiZ
2bd2a763a1 merge setup_gs from VED to VE 2025-08-20 17:27:19 +02:00
Slaviša Arežina
452ba92a6f Update wastebin.sh (#7024) 2025-08-20 15:54:53 +02:00
community-scripts-pr-app[bot]
d27a875987 Update CHANGELOG.md (#7022)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 13:34:07 +00:00
Slaviša Arežina
14418411f6 Bugfix (#7018) 2025-08-20 15:33:44 +02:00
community-scripts-pr-app[bot]
f13c8ff3ce Update CHANGELOG.md (#7021)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 13:31:06 +00:00
Slaviša Arežina
28dc145811 Update barcode-buddy-install.sh (#7020) 2025-08-20 15:30:43 +02:00
community-scripts-pr-app[bot]
170543bb66 Update CHANGELOG.md (#7019)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 13:18:33 +00:00
CanbiZ
c783024ef0 Refactor: Paperless-ngx (#6938)
* Refactor: Paperless-NGX

* Refactor: Paperless-ngx

* Update paperless-ngx.json

* VED -> VE

* harmonize with VED

* finalize

* Update paperless-ngx.json

* finalize

* fix: casing

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-08-20 15:18:05 +02:00
community-scripts-pr-app[bot]
19403a627b Update CHANGELOG.md (#7016)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 12:00:35 +00:00
CanbiZ
cc08395a1d Feature: Netdata support PVE9 (#7012) 2025-08-20 14:00:10 +02:00
community-scripts-pr-app[bot]
d5093a3d9d Update CHANGELOG.md (#7015)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 11:59:55 +00:00
Slaviša Arežina
52c4f3e0c2 Refactor (#7008) 2025-08-20 13:59:32 +02:00
community-scripts-pr-app[bot]
76a4ec9e06 Update CHANGELOG.md (#7014)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 11:07:20 +00:00
CanbiZ
bebf6f65aa PBS: ifupdown2 reload (#7013) 2025-08-20 13:06:54 +02:00
community-scripts-pr-app[bot]
34582c4dc4 Update CHANGELOG.md (#7005)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 00:12:25 +00:00
community-scripts-pr-app[bot]
4495878c4f Update versions.json (#7004)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-20 02:12:00 +02:00
community-scripts-pr-app[bot]
3c33e8b826 Update CHANGELOG.md (#7001)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 19:56:10 +00:00
CanbiZ
be6cc7ddbb Refactor: Tdarr (#6969) 2025-08-19 21:55:42 +02:00
community-scripts-pr-app[bot]
615049ce5c Update CHANGELOG.md (#6999)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 17:41:37 +00:00
community-scripts-pr-app[bot]
f9e5c46b21 Update CHANGELOG.md (#6998)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 17:41:19 +00:00
community-scripts-pr-app[bot]
913102d66f Update CHANGELOG.md (#6997)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 17:41:09 +00:00
community-scripts-pr-app[bot]
07628f3b76 Update CHANGELOG.md (#6996)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 17:40:56 +00:00
CanbiZ
291d364158 [web]: update logos from reactive-resume & slskd (#6990) 2025-08-19 19:40:44 +02:00
community-scripts-pr-app[bot]
98c4a2ccae Update CHANGELOG.md (#6995)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 17:40:34 +00:00
CanbiZ
c60098d8eb [core]: create_lxc - fix offline issue with alpine packages (#6994) 2025-08-19 19:40:12 +02:00
CanbiZ
7df1dbaf17 quickfix: mapfile for _standard_ mapping
there was an issue, that when debian-12-standard% not available, it uses debian-12-turnkey-xxxx
2025-08-19 16:24:26 +02:00
community-scripts-pr-app[bot]
304c90a1af Update CHANGELOG.md (#6988)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 13:02:05 +00:00
Slaviša Arežina
01fe1b1f62 Refactor (#6958) 2025-08-19 15:01:41 +02:00
community-scripts-pr-app[bot]
fd85e71fcf Update CHANGELOG.md (#6987)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:52:00 +00:00
CanbiZ
66c03ce1b4 Refactor: Glances (+ Feature Bump) (#6976)
* Refactor: Glances

* Update glances.json

* Update glances.json
2025-08-19 14:51:33 +02:00
community-scripts-pr-app[bot]
067f9eb209 Update CHANGELOG.md (#6986)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:44:44 +00:00
Chris
cd3dbc864f Immich: Bump version to 1.138.1 (#6984) 2025-08-19 14:44:25 +02:00
community-scripts-pr-app[bot]
f42f06343d Update CHANGELOG.md (#6985)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:44:16 +00:00
CanbiZ
e46648ecdc [core]: add new features to create_lxc (#6979) 2025-08-19 14:43:54 +02:00
community-scripts-pr-app[bot]
206751f517 Update versions.json (#6982)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 14:17:26 +02:00
community-scripts-pr-app[bot]
6a06afcbb9 Update CHANGELOG.md (#6983)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:06:45 +00:00
Slaviša Arežina
bd3e93215b Refactor: TeddyCloud (#6963)
* Refactor

* Update
2025-08-19 14:06:24 +02:00
community-scripts-pr-app[bot]
94b9aa4025 Update CHANGELOG.md (#6981)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:06:07 +00:00
Slaviša Arežina
36523dfd33 Refactor: Technitium DNS (#6968)
* Refactor

* Update json

* Update
2025-08-19 14:05:37 +02:00
community-scripts-pr-app[bot]
618fa65bc2 Update CHANGELOG.md (#6980)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 12:03:20 +00:00
CanbiZ
1dd417fdaa [core]: extend setup_uv to work with alpine (#6978) 2025-08-19 14:03:00 +02:00
community-scripts-pr-app[bot]
4480a70ceb Update CHANGELOG.md (#6977)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 11:28:52 +00:00
CanbiZ
5d423888d9 Debian 13 VM (#6970) 2025-08-19 13:28:25 +02:00
Slaviša Arežina
81876d6992 Update wallos-install.sh (#6973) 2025-08-19 12:33:43 +02:00
community-scripts-pr-app[bot]
b777d74dce Update CHANGELOG.md (#6967)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 07:34:49 +00:00
Slaviša Arežina
c904da6b94 Fix release fetching (#6961) 2025-08-19 09:34:23 +02:00
community-scripts-pr-app[bot]
4591b58e66 Update CHANGELOG.md (#6966)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 07:20:25 +00:00
community-scripts-pr-app[bot]
8f7cd0bff9 Update CHANGELOG.md (#6965)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 07:20:05 +00:00
community-scripts-pr-app[bot]
60318fd77b Update date in json (#6964)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-19 07:20:03 +00:00
push-app-to-main[bot]
50c41cec72 Swizzin (#6962)
* 'Add new script'

* clear \n

* add outsource info in 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-08-19 09:19:40 +02:00
community-scripts-pr-app[bot]
ef2e9803d0 Update CHANGELOG.md (#6957)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 05:49:34 +00:00
Azamat
e428a05b45 Update hev-socks5-server-install.sh (#6953)
Update hev-socks5-server-install.sh
Change branch name from master to main.

https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/master/conf/main.yml <= 404 Not found

https://raw.githubusercontent.com/heiher/hev-socks5-server/refs/heads/main/conf/main.yml <= Correct link
2025-08-19 07:49:13 +02:00
community-scripts-pr-app[bot]
37e5f7272e Update CHANGELOG.md (#6955)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 00:14:19 +00:00
community-scripts-pr-app[bot]
5560c4eb12 Update versions.json (#6954)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 02:13:55 +02:00
community-scripts-pr-app[bot]
be6e2e3cb1 Update CHANGELOG.md (#6949)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 20:15:16 +00:00
CanbiZ
7086a15321 OpenWRT: add info for VLAN-aware in frontend (#6944) 2025-08-18 22:14:53 +02:00
community-scripts-pr-app[bot]
23f29b14fe Update CHANGELOG.md (#6948)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 20:12:47 +00:00
Slaviša Arežina
9aafb65a98 Refactor: Traefik (#6940)
* Refactor

* typo

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-08-18 22:12:22 +02:00
community-scripts-pr-app[bot]
296f4577d0 Update CHANGELOG.md (#6947)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 19:05:52 +00:00
Slaviša Arežina
1ea1429874 Refactor: Traccar (#6942)
* Refactor

* Update
2025-08-18 21:05:30 +02:00
community-scripts-pr-app[bot]
3f70f92fbb Update CHANGELOG.md (#6946)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 18:16:41 +00:00
CanbiZ
23c6994835 Keycloak: fix update function (#6943)
* Keycloak: fix update function

* fix issue with .keycloak file

* Update keycloak-install.sh

* remove double command

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-08-18 20:16:14 +02:00
community-scripts-pr-app[bot]
70cd362d3e Update CHANGELOG.md (#6945)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 17:59:15 +00:00
Slaviša Arežina
aed25098e5 Refactor (#6939) 2025-08-18 19:58:50 +02:00
community-scripts-pr-app[bot]
a79392149e Update .app files (#6937)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 16:29:33 +02:00
community-scripts-pr-app[bot]
f32647a3d3 Update CHANGELOG.md (#6936)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 14:26:56 +00:00
Chris
bb3c77f1b6 Immich: add message to indicate image-processing library update check (#6935) 2025-08-18 16:26:27 +02:00
community-scripts-pr-app[bot]
66a582dd09 Update CHANGELOG.md (#6932)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 12:32:22 +00:00
CanbiZ
06eb76c5d9 CopyParty (#6929)
* CopyParty

* add conf path in json

* change category to files
2025-08-18 14:32:00 +02:00
community-scripts-pr-app[bot]
a37f921aff Update versions.json (#6931)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 14:05:58 +02:00
community-scripts-pr-app[bot]
5c7e221efa Update .app files (#6925)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 09:50:06 +02:00
community-scripts-pr-app[bot]
7e00889967 Update CHANGELOG.md (#6927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:51 +00:00
community-scripts-pr-app[bot]
f1d855e331 Update CHANGELOG.md (#6926)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:40 +00:00
Gabriel David Pragin
a33bbd603d fix: unbound env variable (#6922) 2025-08-18 09:49:29 +02:00
community-scripts-pr-app[bot]
472ad02d44 Update date in json (#6924)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:21 +00:00
push-app-to-main[bot]
aed2fbc4b1 Twingate-Connector (#6921) 2025-08-18 09:48:59 +02:00
community-scripts-pr-app[bot]
dabb49d7eb Update CHANGELOG.md (#6920)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 06:22:34 +00:00
Slaviša Arežina
61b7b96780 Refactor (#6916) 2025-08-18 08:22:09 +02:00
community-scripts-pr-app[bot]
a72885b4c1 Update CHANGELOG.md (#6918)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 00:17:01 +00:00
community-scripts-pr-app[bot]
58fe2df6b4 Update versions.json (#6917)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 02:16:37 +02:00
community-scripts-pr-app[bot]
5c8bd4b124 Update versions.json (#6914)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 14:04:58 +02:00
community-scripts-pr-app[bot]
b6d7ad7c38 Update CHANGELOG.md (#6910)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 00:15:44 +00:00
community-scripts-pr-app[bot]
dd4d518052 Update versions.json (#6909)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 02:15:22 +02:00
community-scripts-pr-app[bot]
a99650f969 Update CHANGELOG.md (#6905)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:54:02 +00:00
Slaviša Arežina
842d73de82 Refactor (#6902) 2025-08-16 22:53:43 +02:00
community-scripts-pr-app[bot]
65f731d88b Update CHANGELOG.md (#6904)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:40:43 +00:00
Slaviša Arežina
363685d3d3 Refactor (#6900) 2025-08-16 22:40:14 +02:00
community-scripts-pr-app[bot]
ff77960aa6 Update CHANGELOG.md (#6903)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:39:58 +00:00
Slaviša Arežina
8d4a81d28e Update wireguard.sh (#6898) 2025-08-16 22:39:38 +02:00
community-scripts-pr-app[bot]
faf10a9d5b Update versions.json (#6895)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 14:04:52 +02:00
community-scripts-pr-app[bot]
1b931becaa Update CHANGELOG.md (#6894)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 06:31:26 +00:00
WarLord185
905198116d Tandoor Images Fix (#6892) 2025-08-16 08:31:02 +02:00
community-scripts-pr-app[bot]
8d65b4624f Update CHANGELOG.md (#6890)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 00:13:16 +00:00
community-scripts-pr-app[bot]
4e17190721 Update versions.json (#6889)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 02:12:57 +02:00
community-scripts-pr-app[bot]
9337e2de3c Update CHANGELOG.md (#6888)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 21:24:24 +00:00
community-scripts-pr-app[bot]
c7a7ea763b Update CHANGELOG.md (#6887)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 21:18:28 +00:00
BEN YOUSSEF Hamza
ce71992dd6 Add missing default user & pass for RabbitMQ (#6883) 2025-08-15 23:18:01 +02:00
Slaviša Arežina
f68b80fe4a Update watchyourlan.sh (#6886) 2025-08-15 22:09:56 +02:00
community-scripts-pr-app[bot]
79adb4ef9b Update CHANGELOG.md (#6881)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 12:42:29 +00:00
Chris
8dda5ac31f Immich: pin Vectorchord release; adjust extension update commands (#6878) 2025-08-15 14:42:08 +02:00
community-scripts-pr-app[bot]
7d901bc594 Update versions.json (#6879)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 14:05:10 +02:00
community-scripts-pr-app[bot]
b6dce8cff1 Update CHANGELOG.md (#6876)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:39 +00:00
community-scripts-pr-app[bot]
1b43202a79 Update CHANGELOG.md (#6875)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:26 +00:00
Slaviša Arežina
66687c0d21 Refactor: WatchYourLAN (#6871)
* Refactor

* Update
2025-08-15 12:57:16 +02:00
community-scripts-pr-app[bot]
39b9cfcffc Update CHANGELOG.md (#6874)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:07 +00:00
Slaviša Arežina
24f4d2f488 Refactor (#6872) 2025-08-15 12:57:00 +02:00
Slaviša Arežina
ee74400626 Refactor (#6869) 2025-08-15 12:56:46 +02:00
Slaviša Arežina
032709e107 Update zitadel-install.sh (#6867) 2025-08-15 09:07:01 +02:00
community-scripts-pr-app[bot]
65d60fbf1e Update CHANGELOG.md (#6868)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 06:42:28 +00:00
Chris
c7b80448dc Immich v1.138.0 (#6813) 2025-08-15 08:42:01 +02:00
community-scripts-pr-app[bot]
d7a60f6027 Update CHANGELOG.md (#6866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 00:14:39 +00:00
community-scripts-pr-app[bot]
241ae98c0b Update versions.json (#6865)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 02:14:16 +02:00
community-scripts-pr-app[bot]
63f24a8e61 Update CHANGELOG.md (#6862)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 21:46:40 +00:00
Chris
1cb87c4087 Immich: hotfix (#6861) 2025-08-14 23:43:58 +02:00
community-scripts-pr-app[bot]
5c22f9775e Update CHANGELOG.md (#6860)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 21:41:58 +00:00
Chris
a403da9f47 Pulse: v4.3.2+ (#6859)
- please send help
2025-08-14 23:41:36 +02:00
community-scripts-pr-app[bot]
4ce7335482 Update CHANGELOG.md (#6858)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:54:09 +00:00
Slaviša Arežina
bc52b1a7d7 Refactor: Zitadel (#6826) 2025-08-14 22:53:45 +02:00
community-scripts-pr-app[bot]
1c5ff8b26a Update CHANGELOG.md (#6857)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:52:04 +00:00
Slaviša Arežina
967b2a313f Refactor: WordPress (#6837)
* Refactor

* Update wordpress-install.sh

* Update wordpress-install.sh
2025-08-14 22:51:44 +02:00
Slaviša Arežina
50410acf8d Refactor: WireGuard (#6839)
* Refactor

* Make WGDashboard optional
2025-08-14 22:51:31 +02:00
community-scripts-pr-app[bot]
ab07afb7bd Update CHANGELOG.md (#6855)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:01:41 +00:00
Luis Palacios Derqui
eee083c7e0 ProxmoxVE svg logo (#6846) 2025-08-14 22:01:20 +02:00
community-scripts-pr-app[bot]
31ef36d744 Update CHANGELOG.md (#6854)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:36:49 +00:00
steadfasterX
13afa93ddf rustdeskserver: fix API version file (#6847) 2025-08-14 21:36:27 +02:00
community-scripts-pr-app[bot]
7c631eec00 Update CHANGELOG.md (#6853)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:07:04 +00:00
Slaviša Arežina
82d1a872c7 Refactor (#6832) 2025-08-14 21:06:44 +02:00
community-scripts-pr-app[bot]
0c23782485 Update CHANGELOG.md (#6852)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:06:12 +00:00
Slaviša Arežina
ef7c774a24 Refactor (#6829) 2025-08-14 21:05:44 +02:00
Michel Roegl-Brunner
c12ec76181 jenkins.json update (#6824) 2025-08-14 21:03:58 +02:00
community-scripts-pr-app[bot]
a805e40b04 Update CHANGELOG.md (#6851)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 18:20:45 +00:00
Chris
727b713893 Immich: quickfix #6836 (#6848) 2025-08-14 20:20:21 +02:00
community-scripts-pr-app[bot]
5cedb8469e Update CHANGELOG.md (#6845)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 16:01:29 +00:00
Slaviša Arežina
c612a4daa8 Refactor: WikiJS (#6840)
* Refactor

* Update docs URL
2025-08-14 18:01:06 +02:00
community-scripts-pr-app[bot]
87b7166924 Update CHANGELOG.md (#6842)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 15:12:51 +00:00
elvito
9b9faf7a53 Bugfix Searxng Redis replaced with Valkey in installscript (#6831) 2025-08-14 17:12:28 +02:00
community-scripts-pr-app[bot]
51a1d3c0ef Update CHANGELOG.md (#6835)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 12:15:52 +00:00
community-scripts-pr-app[bot]
8b1c2d6e68 Update CHANGELOG.md (#6834)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 12:15:35 +00:00
Slaviša Arežina
21c2ef2915 Refactor (#6822) 2025-08-14 14:15:24 +02:00
Slaviša Arežina
6796e609d0 Refactor (#6823) 2025-08-14 14:15:12 +02:00
Slaviša Arežina
723ac08abb Update (#6825) 2025-08-14 14:14:59 +02:00
community-scripts-pr-app[bot]
35c4c363a0 Update versions.json (#6830)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 14:06:10 +02:00
community-scripts-pr-app[bot]
32f99aee54 Update CHANGELOG.md (#6827)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 11:37:14 +00:00
Slaviša Arežina
1803ea0323 Refactor (#6820) 2025-08-14 13:36:50 +02:00
141 changed files with 3501 additions and 1956 deletions

View File

@@ -10,8 +10,208 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-08-23
## 2025-08-22
### 🚀 Updated Scripts
- Refactor: Prometheus [@tremor021](https://github.com/tremor021) ([#7093](https://github.com/community-scripts/ProxmoxVE/pull/7093))
- #### 🐞 Bug Fixes
- paperless: nltk fix [@MickLesk](https://github.com/MickLesk) ([#7098](https://github.com/community-scripts/ProxmoxVE/pull/7098))
- Tududi Fix: use correct tag parsing for release during update check [@vhsdream](https://github.com/vhsdream) ([#7072](https://github.com/community-scripts/ProxmoxVE/pull/7072))
- #### 🔧 Refactor
- Refactor: phpIPAM [@tremor021](https://github.com/tremor021) ([#7095](https://github.com/community-scripts/ProxmoxVE/pull/7095))
- Refactor: Prometheus Paperless NGX Exporter [@tremor021](https://github.com/tremor021) ([#7092](https://github.com/community-scripts/ProxmoxVE/pull/7092))
- Refactor: PS5-MQTT [@tremor021](https://github.com/tremor021) ([#7090](https://github.com/community-scripts/ProxmoxVE/pull/7090))
- Refactor: qBittorrent [@tremor021](https://github.com/tremor021) ([#7089](https://github.com/community-scripts/ProxmoxVE/pull/7089))
- Refactor: RDTClient [@tremor021](https://github.com/tremor021) ([#7086](https://github.com/community-scripts/ProxmoxVE/pull/7086))
- Refactor: Recyclarr [@tremor021](https://github.com/tremor021) ([#7085](https://github.com/community-scripts/ProxmoxVE/pull/7085))
- Refactor: RevealJS [@tremor021](https://github.com/tremor021) ([#7084](https://github.com/community-scripts/ProxmoxVE/pull/7084))
- Refactor: Rclone [@tremor021](https://github.com/tremor021) ([#7087](https://github.com/community-scripts/ProxmoxVE/pull/7087))
- Refactor: Semaphore [@tremor021](https://github.com/tremor021) ([#7083](https://github.com/community-scripts/ProxmoxVE/pull/7083))
- Refactor: Silverbullet [@tremor021](https://github.com/tremor021) ([#7082](https://github.com/community-scripts/ProxmoxVE/pull/7082))
- Refactor: Plant-it [@tremor021](https://github.com/tremor021) ([#7094](https://github.com/community-scripts/ProxmoxVE/pull/7094))
- Refactor: TasmoAdmin [@tremor021](https://github.com/tremor021) ([#7080](https://github.com/community-scripts/ProxmoxVE/pull/7080))
## 2025-08-21
### 🆕 New Scripts
- LiteLLM ([#7052](https://github.com/community-scripts/ProxmoxVE/pull/7052))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- tianji: add uv deps [@MickLesk](https://github.com/MickLesk) ([#7066](https://github.com/community-scripts/ProxmoxVE/pull/7066))
- Zitadel: installer for v4 [@MickLesk](https://github.com/MickLesk) ([#7058](https://github.com/community-scripts/ProxmoxVE/pull/7058))
- Paperless-NGX: create direction for nltk [@MickLesk](https://github.com/MickLesk) ([#7064](https://github.com/community-scripts/ProxmoxVE/pull/7064))
- Immich: hotfix - revert 7035 [@vhsdream](https://github.com/vhsdream) ([#7054](https://github.com/community-scripts/ProxmoxVE/pull/7054))
- duplicati: fix release pattern [@MickLesk](https://github.com/MickLesk) ([#7049](https://github.com/community-scripts/ProxmoxVE/pull/7049))
- technitiumdns: fix unbound variable [@MickLesk](https://github.com/MickLesk) ([#7047](https://github.com/community-scripts/ProxmoxVE/pull/7047))
- [core]: improve binary globbing for gh releases [@MickLesk](https://github.com/MickLesk) ([#7044](https://github.com/community-scripts/ProxmoxVE/pull/7044))
## 2025-08-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Post-Install, change pve-test for trixie [@MickLesk](https://github.com/MickLesk) ([#7031](https://github.com/community-scripts/ProxmoxVE/pull/7031))
- Immich: fix small issue with immich-admin "start" script [@vhsdream](https://github.com/vhsdream) ([#7035](https://github.com/community-scripts/ProxmoxVE/pull/7035))
- WasteBin: Small fixes [@tremor021](https://github.com/tremor021) ([#7018](https://github.com/community-scripts/ProxmoxVE/pull/7018))
- Komga: Fix update [@tremor021](https://github.com/tremor021) ([#7027](https://github.com/community-scripts/ProxmoxVE/pull/7027))
- Barcode Buddy: Fix missing dependency [@tremor021](https://github.com/tremor021) ([#7020](https://github.com/community-scripts/ProxmoxVE/pull/7020))
- PBS: ifupdown2 reload [@MickLesk](https://github.com/MickLesk) ([#7013](https://github.com/community-scripts/ProxmoxVE/pull/7013))
- #### ✨ New Features
- Feature: Netdata support PVE9 (Debian 13 Trixie) [@MickLesk](https://github.com/MickLesk) ([#7012](https://github.com/community-scripts/ProxmoxVE/pull/7012))
- #### 🔧 Refactor
- Refactor: RustDesk Server [@tremor021](https://github.com/tremor021) ([#7008](https://github.com/community-scripts/ProxmoxVE/pull/7008))
- ghost: fix: verbose [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7023](https://github.com/community-scripts/ProxmoxVE/pull/7023))
- Refactor: Paperless-ngx [@MickLesk](https://github.com/MickLesk) ([#6938](https://github.com/community-scripts/ProxmoxVE/pull/6938))
## 2025-08-19
### 🆕 New Scripts
- Debian 13 VM [@MickLesk](https://github.com/MickLesk) ([#6970](https://github.com/community-scripts/ProxmoxVE/pull/6970))
- Swizzin ([#6962](https://github.com/community-scripts/ProxmoxVE/pull/6962))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- [core]: create_lxc - fix offline issue with alpine packages [@MickLesk](https://github.com/MickLesk) ([#6994](https://github.com/community-scripts/ProxmoxVE/pull/6994))
- OpenObserve: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6961](https://github.com/community-scripts/ProxmoxVE/pull/6961))
- Update hev-socks5-server-install.sh [@iAzamat2](https://github.com/iAzamat2) ([#6953](https://github.com/community-scripts/ProxmoxVE/pull/6953))
- #### ✨ New Features
- Refactor: Glances (+ Feature Bump) [@MickLesk](https://github.com/MickLesk) ([#6976](https://github.com/community-scripts/ProxmoxVE/pull/6976))
- [core]: add new features to create_lxc [@MickLesk](https://github.com/MickLesk) ([#6979](https://github.com/community-scripts/ProxmoxVE/pull/6979))
- [core]: extend setup_uv to work with alpine [@MickLesk](https://github.com/MickLesk) ([#6978](https://github.com/community-scripts/ProxmoxVE/pull/6978))
- Immich: Bump version to 1.138.1 [@vhsdream](https://github.com/vhsdream) ([#6984](https://github.com/community-scripts/ProxmoxVE/pull/6984))
- #### 🔧 Refactor
- Refactor: Tdarr [@MickLesk](https://github.com/MickLesk) ([#6969](https://github.com/community-scripts/ProxmoxVE/pull/6969))
- Refactor: The Lounge [@tremor021](https://github.com/tremor021) ([#6958](https://github.com/community-scripts/ProxmoxVE/pull/6958))
- Refactor: TeddyCloud [@tremor021](https://github.com/tremor021) ([#6963](https://github.com/community-scripts/ProxmoxVE/pull/6963))
- Refactor: Technitium DNS [@tremor021](https://github.com/tremor021) ([#6968](https://github.com/community-scripts/ProxmoxVE/pull/6968))
### 🌐 Website
- #### 📝 Script Information
- [web]: update logos from reactive-resume & slskd [@MickLesk](https://github.com/MickLesk) ([#6990](https://github.com/community-scripts/ProxmoxVE/pull/6990))
## 2025-08-18
### 🆕 New Scripts
- CopyParty [@MickLesk](https://github.com/MickLesk) ([#6929](https://github.com/community-scripts/ProxmoxVE/pull/6929))
- Twingate-Connector ([#6921](https://github.com/community-scripts/ProxmoxVE/pull/6921))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Keycloak: fix update function [@MickLesk](https://github.com/MickLesk) ([#6943](https://github.com/community-scripts/ProxmoxVE/pull/6943))
- Immich: add message to indicate image-processing library update check [@vhsdream](https://github.com/vhsdream) ([#6935](https://github.com/community-scripts/ProxmoxVE/pull/6935))
- fix(uptimekuma): unbound env variable [@vidonnus](https://github.com/vidonnus) ([#6922](https://github.com/community-scripts/ProxmoxVE/pull/6922))
- #### 🔧 Refactor
- Refactor: Traefik [@tremor021](https://github.com/tremor021) ([#6940](https://github.com/community-scripts/ProxmoxVE/pull/6940))
- Refactor: Traccar [@tremor021](https://github.com/tremor021) ([#6942](https://github.com/community-scripts/ProxmoxVE/pull/6942))
- Refactor: Umami [@tremor021](https://github.com/tremor021) ([#6939](https://github.com/community-scripts/ProxmoxVE/pull/6939))
- Refactor: GoMFT [@tremor021](https://github.com/tremor021) ([#6916](https://github.com/community-scripts/ProxmoxVE/pull/6916))
### 🌐 Website
- #### 📝 Script Information
- OpenWRT: add info for VLAN-aware in frontend [@MickLesk](https://github.com/MickLesk) ([#6944](https://github.com/community-scripts/ProxmoxVE/pull/6944))
## 2025-08-17
## 2025-08-16
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Wireguard: Fix WGDashboard not updating [@tremor021](https://github.com/tremor021) ([#6898](https://github.com/community-scripts/ProxmoxVE/pull/6898))
- Tandoor Images Fix [@WarLord185](https://github.com/WarLord185) ([#6892](https://github.com/community-scripts/ProxmoxVE/pull/6892))
- #### 🔧 Refactor
- Refactor: Uptime Kuma [@tremor021](https://github.com/tremor021) ([#6902](https://github.com/community-scripts/ProxmoxVE/pull/6902))
- Refactor: Wallos [@tremor021](https://github.com/tremor021) ([#6900](https://github.com/community-scripts/ProxmoxVE/pull/6900))
## 2025-08-15
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Immich: pin Vectorchord release; adjust extension update commands [@vhsdream](https://github.com/vhsdream) ([#6878](https://github.com/community-scripts/ProxmoxVE/pull/6878))
- #### ✨ New Features
- Bump Immich to v1.138.0 [@vhsdream](https://github.com/vhsdream) ([#6813](https://github.com/community-scripts/ProxmoxVE/pull/6813))
- #### 🔧 Refactor
- Refactor: Wavelog [@tremor021](https://github.com/tremor021) ([#6869](https://github.com/community-scripts/ProxmoxVE/pull/6869))
- Refactor: WatchYourLAN [@tremor021](https://github.com/tremor021) ([#6871](https://github.com/community-scripts/ProxmoxVE/pull/6871))
- Refactor: Watcharr [@tremor021](https://github.com/tremor021) ([#6872](https://github.com/community-scripts/ProxmoxVE/pull/6872))
### 🌐 Website
- #### 📝 Script Information
- Add missing default user & pass for RabbitMQ [@hbenyoussef](https://github.com/hbenyoussef) ([#6883](https://github.com/community-scripts/ProxmoxVE/pull/6883))
## 2025-08-14 ## 2025-08-14
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Bugfix Searxng Redis replaced with Valkey in installscript [@elvito](https://github.com/elvito) ([#6831](https://github.com/community-scripts/ProxmoxVE/pull/6831))
- Spoolman: Use environment variables to control host and port [@tremor021](https://github.com/tremor021) ([#6825](https://github.com/community-scripts/ProxmoxVE/pull/6825))
- Pulse: v4.3.2+ [@vhsdream](https://github.com/vhsdream) ([#6859](https://github.com/community-scripts/ProxmoxVE/pull/6859))
- rustdeskserver: fix API version file [@steadfasterX](https://github.com/steadfasterX) ([#6847](https://github.com/community-scripts/ProxmoxVE/pull/6847))
- Immich: quickfix #6836 [@vhsdream](https://github.com/vhsdream) ([#6848](https://github.com/community-scripts/ProxmoxVE/pull/6848))
- #### 🔧 Refactor
- Refactor: WikiJS [@tremor021](https://github.com/tremor021) ([#6840](https://github.com/community-scripts/ProxmoxVE/pull/6840))
- Refactor: Zoraxy [@tremor021](https://github.com/tremor021) ([#6823](https://github.com/community-scripts/ProxmoxVE/pull/6823))
- Refactor: Zitadel [@tremor021](https://github.com/tremor021) ([#6826](https://github.com/community-scripts/ProxmoxVE/pull/6826))
- Refactor: WordPress [@tremor021](https://github.com/tremor021) ([#6837](https://github.com/community-scripts/ProxmoxVE/pull/6837))
- Refactor: WireGuard [@tremor021](https://github.com/tremor021) ([#6839](https://github.com/community-scripts/ProxmoxVE/pull/6839))
- Refactor: yt-dlp-webui [@tremor021](https://github.com/tremor021) ([#6832](https://github.com/community-scripts/ProxmoxVE/pull/6832))
- Refactor: Zipline [@tremor021](https://github.com/tremor021) ([#6829](https://github.com/community-scripts/ProxmoxVE/pull/6829))
- Refactor: Zot-Registry [@tremor021](https://github.com/tremor021) ([#6822](https://github.com/community-scripts/ProxmoxVE/pull/6822))
- Refactor: Zwave-JS-UI [@tremor021](https://github.com/tremor021) ([#6820](https://github.com/community-scripts/ProxmoxVE/pull/6820))
### 🧰 Maintenance
- #### 📂 Github
- ProxmoxVE svg logo [@LuisPalacios](https://github.com/LuisPalacios) ([#6846](https://github.com/community-scripts/ProxmoxVE/pull/6846))
## 2025-08-13 ## 2025-08-13
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -34,7 +34,7 @@ function update_script() {
systemctl stop duplicati systemctl stop duplicati
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb" fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start duplicati systemctl start duplicati

View File

@@ -28,83 +28,14 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! dpkg -l | grep -q "^ii.*build-essential"; then
$STD apt-get install -y build-essential
fi
if [[ ! -f "/usr/bin/node" ]]; then
mkdir -p /etc/apt/keyrings
curl -fsSL "https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
fi
RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.gomft)" ]] || [[ ! -f ~/.gomft ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop gomft systemctl stop gomft
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}" fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
if ! command -v git >/dev/null 2>&1; then
$STD apt-get install -y git
fi
rm -f /opt/gomft/gomft
temp_file=$(mktemp)
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
cp -rf "GoMFT-${RELEASE}"/* /opt/gomft/
cd /opt/gomft
$STD npm install
$STD npm run build
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate
export CGO_ENABLED=1
export GOOS=linux
$STD go build -o gomft
chmod +x /opt/gomft/gomft
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Cleaning Up"
rm -f "$temp_file"
rm -rf "$HOME/GoMFT-v.${RELEASE}/"
msg_ok "Cleanup Complete"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start gomft systemctl start gomft

6
ct/headers/litellm Normal file
View File

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

6
ct/headers/swizzin Normal file
View File

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

View File

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

View File

@@ -52,13 +52,14 @@ function update_script() {
if [[ -f ~/.immich_library_revisions ]]; then if [[ -f ~/.immich_library_revisions ]]; then
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips") libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
cd "$BASE_DIR" cd "$BASE_DIR"
msg_info "Checking for updates to custom image-processing libraries"
$STD git pull $STD git pull
for library in "${libraries[@]}"; do for library in "${libraries[@]}"; do
compile_"$library" compile_"$library"
done done
msg_ok "Image-processing libraries updated" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="1.137.3" RELEASE="1.138.1"
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') #RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"
@@ -74,7 +75,8 @@ function update_script() {
APP_DIR="${INSTALL_DIR}/app" APP_DIR="${INSTALL_DIR}/app"
ML_DIR="${APP_DIR}/machine-learning" ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata" GEO_DIR="${INSTALL_DIR}/geodata"
VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" VCHORD_RELEASE="0.4.3"
# VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
msg_info "Updating VectorChord" msg_info "Updating VectorChord"
@@ -91,7 +93,8 @@ function update_script() {
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;" $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
systemctl restart postgresql systemctl restart postgresql
if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
$STD sudo -u postgres psql -d immich -c "REINDEX DATABASE;" $STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;"
$STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;"
fi fi
echo "$VCHORD_RELEASE" >~/.vchord_version echo "$VCHORD_RELEASE" >~/.vchord_version
rm ./vchord.deb rm ./vchord.deb
@@ -106,10 +109,10 @@ function update_script() {
#!/usr/bin/env bash #!/usr/bin/env bash
set -a set -a
. "$INSTALL_DIR"/.env . ${INSTALL_DIR}/.env
set +a set +a
/usr/bin/node "$APP_DIR"/dist/main.js "\$@" /usr/bin/node ${APP_DIR}/dist/main.js "\$@"
EOF EOF
chmod +x "$INSTALL_DIR"/start.sh chmod +x "$INSTALL_DIR"/start.sh
fi fi
@@ -180,7 +183,10 @@ EOF
msg_ok "Updated Immich CLI" msg_ok "Updated Immich CLI"
chown -R immich:immich "$INSTALL_DIR" chown -R immich:immich "$INSTALL_DIR"
echo "$RELEASE" >/opt/"${APP}"_version.txt if [[ ! -f ~/.debian_version.bak ]]; then
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
fi
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Cleaning up" msg_info "Cleaning up"

View File

@@ -27,38 +27,50 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! command -v jq &>/dev/null; then
$STD apt-get install -y jq
fi
msg_info "Stopping Keycloak" RELEASE=$(curl -fsSL https://api.github.com/repos/keycloak/keycloak/releases/latest | jq -r '.tag_name' | sed 's/^v//')
systemctl stop keycloak if [[ "${RELEASE}" != "$(cat ~/.keycloak_app 2>/dev/null)" ]] || [[ ! -f ~/.keycloak_app ]]; then
msg_ok "Stopped Keycloak" msg_info "Stopping Keycloak"
systemctl stop keycloak
msg_ok "Stopped Keycloak"
msg_info "Updating packages" msg_info "Updating packages"
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
msg_ok "Updated packages" msg_ok "Updated packages"
msg_info "Backup old Keycloak" msg_info "Backup old Keycloak"
cd /opt cd /opt
mv keycloak keycloak.old mv keycloak keycloak.old
tar -czf keycloak_conf_backup.tar.gz keycloak.old/conf msg_ok "Backup done"
msg_ok "Backup done"
fetch_and_deploy_gh_release "keycloak" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz" fetch_and_deploy_gh_release "keycloak_app" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt cd /opt
mv keycloak_conf_backup.tar.gz keycloak/conf cp -a keycloak.old/conf/. keycloak/conf/
cp -r keycloak.old/providers keycloak cp -a keycloak.old/providers/. keycloak/providers/ 2>/dev/null || true
cp -r keycloak.old/themes keycloak cp -a keycloak.old/themes/. keycloak/themes/ 2>/dev/null || true
rm -rf keycloak.old msg_ok "Updated ${APP} LXC"
msg_ok "Updated ${APP} LXC"
msg_info "Restarting Keycloak" msg_info "Restarting Keycloak"
systemctl restart keycloak systemctl restart keycloak
msg_ok "Restarted Keycloak" msg_ok "Restarted Keycloak"
msg_info "Cleaning up"
rm -rf keycloak.old
msg_ok "Cleanup complete"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }
start start
build_container build_container
description description

View File

@@ -29,7 +29,7 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f ~/.komga ]] || [[ "${RELEASE}" != "$(cat ~/.komga)" ]]; then if [[ ! -f ~/.komga-org ]] || [[ "${RELEASE}" != "$(cat ~/.komga-org)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop komga systemctl stop komga
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"

60
ct/litellm.sh Normal file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: stout01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/BerriAI/litellm
APP="LiteLLM"
var_tags="${var_tags:-ai;interface}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-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 [[ ! -f /etc/systemd/system/litellm.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
systemctl stop litellm
msg_ok "Stopped ${APP}"
VENV_PATH="/opt/litellm/.venv"
PYTHON_VERSION="3.13" setup_uv
msg_info "Updating $APP"
$STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
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}"
systemctl start litellm
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"

View File

@@ -30,7 +30,7 @@ function update_script() {
msg_info "Updating $APP" msg_info "Updating $APP"
systemctl stop openobserve systemctl stop openobserve
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4) LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
tar zxvf <(curl -fsSL https://github.com/openobserve/openobserve/releases/download/$LATEST/openobserve-${LATEST}-linux-amd64.tar.gz) -C /opt/openobserve $STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
systemctl start openobserve systemctl start openobserve
msg_ok "Updated $APP" msg_ok "Updated $APP"
exit exit

View File

@@ -9,7 +9,7 @@ APP="Paperless-ngx"
var_tags="${var_tags:-document;management}" var_tags="${var_tags:-document;management}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}" var_disk="${var_disk:-12}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@@ -20,70 +20,115 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/paperless ]]; then if [[ ! -d /opt/paperless ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') if ! command -v jq &>/dev/null; then
$STD apt-get install -y jq
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest | jq -r .tag_name | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.paperless 2>/dev/null)" ]] || [[ ! -f ~/.paperless ]]; then
msg_info "Stopping all Paperless-ngx Services"
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
msg_ok "Stopped all Paperless-ngx Services"
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \ if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
"1" "Update Paperless-ngx to $RELEASE" ON \
"2" "Paperless-ngx Credentials" OFF \ msg_info "Backing up data"
3>&1 1>&2 2>&3) mkdir -p /opt/paperless/backup
header_info cp -r /opt/paperless/data /opt/paperless/backup/
check_container_storage cp -r /opt/paperless/media /opt/paperless/backup/
check_container_resources cp -r /opt/paperless/paperless.conf /opt/paperless/backup/
if [ "$UPD" == "1" ]; then msg_ok "Backup completed"
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
if [[ "$(gs --version 2>/dev/null)" != "10.04.0" ]]; then PYTHON_VERSION="3.13" setup_uv
msg_info "Updating Ghostscript (Patience)" fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
cd /tmp fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
curl -fsSL "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz" -o $(basename "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz") setup_gs
tar -xzf ghostscript-10.04.0.tar.gz
cd ghostscript-10.04.0
$STD ./configure
$STD make
$STD sudo make install
rm -rf /tmp/ghostscript*
msg_ok "Ghostscript updated to 10.04.0"
fi
msg_info "Stopping all Paperless-ngx Services"
systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
msg_ok "Stopped all Paperless-ngx Services"
msg_info "Updating to ${RELEASE}" msg_info "Updating to ${RELEASE}"
cd ~ cp -r /opt/paperless/backup/* /opt/paperless/
curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/download/$RELEASE/paperless-ngx-$RELEASE.tar.xz" -o $(basename "https://github.com/paperless-ngx/paperless-ngx/releases/download/$RELEASE/paperless-ngx-$RELEASE.tar.xz")
tar -xf paperless-ngx-$RELEASE.tar.xz
cp -r /opt/paperless/paperless.conf paperless-ngx/
cp -r paperless-ngx/* /opt/paperless/
cd /opt/paperless cd /opt/paperless
$STD pip install -r requirements.txt $STD uv sync --all-extras
cd /opt/paperless/src cd /opt/paperless/src
$STD /usr/bin/python3 manage.py migrate $STD uv run -- python manage.py migrate
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated to ${RELEASE}" msg_ok "Updated to ${RELEASE}"
msg_info "Cleaning up"
cd ~
rm paperless-ngx-$RELEASE.tar.xz
rm -rf paperless-ngx
msg_ok "Cleaned"
msg_info "Starting all Paperless-ngx Services"
systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
sleep 1
msg_ok "Started all Paperless-ngx Services"
msg_ok "Updated Successfully!\n"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
msg_custom "🔒" "It is strongly recommended to take a Proxmox snapshot first:"
echo -e " 1. Stop the container: pct stop <CTID>"
echo -e " 2. Create a snapshot: pct snapshot <CTID> pre-paperless-uv-migration"
echo -e " 3. Start the container again\n"
read -rp "Have you created a snapshot? [y/N]: " confirm
if [[ ! "$confirm" =~ ^([yY]|[yY][eE][sS])$ ]]; then
msg_error "Migration aborted. Please create a snapshot first."
exit 1
fi
msg_info "Migrating old Paperless-ngx installation to uv"
rm -rf /opt/paperless/venv
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
)
for svc in "${!PATCHES[@]}"; do
path=$(systemctl show -p FragmentPath "$svc" | cut -d= -f2)
if [[ -n "$path" && -f "$path" ]]; then
sed -i "s|^ExecStart=.*|${PATCHES[$svc]}|" "$path"
if [[ "$svc" == "paperless-webserver.service" ]]; then
grep -q "^Environment=GRANIAN_HOST=" "$path" ||
sed -i '/^\[Service\]/a Environment=GRANIAN_HOST=::' "$path"
grep -q "^Environment=GRANIAN_PORT=" "$path" ||
sed -i '/^\[Service\]/a Environment=GRANIAN_PORT=8000' "$path"
grep -q "^Environment=GRANIAN_WORKERS=" "$path" ||
sed -i '/^\[Service\]/a Environment=GRANIAN_WORKERS=1' "$path"
fi
msg_ok "Patched $svc"
else
msg_error "Service file for $svc not found!"
fi
done
$STD systemctl daemon-reload
msg_info "Backing up data"
mkdir -p /opt/paperless/backup
cp -r /opt/paperless/data /opt/paperless/backup/
cp -r /opt/paperless/media /opt/paperless/backup/
cp -r /opt/paperless/paperless.conf /opt/paperless/backup/
msg_ok "Backup completed"
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
setup_gs
msg_info "Updating Paperless-ngx"
cp -r /opt/paperless/backup/* /opt/paperless/
cd /opt/paperless
$STD uv sync --all-extras
cd /opt/paperless/src
$STD uv run -- python manage.py migrate
msg_ok "Paperless-ngx migration and update to ${RELEASE} completed"
fi fi
exit
fi msg_info "Starting all Paperless-ngx Services"
if [ "$UPD" == "2" ]; then systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue
cat paperless.creds sleep 1
exit msg_ok "Started all Paperless-ngx Services"
msg_ok "Updated Successfully!\n"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit
} }
start start
@@ -94,3 +139,4 @@ msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

View File

@@ -27,29 +27,25 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/phpipam/phpipam/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/phpipam/phpipam/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.phpipam ]] || [[ "${RELEASE}" != "$(cat ~/.phpipam 2>/dev/null)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
mv /opt/phpipam/ /opt/phpipam-backup mv /opt/phpipam/ /opt/phpipam-backup
curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o $(basename "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip") fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
$STD unzip "phpipam-v${RELEASE}.zip"
cp /opt/phpipam-backup/config.php /opt/phpipam cp /opt/phpipam-backup/config.php /opt/phpipam
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -r "/opt/phpipam-v${RELEASE}.zip"
rm -r /opt/phpipam-backup rm -r /opt/phpipam-backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -20,38 +20,31 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/plant-it ]]; then
if [[ ! -d /opt/plant-it ]]; then msg_error "No ${APP} Installation Found!"
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop plant-it
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
curl -fsSL "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar" -o "/opt/plant-it/server.jar"
cd /opt/plant-it/frontend
curl -fsSL "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz" -o $(basename "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz")
tar -xzf client.tar.gz
rm -f client.tar.gz
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start plant-it
msg_ok "Started $APP"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat ~/.plant-it 2>/dev/null)" ]] || [[ ! -f ~/.plant-it ]]; then
msg_info "Stopping $APP"
systemctl stop plant-it
msg_ok "Stopped $APP"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "latest" "/opt/plant-it/backend" "server.jar"
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "latest" "/opt/plant-it/frontend" "client.tar.gz"
msg_info "Starting $APP"
systemctl start plant-it
msg_ok "Started $APP"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
} }
start start

View File

@@ -27,24 +27,19 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.prom-paperless-exp ]] || [[ "${RELEASE}" != "$(cat prom-paperless-exp 2>/dev/null)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop prometheus-paperless-ngx-exporter systemctl stop prometheus-paperless-ngx-exporter
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary"
cd /opt
curl -fsSL "https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz")
tar -xf prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
cp -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/
rm -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/ prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start prometheus-paperless-ngx-exporter systemctl start prometheus-paperless-ngx-exporter
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -28,23 +28,18 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.prometheus ]] || [[ "${RELEASE}" != "$(cat ~/.prometheus 2>/dev/null)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop prometheus systemctl stop prometheus
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "prometheus" "prometheus/prometheus" "prebuild" "latest" "/usr/local/bin" "*linux-amd64.tar.gz"
cd /opt rm -f /usr/local/bin/prometheus.yml
curl -fsSL "https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz" -o $(basename "https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz")
tar -xf prometheus-${RELEASE}.linux-amd64.tar.gz
cp -rf prometheus-${RELEASE}.linux-amd64/prometheus prometheus-${RELEASE}.linux-amd64/promtool /usr/local/bin/
rm -rf prometheus-${RELEASE}.linux-amd64 prometheus-${RELEASE}.linux-amd64.tar.gz
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start prometheus systemctl start prometheus
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -23,37 +23,30 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/ps5-mqtt ]]; then if [[ ! -d /opt/ps5-mqtt ]]; then
msg_error "No ${APP} installation found!" msg_error "No ${APP} installation found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/FunkeyFlo/ps5-mqtt/releases/latest | jq -r '.tag_name') RELEASE=$(curl -fsSL https://api.github.com/repos/FunkeyFlo/ps5-mqtt/releases/latest | jq -r '.tag_name' | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.ps5-mqtt 2>/dev/null)" ]] || [[ ! -f ~/.ps5-mqtt ]]; then
if [[ "${RELEASE}" != "$(cat /opt/ps5-mqtt_version.txt)" ]]; then
msg_info "Stopping service" msg_info "Stopping service"
systemctl stop ps5-mqtt systemctl stop ps5-mqtt
msg_ok "Stopped service" msg_ok "Stopped service"
msg_info "Updating PS5-MQTT to ${RELEASE}" fetch_and_deploy_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt" "tarball"
curl -fsSL https://github.com/FunkeyFlo/ps5-mqtt/archive/refs/tags/${RELEASE}.tar.gz -o /tmp/${RELEASE}.tar.gz
rm -rf /opt/ps5-mqtt
tar zxf /tmp/${RELEASE}.tar.gz -C /opt
mv /opt/ps5-mqtt-* /opt/ps5-mqtt
rm /tmp/${RELEASE}.tar.gz
echo ${RELEASE} >/opt/ps5-mqtt_version.txt
msg_ok "Updated PS5-MQTT"
msg_info "Building new PS5-MQTT version" msg_info "Configuring ${APP}"
cd /opt/ps5-mqtt/ps5-mqtt/ cd /opt/ps5-mqtt/ps5-mqtt/
$STD npm install $STD npm install
$STD npm run build $STD npm run build
msg_ok "Built new PS5-MQTT version" msg_ok "Configured ${APP}"
msg_info "Starting service" msg_info "Starting service"
systemctl start ps5-mqtt systemctl start ps5-mqtt
msg_ok "Started service" msg_ok "Started service"
msg_ok "Updated successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -34,28 +34,30 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//') RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//')
SERVICE_PATH="/etc/systemd/system"
if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop pulse systemctl stop pulse*.service
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
dirs=(/opt/pulse/bin /opt/pulse/frontend-modern) if [[ -f /opt/pulse/pulse ]]; then
for dir in "${dirs[@]}"; do rm -f /opt/pulse/pulse
if [[ -d "$dir" ]]; then fi
rm -rf "$dir"
fi
done
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz" fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
chown -R pulse:pulse /etc/pulse /opt/pulse chown -R pulse:pulse /etc/pulse /opt/pulse
sed -i 's|bin/pulse|pulse|' /etc/systemd/system/pulse.service if [[ -f "$SERVICE_PATH"/pulse.service ]]; then
mv "$SERVICE_PATH"/pulse.service "$SERVICE_PATH"/pulse-backend.service
fi
sed -i -e 's|pulse/pulse|pulse/bin/pulse|' \
-e 's/^Environment="API.*$//' "$SERVICE_PATH"/pulse-backend.service
systemctl daemon-reload systemctl daemon-reload
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
usermod -s /usr/sbin/nologin pulse usermod -s /usr/sbin/nologin pulse
fi fi
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start pulse systemctl start pulse-backend
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"

View File

@@ -27,32 +27,24 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ ! -f /opt/${APP}_version.txt ]]; then if [[ ! -f ~/.qbittorrent ]]; then
touch /opt/${APP}_version.txt msg_error "Please create new qBittorrent LXC. Updating from v4.x to v5.x is not supported!"
mkdir -p $HOME/.config/qBittorrent/ exit
mkdir -p /opt/qbittorrent/
[ -d "/.config/qBittorrent" ] && mv /.config/qBittorrent "$HOME/.config/"
$STD apt-get remove --purge -y qbittorrent-nox
sed -i 's@ExecStart=/usr/bin/qbittorrent-nox@ExecStart=/opt/qbittorrent/qbittorrent-nox@g' /etc/systemd/system/qbittorrent-nox.service
systemctl daemon-reload
fi fi
FULLRELEASE=$(curl -fsSL https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
RELEASE=$(echo $FULLRELEASE | cut -c 9-13) RELEASE=$(curl -fsSL https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.qbittorrent ]] || [[ "${RELEASE}" != "$(cat ~/.qbittorrent 2>/dev/null)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop qbittorrent-nox systemctl stop qbittorrent-nox
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
rm -f /opt/qbittorrent/qbittorrent-nox mv /opt/qbittorrent/x86_64-qbittorrent-nox /opt/qbittorrent/qbittorrent-nox
curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox
chmod +x /opt/qbittorrent/qbittorrent-nox
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start qbittorrent-nox systemctl start qbittorrent-nox
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -28,27 +28,19 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.rclone ]] || [[ "${RELEASE}" != "$(cat ~/.rclone 2>/dev/null)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop rclone-web systemctl stop rclone-web
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "rclone" "rclone/rclone" "prebuild" "latest" "/opt/rclone" "rclone*linux-amd64.zip"
temp_file=$(mktemp)
rm -rf /opt/rclone/*
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
$STD unzip -j "$temp_file" '*/**' -d /opt/rclone
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start rclone-web systemctl start rclone-web
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up"
rm -f "$temp_file"
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -27,30 +27,37 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping ${APP}"
systemctl stop rdtc
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}" RELEASE=$(curl -s https://api.github.com/repos/rogerfar/rdt-client/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then if [[ ! -f ~/.rdt-client ]] || [[ "${RELEASE}" != "$(cat ~/.rdt-client 2>/dev/null)" ]]; then
$STD apt-get remove --purge -y dotnet-sdk-8.0 msg_info "Stopping ${APP}"
$STD apt-get install -y dotnet-sdk-9.0 systemctl stop rdtc
msg_ok "Stopped ${APP}"
msg_info "Creating backup"
mkdir -p /opt/rdtc-backup
cp -R /opt/rdtc/appsettings.json /opt/rdtc-backup/
msg_ok "Backup created"
fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip"
cp -R /opt/rdtc-backup/appsettings.json /opt/rdtc/
if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
$STD apt-get remove --purge -y dotnet-sdk-8.0
$STD apt-get install -y dotnet-sdk-9.0
fi
msg_info "Starting ${APP}"
systemctl start rdtc
msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -rf /opt/rdtc-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
mkdir -p rdtc-backup
cp -R /opt/rdtc/appsettings.json rdtc-backup/
curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o $(basename "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip")
$STD unzip -o RealDebridClient.zip -d /opt/rdtc
cp -R rdtc-backup/appsettings.json /opt/rdtc/
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
systemctl start rdtc
msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -rf rdtc-backup RealDebridClient.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully"
exit exit
} }

View File

@@ -20,22 +20,23 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP}"
curl -fsSL "$(curl -fsSL https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4)")
tar -C /usr/local/bin -xJf recyclarr*.tar.xz
rm -rf recyclarr*.tar.xz
msg_ok "Updated ${APP}"
msg_ok "Updated Successfully"
exit exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.recyclarr 2>/dev/null)" ]] || [[ ! -f ~/.recyclarr ]]; then
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
} }
start start

View File

@@ -23,29 +23,25 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d "/opt/revealjs" ]]; then if [[ ! -d "/opt/revealjs" ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/hakimel/reveal.js/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/hakimel/reveal.js/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.revealjs 2>/dev/null)" ]] || [[ ! -f ~/.revealjs ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop revealjs systemctl stop revealjs
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/hakimel/reveal.js/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
rm -rf /opt/revealjs/node_modules/*
cp /opt/revealjs/index.html /opt cp /opt/revealjs/index.html /opt
cp -rf reveal.js-${RELEASE}/* /opt/revealjs fetch_and_deploy_gh_release "revealjs" "hakimel/reveal.js" "tarball"
msg_info "Updating $APP to ${RELEASE}"
cd /opt/revealjs cd /opt/revealjs
$STD npm install $STD npm install
cp -f /opt/index.html /opt/revealjs cp -f /opt/index.html /opt/revealjs
sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
@@ -53,8 +49,7 @@ curl -fsSL "https://github.com/hakimel/reveal.js/archive/refs/tags/${RELEASE}.ta
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -f $temp_file rm -f /opt/index.html
rm -rf ~/reveal.js-${RELEASE}
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"

View File

@@ -28,13 +28,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ ! -f /opt/rustdeskapi_version.txt ]]; then
touch /opt/rustdeskapi_version.txt
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ "${APIRELEASE}" != "$(cat /opt/rustdesk-api.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]] || [[ ! -f /opt/rustdesk-api.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.rustdesk-hbbr)" ]] || [[ "${APIRELEASE}" != "$(cat ~/.rustdesk-api)" ]] || [[ ! -f ~/.rustdesk-hbbr ]] || [[ ! -f ~/.rustdesk-api ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop rustdesk-hbbr systemctl stop rustdesk-hbbr
systemctl stop rustdesk-hbbs systemctl stop rustdesk-hbbs
@@ -43,28 +40,15 @@ function update_script() {
fi fi
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}" fetch_and_deploy_gh_release "rustdesk-hbbr" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*amd64.deb"
TEMPDIR=$(mktemp -d) fetch_and_deploy_gh_release "rustdesk-hbbs" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*amd64.deb"
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbr_${RELEASE}_amd64.deb" \ fetch_and_deploy_gh_release "rustdesk-utils" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-utils*amd64.deb"
-o "${TEMPDIR}/rustdesk-server-hbbr_${RELEASE}_amd64.deb" fetch_and_deploy_gh_release "rustdesk-api" "lejianwen/rustdesk-api" "binary" "latest" "/opt/rustdesk" "rustdesk-api-server*amd64.deb"
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbs_${RELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-server-hbbs_${RELEASE}_amd64.deb"
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-utils_${RELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-server-utils_${RELEASE}_amd64.deb"
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/rustdesk-api-server_${APIRELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-api-server_${APIRELEASE}_amd64.deb"
$STD dpkg -i $TEMPDIR/*.deb
echo "${RELEASE}" >/opt/rustdesk_version.txt
echo "${APIRELEASE}" >/opt/rustdeskapi_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Cleaning Up"
rm -rf $TEMPDIR
msg_ok "Cleanup Completed"
msg_info "Starting services" msg_info "Starting services"
systemctl start -q rustdesk-* --all systemctl start -q rustdesk-* --all
msg_ok "Services started" msg_ok "Services started"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -29,25 +29,17 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/semaphoreui/semaphore/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/semaphoreui/semaphore/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.semaphore ]] || [[ "${RELEASE}" != "$(cat ~/.semaphore 2>/dev/null)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop semaphore systemctl stop semaphore
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary"
cd /opt
curl -fsSL "https://github.com/semaphoreui/semaphore/releases/download/v${RELEASE}/semaphore_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/semaphoreui/semaphore/releases/download/v${RELEASE}/semaphore_${RELEASE}_linux_amd64.deb")
$STD dpkg -i semaphore_${RELEASE}_linux_amd64.deb
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start semaphore systemctl start semaphore
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/semaphore_${RELEASE}_linux_amd64.deb
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}." msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -26,19 +26,14 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/silverbulletmd/silverbullet/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/silverbulletmd/silverbullet/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f "/opt/${APP}_version.txt" || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.silverbullet || "${RELEASE}" != "$(cat ~/.silverbullet 2>/dev/null)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop silverbullet systemctl stop silverbullet
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "silverbullet" "silverbulletmd/silverbullet" "prebuild" "latest" "/opt/silverbullet/bin" "silverbullet-server-linux-x86_64.zip"
curl -fsSL "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip" -o $(basename "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip")
$STD unzip silverbullet-server-linux-x86_64.zip
mv silverbullet /opt/silverbullet/bin/
chmod +x /opt/silverbullet/bin/silverbullet
echo "${RELEASE}" >/opt/silverbullet/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start silverbullet systemctl start silverbullet

43
ct/swizzin.sh Normal file
View File

@@ -0,0 +1,43 @@
#!/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: EEJoshua
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://swizzin.ltd/
APP="Swizzin"
var_tags="${var_tags:-seedbox}"
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 ! command -v sudo box >/dev/null 2>&1; then
msg_error "No ${APP} installation found!"
exit
fi
msg_info "Running 'sudo box update' inside the container"
$STD sudo box update
msg_ok "Update finished"
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}If installed panel, access through the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -20,18 +20,30 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/tdarr ]]; then if [[ ! -d /opt/tdarr ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
rm -rf /opt/tdarr/Tdarr_Updater
cd /opt/tdarr
RELEASE=$(curl -fsSL https://f000.backblazeb2.com/file/tdarrs/versions.json | grep -oP '(?<="Tdarr_Updater": ")[^"]+' | grep linux_x64 | head -n 1)
curl -fsSL "$RELEASE" -o Tdarr_Updater.zip
$STD unzip Tdarr_Updater.zip
chmod +x Tdarr_Updater
$STD ./Tdarr_Updater
msg_ok "Updated $APP LXC"
msg_info "Cleaning up"
rm -rf /opt/tdarr/Tdarr_Updater.zip
msg_ok "Cleaned"
msg_ok "$APP has been successfully updated!"
exit
} }
start start

View File

@@ -27,17 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}"
if ! dpkg -s aspnetcore-runtime-8.0 >/dev/null 2>&1; then RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o $(basename "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb") if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then
$STD dpkg -i packages-microsoft-prod.deb msg_info "Updating ${APP}"
$STD apt-get update curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
$STD apt-get install -y aspnetcore-runtime-8.0 $STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
rm packages-microsoft-prod.deb msg_ok "Updated Successfully"
msg_info "Cleaning up"
rm -f /opt/DnsServerPortable.tar.gz
msg_ok "Cleaned up"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi fi
$STD bash <(curl -fsSL https://download.technitium.com/dns/install.sh)
msg_ok "Updated Successfully"
exit exit
} }

View File

@@ -26,32 +26,34 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE="$(curl -fsSL https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" RELEASE="$(curl -fsSL https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
VERSION="${RELEASE#tc_v}" if [[ ! -f ~/.teddycloud || "${RELEASE}" != "$(cat ~/.teddycloud)" ]]; then
if [[ ! -f "/opt/${APP}_version.txt" || "${VERSION}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop teddycloud systemctl stop teddycloud
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${VERSION}" msg_info "Creating backup"
cd /opt
mv /opt/teddycloud /opt/teddycloud_bak mv /opt/teddycloud /opt/teddycloud_bak
curl -fsSL "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" -o $(basename "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip") msg_ok "Backup created"
$STD unzip -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
fetch_and_deploy_gh_release "teddycloud" "toniebox-reverse-engineering/teddycloud" "prebuild" "latest" "/opt/teddycloud" "teddycloud.amd64.release*.zip"
msg_info "Restoring data"
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
echo "${VERSION}" >"/opt/${APP}_version.txt" msg_ok "Data restored"
msg_ok "Updated ${APP} to v${VERSION}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start teddycloud systemctl start teddycloud
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/teddycloud.amd64.release_v${VERSION}.zip
rm -rf /opt/teddycloud_bak rm -rf /opt/teddycloud_bak
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated successfully"
else else
msg_ok "No update required. ${APP} is already at v${VERSION}" msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit exit
} }

View File

@@ -27,33 +27,15 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! dpkg -l build-essential >/dev/null 2>&1; then
$STD apt-get update
$STD apt-get install -y build-essential
fi
if ! npm list -g node-gyp >/dev/null 2>&1; then
$STD npm install -g node-gyp
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.thelounge ]] || [[ "${RELEASE}" != "$(cat ~/.thelounge)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop thelounge systemctl stop thelounge
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" fetch_and_deploy_gh_release "thelounge" "thelounge/thelounge-deb" "binary"
$STD apt-get install --only-upgrade nodejs
cd /opt
curl -fsSL "https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb" -o $(basename "https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb")
dpkg -i ./thelounge_${RELEASE}_all.deb
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service"
systemctl start thelounge
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf "/opt/thelounge_${RELEASE}_all.deb"
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}." msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -27,7 +27,42 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Currently we don't provide an update function for this ${APP}."
RELEASE=$(curl -fsSL https://api.github.com/repos/traccar/traccar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.traccar)" ]] || [[ ! -f ~/.traccar ]]; then
msg_info "Stopping service"
systemctl stop traccar
msg_ok "Service stopped"
msg_info "Creating backup"
mv /opt/traccar/conf/traccar.xml /opt
[[ -d /opt/traccar/data ]] && mv /opt/traccar/data /opt
[[ -d /opt/traccar/media ]] && mv /opt/traccar/media /opt
msg_ok "Backup created"
rm -rf /opt/traccar
fetch_and_deploy_gh_release "traccar" "traccar/traccar" "prebuild" "latest" "/opt/traccar" "traccar-linux-64*.zip"
cd /opt/traccar
$STD ./traccar.run
msg_info "Restoring data"
mv /opt/traccar.xml /opt/traccar/conf
[[ -d /opt/data ]] && mv /opt/data /opt/traccar
[[ -d /opt/media ]] && mv /opt/media /opt/traccar
msg_ok "Data restored"
msg_info "Starting ${APP}"
systemctl start traccar
msg_ok "Started ${APP}"
msg_info "Cleaning up"
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
msg_ok "Cleaned up"
msg_ok "Successfully updated ${APP}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -27,16 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1)
msg_info "Updating $APP LXC" RELEASE=$(curl -fsSL https://api.github.com/repos/traefik/traefik/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.traefik)" ]] || [[ ! -f ~/.traefik ]]; then
curl -fsSL "https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz") msg_info "Stopping service"
tar -C /tmp -xzf traefik*.tar.gz systemctl stop traefik
mv /tmp/traefik /usr/bin/ msg_ok "Service stopped"
rm -rf traefik*.tar.gz
systemctl restart traefik.service fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP LXC" msg_info "Starting ${APP}"
systemctl start traefik
msg_ok "Started ${APP}"
msg_ok "Successfully updated ${APP}"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -28,7 +28,7 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/chrisvel/tududi/releases/latest | yq '.tag_name' | sed 's/^v//') RELEASE=$(curl -fsSL https://api.github.com/repos/chrisvel/tududi/releases/latest | yq '.tag_name' | sed 's/^"v//;s/"$//')
if [[ "${RELEASE}" != "$(cat ~/.tududi 2>/dev/null)" ]] || [[ ! -f ~/.tududi ]]; then if [[ "${RELEASE}" != "$(cat ~/.tududi 2>/dev/null)" ]] || [[ ! -f ~/.tududi ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop tududi systemctl stop tududi

44
ct/twingate-connector.sh Normal file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: twingate-andrewb
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.twingate.com/docs/
APP="Twingate-Connector"
var_tags="${var_tags:-network;connector;twingate}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-3}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /lib/systemd/system/twingate-connector.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP}"
$STD apt update
$STD apt install -yq twingate-connector
$STD systemctl restart twingate-connector
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "All Finished! If you need to update your access or refresh tokens, they can be found in /etc/twingate/connector.conf"

View File

@@ -32,11 +32,12 @@ function update_script() {
systemctl stop umami systemctl stop umami
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball"
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt/umami cd /opt/umami
git pull $STD yarn install
yarn install $STD yarn run build
yarn build
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"

View File

@@ -34,27 +34,29 @@ function update_script() {
echo "Installed NPM..." echo "Installed NPM..."
fi fi
fi fi
LATEST=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
msg_info "Stopping ${APP}"
$STD sudo systemctl stop uptime-kuma
msg_ok "Stopped ${APP}"
cd /opt/uptime-kuma RELEASE=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ ! -f ~/.uptime-kuma ]] || [[ "${RELEASE}" != "$(cat ~/.uptime-kuma)" ]]; then
msg_info "Stopping ${APP}"
$STD systemctl stop uptime-kuma
msg_ok "Stopped ${APP}"
msg_info "Pulling ${APP} ${LATEST}" fetch_and_deploy_gh_release "uptime-kuma" "louislam/uptime-kuma" "tarball"
$STD git fetch --all cd /opt/uptime-kuma
$STD git checkout $LATEST --force
msg_ok "Pulled ${APP} ${LATEST}"
msg_info "Updating ${APP} to ${LATEST}" msg_info "Updating ${APP} to ${RELEASE}"
$STD npm install --production $STD npm install --omit dev
$STD npm run download-dist $STD npm run download-dist
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
$STD sudo systemctl start uptime-kuma $STD sudo systemctl start uptime-kuma
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -27,17 +27,19 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.wallos ]] || [[ "${RELEASE}" != "$(cat ~/.wallos)" ]]; then
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating backup"
cd /opt
curl -fsSL "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip")
mkdir -p /opt/logos mkdir -p /opt/logos
mv /opt/wallos/db/wallos.db /opt/wallos.db mv /opt/wallos/db/wallos.db /opt/wallos.db
mv /opt/wallos/images/uploads/logos /opt/logos/ mv /opt/wallos/images/uploads/logos /opt/logos/
$STD unzip v${RELEASE}.zip msg_ok "Backup created"
rm -rf /opt/wallos rm -rf /opt/wallos
mv Wallos-${RELEASE} /opt/wallos fetch_and_deploy_gh_release "wallos" "ellite/Wallos" "tarball"
msg_info "Configuring ${APP}"
rm -rf /opt/wallos/db/wallos.empty.db rm -rf /opt/wallos/db/wallos.empty.db
mv /opt/wallos.db /opt/wallos/db/wallos.db mv /opt/wallos.db /opt/wallos/db/wallos.db
mv /opt/logos/* /opt/wallos/images/uploads/logos mv /opt/logos/* /opt/wallos/images/uploads/logos
@@ -48,16 +50,12 @@ function update_script() {
chmod -R 755 /opt/wallos chmod -R 755 /opt/wallos
mkdir -p /var/log/cron mkdir -p /var/log/cron
$STD curl http://localhost/endpoints/db/migrate.php $STD curl http://localhost/endpoints/db/migrate.php
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Configured ${APP}"
msg_ok "Updated ${APP}"
msg_info "Reload Apache2" msg_info "Reload Apache2"
systemctl reload apache2 systemctl reload apache2
msg_ok "Apache2 Reloaded" msg_ok "Apache2 Reloaded"
msg_info "Cleaning Up"
rm -R /opt/v${RELEASE}.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -27,6 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! [[ $(dpkg -s zstd 2>/dev/null) ]]; then
$STD apt-get update
$STD apt-get install -y zstd
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
# Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
msg_info "Running Migration" msg_info "Running Migration"
@@ -66,8 +70,9 @@ EOF
temp_file=$(mktemp) temp_file=$(mktemp)
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst" -o "$temp_file" curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst" -o "$temp_file"
tar -xf $temp_file tar -xf $temp_file
cp -f wastebin /opt/wastebin/ cp -f wastebin* /opt/wastebin/
chmod +x /opt/wastebin/wastebin chmod +x /opt/wastebin/wastebin
chmod +x /opt/wastebin/wastebin-ctl
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated Wastebin" msg_ok "Updated Wastebin"

View File

@@ -27,22 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.watcharr)" ]] || [[ ! -f ~/.watcharr ]]; then
msg_info "Updating $APP" msg_info "Updating $APP"
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop watcharr systemctl stop watcharr
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
temp_file=$(mktemp)
temp_folder=$(mktemp -d)
curl -fsSL "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
tar -xzf "$temp_file" -C "$temp_folder"
rm -f /opt/watcharr/server/watcharr rm -f /opt/watcharr/server/watcharr
rm -rf /opt/watcharr/server/ui rm -rf /opt/watcharr/server/ui
cp -rf ${temp_folder}/Watcharr-${RELEASE}/* /opt/watcharr fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
msg_info "Updating $APP to v${RELEASE}"
cd /opt/watcharr cd /opt/watcharr
export GOOS=linux export GOOS=linux
$STD npm i $STD npm i
@@ -57,12 +55,6 @@ function update_script() {
systemctl start watcharr systemctl start watcharr
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f ${temp_file}
rm -rf ${temp_folder}
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -27,17 +27,28 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP"
systemctl stop watchyourlan.service RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cp -R /data/config.yaml config.yaml if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4) msg_info "Stopping service"
curl -fsSL "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb") systemctl stop watchyourlan.service
dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb msg_ok "Service stopped"
cp -R config.yaml /data/config.yaml
sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service cp -R /data/config.yaml ~/config.yaml
rm watchyourlan_${RELEASE}_linux_amd64.deb config.yaml fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
systemctl enable -q --now watchyourlan cp -R config.yaml /data/config.yaml
msg_ok "Updated $APP" sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
msg_info "Cleaning up"
rm ~/config.yaml
msg_ok "Cleaned up"
msg_info "Starting service"
systemctl enable -q --now watchyourlan
msg_ok "Service started"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }

View File

@@ -27,23 +27,26 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | cut -d '"' -f 4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ ! -f ~/.wavelog ]] || [[ "${RELEASE}" != "$(cat ~/.wavelog)" ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop apache2 systemctl stop apache2
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating backup"
cp /opt/wavelog/application/config/config.php /opt/config.php cp /opt/wavelog/application/config/config.php /opt/config.php
cp /opt/wavelog/application/config/database.php /opt/database.php cp /opt/wavelog/application/config/database.php /opt/database.php
cp -r /opt/wavelog/userdata /opt/userdata cp -r /opt/wavelog/userdata /opt/userdata
if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then
cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
fi fi
curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip") msg_ok "Backup created"
$STD unzip ${RELEASE}.zip
rm -rf /opt/wavelog rm -rf /opt/wavelog
mv wavelog-${RELEASE}/ /opt/wavelog fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball"
msg_info "Updating ${APP} to ${RELEASE}"
rm -rf /opt/wavelog/install rm -rf /opt/wavelog/install
mv /opt/config.php /opt/wavelog/application/config/config.php mv /opt/config.php /opt/wavelog/application/config/config.php
mv /opt/database.php /opt/wavelog/application/config/database.php mv /opt/database.php /opt/wavelog/application/config/database.php
@@ -55,16 +58,12 @@ function update_script() {
chown -R www-data:www-data /opt/wavelog/ chown -R www-data:www-data /opt/wavelog/
find /opt/wavelog/ -type d -exec chmod 755 {} \; find /opt/wavelog/ -type d -exec chmod 755 {} \;
find /opt/wavelog/ -type f -exec chmod 664 {} \; find /opt/wavelog/ -type f -exec chmod 664 {} \;
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting Services" msg_info "Starting Services"
systemctl start apache2 systemctl start apache2
msg_ok "Started Services" msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf ${RELEASE}.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -27,8 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.wikijs)" ]] || [[ ! -f ~/.wikijs ]]; then
msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite." msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false") SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")
if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then
@@ -47,12 +48,8 @@ function update_script() {
cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup
msg_ok "Backed up Data" msg_ok "Backed up Data"
msg_info "Updating ${APP}"
rm -rf /opt/wikijs/* rm -rf /opt/wikijs/*
cd /opt/wikijs fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz"
curl -fsSL "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" -o $(basename "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz")
tar -xzf wiki-js.tar.gz
msg_ok "Updated ${APP}"
msg_info "Restoring Data" msg_info "Restoring Data"
cp -R /opt/wikijs-backup/* /opt/wikijs cp -R /opt/wikijs-backup/* /opt/wikijs
@@ -64,9 +61,9 @@ function update_script() {
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -rf /opt/wikijs/wiki-js.tar.gz
rm -rf /opt/wikijs-backup rm -rf /opt/wikijs-backup
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -30,10 +30,12 @@ function update_script() {
fi fi
apt-get update apt-get update
apt-get -y upgrade apt-get -y upgrade
sleep 2 if [[ -d /etc/wgdashboard ]]; then
cd /etc/wgdashboard/src sleep 2
./wgd.sh update cd /etc/wgdashboard/src
./wgd.sh start ./wgd.sh update
./wgd.sh start
fi
exit exit
} }
@@ -43,5 +45,5 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}" echo -e "${INFO}${YW}Access WGDashboard (if installed) using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"

View File

@@ -28,21 +28,20 @@ function update_script() {
exit exit
fi fi
msg_info "Updating yt-dlp"
$STD yt-dlp -U
msg_ok "Updated yt-dlp"
RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/yt-dlp-webui_version.txt)" ]] || [[ ! -f /opt/yt-dlp-webui_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.yt-dlp-webui)" ]] || [[ ! -f ~/.yt-dlp-webui ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop yt-dlp-webui systemctl stop yt-dlp-webui
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating yt-dlp"
$STD yt-dlp -U
msg_ok "Updated yt-dlp"
rm -rf /usr/local/bin/yt-dlp-webui rm -rf /usr/local/bin/yt-dlp-webui
curl -fsSL "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -o "/usr/local/bin/yt-dlp-webui" fetch_and_deploy_gh_release "yt-dlp-webui" "marcopiovanello/yt-dlp-web-ui" "singlefile" "latest" "/usr/local/bin" "yt-dlp-webui_linux-amd64"
chmod +x /usr/local/bin/yt-dlp-webui
msg_ok "Updated $APP LXC"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start yt-dlp-webui systemctl start yt-dlp-webui

View File

@@ -32,36 +32,32 @@ function update_script() {
$STD npm install -g pnpm@latest $STD npm install -g pnpm@latest
msg_ok "Installed pnpm" msg_ok "Installed pnpm"
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f ~/.zipline ]] || [[ "${RELEASE}" != "$(cat ~/.zipline)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop zipline systemctl stop zipline
msg_ok "${APP} Stopped" msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/zipline/.env /opt/
mkdir -p /opt/zipline-uploads mkdir -p /opt/zipline-uploads
if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then
cp -R /opt/zipline/uploads/* /opt/zipline-uploads/ cp -R /opt/zipline/uploads/* /opt/zipline-uploads/
fi fi
curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip") cp /opt/zipline/.env /opt/
$STD unzip v"${RELEASE}".zip
rm -R /opt/zipline rm -R /opt/zipline
mv zipline-"${RELEASE}" /opt/zipline fetch_and_deploy_gh_release "zipline" "diced/zipline" "tarball"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/zipline cd /opt/zipline
mv /opt/.env /opt/zipline/.env mv /opt/.env /opt/zipline/.env
$STD pnpm install $STD pnpm install
$STD pnpm build $STD pnpm build
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start zipline systemctl start zipline
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -rf v"${RELEASE}".zip
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -27,27 +27,24 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ ! -f ~/.zitadel ]] || [[ "${RELEASE}" != "$(cat ~/.zitadel)" ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop zitadel systemctl stop zitadel
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
rm -f /usr/local/bin/zitadel
fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-amd64.tar.gz"
msg_info "Updating $APP to ${RELEASE}" msg_info "Updating $APP to ${RELEASE}"
cd /tmp
curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
mv zitadel-linux-amd64/zitadel /usr/local/bin
$STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start zitadel systemctl start zitadel
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf /tmp/zitadel-linux-amd64
msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -27,17 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Updating $APP to ${RELEASE}" if [[ ! -f ~/.zoraxy ]] || [[ "${RELEASE}" != "$(cat ~/.zoraxy)" ]]; then
msg_info "Stopping service"
systemctl stop zoraxy systemctl stop zoraxy
curl -fsSL "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64" -o $(basename "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64") msg_ok "Service stopped"
rm -rf /opt/zoraxy/zoraxy rm -rf /opt/zoraxy/zoraxy
mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy fetch_and_deploy_gh_release "zoraxy" "tobychui/zoraxy" "singlefile" "latest" "/opt/zoraxy" "zoraxy_linux_amd64"
chmod +x /opt/zoraxy/zoraxy
msg_info "Starting service"
systemctl start zoraxy systemctl start zoraxy
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Service started"
msg_ok "Updated $APP"
msg_ok "Updated successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -23,25 +23,29 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/bin/zot ]]; then if [[ ! -f /usr/bin/zot ]]; then
msg_error "No ${APP} installation found!" msg_error "No ${APP} installation found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}') RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
msg_info "Stopping Zot service" msg_info "Stopping Zot service"
systemctl stop zot systemctl stop zot
msg_ok "Stopped Zot service" msg_ok "Stopped Zot service"
msg_info "Updating Zot to ${RELEASE}" rm -f /usr/bin/zot
curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot fetch_and_deploy_gh_release "zot" "project-zot/zot" "singlefile" "latest" "/usr/bin" "zot-linux-amd64"
chmod +x /usr/bin/zot
msg_info "Configuring Zot Registry"
chown root:root /usr/bin/zot chown root:root /usr/bin/zot
echo "${RELEASE}" >~/.${APP} msg_ok "Configured Zot Registry"
systemctl restart zot
msg_ok "Updated Zot to ${RELEASE}" msg_info "Starting service"
systemctl start zot
msg_ok "Service started"
msg_ok "Updated successfuly"
else else
msg_ok "Zot is already up to date (${RELEASE})" msg_ok "Zot is already up to date (${RELEASE})"
fi fi

View File

@@ -27,27 +27,24 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f ~/.zwave-js-ui ]] || [[ "${RELEASE}" != "$(cat ~/.zwave-js-ui)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop zwave-js-ui systemctl stop zwave-js-ui
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating Z-Wave JS UI"
rm -rf /opt/zwave-js-ui/* rm -rf /opt/zwave-js-ui/*
cd /opt/zwave-js-ui fetch_and_deploy_gh_release "zwave-js-ui" "zwave-js/zwave-js-ui" "prebuild" "latest" "/opt/zwave-js-ui" "zwave-js-ui*-linux.zip"
curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o $(basename "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip")
$STD unzip zwave-js-ui-${RELEASE}-linux.zip
msg_ok "Updated Z-Wave JS UI"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start zwave-js-ui systemctl start zwave-js-ui
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleanup" msg_info "Cleanup"
rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
rm -rf /opt/zwave-js-ui/store rm -rf /opt/zwave-js-ui/store
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully!\n" msg_ok "Updated Successfully!\n"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}." msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@@ -0,0 +1,40 @@
{
"name": "Copyparty",
"slug": "copyparty",
"categories": [
11
],
"date_created": "2025-08-18",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://github.com/9001/copyparty?tab=readme-ov-file#the-browser",
"website": "https://github.com/9001/copyparty",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/copyparty.webp",
"config_path": "/etc/copyparty.conf",
"description": "Copyparty is a lightweight, portable HTTP file server with a browser-based interface. It supports drag-and-drop uploads, downloads, deduplication, media playback, and advanced search, making it ideal for quickly sharing and managing files.",
"install_methods": [
{
"type": "default",
"script": "tools/addon/copyparty.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Execute within the Proxmox shell or in LXC",
"type": "info"
}
]
}

View File

@@ -0,0 +1,48 @@
{
"name": "Debian 13",
"slug": "debian-13-vm",
"categories": [
2
],
"date_created": "2025-08-19",
"type": "vm",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": null,
"website": "https://www.debian.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp",
"config_path": "",
"description": "Debian 13 (Trixie) Linux is a distribution that emphasizes free software. It supports many hardware platforms",
"install_methods": [
{
"type": "default",
"script": "vm/debian-13-vm.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "VM has no root password set. To login type in user `root` and just press enter",
"type": "info"
},
{
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
"type": "info"
},
{
"text": "If you use Cloud-init, checkout after installation: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"type": "info"
}
]
}

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "addon", "type": "addon",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 61208, "interface_port": 61208,
"documentation": "https://glances.readthedocs.io/en/latest/", "documentation": "https://glances.readthedocs.io/en/latest/",
@@ -33,12 +33,8 @@
}, },
"notes": [ "notes": [
{ {
"text": "Execute within an existing LXC Console", "text": "Execute within an existing LXC Console (Debian / Ubuntu / Alpine supported)",
"type": "warning" "type": "info"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
} }
] ]
} }

View File

@@ -2,7 +2,7 @@
"name": "Jenkins", "name": "Jenkins",
"slug": "jenkins", "slug": "jenkins",
"categories": [ "categories": [
22 20
], ],
"date_created": "2024-12-26", "date_created": "2024-12-26",
"type": "ct", "type": "ct",

View File

@@ -0,0 +1,40 @@
{
"name": "LiteLLM",
"slug": "litellm",
"categories": [
20
],
"date_created": "2025-08-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 4000,
"documentation": "https://docs.litellm.ai/",
"config_path": "/opt/litellm/litellm.yaml",
"website": "https://www.litellm.ai/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/litellm-light.webp",
"description": "LLM proxy to call 100+ LLMs in a unified interface & track spend, set budgets per virtual key/user",
"install_methods": [
{
"type": "default",
"script": "ct/litellm.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "sk-1234"
},
"notes": [
{
"text": "Update master key in the config file",
"type": "info"
}
]
}

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 5080, "interface_port": 5080,
"documentation": null, "documentation": "https://openobserve.ai/docs/",
"website": "https://openobserve.ai/", "website": "https://openobserve.ai/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openobserve.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openobserve.webp",
"config_path": "/opt/openobserve/data/.env", "config_path": "/opt/openobserve/data/.env",

View File

@@ -32,5 +32,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "If you use VLANs (default LAN is set to VLAN 999), make sure the Proxmox Linux Bridge is configured as VLAN-aware, otherwise the VM may fail to start.",
"type": "info"
}
]
} }

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8000, "interface_port": 8000,
"documentation": null, "documentation": "https://docs.paperless-ngx.com/",
"website": "https://docs.paperless-ngx.com/", "website": "https://docs.paperless-ngx.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ngx.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/paperless-ngx.webp",
"config_path": "/opt/paperless/paperless.conf", "config_path": "/opt/paperless/paperless.conf",
@@ -21,19 +21,19 @@
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 10, "hdd": 12,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": "admin",
"password": null "password": null
}, },
"notes": [ "notes": [
{ {
"text": "Show Login Credentials, type `update` in the LXC console", "text": "Show Login Credentials, type `cat ~/paperless.creds` in the LXC console",
"type": "info" "type": "info"
}, },
{ {

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 9090, "interface_port": 9090,
"documentation": null, "documentation": "https://prometheus.io/docs/introduction/overview/",
"website": "https://prometheus.io/", "website": "https://prometheus.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prometheus.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prometheus.webp",
"config_path": "/etc/prometheus/prometheus.yml", "config_path": "/etc/prometheus/prometheus.yml",

View File

@@ -39,6 +39,10 @@
{ {
"text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard", "text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
"type": "Info" "type": "Info"
},
{
"text": "Configure authentication in the Web UI => Settings => Security",
"type": "Info"
} }
] ]
} }

View File

@@ -28,8 +28,8 @@
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": "proxmox",
"password": null "password": "proxmox"
}, },
"notes": [] "notes": []
} }

View File

@@ -11,8 +11,8 @@
"interface_port": 3000, "interface_port": 3000,
"documentation": "https://docs.rxresume.org/", "documentation": "https://docs.rxresume.org/",
"website": "https://rxresume.org", "website": "https://rxresume.org",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/reactive-resume-light.png", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/reactive-resume.webp",
"config_path": "/opt/reactive-resume/.env", "config_path": "/opt/reactive-resume/.env",
"description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.", "description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.",
"install_methods": [ "install_methods": [
{ {
@@ -33,4 +33,3 @@
}, },
"notes": [] "notes": []
} }

View File

@@ -11,8 +11,8 @@
"interface_port": 5030, "interface_port": 5030,
"documentation": "https://github.com/slskd/slskd/tree/master/docs", "documentation": "https://github.com/slskd/slskd/tree/master/docs",
"website": "https://github.com/slskd/slskd", "website": "https://github.com/slskd/slskd",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/slskd.webp",
"config_path": "/opt/slskd/config/slskd.yml", "config_path": "/opt/slskd/config/slskd.yml",
"description": "A modern client-server application for the Soulseek file sharing network. ", "description": "A modern client-server application for the Soulseek file sharing network. ",
"install_methods": [ "install_methods": [
{ {
@@ -42,4 +42,3 @@
} }
] ]
} }

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 7912, "interface_port": 7912,
"documentation": null, "documentation": "https://github.com/Donkie/Spoolman/wiki/Installation",
"website": "https://github.com/Donkie/Spoolman", "website": "https://github.com/Donkie/Spoolman",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp",
"config_path": "/opt/spoolman/.env", "config_path": "/opt/spoolman/.env",

View File

@@ -0,0 +1,52 @@
{
"name": "Swizzin",
"slug": "swizzin",
"categories": [
15
],
"date_created": "2025-08-19",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://swizzin.ltd/getting-started",
"config_path": "/etc/swizzin/",
"website": "https://swizzin.ltd/",
"logo": "https://swizzin.ltd/img/logo-sm.png",
"description": "Swizzin is a light-weight, modular, and user-friendly seedbox solution for Debian-based servers. It allows for the easy installation and management of a wide variety of applications commonly used for torrenting and media management, such as rTorrent, Sonarr, Radarr, and Plex, all accessible through a command-line utility or a web-based dashboard.",
"install_methods": [
{
"type": "default",
"script": "ct/swizzin.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 20,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Installation might take a long time if choosing to install many apps. Be patient.",
"type": "info"
},
{
"text": "Swizzin is a management suite, not a single application. Use the 'box' command inside the container to install/manage individual apps like rTorrent, Sonarr, etc. A full list can be found in documentation.",
"type": "info"
},
{
"text": "It is very recommended to install at least the 'panel' for web access, and 'nginx' for easy access to other apps.",
"type": "warning"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
}
]
}

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8265, "interface_port": 8265,
"documentation": null, "documentation": null,

View File

@@ -31,10 +31,5 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [ "notes": []
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
}
]
} }

View File

@@ -6,10 +6,10 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8082, "interface_port": 8082,
"documentation": null, "documentation": "https://www.traccar.org/documentation/",
"website": "https://www.traccar.org/", "website": "https://www.traccar.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traccar.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traccar.webp",
"config_path": "/opt/traccar/conf/traccar.xml", "config_path": "/opt/traccar/conf/traccar.xml",

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 8080,
"documentation": null, "documentation": "https://doc.traefik.io/",
"website": "https://traefik.io/", "website": "https://traefik.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp",
"config_path": "/etc/traefik/traefik.yaml", "config_path": "/etc/traefik/traefik.yaml",

View File

@@ -0,0 +1,44 @@
{
"name": "twingate-connector",
"slug": "twingate-connector",
"categories": [
4
],
"date_created": "2025-08-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://www.twingate.com/docs/",
"config_path": "/etc/twingate/connector.conf",
"website": "https://www.twingate.com",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/twingate.webp",
"description": "Twingate Connectors are lightweight software components that establish secure, least-privileged access between private network resources and authorized users without exposing the network to the internet. They act as outbound-only bridges between your protected resources and the Twingate infrastructure, ensuring zero-trust access without the need for a VPN.",
"install_methods": [
{
"type": "default",
"script": "ct/twingate-connector.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 3,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "You can get your Twingate access or refresh tokens from the Twingate Admin Console. `https://auth.twingate.com/signup-v2`",
"type": "info"
},
{
"text": "If you need to update your access or refresh tokens, they can be found in /etc/twingate/connector.conf",
"type": "info"
}
]
}

View File

@@ -1,40 +1,40 @@
{ {
"name": "Umami", "name": "Umami",
"slug": "umami", "slug": "umami",
"categories": [ "categories": [
9 9
], ],
"date_created": "2024-05-09", "date_created": "2024-05-09",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://umami.is/docs",
"website": "https://umami.is/", "website": "https://umami.is/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/umami.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/umami.webp",
"config_path": "/opt/umami/.env", "config_path": "/opt/umami/.env",
"description": "Umami makes it easy to collect, analyze, and understand your web data while maintaining visitor privacy and data ownership.", "description": "Umami makes it easy to collect, analyze, and understand your web data while maintaining visitor privacy and data ownership.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/umami.sh", "script": "ct/umami.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 12, "hdd": 12,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": "admin", "username": "admin",
"password": "umami" "password": "umami"
}, },
"notes": [ "notes": [
{ {
"text": "To view the database credentials : `cat umami.creds`", "text": "To view the database credentials : `cat umami.creds`",
"type": "info" "type": "info"
} }
] ]
} }

View File

@@ -1,35 +1,35 @@
{ {
"name": "Uptime Kuma", "name": "Uptime Kuma",
"slug": "uptimekuma", "slug": "uptimekuma",
"categories": [ "categories": [
9 9
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3001, "interface_port": 3001,
"documentation": null, "documentation": "https://github.com/louislam/uptime-kuma/wiki",
"website": "https://github.com/louislam/uptime-kuma#uptime-kuma", "website": "https://github.com/louislam/uptime-kuma#uptime-kuma",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp",
"config_path": "", "config_path": "",
"description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.", "description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/uptimekuma.sh", "script": "ct/uptimekuma.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

File diff suppressed because it is too large Load Diff

View File

@@ -12,7 +12,7 @@
"documentation": "https://github.com/wavelog/wavelog/wiki", "documentation": "https://github.com/wavelog/wavelog/wiki",
"website": "https://www.wavelog.org/", "website": "https://www.wavelog.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp",
"config_path": "", "config_path": "/opt/wavelog/application/config/config.php",
"description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.", "description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -1,35 +1,35 @@
{ {
"name": "Wiki.js", "name": "Wiki.js",
"slug": "wikijs", "slug": "wikijs",
"categories": [ "categories": [
12 12
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://docs.requarks.io/",
"website": "https://js.wiki/", "website": "https://js.wiki/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp",
"config_path": "/opt/wikijs/config.yml", "config_path": "/opt/wikijs/config.yml",
"description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.", "description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/wikijs.sh", "script": "ct/wikijs.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 7, "hdd": 7,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -46,6 +46,10 @@
{ {
"text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`", "text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`",
"type": "info" "type": "info"
},
{
"text": "WGDashboard installation is optional.`",
"type": "info"
} }
] ]
} }

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://zipline.diced.sh/docs/get-started",
"website": "https://zipline.diced.sh/", "website": "https://zipline.diced.sh/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp",
"config_path": "/opt/zipline/.env", "config_path": "/opt/zipline/.env",

View File

@@ -1,35 +1,35 @@
{ {
"name": "Zoraxy", "name": "Zoraxy",
"slug": "zoraxy", "slug": "zoraxy",
"categories": [ "categories": [
4 4
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8000, "interface_port": 8000,
"documentation": null, "documentation": "https://github.com/tobychui/zoraxy/wiki",
"website": "https://zoraxy.aroz.org/", "website": "https://zoraxy.aroz.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp",
"config_path": "", "config_path": "",
"description": "Zoraxy is an all in one homelab network routing solution.", "description": "Zoraxy is an all in one homelab network routing solution.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/zoraxy.sh", "script": "ct/zoraxy.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 6, "hdd": 6,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -14,7 +14,9 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y redis $STD apt-get install -y \
redis \
sqlite3
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php

View File

@@ -20,7 +20,7 @@ $STD apt-get install -y \
libfontconfig1 libfontconfig1
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb" fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb"
msg_info "Configuring duplicati" msg_info "Configuring duplicati"
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)

View File

@@ -50,7 +50,7 @@ echo "ghost-user ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/ghost-user
mkdir -p /var/www/ghost mkdir -p /var/www/ghost
chown -R ghost-user:ghost-user /var/www/ghost chown -R ghost-user:ghost-user /var/www/ghost
chmod 775 /var/www/ghost chmod 775 /var/www/ghost
sudo -u ghost-user -H sh -c "cd /var/www/ghost && ghost install --db=mysql --dbhost=localhost --dbuser=$DB_USER --dbpass=$DB_PASS --dbname=ghost --url=http://localhost:2368 --no-prompt --no-setup-nginx --no-setup-ssl --no-setup-mysql --enable --start --ip 0.0.0.0" $STD sudo -u ghost-user -H sh -c "cd /var/www/ghost && ghost install --db=mysql --dbhost=localhost --dbuser=$DB_USER --dbpass=$DB_PASS --dbname=ghost --url=http://localhost:2368 --no-prompt --no-setup-nginx --no-setup-ssl --no-setup-mysql --enable --start --ip 0.0.0.0"
rm /etc/sudoers.d/ghost-user rm /etc/sudoers.d/ghost-user
msg_ok "Creating Service" msg_ok "Creating Service"

View File

@@ -18,64 +18,13 @@ $STD apt-get install -y \
sqlite3 \ sqlite3 \
rclone \ rclone \
tzdata \ tzdata \
ca-certificates \ ca-certificates
build-essential \
git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_go fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
NODE_VERSION="22" setup_nodejs
msg_info "Setup ${APPLICATION} (Patience)" msg_info "Configuring ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
mv GoMFT-"${RELEASE}"/ /opt/gomft
cd /opt/gomft
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
cp /opt/gomft/components/file_metadata/search/file_metadata_search_content.templ{,.bak}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate
$STD go build -o gomft main.go
chmod +x /opt/gomft/gomft
JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=') JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=')
cat <<EOF >/opt/gomft/.env cat <<EOF >/opt/gomft/.env
SERVER_ADDRESS=:8080 SERVER_ADDRESS=:8080
DATA_DIR=/opt/gomft/data/gomft DATA_DIR=/opt/gomft/data/gomft
@@ -95,9 +44,7 @@ EMAIL_REQUIRE_AUTH=true
EMAIL_USERNAME=smtp_username EMAIL_USERNAME=smtp_username
EMAIL_PASSWORD=smtp_password EMAIL_PASSWORD=smtp_password
EOF EOF
msg_ok "Configured ${APPLICATION}"
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gomft.service cat <<EOF >/etc/systemd/system/gomft.service
@@ -108,8 +55,9 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User=root User=root
EnvironmentFile=/opt/gomft/.env
WorkingDirectory=/opt/gomft WorkingDirectory=/opt/gomft
ExecStart=/opt/gomft/./gomft ExecStart=/opt/gomft/gomft
Restart=always Restart=always
[Install] [Install]
@@ -122,7 +70,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -19,7 +19,7 @@ curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/d
mv ${APPLICATION} /opt/${APPLICATION} mv ${APPLICATION} /opt/${APPLICATION}
chmod +x /opt/${APPLICATION} chmod +x /opt/${APPLICATION}
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/master/conf/main.yml" curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/main/conf/main.yml"
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml
mkdir -p /etc/${APPLICATION} mkdir -p /etc/${APPLICATION}
USERNAME="admin" USERNAME="admin"

View File

@@ -115,7 +115,8 @@ NODE_VERSION="22" setup_nodejs
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
msg_info "Setting up Postgresql Database" msg_info "Setting up Postgresql Database"
VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" VCHORD_RELEASE="0.4.3"
# VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
curl -fsSL "https://github.com/tensorchord/VectorChord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb curl -fsSL "https://github.com/tensorchord/VectorChord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb
$STD apt install -y ./vchord.deb $STD apt install -y ./vchord.deb
rm vchord.deb rm vchord.deb
@@ -282,7 +283,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache} mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.137.3" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.138.1" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (more patience please)" msg_info "Installing ${APPLICATION} (more patience please)"
@@ -455,6 +456,8 @@ systemctl enable -q --now "$APPLICATION"-ml.service "$APPLICATION"-web.service
msg_ok "Created user, env file, scripts and services" msg_ok "Created user, env file, scripts and services"
sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
motd_ssh motd_ssh
customize customize

View File

@@ -25,7 +25,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
msg_ok "Configured PostgreSQL" msg_ok "Configured PostgreSQL"
fetch_and_deploy_gh_release "keycloak" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz" fetch_and_deploy_gh_release "keycloak_app" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/keycloak.service cat <<EOF >/etc/systemd/system/keycloak.service

View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: stout01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/BerriAI/litellm
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
PG_VERSION="17" setup_postgresql
PYTHON_VERSION="3.13" setup_uv
msg_info "Setting up PostgreSQL"
DB_NAME="litellm_db"
DB_USER="litellm"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | 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 "${APPLICATION} Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/litellm.creds
msg_ok "Set up PostgreSQL"
msg_info "Setting up Virtual Environment"
mkdir -p /opt/litellm
cd /opt/litellm
$STD uv venv /opt/litellm/.venv
$STD /opt/litellm/.venv/bin/python -m ensurepip --upgrade
$STD /opt/litellm/.venv/bin/python -m pip install --upgrade pip
$STD /opt/litellm/.venv/bin/python -m pip install litellm[proxy] prisma
msg_ok "Installed LiteLLM"
msg_info "Configuring LiteLLM"
mkdir -p /opt
cat <<EOF >/opt/litellm/litellm.yaml
general_settings:
master_key: sk-1234
database_url: postgresql://$DB_USER:$DB_PASS@127.0.0.1:5432/$DB_NAME
store_model_in_db: true
EOF
uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
msg_ok "Configured LiteLLM"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/litellm.service
[Unit]
Description=LiteLLM
[Service]
Type=simple
ExecStart=uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now litellm
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # Author: tteck (tteckster) | MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://docs.paperless-ngx.com/ # Source: https://docs.paperless-ngx.com/
@@ -29,22 +29,16 @@ $STD apt-get install -y \
automake \ automake \
libtool \ libtool \
pkg-config \ pkg-config \
git \
libtiff-dev \ libtiff-dev \
libpng-dev \ libpng-dev \
libleptonica-dev libleptonica-dev
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PYTHON_VERSION="3.13" setup_uv
msg_info "Setup Python3" fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
$STD apt-get install -y \ fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc"
python3 \ setup_gs
python3-pip \
python3-dev \
python3-setuptools \
python3-wheel
msg_ok "Setup Python3"
msg_info "Installing OCR Dependencies (Patience)" msg_info "Installing OCR Dependencies (Patience)"
$STD apt-get install -y \ $STD apt-get install -y \
@@ -57,50 +51,18 @@ $STD apt-get install -y \
zlib1g \ zlib1g \
tesseract-ocr \ tesseract-ocr \
tesseract-ocr-eng tesseract-ocr-eng
cd /tmp
curl -fsSL "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz" -o "ghostscript-10.04.0.tar.gz"
$STD tar -xzf ghostscript-10.04.0.tar.gz
cd ghostscript-10.04.0
$STD ./configure
$STD make
$STD sudo make install
msg_ok "Installed OCR Dependencies" msg_ok "Installed OCR Dependencies"
msg_info "Installing JBIG2" msg_info "Setup JBIG2"
$STD git clone https://github.com/ie13/jbig2enc /opt/jbig2enc
cd /opt/jbig2enc cd /opt/jbig2enc
$STD bash ./autogen.sh $STD bash ./autogen.sh
$STD bash ./configure $STD bash ./configure
$STD make $STD make
$STD make install $STD make install
cd /
rm -rf /opt/jbig2enc rm -rf /opt/jbig2enc
msg_ok "Installed JBIG2" msg_ok "Installed JBIG2"
msg_info "Installing Paperless-ngx (Patience)"
Paperlessngx=$(curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/latest" | grep "title>Release" | cut -d " " -f 5)
cd /opt
$STD curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/download/$Paperlessngx/paperless-ngx-$Paperlessngx.tar.xz" -o "paperless-ngx-$Paperlessngx.tar.xz"
$STD tar -xf "paperless-ngx-$Paperlessngx.tar.xz" -C /opt/
mv paperless-ngx paperless
rm "paperless-ngx-$Paperlessngx.tar.xz"
cd /opt/paperless
$STD pip install --upgrade pip
$STD pip install -r requirements.txt
curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
mkdir -p {consume,data,media,static}
sed -i -e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' /opt/paperless/paperless.conf
sed -i -e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless/consume|" /opt/paperless/paperless.conf
sed -i -e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/opt/paperless/data|" /opt/paperless/paperless.conf
sed -i -e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless/media|" /opt/paperless/paperless.conf
sed -i -e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" /opt/paperless/paperless.conf
echo "${Paperlessngx}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Installed Paperless-ngx"
msg_info "Installing Natural Language Toolkit (Patience)"
$STD python3 -m nltk.downloader -d /usr/share/nltk_data all
msg_ok "Installed Natural Language Toolkit"
msg_info "Setting up PostgreSQL database" msg_info "Setting up PostgreSQL database"
DB_NAME=paperlessdb DB_NAME=paperlessdb
DB_USER=paperless DB_USER=paperless
@@ -111,40 +73,44 @@ $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 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 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 -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
echo "" >>~/paperless.creds {
echo -e "Paperless-ngx Database User: \e[32m$DB_USER\e[0m" >>~/paperless.creds echo "Paperless-ngx-Credentials"
echo -e "Paperless-ngx Database Password: \e[32m$DB_PASS\e[0m" >>~/paperless.creds echo "Paperless-ngx Database Name: $DB_NAME"
echo -e "Paperless-ngx Database Name: \e[32m$DB_NAME\e[0m" >>~/paperless.creds echo "Paperless-ngx Database User: $DB_USER"
sed -i -e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBHOST=localhost|' /opt/paperless/paperless.conf echo "Paperless-ngx Database Password: $DB_PASS"
sed -i -e 's|#PAPERLESS_DBPORT=5432|PAPERLESS_DBPORT=5432|' /opt/paperless/paperless.conf echo "Paperless-ngx Secret Key: $SECRET_KEY\n"
sed -i -e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$DB_NAME|" /opt/paperless/paperless.conf echo "Paperless-ngx WebUI User: admin"
sed -i -e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$DB_USER|" /opt/paperless/paperless.conf echo "Paperless-ngx WebUI Password: $DB_PASS"
sed -i -e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$DB_PASS|" /opt/paperless/paperless.conf } >>~/paperless-ngx.creds
sed -i -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" /opt/paperless/paperless.conf msg_ok "Setup PostgreSQL database"
cd /opt/paperless/src
$STD python3 manage.py migrate
msg_ok "Set up PostgreSQL database"
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt msg_info "Setup Paperless-ngx"
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then cd /opt/paperless
msg_info "Installing Adminer" $STD uv sync --all-extras
$STD apt install -y adminer curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
$STD a2enconf adminer mkdir -p {consume,data,media,static}
systemctl reload apache2 sed -i \
IP=$(hostname -I | awk '{print $1}') -e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' \
echo "" >>~/paperless.creds -e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless/consume|" \
echo -e "Adminer Interface: \e[32m$IP/adminer/\e[0m" >>~/paperless.creds -e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/opt/paperless/data|" \
echo -e "Adminer System: \e[32mPostgreSQL\e[0m" >>~/paperless.creds -e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless/media|" \
echo -e "Adminer Server: \e[32mlocalhost:5432\e[0m" >>~/paperless.creds -e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" \
echo -e "Adminer Username: \e[32m$DB_USER\e[0m" >>~/paperless.creds -e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBHOST=localhost|' \
echo -e "Adminer Password: \e[32m$DB_PASS\e[0m" >>~/paperless.creds -e 's|#PAPERLESS_DBPORT=5432|PAPERLESS_DBPORT=5432|' \
echo -e "Adminer Database: \e[32m$DB_NAME\e[0m" >>~/paperless.creds -e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$DB_NAME|" \
msg_ok "Installed Adminer" -e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$DB_USER|" \
fi -e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$DB_PASS|" \
-e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" \
/opt/paperless/paperless.conf
cd /opt/paperless/src
set -a
. /opt/paperless/paperless.conf
set +a
$STD uv run -- python manage.py migrate
msg_ok "Setup Paperless-ngx"
msg_info "Setting up admin Paperless-ngx User & Password" msg_info "Setting up admin Paperless-ngx User & Password"
## From https://github.com/linuxserver/docker-paperless-ngx/blob/main/root/etc/cont-init.d/99-migrations cat <<EOF | uv run -- python /opt/paperless/src/manage.py shell
cat <<EOF | python3 /opt/paperless/src/manage.py shell
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
UserModel = get_user_model() UserModel = get_user_model()
user = UserModel.objects.create_user('admin', password='$DB_PASS') user = UserModel.objects.create_user('admin', password='$DB_PASS')
@@ -152,12 +118,17 @@ user.is_superuser = True
user.is_staff = True user.is_staff = True
user.save() user.save()
EOF EOF
echo "" >>~/paperless.creds
echo -e "Paperless-ngx WebUI User: \e[32madmin\e[0m" >>~/paperless.creds
echo -e "Paperless-ngx WebUI Password: \e[32m$DB_PASS\e[0m" >>~/paperless.creds
echo "" >>~/paperless.creds
msg_ok "Set up admin Paperless-ngx User & Password" msg_ok "Set up admin Paperless-ngx User & Password"
msg_info "Installing Natural Language Toolkit (Patience)"
cd /opt/paperless
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data snowball_data
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data stopwords
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt_tab || \
$STD uv run python -m nltk.downloader -d /usr/share/nltk_data punkt
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
msg_ok "Installed Natural Language Toolkit"
msg_info "Creating Services" msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/paperless-scheduler.service cat <<EOF >/etc/systemd/system/paperless-scheduler.service
[Unit] [Unit]
@@ -166,7 +137,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStart=celery --app paperless beat --loglevel INFO ExecStart=uv run -- celery --app paperless beat --loglevel INFO
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -180,7 +151,7 @@ After=postgresql.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStart=celery --app paperless worker --loglevel INFO ExecStart=uv run -- celery --app paperless worker --loglevel INFO
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -194,7 +165,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStartPre=/bin/sleep 2 ExecStartPre=/bin/sleep 2
ExecStart=python3 manage.py document_consumer ExecStart=uv run -- python manage.py document_consumer
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -209,7 +180,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStart=granian --interface asginl --ws "paperless.asgi:application" ExecStart=uv run -- granian --interface asginl --ws "paperless.asgi:application"
Environment=GRANIAN_HOST=:: Environment=GRANIAN_HOST=::
Environment=GRANIAN_PORT=8000 Environment=GRANIAN_PORT=8000
Environment=GRANIAN_WORKERS=1 Environment=GRANIAN_WORKERS=1
@@ -217,13 +188,14 @@ Environment=GRANIAN_WORKERS=1
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now paperless-webserver paperless-scheduler paperless-task-queue paperless-consumer
sed -i -e 's/rights="none" pattern="PDF"/rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
systemctl daemon-reload
$STD systemctl enable -q --now paperless-webserver paperless-scheduler paperless-task-queue paperless-consumer
msg_ok "Created Services" msg_ok "Created Services"
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_adminer
fi
motd_ssh motd_ssh
customize customize

View File

@@ -14,13 +14,10 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y php-pear
apache2 \
libapache2-mod-php \
php8.2 php8.2-{fpm,curl,cli,mysql,gd,intl,imap,apcu,pspell,tidy,xmlrpc,mbstring,gmp,xml,ldap,common,snmp} \
php-pear
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,imap,apcu,pspell,tidy,xmlrpc,gmp,ldap,common,snmp" setup_php
setup_mariadb setup_mariadb
msg_info "Setting up MariaDB" msg_info "Setting up MariaDB"
@@ -38,11 +35,9 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/phpipam.creds } >>~/phpipam.creds
msg_ok "Set up MariaDB" msg_ok "Set up MariaDB"
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
msg_info "Installing phpIPAM" msg_info "Installing phpIPAM"
RELEASE=$(curl -fsSL https://api.github.com/repos/phpipam/phpipam/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt
curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o "phpipam-v${RELEASE}.zip"
$STD unzip "phpipam-v${RELEASE}.zip"
$STD mariadb -u root "${DB_NAME}" </opt/phpipam/db/SCHEMA.sql $STD mariadb -u root "${DB_NAME}" </opt/phpipam/db/SCHEMA.sql
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \ sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
@@ -51,7 +46,6 @@ sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
-e "s/\(\$db\['name'\] = \).*/\1'$DB_NAME';/" \ -e "s/\(\$db\['name'\] = \).*/\1'$DB_NAME';/" \
/opt/phpipam/config.php /opt/phpipam/config.php
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.2/apache2/php.ini sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.2/apache2/php.ini
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed phpIPAM" msg_ok "Installed phpIPAM"
msg_info "Creating Service" msg_info "Creating Service"
@@ -79,7 +73,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/phpipam-v${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -20,17 +20,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
JAVA_VERSION="21" setup_java
msg_info "Setting up Adoptium Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
$STD apt-get update
msg_ok "Set up Adoptium Repository"
msg_info "Installing Temurin JDK 21 (LTS)"
$STD apt-get install -y temurin-21-jdk
msg_ok "Setup Temurin JDK 21 (LTS)"
msg_info "Setting up MariaDB" msg_info "Setting up MariaDB"
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=') JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
@@ -48,13 +38,11 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/plant-it.creds } >>~/plant-it.creds
msg_ok "Set up MariaDB" msg_ok "Set up MariaDB"
msg_info "Setup Plant-it" USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "latest" "/opt/plant-it/backend" "server.jar"
RELEASE=$(curl -fsSL https://api.github.com/repos/MDeLuise/plant-it/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "latest" "/opt/plant-it/frontend" "client.tar.gz"
curl -fsSL "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar" -o "server.jar"
mkdir -p /opt/plant-it/{backend,frontend}
mkdir -p /opt/plant-it-data
mv -f server.jar /opt/plant-it/backend/server.jar
msg_info "Configured Plant-it"
mkdir -p /opt/plant-it-data
cat <<EOF >/opt/plant-it/backend/server.env cat <<EOF >/opt/plant-it/backend/server.env
MYSQL_HOST=localhost MYSQL_HOST=localhost
MYSQL_PORT=3306 MYSQL_PORT=3306
@@ -78,12 +66,7 @@ CACHE_TTL=86400
CACHE_HOST=localhost CACHE_HOST=localhost
CACHE_PORT=6379 CACHE_PORT=6379
EOF EOF
msg_ok "Configured Plant-it"
cd /opt/plant-it/frontend
curl -fsSL "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz" -o "client.tar.gz"
tar -xzf client.tar.gz
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup Plant-it"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/plant-it.service cat <<EOF >/etc/systemd/system/plant-it.service
@@ -136,7 +119,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/plant-it/frontend/client.tar.gz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,19 +13,17 @@ setting_up_container
network_check network_check
update_os update_os
fetch_and_deploy_gh_release "prometheus" "prometheus/prometheus" "prebuild" "latest" "/usr/local/bin" "*linux-amd64.tar.gz"
msg_info "Installing Prometheus" msg_info "Installing Prometheus"
RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
mkdir -p /etc/prometheus mkdir -p /etc/prometheus
mkdir -p /var/lib/prometheus mkdir -p /var/lib/prometheus
curl -fsSL "https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz" -o "prometheus-${RELEASE}.linux-amd64.tar.gz" mv /usr/local/bin/prometheus.yml /etc/prometheus/prometheus.yml
tar -xf prometheus-${RELEASE}.linux-amd64.tar.gz
mv prometheus-${RELEASE}.linux-amd64/prometheus prometheus-${RELEASE}.linux-amd64/promtool /usr/local/bin/
mv prometheus-${RELEASE}.linux-amd64/prometheus.yml /etc/prometheus/prometheus.yml
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Prometheus" msg_ok "Installed Prometheus"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/prometheus.service cat <<'EOF' >/etc/systemd/system/prometheus.service
[Unit] [Unit]
Description=Prometheus Description=Prometheus
Wants=network-online.target Wants=network-online.target
@@ -53,5 +51,4 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
rm -rf prometheus-${RELEASE}.linux-amd64 prometheus-${RELEASE}.linux-amd64.tar.gz
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,17 +13,14 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Prometheus Paperless NGX Exporter" fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary"
RELEASE=$(curl -fsSL https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz" -o "prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz" msg_info "Configuring Prometheus Paperless NGX Exporter"
tar -xf prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
mv prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/
mkdir -p /etc/prometheus-paperless-ngx-exporter mkdir -p /etc/prometheus-paperless-ngx-exporter
cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
SECRET_AUTH_TOKEN SECRET_AUTH_TOKEN
EOF EOF
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Configured Prometheus Paperless NGX Exporter"
msg_ok "Installed Prometheus Paperless NGX Exporter"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/prometheus-paperless-ngx-exporter.service cat <<EOF >/etc/systemd/system/prometheus-paperless-ngx-exporter.service
@@ -53,5 +50,4 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
rm -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/ prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -19,6 +19,8 @@ cat <<EOF >>/etc/apt/sources.list
deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription
EOF EOF
$STD apt-get update $STD apt-get update
export DEBIAN_FRONTEND=noninteractive
export IFUPDOWN2_NO_IFRELOAD=1
$STD apt-get install -y proxmox-backup-server $STD apt-get install -y proxmox-backup-server
msg_ok "Installed Proxmox Backup Server" msg_ok "Installed Proxmox Backup Server"

View File

@@ -20,19 +20,12 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="playactor" setup_nodejs NODE_VERSION="22" NODE_MODULE="playactor" setup_nodejs
fetch_and_deploy_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt" "tarball"
msg_info "Installing PS5-MQTT" msg_info "Configuring PS5-MQTT"
RELEASE=$(curl -fsSL https://api.github.com/repos/FunkeyFlo/ps5-mqtt/releases/latest | jq -r '.tag_name')
curl -fsSL https://github.com/FunkeyFlo/ps5-mqtt/archive/refs/tags/${RELEASE}.tar.gz -o /tmp/${RELEASE}.tar.gz
tar zxf /tmp/${RELEASE}.tar.gz -C /opt
mv /opt/ps5-mqtt-* /opt/ps5-mqtt
cd /opt/ps5-mqtt/ps5-mqtt/ cd /opt/ps5-mqtt/ps5-mqtt/
$STD npm install $STD npm install
$STD npm run build $STD npm run build
echo ${RELEASE} >/opt/ps5-mqtt_version.txt
msg_ok "Installed PS5-MQTT"
msg_info "Creating Service"
mkdir -p /opt/.config/ps5-mqtt/ mkdir -p /opt/.config/ps5-mqtt/
mkdir -p /opt/.config/ps5-mqtt/playactor mkdir -p /opt/.config/ps5-mqtt/playactor
cat <<EOF >/opt/.config/ps5-mqtt/config.json cat <<EOF >/opt/.config/ps5-mqtt/config.json
@@ -64,6 +57,9 @@ cat <<EOF >/opt/.config/ps5-mqtt/config.json
"frontendPort": "8645" "frontendPort": "8645"
} }
EOF EOF
msg_ok "Configured PS5-MQTT"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ps5-mqtt.service cat <<EOF >/etc/systemd/system/ps5-mqtt.service
[Unit] [Unit]
Description=PS5-MQTT Daemon Description=PS5-MQTT Daemon
@@ -92,5 +88,4 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
rm /tmp/${RELEASE}.tar.gz
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -34,7 +34,7 @@ chown -R pulse:pulse /etc/pulse /opt/pulse
msg_ok "Installed Pulse" msg_ok "Installed Pulse"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pulse.service cat <<EOF >/etc/systemd/system/pulse-backend.service
[Unit] [Unit]
Description=Pulse Monitoring Server Description=Pulse Monitoring Server
After=network.target After=network.target
@@ -44,7 +44,7 @@ Type=simple
User=pulse User=pulse
Group=pulse Group=pulse
WorkingDirectory=/opt/pulse WorkingDirectory=/opt/pulse
ExecStart=/opt/pulse/pulse ExecStart=/opt/pulse/bin/pulse
Restart=always Restart=always
RestartSec=3 RestartSec=3
StandardOutput=journal StandardOutput=journal
@@ -55,7 +55,7 @@ Environment="PULSE_DATA_DIR=/etc/pulse"
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now pulse systemctl enable -q --now pulse-backend
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -13,14 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
fetch_and_deploy_gh_release "qbittorrent" "userdocs/qbittorrent-nox-static" "singlefile" "latest" "/opt/qbittorrent" "x86_64-qbittorrent-nox"
msg_info "Setup qBittorrent-nox" msg_info "Setup qBittorrent-nox"
FULLRELEASE=$(curl -fsSL https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') mv /opt/qbittorrent/x86_64-qbittorrent-nox /opt/qbittorrent/qbittorrent-nox
RELEASE=$(echo $FULLRELEASE | cut -c 9-13) mkdir -p ~/.config/qBittorrent/
mkdir -p /opt/qbittorrent cat <<EOF >~/.config/qBittorrent/qBittorrent.conf
curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox
chmod +x /opt/qbittorrent/qbittorrent-nox
mkdir -p $HOME/.config/qBittorrent/
cat <<EOF >$HOME/.config/qBittorrent/qBittorrent.conf
[LegalNotice] [LegalNotice]
Accepted=true Accepted=true
@@ -30,7 +28,6 @@ WebUI\Port=8090
WebUI\UseUPnP=false WebUI\UseUPnP=false
WebUI\Username=admin WebUI\Username=admin
EOF EOF
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup qBittorrent-nox" msg_ok "Setup qBittorrent-nox"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -17,12 +17,9 @@ msg_info "Installing Dependencies"
$STD apt-get install -y apache2-utils fuse3 $STD apt-get install -y apache2-utils fuse3
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "rclone" "rclone/rclone" "prebuild" "latest" "/opt/rclone" "rclone*linux-amd64.zip"
msg_info "Installing rclone" msg_info "Installing rclone"
temp_file=$(mktemp)
mkdir -p /opt/rclone
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
$STD unzip -j "$temp_file" '*/**' -d /opt/rclone
cd /opt/rclone cd /opt/rclone
RCLONE_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) RCLONE_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD" $STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
@@ -31,7 +28,6 @@ $STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD"
echo "rclone User Name: admin" echo "rclone User Name: admin"
echo "rclone Password: $RCLONE_PASSWORD" echo "rclone Password: $RCLONE_PASSWORD"
} >>~/rclone.creds } >>~/rclone.creds
echo "${RELEASE}" >/opt/rclone_version.txt
msg_ok "Installed rclone" msg_ok "Installed rclone"
msg_info "Creating Service" msg_info "Creating Service"
@@ -57,7 +53,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -16,19 +16,17 @@ update_os
msg_info "Installing ASP.NET Core Runtime" msg_info "Installing ASP.NET Core Runtime"
curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o packages-microsoft-prod.deb curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o packages-microsoft-prod.deb
$STD dpkg -i packages-microsoft-prod.deb $STD dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
$STD apt-get update $STD apt-get update
$STD apt-get install -y dotnet-sdk-9.0 $STD apt-get install -y dotnet-sdk-9.0
msg_ok "Installed ASP.NET Core Runtime" msg_ok "Installed ASP.NET Core Runtime"
msg_info "Installing rdtclient" fetch_and_deploy_gh_release "rdt-client" "rogerfar/rdt-client" "prebuild" "latest" "/opt/rdtc" "RealDebridClient.zip"
curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o RealDebridClient.zip
$STD unzip RealDebridClient.zip -d /opt/rdtc msg_info "Configuring rdtclient"
rm RealDebridClient.zip
cd /opt/rdtc cd /opt/rdtc
mkdir -p data/{db,downloads} mkdir -p data/{db,downloads}
sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json sed -i 's#/data/db/#/opt/rdtc&#g' /opt/rdtc/appsettings.json
msg_ok "Installed rdtclient" msg_ok "Configured rdtclient"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/rdtc.service cat <<EOF >/etc/systemd/system/rdtc.service
@@ -51,6 +49,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f ~/packages-microsoft-prod.deb
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -17,18 +17,17 @@ msg_info "Installing Dependencies"
$STD apt-get install -y git $STD apt-get install -y git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Recyclarr" fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
curl -fsSL "$(curl -fsSL https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4)")
tar -C /usr/local/bin -xJf recyclarr*.tar.xz msg_info "Configuring Recyclarr"
mkdir -p /root/.config/recyclarr mkdir -p /root/.config/recyclarr
recyclarr config create recyclarr config create
msg_ok "Installed Recyclarr" msg_ok "Configured Recyclarr"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf recyclarr*.tar.xz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,17 +14,12 @@ network_check
update_os update_os
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "revealjs" "hakimel/reveal.js" "tarball"
msg_info "Setup ${APPLICATION}" msg_info "Configuring ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/hakimel/reveal.js/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/hakimel/reveal.js/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
mv reveal.js-${RELEASE}/ /opt/revealjs
cd /opt/revealjs cd /opt/revealjs
$STD npm install $STD npm install
sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js sed -i '25s/localhost/0.0.0.0/g' /opt/revealjs/gulpfile.js
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup ${APPLICATION}" msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
@@ -50,7 +45,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,21 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setup RustDesk" fetch_and_deploy_gh_release "rustdesk-hbbr" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-hbbs" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-utils" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-utils*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-api" "lejianwen/rustdesk-api" "binary" "latest" "/opt/rustdesk" "rustdesk-api-server*amd64.deb"
RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk -F '"' '{print $4}') msg_info "Configuring RustDesk Server"
APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
TEMPDIR=$(mktemp -d)
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbr_${RELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-server-hbbr_${RELEASE}_amd64.deb"
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbs_${RELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-server-hbbs_${RELEASE}_amd64.deb"
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-utils_${RELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-server-utils_${RELEASE}_amd64.deb"
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/rustdesk-api-server_${APIRELEASE}_amd64.deb" \
-o "${TEMPDIR}/rustdesk-api-server_${APIRELEASE}_amd64.deb"
$STD dpkg -i "${TEMPDIR}"/*.deb
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
cd /var/lib/rustdesk-api cd /var/lib/rustdesk-api
$STD rustdesk-api reset-admin-pwd $ADMINPASS $STD rustdesk-api reset-admin-pwd $ADMINPASS
@@ -37,14 +28,12 @@ $STD rustdesk-api reset-admin-pwd $ADMINPASS
echo "Username: admin" echo "Username: admin"
echo "Password: $ADMINPASS" echo "Password: $ADMINPASS"
} >>~/rustdesk.creds } >>~/rustdesk.creds
echo "${RELEASE}" >/opt/rustdesk_version.txt msg_ok "Configured RustDesk Server"
msg_ok "Setup RustDesk"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf $TEMPDIR
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

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