Compare commits

...

160 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
df5cc68ea1 Update CHANGELOG.md (#10474)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-02 00:14:43 +00:00
community-scripts-pr-app[bot]
cd2acd93cd Update versions.json (#10473)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-02 01:14:21 +01:00
community-scripts-pr-app[bot]
b208b2a20d Update CHANGELOG.md (#10471)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 22:54:14 +00:00
Copilot
ca5cd83c40 Fix MariaDB runtime directory persistence on container reboot (#10468)
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-01-01 23:53:53 +01:00
community-scripts-pr-app[bot]
12767b4ffa Update CHANGELOG.md (#10470)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 22:43:43 +00:00
Gabriel David Pragin
ded7da536d fix(sabnzbd): update script now migrates old service files to use venv Python (#10466)
- Separates venv creation from service file migration logic
- Always checks and fixes service file if it uses system python3
- Fixes installations that have venv but wrong service file path
- Ensures all users running update script get automatic migration
- Idempotent: safe to run multiple times

This applies the same fix from PR #10459 (Bazarr) to SABnzbd, which has
the identical bug pattern where service file migration was locked behind
a venv existence check.

Related: #7332, #10459
2026-01-01 23:43:20 +01:00
community-scripts-pr-app[bot]
e351925119 Update CHANGELOG.md (#10463)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 18:10:02 +00:00
Karlito83
2ccbf11741 fix #10453 broken update (#10456)
Co-authored-by: Ronny Marx <r0mx@mailbox.org>
2026-01-01 19:09:43 +01:00
Gabriel David Pragin
53a2635240 fix(bazarr): update script now migrates old service files to use venv Python (#10459)
- Separates venv creation from service file migration logic
- Always checks and fixes service file if it uses /usr/bin/python3
- Fixes installations created before October 28, 2025 that upgraded to Debian 13
- Ensures all users running update script get automatic migration
- Idempotent: safe to run multiple times

Resolves issue where Bazarr fails to start on Debian 13 with 'externally-managed-environment' error for installations created before the October 28, 2025 fix (commit 909dbc20c).

Related: #7332
2026-01-01 19:09:19 +01:00
community-scripts-pr-app[bot]
1f5191c071 Update versions.json (#10460)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 13:06:13 +01:00
community-scripts-pr-app[bot]
9b7cfcff73 Update CHANGELOG.md (#10455)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 00:17:41 +00:00
community-scripts-pr-app[bot]
b7e2706eff Update versions.json (#10454)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-01 01:17:16 +01:00
community-scripts-pr-app[bot]
2d859aba23 Update CHANGELOG.md (#10452)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 19:10:08 +00:00
Copilot
76f20024f3 Increase BentoPDF RAM requirement from 2GB to 4GB (#10449)
* Initial plan

* Increase BentoPDF RAM requirement from 2GB to 4GB

- Update var_ram from 2048 to 4096 in ct/bentopdf.sh
- Update ram from 2048 to 4096 in frontend/public/json/bentopdf.json
- Fixes out-of-memory crashes during installation and updates
- Build process requires more memory than previously allocated

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

* Bump ConvertX to Debian 13 (#10450)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-12-31 20:09:43 +01:00
community-scripts-pr-app[bot]
bf35ad0d21 Update versions.json (#10443)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 13:05:49 +01:00
community-scripts-pr-app[bot]
8bac0e66f4 Update CHANGELOG.md (#10442)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 08:51:13 +00:00
Brett Lyons
72a7777328 fix(wazuh): add LXC rootcheck exclusion to prevent false positives (#10436) 2025-12-31 09:50:46 +01:00
community-scripts-pr-app[bot]
8dbc4161c7 Update CHANGELOG.md (#10441)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 08:46:47 +00:00
Fraser McGlinn
49f92e1cf4 fix(swizzin): Use HTTPS and add curl error handling (#10440)
- Add https:// to s5n.sh URL to ensure secure connection
- Add -f flag to fail on HTTP errors instead of piping error pages to bash
- Add -S flag to show errors even in silent mode

Without -f, if the server returns an error page (4xx/5xx), curl would
pipe that HTML content to bash, causing unexpected behavior.
2025-12-31 09:46:24 +01:00
community-scripts-pr-app[bot]
0fba391aa6 Update CHANGELOG.md (#10439)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 00:15:08 +00:00
community-scripts-pr-app[bot]
fd60467db9 Update versions.json (#10438)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-31 01:14:48 +01:00
community-scripts-pr-app[bot]
8ea1ec247e Update CHANGELOG.md (#10433)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 16:37:29 +00:00
iLikeToCode
08eded6e37 Unlink default nginx config (#10432)
Unlinking the nginx default config means zammad will respond on all addresses, as it should when running in a dedicated container.
2025-12-30 17:37:08 +01:00
community-scripts-pr-app[bot]
e9b22f04ab Update CHANGELOG.md (#10430)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 13:59:21 +00:00
CanbiZ (MickLesk)
eb5a1cb9f7 Remove: GoAway (#10429) 2025-12-30 14:59:00 +01:00
community-scripts-pr-app[bot]
f4ceff8d8e Update versions.json (#10426)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 13:06:15 +01:00
community-scripts-pr-app[bot]
4e988a7d60 Update CHANGELOG.md (#10424)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 07:31:42 +00:00
Slaviša Arežina
8839ad5127 Refactor (#10421) 2025-12-30 08:31:20 +01:00
community-scripts-pr-app[bot]
784e4171ce Update CHANGELOG.md (#10423)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 00:14:18 +00:00
community-scripts-pr-app[bot]
cb4ab231b9 Update versions.json (#10422)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-30 01:13:53 +01:00
community-scripts-pr-app[bot]
95cb440b2e Update CHANGELOG.md (#10420)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 19:40:56 +00:00
CanbiZ (MickLesk)
e4eea7a6ae syncthing: check for deb822 source (#10414) 2025-12-29 20:40:33 +01:00
CanbiZ (MickLesk)
2cc54fdbdf speedtest-tracker: add external IP URL and internet check hostname in .env (#10078) 2025-12-29 20:40:20 +01:00
community-scripts-pr-app[bot]
86069a1663 Update CHANGELOG.md (#10419)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 19:38:36 +00:00
CanbiZ (MickLesk)
78b4f44447 fix(pelican-panel): prevent composer superuser prompt (#10418) 2025-12-29 20:38:10 +01:00
CanbiZ
62ca1552a8 fix cleanup &>/dev/null 2025-12-29 16:10:33 +01:00
CanbiZ
eba6fd8c6d linkwarden: use npx for Playwright install command
Replaces 'yarn playwright install' with 'npx playwright install' in both update and install scripts to ensure consistent Playwright installation regardless of local yarn configuration.
2025-12-29 15:50:10 +01:00
community-scripts-pr-app[bot]
0cefe4c5c5 Update versions.json (#10410)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 13:07:02 +01:00
community-scripts-pr-app[bot]
57295c31ab Update CHANGELOG.md (#10408)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 08:35:59 +00:00
Casey Jones
5a43b901b5 add libmfx-gen1.2 for intel gpu hwaccel (#10400)
Co-authored-by: Casey Jones <jonescaseyb@gmail.com>
2025-12-29 09:35:35 +01:00
community-scripts-pr-app[bot]
f7d013287b Update CHANGELOG.md (#10405)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 00:16:26 +00:00
community-scripts-pr-app[bot]
6b1a7228d3 Update versions.json (#10404)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-29 01:16:02 +01:00
community-scripts-pr-app[bot]
9667c7a17e Update CHANGELOG.md (#10403)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 23:39:13 +00:00
CanbiZ (MickLesk)
b4a25160e4 Linkwarden: enable Corepack and prepare Yarn v4 before running yarn (#10390) 2025-12-29 00:38:46 +01:00
community-scripts-pr-app[bot]
547043e842 Update CHANGELOG.md (#10402)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 23:38:27 +00:00
CanbiZ (MickLesk)
1d278f53f6 fix(metube): use pnpm + corepack for frontend build (#10392) 2025-12-29 00:38:05 +01:00
community-scripts-pr-app[bot]
a471006c3d Update .app files (#10396)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-28 21:34:07 +01:00
community-scripts-pr-app[bot]
7b08f8d8a2 Update CHANGELOG.md (#10397)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 20:30:27 +00:00
community-scripts-pr-app[bot]
cc8bb3ec9f Update CHANGELOG.md (#10395)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 20:30:11 +00:00
community-scripts-pr-app[bot]
8c02a1023f Update date in json (#10394)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-28 20:30:06 +00:00
push-app-to-main[bot]
e17a42f905 Add mail-archiver (ct) (#10393)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-12-28 21:29:51 +01:00
community-scripts-pr-app[bot]
bef77dde87 Update CHANGELOG.md (#10389)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 19:21:38 +00:00
durzo
59a752a6ab Fix mongodb update logic (#10388)
* Fix mongodb update logic

* Simplify MongoDB installation check

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-12-28 20:21:16 +01:00
community-scripts-pr-app[bot]
99a7f30b06 Update .app files (#10386)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-28 18:30:20 +01:00
community-scripts-pr-app[bot]
a1586a748d Update CHANGELOG.md (#10385)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 17:02:09 +00:00
durzo
9a5d121910 fix pulse downloading incorrect tarball (#10383) 2025-12-28 18:01:46 +01:00
community-scripts-pr-app[bot]
dfb4e00550 Update versions.json (#10382)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 13:06:22 +01:00
community-scripts-pr-app[bot]
d095da7949 Update CHANGELOG.md (#10381)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 09:33:35 +00:00
michaelb
73c626bd3c Updated Frontend Debian and Ubuntu VM notes so links can be copied quickly. (#10379)
* Refactor code structure for improved readability and maintainability

* Revert "Refactor code structure for improved readability and maintainability"

This reverts commit 17389aeb34.

* Changed Frontend Debian and Ubuntu VM discusson links so they can be copied quickly.
2025-12-28 10:33:14 +01:00
community-scripts-pr-app[bot]
7bfb9447b2 Update CHANGELOG.md (#10380)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 08:04:28 +00:00
James Polley
8526a25541 Set default LANG in locale configuration (#9440) (#10378)
Ensures LANG is set to en_US.UTF-8 by default if not already defined before updating /etc/locale.gen.

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-28 09:04:05 +01:00
community-scripts-pr-app[bot]
5671d554f1 Update CHANGELOG.md (#10375)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 00:16:34 +00:00
community-scripts-pr-app[bot]
1962eb3d5b Update versions.json (#10374)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-28 01:16:13 +01:00
community-scripts-pr-app[bot]
2f7c54b827 Update CHANGELOG.md (#10372)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 21:02:23 +00:00
community-scripts-pr-app[bot]
e912ef1e7d Update CHANGELOG.md (#10371)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 21:02:05 +00:00
community-scripts-pr-app[bot]
6251b24eff Update date in json (#10370)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-12-27 21:01:58 +00:00
push-app-to-main[bot]
6fa0d47ff2 nextcloud-exporter (#10314)
* Add nextcloud-exporter (addon)

* rename

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-12-27 22:01:41 +01:00
community-scripts-pr-app[bot]
1cab60ac6a Update CHANGELOG.md (#10369)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 20:55:31 +00:00
Slaviša Arežina
0e89a65597 Fix need for verbose (#10368) 2025-12-27 21:55:06 +01:00
community-scripts-pr-app[bot]
183b92dc4b Update versions.json (#10363)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 13:06:32 +01:00
community-scripts-pr-app[bot]
375076d294 Update CHANGELOG.md (#10361)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 09:17:51 +00:00
durzo
9582910787 Fix build for 2.13.5 (#10340) 2025-12-27 10:17:30 +01:00
community-scripts-pr-app[bot]
046e50778c Update CHANGELOG.md (#10360)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 09:01:09 +00:00
Slaviša Arežina
1d34ecc981 Database cred fixes (#10359) 2025-12-27 10:00:41 +01:00
community-scripts-pr-app[bot]
c62b78f34b Update CHANGELOG.md (#10357)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 00:14:40 +00:00
community-scripts-pr-app[bot]
fcfb4e9f4b Update versions.json (#10356)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-27 01:14:17 +01:00
community-scripts-pr-app[bot]
a25a469177 Update CHANGELOG.md (#10354)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 18:59:02 +00:00
CanbiZ (MickLesk)
e5943404f9 fix(phpipam): use PHP 8.4 with correct mysql module for PDO support (#10348) 2025-12-26 19:58:38 +01:00
community-scripts-pr-app[bot]
023a6e54a4 Update CHANGELOG.md (#10353)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 18:58:11 +00:00
CanbiZ (MickLesk)
bbc326ec23 fix(hyperion): increase disk to 4GB and fix /root/. path error (#10349) 2025-12-26 19:57:49 +01:00
community-scripts-pr-app[bot]
3dfd7e5fc3 Update CHANGELOG.md (#10345)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 16:56:16 +00:00
Tobias
59ee3b0836 fix: zoraxy: category (#10344) 2025-12-26 17:55:55 +01:00
community-scripts-pr-app[bot]
84d3a2a478 Update versions.json (#10339)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 13:06:47 +01:00
community-scripts-pr-app[bot]
a50af10a85 Update CHANGELOG.md (#10337)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 08:59:27 +00:00
Parker Shankin-Clarke
5aa1db077b categorize valkey as database (#10331) 2025-12-26 09:58:54 +01:00
community-scripts-pr-app[bot]
45b3d2d1cc Update CHANGELOG.md (#10334)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 00:15:20 +00:00
community-scripts-pr-app[bot]
22a2696ca3 Update versions.json (#10333)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-26 01:14:57 +01:00
community-scripts-pr-app[bot]
dedab50711 Update CHANGELOG.md (#10329)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 18:40:02 +00:00
Mateusz Ż
b7bfaee6a7 fix vertical scroll on website (#10317) 2025-12-25 19:39:36 +01:00
community-scripts-pr-app[bot]
b618f82564 Update CHANGELOG.md (#10326)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 14:22:45 +00:00
Slaviša Arežina
e6ee6e66bf Refactor: OpenObserve (#10279) 2025-12-25 15:22:24 +01:00
community-scripts-pr-app[bot]
97211b41b7 Update CHANGELOG.md (#10325)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 14:22:05 +00:00
community-scripts-pr-app[bot]
20a55d4543 Update CHANGELOG.md (#10324)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 14:21:45 +00:00
Slaviša Arežina
0ece3263bd Refactor: NZBGet (#10302) 2025-12-25 15:21:41 +01:00
community-scripts-pr-app[bot]
9f1e214bc0 Update CHANGELOG.md (#10323)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 14:21:26 +00:00
Slaviša Arežina
37007f1efe Refactor (#10303) 2025-12-25 15:21:20 +01:00
Slaviša Arežina
e926182748 Refactor (#10304) 2025-12-25 15:21:00 +01:00
community-scripts-pr-app[bot]
fa8c8ef85c Update CHANGELOG.md (#10322)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 14:18:23 +00:00
Slaviša Arežina
c769a43f62 InfluxDB: Fixes (#10308) 2025-12-25 15:17:56 +01:00
community-scripts-pr-app[bot]
d91753824c Update versions.json (#10320)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 13:07:38 +01:00
community-scripts-pr-app[bot]
77a3eacd21 Update CHANGELOG.md (#10315)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 07:32:04 +00:00
Chris Muzyn
404e87a2e3 Increase Zot Default Memory, Recategorize (#10311) 2025-12-25 08:31:40 +01:00
community-scripts-pr-app[bot]
34a8ed8358 Update CHANGELOG.md (#10313)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 00:14:06 +00:00
community-scripts-pr-app[bot]
f6f6815ac1 Update versions.json (#10312)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-25 01:13:44 +01:00
community-scripts-pr-app[bot]
256a80f18f Update CHANGELOG.md (#10309)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 23:45:26 +00:00
Tobias
9613bf672a pihole-exporter fix: unbound var (#10307) 2025-12-25 00:45:04 +01:00
community-scripts-pr-app[bot]
978f2a36a5 Update CHANGELOG.md (#10301)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 21:39:20 +00:00
Tobias
a6d05ae5e6 fix: technitium: service migration (#10300) 2025-12-24 22:38:55 +01:00
community-scripts-pr-app[bot]
e6ca8a646d Update CHANGELOG.md (#10297)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:29:35 +00:00
community-scripts-pr-app[bot]
4e417dbdda Update CHANGELOG.md (#10296)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:29:18 +00:00
Slaviša Arežina
5a230837d3 Update dependencies (#10275) 2025-12-24 15:29:11 +01:00
Slaviša Arežina
23e3be00f0 Refactor (#10274) 2025-12-24 15:28:56 +01:00
community-scripts-pr-app[bot]
c074d3f567 Update CHANGELOG.md (#10295)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:28:27 +00:00
community-scripts-pr-app[bot]
12037c8468 Update CHANGELOG.md (#10294)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:28:05 +00:00
Slaviša Arežina
1a5c7680ee Refactor (#10276) 2025-12-24 15:28:00 +01:00
community-scripts-pr-app[bot]
2934b10415 Update CHANGELOG.md (#10293)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:27:44 +00:00
Slaviša Arežina
133e1484ad Refactor (#10277) 2025-12-24 15:27:39 +01:00
Slaviša Arežina
b22265047c Refactor (#10278) 2025-12-24 15:27:20 +01:00
community-scripts-pr-app[bot]
9b728ee2e0 Update CHANGELOG.md (#10292)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 14:25:03 +00:00
Slaviša Arežina
bf51483235 Refactor (#10280) 2025-12-24 15:24:42 +01:00
community-scripts-pr-app[bot]
f1fc6b0298 Update CHANGELOG.md (#10291)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:23:40 +00:00
community-scripts-pr-app[bot]
4a878169be Update CHANGELOG.md (#10290)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:23:23 +00:00
CanbiZ (MickLesk)
f1c6f573aa fix(build): correct local template discovery and simplify pattern logic (#10282) 2025-12-24 14:23:10 +01:00
community-scripts-pr-app[bot]
920a170c1e Update CHANGELOG.md (#10289)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:59 +00:00
Slaviša Arežina
63e883f9ea Refactir (#10241) 2025-12-24 14:22:49 +01:00
community-scripts-pr-app[bot]
733821bfce Update CHANGELOG.md (#10288)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:38 +00:00
Slaviša Arežina
7a44080eda Pocketbase: Add note for superuser account creation (#10245) 2025-12-24 14:22:33 +01:00
Slaviša Arežina
5730506c03 Refactor (#10256) 2025-12-24 14:22:18 +01:00
community-scripts-pr-app[bot]
ba06d13598 Update CHANGELOG.md (#10287)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:22:05 +00:00
Slaviša Arežina
c0f4ac5750 Refactor (#10258) 2025-12-24 14:21:58 +01:00
community-scripts-pr-app[bot]
36391bfc1e Update CHANGELOG.md (#10286)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:21:45 +00:00
Slaviša Arežina
509ea946a6 Refactor (#10259) 2025-12-24 14:21:41 +01:00
community-scripts-pr-app[bot]
489b78aaf3 Update CHANGELOG.md (#10285)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:21:27 +00:00
Slaviša Arežina
261f746ff1 Reefactor (#10260) 2025-12-24 14:21:23 +01:00
Slaviša Arežina
1a7da4bc91 Refactor (#10262) 2025-12-24 14:21:02 +01:00
community-scripts-pr-app[bot]
69f81cec04 Update versions.json (#10283)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 13:06:24 +01:00
community-scripts-pr-app[bot]
cca6521b62 Update CHANGELOG.md (#10273)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 08:26:20 +00:00
Uncloak2
0cd82a058c Update recyclarr-install.sh (#10272) 2025-12-24 09:25:52 +01:00
community-scripts-pr-app[bot]
0d3e872c7c Update CHANGELOG.md (#10271)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 00:14:23 +00:00
community-scripts-pr-app[bot]
97f74fd9dd Update versions.json (#10270)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-24 01:14:03 +01:00
community-scripts-pr-app[bot]
42f32804ba Update CHANGELOG.md (#10269)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 23:00:55 +00:00
Slaviša Arežina
b6026af8f7 Fixes (#10261) 2025-12-24 00:00:35 +01:00
community-scripts-pr-app[bot]
5dc05ce79f Update CHANGELOG.md (#10268)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 22:58:58 +00:00
Slaviša Arežina
85d5693e1a Refactor (#10255) 2025-12-23 23:58:37 +01:00
community-scripts-pr-app[bot]
8e8ae9d992 Update CHANGELOG.md (#10267)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 22:41:02 +00:00
Slaviša Arežina
4da54f1593 Small improvement (#10254) 2025-12-23 23:40:41 +01:00
community-scripts-pr-app[bot]
d6ef21c077 Update CHANGELOG.md (#10265)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:32:21 +00:00
community-scripts-pr-app[bot]
92ff5f60ff Update CHANGELOG.md (#10264)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:32:12 +00:00
Copilot
3953fa1e25 Fix Recyclarr page TypeError: schema mismatch in notes field (#10253)
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-12-23 22:32:01 +01:00
community-scripts-pr-app[bot]
2acac97417 Update CHANGELOG.md (#10263)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 21:31:49 +00:00
Slaviša Arežina
6e640f8eb6 Fixes (#10257) 2025-12-23 22:31:27 +01:00
community-scripts-pr-app[bot]
2478aa84e8 Update CHANGELOG.md (#10250)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:29:34 +00:00
Tobias
f02e25182b fix: pihole-exporter: unknown function (#10249) 2025-12-23 14:29:13 +01:00
community-scripts-pr-app[bot]
94d12ff1aa Update CHANGELOG.md (#10248)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:19:27 +00:00
Slaviša Arežina
f6f4c3411c Refactor: Beszel (#10195)
* Refactor

* Update

* Update

* Update
2025-12-23 14:19:03 +01:00
community-scripts-pr-app[bot]
e819bf69f2 Update CHANGELOG.md (#10247)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:18:50 +00:00
Slaviša Arežina
d76150d9a3 Migrate service file to refactored installation (#10240) 2025-12-23 14:18:24 +01:00
community-scripts-pr-app[bot]
931dbd8c9f Update CHANGELOG.md (#10246)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 12:51:33 +00:00
Gerhard Burger
eb0486a698 Update forgejo to debian13 and fix env var (#10242) 2025-12-23 13:51:06 +01:00
community-scripts-pr-app[bot]
ae28705178 Update versions.json (#10244)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-23 13:07:35 +01:00
103 changed files with 1461 additions and 1108 deletions

View File

@@ -10,8 +10,211 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2026-01-02
## 2026-01-01
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(sabnzbd): update script now migrates old service files to use venv Python [@vidonnus](https://github.com/vidonnus) ([#10466](https://github.com/community-scripts/ProxmoxVE/pull/10466))
- fix(bazarr): update script now migrates old service files to use venv Python [@vidonnus](https://github.com/vidonnus) ([#10459](https://github.com/community-scripts/ProxmoxVE/pull/10459))
- fix #10453 broken sonarqube update [@Karlito83](https://github.com/Karlito83) ([#10456](https://github.com/community-scripts/ProxmoxVE/pull/10456))
### 💾 Core
- #### 🐞 Bug Fixes
- Fix MariaDB runtime directory persistence on container reboot [@Copilot](https://github.com/Copilot) ([#10468](https://github.com/community-scripts/ProxmoxVE/pull/10468))
## 2025-12-31
### 🚀 Updated Scripts
- fix(wazuh): add LXC rootcheck exclusion to prevent false positives [@brettlyons](https://github.com/brettlyons) ([#10436](https://github.com/community-scripts/ProxmoxVE/pull/10436))
- #### 🐞 Bug Fixes
- Increase BentoPDF RAM requirement from 2GB to 4GB [@Copilot](https://github.com/Copilot) ([#10449](https://github.com/community-scripts/ProxmoxVE/pull/10449))
- fix(swizzin): Use HTTPS and add curl error handling [@fmcglinn](https://github.com/fmcglinn) ([#10440](https://github.com/community-scripts/ProxmoxVE/pull/10440))
## 2025-12-30
### 🚀 Updated Scripts
- #### ✨ New Features
- Unlink default nginx config [@iLikeToCode](https://github.com/iLikeToCode) ([#10432](https://github.com/community-scripts/ProxmoxVE/pull/10432))
- #### 🔧 Refactor
- Refactor: Firefly [@tremor021](https://github.com/tremor021) ([#10421](https://github.com/community-scripts/ProxmoxVE/pull/10421))
### 🗑️ Deleted Scripts
- Remove: GoAway [@MickLesk](https://github.com/MickLesk) ([#10429](https://github.com/community-scripts/ProxmoxVE/pull/10429))
## 2025-12-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- syncthing: check for deb822 source [@MickLesk](https://github.com/MickLesk) ([#10414](https://github.com/community-scripts/ProxmoxVE/pull/10414))
- speedtest-tracker: add external IP URL and internet check hostname in .env [@MickLesk](https://github.com/MickLesk) ([#10078](https://github.com/community-scripts/ProxmoxVE/pull/10078))
- Pelican-panel: prevent composer superuser prompt [@MickLesk](https://github.com/MickLesk) ([#10418](https://github.com/community-scripts/ProxmoxVE/pull/10418))
### 💾 Core
- #### 🐞 Bug Fixes
- add libmfx-gen1.2 for intel gpu hwaccel [@jcnix](https://github.com/jcnix) ([#10400](https://github.com/community-scripts/ProxmoxVE/pull/10400))
## 2025-12-28
### 🆕 New Scripts
- Mail-Archiver ([#10393](https://github.com/community-scripts/ProxmoxVE/pull/10393))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix mongodb update logic [@durzo](https://github.com/durzo) ([#10388](https://github.com/community-scripts/ProxmoxVE/pull/10388))
- fix pulse downloading incorrect tarball [@durzo](https://github.com/durzo) ([#10383](https://github.com/community-scripts/ProxmoxVE/pull/10383))
- #### 🔧 Refactor
- Linkwarden: enable Corepack and prepare Yarn v4 before running yarn [@MickLesk](https://github.com/MickLesk) ([#10390](https://github.com/community-scripts/ProxmoxVE/pull/10390))
- metube: use pnpm + corepack for frontend build [@MickLesk](https://github.com/MickLesk) ([#10392](https://github.com/community-scripts/ProxmoxVE/pull/10392))
### 💾 Core
- #### 🐞 Bug Fixes
- Set default LANG in locale configuration [@jamezpolley](https://github.com/jamezpolley) ([#10378](https://github.com/community-scripts/ProxmoxVE/pull/10378))
### ❔ Uncategorized
- Updated Frontend Debian and Ubuntu VM notes so links can be copied quickly. [@mzb2xeo](https://github.com/mzb2xeo) ([#10379](https://github.com/community-scripts/ProxmoxVE/pull/10379))
## 2025-12-27
### 🆕 New Scripts
- nextcloud-exporter ([#10314](https://github.com/community-scripts/ProxmoxVE/pull/10314))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Dotnet ASP Web API: Fix need for verbose [@tremor021](https://github.com/tremor021) ([#10368](https://github.com/community-scripts/ProxmoxVE/pull/10368))
- Npm: fix build for 2.13.5 [@durzo](https://github.com/durzo) ([#10340](https://github.com/community-scripts/ProxmoxVE/pull/10340))
- Outline: Fix for database connection string [@tremor021](https://github.com/tremor021) ([#10359](https://github.com/community-scripts/ProxmoxVE/pull/10359))
## 2025-12-26
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- phpipam: use PHP 8.4 with correct mysql module for PDO support [@MickLesk](https://github.com/MickLesk) ([#10348](https://github.com/community-scripts/ProxmoxVE/pull/10348))
- hyperion: increase disk to 4GB and tools.func: fix /root/. path error [@MickLesk](https://github.com/MickLesk) ([#10349](https://github.com/community-scripts/ProxmoxVE/pull/10349))
### ❔ Uncategorized
- fix: zoraxy: category [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10344](https://github.com/community-scripts/ProxmoxVE/pull/10344))
- categorize valkey as database [@pshankinclarke](https://github.com/pshankinclarke) ([#10331](https://github.com/community-scripts/ProxmoxVE/pull/10331))
## 2025-12-25
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- InfluxDB: Fixes [@tremor021](https://github.com/tremor021) ([#10308](https://github.com/community-scripts/ProxmoxVE/pull/10308))
- Increase Zot Default Memory, Recategorize [@chrismuzyn](https://github.com/chrismuzyn) ([#10311](https://github.com/community-scripts/ProxmoxVE/pull/10311))
- #### 🔧 Refactor
- Refactor: OpenObserve [@tremor021](https://github.com/tremor021) ([#10279](https://github.com/community-scripts/ProxmoxVE/pull/10279))
- Refactor: NZBGet [@tremor021](https://github.com/tremor021) ([#10302](https://github.com/community-scripts/ProxmoxVE/pull/10302))
- Refactor: ntfy [@tremor021](https://github.com/tremor021) ([#10303](https://github.com/community-scripts/ProxmoxVE/pull/10303))
- Refactor: Notifiarr [@tremor021](https://github.com/tremor021) ([#10304](https://github.com/community-scripts/ProxmoxVE/pull/10304))
### 🌐 Website
- Fix horizontal scroll on website [@mateossh](https://github.com/mateossh) ([#10317](https://github.com/community-scripts/ProxmoxVE/pull/10317))
## 2025-12-24
### 🚀 Updated Scripts
- recyclarr: increase cron path [@Uncloak2](https://github.com/Uncloak2) ([#10272](https://github.com/community-scripts/ProxmoxVE/pull/10272))
- #### 🐞 Bug Fixes
- fix: technitium: service migration [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10300](https://github.com/community-scripts/ProxmoxVE/pull/10300))
- #### 🔧 Refactor
- Overseerr: Update dependencies [@tremor021](https://github.com/tremor021) ([#10275](https://github.com/community-scripts/ProxmoxVE/pull/10275))
- Refactor: Paperless-GPT [@tremor021](https://github.com/tremor021) ([#10274](https://github.com/community-scripts/ProxmoxVE/pull/10274))
- Refactor: Outline [@tremor021](https://github.com/tremor021) ([#10276](https://github.com/community-scripts/ProxmoxVE/pull/10276))
- Refactor: OTS [@tremor021](https://github.com/tremor021) ([#10277](https://github.com/community-scripts/ProxmoxVE/pull/10277))
- Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#10278](https://github.com/community-scripts/ProxmoxVE/pull/10278))
- Refactor: Open Archiver [@tremor021](https://github.com/tremor021) ([#10280](https://github.com/community-scripts/ProxmoxVE/pull/10280))
- Refactor: Tautulli [@tremor021](https://github.com/tremor021) ([#10241](https://github.com/community-scripts/ProxmoxVE/pull/10241))
- Refactor: PrivateBin [@tremor021](https://github.com/tremor021) ([#10256](https://github.com/community-scripts/ProxmoxVE/pull/10256))
- Refactor: Podman-Home Assistant [@tremor021](https://github.com/tremor021) ([#10258](https://github.com/community-scripts/ProxmoxVE/pull/10258))
- Refactor: Plant-it [@tremor021](https://github.com/tremor021) ([#10259](https://github.com/community-scripts/ProxmoxVE/pull/10259))
- Refactor: PatchMon [@tremor021](https://github.com/tremor021) ([#10260](https://github.com/community-scripts/ProxmoxVE/pull/10260))
- Refactor: Part-DB [@tremor021](https://github.com/tremor021) ([#10262](https://github.com/community-scripts/ProxmoxVE/pull/10262))
### 💾 Core
- #### 🐞 Bug Fixes
- core: correct local template discovery regex pattern [@MickLesk](https://github.com/MickLesk) ([#10282](https://github.com/community-scripts/ProxmoxVE/pull/10282))
### 🧰 Tools
- #### 🐞 Bug Fixes
- pihole-exporter fix: unbound var [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10307](https://github.com/community-scripts/ProxmoxVE/pull/10307))
### ❔ Uncategorized
- Pocketbase: Add note for superuser account creation [@tremor021](https://github.com/tremor021) ([#10245](https://github.com/community-scripts/ProxmoxVE/pull/10245))
## 2025-12-23
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Technitium DNS: Migrate service [@tremor021](https://github.com/tremor021) ([#10240](https://github.com/community-scripts/ProxmoxVE/pull/10240))
- Update forgejo to debian13 and fix env var [@burgerga](https://github.com/burgerga) ([#10242](https://github.com/community-scripts/ProxmoxVE/pull/10242))
- #### 🔧 Refactor
- Passbolt: Small fixes [@tremor021](https://github.com/tremor021) ([#10261](https://github.com/community-scripts/ProxmoxVE/pull/10261))
- Refactor: ProjectSend [@tremor021](https://github.com/tremor021) ([#10255](https://github.com/community-scripts/ProxmoxVE/pull/10255))
- Prometheus Paperless NGX Exporter: Small fix [@tremor021](https://github.com/tremor021) ([#10254](https://github.com/community-scripts/ProxmoxVE/pull/10254))
- Podman: Fixes [@tremor021](https://github.com/tremor021) ([#10257](https://github.com/community-scripts/ProxmoxVE/pull/10257))
- Refactor: Beszel [@tremor021](https://github.com/tremor021) ([#10195](https://github.com/community-scripts/ProxmoxVE/pull/10195))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix: pihole-exporter: unknown function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10249](https://github.com/community-scripts/ProxmoxVE/pull/10249))
### ❔ Uncategorized
- Fix Recyclarr page TypeError: schema mismatch in notes field [@Copilot](https://github.com/Copilot) ([#10253](https://github.com/community-scripts/ProxmoxVE/pull/10253))
## 2025-12-22
### 🚀 Updated Scripts

View File

@@ -38,8 +38,13 @@ function update_script() {
msg_info "Setup Bazarr"
mkdir -p /var/lib/bazarr/
chmod 775 /opt/bazarr /var/lib/bazarr/
# Always ensure venv exists
if [[ ! -d /opt/bazarr/venv/ ]]; then
$STD uv venv /opt/bazarr/venv --python 3.12
fi
# Always check and fix service file if needed
if [[ -f /etc/systemd/system/bazarr.service ]] && grep -q "ExecStart=/usr/bin/python3" /etc/systemd/system/bazarr.service; then
sed -i "s|ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py|ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py|g" /etc/systemd/system/bazarr.service
systemctl daemon-reload
fi

View File

@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="BentoPDF"
var_tags="${var_tags:-pdf-editor}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"

View File

@@ -27,19 +27,22 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
systemctl stop beszel-hub
msg_info "Stopped Service"
msg_info "Updating $APP"
$STD /opt/beszel/beszel update
sleep 2 && chmod +x /opt/beszel/beszel
msg_ok "Updated $APP"
if check_for_gh_release "beszel" "henrygd/beszel"; then
msg_info "Stopping Service"
systemctl stop beszel-hub
msg_info "Stopped Service"
msg_info "Starting Service"
systemctl start beszel-hub
msg_ok "Successfully started $APP"
msg_ok "Updated successfully!"
msg_info "Updating Beszel"
$STD /opt/beszel/beszel update
sleep 2 && chmod +x /opt/beszel/beszel
msg_ok "Updated Beszel"
msg_info "Starting Service"
systemctl start beszel-hub
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -73,17 +73,13 @@ function update_script() {
msg_ok "Updated Firefly"
if [[ "${IMPORTER_INSTALLED:-0}" -eq 1 ]]; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dataimporter" "firefly-iii/data-importer" "prebuild" "latest" "/opt/firefly/dataimporter" "DataImporter-v*.tar.gz"
msg_info "Updating Firefly Importer"
IMPORTER_RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/data-importer/releases/latest | grep tag_name | cut -d '"' -f 4 | sed 's/v//')
rm -rf /opt/firefly/dataimporter
mkdir -p /opt/firefly/dataimporter
curl -fsSL "https://github.com/firefly-iii/data-importer/releases/download/v${IMPORTER_RELEASE}/DataImporter-v${IMPORTER_RELEASE}.tar.gz" -o "/opt/DataImporter.tar.gz"
tar -xzf /opt/DataImporter.tar.gz -C /opt/firefly/dataimporter
if [[ -f /opt/dataimporter.env ]]; then
cp /opt/dataimporter.env /opt/firefly/dataimporter/.env
fi
chown -R www-data:www-data /opt/firefly/dataimporter
rm -f /opt/DataImporter.tar.gz
msg_ok "Updated Firefly Importer"
fi
systemctl start apache2

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -44,6 +44,14 @@ function update_script() {
rm -rf forgejo-$RELEASE-linux-amd64
msg_ok "Cleaned"
# Fix env var from older version of community script
if grep -q "GITEA_WORK_DIR" /etc/systemd/system/forgejo.service; then
msg_info "Updating Service File"
sed -i "s/GITEA_WORK_DIR/FORGEJO_WORK_DIR/g" /etc/systemd/system/forgejo.service
systemctl daemon-reload
msg_ok "Updated Service File"
fi
msg_info "Starting Service"
systemctl start forgejo
msg_ok "Started Service"

View File

@@ -1,54 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pommee/goaway
APP="GoAway"
var_tags="${var_tags:-network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/goaway ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "goaway" "pommee/goaway"; then
msg_info "Stopping Services"
systemctl stop goaway
msg_ok "Stopped Services"
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
msg_info "Starting Services"
systemctl start goaway
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

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

6
ct/headers/mail-archiver Normal file
View File

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

View File

@@ -9,7 +9,7 @@ APP="Hyperion"
var_tags="${var_tags:-ambient-lightning}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"

View File

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

View File

@@ -42,11 +42,23 @@ function update_script() {
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
msg_info "Updating ${APP}"
msg_info "Updating Linkwarden"
cd /opt/linkwarden
yarn_ver="4.12.0"
if [[ -f package.json ]]; then
pkg_manager=$(jq -r '.packageManager // empty' package.json 2>/dev/null || true)
if [[ -n "$pkg_manager" && "$pkg_manager" == yarn@* ]]; then
yarn_spec="${pkg_manager#yarn@}"
yarn_ver="${yarn_spec%%+*}"
fi
fi
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare "yarn@${yarn_ver}" --activate || true
fi
$STD yarn
$STD npx playwright install-deps
$STD yarn playwright install
$STD npx playwright install
mv /opt/.env /opt/linkwarden/.env
$STD yarn prisma:generate
$STD yarn web:build
@@ -55,7 +67,7 @@ function update_script() {
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
rm -rf /root/.cache/yarn
rm -rf /opt/linkwarden/.next/cache
msg_ok "Updated ${APP}"
msg_ok "Updated Linkwarden"
msg_info "Starting Service"
systemctl start linkwarden

71
ct/mail-archiver.sh Normal file
View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/s1t5/mail-archiver
APP="Mail-Archiver"
var_tags="${var_tags:-mail-archiver}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/mail-archiver ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "mail-archiver" "s1t5/mail-archiver"; then
msg_info "Stopping Mail-Archiver"
systemctl stop mail-archiver
msg_ok "Stopped Mail-Archiver"
msg_info "Creating Backup"
cp /opt/mail-archiver/appsettings.json /opt/mail-archiver/.env /opt/
[[ -d /opt/mail-archiver/DataProtection-Keys ]] && cp -r /opt/mail-archiver/DataProtection-Keys /opt
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball"
msg_info "Updating Mail-Archiver"
mv /opt/mail-archiver /opt/mail-archiver-build
cd /opt/mail-archiver-build
$STD dotnet restore
$STD dotnet publish -c Release -o /opt/mail-archiver
rm -rf /opt/mail-archiver-build
msg_ok "Updated Mail-Archiver"
msg_info "Restoring Backup"
cp /opt/appsettings.json /opt/.env /opt/mail-archiver
[[ -d /opt/DataProtection-Keys ]] && cp -r /opt/DataProtection-Keys /opt/mail-archiver/
msg_ok "Restored Backup"
msg_info "Starting Mail-Archiver"
systemctl start mail-archiver
msg_ok "Started Mail-Archiver"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"

View File

@@ -40,6 +40,8 @@ function update_script() {
fi
fi
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
if check_for_gh_release "metube" "alexta69/metube"; then
msg_info "Stopping Service"
systemctl stop metube
@@ -56,8 +58,12 @@ function update_script() {
msg_info "Building Frontend"
cd /opt/metube/ui
$STD npm install
$STD node_modules/.bin/ng build
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare pnpm --activate || true
fi
$STD pnpm install --frozen-lockfile
$STD pnpm run build
msg_ok "Built Frontend"
PYTHON_VERSION="3.13" setup_uv

View File

@@ -23,13 +23,14 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list && ! -f /etc/apt/sources.list.d/mongodb-org-8.0.list ]]; then
msg_error "No ${APP} Installation Found!"
exit
if ! command -v mongod &>/dev/null; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
msg_info "Updating MongoDB LXC"
$STD apt update
$STD apt -y upgrade
$STD apt upgrade -y
msg_ok "Updated successfully!"
exit
}

View File

@@ -53,7 +53,7 @@ function update_script() {
#grep "tag_name" |
#awk '{print substr($2, 3, length($2)-4) }')
RELEASE="2.13.4"
RELEASE="2.13.5"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
msg_info "Stopping Services"
@@ -126,6 +126,7 @@ function update_script() {
# Replace node-sass with sass in package.json before installation
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
$STD yarn install --network-timeout 600000
$STD yarn locale-compile
$STD yarn build
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images

View File

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

View File

@@ -34,21 +34,18 @@ function update_script() {
rm -f /etc/apt/sources.list.d/archive.heckel.io.list
rm -f /etc/apt/sources.list.d/archive.heckel.io.list.bak
rm -f /etc/apt/sources.list.d/archive.heckel.io.sources
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
cat <<'EOF' >/etc/apt/sources.list.d/ntfy.sources
Types: deb
URIs: https://archive.ntfy.sh/apt/
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/ntfy.gpg
EOF
setup_deb822_repo \
"ntfy" \
"https://archive.ntfy.sh/apt/keyring.gpg" \
"https://archive.ntfy.sh/apt/" \
"stable"
msg_ok "Corrected old Ntfy Repository"
fi
msg_info "Updating $APP LXC"
msg_info "Updating ntfy"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated $APP LXC"
$STD apt upgrade -y
msg_ok "Updated ntfy"
msg_ok "Updated successfully!"
exit
}

View File

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

View File

@@ -34,7 +34,7 @@ function update_script() {
msg_ok "Stopped Services"
cp /opt/openarchiver/.env /opt/openarchiver.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball" "latest" "/opt/openarchiver"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
mv /opt/openarchiver.env /opt/openarchiver/.env
msg_info "Updating Open Archiver"

View File

@@ -27,13 +27,16 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP"
systemctl stop openobserve
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
systemctl start openobserve
msg_ok "Updated $APP"
msg_ok "Updated successfully!"
if check_for_gh_release "openobserve" "openobserve/openobserve"; then
msg_info "Updating OpenObserve"
systemctl stop openobserve
RELEASE=$(get_latest_github_release "openobserve/openobserve")
tar zxf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/v$RELEASE/openobserve-v$RELEASE-linux-amd64.tar.gz) -C /opt/openobserve
systemctl start openobserve
msg_ok "Updated OpenObserve"
msg_ok "Updated successfully!"
fi
exit
}

View File

@@ -27,18 +27,19 @@ function update_script() {
msg_error "No Paperless-GPT installation found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
if check_for_gh_release "paperless-gpt" "icereed/paperless-gpt"; then
msg_info "Stopping Service"
systemctl stop paperless-gpt
msg_ok "Service Stopped"
msg_info "Updating Paperless-GPT to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
rm -rf /opt/paperless-gpt
mv paperless-gpt-${RELEASE} /opt/paperless-gpt
if should_update_tool "node" "24"; then
NODE_VERSION="24" setup_nodejs
fi
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
msg_info "Updating Paperless-GPT"
cd /opt/paperless-gpt/web-app
$STD npm install
$STD npm run build
@@ -47,16 +48,12 @@ function update_script() {
export CC=musl-gcc
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
rm -f $temp_file
echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
msg_ok "Updated Paperless-GPT to ${RELEASE}"
msg_ok "Updated Paperless-GPT"
msg_info "Starting Service"
systemctl start paperless-gpt
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}

View File

@@ -27,8 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/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
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
if check_for_gh_release "partdb" "Part-DB/Part-DB-server"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_ok "Stopped Service"
@@ -36,7 +37,7 @@ function update_script() {
msg_info "Updating $APP to v${RELEASE}"
cd /opt
mv /opt/partdb/ /opt/partdb-backup
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip")
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
$STD unzip "v${RELEASE}.zip"
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
@@ -54,15 +55,13 @@ function update_script() {
chown -R www-data:www-data /opt/partdb
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/partdb-backup
echo "${RELEASE}" >/opt/${APP}_version.txt
echo "${RELEASE}" >~/.partdb
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

View File

@@ -33,7 +33,7 @@ function update_script() {
systemctl stop apache2
msg_ok "Stopped Service"
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
msg_info "Installing PHP-PEAR"
$STD apt install -y \

View File

@@ -37,7 +37,7 @@ function update_script() {
if [ "$UPD" == "1" ]; then
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
$STD apt upgrade -y
msg_ok "Updated successfully!"
msg_info "Updating All Containers\n"
@@ -65,7 +65,7 @@ function update_script() {
exit
fi
if [ "$UPD" == "3" ]; then
IP=$(hostname -I | awk '{print $1}')
import_local_ip
msg_info "Installing FileBrowser"
$STD curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
$STD filebrowser config init -a '0.0.0.0'
@@ -74,23 +74,25 @@ function update_script() {
msg_ok "Installed FileBrowser"
msg_info "Creating Service"
service_path="/etc/systemd/system/filebrowser.service"
echo "[Unit]
Description=Filebrowser
After=network-online.target
[Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /
[Install]
WantedBy=default.target" >$service_path
cat <<EOF >/etc/systemd/system/filebrowser.service
[Unit]
Description=Filebrowser
After=network-online.target
$STD systemctl enable --now filebrowser
[Service]
User=root
WorkingDirectory=/root/
ExecStart=/usr/local/bin/filebrowser -r /
[Install]
WantedBy=default.target
EOF
systemctl enable -q --now filebrowser
msg_ok "Created Service"
msg_ok "Completed Successfully!\n"
echo -e "FileBrowser should be reachable by going to the following URL.
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
${BL}http://$LOCAL_IP:8080${CL} admin|helper-scripts.com\n"
exit
fi
if [ "$UPD" == "4" ]; then
@@ -99,7 +101,6 @@ function update_script() {
msg_ok "Removed ALL Unused Images"
exit
fi
}
start

View File

@@ -29,7 +29,7 @@ function update_script() {
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
$STD apt upgrade -y
msg_ok "Updated successfully!"
exit
}

View File

@@ -48,7 +48,6 @@ function update_script() {
msg_info "Starting Service"
systemctl start apache2
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit

View File

@@ -38,7 +38,7 @@ function update_script() {
rm -f /opt/pulse/pulse
fi
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-amd64.tar.gz"
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
mkdir -p /etc/pulse
chown pulse:pulse /etc/pulse

View File

@@ -38,16 +38,18 @@ function update_script() {
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
# Always ensure venv exists
if [[ ! -d /opt/sabnzbd/venv ]]; then
msg_info "Migrating SABnzbd to uv virtual environment"
$STD uv venv /opt/sabnzbd/venv
msg_ok "Created uv venv at /opt/sabnzbd/venv"
fi
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
systemctl daemon-reload
msg_ok "Updated SABnzbd service to use uv venv"
fi
# Always check and fix service file if needed
if [[ -f /etc/systemd/system/sabnzbd.service ]] && grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
systemctl daemon-reload
msg_ok "Updated SABnzbd service to use uv venv"
fi
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python

View File

@@ -43,7 +43,7 @@ function update_script() {
RELEASE=$(get_latest_github_release "SonarSource/sonarqube")
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube
mv /opt/sonarqube-${RELEASE} /opt/sonarqube
msg_ok "Updated SonarQube"
msg_info "Restoring Backup"

View File

@@ -33,6 +33,7 @@ function update_script() {
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
setcap cap_net_raw+ep /bin/ping
msg_info "Stopping Service"
systemctl stop speedtest-tracker

View File

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

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -27,7 +27,11 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ -f /etc/systemd/system/dns.service ]]; then
mv /etc/systemd/system/dns.service /etc/systemd/system/technitium.service
systemctl daemon-reload
systemctl enable -q --now technitium
fi
if is_package_installed "aspnetcore-runtime-8.0"; then
$STD apt remove -y aspnetcore-runtime-8.0
[ -f /etc/apt/sources.list.d/microsoft-prod.list ] && rm -f /etc/apt/sources.list.d/microsoft-prod.list
@@ -42,7 +46,7 @@ function update_script() {
fi
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
if [[ ! -f ~/.technitium || "${RELEASE}" != "$(cat ~/.technitium)" ]]; then
if [[ ! -f ~/.technitium || ${RELEASE} != "$(cat ~/.technitium)" ]]; then
msg_info "Updating Technitium DNS"
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/

View File

@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Zot-Registry"
var_tags="${var_tags:-registry;oci}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"

View File

@@ -20,7 +20,7 @@
"script": "ct/bentopdf.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"ram": 4096,
"hdd": 4,
"os": "debian",
"version": "13"

View File

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

View File

@@ -37,11 +37,11 @@
"type": "info"
},
{
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
"text": "For additional Debian commands and tips after installation, checkout: `https://github.com/community-scripts/ProxmoxVE/discussions/836`",
"type": "info"
},
{
"text": "If you use Cloud-init, checkout after installation: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"text": "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"type": "info"
}
]

View File

@@ -37,7 +37,7 @@
"type": "info"
},
{
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
"text": "For additional Debian commands and tips after installation, checkout: `https://github.com/community-scripts/ProxmoxVE/discussions/836`",
"type": "info"
}
]

View File

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

View File

@@ -23,7 +23,7 @@
"ram": 2048,
"hdd": 10,
"os": "debian",
"version": "12"
"version": "13"
}
},
{

View File

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

View File

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

View File

@@ -0,0 +1,35 @@
{
"name": "Mail-Archiver",
"slug": "mail-archiver",
"categories": [
7
],
"date_created": "2025-12-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 5000,
"documentation": "https://github.com/s1t5/mail-archiver/blob/main/doc/Index.md",
"config_path": "/opt/mail-archiver/.env, /opt/mail-archiver/appsettings.json",
"website": "https://github.com/s1t5/mail-archiver",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mail-archiver.webp",
"description": "Mail-Archiver is a web application for archiving, searching, and exporting emails from multiple accounts. Featuring folder sync, attachment support, mailbox migration and a dashboard.",
"install_methods": [
{
"type": "default",
"script": "ct/mail-archiver.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "secure123!"
},
"notes": []
}

View File

@@ -0,0 +1,35 @@
{
"name": "Nextcloud Exporter",
"slug": "nextcloud-exporter",
"categories": [
9
],
"date_created": "2025-12-27",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": 9205,
"documentation": "https://github.com/xperimental/nextcloud-exporter",
"website": "https://github.com/xperimental/nextcloud-exporter",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nextcloud.webp",
"config_path": "/etc/nextcloud-exporter.env",
"description": "Prometheus exporter for Nextcloud servers. ",
"install_methods": [
{
"type": "default",
"script": "tools/addon/nextcloud-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -31,5 +31,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"text": "Type `/opt/pocketbase/pocketbase superuser create YOUREMAIL PASSWORD` to create your superuser account.",
"type": "info"
}
]
}

View File

@@ -34,11 +34,11 @@
"notes": [
{
"type": "warning",
"content": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
"text": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
},
{
"type": "info",
"content": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
"text": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
}
]
}

View File

@@ -12,7 +12,7 @@
"documentation": "https://github.com/Tautulli/Tautulli/wiki",
"website": "https://tautulli.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tautulli.webp",
"config_path": "",
"config_path": "/opt/Tautulli/config.ini",
"description": "Tautulli allows you to monitor and track your Plex Media Server usage, such as viewing statistics and analysis of your media library. It can be used to monitor user activity, get notifications about new media added to your library, and even generate reports on your media usage.",
"install_methods": [
{
@@ -23,7 +23,7 @@
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"type": "info"
}
]

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"type": "info"
}
]

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"type": "info"
}
]

View File

@@ -2,7 +2,7 @@
"name": "Valkey",
"slug": "valkey",
"categories": [
9
8
],
"date_created": "2025-11-29",
"type": "ct",

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "Zoraxy",
"slug": "zoraxy",
"categories": [
4
21
],
"date_created": "2024-05-02",
"type": "ct",

View File

@@ -2,7 +2,7 @@
"name": "Zot Registry",
"slug": "zot",
"categories": [
13
3
],
"date_created": "2025-06-06",
"type": "ct",
@@ -20,7 +20,7 @@
"script": "ct/zot-registry.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"ram": 4096,
"hdd": 5,
"os": "Debian",
"version": "13"

View File

@@ -39,7 +39,7 @@ function ScriptContent() {
return (
<div className="mb-3">
<div className="mt-20 flex sm:px-4 xl:px-0">
<div className="mt-20 flex gap-4 sm:px-4 xl:px-0">
<div className="hidden sm:flex">
<Sidebar
items={links}
@@ -49,17 +49,15 @@ function ScriptContent() {
setSelectedCategory={setSelectedCategory}
/>
</div>
<div className="mx-4 w-full sm:mx-0 sm:ml-4">
{selectedScript && item
? (
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
)
: (
<div className="flex w-full flex-col gap-5">
<LatestScripts items={links} />
<MostViewedScripts items={links} />
</div>
)}
<div className="px-4 w-full sm:max-w-[calc(100%-350px-16px)]">
{selectedScript && item ? (
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
) : (
<div className="flex w-full flex-col gap-5">
<LatestScripts items={links} />
<MostViewedScripts items={links} />
</div>
)}
</div>
</div>
</div>

View File

@@ -13,11 +13,7 @@ setting_up_container
network_check
update_os
msg_info "Installing Beszel"
mkdir -p /opt/beszel
curl -fsSL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed -e 's/x86_64/amd64/' -e 's/armv6l/arm/' -e 's/armv7l/arm/' -e 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel | tee /opt/beszel/beszel >/dev/null
chmod +x /opt/beszel/beszel
msg_ok "Installed Beszel"
fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_amd64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/beszel-hub.service

View File

@@ -17,7 +17,7 @@ setup_hwaccel
setup_imagemagick
msg_info "Installing Dependencies"
$STD apt-get install -y \
$STD apt install -y \
assimp-utils \
calibre \
dcraw \

View File

@@ -26,11 +26,8 @@ $STD apt-get install -y \
nginx
msg_ok "Installed Dependencies"
msg_info "Configure Application"
var_project_name="default"
read -r -p "${TAB3}Type the assembly name of the project: " var_project_name
echo "Target assembly: '${var_project_name}'"
msg_ok "Application Configured"
msg_info "Setting up FTP Server"
useradd ftpuser

View File

@@ -16,24 +16,10 @@ update_os
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
setup_composer
setup_mariadb
LOCAL_IP=$(hostname -I | awk '{print $1}')
msg_info "Setting up database"
DB_NAME=firefly
DB_USER=firefly
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "Firefly-Credentials"
echo "Firefly Database User: $DB_USER"
echo "Firefly Database Password: $DB_PASS"
echo "Firefly Database Name: $DB_NAME"
} >>~/firefly.creds
msg_ok "Set up database"
MARIADB_DB_NAME="firefly" MARIADB_DB_USER="firefly" setup_mariadb_db
import_local_ip
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
fetch_and_deploy_gh_release "dataimporter" "firefly-iii/data-importer" "prebuild" "latest" "/opt/firefly/dataimporter" "DataImporter-v*.tar.gz"
msg_info "Configuring Firefly III (Patience)"
chown -R www-data:www-data /opt/firefly
@@ -41,22 +27,19 @@ chmod -R 775 /opt/firefly/storage
cd /opt/firefly
cp .env.example .env
sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/firefly/.env
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$MARIADB_DB_PASS/" /opt/firefly/.env
$STD composer install --no-dev --no-plugins --no-interaction
$STD php artisan firefly:upgrade-database
$STD php artisan firefly:correct-database
$STD php artisan firefly:report-integrity
$STD php artisan firefly:laravel-passport-keys
IMPORTER_RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/data-importer/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
mkdir -p /opt/firefly/dataimporter
cd /opt
curl -fsSL "https://github.com/firefly-iii/data-importer/releases/download/v${IMPORTER_RELEASE}/DataImporter-v${IMPORTER_RELEASE}.tar.gz" -o "DataImporter-v${IMPORTER_RELEASE}.tar.gz"
tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
msg_ok "Configured Firefly III"
msg_info "Configuring Data Importer"
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
chown -R www-data:www-data /opt/firefly
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
msg_ok "Configured Firefly III"
msg_ok "Configured Data Importer"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/firefly.conf
@@ -69,6 +52,8 @@ cat <<EOF >/etc/apache2/sites-available/firefly.conf
AllowOverride All
Require all granted
</Directory>
RedirectMatch 301 ^/dataimporter$ /dataimporter/
Alias /dataimporter/ /opt/firefly/dataimporter/public/

View File

@@ -50,7 +50,7 @@ Group=git
WorkingDirectory=/var/lib/forgejo/
ExecStart=/usr/local/bin/forgejo web --config /etc/forgejo/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/forgejo
Environment=USER=git HOME=/home/git FORGEJO_WORK_DIR=/var/lib/forgejo
[Install]
WantedBy=multi-user.target
EOF

View File

@@ -1,57 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pommee/goaway
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y net-tools
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/goaway.service
[Unit]
Description=GoAway Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/goaway
ExecStart=/opt/goaway/goaway
StandardOutput=file:/var/log/goaway.log
StandardError=inherit
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now goaway
sleep 10
for i in {1..30}; do
ADMIN_PASS=$(awk -F': ' "/Randomly generated admin password:/ {print \$2; exit}" /var/log/goaway.log)
[ -n "$ADMIN_PASS" ] && break
sleep 1
done
{
echo "GoAway Credentials"
echo "Admin User: admin"
echo "Admin Password: $ADMIN_PASS"
} >>~/goaway.creds
msg_ok "Service Created"
motd_ssh
customize
cleanup_lxc

View File

@@ -17,7 +17,7 @@ msg_info "Setting up InfluxDB Repository"
setup_deb822_repo \
"influxdata" \
"https://repos.influxdata.com/influxdata-archive.key" \
"https://repos.influxdata.com/$(get_os_info id)" \
"https://repos.influxdata.com/debian" \
"stable"
msg_ok "Set up InfluxDB Repository"
@@ -29,17 +29,15 @@ else
fi
msg_info "Installing InfluxDB"
$STD apt update
if [[ $INFLUX == "2" ]]; then
$STD apt install -y influxdb2
else
$STD apt install -y influxdb
curl -fsSL "https://dl.influxdata.com/chronograf/releases/chronograf_1.10.8_amd64.deb" -o "/chronograf_1.10.8_amd64.deb"
$STD dpkg -i chronograf_1.10.8_amd64.deb
rm -rf /chronograf_1.10.8_amd64.deb
download_file "https://dl.influxdata.com/chronograf/releases/chronograf_1.10.8_amd64.deb" "${HOME}/chronograf_1.10.8_amd64.deb"
$STD dpkg -i "${HOME}/chronograf_1.10.8_amd64.deb"
rm -rf "${HOME}/chronograf_1.10.8_amd64.deb"
fi
rm /etc/apt/sources.list.d/influxdata.list
$STD systemctl enable --now influxdb
systemctl enable -q --now influxdb
msg_ok "Installed InfluxDB"
read -r -p "${TAB3}Would you like to add Telegraf? <y/N> " prompt

View File

@@ -19,45 +19,42 @@ $STD apt install -y \
build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
NODE_VERSION="22" setup_nodejs
PG_VERSION="16" setup_postgresql
RUST_CRATES="monolith" setup_rust
msg_info "Setting up PostgreSQL DB"
DB_NAME=linkwardendb
DB_USER=linkwarden
DB_PASS="$(openssl rand -base64 18 | tr -d '/' | cut -c1-13)"
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Linkwarden-Credentials"
echo "Linkwarden Database User: $DB_USER"
echo "Linkwarden Database Password: $DB_PASS"
echo "Linkwarden Database Name: $DB_NAME"
echo "Linkwarden Secret: $SECRET_KEY"
} >>~/linkwarden.creds
msg_ok "Set up PostgreSQL DB"
PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_adminer
fi
msg_info "Installing Linkwarden (Patience)"
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
msg_info "Installing Linkwarden (Patience)"
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
echo "Linkwarden Secret: $SECRET_KEY" >>"${HOME}/linkwarden.creds"
cd /opt/linkwarden
yarn_ver="4.12.0"
if [[ -f package.json ]]; then
pkg_manager=$(jq -r '.packageManager // empty' package.json 2>/dev/null || true)
if [[ -n "$pkg_manager" && "$pkg_manager" == yarn@* ]]; then
yarn_spec="${pkg_manager#yarn@}"
yarn_ver="${yarn_spec%%+*}"
fi
fi
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare "yarn@${yarn_ver}" --activate || true
fi
$STD yarn
$STD npx playwright install-deps
$STD yarn playwright install
$STD npx playwright install
IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/linkwarden/.env
NEXTAUTH_SECRET=${SECRET_KEY}
NEXTAUTH_URL=http://${IP}:3000
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
EOF
$STD yarn prisma:generate
$STD yarn web:build

View File

@@ -0,0 +1,68 @@
#!/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/s1t5/mail-archiver
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie" \
"main"
$STD apt install -y \
dotnet-sdk-10.0 \
aspnetcore-runtime-8.0
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
PG_DB_NAME="mailarchiver_db" PG_DB_USER="mailarchiver" setup_postgresql_db
fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball"
msg_info "Setting up Mail-Archiver"
mv /opt/mail-archiver /opt/mail-archiver-build
cd /opt/mail-archiver-build
$STD dotnet restore
$STD dotnet publish -c Release -o /opt/mail-archiver
cp /opt/mail-archiver-build/appsettings.json /opt/mail-archiver/appsettings.json
sed -i "s|\"DefaultConnection\": \"[^\"]*\"|\"DefaultConnection\": \"Host=localhost;Database=mailarchiver_db;Username=mailarchiver;Password=$PG_DB_PASS\"|" /opt/mail-archiver/appsettings.json
rm -rf /opt/mail-archiver-build
cat <<EOF >/opt/mail-archiver/.env
ASPNETCORE_URLS=http://+:5000
ASPNETCORE_ENVIRONMENT=Production
TZ=UTC
EOF
msg_ok "Setup Mail-Archiver"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mail-archiver.service
[Unit]
Description=Mail-Archiver Service
After=network.target
[Service]
EnvironmentFile=/opt/mail-archiver/.env
WorkingDirectory=/opt/mail-archiver
ExecStart=/usr/bin/dotnet MailArchiver.dll
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now mail-archiver
msg_info "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -23,7 +23,7 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="24" setup_nodejs
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
msg_info "Installing Deno"
export DENO_INSTALL="/usr/local"
@@ -37,8 +37,12 @@ fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
msg_info "Installing MeTube"
cd /opt/metube/ui
$STD npm ci
$STD node_modules/.bin/ng build --configuration production
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare pnpm --activate || true
fi
$STD pnpm install --frozen-lockfile
$STD pnpm run build
cd /opt/metube
$STD uv sync
mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos

View File

@@ -57,9 +57,9 @@ NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
# RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
# grep "tag_name" |
# awk '{print substr($2, 3, length($2)-4) }')
RELEASE="2.13.4"
RELEASE="2.13.5"
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v2.13.4"
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v2.13.5"
msg_info "Setting up Environment"
ln -sf /usr/bin/python3 /usr/bin/python
@@ -117,6 +117,7 @@ cd /opt/nginxproxymanager/frontend
# Replace node-sass with sass in package.json before installation
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
$STD yarn install --network-timeout 600000
$STD yarn locale-compile
$STD yarn build
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images

View File

@@ -13,20 +13,16 @@ setting_up_container
network_check
update_os
msg_info "Installing Notifiarr"
msg_info "Setting up Notifiarr"
$STD groupadd notifiarr
$STD useradd -g notifiarr notifiarr
curl -fsSL "https://packagecloud.io/golift/pkgs/gpgkey" | gpg --dearmor >/usr/share/keyrings/golift-archive-keyring.gpg
cat <<EOF >/etc/apt/sources.list.d/golift.sources
Types: deb
URIs: https://packagecloud.io/golift/pkgs/ubuntu
Suites: focal
Components: main
Signed-By: /usr/share/keyrings/golift-archive-keyring.gpg
EOF
$STD apt update
setup_deb822_repo \
"notifiarr" \
"https://packagecloud.io/golift/pkgs/gpgkey" \
"https://packagecloud.io/golift/pkgs/ubuntu" \
"focal"
$STD apt install -y notifiarr
msg_ok "Installed Notifiarr"
msg_ok "Setup Notifiarr"
motd_ssh
customize

View File

@@ -13,21 +13,15 @@ setting_up_container
network_check
update_os
msg_info "Installing ntfy"
mkdir -p /etc/apt/keyrings
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
cat <<EOF >/etc/apt/sources.list.d/ntfy.sources
Types: deb
URIs: https://archive.ntfy.sh/apt/
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/ntfy.gpg
EOF
$STD apt update
msg_info "Setting up ntfy"
setup_deb822_repo \
"ntfy" \
"https://archive.ntfy.sh/apt/keyring.gpg" \
"https://archive.ntfy.sh/apt/" \
"stable"
$STD apt install -y ntfy
systemctl enable -q --now ntfy
msg_ok "Installed ntfy"
msg_ok "Setup ntfy"
motd_ssh
customize

View File

@@ -16,29 +16,20 @@ update_os
msg_info "Installing Dependencies"
$STD apt install -y \
par2
cat <<EOF >/etc/apt/sources.list.d/non-free.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
EOF
$STD apt update
$STD apt install -y unrar
rm /etc/apt/sources.list.d/non-free.list
par2 \
unrar-free
msg_ok "Installed Dependencies"
msg_info "Installing NZBGet"
mkdir -p /usr/share/keyrings
curl -fsSL https://nzbgetcom.github.io/nzbgetcom.asc | gpg --dearmor -o /usr/share/keyrings/nzbgetcom.gpg
cat <<EOF >/etc/apt/sources.list.d/nzbgetcom.sources
Types: deb
URIs: https://nzbgetcom.github.io/deb
Suites: stable
Components: main
Architectures: all
Signed-By: /usr/share/keyrings/nzbgetcom.gpg
EOF
$STD apt update
setup_deb822_repo \
"nzbgetcom" \
"https://nzbgetcom.github.io/nzbgetcom.asc" \
"https://nzbgetcom.github.io/deb" \
"stable"
$STD apt install -y nzbget
sed -i "s|UnrarCmd=unrar|UnrarCmd=unrar-free|g" /var/lib/nzbget/nzbget.conf
sed -i "s|SevenZipCmd=7zz|SevenZipCmd=7z|g" /var/lib/nzbget/nzbget.conf
systemctl restart nzbget
msg_ok "Installed NZBGet"
motd_ssh

View File

@@ -19,28 +19,12 @@ msg_ok "Installed dependendencies"
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="openarchiver_db" PG_DB_USER="openarchiver" setup_postgresql_db
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
fetch_and_deploy_gh_release "openarchiver" "LogicLabs-OU/OpenArchiver" "tarball"
JWT_KEY="$(openssl rand -hex 32)"
SECRET_KEY="$(openssl rand -hex 32)"
IP_ADDR=$(hostname -I | awk '{print $1}')
msg_info "Setting up PostgreSQL"
DB_NAME="openarchiver_db"
DB_USER="openarchiver"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-18)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Open Archiver DB Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/openarchiver.creds
msg_ok "Set up PostgreSQL"
import_local_ip
msg_info "Configuring MeiliSearch"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
@@ -76,10 +60,10 @@ mkdir -p /opt/openarchiver-data
cd /opt/openarchiver
cp .env.example .env
sed -i "s|^NODE_ENV=.*|NODE_ENV=production|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=openarchiver_db|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=openarchiver|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASS|g" /opt/openarchiver/.env
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://openarchiver:$DB_PASS@localhost:5432/openarchiver_db\"|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=$PG_DB_NAME|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=$PG_DB_USER|g" /opt/openarchiver/.env
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$PG_DB_PASS|g" /opt/openarchiver/.env
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=\"postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME\"|g" /opt/openarchiver/.env
sed -i "s|^MEILI_HOST=.*|MEILI_HOST=http://localhost:7700|g" /opt/openarchiver/.env
sed -i "s|^MEILI_MASTER_KEY=.*|MEILI_MASTER_KEY=$MASTER_KEY|g" /opt/openarchiver/.env
sed -i "s|^REDIS_HOST=.*|REDIS_HOST=localhost|g" /opt/openarchiver/.env
@@ -88,7 +72,7 @@ sed -i "s|^STORAGE_LOCAL_ROOT_PATH=.*|STORAGE_LOCAL_ROOT_PATH=/opt/openarchiver-
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
sed -i "s|^ORIGIN=.*|ORIGIN=http://$IP_ADDR:3000|g" /opt/openarchiver/.env
sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
$STD pnpm run build:oss
$STD pnpm db:migrate

View File

@@ -15,15 +15,17 @@ update_os
msg_info "Installing OpenObserve"
mkdir -p /opt/openobserve/data
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
RELEASE=$(get_latest_github_release "openobserve/openobserve")
tar zxf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/v$RELEASE/openobserve-v$RELEASE-linux-amd64.tar.gz) -C /opt/openobserve
ROOT_PASS=$(openssl rand -base64 18 | cut -c1-13)
cat <<EOF >/opt/openobserve/data/.env
ZO_ROOT_USER_EMAIL = "admin@example.com"
ZO_ROOT_USER_PASSWORD = "$(openssl rand -base64 18 | cut -c1-13)"
ZO_ROOT_USER_PASSWORD = "${ROOT_PASS}"
ZO_DATA_DIR = "/opt/openobserve/data"
ZO_HTTP_PORT = "5080"
EOF
echo "${RELEASE}" >>~/.openobserve
msg_ok "Installed OpenObserve"
msg_info "Creating Service"

View File

@@ -14,28 +14,14 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
apt-transport-https \
ca-certificates
$STD apt install -y apt-transport-https
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
msg_info "Setting up PostgreSQL"
DB_NAME=openproject
DB_USER=openproject
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
PG_DB_NAME="openproject" PG_DB_USER="openproject" setup_postgresql_db
API_KEY=$(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 "OpenProject-Credentials"
echo -e "OpenProject Database User: $DB_USER"
echo -e "OpenProject Database Password: $DB_PASS"
echo -e "OpenProject Database Name: $DB_NAME"
echo -e "OpenProject API Key: $API_KEY"
} >>~/openproject.creds
msg_ok "Set up PostgreSQL"
echo "OpenProject API Key: $API_KEY" >>~/openproject.creds
import_local_ip
msg_info "Setting up OpenProject Repository"
curl -fsSL "https://dl.packager.io/srv/opf/openproject/key" | gpg --dearmor >/etc/apt/trusted.gpg.d/packager-io.gpg
@@ -48,7 +34,6 @@ $STD apt install -y openproject
msg_ok "Installed OpenProject"
msg_info "Configuring OpenProject"
IP_ADDR=$(hostname -I | cut -d' ' -f1)
cat <<EOF >/etc/openproject/installer.dat
openproject/edition default
@@ -56,13 +41,13 @@ postgres/retry retry
postgres/autoinstall reuse
postgres/db_host 127.0.0.1
postgres/db_port 5432
postgres/db_username ${DB_USER}
postgres/db_password ${DB_PASS}
postgres/db_name ${DB_NAME}
postgres/db_username ${PG_DB_USER}
postgres/db_password ${PG_DB_PASS}
postgres/db_name ${PG_DB_NAME}
server/autoinstall install
server/variant apache2
server/hostname ${IP_ADDR}
server/hostname ${LOCAL_IP}
server/server_path_prefix /openproject
server/ssl no
server/variant apache2
@@ -75,7 +60,6 @@ memcached/autoinstall install
openproject/admin_email admin@example.net
openproject/default_language en
EOF
$STD sudo openproject configure
msg_ok "Configured OpenProject"

View File

@@ -16,11 +16,11 @@ update_os
msg_info "Installing Dependencies"
$STD apt install -y \
redis-server \
nginx \
openssl
nginx
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
create_self_signed_cert
msg_info "Setup OTS"
cat <<EOF >/opt/ots/.env
@@ -31,14 +31,6 @@ STORAGE_TYPE=redis
EOF
msg_ok "Setup OTS"
msg_info "Generating Universal SSL Certificate"
mkdir -p /etc/ssl/ots
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/ots/key.pem \
-out /etc/ssl/ots/cert.pem \
-subj "/CN=ots"
msg_ok "Certificate Generated"
msg_info "Setting up nginx"
cat <<EOF >/etc/nginx/sites-available/ots.conf
server {
@@ -52,8 +44,8 @@ server {
listen [::]:443 ssl;
server_name ots;
ssl_certificate /etc/ssl/ots/cert.pem;
ssl_certificate_key /etc/ssl/ots/key.pem;
ssl_certificate /etc/ssl/ots/ots.crt;
ssl_certificate_key /etc/ssl/ots/ots.key;
location / {
add_header X-Robots-Tag noindex;

View File

@@ -22,35 +22,18 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql
msg_info "Set up PostgreSQL Database"
DB_NAME="outline"
DB_USER="outline"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Outline-Credentials"
echo "Outline Database User: $DB_USER"
echo "Outline Database Password: $DB_PASS"
echo "Outline Database Name: $DB_NAME"
} >>~/outline.creds
msg_ok "Set up PostgreSQL Database"
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
import_local_ip
msg_info "Configuring Outline (Patience)"
SECRET_KEY="$(openssl rand -hex 32)"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cd /opt/outline
cp .env.sample .env
export NODE_ENV=development
sed -i 's/NODE_ENV=production/NODE_ENV=development/g' /opt/outline/.env
sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env
sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env
sed -i "s/user:pass@postgres/${PG_DB_USER}:${PG_DB_PASS}@localhost/g" /opt/outline/.env
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env

View File

@@ -13,10 +13,6 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y ca-certificates
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"

View File

@@ -16,22 +16,17 @@ update_os
msg_info "Installing Dependencies"
$STD apt install -y \
gcc \
ca-certificates \
musl-dev \
mupdf \
libc6-dev \
musl-tools
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
NODE_VERSION="24" setup_nodejs
setup_go
fetch_and_deploy_gh_release "paperless-gpt" "icereed/paperless-gpt" "tarball"
msg_info "Setup Paperless-GPT"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file"
mv paperless-gpt-"${RELEASE}" /opt/paperless-gpt
cd /opt/paperless-gpt/web-app
$STD npm install
$STD npm run build
@@ -40,21 +35,19 @@ go mod download
export CC=musl-gcc
CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
rm -f "$temp_file"
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Setup Paperless-GPT"
mkdir -p /opt/paperless-gpt-data
read -p "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
if [[ "$input_url" =~ ^[Yy]$ ]]; then
read -p "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
read -rp "${TAB3}Do you want to enter the Paperless local URL now? (y/n) " input_url
if [[ $input_url =~ ^[Yy]$ ]]; then
read -rp "${TAB3}Enter your Paperless-NGX instance URL (e.g., http://192.168.1.100:8000): " PAPERLESS_BASE_URL
else
PAPERLESS_BASE_URL="http://your_paperless_ngx_url"
fi
read -p "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
if [[ "$input_token" =~ ^[Yy]$ ]]; then
read -p "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
read -rp "${TAB3}Do you want to enter the Paperless API token now? (y/n) " input_token
if [[ $input_token =~ ^[Yy]$ ]]; then
read -rp "${TAB3}Enter your Paperless API token: " PAPERLESS_API_TOKEN
else
PAPERLESS_API_TOKEN="your_paperless_api_token"
fi

View File

@@ -15,39 +15,20 @@ update_os
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
PG_DB_NAME="partdb" PG_DB_USER="partdb" setup_postgresql_db
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" PHP_POST_MAX_SIZE="100M" PHP_UPLOAD_MAX_FILESIZE="100M" setup_php
setup_composer
msg_info "Setting up PHP"
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
sed -i "s@post_max_size = 8M@post_max_size = 100M@g" /etc/php/${PHPVER}/apache2/php.ini
sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 100M@g" /etc/php/${PHPVER}/apache2/php.ini
msg_ok "Setting up PHP"
msg_info "Setting up PostgreSQL"
DB_NAME=partdb
DB_USER=partdb
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 "Part-DB Credentials"
echo "Part-DB Database User: $DB_USER"
echo "Part-DB Database Password: $DB_PASS"
echo "Part-DB Database Name: $DB_NAME"
} >>~/partdb.creds
msg_ok "Set up PostgreSQL"
msg_info "Installing Part-DB (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(get_latest_github_release "Part-DB/Part-DB-server")
curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o "/opt/v${RELEASE}.zip"
$STD unzip "v${RELEASE}.zip"
mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
cd /opt/partdb/
cp .env .env.local
sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local
sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev -o --no-interaction
@@ -64,7 +45,7 @@ ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/da
} >>~/partdb.creds
rm -rf ~/database-migration-output
rm -rf "/opt/v${RELEASE}.zip"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
echo "${RELEASE}" >~/.partdb
msg_ok "Installed Part-DB"
msg_info "Creating Service"

View File

@@ -21,18 +21,18 @@ $STD apt install -y \
msg_ok "Installed dependencies"
setup_mariadb
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" MARIADB_DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)" setup_mariadb_db
MARIADB_DB_NAME="passboltdb" MARIADB_DB_USER="passbolt" setup_mariadb_db
create_self_signed_cert
import_local_ip
setup_deb822_repo \
"passbolt" \
"https://keys.openpgp.org/pks/lookup?op=get&options=mr&search=0x3D1A0346C8E1802F774AEF21DE8B853FC155581D" \
"https://download.passbolt.com/ce/debian" \
"buster" \
"stable"
create_self_signed_cert "passbolt"
msg_info "Setting up Passbolt (Patience)"
export DEBIAN_FRONTEND=noninteractive
IP_ADDR=$(hostname -I | awk '{print $1}')
echo passbolt-ce-server passbolt/mysql-configuration boolean true | debconf-set-selections
echo passbolt-ce-server passbolt/mysql-passbolt-username string $MARIADB_DB_USER | debconf-set-selections
echo passbolt-ce-server passbolt/mysql-passbolt-password password $MARIADB_DB_PASS | debconf-set-selections
@@ -40,7 +40,7 @@ echo passbolt-ce-server passbolt/mysql-passbolt-password-repeat password $MARIAD
echo passbolt-ce-server passbolt/mysql-passbolt-dbname string $MARIADB_DB_NAME | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-configuration boolean true | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-configuration-three-choices select manual | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-domain string $IP_ADDR | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-domain string $LOCAL_IP | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-certificate-file string /etc/ssl/passbolt/passbolt.crt | debconf-set-selections
echo passbolt-ce-server passbolt/nginx-certificate-key-file string /etc/ssl/passbolt/passbolt.key | debconf-set-selections
$STD apt install -y --no-install-recommends passbolt-ce-server

View File

@@ -22,24 +22,9 @@ msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
PG_VERSION="17" setup_postgresql
msg_info "Setup PostgreSQL Database"
DB_NAME=patchmon_db
DB_USER=patchmon_usr
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
{
echo "PatchMon Credentials"
echo "PatchMon Database Name: $DB_NAME"
echo "PatchMon Database User: $DB_USER"
echo "PatchMon Database Password: $DB_PASS"
} >>~/patchmon.creds
msg_ok "Setup PostgreSQL Database"
PG_DB_NAME="patchmon_db" PG_DB_USER="patchmon_usr" setup_postgresql_db
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
import_local_ip
msg_info "Configuring PatchMon"
cd /opt/patchmon
@@ -50,12 +35,10 @@ $STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/frontend
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
$STD npm run build
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cat <<EOF >/opt/patchmon/backend/.env
# Database Configuration
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
DATABASE_URL="postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME"
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
PM_DB_CONN_WAIT_INTERVAL=2
@@ -272,7 +255,6 @@ async function updateSettings() {
updateSettings();
EOF
cd /opt/patchmon/backend
$STD node update-settings.js
msg_ok "Settings updated successfully"

View File

@@ -64,7 +64,7 @@ mkdir /opt/pelican-panel
cd /opt/pelican-panel
curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o "panel.tar.gz"
tar -xzf "panel.tar.gz"
$STD composer install --no-dev --optimize-autoloader --no-interaction
COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan p:environment:setup
$STD php artisan p:environment:queue-service --no-interaction
echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -

View File

@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y fping
msg_ok "Installed Dependencies"
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="pdo,pdo-mysql,gmp,snmp,ldap,apcu" setup_php
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
msg_info "Installing PHP-PEAR"
$STD apt install -y \
@@ -39,7 +39,7 @@ sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
-e "s/\(\$db\['pass'\] = \).*/\1'$MARIADB_DB_PASS';/" \
-e "s/\(\$db\['name'\] = \).*/\1'$MARIADB_DB_NAME';/" \
/opt/phpipam/config.php
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.3/apache2/php.ini
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.4/apache2/php.ini
msg_ok "Installed phpIPAM"
msg_info "Creating Service"

View File

@@ -20,24 +20,8 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
setup_mariadb
MARIADB_DB_NAME="plantit" MARIADB_DB_USER="plantit_usr" setup_mariadb_db
JAVA_VERSION="21" setup_java
msg_info "Setting up MariaDB"
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
DB_NAME=plantit
DB_USER=plantit_usr
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "Plant-it Credentials"
echo "Plant-it Database User: $DB_USER"
echo "Plant-it Database Password: $DB_PASS"
echo "Plant-it Database Name: $DB_NAME"
} >>~/plant-it.creds
msg_ok "Set up MariaDB"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "plant-it" "MDeLuise/plant-it" "singlefile" "0.10.0" "/opt/plant-it/backend" "server.jar"
fetch_and_deploy_gh_release "plant-it-front" "MDeLuise/plant-it" "prebuild" "0.10.0" "/opt/plant-it/frontend" "client.tar.gz"
@@ -46,10 +30,10 @@ mkdir -p /opt/plant-it-data
cat <<EOF >/opt/plant-it/backend/server.env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USERNAME=$DB_USER
MYSQL_PSW=$DB_PASS
MYSQL_DATABASE=$DB_NAME
MYSQL_ROOT_PASSWORD=$DB_PASS
MYSQL_USERNAME=$MARIADB_DB_USER
MYSQL_PSW=$MARIADB_DB_PASS
MYSQL_DATABASE=$MARIADB_DB_NAME
MYSQL_ROOT_PASSWORD=$MARIADB_DB_PASS
JWT_SECRET=$JWT_SECRET
JWT_EXP=1
@@ -86,7 +70,7 @@ Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now -q plant-it
systemctl enable -q --now plant-it
cat <<EOF >/etc/nginx/nginx.conf
events {

View File

@@ -13,12 +13,8 @@ setting_up_container
network_check
update_os
get_latest_release() {
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
}
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
msg_info "Enabling ZFS support."
@@ -44,8 +40,8 @@ EOF
fi
msg_info "Installing Podman"
$STD apt -y install podman
$STD systemctl enable --now podman.socket
$STD apt install -y podman
systemctl enable -q --now podman.socket
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
msg_ok "Installed Podman"
@@ -97,7 +93,7 @@ $STD podman run -d \
podman generate systemd \
--new --name homeassistant \
>/etc/systemd/system/homeassistant.service
$STD systemctl enable --now homeassistant
systemctl enable -q --now homeassistant
msg_ok "Installed Home Assistant"
motd_ssh

View File

@@ -13,12 +13,8 @@ setting_up_container
network_check
update_os
get_latest_release() {
curl -fsSL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4
}
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
PORTAINER_LATEST_VERSION=$(get_latest_github_release "portainer/portainer")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
if $STD mount | grep 'on / type zfs' >null && echo "ZFS"; then
msg_info "Enabling ZFS support."
@@ -44,8 +40,8 @@ EOF
fi
msg_info "Installing Podman"
$STD apt -y install podman
$STD systemctl enable --now podman.socket
$STD apt install -y podman
systemctl enable -q --now podman.socket
echo -e 'unqualified-search-registries=["docker.io"]' >>/etc/containers/registries.conf
msg_ok "Installed Podman"

View File

@@ -20,16 +20,9 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_MODULE="common,fpm" setup_php
create_self_signed_cert
fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
msg_info "Generating Universal SSL Certificate"
mkdir -p /etc/ssl/privatebin
$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/privatebin/key.pem \
-out /etc/ssl/privatebin/cert.pem \
-subj "/CN=PrivateBin"
msg_ok "Certificate Generated"
msg_info "Configuring Environment"
mkdir -p /opt/privatebin/data
cp /opt/privatebin/cfg/conf.sample.php /opt/privatebin/cfg/conf.php
@@ -55,8 +48,8 @@ server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/ssl/privatebin/cert.pem;
ssl_certificate_key /etc/ssl/privatebin/key.pem;
ssl_certificate /etc/ssl/privatebin/privatebin.crt;
ssl_certificate_key /etc/ssl/privatebin/privatebin.key;
root /opt/privatebin;
index index.php;

View File

@@ -15,31 +15,17 @@ update_os
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
setup_mariadb
MARIADB_DB_NAME="projectsend" MARIADB_DB_USER="projectsend" setup_mariadb_db
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
msg_info "Setting up MariaDB"
DB_NAME=projectsend
DB_USER=projectsend
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{
echo "projectsend-Credentials"
echo "projectsend Database User: $DB_USER"
echo "projectsend Database Password: $DB_PASS"
echo "projectsend Database Name: $DB_NAME"
} >>~/projectsend.creds
msg_ok "Set up MariaDB"
msg_info "Installing ProjectSend"
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
chown -R www-data:www-data /opt/projectsend
chmod -R 775 /opt/projectsend
chmod 644 /opt/projectsend/includes/sys.config.php
sed -i -e "s/\(define('DB_NAME', \).*/\1'$DB_NAME');/" \
-e "s/\(define('DB_USER', \).*/\1'$DB_USER');/" \
-e "s/\(define('DB_PASSWORD', \).*/\1'$DB_PASS');/" \
sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \
-e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \
-e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \
/opt/projectsend/includes/sys.config.php
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
-e "s/^\(post_max_size = \).*/\1 256M/" \

View File

@@ -17,9 +17,7 @@ fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-ex
msg_info "Configuring Prometheus Paperless NGX Exporter"
mkdir -p /etc/prometheus-paperless-ngx-exporter
cat <<EOF >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
SECRET_AUTH_TOKEN
EOF
echo "SECRET_AUTH_TOKEN" >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
msg_ok "Configured Prometheus Paperless NGX Exporter"
msg_info "Creating Service"

View File

@@ -29,7 +29,7 @@ else
fi
mkdir -p /etc/pulse
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-amd64.tar.gz"
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
chown -R pulse:pulse /etc/pulse /opt/pulse
msg_ok "Installed Pulse"

View File

@@ -27,7 +27,7 @@ msg_ok "Configured Recyclarr"
msg_info "Setting up Daily Sync Cron"
cat <<EOF >/etc/cron.d/recyclarr
# Run recyclarr sync daily
@daily root recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
@daily root /usr/local/bin/recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
EOF
chmod 644 /etc/cron.d/recyclarr
msg_ok "Setup Daily Sync Cron"

View File

@@ -17,6 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y \
nginx \
sqlite3
setcap cap_net_raw+ep /bin/ping
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
@@ -71,6 +72,8 @@ SESSION_LIFETIME=120
SPEEDTEST_SCHEDULE="0 */6 * * *"
SPEEDTEST_SERVERS=
SPEEDTEST_EXTERNAL_IP_URL=https://ip.me
SPEEDTEST_INTERNET_CHECK_HOSTNAME=1.1.1.1
PRUNE_RESULTS_OLDER_THAN=0
DISPLAY_TIMEZONE=${TIMEZONE}

View File

@@ -23,7 +23,7 @@ if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
bash <(curl -sL s5n.sh)
bash <(curl -fsSL https://s5n.sh)
motd_ssh
customize

View File

@@ -14,20 +14,17 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
git \
pip \
python3 \
python3-dev \
python3-pip
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD apt install -y git
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
msg_info "Installing Tautulli"
cd /opt
$STD git clone https://github.com/Tautulli/Tautulli.git
$STD pip install -q -r /opt/Tautulli/requirements.txt
$STD pip install pyopenssl
cd /opt/Tautulli
uv venv -q
uv pip install -q -r requirements.txt
uv pip install -q pyopenssl
msg_ok "Installed Tautulli"
msg_info "Creating Service"
@@ -41,7 +38,7 @@ WorkingDirectory=/opt/Tautulli/
Restart=on-failure
RestartSec=5
Type=simple
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py
ExecStart=/opt/Tautulli/.venv/bin/python3 /opt/Tautulli/Tautulli.py
KillSignal=SIGINT
TimeoutStopSec=20
SyslogIdentifier=tautulli

View File

@@ -39,6 +39,14 @@ rm -f wazuh-*.sh
rm -f ~/wazuh-install.output
msg_ok "Setup Wazuh"
# Fix LXC container false positives in rootcheck
# When running Wazuh in an LXC container, /dev/.lxc/* paths trigger false alerts
if [ -d /dev/.lxc ]; then
msg_info "Adding LXC rootcheck exclusion"
sed -i '/<\/rootcheck>/i \ <ignore>/dev/.lxc</ignore>' /var/ossec/etc/ossec.conf
msg_ok "Added LXC rootcheck exclusion"
fi
motd_ssh
customize
cleanup_lxc

View File

@@ -52,6 +52,7 @@ msg_ok "Installed Zammad"
msg_info "Setup Services"
cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/sites-available/zammad.conf
sed -i "s/server_name localhost;/server_name $LOCAL_IP;/g" /etc/nginx/sites-available/zammad.conf
unlink /etc/nginx/sites-available/default
$STD systemctl reload nginx
msg_ok "Created Service"

View File

@@ -3181,7 +3181,8 @@ EOF'
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq >/dev/null"
else
sleep 3
pct exec "$CTID" -- bash -c "sed -i '/$LANG/ s/^# //' /etc/locale.gen"
LANG=${LANG:-en_US.UTF-8}
pct exec "$CTID" -- bash -c "sed -i \"/$LANG/ s/^# //\" /etc/locale.gen"
pct exec "$CTID" -- bash -c "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 && \
@@ -3743,12 +3744,9 @@ create_lxc_container() {
msg_info "Searching for template '$TEMPLATE_SEARCH'"
# Build regex patterns outside awk/grep for clarity
SEARCH_PATTERN="^${TEMPLATE_SEARCH}"
mapfile -t LOCAL_TEMPLATES < <(
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
sed 's|.*/||' | sort -t - -k 2 -V
)
@@ -3757,7 +3755,7 @@ create_lxc_container() {
msg_ok "Template search completed"
set +u
mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
mapfile -t ONLINE_TEMPLATES < <(pveam available -section system 2>/dev/null | grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' | awk '{print $2}' | grep -E "^${TEMPLATE_SEARCH}.*${TEMPLATE_PATTERN}" | sort -t - -k 2 -V 2>/dev/null || true)
set -u
ONLINE_TEMPLATE=""
@@ -3806,13 +3804,12 @@ create_lxc_container() {
if [[ "$choice" =~ ^[0-9]+$ ]] && [[ "$choice" -ge 1 ]] && [[ "$choice" -le ${#AVAILABLE_VERSIONS[@]} ]]; then
PCT_OSVERSION="${AVAILABLE_VERSIONS[$((choice - 1))]}"
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION}"
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
mapfile -t ONLINE_TEMPLATES < <(
pveam available -section system 2>/dev/null |
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
awk -F'\t' '{print $1}' |
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
awk '{print $2}' |
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
sort -t - -k 2 -V 2>/dev/null || true
)
@@ -3873,18 +3870,17 @@ create_lxc_container() {
# Retry template search with new version
TEMPLATE_SEARCH="${PCT_OSTYPE}-${PCT_OSVERSION:-}"
SEARCH_PATTERN="^${TEMPLATE_SEARCH}-"
mapfile -t LOCAL_TEMPLATES < <(
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
awk -v search="${SEARCH_PATTERN}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
awk -v search="${TEMPLATE_SEARCH}-" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
sed 's|.*/||' | sort -t - -k 2 -V
)
mapfile -t ONLINE_TEMPLATES < <(
pveam available -section system 2>/dev/null |
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
awk -F'\t' '{print $1}' |
grep -E "${SEARCH_PATTERN}.*${TEMPLATE_PATTERN}" |
awk '{print $2}' |
grep -E "^${TEMPLATE_SEARCH}-.*${TEMPLATE_PATTERN}" |
sort -t - -k 2 -V 2>/dev/null || true
)
ONLINE_TEMPLATE=""

View File

@@ -821,9 +821,9 @@ cleanup_lxc() {
rm -rf /root/.npm/_cacache /root/.npm/_logs 2>/dev/null || true
fi
# Node.js yarn
if command -v yarn &>/dev/null; then $STD yarn cache clean || true; fi
if command -v yarn &>/dev/null; then yarn cache clean &>/dev/null || true; fi
# Node.js pnpm
if command -v pnpm &>/dev/null; then $STD pnpm store prune || true; fi
if command -v pnpm &>/dev/null; then pnpm store prune &>/dev/null || true; fi
# Go
if command -v go &>/dev/null; then $STD go clean -cache -modcache || true; fi
# Rust cargo
@@ -831,7 +831,7 @@ cleanup_lxc() {
# Ruby gem
if command -v gem &>/dev/null; then $STD gem cleanup || true; fi
# Composer (PHP)
if command -v composer &>/dev/null; then COMPOSER_ALLOW_SUPERUSER=1 && $STD composer clear-cache || true; fi
if command -v composer &>/dev/null; then COMPOSER_ALLOW_SUPERUSER=1 $STD composer clear-cache || true; fi
if command -v journalctl &>/dev/null; then
$STD journalctl --vacuum-time=10m || true

View File

@@ -2639,6 +2639,7 @@ function setup_hwaccel() {
ocl-icd-libopencl1 \
intel-opencl-icd \
vainfo \
libmfx-gen1.2 \
intel-gpu-tools || {
msg_error "Failed to install Intel GPU dependencies"
return 1
@@ -2666,6 +2667,7 @@ EOF
ocl-icd-libopencl1 \
intel-opencl-icd \
vainfo \
libmfx-gen1.2 \
intel-gpu-tools || {
msg_warn "Non-free driver install failed, falling back to open drivers"
needs_nonfree=false
@@ -2694,6 +2696,7 @@ EOF
mesa-va-drivers \
libvpl2 \
vainfo \
libmfx-gen1.2 \
intel-gpu-tools 2>/dev/null || {
msg_warn "Non-free driver install failed, falling back to open drivers"
needs_nonfree=false
@@ -2704,16 +2707,16 @@ EOF
# Fallback to open drivers or older Intel GPUs
if [[ "$needs_nonfree" == false ]]; then
# Fetch latest Intel drivers from GitHub for Debian
fetch_and_deploy_gh_release "" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || {
fetch_and_deploy_gh_release "intel-igc-core" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb" || {
msg_warn "Failed to deploy Intel IGC core 2"
}
fetch_and_deploy_gh_release "" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb" || {
fetch_and_deploy_gh_release "intel-igc-opencl" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb" || {
msg_warn "Failed to deploy Intel IGC OpenCL 2"
}
fetch_and_deploy_gh_release "" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || {
fetch_and_deploy_gh_release "libigdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb" || {
msg_warn "Failed to deploy Intel GDGMM12"
}
fetch_and_deploy_gh_release "" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || {
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb" || {
msg_warn "Failed to deploy Intel OpenCL ICD"
}
@@ -3258,6 +3261,31 @@ setup_mariadb() {
}
fi
# Configure tmpfiles.d to ensure /run/mysqld directory is created on boot
# This fixes the issue where MariaDB fails to start after container reboot
msg_info "Configuring MariaDB runtime directory persistence"
# Create tmpfiles.d configuration with error handling
if ! printf '# Ensure /run/mysqld directory exists with correct permissions for MariaDB\nd /run/mysqld 0755 mysql mysql -\n' > /etc/tmpfiles.d/mariadb.conf; then
msg_warn "Failed to create /etc/tmpfiles.d/mariadb.conf - runtime directory may not persist on reboot"
fi
# Create the directory now if it doesn't exist
# Verify mysql user exists before attempting ownership change
if [[ ! -d /run/mysqld ]]; then
mkdir -p /run/mysqld
# Set permissions first (works regardless of user existence)
chmod 755 /run/mysqld
# Set ownership only if mysql user exists
if getent passwd mysql >/dev/null 2>&1; then
chown mysql:mysql /run/mysqld
else
msg_warn "mysql user not found - directory created with correct permissions but ownership not set"
fi
fi
msg_ok "Configured MariaDB runtime directory persistence"
cache_installed_version "mariadb" "$MARIADB_VERSION"
msg_ok "Setup MariaDB $MARIADB_VERSION"
}

View File

@@ -0,0 +1,209 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/xperimental/nextcloud-exporter
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
# Enable error handling
set -Eeuo pipefail
trap 'error_handler' ERR
load_functions
# ==============================================================================
# CONFIGURATION
# ==============================================================================
VERBOSE=${var_verbose:-no}
APP="nextcloud-exporter"
APP_TYPE="tools"
BINARY_PATH="/usr/bin/nextcloud-exporter"
CONFIG_PATH="/etc/nextcloud-exporter.env"
SERVICE_PATH="/etc/systemd/system/nextcloud-exporter.service"
# ==============================================================================
# OS DETECTION
# ==============================================================================
if ! grep -qE 'ID=debian|ID=ubuntu' /etc/os-release 2>/dev/null; then
echo -e "${CROSS} Unsupported OS detected. This script only supports Debian and Ubuntu."
exit 1
fi
# ==============================================================================
# UNINSTALL
# ==============================================================================
function uninstall() {
msg_info "Uninstalling Nextcloud-Exporter"
systemctl disable -q --now nextcloud-exporter
rm -f "$SERVICE_PATH"
if dpkg -l | grep -q nextcloud-exporter; then
$STD apt-get remove -y nextcloud-exporter || $STD dpkg -r nextcloud-exporter
fi
rm -f "$CONFIG_PATH"
rm -f "/usr/local/bin/update_nextcloud-exporter"
rm -f "$HOME/.nextcloud-exporter"
msg_ok "Nextcloud-Exporter has been uninstalled"
}
# ==============================================================================
# UPDATE
# ==============================================================================
function update() {
if check_for_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter"; then
msg_info "Stopping service"
systemctl stop nextcloud-exporter
msg_ok "Stopped service"
fetch_and_deploy_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter" "binary" "latest"
msg_info "Starting service"
systemctl start nextcloud-exporter
msg_ok "Started service"
msg_ok "Updated successfully"
exit
fi
}
# ==============================================================================
# INSTALL
# ==============================================================================
function install() {
read -erp "Enter URL of Nextcloud, example: (http://127.0.0.1:8080): " NEXTCLOUD_SERVER
read -rsp "Enter Nextcloud auth token (press Enter to use username/password instead): " NEXTCLOUD_AUTH_TOKEN
printf "\n"
if [[ -z "$NEXTCLOUD_AUTH_TOKEN" ]]; then
read -erp "Enter Nextcloud username: " NEXTCLOUD_USERNAME
read -rsp "Enter Nextcloud password: " NEXTCLOUD_PASSWORD
printf "\n"
fi
read -erp "Query additional info for apps? [Y/n]: " QUERY_APPS
if [[ "${QUERY_APPS,,}" =~ ^(n|no)$ ]]; then
NEXTCLOUD_INFO_APPS="false"
fi
read -erp "Query update information? [Y/n]: " QUERY_UPDATES
if [[ "${QUERY_UPDATES,,}" =~ ^(n|no)$ ]]; then
NEXTCLOUD_INFO_UPDATE="false"
fi
read -erp "Do you want to skip TLS-Verification (if using a self-signed Certificate on Nextcloud) [y/N]: " SKIP_TLS
if [[ "${SKIP_TLS,,}" =~ ^(y|yes)$ ]]; then
NEXTCLOUD_TLS_SKIP_VERIFY="true"
fi
fetch_and_deploy_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter" "binary" "latest"
msg_info "Creating configuration"
cat <<EOF >"$CONFIG_PATH"
# https://github.com/xperimental/nextcloud-exporter
NEXTCLOUD_SERVER="${NEXTCLOUD_SERVER}"
NEXTCLOUD_AUTH_TOKEN="${NEXTCLOUD_AUTH_TOKEN:-}"
NEXTCLOUD_USERNAME="${NEXTCLOUD_USERNAME:-}"
NEXTCLOUD_PASSWORD="${NEXTCLOUD_PASSWORD:-}"
NEXTCLOUD_INFO_UPDATE=${NEXTCLOUD_INFO_UPDATE:-"true"}
NEXTCLOUD_INFO_APPS=${NEXTCLOUD_INFO_APPS:-"true"}
NEXTCLOUD_TLS_SKIP_VERIFY=${NEXTCLOUD_TLS_SKIP_VERIFY:-"false"}
NEXTCLOUD_LISTEN_ADDRESS=":9205"
EOF
msg_ok "Created configuration"
msg_info "Creating service"
cat <<EOF >"$SERVICE_PATH"
[Unit]
Description=nextcloud-exporter
After=network.target
[Service]
User=root
EnvironmentFile=$CONFIG_PATH
ExecStart=$BINARY_PATH
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now nextcloud-exporter
msg_ok "Created and started service"
# Create update script
msg_info "Creating update script"
ensure_usr_local_bin_persist
cat <<'UPDATEEOF' >/usr/local/bin/update_nextcloud-exporter
#!/usr/bin/env bash
# nextcloud-exporter Update Script
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/nextcloud-exporter.sh)"
UPDATEEOF
chmod +x /usr/local/bin/update_nextcloud-exporter
msg_ok "Created update script (/usr/local/bin/update_nextcloud-exporter)"
echo ""
msg_ok "Nextcloud-Exporter installed successfully"
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:9205/metrics${CL}"
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
}
# ==============================================================================
# MAIN
# ==============================================================================
header_info
ensure_usr_local_bin_persist
import_local_ip
# Handle type=update (called from update script)
if [[ "${type:-}" == "update" ]]; then
if [[ -f "$BINARY_PATH" ]]; then
update
else
msg_error "Nextcloud-Exporter is not installed. Nothing to update."
exit 1
fi
exit 0
fi
# Check if already installed
if [[ -f "$BINARY_PATH" ]]; then
msg_warn "Nextcloud-Exporter is already installed."
echo ""
echo -n "${TAB}Uninstall Nextcloud-Exporter? (y/N): "
read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
uninstall
exit 0
fi
echo -n "${TAB}Update Nextcloud-Exporter? (y/N): "
read -r update_prompt
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
update
exit 0
fi
msg_warn "No action selected. Exiting."
exit 0
fi
# Fresh installation
msg_warn "Nextcloud-Exporter is not installed."
echo ""
echo -e "${TAB}${INFO} This will install:"
echo -e "${TAB} - Nextcloud Exporter (binary)"
echo -e "${TAB} - Systemd service"
echo ""
echo -n "${TAB}Install Nextcloud-Exporter? (y/N): "
read -r install_prompt
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
install
else
msg_warn "Installation cancelled. Exiting."
exit 0
fi

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