Compare commits

...

118 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
4e21f411f5 Update CHANGELOG.md (#11045)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-22 00:15:40 +00:00
community-scripts-pr-app[bot]
fe21d3577f Update versions.json (#11044)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-22 01:14:47 +01:00
community-scripts-pr-app[bot]
3725023ee3 Update .app files (#11041)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-21 21:30:02 +01:00
community-scripts-pr-app[bot]
c19817af8d Update CHANGELOG.md (#11040)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 20:26:43 +00:00
push-app-to-main[bot]
5378d41acf Byparr (#11039)
* Add byparr (ct)

* refactor

* Update date_created to new value

* refactor

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2026-01-21 21:25:50 +01:00
community-scripts-pr-app[bot]
5bb48fc843 Update CHANGELOG.md (#11037)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 14:54:58 +00:00
Ruan Bahia
e935289128 fix: Snipe-IT update missing all user uploads (#11032) (#11033) 2026-01-21 15:54:24 +01:00
community-scripts-pr-app[bot]
0db119d2c3 Update CHANGELOG.md (#11036)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 14:39:41 +00:00
CanbiZ (MickLesk)
5c9087a91a tools: add ubuntu PHP repository setup (#11034)
Switches to using the ondrej/php PPA for Ubuntu and retains the Sury repository for Debian when setting up PHP. This ensures compatibility with the respective distributions' recommended PHP sources.
2026-01-21 15:39:15 +01:00
community-scripts-pr-app[bot]
1d7d8c27fa Update CHANGELOG.md (#11035)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 14:14:52 +00:00
Tobias
fae2d032ab yubal: fix for v0.2 (#11006) 2026-01-21 15:14:29 +01:00
CanbiZ (MickLesk)
2fab70294f fix joplin 2026-01-21 14:58:55 +01:00
CanbiZ (MickLesk)
477199a4c2 yarn rebuild 2026-01-21 13:17:29 +01:00
CanbiZ (MickLesk)
733425f970 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2026-01-21 13:07:28 +01:00
CanbiZ (MickLesk)
7395a44277 Run TypeScript compilation in Joplin Server scripts
Added 'yarn run tsc' to both update and install scripts for Joplin Server to ensure TypeScript sources are compiled. Also removed an unused variable from build.func for code cleanup.
2026-01-21 13:07:20 +01:00
community-scripts-pr-app[bot]
f555f9ae0c Update versions.json (#11030)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 13:07:18 +01:00
CanbiZ (MickLesk)
fe2384a2fa Initialize variables in create_lxc_container
Added initialization for ONLINE_TEMPLATE and ONLINE_TEMPLATES arrays at the start of the create_lxc_container function to ensure variables are defined before use.
2026-01-21 12:42:19 +01:00
CanbiZ (MickLesk)
5384adf0c3 Remove unnecessary set +u/set -u in create_lxc_container
only as test exist
2026-01-21 12:40:55 +01:00
CanbiZ (MickLesk)
ed18776710 fix unbound var: ONLINE_TEMPLATES 2026-01-21 12:39:57 +01:00
community-scripts-pr-app[bot]
13824931b0 Update CHANGELOG.md (#11029)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 11:02:01 +00:00
CanbiZ (MickLesk)
88557d53f4 core: allow empty tags & improve template search (#11020) 2026-01-21 12:01:34 +01:00
community-scripts-pr-app[bot]
0c9653c7cb Update CHANGELOG.md (#11028)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 11:01:13 +00:00
CanbiZ (MickLesk)
914c316f42 Joplin-Server: use yarn workspaces focus for faster builds (#11027) 2026-01-21 12:00:46 +01:00
community-scripts-pr-app[bot]
49d92afb98 Update CHANGELOG.md (#11018)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 05:47:47 +00:00
Slaviša Arežina
dba473b2b3 Set disable flag to true in joplin-server.json (#11008) 2026-01-21 06:47:22 +01:00
community-scripts-pr-app[bot]
5dd50aacd7 Update CHANGELOG.md (#11016)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 00:15:04 +00:00
community-scripts-pr-app[bot]
0dcb8b5ef7 Update versions.json (#11015)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-21 01:14:40 +01:00
community-scripts-pr-app[bot]
a48435e064 Update CHANGELOG.md (#11014)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 22:42:19 +00:00
CanbiZ (MickLesk)
cb2141ebe2 Revert "Revert "core: add retry logic for template lock in LXC container crea…" (#11013)
This reverts commit 7699f4f6ad.
2026-01-20 23:41:53 +01:00
community-scripts-pr-app[bot]
b1f21b4024 Update CHANGELOG.md (#11012)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 22:36:24 +00:00
CanbiZ (MickLesk)
7699f4f6ad Revert "core: add retry logic for template lock in LXC container creation (#1…" (#11011)
This reverts commit d71f24bddb.
2026-01-20 23:35:39 +01:00
community-scripts-pr-app[bot]
657a9629be Update CHANGELOG.md (#11009)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 21:36:58 +00:00
CanbiZ (MickLesk)
d71f24bddb core: add retry logic for template lock in LXC container creation (#11002) 2026-01-20 22:36:32 +01:00
community-scripts-pr-app[bot]
5a1c1e06f9 Update CHANGELOG.md (#11007)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 21:21:31 +00:00
CanbiZ (MickLesk)
7146e8d5b9 dolibarr: switch mirror (#11004) 2026-01-20 22:21:02 +01:00
community-scripts-pr-app[bot]
a5dfa33af3 Update CHANGELOG.md (#11001)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 14:03:39 +00:00
CanbiZ (MickLesk)
6dd5fbd7da core: add input validations for several functions (#10995) 2026-01-20 15:03:14 +01:00
community-scripts-pr-app[bot]
718cda8eb1 Update CHANGELOG.md (#11000)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 14:00:13 +00:00
CanbiZ (MickLesk)
ff5263981b core: implement ensure_profile_loaded function (#10999) 2026-01-20 14:59:41 +01:00
community-scripts-pr-app[bot]
785177fe29 Update CHANGELOG.md (#10997)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 13:42:13 +01:00
CanbiZ (MickLesk)
5e7e7c884d checkmk: reordner base function (#10990) 2026-01-20 13:36:13 +01:00
community-scripts-pr-app[bot]
97275d06ea Update CHANGELOG.md (#10996)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 12:35:56 +00:00
CanbiZ (MickLesk)
0f15d81cd3 fix(homepage): preserve config directory during updates (#10993)
Fixes #10985 - The update script was deleting user config files due to
CLEAN_INSTALL=1 flag. Now backs up and restores both .env and config/
directory to preserve user configurations.
2026-01-20 13:35:28 +01:00
community-scripts-pr-app[bot]
6712f6a9ca Update CHANGELOG.md (#10994)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 12:24:59 +00:00
miausalvaje
1816b0169e DiscoPanel: add go for update build process (#10991)
* Refactor Go installation and DiscoPanel build process

Updated the Go installation process and modified the build command for DiscoPanel. Also updated the systemd service configuration to include Go in the PATH.

* Using setup_go

Using setup_go instead of a manual installation.
2026-01-20 13:24:32 +01:00
community-scripts-pr-app[bot]
3f05972eb9 Update versions.json (#10992)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 13:06:36 +01:00
community-scripts-pr-app[bot]
76912641bb Update CHANGELOG.md (#10987)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 00:14:01 +00:00
community-scripts-pr-app[bot]
11f67d3e50 Update versions.json (#10986)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-20 01:13:41 +01:00
community-scripts-pr-app[bot]
7b0ea03295 Update CHANGELOG.md (#10983)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 21:41:22 +00:00
CanbiZ (MickLesk)
eaf911be0b fix(pangolin): use dynamic badger plugin version (#10867) (#10975) 2026-01-19 22:41:01 +01:00
community-scripts-pr-app[bot]
245ec06d77 Update CHANGELOG.md (#10982)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 21:40:45 +00:00
CanbiZ (MickLesk)
9a489f0b53 fix(tautulli): add version detection and proper update script (#10842) (#10976) 2026-01-19 22:40:27 +01:00
community-scripts-pr-app[bot]
f75f2a24d7 Update CHANGELOG.md (#10981)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 21:40:20 +00:00
CanbiZ (MickLesk)
9e69c7a76e feat(core): add RFC 1123/952 compliant hostname/FQDN validation (#10977) 2026-01-19 22:39:57 +01:00
community-scripts-pr-app[bot]
72631c0099 Update CHANGELOG.md (#10980)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 20:47:00 +00:00
community-scripts-pr-app[bot]
1aa0475e62 Update CHANGELOG.md (#10979)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 20:46:49 +00:00
CanbiZ (MickLesk)
56c2e6cf1c fix(apache-guacamole): move jdbc cleanup after schema upgrade (#10942) (#10974)
- Temp files were deleted before schema upgrade could access them
- Fixes update script failing on MySQL schema upgrade step
2026-01-19 21:46:35 +01:00
community-scripts-pr-app[bot]
379faaa3d6 Update CHANGELOG.md (#10978)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 20:46:23 +00:00
CanbiZ (MickLesk)
0edd8fcfe3 fix(outline): prevent corepack interactive prompt blocking installation (#10973)
- Add COREPACK_ENABLE_DOWNLOAD_PROMPT=0 to skip yarn download confirmation
- Fixes installation hanging on 'Configuring Outline (Patience)'
2026-01-19 21:46:18 +01:00
CanbiZ (MickLesk)
c8c1c454ce fix(firefly): prevent nested storage directories during update (#10967) (#10972)
- Remove existing backup directory before creating new backup
- Clean up temporary files after successful update
2026-01-19 21:45:59 +01:00
community-scripts-pr-app[bot]
69b0e5b858 Update .app files (#10971)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-19 21:07:22 +01:00
community-scripts-pr-app[bot]
41384d0764 Update CHANGELOG.md (#10970)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 19:40:53 +00:00
community-scripts-pr-app[bot]
1e6f37057b Update date in json (#10969)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-19 19:40:27 +00:00
push-app-to-main[bot]
7a71414d0e Add yubal (ct) (#10955) 2026-01-19 20:40:05 +01:00
CanbiZ (MickLesk)
de20a41423 Prioritize eth0 IP lookup in get_lxc_ip function
The get_lxc_ip function now attempts to retrieve the IP address directly from eth0 before falling back to hostname -I. This improves reliability for LXC containers where eth0 is typically the primary interface.
2026-01-19 17:41:17 +01:00
CanbiZ (MickLesk)
008f6af0bd Call get_lxc_ip explicitly after network is up
Moved the get_lxc_ip call from automatic execution in load_functions to explicit calls in alpine-install.func and install.func, ensuring the LXC IP is retrieved only after the network is up inside the container. Updated comments to clarify usage.
2026-01-19 17:40:25 +01:00
CanbiZ (MickLesk)
d6811a3383 Fix ip import (#10964)
* Rename import_local_ip to get_local_ip

Replaces all references to the helper function import_local_ip with get_local_ip across scripts and documentation for consistency. Updates usage examples and comments to reflect the new function name.

* Rename get_local_ip to get_lxc_ip and update usage

Replaces all references to get_local_ip with get_lxc_ip across scripts, documentation, and templates for clarity and consistency. Updates the implementation in core.func to improve IP detection for LXC containers, and adjusts helper functions in addon scripts accordingly.
2026-01-19 17:32:44 +01:00
community-scripts-pr-app[bot]
38a0757e4e Update CHANGELOG.md (#10963)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 16:20:48 +00:00
Chris
cb8a900d84 PeaNUT: change default port (#10962) 2026-01-19 17:20:25 +01:00
community-scripts-pr-app[bot]
3bf08df691 Update CHANGELOG.md (#10960)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 15:33:41 +00:00
Slaviša Arežina
90f73d1d24 Remove custom IP fetching (#10954)
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-01-19 16:33:08 +01:00
community-scripts-pr-app[bot]
bc53369bab Update CHANGELOG.md (#10957)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 14:46:08 +00:00
Slaviša Arežina
56ab6a6cb8 Refactor: Homepage (#10950) 2026-01-19 15:45:41 +01:00
community-scripts-pr-app[bot]
4f389c01f9 Update CHANGELOG.md (#10956)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 14:43:34 +00:00
Slaviša Arežina
db5a6bacf4 [core]: Make LXC IP a global variable (#10951) 2026-01-19 15:43:12 +01:00
community-scripts-pr-app[bot]
3e6cfe2766 Update CHANGELOG.md (#10952)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 13:53:48 +00:00
Robert Castley
de14cab715 Update/splunk enterprise (#10949) 2026-01-19 14:53:25 +01:00
community-scripts-pr-app[bot]
187cd4825e Update CHANGELOG.md (#10948)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 12:38:03 +00:00
community-scripts-pr-app[bot]
4dbbbf1545 Update CHANGELOG.md (#10947)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 12:37:53 +00:00
CanbiZ (MickLesk)
9e2c801d29 Refactor: copyparty (#10941) 2026-01-19 13:37:39 +01:00
community-scripts-pr-app[bot]
2903c3d8ad Update CHANGELOG.md (#10946)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 12:37:25 +00:00
Slaviša Arežina
f029460bc6 Refactor (#10945) 2026-01-19 13:36:59 +01:00
community-scripts-pr-app[bot]
6578f3c5f7 Update versions.json (#10944)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 13:06:52 +01:00
community-scripts-pr-app[bot]
973e7e0325 Update CHANGELOG.md (#10940)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 09:04:45 +00:00
CanbiZ (MickLesk)
73944792b5 Remove phpIPAM (#10939) 2026-01-19 10:04:19 +01:00
community-scripts-pr-app[bot]
afe9d08233 Update CHANGELOG.md (#10937)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 00:15:29 +00:00
community-scripts-pr-app[bot]
9e1354a87b Update versions.json (#10936)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-19 01:15:07 +01:00
community-scripts-pr-app[bot]
f2aca758ea Update .app files (#10933)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-18 22:25:32 +01:00
community-scripts-pr-app[bot]
3f4e291203 Update CHANGELOG.md (#10935)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 21:24:46 +00:00
community-scripts-pr-app[bot]
ab86f00c68 Update CHANGELOG.md (#10934)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 21:24:30 +00:00
community-scripts-pr-app[bot]
9d6c2ba2ae Update date in json (#10932)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-18 21:24:25 +00:00
push-app-to-main[bot]
ac68ce48de Termix (#10887)
* Add termix (ct)

* refactor

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2026-01-18 22:24:04 +01:00
community-scripts-pr-app[bot]
4aa6eb7fb5 Update CHANGELOG.md (#10931)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 21:05:32 +00:00
Slaviša Arežina
dbf551d162 Refactor (#10928) 2026-01-18 22:05:08 +01:00
community-scripts-pr-app[bot]
7a52b83eb8 Update CHANGELOG.md (#10930)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 20:20:43 +00:00
Slaviša Arežina
ca97009d1e Remove iVentoy script (#10924) 2026-01-18 21:20:26 +01:00
community-scripts-pr-app[bot]
2c1756cad9 Update CHANGELOG.md (#10929)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 20:20:18 +00:00
CanbiZ (MickLesk)
6e66359d8f Improve password handling and validation logic (#10925) 2026-01-18 21:19:53 +01:00
community-scripts-pr-app[bot]
e21ab1500b Update CHANGELOG.md (#10922)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 17:18:21 +00:00
Christiaan Goossens
fe5108f7ca Fix escaping of the map block (#10920) 2026-01-18 18:18:00 +01:00
community-scripts-pr-app[bot]
502c357895 Update CHANGELOG.md (#10919)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 16:39:36 +00:00
Christiaan Goossens
0e59533bcc Make sure Patchmon also works over IPv6 and if there is another reverse proxy in front (#10917) 2026-01-18 17:39:11 +01:00
community-scripts-pr-app[bot]
e05742b96a Update CHANGELOG.md (#10914)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 14:19:13 +00:00
Tobias
9dc1e606ec refactor: peanut entrypoint (#10902)
* refactor: peanut entrypoint

* refactor: peanut: entrypoint fix

* Apply suggestion from @tremor021

* Apply suggestion from @tremor021

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2026-01-18 15:18:51 +01:00
community-scripts-pr-app[bot]
c03e532dde Update .app files (#10912)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-18 15:15:16 +01:00
community-scripts-pr-app[bot]
54ba53dd3e Update CHANGELOG.md (#10913)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 14:09:55 +00:00
community-scripts-pr-app[bot]
83b5d90c04 Update CHANGELOG.md (#10911)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 14:09:39 +00:00
community-scripts-pr-app[bot]
bcd143e91a Update date in json (#10910)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-01-18 14:09:30 +00:00
push-app-to-main[bot]
c5031e6462 ThingsBoard (#10904)
* Add thingsboard (ct)

* fix

* Fix cat command for ThingsBoard configuration

* Fix syntax for writing to thingsboard.conf

---------

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>
2026-01-18 15:09:14 +01:00
community-scripts-pr-app[bot]
297b4c30df Update versions.json (#10907)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 13:07:16 +01:00
community-scripts-pr-app[bot]
5abfac97f7 Update CHANGELOG.md (#10906)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 11:51:45 +00:00
Jesús
f6b3515c9e fix: preserve newest scripts pagination (#10882) 2026-01-18 12:51:21 +01:00
community-scripts-pr-app[bot]
67685e62d1 Update CHANGELOG.md (#10905)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 11:44:23 +00:00
CanbiZ (MickLesk)
25a6a7ecc7 fix(hwaccel): improve NVIDIA version matching and GPU selection UI (#10901) 2026-01-18 12:43:58 +01:00
community-scripts-pr-app[bot]
6ccc0aaaf6 Update CHANGELOG.md (#10899)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 09:02:21 +00:00
Slaviša Arežina
97ce511090 Fix typo in the New Script request template (#10891)
* Fix typo

* Update star requirement from 500 to 600

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2026-01-18 10:01:56 +01:00
community-scripts-pr-app[bot]
7d702353f7 Update CHANGELOG.md (#10897)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-18 08:03:52 +00:00
GalaxyCat Dev
b8f9ec2a34 Update qui.json (#10896) 2026-01-18 09:03:28 +01:00
118 changed files with 2759 additions and 1233 deletions

View File

@@ -30,7 +30,7 @@ body:
required: true
- label: "I have searched existing [discussions](https://github.com/community-scripts/ProxmoxVE/discussions?discussions_q=) and found no duplicate requests."
required: true
- label: "The application requested has 200+ stars on Github (if applicable), is older than 6 months, actively maintained and has release tarballs published."
- label: "The application requested has 600+ stars on Github (if applicable), is older than 6 months, actively maintained and has release tarballs published."
required: true
- type: markdown
attributes:

View File

@@ -10,8 +10,151 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2026-01-22
## 2026-01-21
### 🆕 New Scripts
- Byparr ([#11039](https://github.com/community-scripts/ProxmoxVE/pull/11039))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix: Snipe-IT update missing all user uploads (#11032) [@ruanmed](https://github.com/ruanmed) ([#11033](https://github.com/community-scripts/ProxmoxVE/pull/11033))
- yubal: fix for v0.2 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#11006](https://github.com/community-scripts/ProxmoxVE/pull/11006))
- Joplin-Server: use yarn workspaces focus for faster builds [@MickLesk](https://github.com/MickLesk) ([#11027](https://github.com/community-scripts/ProxmoxVE/pull/11027))
### 💾 Core
- #### ✨ New Features
- tools: add ubuntu PHP repository setup [@MickLesk](https://github.com/MickLesk) ([#11034](https://github.com/community-scripts/ProxmoxVE/pull/11034))
- #### 🔧 Refactor
- core: allow empty tags & improve template search [@MickLesk](https://github.com/MickLesk) ([#11020](https://github.com/community-scripts/ProxmoxVE/pull/11020))
### 🌐 Website
- #### 📝 Script Information
- Joplin Server: Set disable flag to true in joplin-server.json [@tremor021](https://github.com/tremor021) ([#11008](https://github.com/community-scripts/ProxmoxVE/pull/11008))
## 2026-01-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- dolibarr: switch mirror [@MickLesk](https://github.com/MickLesk) ([#11004](https://github.com/community-scripts/ProxmoxVE/pull/11004))
- checkmk: reordner base function [@MickLesk](https://github.com/MickLesk) ([#10990](https://github.com/community-scripts/ProxmoxVE/pull/10990))
- Homepage: preserve config directory during updates [@MickLesk](https://github.com/MickLesk) ([#10993](https://github.com/community-scripts/ProxmoxVE/pull/10993))
- DiscoPanel: add go for update build process [@miausalvaje](https://github.com/miausalvaje) ([#10991](https://github.com/community-scripts/ProxmoxVE/pull/10991))
### 💾 Core
- #### ✨ New Features
- core: add retry logic for template lock in LXC container creation [@MickLesk](https://github.com/MickLesk) ([#11002](https://github.com/community-scripts/ProxmoxVE/pull/11002))
- core: implement ensure_profile_loaded function [@MickLesk](https://github.com/MickLesk) ([#10999](https://github.com/community-scripts/ProxmoxVE/pull/10999))
- core: add input validations for several functions [@MickLesk](https://github.com/MickLesk) ([#10995](https://github.com/community-scripts/ProxmoxVE/pull/10995))
## 2026-01-19
### 🆕 New Scripts
- yubal ([#10955](https://github.com/community-scripts/ProxmoxVE/pull/10955))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Apache-Guacamole: move jdbc cleanup after schema upgrade [@MickLesk](https://github.com/MickLesk) ([#10974](https://github.com/community-scripts/ProxmoxVE/pull/10974))
- Outline: prevent corepack interactive prompt blocking installation [@MickLesk](https://github.com/MickLesk) ([#10973](https://github.com/community-scripts/ProxmoxVE/pull/10973))
- firefly: prevent nested storage directories during update (#10967) [@MickLesk](https://github.com/MickLesk) ([#10972](https://github.com/community-scripts/ProxmoxVE/pull/10972))
- PeaNUT: change default port [@vhsdream](https://github.com/vhsdream) ([#10962](https://github.com/community-scripts/ProxmoxVE/pull/10962))
- Update/splunk enterprise [@rcastley](https://github.com/rcastley) ([#10949](https://github.com/community-scripts/ProxmoxVE/pull/10949))
- #### ✨ New Features
- Pangolin: use dynamic badger plugin version [@MickLesk](https://github.com/MickLesk) ([#10975](https://github.com/community-scripts/ProxmoxVE/pull/10975))
- Tautulli: add version detection and add proper update script [@MickLesk](https://github.com/MickLesk) ([#10976](https://github.com/community-scripts/ProxmoxVE/pull/10976))
- #### 🔧 Refactor
- Refactor: Remove custom IP fetching in scripts [@tremor021](https://github.com/tremor021) ([#10954](https://github.com/community-scripts/ProxmoxVE/pull/10954))
- Refactor: Homepage [@tremor021](https://github.com/tremor021) ([#10950](https://github.com/community-scripts/ProxmoxVE/pull/10950))
- Refactor: hev-socks5-server [@tremor021](https://github.com/tremor021) ([#10945](https://github.com/community-scripts/ProxmoxVE/pull/10945))
### 🗑️ Deleted Scripts
- Remove: phpIPAM [@MickLesk](https://github.com/MickLesk) ([#10939](https://github.com/community-scripts/ProxmoxVE/pull/10939))
### 💾 Core
- #### ✨ New Features
- core: add RFC 1123/952 compliant hostname/FQDN validation [@MickLesk](https://github.com/MickLesk) ([#10977](https://github.com/community-scripts/ProxmoxVE/pull/10977))
- [core]: Make LXC IP a global variable [@tremor021](https://github.com/tremor021) ([#10951](https://github.com/community-scripts/ProxmoxVE/pull/10951))
### 🧰 Tools
- #### 🔧 Refactor
- Refactor: copyparty [@MickLesk](https://github.com/MickLesk) ([#10941](https://github.com/community-scripts/ProxmoxVE/pull/10941))
## 2026-01-18
### 🆕 New Scripts
- Termix ([#10887](https://github.com/community-scripts/ProxmoxVE/pull/10887))
- ThingsBoard ([#10904](https://github.com/community-scripts/ProxmoxVE/pull/10904))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix Patchmon install script (escaping) [@christiaangoossens](https://github.com/christiaangoossens) ([#10920](https://github.com/community-scripts/ProxmoxVE/pull/10920))
- refactor: peanut entrypoint [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10902](https://github.com/community-scripts/ProxmoxVE/pull/10902))
- #### 💥 Breaking Changes
- Update Patchmon default Nginx config (IPv6 and correct scheme) [@christiaangoossens](https://github.com/christiaangoossens) ([#10917](https://github.com/community-scripts/ProxmoxVE/pull/10917))
- #### 🔧 Refactor
- Refactor: FluidCalendar [@tremor021](https://github.com/tremor021) ([#10928](https://github.com/community-scripts/ProxmoxVE/pull/10928))
### 🗑️ Deleted Scripts
- Remove iVentoy script [@tremor021](https://github.com/tremor021) ([#10924](https://github.com/community-scripts/ProxmoxVE/pull/10924))
### 💾 Core
- #### ✨ New Features
- core: improve password handling and validation logic [@MickLesk](https://github.com/MickLesk) ([#10925](https://github.com/community-scripts/ProxmoxVE/pull/10925))
- #### 🔧 Refactor
- hwaccel: improve NVIDIA version matching and GPU selection UI [@MickLesk](https://github.com/MickLesk) ([#10901](https://github.com/community-scripts/ProxmoxVE/pull/10901))
### 📂 Github
- Fix typo in the New Script request template [@tremor021](https://github.com/tremor021) ([#10891](https://github.com/community-scripts/ProxmoxVE/pull/10891))
### 🌐 Website
- #### 🐞 Bug Fixes
- fix: preserve newest scripts pagination [@jgrubiox](https://github.com/jgrubiox) ([#10882](https://github.com/community-scripts/ProxmoxVE/pull/10882))
### ❔ Uncategorized
- Update qui.json [@GalaxyCatD3v](https://github.com/GalaxyCatD3v) ([#10896](https://github.com/community-scripts/ProxmoxVE/pull/10896))
## 2026-01-17
### 🆕 New Scripts

View File

@@ -92,7 +92,6 @@ function update_script() {
curl -fsSL "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-jdbc-${LATEST_SERVER}.tar.gz" -o "/tmp/guacamole-auth-jdbc.tar.gz"
$STD tar -xf /tmp/guacamole-auth-jdbc.tar.gz -C /tmp
mv /tmp/guacamole-auth-jdbc-"${LATEST_SERVER}"/mysql/guacamole-auth-jdbc-mysql-"${LATEST_SERVER}".jar /etc/guacamole/extensions/
rm -rf /tmp/guacamole-auth-jdbc*
echo "${LATEST_SERVER}" >~/.guacamole_auth_jdbc
msg_ok "Updated Guacamole Auth JDBC"
else
@@ -140,6 +139,7 @@ function update_script() {
fi
done
fi
rm -rf /tmp/guacamole-auth-jdbc*
msg_ok "MySQL Schema updated"
fi

View File

@@ -1,14 +1,14 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: bvdberg01
# Author: luismco
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://phpipam.net/
# Source: https://github.com/ThePhaseless/Byparr
APP="phpIPAM"
var_tags="${var_tags:-network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
APP="Byparr"
var_tags="${var_tags:-proxy}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
@@ -23,31 +23,20 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/phpipam ]]; then
if [[ ! -d /opt/Byparr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_mariadb
if check_for_gh_release "phpipam" "phpipam/phpipam"; then
if check_for_gh_release "Byparr" "ThePhaseless/Byparr"; then
msg_info "Stopping Service"
systemctl stop apache2
systemctl stop byparr
msg_ok "Stopped Service"
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 \
php-pear \
php-dev
msg_ok "Installed PHP-PEAR"
mv /opt/phpipam/ /opt/phpipam-backup
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
cp /opt/phpipam-backup/config.php /opt/phpipam
rm -r /opt/phpipam-backup
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Byparr" "ThePhaseless/Byparr" "tarball" "latest"
msg_info "Starting Service"
systemctl start apache2
systemctl start byparr
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
@@ -61,4 +50,4 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8191${CL}"

View File

@@ -43,7 +43,6 @@ function update_script() {
if [ "$UPD" == "2" ]; then
NODE_VERSION="22" setup_nodejs
if check_for_gh_release "cronicle" "jhuckaby/Cronicle"; then
IP=$(hostname -I | awk '{print $1}')
msg_info "Installing Dependencies"
$STD apt-get install -y \
git \
@@ -59,7 +58,7 @@ function update_script() {
cd /opt/cronicle
$STD npm install
$STD node bin/build.js dist
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
sed -i "s/localhost:3012/${LOCAL_IP}:3012/g" /opt/cronicle/conf/config.json
$STD /opt/cronicle/bin/control.sh start
msg_ok "Installed Cronicle Worker"
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"

View File

@@ -54,9 +54,14 @@ function update_script() {
cd /opt/discopanel/web/discopanel
$STD npm install
$STD npm run build
msg_ok "Built Web Interface"
setup_go
msg_info "Building DiscoPanel"
cd /opt/discopanel
$STD go build -o discopanel cmd/discopanel/main.go
msg_ok "Setup DiscoPanel"
msg_ok "Built DiscoPanel"
msg_info "Restoring Data"
mkdir -p /opt/discopanel/data

View File

@@ -32,6 +32,7 @@ function update_script() {
if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
systemctl stop apache2
cp /opt/firefly/.env /opt/.env
rm -rf /opt/storage
cp -r /opt/firefly/storage /opt/storage
if [[ -d /opt/firefly/dataimporter ]]; then
@@ -82,6 +83,7 @@ function update_script() {
chown -R www-data:www-data /opt/firefly/dataimporter
msg_ok "Updated Firefly Importer"
fi
rm -rf /opt/storage /opt/.env /opt/dataimporter.env
systemctl start apache2
msg_ok "Updated successfully!"
fi

View File

@@ -34,11 +34,10 @@ function update_script() {
msg_info "Stopped Service"
cp /opt/fluid-calendar/.env /opt/fluid.env
rm -rf /opt/fluid-calendar
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
mv /opt/fluid.env /opt/fluid-calendar/.env
msg_info "Updating Fluid Calendar"
mv /opt/fluid.env /opt/fluid-calendar/.env
cd /opt/fluid-calendar
export NEXT_TELEMETRY_DISABLED=1
$STD npm install --legacy-peer-deps

View File

@@ -49,14 +49,13 @@ function update_script() {
if [[ ! -f /opt/gitea-mirror.env ]]; then
msg_info "Detected old Enviroment, updating files"
APP_SECRET=$(openssl rand -base64 32)
HOST_IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/gitea-mirror.env
# See here for config options: https://github.com/RayLabsHQ/gitea-mirror/blob/main/docs/ENVIRONMENT_VARIABLES.md
NODE_ENV=production
HOST=0.0.0.0
PORT=4321
DATABASE_URL=sqlite://data/gitea-mirror.db
BETTER_AUTH_URL=http://${HOST_IP}:4321
BETTER_AUTH_URL=http://${LOCAL_IP}:4321
BETTER_AUTH_SECRET=${APP_SECRET}
npm_package_version=${APP_VERSION}
EOF

6
ct/headers/byparr Normal file
View File

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

View File

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

View File

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

6
ct/headers/termix Normal file
View File

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

6
ct/headers/thingsboard Normal file
View File

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

6
ct/headers/yubal Normal file
View File

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

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -29,26 +29,18 @@ function update_script() {
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/heiher/${APP}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
if check_for_gh_release "hev-socks5-server" "heiher/hev-socks5-server"; then
msg_info "Stopping Service"
systemctl stop hev-socks5-server
msg_ok "Stopped Service"
msg_info "Updating $APP to v${RELEASE}"
curl -L -o "${APP}" "https://github.com/heiher/${APP}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64"
mv ${APP} /opt/${APP}
chmod +x /opt/${APP}
msg_ok "Updated hev-socks5-server to v${RELEASE}"
fetch_and_deploy_gh_release "hev-socks5-server" "heiher/hev-socks5-server" "singlefile" "latest" "/opt" "hev-socks5-server-linux-x86_64"
msg_info "Starting Service"
systemctl start hev-socks5-server
msg_ok "Started Service"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

View File

@@ -69,7 +69,6 @@ function update_script() {
exit
fi
if [ "$UPD" == "4" ]; then
IP=$(hostname -I | awk '{print $1}')
msg_info "Installing FileBrowser"
RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
$STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/v2.23.0/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin
@@ -95,7 +94,7 @@ WantedBy=default.target" >$service_path
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
}

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -28,6 +28,7 @@ function update_script() {
exit
fi
get_lxc_ip
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
if ! command -v jq &>/dev/null; then
$STD msg_info "Installing jq..."
@@ -37,16 +38,21 @@ function update_script() {
exit
}
fi
LOCAL_IP=$(hostname -I | awk '{print $1}')
RELEASE=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating Homepage to v${RELEASE} (Patience)"
if check_for_gh_release "homepage" "gethomepage/homepage"; then
msg_info "Stopping service"
systemctl stop homepage
curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz")
tar -xzf v${RELEASE}.tar.gz
rm -rf v${RELEASE}.tar.gz
cp -r homepage-${RELEASE}/* /opt/homepage/
rm -rf homepage-${RELEASE}
msg_ok "Stopped service"
cp /opt/homepage/.env /opt/homepage.env
cp -r /opt/homepage/config /opt/homepage_config_backup
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
mv /opt/homepage.env /opt/homepage
rm -rf /opt/homepage/config
mv /opt/homepage_config_backup /opt/homepage/config
msg_info "Updating Homepage (Patience)"
RELEASE=$(get_latest_github_release "gethomepage/homepage")
cd /opt/homepage
$STD pnpm install
$STD pnpm update --no-save caniuse-lite
@@ -55,14 +61,12 @@ function update_script() {
export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
export NEXT_TELEMETRY_DISABLED=1
$STD pnpm build
if [[ ! -f /opt/homepage/.env ]]; then
echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env
fi
msg_ok "Updated Homepage"
msg_info "Starting service"
systemctl start homepage
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Started service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit
}

View File

@@ -1,41 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.iventoy.com/en/index.html
APP="iVentoy"
var_tags="${var_tags:-pxe-tool}"
var_disk="${var_disk:-2}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-0}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/iventoy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:26000${CL}"

View File

@@ -44,7 +44,9 @@ function update_script() {
sed -i "/onenote-converter/d" packages/lib/package.json
$STD yarn config set --home enableTelemetry 0
export BUILD_SEQUENCIAL=1
$STD yarn install --inline-builds
$STD yarn workspaces focus @joplin/server
$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run build
$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run tsc
msg_ok "Updated Joplin-Server"
msg_info "Starting Services"

View File

@@ -29,13 +29,12 @@ function update_script() {
fi
if [ ! -f /opt/n8n.env ]; then
sed -i 's|^Environment="N8N_SECURE_COOKIE=false"$|EnvironmentFile=/opt/n8n.env|' /etc/systemd/system/n8n.service
HOST_IP=$(hostname -I | awk '{print $1}')
mkdir -p /opt
cat <<EOF >/opt/n8n.env
N8N_SECURE_COOKIE=false
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_HOST=$HOST_IP
N8N_HOST=$LOCAL_IP
EOF
fi
NODE_VERSION="22" setup_nodejs

View File

@@ -49,7 +49,6 @@ function update_script() {
if [[ -f /opt/netvisor/oidc.toml ]]; then
mv /opt/netvisor/oidc.toml /opt/scanopy/oidc.toml
fi
LOCAL_IP="$(hostname -I | awk '{print $1}')"
if ! grep -q "PUBLIC_URL" /opt/scanopy/.env; then
sed -i "\|_PATH=|a\NETVISOR_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/scanopy/.env
fi

View File

@@ -41,16 +41,17 @@ function update_script() {
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
msg_info "Updating ${APP}"
msg_info "Updating Outline"
cd /opt/outline
mv /opt/.env /opt/outline
export NODE_ENV=development
export NODE_OPTIONS="--max-old-space-size=3584"
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
$STD corepack enable
$STD yarn install --immutable
export NODE_ENV=production
$STD yarn build
msg_ok "Updated ${APP}"
msg_ok "Updated Outline"
msg_info "Starting Services"
systemctl start outline

View File

@@ -60,6 +60,11 @@ function update_script() {
rm -f /opt/pangolin_config_backup.tar.gz
msg_ok "Restored config"
msg_info "Updating Badger plugin version"
BADGER_VERSION=$(get_latest_github_release "fosrl/badger" "false")
sed -i "s/version: \"v[0-9.]*\"/version: \"$BADGER_VERSION\"/g" /opt/pangolin/config/traefik/traefik_config.yml
msg_ok "Updated Badger plugin version"
msg_info "Starting Services"
systemctl start pangolin
systemctl start gerbil

View File

@@ -28,7 +28,7 @@ function update_script() {
exit
fi
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
if check_for_gh_release "peanut" "Brandawg93/PeaNUT"; then
msg_info "Stopping Service"
@@ -37,6 +37,15 @@ function update_script() {
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
if ! grep -q '/opt/peanut/entrypoint.mjs' /etc/systemd/system/peanut.service; then
msg_info "Fixing entrypoint"
cd /opt/peanut
ln -sf .next/standalone/server.js server.js
sed -i 's|/opt/peanut/.next/standalone/server.js|/opt/peanut/entrypoint.mjs|' /etc/systemd/system/peanut.service
systemctl daemon-reload
msg_ok "Fixed entrypoint"
fi
msg_info "Updating Peanut"
cd /opt/peanut
$STD pnpm i
@@ -61,4 +70,4 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

@@ -65,7 +65,6 @@ function update_script() {
exit
fi
if [ "$UPD" == "3" ]; then
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'

View File

@@ -56,7 +56,6 @@ function update_script() {
if [[ -f /opt/scanopy.oidc.toml ]]; then
mv /opt/scanopy.oidc.toml /opt/scanopy/oidc.toml
fi
LOCAL_IP="$(hostname -I | awk '{print $1}')"
if ! grep -q "PUBLIC_URL" /opt/scanopy/.env; then
sed -i "\|_PATH=|a\scanopy_PUBLIC_URL=http://${LOCAL_IP}:60072" /opt/scanopy/.env
fi

View File

@@ -50,8 +50,8 @@ function update_script() {
$STD apt update
$STD apt -y upgrade
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
cp -r /opt/snipe-it-backup/public/uploads/. /opt/snipe-it/public/uploads/
cp -r /opt/snipe-it-backup/storage/private_uploads/. /opt/snipe-it/storage/private_uploads/
cd /opt/snipe-it/
export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev --optimize-autoloader --no-interaction

View File

@@ -10,8 +10,8 @@ var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-40}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -27,11 +27,42 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating Tautulli"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Tautulli"
msg_ok "Updated successfully!"
if check_for_gh_release "Tautulli" "Tautulli/Tautulli"; then
PYTHON_VERSION="3.13" setup_uv
msg_info "Stopping Service"
systemctl stop tautulli
msg_ok "Stopped Service"
msg_info "Backing up config"
cp -r /opt/Tautulli/config /opt/tautulli_config_backup
msg_ok "Backed up config"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
msg_info "Updating Tautulli"
cd /opt/Tautulli
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
echo "master" >/opt/Tautulli/branch.txt
source /opt/Tautulli/.venv/bin/activate
$STD pip install --upgrade uv
$STD uv pip install -q -r requirements.txt
$STD uv pip install -q pyopenssl
deactivate
msg_ok "Updated Tautulli"
msg_info "Restoring config"
cp -r /opt/tautulli_config_backup/* /opt/Tautulli/config/
rm -rf /opt/tautulli_config_backup
msg_ok "Restored config"
msg_info "Starting Service"
systemctl start tautulli
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}

90
ct/termix.sh Normal file
View File

@@ -0,0 +1,90 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Termix-SSH/Termix
APP="Termix"
var_tags="${var_tags:-ssh;terminal;management}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/termix ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "termix" "Termix-SSH/Termix"; then
msg_info "Stopping Service"
systemctl stop termix
msg_ok "Stopped Service"
msg_info "Backing up Data"
cp -r /opt/termix/data /opt/termix_data_backup
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix"
msg_info "Building Frontend"
cd /opt/termix
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
find public/fonts -name "*.ttf" ! -name "*Regular.ttf" ! -name "*Bold.ttf" ! -name "*Italic.ttf" -delete 2>/dev/null || true
$STD npm install --ignore-scripts --force
$STD npm run build
msg_ok "Built Frontend"
msg_info "Building Backend"
$STD npm rebuild better-sqlite3 --force
$STD npm run build:backend
msg_ok "Built Backend"
msg_info "Setting up Production Dependencies"
$STD npm ci --only=production --ignore-scripts --force
$STD npm rebuild better-sqlite3 bcryptjs --force
$STD npm cache clean --force
msg_ok "Set up Production Dependencies"
msg_info "Restoring Data"
mkdir -p /opt/termix/data
cp -r /opt/termix_data_backup/. /opt/termix/data
rm -rf /opt/termix_data_backup
msg_ok "Restored Data"
msg_info "Updating Frontend Files"
rm -rf /opt/termix/html/*
cp -r /opt/termix/dist/* /opt/termix/html/ 2>/dev/null || true
cp -r /opt/termix/src/locales /opt/termix/html/locales 2>/dev/null || true
cp -r /opt/termix/public/fonts /opt/termix/html/fonts 2>/dev/null || true
msg_ok "Updated Frontend Files"
msg_info "Starting Service"
systemctl start termix
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

57
ct/thingsboard.sh Normal file
View File

@@ -0,0 +1,57 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/thingsboard/thingsboard
APP="ThingsBoard"
var_tags="${var_tags:-iot;platform}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /usr/share/thingsboard ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "thingsboard" "thingsboard/thingsboard"; then
msg_info "Stopping Service"
systemctl stop thingsboard
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "thingsboard" "thingsboard/thingsboard" "binary" "latest" "/tmp" "thingsboard-*.deb"
msg_info "Running Database Upgrade"
$STD /usr/share/thingsboard/bin/install/upgrade.sh
msg_ok "Ran Database Upgrade"
msg_info "Starting Service"
systemctl start thingsboard
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

66
ct/yubal.sh Normal file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Crazywolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/guillevc/yubal
APP="Yubal"
var_tags="${var_tags:-music;media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-15}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/yubal ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "yubal" "guillevc/yubal"; then
msg_info "Stopping Services"
systemctl stop yubal
msg_ok "Stopped Services"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yubal" "guillevc/yubal" "tarball" "latest" "/opt/yubal"
msg_info "Building Frontend"
cd /opt/yubal/web
$STD bun install --frozen-lockfile
VERSION=$(get_latest_github_release "guillevc/yubal")
VITE_VERSION=$VERSION VITE_COMMIT_SHA=$VERSION VITE_IS_RELEASE=true $STD bun run build
msg_ok "Built Frontend"
msg_info "Installing Python Dependencies"
cd /opt/yubal
$STD uv sync --no-dev --frozen
msg_ok "Installed Python Dependencies"
msg_info "Starting Services"
systemctl start yubal
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

View File

@@ -434,12 +434,12 @@ create_self_signed_cert
## Utility Functions
### `import_local_ip`
### `get_lxc_ip`
Set the `$LOCAL_IP` variable with the container's IP address.
```bash
import_local_ip
get_lxc_ip
echo "Container IP: $LOCAL_IP"
# Use in config files
@@ -528,7 +528,7 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="myapp" PG_DB_USER="myapp" setup_postgresql_db
import_local_ip
get_lxc_ip
# Download app using fetch_and_deploy (handles version tracking)
fetch_and_deploy_gh_release "myapp" "example/myapp" "tarball" "latest" "/opt/myapp"
@@ -664,7 +664,7 @@ PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="bcmath,curl,gd,intl,mbstring,mysql,x
setup_composer
setup_mariadb
MARIADB_DB_NAME="myapp" MARIADB_DB_USER="myapp" setup_mariadb_db
import_local_ip
get_lxc_ip
# Download pre-built release (with asset pattern)
fetch_and_deploy_gh_release "myapp" "example/myapp" "prebuild" "latest" "/opt/myapp" "myapp-*.tar.gz"

View File

@@ -58,7 +58,7 @@ msg_ok "Installed Dependencies"
# fetch_and_deploy_gh_release "appname" "owner/repo" "prebuild" "latest" "/opt/appname" "app-*.tar.gz"
#
# --- Tools & Utilities ---
# import_local_ip # Sets $LOCAL_IP variable (call early!)
# get_lxc_ip # Sets $LOCAL_IP variable (call early!)
# setup_ffmpeg # Install FFmpeg with codecs
# setup_hwaccel # Setup GPU hardware acceleration
# setup_imagemagick # Install ImageMagick 7
@@ -72,7 +72,7 @@ msg_ok "Installed Dependencies"
# NODE_VERSION="22" setup_nodejs
# PG_VERSION="17" setup_postgresql
# PG_DB_NAME="myapp" PG_DB_USER="myapp" setup_postgresql_db
# import_local_ip
# get_lxc_ip
# fetch_and_deploy_gh_release "myapp" "owner/myapp" "tarball" "latest" "/opt/myapp"
#
# msg_info "Configuring MyApp"
@@ -89,7 +89,7 @@ msg_ok "Installed Dependencies"
# EXAMPLE 2: Python Application with uv
# =============================================================================
# PYTHON_VERSION="3.13" setup_uv
# import_local_ip
# get_lxc_ip
# fetch_and_deploy_gh_release "myapp" "owner/myapp" "tarball" "latest" "/opt/myapp"
#
# msg_info "Setting up MyApp"
@@ -108,7 +108,7 @@ msg_ok "Installed Dependencies"
# setup_composer
# setup_mariadb
# MARIADB_DB_NAME="myapp" MARIADB_DB_USER="myapp" setup_mariadb_db
# import_local_ip
# get_lxc_ip
# fetch_and_deploy_gh_release "myapp" "owner/myapp" "prebuild" "latest" "/opt/myapp" "myapp-*.tar.gz"
#
# msg_info "Configuring MyApp"
@@ -126,7 +126,7 @@ msg_ok "Installed Dependencies"
# YOUR APPLICATION INSTALLATION
# =============================================================================
# 1. Setup runtimes and databases FIRST
# 2. Call import_local_ip if you need the container IP
# 2. Call get_lxc_ip if you need the container IP
# 3. Use fetch_and_deploy_gh_release to download the app (handles version tracking)
# 4. Configure the application
# 5. Create systemd service
@@ -134,7 +134,7 @@ msg_ok "Installed Dependencies"
# --- Setup runtimes/databases ---
NODE_VERSION="22" setup_nodejs
import_local_ip
get_lxc_ip
# --- Download and install app ---
fetch_and_deploy_gh_release "[appname]" "[owner/repo]" "tarball" "latest" "/opt/[appname]"

View File

@@ -0,0 +1,35 @@
{
"name": "Byparr",
"slug": "byparr",
"categories": [
14
],
"date_created": "2026-01-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8191,
"documentation": "https://github.com/ThePhaseless/Byparr/blob/master/README.md",
"website": "https://github.com/ThePhaseless/Byparr",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/byparr.webp",
"config_path": "",
"description": "Byparr is a proxy server to bypass Cloudflare and DDoS-GUARD protection.",
"install_methods": [
{
"type": "default",
"script": "ct/byparr.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -8,7 +8,7 @@
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": null,
"interface_port": 3923,
"documentation": "https://github.com/9001/copyparty?tab=readme-ov-file#the-browser",
"website": "https://github.com/9001/copyparty",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/copyparty.webp",
@@ -35,6 +35,10 @@
{
"text": "Execute within the Proxmox shell or in LXC",
"type": "info"
},
{
"text": "Update with: update_copyparty",
"type": "info"
}
]
}

View File

@@ -23,7 +23,7 @@
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "12"
"version": "13"
}
}
],
@@ -35,10 +35,6 @@
{
"text": "Default credentials: `cat /root/hev.creds`",
"type": "info"
},
{
"text": "Config stored at `/etc/hev-socks5-server/main.yml`",
"type": "info"
}
]
}

View File

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

View File

@@ -1,40 +0,0 @@
{
"name": "iVentoy",
"slug": "iventoy",
"categories": [
2
],
"date_created": "2024-05-16",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 26000,
"documentation": "https://www.iventoy.com/en/doc_news.html",
"website": "https://www.iventoy.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/iventoy.webp",
"config_path": "",
"description": "iVentoy is an upgraded PXE server that allows simultaneous OS booting and installation on multiple machines via network. It is user-friendly, requiring only the placement of ISO files in a designated folder and selecting PXE boot on the client machine. iVentoy supports x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, and ARM64 UEFI modes. It is compatible with over 110 OS types, including Windows, WinPE, Linux, and VMware.",
"install_methods": [
{
"type": "default",
"script": "ct/iventoy.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 2,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Container must be privileged.",
"type": "warning"
}
]
}

View File

@@ -8,7 +8,7 @@
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"interface_port": 8080,
"documentation": "https://github.com/Brandawg93/PeaNUT/blob/main/README.md",
"website": "https://github.com/Brandawg93/PeaNUT/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/peanut.webp",

View File

@@ -1,35 +0,0 @@
{
"name": "phpIPAM",
"slug": "phpipam",
"categories": [
4
],
"date_created": "2025-01-15",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://phpipam.net/documents/all-documents/",
"website": "https://phpipam.net/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/phpipam.webp",
"config_path": "/opt/phpipam/config.php",
"description": "phpipam is an open-source web IP address management application (IPAM). Its goal is to provide light, modern and useful IP address management.",
"install_methods": [
{
"type": "default",
"script": "ct/phpipam.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "Admin",
"password": "ipamadmin"
},
"notes": []
}

View File

@@ -10,7 +10,7 @@
"privileged": false,
"interface_port": 7476,
"documentation": "https://github.com/autobrr/qui",
"website": "https://github.com/autobrr/qui",
"website": "https://getqui.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/qui.webp",
"config_path": "/root/.config/qui/config.toml",
"description": "Qui is a modern, self-hosted web interface for managing multiple qBittorrent instances with support for 10k+ torrents. It provides a clean and responsive interface for monitoring and controlling your qBittorrent downloads across multiple servers.",

View File

@@ -12,7 +12,7 @@
"documentation": "https://help.splunk.com",
"config_path": "",
"website": "https://www.splunk.com/en_us/download/splunk-enterprise.html",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/splunk.webp",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/splunk-light.webp",
"description": "Platform for searching, monitoring, and analyzing machine-generated data at scale for operational intelligence and security.",
"install_methods": [
{
@@ -22,8 +22,8 @@
"cpu": 4,
"ram": 8192,
"hdd": 40,
"os": "Ubuntu",
"version": "24.04"
"os": "Debian",
"version": "13"
}
}
],

View File

@@ -0,0 +1,35 @@
{
"name": "Termix",
"slug": "termix",
"categories": [
6
],
"date_created": "2026-01-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://docs.termix.site/",
"website": "https://termix.site/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/termix.webp",
"config_path": "",
"description": "Termix is an open-source, self-hosted server management platform with SSH terminal access, SSH tunneling, remote file management, Docker management, and multi-platform support.",
"install_methods": [
{
"type": "default",
"script": "ct/termix.sh",
"resources": {
"cpu": 4,
"ram": 4096,
"hdd": 10,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -0,0 +1,48 @@
{
"name": "ThingsBoard",
"slug": "thingsboard",
"categories": [
7
],
"date_created": "2026-01-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://thingsboard.io/docs/",
"website": "https://thingsboard.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/thingsboard.webp",
"config_path": "/etc/thingsboard/conf/thingsboard.conf",
"description": "ThingsBoard is an open-source IoT platform for data collection, processing, visualization, and device management. It enables device connectivity via industry standard IoT protocols - MQTT, CoAP and HTTP and supports both cloud and on-premises deployments.",
"install_methods": [
{
"type": "default",
"script": "ct/thingsboard.sh",
"resources": {
"cpu": 4,
"ram": 4096,
"hdd": 10,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "sysadmin@thingsboard.org",
"password": "sysadmin"
},
"notes": [
{
"text": "Please allow up to 90 seconds for the Web UI to start",
"type": "info"
},
{
"text": "Additional demo accounts: tenant@thingsboard.org / tenant and customer@thingsboard.org / customer",
"type": "info"
},
{
"text": "Change passwords for all accounts in the account profile page after first login",
"type": "warning"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
{
"name": "Yubal",
"slug": "yubal",
"categories": [
13
],
"date_created": "2026-01-19",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8000,
"documentation": "https://github.com/guillevc/yubal/blob/master/README.md",
"website": "https://github.com/guillevc/yubal",
"config_path": "/opt/yubal.env",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/yubal.webp",
"description": "YouTube Music album downloader with Spotify metadata auto-tagging.",
"install_methods": [
{
"type": "default",
"script": "ct/yubal.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 15,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -1,5 +1,5 @@
import { CalendarPlus } from "lucide-react";
import { useMemo, useState } from "react";
import { useEffect, useMemo } from "react";
import Image from "next/image";
import Link from "next/link";
@@ -26,9 +26,15 @@ export function getDisplayValueFromType(type: string) {
}
}
export function LatestScripts({ items }: { items: Category[] }) {
const [page, setPage] = useState(1);
export function LatestScripts({
items,
page,
onPageChange,
}: {
items: Category[];
page: number;
onPageChange: (page: number) => void;
}) {
const latestScripts = useMemo(() => {
if (!items)
return [];
@@ -48,12 +54,20 @@ export function LatestScripts({ items }: { items: Category[] }) {
);
}, [items]);
const totalPages = Math.max(1, Math.ceil(latestScripts.length / ITEMS_PER_PAGE));
useEffect(() => {
if (page > totalPages) {
onPageChange(totalPages);
}
}, [page, totalPages, onPageChange]);
const goToNextPage = () => {
setPage(prevPage => prevPage + 1);
onPageChange(Math.min(totalPages, page + 1));
};
const goToPreviousPage = () => {
setPage(prevPage => prevPage - 1);
onPageChange(Math.max(1, page - 1));
};
const startIndex = (page - 1) * ITEMS_PER_PAGE;

View File

@@ -18,6 +18,7 @@ function ScriptContent() {
const [selectedCategory, setSelectedCategory] = useQueryState("category");
const [links, setLinks] = useState<Category[]>([]);
const [item, setItem] = useState<Script>();
const [latestPage, setLatestPage] = useState(1);
useEffect(() => {
if (selectedScript && links.length > 0) {
@@ -50,14 +51,16 @@ function ScriptContent() {
/>
</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>
)}
{selectedScript && item
? (
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
)
: (
<div className="flex w-full flex-col gap-5">
<LatestScripts items={links} page={latestPage} onPageChange={setLatestPage} />
<MostViewedScripts items={links} />
</div>
)}
</div>
</div>
</div>

View File

@@ -17,12 +17,11 @@ msg_info "Installing Dependencies"
$STD apt install -y nginx
msg_ok "Installed Dependencies"
PHP_VERSION="8.4"
PHP_MODULE="common,ctype,fileinfo,mysql,tokenizer,dom,redis" PHP_FPM="YES" setup_php
PHP_VERSION="8.4" PHP_MODULE="common,ctype,fileinfo,mysql,tokenizer,dom,redis" PHP_FPM="YES" setup_php
setup_composer
setup_mariadb
MARIADB_DB_NAME="2fauth_db" MARIADB_DB_USER="2fauth" setup_mariadb_db
import_local_ip
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth" "tarball"
msg_info "Setup 2FAuth"

View File

@@ -26,8 +26,8 @@ PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
PG_DB_NAME="adventurelog_db" PG_DB_USER="adventurelog_user" PG_DB_EXTENSIONS="postgis" setup_postgresql_db
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball"
import_local_ip
msg_info "Installing AdventureLog (Patience)"
SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"

View File

@@ -75,7 +75,6 @@ mkdir -p /opt/bar-assistant/resources/data
curl -fsSL https://github.com/bar-assistant/data/archive/refs/heads/v5.tar.gz | tar -xz --strip-components=1 -C /opt/bar-assistant/resources/data
MeiliSearch_API_KEY=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorization: Bearer $MASTER_KEY" | grep -o '"key":"[^"]*"' | head -n 1 | sed 's/"key":"//;s/"//')
MeiliSearch_API_KEY_UID=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorization: Bearer $MASTER_KEY" | grep -o '"uid":"[^"]*"' | head -n 1 | sed 's/"uid":"//;s/"//')
LOCAL_IP=$(hostname -I | awk '{print $1}')
sed -i -e "s|^APP_URL=|APP_URL=http://${LOCAL_IP}/bar/|" \
-e "s|^MEILISEARCH_HOST=|MEILISEARCH_HOST=http://127.0.0.1:7700|" \
-e "s|^MEILISEARCH_KEY=|MEILISEARCH_KEY=${MASTER_KEY}|" \

View File

@@ -21,8 +21,8 @@ PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.
setup_composer
setup_mariadb
MARIADB_DB_NAME="bookstack_db" MARIADB_DB_USER="bookstack_user" setup_mariadb_db
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack" "tarball"
import_local_ip
msg_info "Configuring Bookstack (Patience)"
cd /opt/bookstack

50
install/byparr-install.sh Normal file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: luismco
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/ThePhaseless/Byparr
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt -y install \
xauth \
xvfb \
scrot \
chromium \
chromium-driver \
ca-certificates
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "Byparr" "ThePhaseless/Byparr" "tarball" "latest"
setup_uv
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/byparr.service
[Unit]
Description=Byparr
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/Byparr
ExecStart=/usr/local/bin/uv run python3 main.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now byparr
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -21,9 +21,6 @@ rm -rf /opt/checkmk.deb
echo "${RELEASE}" >"/opt/checkmk_version.txt"
msg_ok "Installed Checkmk"
motd_ssh
customize
msg_info "Creating Service"
SITE_NAME="monitoring"
$STD omd create "$SITE_NAME"
@@ -42,3 +39,5 @@ $STD omd start "$SITE_NAME"
msg_ok "Created Service"
cleanup_lxc
motd_ssh
customize

View File

@@ -17,11 +17,10 @@ NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle" "tarball"
msg_info "Configuring Cronicle Primary Server"
IP=$(hostname -I | awk '{print $1}')
cd /opt/cronicle
$STD npm install
$STD node bin/build.js dist
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
sed -i "s/localhost:3012/${LOCAL_IP}:3012/g" /opt/cronicle/conf/config.json
$STD /opt/cronicle/bin/control.sh setup
$STD /opt/cronicle/bin/control.sh start
msg_ok "Configured Cronicle Primary Server"

View File

@@ -28,8 +28,7 @@ $STD npm ci
$STD npm run install:components
$STD npm run build
cp config/config.example.js config/config.js
IP=$(hostname -I | awk '{print $1}')
sed -i "51s/localhost/${IP}/g" /opt/cryptpad/config/config.js
sed -i "51s/localhost/${LOCAL_IP}/g" /opt/cryptpad/config/config.js
sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/config/config.js
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
$STD bash -c "./install-onlyoffice.sh --accept-license"

View File

@@ -22,7 +22,6 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
PG_VERSION="16" setup_postgresql
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
import_local_ip
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
msg_info "Configuring Docmost (Patience)"

View File

@@ -34,7 +34,7 @@ msg_info "Setup Dolibarr"
BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/"
RELEASE=$(curl -fsSL "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)\d+(\.\d+)+(?=/)' | sort -V | tail -n1)
FILE=$(curl -fsSL "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1)
curl -fsSL "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -o ""$FILE""
curl -fsSL "https://altushost-swe.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -o ""$FILE""
echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections
$STD apt-get install ./$FILE -y
$STD apt install -f

View File

@@ -21,7 +21,6 @@ PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="24" setup_nodejs
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
PG_DB_NAME="enduraindb" PG_DB_USER="endurain" setup_postgresql_db
import_local_ip
fetch_and_deploy_gh_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
msg_info "Setting up Endurain"

View File

@@ -17,7 +17,7 @@ PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
setup_composer
setup_mariadb
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"

View File

@@ -18,31 +18,15 @@ $STD apt-get install -y zip
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
PG_DB_NAME="fluiddb" PG_DB_USER="fluiduser" setup_postgresql_db
NODE_VERSION="20" setup_nodejs
msg_info "Setting up Postgresql Database"
DB_NAME="fluiddb"
DB_USER="fluiduser"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)"
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH ENCRYPTED 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 "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;"
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
{
echo "${APPLICATION} Credentials"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
echo "Database Name: $DB_NAME"
echo "NextAuth Secret: $NEXTAUTH_SECRET"
} >>~/$APPLICATION.creds
msg_ok "Set up Postgresql Database"
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
msg_info "Configuring ${APPLICATION}"
msg_info "Configuring fluid-calendar"
NEXTAUTH_SECRET="$(openssl rand -base64 44 | tr -dc 'a-zA-Z0-9' | cut -c1-32)"
echo "NextAuth Secret: $NEXTAUTH_SECRET" >>~/$APPLICATION.creds
cat <<EOF >/opt/fluid-calendar/.env
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}"
# Change the URL below to your external URL
NEXTAUTH_URL="http://localhost:3000"
@@ -61,7 +45,7 @@ $STD npm install --legacy-peer-deps
$STD npm run prisma:generate
$STD npx prisma migrate deploy
$STD npm run build:os
msg_ok "Configuring ${APPLICATION}"
msg_ok "Configured fluid-calendar"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/fluid-calendar.service
@@ -72,6 +56,7 @@ After=network.target postgresql.service
[Service]
Restart=always
WorkingDirectory=/opt/fluid-calendar
EnvironmentFile=/opt/fluid-calendar/.env
ExecStart=/usr/bin/npm run start
[Install]

View File

@@ -39,14 +39,13 @@ msg_ok "Installed gitea-mirror"
msg_info "Creating Services"
APP_SECRET=$(openssl rand -base64 32)
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
HOST_IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/gitea-mirror.env
# See here for config options: https://github.com/RayLabsHQ/gitea-mirror/blob/main/docs/ENVIRONMENT_VARIABLES.md
NODE_ENV=production
HOST=0.0.0.0
PORT=4321
DATABASE_URL=sqlite://data/gitea-mirror.db
BETTER_AUTH_URL=http://${HOST_IP}:4321
BETTER_AUTH_URL=http://${LOCAL_IP}:4321
BETTER_AUTH_SECRET=${APP_SECRET}
npm_package_version=${APP_VERSION}
EOF

View File

@@ -54,7 +54,6 @@ $STD pip install --upgrade pip wheel
$STD pip install gunicorn -r requirements.txt
msg_ok "Installed Python packages"
LOCAL_IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/healthchecks/hc/local_settings.py
DEBUG = False

View File

@@ -13,36 +13,30 @@ setting_up_container
network_check
update_os
msg_info "Setup ${APPLICATION}"
RELEASE=$(curl -fsSL https://api.github.com/repos/heiher/${APPLICATION}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64"
mv ${APPLICATION} /opt/${APPLICATION}
chmod +x /opt/${APPLICATION}
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/main/conf/main.yml"
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml
mkdir -p /etc/${APPLICATION}
USERNAME="admin"
fetch_and_deploy_gh_release "hev-socks5-server" "heiher/hev-socks5-server" "singlefile" "latest" "/opt" "hev-socks5-server-linux-x86_64"
msg_info "Setup hev-socks5-server"
mkdir -p /etc/hev-socks5-server
download_file "https://raw.githubusercontent.com/heiher/hev-socks5-server/refs/heads/main/conf/main.yml" "/etc/hev-socks5-server/main.yml"
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' /etc/hev-socks5-server/main.yml
PASSWORD=$(openssl rand -base64 16)
MARK="0"
echo "$USERNAME $PASSWORD $MARK" >/root/hev.creds
mv main.yml /etc/${APPLICATION}/main.yml
msg_ok "Setup ${APPLICATION}"
echo "admin $PASSWORD 0" >/root/hev.creds
msg_ok "Setup hev-socks5-server"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
cat <<EOF >/etc/systemd/system/hev-socks5-server.service
[Unit]
Description=${APPLICATION} Service
Description=hev-socks5-server Service
After=network.target
[Service]
ExecStart=/opt/${APPLICATION} /etc/${APPLICATION}/main.yml
ExecStart=/opt/hev-socks5-server /etc/hev-socks5-server/main.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now ${APPLICATION}
systemctl enable -q --now hev-socks5-server
msg_ok "Created Service"
motd_ssh

View File

@@ -18,16 +18,11 @@ $STD apt-get install -y jq
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
RELEASE=$(get_latest_github_release "gethomepage/homepage")
LOCAL_IP=$(hostname -I | awk '{print $1}')
RELEASE=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing Homepage v${RELEASE} (Patience)"
curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
$STD tar -xzf v${RELEASE}.tar.gz
rm -rf v${RELEASE}.tar.gz
msg_info "Installing Homepage (Patience)"
mkdir -p /opt/homepage/config
mv homepage-${RELEASE}/* /opt/homepage
rm -rf homepage-${RELEASE}
cd /opt/homepage
cp /opt/homepage/src/skeleton/* /opt/homepage/config
$STD pnpm install
@@ -37,8 +32,7 @@ export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepa
export NEXT_TELEMETRY_DISABLED=1
$STD pnpm build
echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Homepage v${RELEASE}"
msg_ok "Installed Homepage"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/homepage.service
@@ -46,6 +40,7 @@ cat <<EOF >/etc/systemd/system/homepage.service
Description=Homepage
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
@@ -53,6 +48,7 @@ RestartSec=1
User=root
WorkingDirectory=/opt/homepage/
ExecStart=pnpm start
[Install]
WantedBy=multi-user.target
EOF

View File

@@ -21,7 +21,6 @@ msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
PG_DB_NAME="infisical_db" PG_DB_USER="infisical" setup_postgresql_db
import_local_ip
msg_info "Setting up Infisical Repository"
setup_deb822_repo \

View File

@@ -28,7 +28,6 @@ $STD apt install -y inventree
msg_ok "Installed InvenTree"
msg_info "Configuring InvenTree"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
if [[ -f /etc/inventree/config.yaml ]]; then
sed -i "s|site_url:.*|site_url: http://${LOCAL_IP}|" /etc/inventree/config.yaml
fi

View File

@@ -33,7 +33,6 @@ setup_composer
NODE_VERSION="22" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="investbrain" PG_DB_USER="investbrain" setup_postgresql_db
import_local_ip
fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"

View File

@@ -36,7 +36,7 @@ msg_ok "Installed Dependencies"
setup_mariadb
MARIADB_DB_NAME="invoiceninja" MARIADB_DB_USER="invoiceninja" setup_mariadb_db
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="bcmath,curl,gd,gmp,imagick,intl,mbstring,mysql,soap,xml,zip" setup_php
import_local_ip
fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
msg_info "Configuring InvoiceNinja"

View File

@@ -1,48 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.iventoy.com/en/index.html
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
RELEASE=$(curl -fsSL https://api.github.com/repos/ventoy/pxe/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing iVentoy v${RELEASE}"
mkdir -p /opt/iventoy/{data,iso}
curl -fsSL "https://github.com/ventoy/PXE/releases/download/v${RELEASE}/iventoy-${RELEASE}-linux-free.tar.gz" -o "iventoy-${RELEASE}-linux-free.tar.gz"
tar -C /tmp -xzf iventoy*.tar.gz
mv /tmp/iventoy*/* /opt/iventoy/
rm -rf iventoy*.tar.gz
msg_ok "Installed iVentoy"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/iventoy.service
[Unit]
Description=iVentoy PXE Booter
Documentation=https://www.iventoy.com
Wants=network-online.target
[Service]
Type=forking
Environment=IVENTOY_API_ALL=1
Environment=IVENTOY_AUTO_RUN=1
Environment=LIBRARY_PATH=/opt/iventoy/lib/lin64
Environment=LD_LIBRARY_PATH=/opt/iventoy/lib/lin64
ExecStart=sh ./iventoy.sh -R start
WorkingDirectory=/opt/iventoy
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now iventoy
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -28,16 +28,17 @@ $STD pm2 install pm2-logrotate
$STD pm2 set pm2-logrotate:max_size 100MB
$STD pm2 set pm2-logrotate:retain 5
$STD pm2 set pm2-logrotate:compress tr
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball"
import_local_ip
msg_info "Setting up Joplin Server (Patience)"
cd /opt/joplin-server
sed -i "/onenote-converter/d" packages/lib/package.json
$STD yarn config set --home enableTelemetry 0
export BUILD_SEQUENCIAL=1
$STD yarn install --inline-builds
$STD yarn workspaces focus @joplin/server
$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run build
$STD yarn workspaces foreach -R --topological-dev --from @joplin/server run tsc
cat <<EOF >/opt/joplin-server/.env
PM2_HOME=/opt/pm2
NODE_ENV=production

View File

@@ -21,7 +21,6 @@ $STD apt install -y \
locales
msg_ok "Installed Dependencies"
import_local_ip
PG_VERSION="16" setup_postgresql
PG_DB_NAME="koel" PG_DB_USER="koel" setup_postgresql_db
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="bz2,exif,imagick,pgsql,sqlite3" setup_php

View File

@@ -21,8 +21,7 @@ $STD ln -s /usr/local/kubo/ipfs /usr/local/bin/ipfs
$STD ipfs init
ipfs config Addresses.API /ip4/0.0.0.0/tcp/5001
ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080
LXCIP=$(hostname -I | awk '{print $1}')
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LXCIP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://${LOCAL_IP}:5001\", \"http://localhost:3000\", \"http://127.0.0.1:5001\", \"https://webui.ipfs.io\", \"http://0.0.0.0:5001\"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
msg_ok "Configured IPFS"

View File

@@ -19,7 +19,6 @@ read -rp "${TAB3}Enter your choice <i/e> (default: i): " ssl_choice
ssl_choice=${ssl_choice:-i}
case "${ssl_choice,,}" in
i)
import_local_ip
DEFAULT_HOST="$LOCAL_IP"
msg_info "Configuring Caddy"

View File

@@ -78,11 +78,10 @@ sed -i "s/listen = \/run\/php\/php8.4-fpm.sock/listen = \/run\/php-fpm-librenms.
msg_ok "Configured PHP-FPM"
msg_info "Configure Nginx"
IP_ADDR=$(hostname -I | awk '{print $1}')
cat >/etc/nginx/sites-enabled/librenms <<'EOF'
server {
listen 80;
server_name ${IP_ADDR};
server_name ${LOCAL_IP};
root /opt/librenms/html;
index index.php;

View File

@@ -50,10 +50,9 @@ fi
$STD yarn
$STD npx playwright install-deps
$STD npx playwright install
IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/linkwarden/.env
NEXTAUTH_SECRET=${SECRET_KEY}
NEXTAUTH_URL=http://${IP}:3000
NEXTAUTH_URL=http://${LOCAL_IP}:3000
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
EOF
$STD yarn prisma:generate

View File

@@ -44,14 +44,13 @@ $STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;
msg_ok "Set up PostgreSQL"
msg_info "Installing Mattermost"
IPADDRESS=$(hostname -I | awk '{print $1}')
curl -fsSL -o /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg
sh -c 'curl -fsSL https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' >/dev/null
$STD apt update
$STD apt install -y mattermost
$STD install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
sed -i -e "/DataSource/c\ \"DataSource\": \"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?sslmode=disable&connect_timeout=10\"," \
-e "/SiteURL/c\ \"SiteURL\": \"http://$IPADDRESS:8065\"," /opt/mattermost/config/config.json
-e "/SiteURL/c\ \"SiteURL\": \"http://$LOCAL_IP:8065\"," /opt/mattermost/config/config.json
systemctl enable -q --now mattermost
msg_ok "Installed Mattermost"

View File

@@ -40,7 +40,6 @@ msg_ok "Installed Python Dependencies"
msg_info "Building Frontend"
MEALIE_VERSION=$(<$HOME/.mealie)
CONTAINER_IP=$(hostname -I | awk '{print $1}')
export NUXT_TELEMETRY_DISABLED=1
cd /opt/mealie/frontend
$STD sed -i "s|https://github.com/mealie-recipes/mealie/commit/|https://github.com/mealie-recipes/mealie/releases/tag/|g" /opt/mealie/frontend/pages/admin/site-settings.vue
@@ -79,7 +78,7 @@ POSTGRES_DB=${PG_DB_NAME}
PRODUCTION=true
HOST=0.0.0.0
PORT=9000
BASE_URL=http://${CONTAINER_IP}:9000
BASE_URL=http://${LOCAL_IP}:9000
EOF
msg_ok "Wrote Environment File"

View File

@@ -61,7 +61,6 @@ $STD /usr/local/bin/uv sync --locked --active -n -p cpython3.13 --managed-python
msg_ok "Configured MediaManager"
msg_info "Creating config and start script"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
SECRET="$(openssl rand -hex 32)"
sed -e "s/localhost:8/$LOCAL_IP:8/g" \
-e "s|/data/|$MEDIA_DIR/|g" \

View File

@@ -18,7 +18,6 @@ fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
msg_info "Configuring ${APPLICATION}"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
MASTER_KEY=$(openssl rand -base64 12)
LOCAL_IP="$(hostname -I | awk '{print $1}')"
sed -i \
-e 's|^env =.*|env = "production"|' \
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \

View File

@@ -29,13 +29,12 @@ $STD npm install --global n8n
msg_ok "Installed n8n"
msg_info "Creating Service"
HOST_IP=$(hostname -I | awk '{print $1}')
mkdir -p /opt
cat <<EOF >/opt/n8n.env
N8N_SECURE_COOKIE=false
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_HOST=$HOST_IP
N8N_HOST=${LOCAL_IP}
EOF
cat <<EOF >/etc/systemd/system/n8n.service

View File

@@ -20,11 +20,11 @@ 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)"
import_local_ip
msg_info "Configuring MeiliSearch"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml

View File

@@ -21,7 +21,6 @@ PG_VERSION="17" setup_postgresql
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)
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

View File

@@ -29,8 +29,7 @@ msg_ok "Installed openziti"
read -r -p "${TAB3}Would you like to go through the auto configuration now? <y/N>" prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
IPADDRESS=$(hostname -I | awk '{print $1}')
GEN_FQDN="controller.${IPADDRESS}.sslip.io"
GEN_FQDN="controller.${LOCAL_IP}.sslip.io"
read -r -p "${TAB3}Please enter the controller FQDN [${GEN_FQDN}]: " ZITI_CTRL_ADVERTISED_ADDRESS
ZITI_CTRL_ADVERTISED_ADDRESS=${ZITI_CTRL_ADVERTISED_ADDRESS:-$GEN_FQDN}
read -r -p "${TAB3}Please enter the controller port [1280]: " ZITI_CTRL_ADVERTISED_PORT

View File

@@ -23,8 +23,8 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
PG_VERSION="16" setup_postgresql
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)"
@@ -38,6 +38,7 @@ 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
export NODE_OPTIONS="--max-old-space-size=3584"
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
$STD corepack enable
$STD yarn install --immutable
export NODE_ENV=production

View File

@@ -28,8 +28,8 @@ read -rp "${TAB3}Enter your Pangolin URL (ex: https://pangolin.example.com): " p
read -rp "${TAB3}Enter your email address: " pango_email
msg_info "Setup Pangolin"
IP_ADDR=$(hostname -I | awk '{print $1}')
SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
BADGER_VERSION=$(get_latest_github_release "fosrl/badger" "false")
cd /opt/pangolin
mkdir -p /opt/pangolin/config/{traefik,db,letsencrypt,logs}
$STD npm ci
@@ -77,7 +77,7 @@ api:
providers:
http:
endpoint: "http://$IP_ADDR:3001/api/v1/traefik-config"
endpoint: "http://$LOCAL_IP:3001/api/v1/traefik-config"
pollInterval: "5s"
file:
filename: "/opt/pangolin/config/traefik/dynamic_config.yml"
@@ -86,7 +86,7 @@ experimental:
plugins:
badger:
moduleName: "github.com/fosrl/badger"
version: "v1.2.0"
version: "$BADGER_VERSION"
log:
level: "INFO"
@@ -168,12 +168,12 @@ http:
next-service:
loadBalancer:
servers:
- url: "http://$IP_ADDR:3002"
- url: "http://$LOCAL_IP:3002"
api-service:
loadBalancer:
servers:
- url: "http://$IP_ADDR:3000"
- url: "http://$LOCAL_IP:3000"
EOF
$STD npm run db:sqlite:generate
$STD npm run db:sqlite:push
@@ -218,7 +218,7 @@ Requires=pangolin.service
[Service]
Type=simple
User=root
ExecStart=/usr/bin/gerbil --reachableAt=http://$IP_ADDR:3004 --generateAndSaveKeyTo=/var/config/key --remoteConfig=http://$IP_ADDR:3001/api/v1/
ExecStart=/usr/bin/gerbil --reachableAt=http://$LOCAL_IP:3004 --generateAndSaveKeyTo=/var/config/key --remoteConfig=http://$LOCAL_IP:3001/api/v1/
Restart=always
RestartSec=10

View File

@@ -23,7 +23,7 @@ msg_ok "Installed dependencies"
setup_mariadb
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" \

View File

@@ -23,8 +23,8 @@ msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
PG_VERSION="17" setup_postgresql
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
@@ -98,9 +98,16 @@ msg_ok "Configured PatchMon"
msg_info "Configuring Nginx"
cat <<EOF >/etc/nginx/sites-available/patchmon.conf
map \$http_x_forwarded_proto \$proxy_corrected_scheme {
default \$scheme; # Fallback to Nginx's actual connection scheme if no X-Forwarded-Proto header was set
https https; # If X-Forwarded-Proto is 'https', use 'https'
http http; # If X-Forwarded-Proto is 'http', use 'http'
}
server {
# Listen on both IPv4 and IPv6 (with all hostnames)
listen 80;
server_name $LOCAL_IP;
listen [::]:80;
# Security headers
add_header X-Frame-Options DENY always;
@@ -123,7 +130,7 @@ server {
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Forwarded-Proto \$proxy_corrected_scheme;
proxy_set_header X-Forwarded-Host \$host;
proxy_set_header Cookie \$http_cookie;
proxy_cache_bypass \$http_upgrade;
@@ -150,7 +157,7 @@ server {
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header X-Forwarded-Proto \$proxy_corrected_scheme;
proxy_cache_bypass \$http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;

View File

@@ -18,7 +18,7 @@ msg_info "Installing NUT"
$STD apt install -y nut-client
msg_ok "Installed NUT"
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
msg_info "Setup Peanut"
@@ -28,9 +28,10 @@ $STD pnpm run build:local
cp -r .next/static .next/standalone/.next/
mkdir -p /opt/peanut/.next/standalone/config
mkdir -p /etc/peanut/
ln -sf .next/standalone/server.js server.js
cat <<EOF >/etc/peanut/settings.yml
WEB_HOST: 0.0.0.0
WEB_PORT: 3000
WEB_PORT: 8080
NUT_HOST: 0.0.0.0
NUT_PORT: 3493
EOF
@@ -51,9 +52,9 @@ Environment="NODE_ENV=production"
#Environment="NUT_HOST=localhost"
#Environment="NUT_PORT=3493"
#Environment="WEB_HOST=0.0.0.0"
#Environment="WEB_PORT=3000"
#Environment="WEB_PORT=8080"
WorkingDirectory=/opt/peanut
ExecStart=node /opt/peanut/.next/standalone/server.js
ExecStart=node /opt/peanut/entrypoint.mjs
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://phpipam.net/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y fping
msg_ok "Installed Dependencies"
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 \
php-pear \
php-dev
msg_ok "Installed PHP-PEAR"
setup_mariadb
MARIADB_DB_NAME="phpipam" MARIADB_DB_USER="phpipam" setup_mariadb_db
fetch_and_deploy_gh_release "phpipam" "phpipam/phpipam" "prebuild" "latest" "/opt/phpipam" "phpipam-v*.zip"
msg_info "Installing phpIPAM"
# patch SCHEMA, during varchar l_name is to short in upstream (2025-11-15)
sed -i -E 's/`l_name`\s+varchar\([0-9]+\)/`l_name` varchar(128)/' /opt/phpipam/db/SCHEMA.sql
$STD mariadb -u root "${MARIADB_DB_NAME}" </opt/phpipam/db/SCHEMA.sql
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
-e "s/\(\$db\['user'\] = \).*/\1'$MARIADB_DB_USER';/" \
-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.4/apache2/php.ini
msg_ok "Installed phpIPAM"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/phpipam.conf
<VirtualHost *:80>
ServerName phpipam
DocumentRoot /opt/phpipam
<Directory /opt/phpipam>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/phpipam_error.log
CustomLog /var/log/apache2/phpipam_access.log combined
</VirtualHost>
EOF
$STD a2ensite phpipam
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -43,7 +43,6 @@ msg_ok "Set up PostgreSQL Database"
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
msg_info "Configuring PLANKA"
LOCAL_IP=$(hostname -I | awk '{print $1}')
SECRET_KEY=$(openssl rand -hex 64)
cd /opt/planka
$STD npm install

View File

@@ -70,11 +70,10 @@ cd /opt/pterodactyl-panel
curl -fsSL "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz" -o "panel.tar.gz"
tar -xzf "panel.tar.gz"
cp .env.example .env
IP=$(hostname -I | awk '{print $1}')
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan key:generate --force
$STD php artisan p:environment:setup --no-interaction --author "$ADMIN_EMAIL" --url "http://$IP"
$STD php artisan p:environment:setup --no-interaction --author "$ADMIN_EMAIL" --url "http://$LOCAL_IP"
$STD php artisan p:environment:database --no-interaction --database $DB_NAME --username $DB_USER --password "$DB_PASS"
$STD php artisan migrate --seed --force --no-interaction
$STD php artisan p:user:make --no-interaction --admin=1 --email "$ADMIN_EMAIL" --password "$ADMIN_PASS" --name-first "$NAME_FIRST" --name-last "$NAME_LAST" --username "admin"

View File

@@ -19,7 +19,6 @@ curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio
$STD dpkg -i minio.deb
msg_ok "Installed Dependencies"
import_local_ip
PG_VERSION="16" setup_postgresql
PG_DB_NAME="rxresume" PG_DB_USER="rxresume" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
NODE_VERSION="24" NODE_MODULE="pnpm@latest" setup_nodejs

View File

@@ -47,7 +47,6 @@ cp ./target/release/daemon /usr/bin/scanopy-daemon
msg_ok "Built scanopy-daemon"
msg_info "Configuring server for first-run"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cat <<EOF >/opt/scanopy/.env
### - SERVER
scanopy_DATABASE_URL=postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME

View File

@@ -24,7 +24,6 @@ setup_composer
fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball"
setup_mariadb
MARIADB_DB_NAME="snipeit_db" MARIADB_DB_USER="snipeit" setup_mariadb_db
import_local_ip
msg_info "Configuring Snipe-IT"
cd /opt/snipe-it

View File

@@ -23,8 +23,7 @@ msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
import_local_ip
fetch_and_deploy_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker" "tarball" "latest" "/opt/speedtest-tracker"
fetch_and_deploy_gh_release "speedtest-tracker" "alexjustesen/speedtest-tracker" "tarball"
msg_info "Installing Speedtest CLI"
setup_deb822_repo \

View File

@@ -43,14 +43,17 @@ while true; do
done
msg_info "Setup Splunk Enterprise"
DOWNLOAD_URL=$(curl -s "https://www.splunk.com/en_us/download/splunk-enterprise.html" | grep -o 'data-link="[^"]*' | sed 's/data-link="//' | grep "https.*products/splunk/releases" | grep "\.deb$")
DOWNLOAD_URL=$(curl -s "https://www.splunk.com/en_us/download/splunk-enterprise.html" | grep -o 'data-link="[^"]*' | sed 's/data-link="//' | grep "https.*products/splunk/releases" | grep "linux-amd64\.tgz$")
RELEASE=$(echo "$DOWNLOAD_URL" | sed 's|.*/releases/\([^/]*\)/.*|\1|')
$STD curl -fsSL -o "splunk-enterprise.deb" "$DOWNLOAD_URL" || {
$STD curl -fsSL -o "splunk-enterprise.tgz" "$DOWNLOAD_URL" || {
msg_error "Failed to download Splunk Enterprise from the provided link."
exit 1
}
$STD dpkg -i "splunk-enterprise.deb"
rm -f "splunk-enterprise.deb"
$STD tar -xzf "splunk-enterprise.tgz" -C /opt
rm -f "splunk-enterprise.tgz"
addgroup --system splunk
adduser --system --home /opt/splunk --shell /bin/bash --ingroup splunk --no-create-home splunk
chown -R splunk:splunk /opt/splunk
msg_ok "Setup Splunk Enterprise v${RELEASE}"
msg_info "Creating Splunk admin user"
@@ -62,7 +65,7 @@ ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
echo "Password: $ADMIN_PASS"
} >> ~/splunk.creds
cat > "/opt/splunk/etc/system/local/user-seed.conf" << EOF
cat << EOF > "/opt/splunk/etc/system/local/user-seed.conf"
[user_info]
USERNAME = $ADMIN_USER
PASSWORD = $ADMIN_PASS
@@ -70,8 +73,8 @@ EOF
msg_ok "Created Splunk admin user"
msg_info "Starting Service"
$STD /opt/splunk/bin/splunk start --accept-license --answer-yes --no-prompt
$STD /opt/splunk/bin/splunk enable boot-start
$STD sudo -u splunk /opt/splunk/bin/splunk start --accept-license --answer-yes --no-prompt
$STD /opt/splunk/bin/splunk enable boot-start -user splunk
msg_ok "Started Service"
motd_ssh

View File

@@ -22,6 +22,9 @@ fetch_and_deploy_gh_release "Tautulli" "Tautulli/Tautulli" "tarball"
msg_info "Installing Tautulli"
cd /opt/Tautulli
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
echo "master" >/opt/Tautulli/branch.txt
uv venv -q
uv pip install -q -r requirements.txt
uv pip install -q pyopenssl

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