Compare commits

...

173 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
3b905f29ef Update CHANGELOG.md (#2324)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 23:32:04 +01:00
Slaviša Arežina
f2512b032f fix message (#2323) 2025-02-12 23:31:00 +01:00
community-scripts-pr-app[bot]
29d3073539 Update CHANGELOG.md (#2320)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 22:53:31 +01:00
Slaviša Arežina
2a91a5d2e9 Fix: Kometa - Fix wrong web site address (#2318)
* fix web address

* fix another bad web address
2025-02-12 22:45:28 +01:00
CanbiZ
2492497417 add -y 2025-02-12 20:59:23 +01:00
community-scripts-pr-app[bot]
dc3a0eca69 Update .app files (#2315)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-12 20:09:40 +01:00
community-scripts-pr-app[bot]
d5714eb749 Update CHANGELOG.md (#2312)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 20:09:28 +01:00
community-scripts-pr-app[bot]
bd90b30300 Update .app files (#2314)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-12 20:08:56 +01:00
CanbiZ
5946079f47 Fix: var_tags instead of TAGS in some CT's (#2310)
* Fix some Tags in CTS

* fix some others

* Update suwayomiserver.sh
2025-02-12 20:08:44 +01:00
CanbiZ
72b546e945 Fix some jsons (debian instead Debian in OS) (#2311) 2025-02-12 20:08:26 +01:00
Slaviša Arežina
65f8495a12 New Script: Kometa (#2281)
* add kometa script

* scale up LXC a bit

* fixes

* Update kometa.json

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-02-12 20:07:32 +01:00
community-scripts-pr-app[bot]
ab64e7e013 Update .app files (#2313)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-12 20:06:42 +01:00
Slaviša Arežina
80053c1cc3 New Script: Excalidraw (#2285)
* add excalidraw script

* made suggested fixes

* more fixes

* some more fixes

* even more fixes

* fix debian

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-02-12 20:06:33 +01:00
Slaviša Arežina
067c962baf New Script: Graylog (#2270)
* add graylog script

* Update install/graylog-install.sh

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

* fixes

* Update ct/graylog.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* used wildcard to remove repo deb

* fixes v2

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
2025-02-12 20:05:42 +01:00
community-scripts-pr-app[bot]
e5c6953e98 Update CHANGELOG.md (#2309)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 20:02:23 +01:00
CanbiZ
03d8d095cc Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM (#2307)
* add note for debian12 vm

* add note for ubuntu 22.04 vm

* add note to ubuntu 24.04 vm

* add note to ubuntu 24.10 vm
2025-02-12 19:20:08 +01:00
Michel Roegl-Brunner
22f44d117a Update ubuntu2410-vm.sh: Fix typo in API call. (#2305) 2025-02-12 19:19:57 +01:00
CanbiZ
417d4089d7 Fix Myspeed Installtion (#2308) 2025-02-12 19:01:56 +01:00
community-scripts-pr-app[bot]
c892401218 Update CHANGELOG.md (#2303)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 18:28:47 +01:00
Davide Alberani
3483ea7025 fixes #2301: check for a file named pingvin_version, not a variable with the same name (#2302) 2025-02-12 18:20:00 +01:00
CanbiZ
9ec1b651cd Update sqlserver2022-install.sh 2025-02-12 17:10:20 +01:00
CanbiZ
f06b37f180 Update sqlserver2022-install.sh 2025-02-12 17:02:02 +01:00
CanbiZ
ca01015586 remove empty line 2025-02-12 16:42:54 +01:00
CanbiZ
362b5cd031 Update sqlserver2022.sh 2025-02-12 16:42:36 +01:00
community-scripts-pr-app[bot]
64e9eac80f Update CHANGELOG.md (#2299)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 16:12:53 +01:00
community-scripts-pr-app[bot]
e4c2485823 Update .app files (#2300)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-12 16:12:17 +01:00
Slaviša Arežina
a5f77f23e9 New Script: TasmoCompiler (#2235)
* add tasmocompiler script

* bunch of script fixes

* remove typo

* Update json/tasmocompiler.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update ct/tasmocompiler.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update json/tasmocompiler.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update ct/tasmocompiler.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

---------

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
2025-02-12 16:10:24 +01:00
community-scripts-pr-app[bot]
0f7ff181df Update CHANGELOG.md (#2298) 2025-02-12 14:30:38 +01:00
Tobias
1788551393 fix: frigate pin version (#2296) 2025-02-12 14:27:33 +01:00
community-scripts-pr-app[bot]
1c9d23713d Update CHANGELOG.md (#2295)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 13:56:31 +01:00
Michel Roegl-Brunner
3f779e14fa Fix changedetection: Correct Browser install (#2277) 2025-02-12 13:29:51 +01:00
CanbiZ
58eff8c4cb remove wrong msg 2025-02-12 13:29:20 +01:00
community-scripts-pr-app[bot]
6c495bcafc Update CHANGELOG.md (#2294) 2025-02-12 13:24:31 +01:00
Saif
6de6b1542c fix duplicate 'VM' in name opnsense-vm.json (#2293) 2025-02-12 13:20:55 +01:00
CanbiZ
62425bc514 add more deps 2025-02-12 11:35:23 +01:00
community-scripts-pr-app[bot]
8cf1c2969b Update CHANGELOG.md (#2287)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-12 11:27:27 +01:00
CanbiZ
5d56822d1b Frigate: Use Fixed Version 14 (#2288) 2025-02-12 11:26:54 +01:00
CanbiZ
c014bc200e Paperless-AI: add dependency "make" (#2289) 2025-02-12 11:26:41 +01:00
chpego
56de05a392 Fix: Typo OPNsense VM (#2291) 2025-02-12 11:05:08 +01:00
community-scripts-pr-app[bot]
76ca5181ae Update .app files (#2290) 2025-02-12 10:05:02 +01:00
Jakub Matraszek
8181518c24 New script: cross-seed (#2186) 2025-02-12 10:04:27 +01:00
Slaviša Arežina
ba636ed25d remove sudo (#2282) 2025-02-12 08:21:37 +01:00
Tobias
e797cba504 fix: fix default java version (#2286) 2025-02-12 08:20:35 +01:00
Michel Roegl-Brunner
ecc294953b Update script-test.yml (#2276) 2025-02-11 20:32:31 +01:00
community-scripts-pr-app[bot]
e9d8b30de0 Update CHANGELOG.md (#2275)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-11 20:09:16 +01:00
Michel Roegl-Brunner
4a42012906 New Script: Opnsense VM (#2097)
* New Script: Opnsense VM

* update json

* update json

* update opensens-vm.sh

* update opensens-vm.sh

* update opensens-vm.sh

* update opensens-vm.sh

* update opensens-vm.sh

* update opensens-vm.sh

* Update opnsense-vm.sh

* Update opnsense-vm.sh

* Update opnsense-vm.sh

* opnsense-vm.sh update

* Update date_created in new JSON files

* Update opnsens.sh

* Update vm/opnsense-vm.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update opnsense-vm.sh

* Update json/opnsense-vm.json

Co-authored-by: Emik <phoenix0919mik@gmail.com>

* updates

---------

Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Co-authored-by: Emik <phoenix0919mik@gmail.com>
2025-02-11 20:07:51 +01:00
community-scripts-pr-app[bot]
37016259e1 Update CHANGELOG.md (#2273) 2025-02-11 18:59:50 +01:00
Michel Roegl-Brunner
bf5fc97e1a Add Workflow to test Scripts (#2269) 2025-02-11 18:45:50 +01:00
community-scripts-pr-app[bot]
1c89ef3f12 Update CHANGELOG.md (#2267)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-11 14:43:35 +01:00
CanbiZ
b2d022edff Fix Photoprism: Add defaults.yml for CLI Tool (#2261) 2025-02-11 14:43:04 +01:00
Michel Roegl-Brunner
a5a143111c Update Checkmk version grepping (#2264)
Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-11 14:42:09 +01:00
bannert
9338fdeebf Update Komodo icon (#2263)
Old icon link was dead.
Replaced with selfh.st svg icon
2025-02-11 14:22:12 +01:00
CanbiZ
6a486d4d73 Update crafty-controller-install.sh 2025-02-11 14:08:59 +01:00
Michel Roegl-Brunner
e55db3cb75 Update pull_request_template.md (#2266) 2025-02-11 13:43:48 +01:00
CanbiZ
b39078af7e Update crafty-controller-install.sh 2025-02-11 13:20:12 +01:00
CanbiZ
8e8e631d22 Update filebrowser.sh 2025-02-11 12:47:33 +01:00
CanbiZ
a34da2459d Update filebrowser.sh 2025-02-11 12:46:45 +01:00
CanbiZ
81a64c2cff Update filebrowser.sh 2025-02-11 12:36:38 +01:00
CanbiZ
414a6617f8 Rename update_json_date.yml to update_json_date.yml.bak 2025-02-11 12:30:03 +01:00
community-scripts-pr-app[bot]
4af819f449 Update CHANGELOG.md (#2245)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-11 11:55:26 +01:00
community-scripts-pr-app[bot]
229016ca10 Update .app files (#2260)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-11 11:49:14 +01:00
CanbiZ
51f3f97967 Fix: Apache Guacamole Version Crawling - only latest Version (#2258) 2025-02-11 11:45:41 +01:00
Slaviša Arežina
c548c3bd88 New Script: Watcharr (#2243)
* add watcharr script

* fix author name
2025-02-11 11:45:25 +01:00
CanbiZ
0877e6a2f2 Update update_json_date.yml 2025-02-11 10:58:53 +01:00
community-scripts-pr-app[bot]
133aa1a1f2 Update .app files (#2256)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-11 10:57:21 +01:00
Slaviša Arežina
c32e71cae3 New Script: Suwayomi-Server (#2139)
* add suwayomi-server script

* fix header

* Update ct/suwayomiserver.sh

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

* Update ct/suwayomiserver.sh

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

* fixes

* more fixes

* fixes

* Update json/suwayomi-server.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
2025-02-11 10:55:27 +01:00
CanbiZ
a71bdb6f06 Update update_json_date.yml 2025-02-11 10:54:51 +01:00
CanbiZ
f6bc82e77a Update update_json_date.yml 2025-02-11 10:52:46 +01:00
CanbiZ
5736b6aa5c Update update-json.sh 2025-02-11 10:52:43 +01:00
CanbiZ
c30b080e44 Update update_json_date.yml 2025-02-11 10:49:37 +01:00
CanbiZ
61567a66b0 Update update_json_date.yml 2025-02-11 10:49:19 +01:00
CanbiZ
e23137eb63 Update update-json.sh 2025-02-11 10:48:58 +01:00
CanbiZ
8acf81b937 Update update_json_date.yml 2025-02-11 10:46:57 +01:00
CanbiZ
f1683ad39f Update update_json_date.yml 2025-02-11 10:43:57 +01:00
CanbiZ
33ee969d91 Create update-json.sh 2025-02-11 10:42:47 +01:00
CanbiZ
f03471133e Update update_json_date.yml 2025-02-11 10:40:06 +01:00
CanbiZ
cdbabcac89 Update update_json_date.yml 2025-02-11 10:37:55 +01:00
CanbiZ
0122e70b1d Update update_json_date.yml 2025-02-11 10:35:53 +01:00
CanbiZ
a4037c151e Update update_json_date.yml 2025-02-11 10:34:00 +01:00
CanbiZ
5d58d6d14f Update update_json_date.yml 2025-02-11 10:33:05 +01:00
CanbiZ
8a1446ac4e Update update_json_date.yml 2025-02-11 10:31:02 +01:00
CanbiZ
1ce3929d66 Update update_json_date.yml 2025-02-11 10:30:20 +01:00
CanbiZ
dd62089b61 Update update_json_date.yml 2025-02-11 10:27:06 +01:00
CanbiZ
8cda7e4dd8 Update update_json_date.yml 2025-02-11 10:24:21 +01:00
CanbiZ
bc3abdfe91 Update update_json_date.yml 2025-02-11 10:10:06 +01:00
CanbiZ
e793dfff3a Update update_json_date.yml 2025-02-11 10:07:13 +01:00
CanbiZ
12ec0b46bc Update update_json_date.yml 2025-02-11 10:04:37 +01:00
CanbiZ
55fa65e168 Update update_json_date.yml 2025-02-11 10:02:05 +01:00
CanbiZ
6de6216bc6 Update update_json_date.yml 2025-02-11 10:00:30 +01:00
CanbiZ
1bca424acf Update update_json_date.yml 2025-02-11 09:59:09 +01:00
CanbiZ
a51e688388 Update update_json_date.yml 2025-02-11 09:46:06 +01:00
CanbiZ
c40fc2b159 Update update_json_date.yml 2025-02-11 09:44:17 +01:00
CanbiZ
d859646dac Update update_json_date.yml 2025-02-11 09:43:21 +01:00
CanbiZ
a0e0f28c66 Update and rename update_json_date.yml.bak to update_json_date.yml 2025-02-11 09:41:38 +01:00
community-scripts-pr-app[bot]
8595675531 Update CHANGELOG.md (#2242)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-11 00:13:36 +01:00
community-scripts-pr-app[bot]
70435b9e5a Update CHANGELOG.md (#2240)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 23:59:59 +01:00
community-scripts-pr-app[bot]
1731f5274b Update .app files (#2241)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-10 23:59:47 +01:00
Andy Grunwald
6a775f6026 New Script: Prometheus Paperless-NGX Exporter (#2153)
* New Script: Prometheus Paperless NGX Exporter

* Temp: Change import URLs to test fork

* Prometheus Paperless NGX Exporter: Fix double `=`  in systemd unit file

* Revert "Temp: Change import URLs to test fork"

This reverts commit f78d295c02.

* Fix script in `install_methods`
2025-02-10 23:57:29 +01:00
community-scripts-pr-app[bot]
0b3e63bd3f Update CHANGELOG.md (#2238)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 23:48:48 +01:00
community-scripts-pr-app[bot]
514ff1fbe7 Update .app files (#2239)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-10 23:47:13 +01:00
Thorsten
85bf9f319b New Script: Proxmox Mail Gateway (#1906)
* Proxmox Mail Gateway LXC

* improvements

* renamed to long name and added install check

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.json

* Update proxmox-mail-gateway-install.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway-install.sh

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-02-10 23:43:44 +01:00
community-scripts-pr-app[bot]
dff4e735f0 Update CHANGELOG.md (#2234)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 20:01:15 +01:00
CanbiZ
b81b9c574b Feature: Automatic Deletion of choosen LXC's (lxc-delete.sh) (#2228)
* Feature: Automatic Deletion of choosen LXC's (lxc-delete.sh)

* fix appname

* fix header
2025-02-10 19:59:23 +01:00
CanbiZ
f82eb87476 Quickfix: Crafty-Controller remove unnecessary \ (#2233) 2025-02-10 19:59:00 +01:00
community-scripts-pr-app[bot]
d47bd677da Update CHANGELOG.md (#2227)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 18:18:45 +01:00
community-scripts-pr-app[bot]
2c32b7fa94 Update .app files (#2230)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-10 18:17:31 +01:00
bvdberg01
4d996c95e0 New Script: FreshRSS (#2226) 2025-02-10 17:39:14 +01:00
Tobias
90473b7b10 Fix: Crafty-Controller java versions and set default (#2199) 2025-02-10 17:38:18 +01:00
CanbiZ
e4f756ce73 Update filebrowser.sh 2025-02-10 17:01:45 +01:00
CanbiZ
10159e934f Update filebrowser.sh 2025-02-10 16:50:39 +01:00
CanbiZ
865e6fd3d7 Feature: Add optional Port for Filebrowser (#2224) 2025-02-10 16:40:51 +01:00
CanbiZ
a1dd57ded6 Update filebrowser.sh 2025-02-10 15:46:10 +01:00
CanbiZ
1c808b95a8 Update filebrowser.sh 2025-02-10 15:45:15 +01:00
community-scripts-pr-app[bot]
0c024515f1 Update CHANGELOG.md (#2218)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 15:02:00 +01:00
CanbiZ
4c7d82f4eb Website: Fix Zitadel Logo & Created-Date (#2217)
* Website: Fix Zitadel Logo & Created-Date

* Update autolabeler.yml

* Update autolabeler.yml
2025-02-10 14:58:06 +01:00
community-scripts-pr-app[bot]
e4ee00b403 Update CHANGELOG.md (#2216)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 14:50:46 +01:00
CanbiZ
d380fdd0ea Update autolabeler.yml 2025-02-10 14:50:04 +01:00
CanbiZ
9756ac639b Update changelog-pr.yml 2025-02-10 14:47:38 +01:00
CanbiZ
7105f67145 [gh]: Improve Workflows, Templates, Handling (#2214)
* Remove Game-Relevant in RequestScript

* Update pull_request_template.md

* Update pull_request_template.md

* Update changelog-pr.yml

* Update autolabeler.yml

* Update autolabeler.yml

* Update changelog-pr.yml

* Update changelog-pr.yml
2025-02-10 14:42:17 +01:00
community-scripts-pr-app[bot]
35547c4316 Update CHANGELOG.md (#2212)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 12:53:34 +01:00
CanbiZ
ccc71a7225 [Fix] Filebrowser - Add Static Path for DB (#2207) 2025-02-10 11:42:11 +01:00
CanbiZ
c5101d3358 Revert "Prevent double spinner (#2203)" (#2211)
This reverts commit 33ef8aadbe.
2025-02-10 11:29:59 +01:00
community-scripts-pr-app[bot]
5bbf197a8d Update CHANGELOG.md (#2208)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 11:20:55 +01:00
Michel Roegl-Brunner
70b5c62c9f Changes to workflow files (#2204)
Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-10 11:15:28 +01:00
Michel Roegl-Brunner
33ef8aadbe Prevent double spinner (#2203)
Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-10 11:14:24 +01:00
community-scripts-pr-app[bot]
e989bbba29 Update CHANGELOG.md (#2205)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 11:03:56 +01:00
Divaksh Jain
3f35900914 Fixed URL typo zerotier-one.json (#2206) 2025-02-10 10:38:02 +01:00
Emik
e5f738b567 Fix: "read -p" does not support color formatting (#2191)
* Fix: "read -p" does not support color formatting

* Fix: "read -p" does not support color formatting
2025-02-10 10:29:33 +01:00
community-scripts-pr-app[bot]
6fc357ecd0 Update CHANGELOG.md (#2201)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 10:21:49 +01:00
github-actions[bot]
758659a91e Update .app files (#2202)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-10 09:31:45 +01:00
Dave Yap
b05858c6e9 New Script: Zitadel (#2141)
* Create zitadel-install.sh

* Create zitadel.json

* Create zitadel.sh

* Update zitadel.sh

Edit reference back to upstream build.func

* Update zitadel.json

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

* Update zitadel.sh

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

* Update zitadel.sh

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

* Update zitadel.sh

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

* Update zitadel.sh

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

* Update zitadel.sh

* Update zitadel-install.sh

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

* Update zitadel-install.sh

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

* Update zitadel.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Use declared variables in config files

* Remove other architectures

* Update to fit changes requested

Include mc for install; removal of variable ARCH and put into direct links; correct the default resources required

* Update zitadel.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel-install.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel-install.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Made changes to fit suggestions

* Update zitadel-install.sh

correct version output

* Update zitadel-install.sh

* Update path for version.txt

* Set update part default to our project defaults

* Update zitadel.sh, Remove v befor ${RELEASE}

* Update zitadel-install.sh

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-02-10 09:29:38 +01:00
Michel Roegl-Brunner
a481e89cad [API] Add API to vms (#2021)
* add API to debian-vm.sh

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* debian-vm.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* updates

---------

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-10 09:13:09 +01:00
community-scripts-pr-app[bot]
b9094e306e Update CHANGELOG.md (#2200)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-10 09:12:19 +01:00
Michiel van der Wulp
31c8617258 evcc.json Clarify the config file location (#2193)
* Clarify the config file location

Clarify the config file location: evcc is set up to use a config file "evcc.yaml" in the "/etc" location. If you do not know this location, you won't get evcc to use it.

* Update json/evcc.json

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

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-02-10 09:04:07 +01:00
community-scripts-pr-app[bot]
f94d727af7 Update CHANGELOG.md (#2195)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-09 22:02:28 +01:00
CanbiZ
054829c4d5 Website: Set new Logo Paperless-AI (#2194)
set new logo after request
2025-02-09 22:01:25 +01:00
community-scripts-pr-app[bot]
d20c92bd4f Update CHANGELOG.md (#2181)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-09 11:10:32 +01:00
DonPablo1010
64b9fa090a New Script: pbs_microcode.sh (#2166) 2025-02-09 11:01:00 +01:00
CanbiZ
5abc84b776 Fix: Barcode Buddy Logo & Title (#2183) 2025-02-09 10:24:28 +01:00
Gene Hand
2b0666bcf8 Fix: Home Assistant - Keep the same hass_config volume (#2160) 2025-02-09 10:23:37 +01:00
Slaviša Arežina
2ef6ac2fe4 duplicate (#2175) 2025-02-09 01:46:42 +01:00
community-scripts-pr-app[bot]
4bb887a390 Update CHANGELOG.md (#2177)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-08 23:40:58 +01:00
thomashondema
8fd8ca2c50 Fixed typos in CONTRIBUTOR_GUIDE (#2174)
Co-authored-by: thomashondema <thomas.hondema@icepay.com>
2025-02-08 23:37:35 +01:00
Pascal Bourque
f69d5b5831 fix(actualbudget): Salvage the .migrate file when upgrading (#2173) 2025-02-08 23:36:02 +01:00
github-actions[bot]
fead4b76f8 Update .app files (#2170)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-08 22:46:44 +01:00
community-scripts-pr-app[bot]
800c1065b9 Update CHANGELOG.md (#2171) 2025-02-08 22:00:37 +01:00
bvdberg01
782e0a8535 New script: Barcode Buddy (#2167) 2025-02-08 21:59:42 +01:00
community-scripts-pr-app[bot]
5863d81571 Update CHANGELOG.md (#2164) 2025-02-08 14:49:23 +01:00
Bram Suurd
c15e34143f Update cosmos.json (#2162) 2025-02-08 14:33:17 +01:00
CanbiZ
57c3a42a6e add 10.000 Star to Changelog 2025-02-07 23:08:53 +01:00
community-scripts-pr-app[bot]
7c13a7bce0 Update CHANGELOG.md (#2152)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 23:07:53 +01:00
CanbiZ
9c23b55bc0 Fix: Trillium Update Function & Harmonize Installation (#2148)
* Fix Trillium Update Function

* Update trilium-install.sh
2025-02-07 22:43:14 +01:00
community-scripts-pr-app[bot]
5c0811c5ba Update CHANGELOG.md (#2149)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 21:52:41 +01:00
Slaviša Arežina
6bc92a0feb Fix: Zerotier-One fixed missing dependency (#2147) 2025-02-07 21:45:45 +01:00
community-scripts-pr-app[bot]
9f5f5f54a0 Update CHANGELOG.md (#2145) 2025-02-07 19:53:04 +01:00
Slaviša Arežina
047ef8e669 fix zerotier (#2144) 2025-02-07 19:52:09 +01:00
community-scripts-pr-app[bot]
be572755a9 Update CHANGELOG.md (#2138)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 16:03:21 +01:00
Michel Roegl-Brunner
393e1c6481 Update openwrt.sh (#2137) 2025-02-07 16:01:49 +01:00
CanbiZ
539696e84a Update README.md 2025-02-07 15:55:14 +01:00
CanbiZ
6ecfc10b8c Update README.md 2025-02-07 15:51:25 +01:00
CanbiZ
1c7bab33e6 [core]: Enhance LXC template handling and improve error recovery (#2128) 2025-02-07 15:42:40 +01:00
community-scripts-pr-app[bot]
b0cdb308bd Update CHANGELOG.md (#2136)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 15:32:42 +01:00
CanbiZ
9d61a37945 [gh]: Following the trend - add star-history in readme (#2135)
* [gh]: add star history in readme

* dark theme support
2025-02-07 15:29:17 +01:00
community-scripts-pr-app[bot]
c4bd38cb9e Update CHANGELOG.md (#2133)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 15:28:03 +01:00
CanbiZ
2f37355d77 Fix: Cosmos logo doesnt display on website (#2132) 2025-02-07 15:20:17 +01:00
community-scripts-pr-app[bot]
59a132fd6b Update CHANGELOG.md (#2131)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 15:10:25 +01:00
github-actions[bot]
9c3bd7dc20 Update .app files (#2129)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-02-07 14:45:23 +01:00
CanbiZ
d73d312882 Fix: Increase Size for PeaNUT (#2127) 2025-02-07 14:44:52 +01:00
community-scripts-pr-app[bot]
3361fabfc4 Update CHANGELOG.md (#2130)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 14:34:32 +01:00
Michel Roegl-Brunner
030682c754 New Script: Cosmos (#2120)
* New Script: Cosmos

* update cosmos.json

* update cosmos.sh and cosmos.json

---------

Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-07 14:32:10 +01:00
CanbiZ
3029e69767 New Script: SearXNG (#2123)
* New Script: SearXNG

* Update install/searxng-install.sh

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

* Update searxng.json

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-02-07 14:31:59 +01:00
community-scripts-pr-app[bot]
7dcc717017 Update CHANGELOG.md (#2122)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-07 10:56:39 +01:00
Michel Roegl-Brunner
9825506ab7 Fix JSON-Editor (#2121)
Co-authored-by: Rögl-Brunner Michel <Michel.Roegl-brunner@htl-braunau.int>
2025-02-07 10:54:08 +01:00
141 changed files with 5136 additions and 292 deletions

View File

@@ -171,7 +171,7 @@ if [[ ! -d /opt/snipe-it ]]; then
### 3.3 **Check version** ### 3.3 **Check version**
- Befoer updating, check if a new version exists. - Before updating, check if a new version exists.
- We use the `${APPLICATION}_version.txt` file created in `/opt` during the install to compare new versions against the currently installed version. - We use the `${APPLICATION}_version.txt` file created in `/opt` during the install to compare new versions against the currently installed version.
Example with a Github Release: Example with a Github Release:
@@ -241,7 +241,7 @@ Example:
### 3.7 **No update function** ### 3.7 **No update function**
- In case you can not provide a update function use the following code to provide user feedback. - In case you can not provide an update function use the following code to provide user feedback.
```bash ```bash
function update_script() { function update_script() {
@@ -252,7 +252,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Ther is currently no automatic update function for ${APP}." msg_error "There is currently no automatic update function for ${APP}."
exit exit
} }
``` ```
@@ -286,6 +286,6 @@ echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
- [ ] Metadata (author, license) is included at the top. - [ ] Metadata (author, license) is included at the top.
- [ ] Variables follow naming conventions. - [ ] Variables follow naming conventions.
- [ ] Update function exists. - [ ] Update function exists.
- [ ] Update functions checks if app is installed an for new version. - [ ] Update functions checks if app is installed and for new version.
- [ ] Update function up temporary files. - [ ] Update function cleans up temporary files.
- [ ] Script ends with a helpful message for the user to reach the application. - [ ] Script ends with a helpful message for the user to reach the application.

View File

@@ -46,8 +46,6 @@ function update_script() {
# Crawling the new version and checking whether an update is required # Crawling the new version and checking whether an update is required
RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND]) RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating $APP"
# Stopping Services # Stopping Services
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop [SERVICE_NAME] systemctl stop [SERVICE_NAME]

View File

@@ -80,7 +80,4 @@ msg_info "Cleaning up"
rm -f ${RELEASE}.zip rm -f ${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"
motd_ssh
customize

View File

@@ -12,7 +12,7 @@
"documentation": null, "documentation": null,
"website": "LINK TO WEBSITE", "website": "LINK TO WEBSITE",
"logo": "LINK TO LOGO", "logo": "LINK TO LOGO",
"description": "Deescription of the app", "description": "Description of the app",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",

View File

@@ -30,8 +30,6 @@ body:
required: true required: true
- label: "I have searched existing [discussions](https://github.com/community-scripts/ProxmoxVE/discussions?discussions_q=) and found no duplicate requests." - label: "I have searched existing [discussions](https://github.com/community-scripts/ProxmoxVE/discussions?discussions_q=) and found no duplicate requests."
required: true required: true
- label: "This is not a game-related request."
required: true
- type: markdown - type: markdown
attributes: attributes:
value: "Thanks for submitting your request! The team will review it and reach out if we need more information." value: "Thanks for submitting your request! The team will review it and reach out if we need more information."

View File

@@ -23,7 +23,7 @@
{ {
"fileStatus": "modified", "fileStatus": "modified",
"includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"], "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
"excludeGlobs": ["misc/build.func", "misc/install.func"] "excludeGlobs": ["misc/build.func", "misc/install.func", "misc/api.func"]
} }
], ],
"delete script": [ "delete script": [
@@ -51,13 +51,20 @@
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh"], "includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh"],
"excludeGlobs": ["misc/api.func"]
}
],
"api": [
{
"fileStatus": null,
"includeGlobs": ["api/**", "misc/api.func"],
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"high risk": [ "high risk": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": ["misc/build.func", "misc/install.func"], "includeGlobs": ["misc/build.func", "misc/install.func", "ct/create_lxc.sh"],
"excludeGlobs": [] "excludeGlobs": []
} }
] ]

View File

@@ -1,30 +1,34 @@
[ [
{ {
"title": "💥 Breaking Changes", "title": "💥 Breaking Changes",
"labels": ["breaking change"] "labels": ["breaking change"]
}, },
{ {
"title": "✨ New Scripts", "title": "✨ New Scripts",
"labels": ["new script"] "labels": ["new script"]
}, },
{ {
"title": "🚀 Updated Scripts", "title": "🚀 Updated Scripts",
"labels": ["update script"] "labels": ["update script"]
}, },
{ {
"title": "🌐 Website", "title": "🌐 Website",
"labels": ["website"] "labels": ["website"]
}, },
{ {
"title": "🐞 Bug Fixes", "title": "🐞 Bug Fixes",
"labels": ["bug fix"] "labels": ["bug fix"]
}, },
{ {
"title": "🧰 Maintenance", "title": "🧰 Maintenance",
"labels": ["maintenance"] "labels": ["maintenance"]
}, },
{ {
"title": "❔ Unlabelled", "title": "📡 API",
"labels": [] "labels": ["api"]
} },
{
"title": "❔ Unlabelled",
"labels": []
}
] ]

View File

@@ -1,28 +1,25 @@
## ✍️ Description ## ✍️ Description
<!-- Provide a clear and concise description of your changes. -->
## 🔗 Related PR / Discussion / Issue
Link: #
- - -
- Related Issue: #
- Related PR: #
- Related Discussion: #
- - -
## ✅ Prerequisites
The following steps must be completed for the pull request to be considered:
- [] Self-review performed (I have reviewed my code to ensure it follows established patterns and conventions.)
- [] Testing performed (I have thoroughly tested my changes and verified expected functionality.)
## 🛠️ Type of Change ## ✅ Prerequisites
Please check the relevant options: Before this PR can be reviewed, the following must be completed:
- [] Bug fix (non-breaking change that resolves an issue) - [] **Self-review performed** Code follows established patterns and conventions.
- [] New feature (non-breaking change that adds functionality) - [] **Testing performed** Changes have been thoroughly tested and verified.
- [] Breaking change (fix or feature that would cause existing functionality to change unexpectedly)
- [] New script (a fully functional and thoroughly tested script or set of scripts)
---
## 📋 Additional Information (optional)
Provide any extra context or screenshots about the feature or fix here.
## 🛠️ Type of Change
Select all that apply:
- [] 🐞 **Bug fix** Resolves an issue without breaking functionality.
- [] ✨ **New feature** Adds new, non-breaking functionality.
- [] 💥 **Breaking change** Alters existing functionality in a way that may require updates.
- [] 🆕 **New script** A fully functional and tested script or script set.
## 📋 Additional Information (optional)
<!-- Provide extra context, screenshots, or references if needed. -->

View File

@@ -17,6 +17,13 @@ jobs:
pull-requests: write pull-requests: write
steps: steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
# Step 1: Checkout repository # Step 1: Checkout repository
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v2
@@ -71,7 +78,7 @@ jobs:
--base main \ --base main \
--label "automated pr" --label "automated pr"
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ steps.generate-token.outputs.token }}
- name: Approve pull request - name: Approve pull request
if: env.changed == 'true' if: env.changed == 'true'

View File

@@ -30,15 +30,15 @@ jobs:
- name: Get latest dates in changelog - name: Get latest dates in changelog
run: | run: |
# Extract the latest and second latest dates from changelog # Extrahiere die neuesten zwei Daten aus dem Changelog
DATES=$(grep '^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' CHANGELOG.md | head -n 2 | awk '{print $2}') DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}')
LATEST_DATE=$(echo "$DATES" | sed -n '1p') LATEST_DATE=$(echo "$DATES" | sed -n '1p')
SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p') SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p')
TODAY=$(date -u +%Y-%m-%d) TODAY=$(date -u +%Y-%m-%d)
echo "TODAY=$TODAY" >> $GITHUB_ENV echo "TODAY=$TODAY" >> $GITHUB_ENV
if [ "$LATEST_DATE" == "$TODAY" ]; then if [[ "$LATEST_DATE" == "$TODAY" ]]; then
echo "LATEST_DATE=$SECOND_LATEST_DATE" >> $GITHUB_ENV echo "LATEST_DATE=$SECOND_LATEST_DATE" >> $GITHUB_ENV
else else
echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV
@@ -55,10 +55,10 @@ jobs:
const configPath = path.resolve(process.env.CONFIG_PATH); const configPath = path.resolve(process.env.CONFIG_PATH);
const fileContent = await fs.readFile(configPath, 'utf-8'); const fileContent = await fs.readFile(configPath, 'utf-8');
const changelogConfig = JSON.parse(fileContent); const changelogConfig = JSON.parse(fileContent);
const categorizedPRs = changelogConfig.map((obj) => ({ ...obj, notes: [] })); const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [] }));
const latestDateInChangelog = new Date(process.env.LATEST_DATE); const latestDateInChangelog = new Date(process.env.LATEST_DATE);
latestDateInChangelog.setUTCHours(23,59,59,999); latestDateInChangelog.setUTCHours(23, 59, 59, 999);
const { data: pulls } = await github.rest.pulls.list({ const { data: pulls } = await github.rest.pulls.list({
owner: context.repo.owner, owner: context.repo.owner,
@@ -70,18 +70,16 @@ jobs:
per_page: 100, per_page: 100,
}); });
pulls.filter((pr) => pulls.filter(pr =>
pr.merged_at && pr.merged_at &&
new Date(pr.merged_at) > latestDateInChangelog && new Date(pr.merged_at) > latestDateInChangelog &&
!pr.labels.some((label) => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase())) !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase()))
).forEach((pr) => { ).forEach(pr => {
const prLabels = pr.labels.map((label) => label.name.toLowerCase()); const prLabels = pr.labels.map(label => label.name.toLowerCase());
const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`; const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`;
for (const { labels, notes } of categorizedPRs) { for (const { labels, notes } of categorizedPRs) {
const prHasCategoryLabel = labels.some((label) => prLabels.includes(label)); if (labels.length === 0 || labels.some(label => prLabels.includes(label))) {
const isUnlabelledCategory = labels.length === 0;
if (prHasCategoryLabel || isUnlabelledCategory) {
notes.push(prNote); notes.push(prNote);
break; break;
} }
@@ -102,7 +100,7 @@ jobs:
const changelogPath = path.resolve('CHANGELOG.md'); const changelogPath = path.resolve('CHANGELOG.md');
const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }}; const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }};
let newReleaseNotes = `## ${today}\n\n### Changed\n\n`; let newReleaseNotes = `## ${today}\n\n### Changes\n\n`;
for (const { title, notes } of categorizedPRs) { for (const { title, notes } of categorizedPRs) {
if (notes.length > 0) { if (notes.length > 0) {
newReleaseNotes += `### ${title}\n\n${notes.join("\n")}\n\n`; newReleaseNotes += `### ${title}\n\n${notes.join("\n")}\n\n`;
@@ -112,21 +110,21 @@ jobs:
const changelogContent = await fs.readFile(changelogPath, 'utf-8'); const changelogContent = await fs.readFile(changelogPath, 'utf-8');
const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`); const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`);
// Replace todays release notes or insert release notes above previous release notes // Ersetze oder füge Release Notes ein
const regex = changelogIncludesTodaysReleaseNotes ? const regex = changelogIncludesTodaysReleaseNotes
new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs") : ? new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs")
new RegExp(`(?=## ${latestDateInChangelog})`, "gs"); : new RegExp(`(?=## ${latestDateInChangelog})`, "gs");
const newChangelogContent = changelogContent.replace(regex, newReleaseNotes) const newChangelogContent = changelogContent.replace(regex, newReleaseNotes);
await fs.writeFile(changelogPath, newChangelogContent); await fs.writeFile(changelogPath, newChangelogContent);
- name: Check if there are any changes - name: Check for changes
id: verify-diff id: verify-diff
run: | run: |
git diff --quiet . || echo "changed=true" >> $GITHUB_OUTPUT git diff --quiet . || echo "changed=true" >> $GITHUB_ENV
- name: Commit and push changes to separate branch - name: Commit and push changes
if: steps.verify-diff.outputs.changed == 'true' if: env.changed == 'true'
run: | run: |
git config --global user.name "github-actions[bot]" git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com" git config --global user.email "github-actions[bot]@users.noreply.github.com"
@@ -136,7 +134,7 @@ jobs:
git push origin $BRANCH_NAME --force git push origin $BRANCH_NAME --force
- name: Create pull request if not exists - name: Create pull request if not exists
if: steps.verify-diff.outputs.changed == 'true' if: env.changed == 'true'
env: env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }} GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: | run: |
@@ -150,7 +148,7 @@ jobs:
fi fi
- name: Approve pull request - name: Approve pull request
if: steps.verify-diff.outputs.changed == 'true' if: env.changed == 'true'
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@@ -158,9 +156,9 @@ jobs:
if [ -n "$PR_NUMBER" ]; then if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve gh pr review $PR_NUMBER --approve
fi fi
- name: Re-approve pull request after update - name: Re-approve pull request after update
if: steps.verify-diff.outputs.changed == 'true' if: env.changed == 'true'
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |

139
.github/workflows/script-test.yml vendored Normal file
View File

@@ -0,0 +1,139 @@
name: Run Scripts on PVE Node
on:
pull_request:
branches:
- main
paths:
- 'install/*.sh'
- 'ct/*.sh'
jobs:
run-install-script:
runs-on: pvenode
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
- name: Add Git safe directory
run: |
git config --global --add safe.directory /__w/ProxmoxVE/ProxmoxVE
- name: Set up GH_TOKEN
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV
- name: Get changed files in PR
id: changed-files
run: |
CHANGED_FILES=$(gh pr diff --name-only ${{ github.event.pull_request.number }})
CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ')
echo "Changed files: $CHANGED_FILES"
echo "SCRIPT=$CHANGED_FILES" >> $GITHUB_ENV
- name: Get scripts
id: check-install-script
run: |
ALL_FILES=()
ADDED_FILES=()
for FILE in ${{ env.SCRIPT }}; do
if [[ $FILE =~ ^install/.*-install\.sh$ ]] || [[ $FILE =~ ^ct/.*\.sh$ ]]; then
STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
if [[ ! " ${ADDED_FILES[@]} " =~ " $STRIPPED_NAME " ]]; then
ALL_FILES+=("$FILE")
ADDED_FILES+=("$STRIPPED_NAME") # Mark this base file as added (without the path)
fi
fi
done
ALL_FILES=$(echo "${ALL_FILES[@]}" | xargs)
echo "$ALL_FILES"
echo "ALL_FILES=$ALL_FILES" >> $GITHUB_ENV
- name: Run scripts
id: run-install
continue-on-error: true
run: |
set +e
#run for each files in /ct
for FILE in ${{ env.ALL_FILES }}; do
echo "Running: $FILE"
STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
if [[ $FILE =~ ^install/.*-install\.sh$ ]]; then
CT_SCRIPT="ct/$STRIPPED_NAME.sh"
if [[ ! -f $CT_SCRIPT ]]; then
echo "No CT script found for $STRIPPED_NAME"
exit 1
fi
echo "Found CT script for $STRIPPED_NAME"
chmod +x "$CT_SCRIPT"
RUNNING_FILE=$CT_SCRIPT
elif [[ $FILE =~ ^ct/.*\.sh$ ]]; then
INSTALL_SCRIPT="install/$STRIPPED_NAME-install.sh"
if [[ ! -f $INSTALL_SCRIPT ]]; then
echo "No install script found for $STRIPPED_NAME"
exit 1
fi
echo "Found install script for $STRIPPED_NAME"
chmod +x "$INSTALL_SCRIPT"
RUNNING_FILE=$FILE
fi
git checkout origin/main .github/workflows/scripts/app-test/pr-build.func
git checkout origin/main .github/workflows/scripts/app-test/pr-install.func
git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func
git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh
sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE"
chmod +x $RUNNING_FILE
chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh
chmod +x .github/workflows/scripts/app-test/pr-install.func
chmod +x .github/workflows/scripts/app-test/pr-alpine-install.func
chmod +x .github/workflows/scripts/app-test/pr-build.func
ERROR_MSG=$(./$RUNNING_FILE 2>&1 > /dev/null)
echo "Finished running $FILE"
if [ -n "$ERROR_MSG" ]; then
echo "ERROR in $STRIPPED_NAME: $ERROR_MSG"
echo "$ERROR_MSG" > result_$STRIPPED_NAME.log
fi
done
set -e # Restore exit-on-error
- name: Cleanup PVE Node
run: |
containers=$(pct list | tail -n +2 | awk '{print $0 " " $4}' | awk '{print $1}')
for container_id in $containers; do
status=$(pct status $container_id | awk '{print $2}')
if [[ $status == "running" ]]; then
pct stop $container_id
pct destroy $container_id
fi
done
- name: Post error comments
run: |
ERROR="false"
SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line"
for FILE in ${{ env.ALL_FILES }}; do
STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
if [[ ! -f result_$STRIPPED_NAME.log ]]; then
continue
fi
ERROR_MSG=$(cat result_$STRIPPED_NAME.log)
if [ -n "$ERROR_MSG" ]; then
CLEANED_ERROR_MSG=$(echo "$ERROR_MSG" | sed "s|$SEARCH_LINE.*||")
echo "Posting error message for $FILE"
echo ${CLEANED_ERROR_MSG}
gh pr comment ${{ github.event.pull_request.number }} \
--body ":warning: The script _**$FILE**_ failed with the following message: <br> <div><strong>${CLEANED_ERROR_MSG}</strong></div>"
ERROR="true"
fi
done
echo "ERROR=$ERROR" >> $GITHUB_ENV
- name: Fail if error
if: ${{ env.ERROR }} == 'true'
run: exit 1

View File

@@ -0,0 +1,88 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
color() {
return
}
catch_errors() {
set -Eeuo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
}
error_handler() {
local line_number="$1"
local command="$2"
SCRIPT_NAME=$(basename "$0")
local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command"
echo -e "\n$error_message"
exit 0
}
verb_ip6() {
STD=""
return
}
msg_info() {
local msg="$1"
echo -ne "${msg}\n"
}
msg_ok() {
local msg="$1"
echo -e "${msg}\n"
}
msg_error() {
local msg="$1"
echo -e "${msg}\n"
}
RETRY_NUM=10
RETRY_EVERY=3
i=$RETRY_NUM
setting_up_container() {
while [ $i -gt 0 ]; do
if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" != "" ]; then
break
fi
echo 1>&2 -en "No Network! "
sleep $RETRY_EVERY
i=$((i - 1))
done
if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" = "" ]; then
echo 1>&2 -e "\n No Network After $RETRY_NUM Tries"
echo -e "Check Network Settings"
exit 1
fi
msg_ok "Set up Container OS"
msg_ok "Network Connected: $(hostname -i)"
}
network_check() {
RESOLVEDIP=$(getent hosts github.com | awk '{ print $1 }')
if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure"; else msg_ok "DNS Resolved github.com to $RESOLVEDIP"; fi
set -e
}
update_os() {
msg_info "Updating Container OS"
apk update
apk upgrade
msg_ok "Updated Container OS"
}
motd_ssh() {
return
}
customize() {
return
}

View File

@@ -0,0 +1,259 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
variables() {
NSAPP=$(echo ${APP,,} | tr -d ' ')
var_install="${NSAPP}-install"
}
NEXTID=$(pvesh get /cluster/nextid)
timezone=$(cat /etc/timezone)
header_info(){
return
}
base_settings() {
CT_TYPE="1"
DISK_SIZE="4"
CORE_COUNT="1"
RAM_SIZE="1024"
VERBOSE="${1:-no}"
PW=""
CT_ID=$NEXTID
HN="Testing"
BRG="vmbr0"
NET="dhcp"
GATE=""
APT_CACHER=""
APT_CACHER_IP=""
DISABLEIP6="no"
MTU=""
SD=""
NS=""
MAC=""
VLAN=""
SSH="no"
SSH_AUTHORIZED_KEY=""
TAGS="community-script;"
CT_TYPE=${var_unprivileged:-$CT_TYPE}
DISK_SIZE=${var_disk:-$DISK_SIZE}
CORE_COUNT=${var_cpu:-$CORE_COUNT}
RAM_SIZE=${var_ram:-$RAM_SIZE}
VERB=${var_verbose:-$VERBOSE}
TAGS="${TAGS}${var_tags:-}"
if [ -z "$var_os" ]; then
var_os="debian"
fi
if [ -z "$var_version" ]; then
var_version="12"
fi
}
color() {
# Colors
YW=$(echo "\033[33m")
YWB=$(echo "\033[93m")
BL=$(echo "\033[36m")
RD=$(echo "\033[01;31m")
BGN=$(echo "\033[4;92m")
GN=$(echo "\033[1;92m")
DGN=$(echo "\033[32m")
# Formatting
CL=$(echo "\033[m")
UL=$(echo "\033[4m")
BOLD=$(echo "\033[1m")
BFR="\\r\\033[K"
HOLD=" "
TAB=" "
# Icons
CM="${TAB}✔️${TAB}${CL}"
CROSS="${TAB}✖️${TAB}${CL}"
INFO="${TAB}💡${TAB}${CL}"
OS="${TAB}🖥️${TAB}${CL}"
OSVERSION="${TAB}🌟${TAB}${CL}"
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
DISKSIZE="${TAB}💾${TAB}${CL}"
CPUCORE="${TAB}🧠${TAB}${CL}"
RAMSIZE="${TAB}🛠️${TAB}${CL}"
SEARCH="${TAB}🔍${TAB}${CL}"
VERIFYPW="${TAB}🔐${TAB}${CL}"
CONTAINERID="${TAB}🆔${TAB}${CL}"
HOSTNAME="${TAB}🏠${TAB}${CL}"
BRIDGE="${TAB}🌉${TAB}${CL}"
NETWORK="${TAB}📡${TAB}${CL}"
GATEWAY="${TAB}🌐${TAB}${CL}"
DISABLEIPV6="${TAB}🚫${TAB}${CL}"
DEFAULT="${TAB}⚙️${TAB}${CL}"
MACADDRESS="${TAB}🔗${TAB}${CL}"
VLANTAG="${TAB}🏷️${TAB}${CL}"
ROOTSSH="${TAB}🔑${TAB}${CL}"
CREATING="${TAB}🚀${TAB}${CL}"
ADVANCED="${TAB}🧩${TAB}${CL}"
}
catch_errors() {
set -Eeuo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
}
# This function handles errors
error_handler() {
local line_number="$1"
local command="$2"
SCRIPT_NAME=$(basename "$0")
local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command"
echo -e "\n$error_message"
exit "$error_message"
}
msg_info() {
local msg="$1"
echo -ne "${msg}\n"
}
msg_ok() {
local msg="$1"
echo -e "${msg}\n"
}
msg_error() {
local msg="$1"
echo -e "${msg}\n"
}
start(){
return
}
build_container() {
if [ "$CT_TYPE" == "1" ]; then
FEATURES="keyctl=1,nesting=1"
else
FEATURES="nesting=1"
fi
TEMP_DIR=$(mktemp -d)
pushd $TEMP_DIR >/dev/null
if [ "$var_os" == "alpine" ]; then
export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-alpine-install.func)"
else
export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-install.func)"
fi
export CACHER="$APT_CACHER"
export CACHER_IP="$APT_CACHER_IP"
export tz=""
export DISABLEIPV6="$DISABLEIP6"
export APPLICATION="$APP"
export app="$NSAPP"
export PASSWORD="$PW"
export VERBOSE="$VERB"
export SSH_ROOT="${SSH}"
export SSH_AUTHORIZED_KEY
export CTID="$CT_ID"
export CTTYPE="$CT_TYPE"
export PCT_OSTYPE="$var_os"
export PCT_OSVERSION="$var_version"
export PCT_DISK_SIZE="$DISK_SIZE"
export tz="$timezone"
export PCT_OPTIONS="
-features $FEATURES
-hostname $HN
-tags $TAGS
$SD
$NS
-net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU
-onboot 1
-cores $CORE_COUNT
-memory $RAM_SIZE
-unprivileged $CT_TYPE
$PW
"
echo "Container ID: $CTID"
# This executes create_lxc.sh and creates the container and .conf file
bash /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-create-lxc.sh
LXC_CONFIG=/etc/pve/lxc/${CTID}.conf
if [ "$CT_TYPE" == "0" ]; then
cat <<EOF >>$LXC_CONFIG
# USB passthrough
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/serial/by-id dev/serial/by-id none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM1 dev/ttyACM1 none bind,optional,create=file
EOF
fi
if [ "$CT_TYPE" == "0" ]; then
if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then
cat <<EOF >>$LXC_CONFIG
# VAAPI hardware transcoding
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
EOF
fi
else
if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then
if [[ -e "/dev/dri/renderD128" ]]; then
if [[ -e "/dev/dri/card0" ]]; then
cat <<EOF >>$LXC_CONFIG
# VAAPI hardware transcoding
dev0: /dev/dri/card0,gid=44
dev1: /dev/dri/renderD128,gid=104
EOF
else
cat <<EOF >>$LXC_CONFIG
# VAAPI hardware transcoding
dev0: /dev/dri/card1,gid=44
dev1: /dev/dri/renderD128,gid=104
EOF
fi
fi
fi
fi
# This starts the container and executes <app>-install.sh
msg_info "Starting LXC Container"
pct start "$CTID"
msg_ok "Started LXC Container"
if [[ ! -f "/root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh" ]]; then
msg_error "No install script found for $APP"
exit 1
fi
if [ "$var_os" == "alpine" ]; then
sleep 3
pct exec "$CTID" -- /bin/sh -c 'cat <<EOF >/etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/latest-stable/main
http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
EOF'
pct exec "$CTID" -- ash -c "apk add bash >/dev/null"
fi
lxc-attach -n "$CTID" -- bash -c "$(< /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)"
}
description(){
return
}

View File

@@ -0,0 +1,158 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
color() {
return
}
catch_errors() {
set -Eeuo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
}
error_handler() {
local exit_code="$?"
local line_number="$1"
local command="$2"
local error_message="Failure in line $line_number: exit code $exit_code: while executing command $command"
echo -e "\n$error_message"
exit 100
}
verb_ip6() {
return
}
msg_info() {
local msg="$1"
echo -ne "${msg}\n"
}
msg_ok() {
local msg="$1"
echo -e "${msg}\n"
}
msg_error() {
local msg="$1"
echo -e "${msg}\n"
}
VALIDCT=$(pvesm status -content rootdir | awk 'NR>1')
if [ -z "$VALIDCT" ]; then
msg_error "Unable to detect a valid Container Storage location."
exit 1
fi
VALIDTMP=$(pvesm status -content vztmpl | awk 'NR>1')
if [ -z "$VALIDTMP" ]; then
msg_error "Unable to detect a valid Template Storage location."
exit 1
fi
function select_storage() {
local CLASS=$1
local CONTENT
local CONTENT_LABEL
case $CLASS in
container)
CONTENT='rootdir'
CONTENT_LABEL='Container'
;;
template)
CONTENT='vztmpl'
CONTENT_LABEL='Container template'
;;
*) false || { msg_error "Invalid storage class."; exit 201; };;
esac
local -a MENU
while read -r line; do
local TAG=$(echo $line | awk '{print $1}')
local TYPE=$(echo $line | awk '{printf "%-10s", $2}')
local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
local ITEM="Type: $TYPE Free: $FREE "
local OFFSET=2
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
fi
MENU+=("$TAG" "$ITEM" "OFF")
done < <(pvesm status -content $CONTENT | awk 'NR>1')
if [ $((${#MENU[@]}/3)) -eq 1 ]; then
printf ${MENU[0]}
else
msg_error "STORAGE ISSUES!"
exit 202
fi
}
[[ "${CTID:-}" ]] || { msg_error "You need to set 'CTID' variable."; exit 203; }
[[ "${PCT_OSTYPE:-}" ]] || { msg_error "You need to set 'PCT_OSTYPE' variable."; exit 204; }
[ "$CTID" -ge "100" ] || { msg_error "ID cannot be less than 100."; exit 205; }
if pct status $CTID &>/dev/null; then
echo -e "ID '$CTID' is already in use."
unset CTID
msg_error "Cannot use ID that is already in use."
exit 206
fi
TEMPLATE_STORAGE=$(select_storage template) || exit
msg_ok "Using $TEMPLATE_STORAGE for Template Storage."
CONTAINER_STORAGE=$(select_storage container) || exit
msg_ok "Using $CONTAINER_STORAGE for Container Storage."
msg_info "Updating LXC Template List"
pveam update >/dev/null
msg_ok "Updated LXC Template List"
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; }
TEMPLATE="${TEMPLATES[-1]}"
TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
msg_info "Downloading LXC Template"
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
{ msg_error "A problem occurred while downloading the LXC template."; exit 208; }
msg_ok "Downloaded LXC Template"
fi
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
echo "${PCT_OPTIONS[@]}"
msg_info "Creating LXC Container"
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
msg_ok "Template integrity check completed"
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
{ msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
msg_ok "Re-downloaded LXC Template"
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
msg_error "A problem occurred while trying to create container after re-downloading template."
exit 200
fi
fi
msg_ok "LXC Container $CTID was successfully created."

View File

@@ -0,0 +1,93 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
color() {
return
}
catch_errors() {
set -Eeuo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
}
error_handler() {
local line_number="$1"
local command="$2"
SCRIPT_NAME=$(basename "$0")
local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command"
echo -e "\n$error_message"
exit "$error_message"
}
verb_ip6() {
STD=""
return
}
msg_info() {
local msg="$1"
echo -ne "${msg}\n"
}
msg_ok() {
local msg="$1"
echo -e "${msg}\n"
}
msg_error() {
local msg="$1"
echo -e "${msg}\n"
}
RETRY_NUM=10
RETRY_EVERY=3
setting_up_container() {
sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen
locale_line=$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print $1}' | head -n 1)
echo "LANG=${locale_line}" >/etc/default/locale
locale-gen >/dev/null
export LANG=${locale_line}
echo $tz >/etc/timezone
ln -sf /usr/share/zoneinfo/$tz /etc/localtime
for ((i = RETRY_NUM; i > 0; i--)); do
if [ "$(hostname -I)" != "" ]; then
break
fi
echo 1>&2 -en "No Network! "
sleep $RETRY_EVERY
done
if [ "$(hostname -I)" = "" ]; then
echo 1>&2 -e "\nNo Network After $RETRY_NUM Tries"
echo -e "Check Network Settings"
exit 101
fi
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
systemctl disable -q --now systemd-networkd-wait-online.service
msg_ok "Set up Container OS"
msg_ok "Network Connected: $(hostname -I)"
}
network_check() {
RESOLVEDIP=$(getent hosts github.com | awk '{ print $1 }')
if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure"; else msg_ok "DNS Resolved github.com to $RESOLVEDIP"; fi
set -e
}
update_os() {
msg_info "Updating Container OS"
apt-get update
apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Updated Container OS"
}
motd_ssh() {
return
}
customize() {
return
}

View File

@@ -0,0 +1,20 @@
#!/bin/bash
FILE=$1
TODAY=$(date -u +"%Y-%m-%d")
if [[ -z "$FILE" ]]; then
echo "No file specified. Exiting."
exit 1
fi
if [[ ! -f "$FILE" ]]; then
echo "File $FILE not found. Exiting."
exit 1
fi
DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
fi

View File

@@ -1,48 +1,88 @@
name: Update JSON Date name: Auto Update JSON-Date
on: on:
pull_request: push:
types: [opened, synchronize, reopened] branches:
- main
workflow_dispatch:
jobs: jobs:
list-files: update-json-dates:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps: steps:
- name: Checkout PR Branch - name: Generate a token
uses: actions/checkout@v4 id: generate-token
with: uses: actions/create-github-app-token@v1
ref: ${{ github.event.pull_request.head.ref }} with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Fetch PR changes - name: Checkout repository
run: | uses: actions/checkout@v4
git remote add fork https://github.com/${{ github.event.pull_request.head.repo.full_name }}.git with:
git fetch fork ${{ github.event.pull_request.head.ref }}:pullreq fetch-depth: 0 # Full history for proper detection
git checkout pullreq
- name: Update JSON - name: Set up Git
id: changed-files run: |
run: | git config --global user.name "GitHub Actions"
FILES=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files --jq '.[].filename' | tr '\n' ' ') git config --global user.email "github-actions[bot]@users.noreply.github.com"
echo "changed_files=${FILES}"
for FILE in $FILES; do - name: Find JSON files with incorrect date_created
if [[ "$FILE" =~ /(.*)\.json ]]; then id: find_wrong_json
NAME="${BASH_REMATCH[1]}" run: |
else TODAY=$(date -u +"%Y-%m-%d")
echo "no new JSON in ${FILES}" > incorrect_json_files.txt
continue
fi for FILE in json/*.json; do
if [[ -f "$FILE" ]]; then
JSON_FILE="json/${NAME}.json" DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
if [[ -f "$JSON_FILE" ]]; then
echo "Updating date_created in $JSON_FILE" if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
jq --arg date "$(date +%Y-%m-%d)" '.date_created = $date' "$JSON_FILE" > tmp.json && mv tmp.json "$JSON_FILE" echo "$FILE" >> incorrect_json_files.txt
else fi
echo "JSON file $FILES not found"
fi fi
done done
git config --global user.name "github-actions[bot]" if [[ -s incorrect_json_files.txt ]]; then
git config --global user.email "github-actions[bot]@users.noreply.github.com" echo "CHANGED=true" >> $GITHUB_ENV
git diff --exit-code || git commit -am "Updating Dates in affected JSON files." else
git push echo "CHANGED=false" >> $GITHUB_ENV
env: fi
- name: Run update script
if: env.CHANGED == 'true'
run: |
chmod +x .github/workflows/scripts/update-json.sh
while read -r FILE; do
.github/workflows/scripts/update-json.sh "$FILE"
done < incorrect_json_files.txt
- name: Commit and create PR if changes exist
if: env.CHANGED == 'true'
run: |
git add json/*.json
git commit -m "Auto-update date_created in incorrect JSON files"
git checkout -b pr-fix-json-dates
git push origin pr-fix-json-dates --force
gh pr create --title "[core] Fix incorrect JSON date_created fields" \
--body "This PR is auto-generated to fix incorrect `date_created` fields in JSON files." \
--head pr-fix-json-dates \
--base main \
--label "automated pr"
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
- name: Approve pull request
if: env.CHANGED == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --head "pr-fix-json-dates" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
fi

View File

@@ -17,6 +17,170 @@ All LXC instances created using this repository come pre-installed with Midnight
Do not break established syntax in this file, as it is automatically updated by a Github Workflow Do not break established syntax in this file, as it is automatically updated by a Github Workflow
## 2025-02-12
### Changes
### 💥 Breaking Changes
- Frigate: Use Fixed Version 14 [@MickLesk](https://github.com/MickLesk) ([#2288](https://github.com/community-scripts/ProxmoxVE/pull/2288))
### ✨ New Scripts
- New Script: Kometa [@tremor021](https://github.com/tremor021) ([#2281](https://github.com/community-scripts/ProxmoxVE/pull/2281))
- New Script: Excalidraw [@tremor021](https://github.com/tremor021) ([#2285](https://github.com/community-scripts/ProxmoxVE/pull/2285))
- New Script: Graylog [@tremor021](https://github.com/tremor021) ([#2270](https://github.com/community-scripts/ProxmoxVE/pull/2270))
- New Script: TasmoCompiler [@tremor021](https://github.com/tremor021) ([#2235](https://github.com/community-scripts/ProxmoxVE/pull/2235))
- New script: cross-seed [@jmatraszek](https://github.com/jmatraszek) ([#2186](https://github.com/community-scripts/ProxmoxVE/pull/2186))
### 🚀 Updated Scripts
- FIX: Frigate - remove bad variable [@tremor021](https://github.com/tremor021) ([#2323](https://github.com/community-scripts/ProxmoxVE/pull/2323))
- Fix: Kometa - Fix wrong web site address [@tremor021](https://github.com/tremor021) ([#2318](https://github.com/community-scripts/ProxmoxVE/pull/2318))
- Fix: var_tags instead of TAGS in some CT's [@MickLesk](https://github.com/MickLesk) ([#2310](https://github.com/community-scripts/ProxmoxVE/pull/2310))
- Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305))
- Fix: Myspeed Installation (g++) [@MickLesk](https://github.com/MickLesk) ([#2308](https://github.com/community-scripts/ProxmoxVE/pull/2308))
- Fix: Pingvin wrong variable used for version tracking [@alberanid](https://github.com/alberanid) ([#2302](https://github.com/community-scripts/ProxmoxVE/pull/2302))
- Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282))
- fix: frigate pin version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2296](https://github.com/community-scripts/ProxmoxVE/pull/2296))
- Fix changedetection: Correct Browser install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2277](https://github.com/community-scripts/ProxmoxVE/pull/2277))
- Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289))
- Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291))
- Fix: CraftyControler fix java default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2286](https://github.com/community-scripts/ProxmoxVE/pull/2286))
### 🌐 Website
- Fix: some jsons (debian instead Debian in OS) [@MickLesk](https://github.com/MickLesk) ([#2311](https://github.com/community-scripts/ProxmoxVE/pull/2311))
- Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM [@MickLesk](https://github.com/MickLesk) ([#2307](https://github.com/community-scripts/ProxmoxVE/pull/2307))
- Fix: duplicate 'VM' name in opnsense-vm.json [@nayzm](https://github.com/nayzm) ([#2293](https://github.com/community-scripts/ProxmoxVE/pull/2293))
## 2025-02-11
### Changes
### ✨ New Scripts
- New Script: Opnsense VM [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2097](https://github.com/community-scripts/ProxmoxVE/pull/2097))
- New Script: Watcharr [@tremor021](https://github.com/tremor021) ([#2243](https://github.com/community-scripts/ProxmoxVE/pull/2243))
- New Script: Suwayomi-Server [@tremor021](https://github.com/tremor021) ([#2139](https://github.com/community-scripts/ProxmoxVE/pull/2139))
### 🚀 Updated Scripts
- Fix Photoprism: Add defaults.yml for CLI Tool [@MickLesk](https://github.com/MickLesk) ([#2261](https://github.com/community-scripts/ProxmoxVE/pull/2261))
- Update Checkmk: include Patch versions in Release grepping [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2264](https://github.com/community-scripts/ProxmoxVE/pull/2264))
- Fix: Apache Guacamole Version Crawling - only latest Version [@MickLesk](https://github.com/MickLesk) ([#2258](https://github.com/community-scripts/ProxmoxVE/pull/2258))
### 🌐 Website
- Update Komodo icon [@bannert1337](https://github.com/bannert1337) ([#2263](https://github.com/community-scripts/ProxmoxVE/pull/2263))
### 🧰 Maintenance
- Add Workflow to test Scripts [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2269](https://github.com/community-scripts/ProxmoxVE/pull/2269))
## 2025-02-10
### Changes
### 💥 Breaking Changes
- [Fix] Filebrowser - Add Static Path for DB [@MickLesk](https://github.com/MickLesk) ([#2207](https://github.com/community-scripts/ProxmoxVE/pull/2207))
### ✨ New Scripts
- New Script: Prometheus Paperless-NGX Exporter [@andygrunwald](https://github.com/andygrunwald) ([#2153](https://github.com/community-scripts/ProxmoxVE/pull/2153))
- New Script: Proxmox Mail Gateway [@thost96](https://github.com/thost96) ([#1906](https://github.com/community-scripts/ProxmoxVE/pull/1906))
- New Script: FreshRSS [@bvdberg01](https://github.com/bvdberg01) ([#2226](https://github.com/community-scripts/ProxmoxVE/pull/2226))
- New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))
### 🚀 Updated Scripts
- Feature: Automatic Deletion of choosen LXC's (lxc-delete.sh) [@MickLesk](https://github.com/MickLesk) ([#2228](https://github.com/community-scripts/ProxmoxVE/pull/2228))
- Quickfix: Crafty-Controller remove unnecessary \ [@MickLesk](https://github.com/MickLesk) ([#2233](https://github.com/community-scripts/ProxmoxVE/pull/2233))
- Fix: Crafty-Controller java versions and set default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2199](https://github.com/community-scripts/ProxmoxVE/pull/2199))
- Feature: Add optional Port for Filebrowser [@MickLesk](https://github.com/MickLesk) ([#2224](https://github.com/community-scripts/ProxmoxVE/pull/2224))
- [core] Prevent double spinner [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2203](https://github.com/community-scripts/ProxmoxVE/pull/2203))
### 🌐 Website
- Website: Fix Zitadel Logo & Created-Date [@MickLesk](https://github.com/MickLesk) ([#2217](https://github.com/community-scripts/ProxmoxVE/pull/2217))
- Fixed URL typo zerotier-one.json [@Divaksh](https://github.com/Divaksh) ([#2206](https://github.com/community-scripts/ProxmoxVE/pull/2206))
- evcc.json Clarify the config file location [@mvdw](https://github.com/mvdw) ([#2193](https://github.com/community-scripts/ProxmoxVE/pull/2193))
### 🧰 Maintenance
- [gh]: Improve Workflows, Templates, Handling [@MickLesk](https://github.com/MickLesk) ([#2214](https://github.com/community-scripts/ProxmoxVE/pull/2214))
- [core] Fix app-header workflow and add API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2204](https://github.com/community-scripts/ProxmoxVE/pull/2204))
- Fix: "read -p" does not support color formatting [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2191](https://github.com/community-scripts/ProxmoxVE/pull/2191))
- [API] Add API to vms [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2021](https://github.com/community-scripts/ProxmoxVE/pull/2021))
## 2025-02-09
### Changed
### ✨ New Scripts
- New Script: pbs_microcode.sh [@DonPablo1010](https://github.com/DonPablo1010) ([#2166](https://github.com/community-scripts/ProxmoxVE/pull/2166))
### 🚀 Updated Scripts
- Keep the same hass_config volume for Home Assistant [@genehand](https://github.com/genehand) ([#2160](https://github.com/community-scripts/ProxmoxVE/pull/2160))
### 🌐 Website
- Website: Set new Logo for Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2194](https://github.com/community-scripts/ProxmoxVE/pull/2194))
- Fix: Barcode Buddy Logo & Title [@MickLesk](https://github.com/MickLesk) ([#2183](https://github.com/community-scripts/ProxmoxVE/pull/2183))
## 2025-02-08
### Changed
### ✨ New Scripts
- New script: Barcode Buddy [@bvdberg01](https://github.com/bvdberg01) ([#2167](https://github.com/community-scripts/ProxmoxVE/pull/2167))
### 🚀 Updated Scripts
- Fix: Actualbudget - salvage the `.migrate` file when upgrading [@bourquep](https://github.com/bourquep) ([#2173](https://github.com/community-scripts/ProxmoxVE/pull/2173))
### 🌐 Website
- Update cosmos.json description [@BramSuurdje](https://github.com/BramSuurdje) ([#2162](https://github.com/community-scripts/ProxmoxVE/pull/2162))
### 🧰 Maintenance
- fix typos in CONTRIBUTOR_GUIDE [@thomashondema](https://github.com/thomashondema) ([#2174](https://github.com/community-scripts/ProxmoxVE/pull/2174))
## 2025-02-07 - 10.000 ⭐
### Changed
### 💥 Breaking Changes
- [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
### ✨ New Scripts
- New Script: Cosmos [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2120](https://github.com/community-scripts/ProxmoxVE/pull/2120))
- New Script: SearXNG [@MickLesk](https://github.com/MickLesk) ([#2123](https://github.com/community-scripts/ProxmoxVE/pull/2123))
### 🚀 Updated Scripts
- Fix: Trillium Update Function & Harmonize Installation [@MickLesk](https://github.com/MickLesk) ([#2148](https://github.com/community-scripts/ProxmoxVE/pull/2148))
- Fix: Zerotier-One fixed missing dependency [@tremor021](https://github.com/tremor021) ([#2147](https://github.com/community-scripts/ProxmoxVE/pull/2147))
- Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
- Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
### 🌐 Website
- Fix: Zerotier json had a bad script path [@tremor021](https://github.com/tremor021) ([#2144](https://github.com/community-scripts/ProxmoxVE/pull/2144))
- Fix: Cosmos logo doesnt display on website [@MickLesk](https://github.com/MickLesk) ([#2132](https://github.com/community-scripts/ProxmoxVE/pull/2132))
- Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
### 🧰 Maintenance
- [gh]: Following the trend - add star-history in readme [@MickLesk](https://github.com/MickLesk) ([#2135](https://github.com/community-scripts/ProxmoxVE/pull/2135))
## 2025-02-06 ## 2025-02-06
### Changed ### Changed

View File

@@ -91,6 +91,16 @@ If you encounter any issues or have suggestions for improvement, file a new issu
--- ---
## ⭐ Star History
<a href="https://star-history.com/#community-scripts/ProxmoxVE&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
</picture>
</a>
## 📜 License ## 📜 License
This project is licensed under the [MIT License](LICENSE). This project is licensed under the [MIT License](LICENSE).

View File

@@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
# App Default Values # App Default Values
APP="2FAuth" APP="2FAuth"
TAGS="2fa;authenticator" var_tags="2fa;authenticator"
var_cpu="1" var_cpu="1"
var_ram="512" var_ram="512"
var_disk="2" var_disk="2"

View File

@@ -48,6 +48,7 @@ function update_script() {
mv *ctual-server-* /opt/actualbudget mv *ctual-server-* /opt/actualbudget
rm -rf /opt/actualbudget/.env rm -rf /opt/actualbudget/.env
mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/.env /opt/actualbudget
mv /opt/actualbudget_bak/.migrate /opt/actualbudget
mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
cd /opt/actualbudget cd /opt/actualbudget
yarn install &>/dev/null yarn install &>/dev/null

View File

@@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/r
#App Default Values #App Default Values
APP="Apache-Guacamole" APP="Apache-Guacamole"
TAGS="webserver;remote" var_tags="webserver;remote"
var_disk="4" var_disk="4"
var_cpu="1" var_cpu="1"
var_ram="2048" var_ram="2048"

76
ct/barcode-buddy.sh Normal file
View File

@@ -0,0 +1,76 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Forceu/barcodebuddy
# App Default Values
APP="Barcode-Buddy"
var_tags="grocery;household"
var_cpu="1"
var_ram="512"
var_disk="3"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/barcodebuddy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop apache2
systemctl stop barcodebuddy
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
unzip -q "v${RELEASE}.zip"
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
chown -R www-data:www-data /opt/barcodebuddy/data
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start apache2
systemctl start barcodebuddy
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/barcodebuddy-backup
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -29,7 +29,7 @@ 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/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -v '\-rc' | sort -V | tail -n 1)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Updating ${APP} to v${RELEASE}"
omd stop monitoring &>/dev/null omd stop monitoring &>/dev/null

45
ct/cosmos.sh Normal file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Michel Roegl-Brunner (michelroegl-brunner)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://https://cosmos-cloud.io/
# App Default Values
APP="cosmos"
var_tags="os,docker"
var_cpu="2"
var_ram="2048"
var_disk="8"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/cosmos ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_ok "${APP} updates itself automatically!"
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -182,24 +182,37 @@ mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLA
[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; } [ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; }
TEMPLATE="${TEMPLATES[-1]}" TEMPLATE="${TEMPLATES[-1]}"
# Download LXC template if needed TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
if ! pveam list $TEMPLATE_STORAGE | grep -q $TEMPLATE; then # Check if template exists, if corrupt remove and redownload
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
msg_info "Downloading LXC Template" msg_info "Downloading LXC Template"
pveam download $TEMPLATE_STORAGE $TEMPLATE >/dev/null || pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
msg_error "A problem occured while downloading the LXC template." { msg_error "A problem occurred while downloading the LXC template."; exit 208; }
exit 208
msg_ok "Downloaded LXC Template" msg_ok "Downloaded LXC Template"
fi fi
# Check and fix subuid/subgid
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
# Combine all options # Combine all options
DEFAULT_PCT_OPTIONS=(
-arch $(dpkg --print-architecture))
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}}) PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs $CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}) [[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
# Create container # Create container with template integrity check
msg_info "Creating LXC Container" msg_info "Creating LXC Container"
pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || { msg_error "A problem occured while trying to create container."; exit 200; } if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
msg_ok "Template integrity check completed"
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
{ msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
msg_ok "Re-downloaded LXC Template"
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
msg_error "A problem occurred while trying to create container after re-downloading template."
exit 200
fi
fi
msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created." msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."

54
ct/cross-seed.sh Normal file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Jakub Matraszek (jmatraszek)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.cross-seed.org
APP="cross-seed"
var_tags="arr"
var_cpu="1"
var_ram="1024"
var_disk="2"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if command -v cross-seed &> /dev/null; then
current_version=$(cross-seed --version)
latest_version=$(npm show cross-seed version)
if [ "$current_version" != "$latest_version" ]; then
msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
npm install -g cross-seed@latest &> /dev/null
systemctl restart cross-seed
msg_ok "Updated Successfully"
else
msg_ok "${APP} is already at v${current_version}"
fi
else
msg_error "No ${APP} Installation Found!"
exit
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access cross-seed API using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2468${CL}"

View File

@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
# Source: https://github.com/duplicati/duplicati/ # Source: https://github.com/duplicati/duplicati/
APP="Duplicati" APP="Duplicati"
TAGS="backup" var_tags="backup"
var_cpu="1" var_cpu="1"
var_ram="1024" var_ram="1024"
var_disk="10" var_disk="10"

74
ct/excalidraw.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/excalidraw/excalidraw
APP="Excalidraw"
TAGS="diagrams"
var_cpu="2"
var_ram="3072"
var_disk="6"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/excalidraw ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop excalidraw
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cd /tmp
temp_file=$(mktemp)
wget -q "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
tar xzf $temp_file
rm -rf /opt/excalidraw
mv excalidraw-${RELEASE} /opt/excalidraw
cd /opt/excalidraw
yarn &> /dev/null
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start excalidraw
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $temp_file
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/excalidraw_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

46
ct/freshrss.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/FreshRSS/FreshRSS
# App Default Values
APP="FreshRSS"
var_tags="RSS"
var_cpu="2"
var_ram="1024"
var_disk="4"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/freshrss ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "FreshRSS should be updated via the user interface."
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

59
ct/graylog.sh Normal file
View File

@@ -0,0 +1,59 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://graylog.org/
APP="Graylog"
TAGS="logging"
var_cpu="2"
var_ram="8192"
var_disk="30"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /etc/graylog ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping $APP"
systemctl stop graylog-datanode
systemctl stop graylog-server
msg_ok "Stopped $APP"
msg_info "Updating $APP"
apt-get update &> /dev/null
apt-get upgrade -y &> /dev/null
msg_ok "Updated $APP"
msg_info "Starting $APP"
systemctl start graylog-datanode
systemctl start graylog-server
msg_ok "Started $APP"
msg_ok "Update Successful"
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}:9000${CL}"

6
ct/headers/barcode-buddy Normal file
View File

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

6
ct/headers/cosmos Normal file
View File

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

6
ct/headers/cross-seed Normal file
View File

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

6
ct/headers/excalidraw Normal file
View File

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

6
ct/headers/freshrss Normal file
View File

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

6
ct/headers/graylog Normal file
View File

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

6
ct/headers/kometa Normal file
View File

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

View File

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

View File

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

6
ct/headers/searxng Normal file
View File

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

View File

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

6
ct/headers/tasmocompiler Normal file
View File

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

6
ct/headers/watcharr Normal file
View File

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

6
ct/headers/zitadel Normal file
View File

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

View File

@@ -49,7 +49,7 @@ function update_script() {
LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")" LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
echo "Updating ${container} image ${CONTAINER_IMAGE}" echo "Updating ${container} image ${CONTAINER_IMAGE}"
DOCKER_COMMAND="$(runlike "${container}")" DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
docker rm --force "${container}" docker rm --force "${container}"
eval ${DOCKER_COMMAND} eval ${DOCKER_COMMAND}
fi fi
@@ -113,4 +113,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}HA: http://${IP}:8123${CL}" echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}" echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"

80
ct/kometa.sh Normal file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Kometa-Team/Kometa
# App Default Values
APP="Kometa"
TAGS="media;streaming"
var_cpu="1"
var_ram="1024"
var_disk="4"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f "/opt/kometa/kometa.py" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then
msg_info "Updating $APP"
msg_info "Stopping $APP"
systemctl stop kometa
msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}"
cd /tmp
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
cp /opt/kometa/config/config.yml /opt
rm -rf /opt/kometa
mv Kometa-${RELEASE} /opt/kometa
cd /opt/kometa
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
pip install -r requirements.txt --ignore-installed &> /dev/null
mkdir -p config/assets
cp /opt/config.yml config/config.yml
echo "${RELEASE}" >/opt/kometa_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP"
systemctl start kometa
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f $temp_file
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -9,8 +9,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
APP="PeaNUT" APP="PeaNUT"
var_tags="network;ups;" var_tags="network;ups;"
var_cpu="2" var_cpu="2"
var_ram="2048" var_ram="3072"
var_disk="4" var_disk="7"
var_os="debian" var_os="debian"
var_version="12" var_version="12"
var_unprivileged="1" var_unprivileged="1"

View File

@@ -34,7 +34,7 @@ function update_script() {
fi fi
RELEASE=$(curl -s https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -s https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/$pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then if [[ ! -f /opt/pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then
msg_info "Stopping Pingvin Share" msg_info "Stopping Pingvin Share"
systemctl stop pm2-root.service systemctl stop pm2-root.service

View File

@@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
# App Default Values # App Default Values
APP="PocketID" APP="PocketID"
TAGS="identity-provider" var_tags="identity-provider"
var_cpu="2" var_cpu="2"
var_ram="2048" var_ram="2048"
var_disk="4" var_disk="4"

View File

@@ -0,0 +1,67 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Andy Grunwald (andygrunwald)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/hansmi/prometheus-paperless-exporter
# App Default Values
APP="Prometheus-Paperless-NGX-Exporter"
var_tags="monitoring;alerting"
var_cpu="1"
var_ram="256"
var_disk="2"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/prometheus-paperless-ngx-exporter.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s 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
msg_info "Stopping ${APP}"
systemctl stop prometheus-paperless-ngx-exporter
msg_ok "Stopped ${APP}"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt
wget -q 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}"
systemctl start prometheus-paperless-ngx-exporter
msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081/metrics${CL}"

View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: thost96 (thost96)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.proxmox.com/en/products/proxmox-mail-gateway
APP="Proxmox-Mail-Gateway"
var_tags="mail"
var_cpu="2"
var_ram="4096"
var_disk="10"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -e /usr/bin/pmgproxy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
msg_info "Updating ${APP}"
apt-get update &>/dev/null
apt-get -y upgrade &>/dev/null
msg_ok "Updated ${APP}"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8006/${CL}"

47
ct/searxng.sh Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/searxng/searxng
# App Default Values
APP="SearXNG"
var_tags="search"
var_cpu="2"
var_ram="2048"
var_disk="7"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /usr/local/searxng/searxng-src ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
msg_ok "There is currently no update available."
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"

View File

@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
# Source: https://github.com/YuukanOO/seelf # Source: https://github.com/YuukanOO/seelf
APP="seelf" APP="seelf"
TAGS="server;docker" var_tags="server;docker"
var_cpu="2" var_cpu="2"
var_ram="4096" var_ram="4096"
var_disk="10" var_disk="10"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/kris701/ProxmoxVE/refs/heads/main/misc/build.func) source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: Kristian Skov # Author: Kristian Skov
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
@@ -46,4 +46,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following IP:${CL}" echo -e "${INFO}${YW} Access it using the following IP:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}${IP}:1433${CL}" echo -e "${TAB}${GATEWAY}${BGN}${IP}:1433${CL}"

66
ct/suwayomiserver.sh Normal file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: tremor021
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Suwayomi/Suwayomi-Server
APP="SuwayomiServer"
var_tags="media;manga"
var_cpu="1"
var_ram="1024"
var_disk="4"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/bin/suwayomi-server ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
msg_info "Updating $APP"
msg_info "Stopping $APP"
systemctl stop suwayomi-server
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cd /tmp
URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1)
wget -q $URL
$STD dpkg -i /tmp/*.deb
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start suwayomi-server
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f *.deb
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}"

71
ct/tasmocompiler.sh Normal file
View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/benzino77/tasmocompiler
APP="TasmoCompiler"
var_tags="compiler"
var_cpu="2"
var_ram="2048"
var_disk="10"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/tasmocompiler ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping $APP"
systemctl stop tasmocompiler
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cd /opt
rm -rf /opt/tasmocompiler
RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz
tar xzf v${RELEASE}.tar.gz
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
cd /opt/tasmocompiler
yarn install &> /dev/null
export NODE_OPTIONS=--openssl-legacy-provider
npm i &> /dev/null
yarn build &> /dev/null
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start tasmocompiler
msg_ok "Started $APP"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.tar.gz"
msg_ok "Cleaned"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -32,21 +32,30 @@ 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 touch /opt/${APP}_version.txt
fi
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop trilium systemctl stop trilium
sleep 1 sleep 1
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating to ${RELEASE}" msg_info "Updating to ${RELEASE}"
mkdir -p /opt/trilium_backup
mv /opt/trilium/{db,dump-db} /opt/trilium_backup/
rm -rf /opt/trilium
cd /tmp
wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
cp -r trilium-linux-x64-server/* /opt/trilium/ mv trilium-linux-x64-server /opt/trilium
cp -r /opt/trilium_backup/{db,dump-db} /opt/trilium/
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated to ${RELEASE}" msg_ok "Updated to ${RELEASE}"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz trilium-linux-x64-server rm -rf /tmp/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
rm -rf /opt/trilium_backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
@@ -54,7 +63,10 @@ function update_script() {
sleep 1 sleep 1
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
exit else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
} }
start start

80
ct/watcharr.sh Normal file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/sbondCo/Watcharr
APP="Watcharr"
var_tags="media"
var_cpu="1"
var_ram="1024"
var_disk="4"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
base_settings
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/watcharr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s 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
msg_info "Updating $APP"
msg_info "Stopping $APP"
systemctl stop watcharr
msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
temp_file=$(mktemp)
wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
rm -f /opt/watcharr/server/watcharr
rm -rf /opt/watcharr/server/ui
mv Watcharr-${RELEASE}/ /opt/watcharr
cd /opt/watcharr
export GOOS=linux
npm i &> /dev/null
npm run build &> /dev/null
mv ./build ./server/ui
cd server
go mod download
go build -o ./watcharr
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
systemctl start watcharr
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f ${temp_file}
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3080${CL}"

View File

@@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
#App Default Values #App Default Values
APP="Zammad" APP="Zammad"
TAGS="webserver;ticket-system" var_tags="webserver;ticket-system"
var_disk="8" var_disk="8"
var_cpu="2" var_cpu="2"
var_ram="4096" var_ram="4096"

70
ct/zitadel.sh Normal file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: dave-yap (dave-yap)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://zitadel.com/
# App Default Values
APP="Zitadel"
var_tags="identity-provider"
var_cpu="1"
var_ram="1024"
var_disk="8"
var_os="debian"
var_version="12"
var_unprivileged="1"
# App Output & Base Settings
header_info "$APP"
base_settings
# Core
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/zitadel.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -si https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop zitadel
msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}"
cd /tmp
wget -qc https://github.com/zitadel/zitadel/releases/download/$RELEASE/zitadel-linux-amd64.tar.gz -O - | tar -xz
mv zitadel-linux-amd64/zitadel /usr/local/bin
zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true &>/dev/null
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP"
systemctl start zitadel
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf /tmp/zitadel-linux-amd64
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/ui/console${CL}"

View File

@@ -64,8 +64,8 @@ function InstallMethod({
if (key === "type") { if (key === "type") {
updatedMethod.script = updatedMethod.script =
value === "alpine" value === "alpine"
? `/${prev.type}/alpine-${prev.slug}.sh` ? `${prev.type}/alpine-${prev.slug}.sh`
: `/${prev.type}/${prev.slug}.sh`; : `${prev.type}/${prev.slug}.sh`;
// Set OS to Alpine and reset version if type is alpine // Set OS to Alpine and reset version if type is alpine
if (value === "alpine") { if (value === "alpine") {

View File

@@ -76,8 +76,8 @@ export default function JSONGenerator() {
...method, ...method,
script: script:
method.type === "alpine" method.type === "alpine"
? `/${updated.type}/alpine-${updated.slug}.sh` ? `${updated.type}/alpine-${updated.slug}.sh`
: `/${updated.type}/${updated.slug}.sh`, : `${updated.type}/${updated.slug}.sh`,
})); }));
} }

View File

@@ -41,7 +41,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup Apache Tomcat" msg_info "Setup Apache Tomcat"
RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//') RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
mkdir -p /opt/apache-guacamole/tomcat9 mkdir -p /opt/apache-guacamole/tomcat9
mkdir -p /opt/apache-guacamole/server mkdir -p /opt/apache-guacamole/server
wget -qO- "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1 wget -qO- "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1

View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
apache2 \
redis \
php-{curl,date,json,mbstring,redis,sqlite3,sockets} \
libapache2-mod-php
msg_ok "Installed Dependencies"
msg_info "Installing barcodebuddy"
RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt
wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
unzip -q "v${RELEASE}.zip"
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
chown -R www-data:www-data /opt/barcodebuddy/data
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed barcodebuddy"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/barcodebuddy.service
[Unit]
Description=Run websocket server for barcodebuddy screen feature
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
StandardOutput=null
Restart=on-failure
User=www-data
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/apache2/sites-available/barcodebuddy.conf
<VirtualHost *:80>
ServerName barcodebuddy
DocumentRoot /opt/barcodebuddy
<Directory /opt/barcodebuddy>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/barcodebuddy_error.log
CustomLog /var/log/apache2/barcodebuddy_access.log combined
</VirtualHost>
EOF
systemctl enable -q --now barcodebuddy
$STD a2ensite barcodebuddy
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf "/opt/v${RELEASE}.zip"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -76,7 +76,10 @@ mkdir /opt/browserless
$STD python3 -m pip install playwright $STD python3 -m pip install playwright
$STD git clone https://github.com/browserless/chrome /opt/browserless $STD git clone https://github.com/browserless/chrome /opt/browserless
$STD npm install --prefix /opt/browserless $STD npm install --prefix /opt/browserless
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps chrome chromium firefox webkit $STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps &>/dev/null
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome &>/dev/null
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit &>/dev/null
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
$STD npm run build --prefix /opt/browserless $STD npm run build --prefix /opt/browserless
$STD npm run build:function --prefix /opt/browserless $STD npm run build:function --prefix /opt/browserless
$STD npm prune production --prefix /opt/browserless $STD npm prune production --prefix /opt/browserless

View File

@@ -22,7 +22,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Install Checkmk" msg_info "Install Checkmk"
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | head -n 1) RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -v '\-rc' | sort -V | tail -n 1)
wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb
$STD apt-get install -y /opt/checkmk.deb $STD apt-get install -y /opt/checkmk.deb
echo "${RELEASE}" >"/opt/checkmk_version.txt" echo "${RELEASE}" >"/opt/checkmk_version.txt"

86
install/cosmos-install.sh Normal file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env bash
#Copyright (c) 2021-2025 community-scripts ORG
# Author: Michel Roegl-Brunner (michelroegl-brunner)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
mc \
sudo \
snapraid \
avahi-daemon \
fdisk
msg_ok "Installed Dependencies"
msg_info "Install mergerfs"
MERGERFS_VERSION="2.40.2"
wget -q "https://github.com/trapexit/mergerfs/releases/download/${MERGERFS_VERSION}/mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
$STD dpkg -i "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb" || $STD apt-get install -f -y
rm "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
msg_ok "Installed mergerfs"
msg_info "Install Docker"
curl -fsSL https://get.docker.com -o get-docker.sh
$STD sh get-docker.sh
rm get-docker.sh
msg_ok "Installed Docker"
msg_info "Install Cosmos"
mkdir -p /opt/cosmos
LATEST_RELEASE=$(curl -s https://api.github.com/repos/azukaar/Cosmos-Server/releases/latest | grep "tag_name" | cut -d '"' -f 4)
ZIP_FILE="cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
curl -sL "https://github.com/azukaar/Cosmos-Server/releases/download/${LATEST_RELEASE}/${ZIP_FILE}" -o "/opt/cosmos/${ZIP_FILE}"
cd /opt/cosmos
unzip -o -q "${ZIP_FILE}"
LATEST_RELEASE_NO_V=${LATEST_RELEASE#v}
mv /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}/* /opt/cosmos/
rmdir /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}
chmod +x /opt/cosmos/cosmos
msg_ok "Installed Cosmos"
msg_info "Creating Service"
cat <<EOF > /etc/systemd/system/cosmos.service
[Unit]
Description=Cosmos Cloud service
ConditionFileIsExecutable=/opt/cosmos/start.sh
[Service]
StartLimitInterval=10
StartLimitBurst=5
ExecStart=/opt/cosmos/start.sh
WorkingDirectory=/opt/cosmos
Restart=always
RestartSec=2
EnvironmentFile=-/etc/sysconfig/CosmosCloud
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now cosmos.service
msg_info "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "/opt/cosmos/cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -23,13 +23,18 @@ $STD apt-get install -y \
lsb-release \ lsb-release \
apt-transport-https \ apt-transport-https \
coreutils \ coreutils \
software-properties-common \ software-properties-common
openjdk-17-jdk
wget -q https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
$STD sudo dpkg -i jdk-21_linux-x64_bin.deb
rm -f jdk-21_linux-x64_bin.deb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up TemurinJDK"
mkdir -p /etc/apt/keyrings
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
$STD apt-get update
$STD apt-get install -y temurin-{8,11,17,21}-jre
sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java
msg_ok "Installed TemurinJDK"
msg_info "Setup Python3" msg_info "Setup Python3"
$STD apt-get install -y \ $STD apt-get install -y \
python3 \ python3 \
@@ -39,7 +44,6 @@ $STD apt-get install -y \
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Setup Python3" msg_ok "Setup Python3"
msg_info "Installing Craty-Controller (Patience)" msg_info "Installing Craty-Controller (Patience)"
useradd crafty -m -s /bin/bash useradd crafty -m -s /bin/bash
cd /opt cd /opt
@@ -71,7 +75,7 @@ After=network.target
Type=simple Type=simple
User=crafty User=crafty
WorkingDirectory=/opt/crafty-controller/crafty/crafty-4 WorkingDirectory=/opt/crafty-controller/crafty/crafty-4
Environment=PATH=/opt/crafty-controller/crafty/.venv/bin:$PATH Environment=PATH=/usr/lib/jvm/temurin-21-jre-amd64/bin:/opt/crafty-controller/crafty/.venv/bin:$PATH
ExecStart=/opt/crafty-controller/crafty/.venv/bin/python3 main.py -d ExecStart=/opt/crafty-controller/crafty/.venv/bin/python3 main.py -d
Restart=on-failure Restart=on-failure
@@ -94,4 +98,4 @@ msg_info "Cleaning up"
rm -rf /opt/crafty-4-v${RELEASE}.zip rm -rf /opt/crafty-4-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

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Jakub Matraszek (jmatraszek)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.cross-seed.org
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
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_23.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Setup Node.js Repository"
msg_info "Setting up Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Setup Node.js"
msg_info "Setup Cross-Seed"
$STD npm install cross-seed@latest -g
$STD cross-seed gen-config
msg_ok "Setup Cross-Seed"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/cross-seed.service
[Unit]
Description=Cross-Seed daemon Service
After=network.target
[Service]
ExecStart=cross-seed daemon
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now cross-seed
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

@@ -0,0 +1,73 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/excalidraw/excalidraw
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg \
xdg-utils
msg_ok "Installed Dependencies"
msg_info "Setup Node.js Repository"
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
msg_ok "Setup Node.js Repository"
msg_info "Setup Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g yarn
msg_ok "Setup Node.js"
msg_info "Setup Excalidraw"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
tar xzf $temp_file
mv excalidraw-${RELEASE} /opt/excalidraw
cd /opt/excalidraw
$STD yarn
echo "${RELEASE}" >/opt/excalidraw_version.txt
msg_ok "Setup Excalidraw"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/excalidraw.service
[Unit]
Description=Excalidraw Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/excalidraw
ExecStart=/usr/bin/yarn start --host
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now excalidraw
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
postgresql \
apache2 \
php-{curl,dom,json,ctype,pgsql,gmp,mbstring,iconv,zip} \
libapache2-mod-php
msg_ok "Installed Dependencies"
msg_info "Setting up PostgreSQL"
DB_NAME=freshrss
DB_USER=freshrss
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 TEMPLATE template0;"
{
echo "FreshRSS Credentials"
echo "FreshRSS Database User: $DB_USER"
echo "FreshRSS Database Password: $DB_PASS"
echo "FreshRSS Database Name: $DB_NAME"
} >> ~/freshrss.creds
msg_ok "Set up PostgreSQL"
msg_info "Installing FreshRSS"
RELEASE=$(curl -s https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cd /opt
wget -q "https://github.com/FreshRSS/FreshRSS/archive/refs/tags/${RELEASE}.zip"
unzip -q "${RELEASE}.zip"
mv "/opt/FreshRSS-${RELEASE}" /opt/freshrss
cd /opt/freshrss
chown -R www-data:www-data /opt/freshrss
chmod -R g+rX /opt/freshrss
chmod -R g+w /opt/freshrss/data/
msg_ok "Installed FreshRSS"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/freshrss.conf
<VirtualHost *:80>
ServerName freshrss
DocumentRoot /opt/freshrss/p
<Directory /opt/freshrss/p>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/freshrss_error.log
CustomLog /var/log/apache2/freshrss_access.log combined
AllowEncodedSlashes On
</VirtualHost>
EOF
$STD a2ensite freshrss
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf "/opt/${RELEASE}.zip"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -48,13 +48,13 @@ if [[ "$CTTYPE" == "0" ]]; then
fi fi
msg_ok "Set Up Hardware Acceleration" msg_ok "Set Up Hardware Acceleration"
RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name') #RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name')
msg_ok "Stop spinner to prevent segmentation fault" msg_ok "Stop spinner to prevent segmentation fault"
msg_info "Installing Frigate $RELEASE (Perseverance)" msg_info "Installing Frigate v0.14.1 (Perseverance)"
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
cd ~ cd ~
mkdir -p /opt/frigate/models mkdir -p /opt/frigate/models
wget -q https://github.com/blakeblackshear/frigate/archive/refs/tags/${RELEASE}.tar.gz -O frigate.tar.gz wget -q https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz -O frigate.tar.gz
tar -xzf frigate.tar.gz -C /opt/frigate --strip-components 1 tar -xzf frigate.tar.gz -C /opt/frigate --strip-components 1
rm -rf frigate.tar.gz rm -rf frigate.tar.gz
cd /opt/frigate cd /opt/frigate
@@ -102,7 +102,7 @@ else
sed -i -e 's/^kvm:x:104:$/render:x:104:frigate/' -e 's/^render:x:105:$/kvm:x:105:/' /etc/group sed -i -e 's/^kvm:x:104:$/render:x:104:frigate/' -e 's/^render:x:105:$/kvm:x:105:/' /etc/group
fi fi
echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab
msg_ok "Installed Frigate $RELEASE" msg_ok "Installed Frigate"
if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then
msg_ok "AVX Support Detected" msg_ok "AVX Support Detected"

View File

@@ -0,0 +1,65 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://graylog.org/
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setup MongoDB"
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
$STD apt-get update
$STD apt-get install -y mongodb-org
$STD apt-mark hold mongodb-org
systemctl enable -q --now mongod
msg_ok "Setup MongoDB"
msg_info "Setup Graylog Data Node"
PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
wget -q https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb
$STD dpkg -i graylog-6.1-repository_latest.deb
$STD apt-get update
$STD apt-get install graylog-datanode -y
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf
systemctl enable -q --now graylog-datanode
msg_ok "Setup Graylog Data Node"
msg_info "Setup ${APPLICATION}"
$STD apt-get install graylog-server
ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
{
echo "${APPLICATION} Credentials"
echo "Admin User: admin"
echo "Admin Password: ${ROOT_PASSWORD}"
} >> ~/graylog.creds
ROOT_PASSWORD=$(echo -n $ROOT_PASSWORD | shasum -a 256 | awk '{print $1}')
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/server/server.conf
sed -i "s/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf
sed -i 's/#http_bind_address = 127.0.0.1.*/http_bind_address = 0.0.0.0:9000/g' /etc/graylog/server/server.conf
systemctl enable -q --now graylog-server
msg_ok "Setup ${APPLICATION}"
motd_ssh
customize
msg_info "Cleaning up"
rm -f graylog-*-repository_latest.deb
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

74
install/kometa-install.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Kometa-Team/Kometa
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
mc \
sudo
msg_ok "Installed Dependencies"
msg_info "Setup Python 3"
$STD apt-get install python3-pip -y
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Setup Python 3"
msg_info "Setup Kometa"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv Kometa-${RELEASE} /opt/kometa
cd /opt/kometa
$STD pip install -r requirements.txt --ignore-installed
mkdir -p config/assets
cp config/config.yml.template config/config.yml
echo "${RELEASE}" >/opt/kometa_version.txt
msg_ok "Setup Kometa"
read -p "Enter your TMDb API key: " TMDBKEY
read -p "Enter your Plex URL: " PLEXURL
read -p "Enter your Plex token: " PLEXTOKEN
sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL#g" /opt/kometa/config/config.yml
sed -i -e "s/token: ####################/token: $PLEXTOKEN/g" /opt/kometa/config/config.yml
sed -i -e "s/apikey: ################################/apikey: $TMDBKEY/g" /opt/kometa/config/config.yml
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/kometa.service
[Unit]
Description=Kometa Service
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/kometa
ExecStart=/usr/bin/python3 kometa.py
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now -q kometa
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -1,10 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck # Author: MickLesk (Canbiz)
# Co-Author: 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://github.com/gnmyt/myspeed # Source: https://github.com/gnmyt/myspeed
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
@@ -18,6 +16,9 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
curl \ curl \
build-essential \
g++ \
make \
sudo \ sudo \
make \ make \
gpg \ gpg \
@@ -73,4 +74,4 @@ msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
rm -rf /opt/MySpeed-$RELEASE.zip rm -rf /opt/MySpeed-$RELEASE.zip
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -17,7 +17,11 @@ $STD apt-get install -y \
curl \ curl \
sudo \ sudo \
mc \ mc \
gpg gpg \
make \
gcc \
g++ \
build-essential
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository" msg_info "Setting up Node.js Repository"

View File

@@ -62,6 +62,35 @@ PHOTOPRISM_PUBLIC='false'
PHOTOPRISM_DEBUG='false' PHOTOPRISM_DEBUG='false'
EOF EOF
ln -sf /opt/photoprism/bin/photoprism /usr/local/bin/photoprism ln -sf /opt/photoprism/bin/photoprism /usr/local/bin/photoprism
mkdir -p /etc/photoprism/
cat <<EOF >/etc/photoprism/defaults.yml
ConfigPath: "~/.config/photoprism"
StoragePath: "/opt/photoprism/storage"
OriginalsPath: "/opt/photoprism/photos/originals"
ImportPath: "/media"
AdminUser: "admin"
AdminPassword: "changeme"
AuthMode: "password"
DatabaseDriver: "sqlite"
HttpHost: "0.0.0.0"
HttpPort: 2342
HttpCompression: "gzip"
DisableTLS: false
DefaultTLS: true
Experimental: false
DisableWebDAV: false
DisableSettings: false
DisableTensorFlow: false
DisableFaces: false
DisableClassification: false
DisableVectors: false
DisableRaw: false
RawPresets: false
JpegQuality: 85
DetectNSFW: false
UploadNSFW: true
EOF
msg_ok "Installed PhotoPrism" msg_ok "Installed PhotoPrism"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Andy Grunwald (andygrunwald)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/hansmi/prometheus-paperless-exporter
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc
msg_ok "Installed Dependencies"
msg_info "Installing Prometheus Paperless NGX Exporter"
RELEASE=$(curl -s https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q 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
mv prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/
mkdir -p /etc/prometheus-paperless-ngx-exporter
cat <<EOF > /etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
SECRET_AUTH_TOKEN
EOF
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Prometheus Paperless NGX Exporter"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/prometheus-paperless-ngx-exporter.service
[Unit]
Description=Prometheus Paperless NGX Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
Restart=always
Type=simple
ExecStart=/usr/local/bin/prometheus-paperless-exporter \
--paperless_url=http://paperless.example.org \
--paperless_auth_token_file=/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
ExecReload=/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now prometheus-paperless-ngx-exporter
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
rm -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/ prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
msg_ok "Cleaned"

View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: thost96 (thost96)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get -y install \
curl \
sudo \
mc \
wget
msg_ok "Installed Dependencies"
msg_info "Installing Proxmox Mail Gateway"
wget -q https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
echo "deb http://download.proxmox.com/debian/pmg bookworm pmg-no-subscription" > /etc/apt/sources.list.d/pmg.list
$STD apt-get update
$STD apt-get -y install proxmox-mailgateway-container
msg_ok "Installed Proxmox Mail Gateway"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

116
install/searxng-install.sh Normal file
View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/searxng/searxng
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \
redis-server \
build-essential \
libffi-dev \
libssl-dev \
curl \
sudo \
git \
mc
msg_ok "Installed Dependencies"
msg_info "Setup Python3"
$STD apt-get install -y \
python3 \
python3-{pip,venv,yaml,dev}
$STD pip install --upgrade pip setuptools wheel
$STD pip install pyyaml
msg_ok "Setup Python3"
msg_info "Setup SearXNG"
mkdir -p /usr/local/searxng /etc/searxng
useradd -d /etc/searxng searxng
chown searxng:searxng /usr/local/searxng /etc/searxng
$STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src
cd /usr/local/searxng/
sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv
source /usr/local/searxng/searx-pyenv/bin/activate
$STD pip install --upgrade pip setuptools wheel
$STD pip install pyyaml
$STD pip install -e /usr/local/searxng/searxng-src
SECRET_KEY=$(openssl rand -hex 32)
cat <<EOF >/etc/searxng/settings.yml
# SearXNG settings
use_default_settings: true
general:
debug: false
instance_name: "SearXNG"
privacypolicy_url: false
contact_url: false
server:
bind_address: "0.0.0.0"
port: 8888
secret_key: "${SECRET_KEY}"
limiter: true
image_proxy: true
redis:
url: "redis://127.0.0.1:6379/0"
ui:
static_use_hash: true
enabled_plugins:
- 'Hash plugin'
- 'Self Information'
- 'Tracker URL remover'
- 'Ahmia blacklist'
search:
safe_search: 2
autocomplete: 'google'
engines:
- name: google
engine: google
shortcut: gg
use_mobile_ui: false
- name: duckduckgo
engine: duckduckgo
shortcut: ddg
display_error_messages: true
EOF
chown searxng:searxng /etc/searxng/settings.yml
chmod 640 /etc/searxng/settings.yml
msg_ok "Setup SearXNG"
msg_info "Set up web services"
cat <<EOF >/etc/systemd/system/searxng.service
[Unit]
Description=SearXNG service
After=network.target redis-server.service
Wants=redis-server.service
[Service]
Type=simple
User=searxng
Group=searxng
Environment="SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml"
ExecStart=/usr/local/searxng/searx-pyenv/bin/python -m searx.webapp
WorkingDirectory=/usr/local/searxng/searxng-src
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now searxng
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get autoremove
$STD apt-get autoclean
msg_ok "Cleaned"

View File

@@ -23,11 +23,13 @@ $STD apt install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup SQL Server 2022" msg_info "Setup SQL Server 2022"
$STD curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
#$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
#$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list
$STD apt-get clean * $STD apt-get clean *
$STD apt-get update -y $STD apt-get update -y
$STD apt-get install -y mssql-server apt-get install -y mssql-server
msg_ok "Setup Server 2022" msg_ok "Setup Server 2022"
msg_info "Installing SQL Server Tools" msg_info "Installing SQL Server Tools"

View File

@@ -0,0 +1,53 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: tremor021
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Suwayomi/Suwayomi-Server
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
openjdk-17-jre \
libc++-dev
msg_ok "Installed Dependencies"
msg_info "Settting up Suwayomi-Server"
URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1)
RELEASE=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
wget -q $URL
$STD dpkg -i *.deb
echo ${RELEASE} >/opt/suwayomi-server_version.txt
msg_ok "Done setting up Suwayomi-Server"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/suwayomi-server.service
[Unit]
Description=Suwayomi-Server Service
After=network.target
[Service]
ExecStart=/usr/bin/suwayomi-server
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now suwayomi-server
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f *.deb
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -0,0 +1,87 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/benzino77/tasmocompiler
# Import Functions und Setup
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies. Patience"
$STD apt-get install -y \
curl \
sudo \
mc \
gnupg \
git
msg_ok "Installed Dependencies"
msg_info "Setup Python3"
$STD apt-get install -y python3-venv
msg_ok "Setup Python3"
msg_info "Setup Node.js & yarn"
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
$STD npm install -g yarn
msg_ok "Setup Node.js & yarn"
msg_info "Setup Platformio"
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
$STD python3 get-platformio.py
msg_ok "Setup Platformio"
msg_info "Setup TasmoCompiler"
mkdir /tmp/Tasmota
RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz -O /tmp/v${RELEASE}.tar.gz
cd /tmp
tar xzf /tmp/v${RELEASE}.tar.gz
mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/
cd /opt/tasmocompiler
$STD yarn install
export NODE_OPTIONS=--openssl-legacy-provider
$STD npm i
$STD yarn build
mkdir -p /usr/local/bin
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb
echo "${RELEASE}" >"/opt/tasmocompiler_version.txt"
msg_ok "Setup TasmoCompiler"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/tasmocompiler.service
[Unit]
Description=TasmoCompiler Service
After=multi-user.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/node /opt/tasmocompiler/server/app.js
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now tasmocompiler
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f /tmp/v${RELEASE}.tar.gz
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -2,8 +2,7 @@
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # Author: tteck (tteckster)
# License: MIT # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color color
@@ -14,23 +13,24 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y curl $STD apt-get install -y \
$STD apt-get install -y sudo curl \
$STD apt-get install -y mc sudo \
mc
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup TriliumNext"
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
msg_info "Installing TriliumNext"
wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
mv trilium-linux-x64-server /opt/trilium mv trilium-linux-x64-server /opt/trilium
msg_ok "Installed TriliumNext" echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup TriliumNext"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/trilium.service" cat <<EOF >/etc/systemd/system/trilium.service
[Unit]
echo "[Unit]
Description=Trilium Daemon Description=Trilium Daemon
After=syslog.target network.target After=syslog.target network.target
@@ -43,7 +43,8 @@ TimeoutStopSec=20
Restart=always Restart=always
[Install] [Install]
WantedBy=multi-user.target" >$service_path WantedBy=multi-user.target
EOF
systemctl enable --now -q trilium systemctl enable --now -q trilium
msg_ok "Created Service" msg_ok "Created Service"
@@ -51,7 +52,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -0,0 +1,93 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/sbondCo/Watcharr
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
curl \
sudo \
mc \
gcc \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setup Golang"
set +o pipefail
temp_file=$(mktemp)
golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1)
wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file"
tar -C /usr/local -xzf "$temp_file"
ln -sf /usr/local/go/bin/go /usr/local/bin/go
rm -f "$temp_file"
set -o pipefail
msg_ok "Setup Golang"
msg_info "Setup Node.js"
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
msg_ok "Setup Node.js"
msg_info "Setup Watcharr"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
tar -xzf "$temp_file"
mv Watcharr-${RELEASE}/ /opt/watcharr
cd /opt/watcharr
$STD npm i
$STD npm run build
mv ./build ./server/ui
cd server
export CGO_ENABLED=1 GOOS=linux
go mod download
go build -o ./watcharr
cat <<EOF >/opt/start.sh
#! /bin/bash
source ~/.bashrc
cd /opt/watcharr/server
./watcharr
EOF
chmod +x /opt/start.sh
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup Watcharr"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/watcharr.service
[Unit]
Description=Watcharr Service
After=network.target
[Service]
WorkingDirectory=/opt/watcharr/server
ExecStart=/opt/start.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now watcharr
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -16,7 +16,8 @@ msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
curl \ curl \
mc \ mc \
sudo sudo \
gnupg
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Zerotier-One" msg_info "Setting up Zerotier-One"

155
install/zitadel-install.sh Normal file
View File

@@ -0,0 +1,155 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: dave-yap
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \
curl \
sudo \
mc \
ca-certificates \
wget
msg_ok "Installed Dependecies"
msg_info "Installing Postgresql"
$STD apt-get install -y postgresql postgresql-common
DB_NAME="zitadel"
DB_USER="zitadel"
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
DB_ADMIN_USER="root"
DB_ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
systemctl start postgresql
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE USER $DB_ADMIN_USER WITH PASSWORD '$DB_ADMIN_PASS' SUPERUSER;"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
{
echo "Application Credentials"
echo "DB_NAME: $DB_NAME"
echo "DB_USER: $DB_USER"
echo "DB_PASS: $DB_PASS"
echo "DB_ADMIN_USER: $DB_ADMIN_USER"
echo "DB_ADMIN_PASS: $DB_ADMIN_PASS"
} >> ~/zitadel.creds
msg_ok "Installed PostgreSQL"
msg_info "Installing Zitadel"
RELEASE=$(curl -si https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
wget -qc https://github.com/zitadel/zitadel/releases/download/$RELEASE/zitadel-linux-amd64.tar.gz -O - | tar -xz
mv zitadel-linux-amd64/zitadel /usr/local/bin
echo "${RELEASE}" >"/opt/zitadel_version.txt"
msg_ok "Installed Zitadel"
msg_info "Setting up Zitadel Environments"
mkdir -p /opt/zitadel
echo "/opt/zitadel/config.yaml" > "/opt/zitadel/.config"
head -c 32 < <(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9') > "/opt/zitadel/.masterkey"
{
echo "Config location: $(cat "/opt/zitadel/.config")"
echo "Masterkey: $(cat "/opt/zitadel/.masterkey")"
} >> ~/zitadel.creds
cat <<EOF >/opt/zitadel/config.yaml
Port: 8080
ExternalPort: 8080
ExternalDomain: localhost
ExternalSecure: false
TLS:
Enabled: false
KeyPath: ""
Key: ""
CertPath: ""
Cert: ""
Database:
postgres:
Host: localhost
Port: 5432
Database: ${DB_NAME}
User:
Username: ${DB_USER}
Password: ${DB_PASS}
SSL:
Mode: disable
RootCert: ""
Cert: ""
Key: ""
Admin:
Username: ${DB_ADMIN_USER}
Password: ${DB_ADMIN_PASS}
SSL:
Mode: disable
RootCert: ""
Cert: ""
Key: ""
EOF
msg_ok "Installed Zitadel Enviroments"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/zitadel.service
[Unit]
Description=ZITADEL Identiy Server
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=simple
User=zitadel
Group=zitadel
ExecStart=/usr/local/bin/zitadel start --masterkeyFile "/opt/zitadel/.masterkey" --config "/opt/zitadel/config.yaml"
Restart=always
RestartSec=5
TimeoutStartSec=0
# Security Hardening options
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q zitadel.service
msg_ok "Created Services"
msg_info "Zitadel initial setup"
zitadel start-from-init --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null &
sleep 60
kill $(lsof -i | awk '/zitadel/ {print $2}' | head -n1)
useradd zitadel
echo -e "$(zitadel -v | grep -oP 'v\d+\.\d+\.\d+')" > /opt/Zitadel_version.txt
msg_ok "Zitadel initialized"
msg_info "Set ExternalDomain to current IP and restart Zitadel"
IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
sed -i "0,/localhost/s/localhost/${IP}/" /opt/zitadel/config.yaml
systemctl stop -q zitadel.service
zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null
systemctl restart -q zitadel.service
msg_ok "Zitadel restarted with ExternalDomain set to current IP"
msg_info "Create zitadel-rerun.sh"
cat <<EOF >~/zitadel-rerun.sh
systemctl stop zitadel.service
timeout --kill-after=5s 15s zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml
systemctl restart zitadel.service
EOF
msg_ok "Bash script for rerunning Zitadel after changing Zitadel config.yaml"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf ~/zitadel-linux-amd64
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -21,7 +21,7 @@
"cpu": 1, "cpu": 1,
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "Debian", "os": "debian",
"version": "12" "version": "12"
} }
} }

View File

@@ -21,7 +21,7 @@
"cpu": 1, "cpu": 1,
"ram": 2048, "ram": 2048,
"hdd": 4, "hdd": 4,
"os": "Debian", "os": "debian",
"version": "12" "version": "12"
} }
} }

39
json/barcode-buddy.json Normal file
View File

@@ -0,0 +1,39 @@
{
"name": "Barcode Buddy",
"slug": "barcode-buddy",
"categories": [
24
],
"date_created": "2025-02-08",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
"website": "https://github.com/Forceu/barcodebuddy",
"logo": "https://raw.githubusercontent.com/Forceu/barcodebuddy/refs/heads/master/incl/img/favicon/android-icon-192x192.png",
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
"install_methods": [
{
"type": "default",
"script": "ct/barcode-buddy.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 3,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
"type": "info"
}
]
}

35
json/cosmos.json Normal file
View File

@@ -0,0 +1,35 @@
{
"name": "Cosmos",
"slug": "cosmos",
"categories": [
2,
3
],
"date_created": "2025-02-07",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://cosmos-cloud.io/doc/1%20index/",
"website": "https://cosmos-cloud.io/",
"logo": "https://cosmos-cloud.io/Logo.png",
"description": "Cosmos Cloud is a self-hosting platform that automates maintenance and security. It offers an app marketplace, reverse proxy management, container control, VPN integration, real-time monitoring, and disk management. Security features include SSO, anti-DDoS, and encryption. It simplifies self-hosting for all users.",
"install_methods": [
{
"type": "default",
"script": "ct/cosmos.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

39
json/cross-seed.json Normal file
View File

@@ -0,0 +1,39 @@
{
"name": "cross-seed",
"slug": "cross-seed",
"categories": [
14
],
"date_created": "2025-02-07",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 2468,
"documentation": "https://www.cross-seed.org/docs/category/basics",
"website": "https://www.cross-seed.org/",
"logo": "https://www.cross-seed.org/img/cross-seed.svg",
"description": "cross-seed is an app designed to help you download torrents that you can cross seed based on your existing torrents. It is designed to match conservatively to minimize manual intervention.",
"install_methods": [
{
"type": "default",
"script": "ct/cross-seed.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 2,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "After the installation cross-seed will fail to start with an empty configuration. To fix this, edit `~/.cross-seed/config.js` to properly configure cross-seed, then restart by running `systemctl restart cross-seed`.",
"type": "info"
}
]
}

View File

@@ -30,5 +30,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´",
"type": "info"
}
]
} }

View File

@@ -32,8 +32,8 @@
}, },
"notes": [ "notes": [
{ {
"text": "entering `evcc configure` in the LXC terminal will guide you through the creation of a configuration file for evcc.", "text": "To configure evcc, type `cd /etc` followed by `evcc configure` in the evcc LXC shell",
"type": "info" "type": "info"
} }
] ]
} }

34
json/excalidraw.json Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "Excalidraw",
"slug": "excalidraw",
"categories": [
12
],
"date_created": "2025-02-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://docs.excalidraw.com/docs",
"website": "https://excalidraw.com/",
"logo": "https://docs.excalidraw.com/img/logo.svg",
"description": "An open source virtual hand-drawn style whiteboard. Collaborative and end-to-end encrypted.",
"install_methods": [
{
"type": "default",
"script": "ct/excalidraw.sh",
"resources": {
"cpu": 2,
"ram": 3072,
"hdd": 6,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -21,7 +21,7 @@
"cpu": 1, "cpu": 1,
"ram": 1024, "ram": 1024,
"hdd": 2, "hdd": 2,
"os": "Debian", "os": "debian",
"version": "12" "version": "12"
} }
} }

39
json/freshrss.json Normal file
View File

@@ -0,0 +1,39 @@
{
"name": "FreshRSS",
"slug": "freshrss",
"categories": [
12
],
"date_created": "2025-02-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://freshrss.github.io/FreshRSS/en/",
"website": "https://freshrss.org/",
"logo": "https://freshrss.org/images/icon.svg",
"description": "FreshRSS is a self-hosted RSS and Atom feed aggregator that lets users collect, organize, and read from multiple sources in one place. It is lightweight, easy to work with, powerful, and customizable.",
"install_methods": [
{
"type": "default",
"script": "ct/freshrss.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat ~/freshrss.creds`",
"type": "info"
}
]
}

43
json/graylog.json Normal file
View File

@@ -0,0 +1,43 @@
{
"name": "Graylog",
"slug": "graylog",
"categories": [
9
],
"date_created": "2025-02-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9000,
"documentation": "https://go2docs.graylog.org/current/home.htm",
"website": "https://graylog.org/",
"logo": "https://graylog.org/wp-content/uploads/2023/11/gl-logo-horiz-all-white-1200w-300x96.png.webp",
"description": "Graylog is a free and open log management platform.",
"install_methods": [
{
"type": "default",
"script": "ct/graylog.sh",
"resources": {
"cpu": 2,
"ram": 8192,
"hdd": 30,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Initial Setup credentials: `tail /var/log/graylog-server/server.log` after the server starts for the first time.",
"type": "info"
},
{
"text": "Type `cat ~/graylog.creds` to get admin password that you use to log in AFTER the Initial Setup",
"type": "info"
}
]
}

View File

@@ -21,7 +21,7 @@
"cpu": 2, "cpu": 2,
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 4,
"os": "Debian", "os": "debian",
"version": "12" "version": "12"
} }
} }

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