Compare commits

..

146 Commits

Author SHA1 Message Date
Slaviša Arežina
319a975fed Update default credentials in cronicle.json 2025-10-29 14:17:06 +01:00
community-scripts-pr-app[bot]
6f52a6cff9 Update CHANGELOG.md (#8719)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 12:09:45 +00:00
CanbiZ
be539981f8 Dispatcharr: add folders in installer / add more build ressources (#8708) 2025-10-29 13:09:23 +01:00
community-scripts-pr-app[bot]
2009da9a79 Update versions.json (#8718)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 13:06:58 +01:00
community-scripts-pr-app[bot]
a5fb2c0fb6 Update CHANGELOG.md (#8717)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 12:06:51 +00:00
CanbiZ
ac32d7a304 LibreTranslate: bump torch version (#8710) 2025-10-29 13:06:31 +01:00
community-scripts-pr-app[bot]
3fe234b021 Update CHANGELOG.md (#8716)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 12:06:26 +00:00
CanbiZ
b9404efc57 Kimai / Ghost / ManageMyDamnLife: Switch to MariaDB (#8712)
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-10-29 13:06:03 +01:00
CanbiZ
304de66ec1 Remove: MySQL (#8709) 2025-10-29 12:53:27 +01:00
community-scripts-pr-app[bot]
9f565d3914 Update CHANGELOG.md (#8704)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 00:14:29 +00:00
community-scripts-pr-app[bot]
e702c552c5 Update versions.json (#8703)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 01:14:07 +01:00
community-scripts-pr-app[bot]
b853739fdc Update CHANGELOG.md (#8695)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 17:10:44 +00:00
Gerhard Burger
c84c44804f Update SABnzbd. Include par2cmdline-turbo (#8648)
* Fix non-free sources

- Don't delete after use
- Use trixie instead of bookworm
- deb822 style

* Add par2cmdline-turbo to sabnzbd

* Remove duplicate setup_uv

* Remove duplicated msg around setup_uv

* Update sabnzbd to use fetch_and_deploy

* switch fetch_deploy outside of msg

Added virtual environment setup and package installation for SABnzbd.

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-10-28 10:10:19 -07:00
community-scripts-pr-app[bot]
f77c2594c3 Update CHANGELOG.md (#8694)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 16:09:29 +00:00
glopes
b3849dbf2b Update alpine-komodo.sh fixing missing pull images command (#8689) 2025-10-28 17:09:09 +01:00
community-scripts-pr-app[bot]
2cd02870c5 Update CHANGELOG.md (#8693)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 16:09:00 +00:00
Chris
f6da623676 jotty: Add more ENV VARS - commented out (#8688) 2025-10-28 17:08:36 +01:00
community-scripts-pr-app[bot]
a4e1d261af Update CHANGELOG.md (#8687)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 13:20:04 +00:00
Gerhard Burger
909dbc20ce Bump bazarr to Debian 13 (#8677)
* Bump bazarr to Debian 13

- Removes unnecessary python3 install
- Use uv to create proper 3.12 venv (bazarr will give warnings about 3.13)

* Improve bazarr update

- setup_uv now versioned
- graceful update from pre-venv install

* chore: cosmetic

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-10-28 14:19:38 +01:00
community-scripts-pr-app[bot]
3a1f1bf813 Update CHANGELOG.md (#8685)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 12:07:39 +00:00
community-scripts-pr-app[bot]
0adc827c69 Update versions.json (#8684)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 13:07:14 +01:00
community-scripts-pr-app[bot]
279d3d391a Update CHANGELOG.md (#8681)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 10:30:33 +00:00
Gerhard Burger
15047893bc Update flaresolverr to Debian 13 (#8672)
* Update flaresolverr to Debian 13

* Check Debian version before updating FlareSolverr
2025-10-28 11:30:06 +01:00
community-scripts-pr-app[bot]
8b54f615a8 Update CHANGELOG.md (#8676)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 00:12:59 +00:00
community-scripts-pr-app[bot]
57d435647b Update versions.json (#8675)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-28 01:12:37 +01:00
community-scripts-pr-app[bot]
fe2734f96a Update CHANGELOG.md (#8671)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 19:35:25 +00:00
CanbiZ
01f1985d2d Add typescript and esbuild to browserless setup (#8666)
Updated both the update and install scripts to include installation of typescript and esbuild for browserless. This ensures required build dependencies are present before running build commands.
2025-10-27 20:35:04 +01:00
community-scripts-pr-app[bot]
92f9033981 Update date in json (#8670)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-27 19:25:39 +00:00
community-scripts-pr-app[bot]
e1603bebec Update CHANGELOG.md (#8669)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 19:25:36 +00:00
push-app-to-main[bot]
abdbca59ff Dispatcharr (#8658)
* 'Add new script'

* Update dispatcharr.sh

* Apply suggestion from @tremor021

* Update install/dispatcharr-install.sh

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

* Update install/dispatcharr-install.sh

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

* Update install/dispatcharr-install.sh

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

* Update author information in dispatcharr.sh

* Update RAM and version in dispatcharr.json

* Remove gcc from dependency installation

* Update website and logo URLs in dispatcharr.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-10-27 20:25:16 +01:00
CanbiZ
6c662ae6ea Garage: fix Service 2025-10-27 11:09:27 -07:00
community-scripts-pr-app[bot]
5c04c89f3f Update .app files (#8664)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-27 15:48:44 +01:00
community-scripts-pr-app[bot]
fba1d16626 Update CHANGELOG.md (#8665)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 13:53:54 +00:00
push-app-to-main[bot]
3666f4981f Garage | Alpine-Garage (#8656)
* 'Add new script'

* add alpine-garage-install.sh

* add alpine-garage.sh

* Update alpine-garage.sh

* Update garage-install.sh

* Increase default RAM and disk for Garage containers

Updated ct/garage.sh and ct/alpine-garage.sh to set higher default RAM (1024MB for Garage, 512MB for Alpine-Garage) and disk (5GB for both). Synced these resource changes in frontend/public/json/garage.json to ensure consistency in container setup defaults.

* Apply suggestion from @tremor021

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-10-27 14:53:20 +01:00
community-scripts-pr-app[bot]
db9809a817 Update CHANGELOG.md (#8663)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 13:12:23 +00:00
Tobias
e69da3846a jellyfin: fix: intel deps (#8657) 2025-10-27 14:11:46 +01:00
community-scripts-pr-app[bot]
cfb76fd0ab Update versions.json (#8661)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 13:06:59 +01:00
community-scripts-pr-app[bot]
fb11b1a0e2 Update CHANGELOG.md (#8653)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 00:14:24 +00:00
community-scripts-pr-app[bot]
66b8d6cb90 Update versions.json (#8652)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-27 01:13:55 +01:00
community-scripts-pr-app[bot]
1723775c55 Update CHANGELOG.md (#8650)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 20:58:06 +00:00
CanbiZ
8852def9a6 PiHole: Bump to Debian 12 (#8649) 2025-10-26 21:57:42 +01:00
community-scripts-pr-app[bot]
249a02754a Update date in json (#8646) 2025-10-26 20:04:43 +01:00
community-scripts-pr-app[bot]
65c79447ea Update CHANGELOG.md (#8647)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 14:01:47 +00:00
push-app-to-main[bot]
a6607734b7 'Add new script' (#8633) 2025-10-26 15:01:21 +01:00
community-scripts-pr-app[bot]
a8d5fc9bc8 Update versions.json (#8645)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 13:06:29 +01:00
community-scripts-pr-app[bot]
0e7a089949 Update CHANGELOG.md (#8644)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 11:19:10 +00:00
Slaviša Arežina
e208b571b9 Refactor: Mylar3 (#8642)
* Refactor

* Update mylar3.sh
2025-10-26 04:18:38 -07:00
community-scripts-pr-app[bot]
327544c737 Update CHANGELOG.md (#8641)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 00:13:57 +00:00
community-scripts-pr-app[bot]
1c8b7b4e7e Update versions.json (#8640)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-26 02:13:28 +02:00
community-scripts-pr-app[bot]
6e5140314f Update CHANGELOG.md (#8636)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 18:35:00 +00:00
community-scripts-pr-app[bot]
622f85db23 Update CHANGELOG.md (#8635)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 18:34:39 +00:00
community-scripts-pr-app[bot]
55be335b66 Update date in json (#8634)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-25 18:34:35 +00:00
push-app-to-main[bot]
5db685f235 PatchMon (#8632)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-10-25 20:34:09 +02:00
community-scripts-pr-app[bot]
14027a605a Update versions.json (#8629)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 14:04:37 +02:00
community-scripts-pr-app[bot]
5f0dba82ad Update CHANGELOG.md (#8626)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 06:37:11 +00:00
Slaviša Arežina
c0087bf8aa Fix interactive (#8622) 2025-10-25 08:36:39 +02:00
community-scripts-pr-app[bot]
691fc48915 Update CHANGELOG.md (#8624)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 00:12:19 +00:00
community-scripts-pr-app[bot]
fe9e894e79 Update versions.json (#8623)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-25 02:11:52 +02:00
community-scripts-pr-app[bot]
43356df77f Update CHANGELOG.md (#8619)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-24 16:38:08 +00:00
Nolhan
e4b96ec200 Change config_path to /etc/bunkerweb/variables.env (#8618) 2025-10-24 18:37:41 +02:00
community-scripts-pr-app[bot]
01a63d0a9d Update CHANGELOG.md (#8617)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-24 15:01:15 +00:00
Vincent
0a4a64ca0c Update logo URL in guardian.json (#8615) 2025-10-24 17:00:46 +02:00
community-scripts-pr-app[bot]
4cdb43065d Update versions.json (#8613)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-24 14:07:26 +02:00
community-scripts-pr-app[bot]
add12ef634 Update CHANGELOG.md (#8608)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-24 00:11:03 +00:00
community-scripts-pr-app[bot]
3ab5167d8a Update versions.json (#8607)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-24 02:10:34 +02:00
community-scripts-pr-app[bot]
b16a7f4562 Update CHANGELOG.md (#8604)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 16:46:45 +00:00
Filippo Stella
fa3f993256 Update dependency installation for Radicale (#8603) 2025-10-23 18:46:17 +02:00
community-scripts-pr-app[bot]
c0894cb612 Update CHANGELOG.md (#8601)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 15:29:08 +00:00
CanbiZ
3b96230327 Various Downgrades to Debian 12 (MySQL / OMW / Technitium) (#8595)
* downgrades deb12

* fixes

* Update inventree.sh

* fix format

* Update Debian version to 12 in omv and technitiumdns configs

Changed the Debian version from 13 to 12 in both omv.json and technitiumdns.json to reflect the correct OS version for these configurations.
2025-10-23 17:28:38 +02:00
community-scripts-pr-app[bot]
99617f265a Update CHANGELOG.md (#8596)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 13:46:59 +00:00
CanbiZ
1fe00c2493 Refactor: Kavita + Updated tools.func (no-same-owner) (#8594) 2025-10-23 15:46:28 +02:00
community-scripts-pr-app[bot]
05fd03d160 Update versions.json (#8592)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 14:05:51 +02:00
community-scripts-pr-app[bot]
e837ebb0e5 Update CHANGELOG.md (#8591)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 11:11:51 +00:00
Slaviša Arežina
8e1a9ffb07 MeTube: Fix inserting path into .bashrc (#8589)
* Fixes

* Update

* Update
2025-10-23 04:11:22 -07:00
community-scripts-pr-app[bot]
af991286dc Update CHANGELOG.md (#8590)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 11:06:45 +00:00
CanbiZ
c1205691e7 tools.func: update update_check messages for clarity (#8588)
* Update update check messages for clarity

* Change message for no update available case
2025-10-23 13:06:13 +02:00
community-scripts-pr-app[bot]
394787e10e Update CHANGELOG.md (#8584)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 00:12:58 +00:00
community-scripts-pr-app[bot]
e37ef10283 Update versions.json (#8583)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-23 02:12:26 +02:00
community-scripts-pr-app[bot]
130e3c7efe Update CHANGELOG.md (#8579)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 15:57:21 +00:00
CanbiZ
634a847c06 part-db: use helper-script php function (#8575) 2025-10-22 17:56:41 +02:00
CanbiZ
c92f9d5518 Check and remove Node.js if version is not 22
Remove existing Node.js installation if version is not 22.
2025-10-22 17:18:35 +02:00
CanbiZ
c7fffd85d3 Expand MongoDB setup to support Ubuntu and update repo handling
Extended the MongoDB setup function to handle both Debian and Ubuntu distributions, mapping their codenames to supported MongoDB suites. Updated the GPG key URL and output path, and adjusted the repository source file structure to match MongoDB's nested layout.
2025-10-22 17:07:12 +02:00
CanbiZ
2ae62055a6 Improve MongoDB repo setup for unknown Debian releases
Fallback to 'bookworm' for unknown Debian releases and update repository verification to check the correct nested path for MongoDB. Also adjust the sources.list format to match the new repository structure.
2025-10-22 17:02:44 +02:00
CanbiZ
e6bd1b5759 Fix MongoDB repo verification and component setup
Simplifies the arguments passed to verify_repo_available by removing the MongoDB version and org path from the suite parameter. Also sets the repository component to 'main' instead of using the variable REPO_COMPONENT.
2025-10-22 16:53:38 +02:00
CanbiZ
55120ae165 Fix MongoDB repo verification path in setup script
Update the repository path passed to verify_repo_available to include the MongoDB version, ensuring the correct repository is checked for availability.
2025-10-22 16:50:53 +02:00
CanbiZ
4672934701 Improve MongoDB repo suite selection for Debian
Enhances the setup_mongodb function to explicitly map Debian codenames to MongoDB-supported suites and adds a fallback to 'bookworm' if the repository is unavailable for the detected suite. This improves compatibility with newer Debian releases and provides clearer error handling.
2025-10-22 16:47:22 +02:00
community-scripts-pr-app[bot]
560e1fdad3 Update CHANGELOG.md (#8578)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 14:42:02 +00:00
CanbiZ
e60020a998 omada: remove static mongodb install (#8577) 2025-10-22 16:41:30 +02:00
CanbiZ
dfda118e65 Improve Node.js setup robustness and module handling
Enhances the setup_nodejs function by improving checks for existing Node.js and npm installations, ensuring jq is installed, handling APT update failures with retries, and providing clearer messaging. Also refines global Node module installation logic with better version checks, update/install messaging, and error handling. Ensures a safe working directory for npm to avoid errors.
2025-10-22 16:38:58 +02:00
CanbiZ
6d7c318dec Fix MongoDB repo suite handling for new Debian versions
Adds explicit mapping of 'trixie', 'forky', and 'sid' to 'bookworm' for MongoDB repository setup. Improves error handling by failing early if the repository is unavailable, instead of attempting a fallback.
2025-10-22 16:32:15 +02:00
CanbiZ
9c39c9cd67 fix formatting 2025-10-22 16:28:03 +02:00
CanbiZ
0ed95ea9cb Install npm using Debian repository if not found
Replaced manual npm installation with apt install.
2025-10-22 16:25:00 +02:00
CanbiZ
433119e830 Update Node.js version and npm installation logic
Updated Node.js version to 22 and modified npm installation process to handle missing npm in Node 22.x.
2025-10-22 16:21:01 +02:00
CanbiZ
a794358c14 Refactor MongoDB setup function
Refactor MongoDB setup function to improve error handling and streamline commands.
2025-10-22 16:17:20 +02:00
CanbiZ
0f69e8cc69 Refactor MySQL installation logic in tools.func
Refactor MySQL installation script for clarity and efficiency. Update package handling and repository setup for Debian 13+.
2025-10-22 15:42:41 +02:00
community-scripts-pr-app[bot]
2e34f534eb Update CHANGELOG.md (#8572)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 13:26:02 +00:00
CanbiZ
1c9d325ae8 Refactor: Full Change & Feature-Bump of tools.func (#8409) 2025-10-22 15:25:26 +02:00
community-scripts-pr-app[bot]
a117cb7a34 Update versions.json (#8569)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 14:07:07 +02:00
community-scripts-pr-app[bot]
33d61e45c4 Update CHANGELOG.md (#8564)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 00:13:45 +00:00
community-scripts-pr-app[bot]
69a6590ab0 Update versions.json (#8563)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-22 02:13:15 +02:00
community-scripts-pr-app[bot]
0f2117ceba Update CHANGELOG.md (#8561)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 19:50:53 +00:00
Slaviša Arežina
87ae749eba Refactor (#8552) 2025-10-21 21:50:26 +02:00
community-scripts-pr-app[bot]
cc4b944b3b Update .app files (#8558)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-21 12:29:34 -07:00
community-scripts-pr-app[bot]
1c14b31a05 Update CHANGELOG.md (#8560)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 19:29:27 +00:00
Vincent
395e522430 Added validation before copying file and fix build command error (#8553) 2025-10-21 21:28:57 +02:00
community-scripts-pr-app[bot]
5277be0bc3 Update CHANGELOG.md (#8559)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 19:26:34 +00:00
community-scripts-pr-app[bot]
bd8d91057e Update CHANGELOG.md (#8557)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 19:26:04 +00:00
community-scripts-pr-app[bot]
de35c2a1f9 Update date in json (#8556)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-21 19:25:59 +00:00
Chris
f151c80b8b rwMarkable: migrate from rwMarkable => jotty (#8554) 2025-10-21 21:25:35 +02:00
community-scripts-pr-app[bot]
5f607a3132 Update CHANGELOG.md (#8551)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 17:06:54 +00:00
Yevhen Fastiuk
14bcaa054f 🐞 Bump libssl debian version to new update (#8547)
Signed-off-by: Yevhen <yfastiuk@iMac-Pro.local>
2025-10-21 19:06:20 +02:00
Slaviša Arežina
3d01a3bc03 Update open-archiver.json (#8542) 2025-10-21 15:32:41 +02:00
community-scripts-pr-app[bot]
389e40e6f0 Update versions.json (#8544)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 14:08:42 +02:00
community-scripts-pr-app[bot]
e94666c4d5 Update CHANGELOG.md (#8538)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 06:55:20 +00:00
Slaviša Arežina
f81cac1f70 Fix release version fetching (#8537) 2025-10-21 08:54:48 +02:00
community-scripts-pr-app[bot]
b8b5e92fd2 Update CHANGELOG.md (#8536)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 06:34:00 +00:00
CanbiZ
c160079447 jellyfin: fix opencl dep for ubuntu (#8535) 2025-10-21 08:33:32 +02:00
community-scripts-pr-app[bot]
9dc31f48ef Update CHANGELOG.md (#8530)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 00:12:57 +00:00
community-scripts-pr-app[bot]
49c8e29a56 Update versions.json (#8529)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-21 02:12:28 +02:00
community-scripts-pr-app[bot]
0f1abd953f Update CHANGELOG.md (#8524)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 19:02:06 +00:00
Tobias
56c5067853 palmr: update node to v24 (#8521) 2025-10-20 21:01:43 +02:00
community-scripts-pr-app[bot]
ee8e7f5bf0 Update CHANGELOG.md (#8523)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 19:01:14 +00:00
Tobias
b2b892c430 jellyfin: fix: version conflict (#8520) 2025-10-20 21:00:48 +02:00
CanbiZ
ef4fab1a2c nextcloudpi: to deb12 2025-10-20 09:32:39 -07:00
CanbiZ
dc358da26f nextcloudpi: to deb12 2025-10-20 09:32:17 -07:00
community-scripts-pr-app[bot]
345708aae6 Update CHANGELOG.md (#8512)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 16:02:14 +00:00
CanbiZ
bcdbbc4678 Enhance error message for container creation failure (#8511) 2025-10-20 18:01:51 +02:00
community-scripts-pr-app[bot]
af0bd86db4 Update CHANGELOG.md (#8510)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 14:21:58 +00:00
Tobias
c188984601 jellyfin: add: intel dependencies (#8508) 2025-10-20 16:21:31 +02:00
community-scripts-pr-app[bot]
489339ce4e Update CHANGELOG.md (#8509)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 14:19:24 +00:00
CanbiZ
523d2b66bd Paperless-AI: Increase CPU and RAM (#8507)
* Paperless-AI: Increase CPU and RAM

* Paperless-AI: Increase CPU and RAM
2025-10-20 16:19:01 +02:00
community-scripts-pr-app[bot]
9a40d53d06 Update versions.json (#8506)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 14:07:12 +02:00
CanbiZ
a257a77f63 Remove GoMFT scripts and related files (#8499) 2025-10-20 12:58:33 +02:00
CanbiZ
25251add27 qf: remove unoconv 2025-10-20 12:27:06 +02:00
community-scripts-pr-app[bot]
ea1021095d Update CHANGELOG.md (#8498)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 07:36:03 +00:00
CanbiZ
932de62b38 Filebrowser-Quantum: change initial config to newer default (#8497) 2025-10-20 09:35:38 +02:00
community-scripts-pr-app[bot]
8fd8bb407e Update CHANGELOG.md (#8495)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 06:28:44 +00:00
CanbiZ
8ece0e3676 Jellyfin: ensure libjemalloc is used / increase hdd space (#8494)
* Jellyfin: ensure libjemalloc used

* Enhance Jellyfin update script with libjemalloc checks

Added checks for libjemalloc2 installation and symlink creation before updating Jellyfin.

* Change apt-get to apt for installing libjemalloc2

* Increase default disk size from 8GB to 16GB

* Increase HDD size for Jellyfin configuration

Updated HDD size from 8GB to 16GB in jellyfin.json.
2025-10-20 08:28:22 +02:00
CanbiZ
b34a449d9f Refactor Yarn installation into setup_nodejs
Removed Yarn installation check and integrated it into the setup_nodejs function.
2025-10-20 07:51:33 +02:00
community-scripts-pr-app[bot]
60be24660d Update CHANGELOG.md (#8491)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 00:15:17 +00:00
community-scripts-pr-app[bot]
a2be293397 Update versions.json (#8490)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-20 02:14:51 +02:00
community-scripts-pr-app[bot]
e44e8a30d1 Update CHANGELOG.md (#8486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-19 20:06:12 +00:00
community-scripts-pr-app[bot]
3cd8d0d08b Update CHANGELOG.md (#8485)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-19 20:05:54 +00:00
Chris
2d95a73923 rwMarkable: Increase RAM (#8482) 2025-10-19 22:05:52 +02:00
Tobias
3743af8c78 changedetection: fix: update (#8480) 2025-10-19 22:05:27 +02:00
community-scripts-pr-app[bot]
f91daa6b72 Update versions.json (#8474)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-19 14:04:54 +02:00
97 changed files with 4686 additions and 1729 deletions

View File

@@ -10,8 +10,169 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-10-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Dispatcharr: add folders in installer / add more build ressources [@MickLesk](https://github.com/MickLesk) ([#8708](https://github.com/community-scripts/ProxmoxVE/pull/8708))
- LibreTranslate: bump torch version [@MickLesk](https://github.com/MickLesk) ([#8710](https://github.com/community-scripts/ProxmoxVE/pull/8710))
- #### 🔧 Refactor
- Kimai / Ghost / ManageMyDamnLife: Switch to MariaDB [@MickLesk](https://github.com/MickLesk) ([#8712](https://github.com/community-scripts/ProxmoxVE/pull/8712))
## 2025-10-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update alpine-komodo.sh fixing missing pull images command [@glopes](https://github.com/glopes) ([#8689](https://github.com/community-scripts/ProxmoxVE/pull/8689))
- #### ✨ New Features
- Update SABnzbd. Include par2cmdline-turbo [@burgerga](https://github.com/burgerga) ([#8648](https://github.com/community-scripts/ProxmoxVE/pull/8648))
- jotty: Add more ENV VARS (disabled) [@vhsdream](https://github.com/vhsdream) ([#8688](https://github.com/community-scripts/ProxmoxVE/pull/8688))
- Bump bazarr to Debian 13 [@burgerga](https://github.com/burgerga) ([#8677](https://github.com/community-scripts/ProxmoxVE/pull/8677))
- Update flaresolverr to Debian 13 [@burgerga](https://github.com/burgerga) ([#8672](https://github.com/community-scripts/ProxmoxVE/pull/8672))
## 2025-10-27
### 🆕 New Scripts
- Dispatcharr ([#8658](https://github.com/community-scripts/ProxmoxVE/pull/8658))
- Garage | Alpine-Garage ([#8656](https://github.com/community-scripts/ProxmoxVE/pull/8656))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Add typescript and esbuild to browserless setup [@MickLesk](https://github.com/MickLesk) ([#8666](https://github.com/community-scripts/ProxmoxVE/pull/8666))
- jellyfin: fix: intel deps [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8657](https://github.com/community-scripts/ProxmoxVE/pull/8657))
## 2025-10-26
### 🆕 New Scripts
- ComfyUI ([#8633](https://github.com/community-scripts/ProxmoxVE/pull/8633))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- PiHole: Bump to Debian 12 [@MickLesk](https://github.com/MickLesk) ([#8649](https://github.com/community-scripts/ProxmoxVE/pull/8649))
- #### 🔧 Refactor
- Refactor: Mylar3 [@tremor021](https://github.com/tremor021) ([#8642](https://github.com/community-scripts/ProxmoxVE/pull/8642))
## 2025-10-25
### 🆕 New Scripts
- PatchMon ([#8632](https://github.com/community-scripts/ProxmoxVE/pull/8632))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- UrBackup Server: Fix install going interactive [@tremor021](https://github.com/tremor021) ([#8622](https://github.com/community-scripts/ProxmoxVE/pull/8622))
## 2025-10-24
### 🌐 Website
- #### 📝 Script Information
- Fix config path for BunkerWeb [@Nonolanlan1007](https://github.com/Nonolanlan1007) ([#8618](https://github.com/community-scripts/ProxmoxVE/pull/8618))
- Update logo URL in guardian.json [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8615](https://github.com/community-scripts/ProxmoxVE/pull/8615))
## 2025-10-23
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Radicale: Update dependencies [@ilofX](https://github.com/ilofX) ([#8603](https://github.com/community-scripts/ProxmoxVE/pull/8603))
- Various Downgrades to Debian 12 (MySQL / OMW / Technitium) [@MickLesk](https://github.com/MickLesk) ([#8595](https://github.com/community-scripts/ProxmoxVE/pull/8595))
- MeTube: Fix inserting path into .bashrc [@tremor021](https://github.com/tremor021) ([#8589](https://github.com/community-scripts/ProxmoxVE/pull/8589))
- #### 🔧 Refactor
- Refactor: Kavita + Updated tools.func (no-same-owner) [@MickLesk](https://github.com/MickLesk) ([#8594](https://github.com/community-scripts/ProxmoxVE/pull/8594))
- tools.func: update update_check messages for clarity [@MickLesk](https://github.com/MickLesk) ([#8588](https://github.com/community-scripts/ProxmoxVE/pull/8588))
## 2025-10-22
### 🚀 Updated Scripts
- Refactor: Full Change & Feature-Bump of tools.func [@MickLesk](https://github.com/MickLesk) ([#8409](https://github.com/community-scripts/ProxmoxVE/pull/8409))
- #### 🐞 Bug Fixes
- part-db: use helper-script php function [@MickLesk](https://github.com/MickLesk) ([#8575](https://github.com/community-scripts/ProxmoxVE/pull/8575))
- omada: remove static mongodb install [@MickLesk](https://github.com/MickLesk) ([#8577](https://github.com/community-scripts/ProxmoxVE/pull/8577))
## 2025-10-21
### 🆕 New Scripts
- rwMarkable: migrate from rwMarkable => jotty [@vhsdream](https://github.com/vhsdream) ([#8554](https://github.com/community-scripts/ProxmoxVE/pull/8554))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Guardian: Added validation before copying file and fix build command error [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8553](https://github.com/community-scripts/ProxmoxVE/pull/8553))
- Unifi: Bump libssl debian version to new update [@fastiuk](https://github.com/fastiuk) ([#8547](https://github.com/community-scripts/ProxmoxVE/pull/8547))
- Alpine-TeamSpeak-Server: Fix release version fetching [@tremor021](https://github.com/tremor021) ([#8537](https://github.com/community-scripts/ProxmoxVE/pull/8537))
- jellyfin: fix opencl dep for ubuntu [@MickLesk](https://github.com/MickLesk) ([#8535](https://github.com/community-scripts/ProxmoxVE/pull/8535))
- #### ✨ New Features
- Refactor: ProjectSend [@tremor021](https://github.com/tremor021) ([#8552](https://github.com/community-scripts/ProxmoxVE/pull/8552))
### 🌐 Website
- #### 📝 Script Information
- Open Archiver: Fix application icon [@tremor021](https://github.com/tremor021) ([#8542](https://github.com/community-scripts/ProxmoxVE/pull/8542))
## 2025-10-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- jellyfin: fix: version conflict [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8520](https://github.com/community-scripts/ProxmoxVE/pull/8520))
- Paperless-AI: Increase CPU and RAM [@MickLesk](https://github.com/MickLesk) ([#8507](https://github.com/community-scripts/ProxmoxVE/pull/8507))
- #### ✨ New Features
- Enhance error message for container creation failure [@MickLesk](https://github.com/MickLesk) ([#8511](https://github.com/community-scripts/ProxmoxVE/pull/8511))
- Filebrowser-Quantum: change initial config to newer default [@MickLesk](https://github.com/MickLesk) ([#8497](https://github.com/community-scripts/ProxmoxVE/pull/8497))
- #### 💥 Breaking Changes
- Remove: GoMFT [@MickLesk](https://github.com/MickLesk) ([#8499](https://github.com/community-scripts/ProxmoxVE/pull/8499))
- #### 🔧 Refactor
- palmr: update node to v24 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8521](https://github.com/community-scripts/ProxmoxVE/pull/8521))
- jellyfin: add: intel dependencies [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8508](https://github.com/community-scripts/ProxmoxVE/pull/8508))
- Jellyfin: ensure libjemalloc is used / increase hdd space [@MickLesk](https://github.com/MickLesk) ([#8494](https://github.com/community-scripts/ProxmoxVE/pull/8494))
## 2025-10-19 ## 2025-10-19
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- rwMarkable: Increase RAM [@vhsdream](https://github.com/vhsdream) ([#8482](https://github.com/community-scripts/ProxmoxVE/pull/8482))
- changedetection: fix: update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8480](https://github.com/community-scripts/ProxmoxVE/pull/8480))
## 2025-10-18 ## 2025-10-18
### 🆕 New Scripts ### 🆕 New Scripts

63
ct/alpine-garage.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
APP="Alpine-Garage"
var_tags="${var_tags:-alpine;object-storage}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-5}"
var_os="${var_os:-alpine}"
var_version="${var_version:-3.22}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
if [[ ! -f /usr/local/bin/garage ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
GITEA_RELEASE=$(curl -fsSL https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
if [[ "${GITEA_RELEASE}" != "$(cat ~/.garage 2>/dev/null)" ]] || [[ ! -f ~/.garage ]]; then
msg_info "Stopping Service"
rc-service garage stop || true
msg_ok "Stopped Service"
msg_info "Backing Up Data"
cp /usr/local/bin/garage /usr/local/bin/garage.old 2>/dev/null || true
cp /etc/garage.toml /etc/garage.toml.bak 2>/dev/null || true
msg_ok "Backed Up Data"
msg_info "Updating Garage"
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
echo "${GITEA_RELEASE}" >~/.garage
msg_ok "Updated Garage"
msg_info "Starting Service"
rc-service garage start || rc-service garage restart
msg_ok "Started Service"
msg_ok "Update Successfully!"
else
msg_ok "No update required. Garage is already at ${GITEA_RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -52,6 +52,7 @@ function update_script() {
mv "$BACKUP_FILE" "$COMPOSE_FILE" mv "$BACKUP_FILE" "$COMPOSE_FILE"
exit 1 exit 1
fi fi
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
exit exit

View File

@@ -27,7 +27,7 @@ function update_script() {
exit 1 exit 1
fi fi
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.teamspeak3-server_linux_amd64-([0-9]+.[0-9]+.[0-9]+)./\1/p' | head -1) && set -o pipefail set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1) && set -o pipefail
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,15 +28,28 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
PYTHON_VERSION="3.13" setup_uv msg_info "Stopping Service"
systemctl stop bazarr
msg_ok "Stopped Service"
PYTHON_VERSION="3.12" setup_uv
fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip" fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
msg_info "Setup Bazarr" msg_info "Setup Bazarr"
mkdir -p /var/lib/bazarr/ mkdir -p /var/lib/bazarr/
chmod 775 /opt/bazarr /var/lib/bazarr/ chmod 775 /opt/bazarr /var/lib/bazarr/
if [[ ! -d /opt/bazarr/venv/ ]]; then
$STD uv venv /opt/bazarr/venv --python 3.12
sed -i "s|ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py|ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py|g" /etc/systemd/system/bazarr.service
systemctl daemon-reload
fi
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
$STD uv pip install -r /opt/bazarr/requirements.txt --system $STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
msg_ok "Setup Bazarr" msg_ok "Setup Bazarr"
msg_info "Starting Service"
systemctl start bazarr
msg_ok "Started Service"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
fi fi
exit exit

View File

@@ -57,7 +57,7 @@ function update_script() {
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome $STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge $STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit $STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
$STD npm install --prefix /opt/browserless esbuild typescript ts-node @types/node $STD npm install --prefix /opt/browserless esbuild typescript ts-node @types/node --save-dev
$STD npm run build --prefix /opt/browserless $STD npm run build --prefix /opt/browserless
$STD npm run build:function --prefix /opt/browserless $STD npm run build:function --prefix /opt/browserless
$STD npm prune production --prefix /opt/browserless $STD npm prune production --prefix /opt/browserless

42
ct/comfyui.sh Normal file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: jdacode
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/comfyanonymous/ComfyUI
APP="ComfyUI"
var_tags="${var_tags:-ai}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-25}"
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 [[ ! -f /opt/${APP} ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "To update use the ${APP} Manager."
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}:8188${CL}"

136
ct/dispatcharr.sh Normal file
View File

@@ -0,0 +1,136 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: ekke85 | MickLesk
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Dispatcharr/Dispatcharr
APP="Dispatcharr"
var_tags="${var_tags:-media;arr}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d "/opt/dispatcharr" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "Dispatcharr" "Dispatcharr/Dispatcharr"; then
msg_info "Stopping Services"
systemctl stop dispatcharr-celery
systemctl stop dispatcharr-celerybeat
systemctl stop dispatcharr-daphne
systemctl stop dispatcharr
msg_ok "Stopped Services"
msg_info "Creating Backup"
BACKUP_FILE="/opt/dispatcharr_backup_$(date +%F_%H-%M-%S).tar.gz"
if [[ -f /opt/dispatcharr/.env ]]; then
cp /opt/dispatcharr/.env /tmp/dispatcharr.env.backup
fi
if [[ -f /opt/dispatcharr/start-gunicorn.sh ]]; then
cp /opt/dispatcharr/start-gunicorn.sh /tmp/start-gunicorn.sh.backup
fi
if [[ -f /opt/dispatcharr/start-celery.sh ]]; then
cp /opt/dispatcharr/start-celery.sh /tmp/start-celery.sh.backup
fi
if [[ -f /opt/dispatcharr/start-celerybeat.sh ]]; then
cp /opt/dispatcharr/start-celerybeat.sh /tmp/start-celerybeat.sh.backup
fi
if [[ -f /opt/dispatcharr/start-daphne.sh ]]; then
cp /opt/dispatcharr/start-daphne.sh /tmp/start-daphne.sh.backup
fi
if [[ -f /opt/dispatcharr/.env ]]; then
set -o allexport
source /opt/dispatcharr/.env
set +o allexport
if [[ -n "$POSTGRES_DB" ]] && [[ -n "$POSTGRES_USER" ]] && [[ -n "$POSTGRES_PASSWORD" ]]; then
PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U $POSTGRES_USER -h ${POSTGRES_HOST:-localhost} $POSTGRES_DB >/tmp/dispatcharr_db_$(date +%F).sql
msg_info "Database backup created"
fi
fi
$STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql
msg_ok "Backup created: $BACKUP_FILE"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr"
msg_info "Updating Dispatcharr Backend"
if [[ -f /tmp/dispatcharr.env.backup ]]; then
mv /tmp/dispatcharr.env.backup /opt/dispatcharr/.env
fi
if [[ -f /tmp/start-gunicorn.sh.backup ]]; then
mv /tmp/start-gunicorn.sh.backup /opt/dispatcharr/start-gunicorn.sh
fi
if [[ -f /tmp/start-celery.sh.backup ]]; then
mv /tmp/start-celery.sh.backup /opt/dispatcharr/start-celery.sh
fi
if [[ -f /tmp/start-celerybeat.sh.backup ]]; then
mv /tmp/start-celerybeat.sh.backup /opt/dispatcharr/start-celerybeat.sh
fi
if [[ -f /tmp/start-daphne.sh.backup ]]; then
mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh
fi
cd /opt/dispatcharr
rm -rf .venv
$STD uv venv
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
$STD uv pip install gunicorn gevent celery redis daphne
msg_ok "Updated Dispatcharr Backend"
msg_info "Building Frontend"
cd /opt/dispatcharr/frontend
$STD npm install --legacy-peer-deps
$STD npm run build
msg_ok "Built Frontend"
msg_info "Running Django Migrations"
cd /opt/dispatcharr
if [[ -f .env ]]; then
set -o allexport
source .env
set +o allexport
fi
$STD uv run python manage.py migrate --noinput
$STD uv run python manage.py collectstatic --noinput
msg_ok "Migrations Complete"
msg_info "Starting Services"
systemctl start dispatcharr
systemctl start dispatcharr-celery
systemctl start dispatcharr-celerybeat
systemctl start dispatcharr-daphne
msg_ok "Started Services"
msg_info "Cleaning up"
rm -f /tmp/dispatcharr_db_*.sql
msg_ok "Cleanup completed"
msg_ok "Update Successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,13 +28,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.3.25"; then if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
msg_error "Wrong Debian version detected!"
msg_error "You must upgrade your LXC to Debian Trixie before updating."
exit
fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
msg_info "Stopping service" msg_info "Stopping service"
systemctl stop flaresolverr systemctl stop flaresolverr
msg_ok "Stopped service" msg_ok "Stopped service"
rm -rf /opt/flaresolverr rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.3.25" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Starting service" msg_info "Starting service"
systemctl start flaresolverr systemctl start flaresolverr

64
ct/garage.sh Normal file
View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
APP="Garage"
var_tags="${var_tags:-object-storage}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/local/bin/garage ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
GITEA_RELEASE=$(curl -fsSL https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
if [[ "${GITEA_RELEASE}" != "$(cat ~/.garage 2>/dev/null)" ]] || [[ ! -f ~/.garage ]]; then
msg_info "Stopping Service"
systemctl stop garage
msg_ok "Stopped Service"
msg_info "Backing Up Data"
cp /usr/local/bin/garage /usr/local/bin/garage.old 2>/dev/null || true
cp /etc/garage.toml /etc/garage.toml.bak 2>/dev/null || true
msg_ok "Backed Up Data"
msg_info "Updating Garage"
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
echo "${GITEA_RELEASE}" >~/.garage
msg_ok "Updated Garage"
msg_info "Starting Service"
systemctl start garage
msg_ok "Started Service"
msg_ok "Update Successfully!"
else
msg_ok "No update required. Garage is already at ${GITEA_RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -24,12 +24,9 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
setup_mysql
fi
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
msg_info "Updating ${APP} LXC" msg_info "Updating Ghost"
if command -v ghost &>/dev/null; then if command -v ghost &>/dev/null; then
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}') current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
latest_version=$(npm show ghost-cli version) latest_version=$(npm show ghost-cli version)

View File

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

View File

@@ -40,9 +40,9 @@ if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
msg_ok "Backed up Database" msg_ok "Backed up Database"
fi fi
cp /opt/guardian/.env /opt [[ -f "/opt/guardian/.env" ]] && cp "/opt/guardian/.env" "/opt"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian"
mv /opt/.env /opt/guardian [[ -f "/opt/.env" ]] && mv "/opt/.env" "/opt/guardian"
if [[ -f "/tmp/plex-guard.db.backup" ]] ; then if [[ -f "/tmp/plex-guard.db.backup" ]] ; then
msg_info "Restoring Database" msg_info "Restoring Database"
@@ -58,7 +58,8 @@ if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
cd /opt/guardian/frontend cd /opt/guardian/frontend
$STD npm ci $STD npm ci
$STD DEPLOYMENT_MODE=standalone npm run build export DEPLOYMENT_MODE=standalone
$STD npm run build
msg_ok "Updated Guardian" msg_ok "Updated Guardian"
msg_info "Starting Services" msg_info "Starting Services"

6
ct/headers/alpine-garage Normal file
View File

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

6
ct/headers/comfyui Normal file
View File

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

6
ct/headers/dispatcharr Normal file
View File

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

6
ct/headers/garage Normal file
View File

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

View File

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

6
ct/headers/jotty Normal file
View File

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

6
ct/headers/patchmon Normal file
View File

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

View File

@@ -9,7 +9,7 @@ APP="Jellyfin"
var_tags="${var_tags:-media}" var_tags="${var_tags:-media}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-16}"
var_os="${var_os:-ubuntu}" var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}" var_version="${var_version:-24.04}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@@ -27,11 +27,29 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP} LXC"
$STD apt-get update if ! grep -qEi 'ubuntu' /etc/os-release; then
$STD apt-get -y upgrade msg_info "Updating Intel Dependencies"
$STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server rm .intel-*
msg_ok "Updated ${APP} LXC" fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
msg_ok "Updated Intel Dependencies"
fi
msg_info "Updating Jellyfin"
if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then
$STD apt install -y libjemalloc2
fi
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
fi
$STD apt update
$STD apt -y upgrade
$STD apt -y --with-new-pkgs upgrade jellyfin jellyfin-server
msg_ok "Updated Jellyfin"
msg_ok "Update Successfully!"
exit exit
} }

74
ct/jotty.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fccview/jotty
APP="jotty"
var_tags="${var_tags:-tasks;notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-3072}"
var_disk="${var_disk:-6}"
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/jotty ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "jotty" "fccview/jotty"; then
msg_info "Stopping Service"
systemctl stop jotty
msg_ok "Stopped Service"
msg_info "Backing up configuration & data"
cd /opt/jotty
cp ./.env /opt/app.env
$STD tar -cf /opt/data_config.tar ./data ./config
msg_ok "Backed up configuration & data"
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
msg_info "Updating app"
cd /opt/jotty
$STD yarn --frozen-lockfile
$STD yarn next telemetry disable
$STD yarn build
msg_ok "Updated app"
msg_info "Restoring configuration & data"
mv /opt/app.env /opt/jotty/.env
$STD tar -xf /opt/data_config.tar
msg_ok "Restored configuration & data"
msg_info "Restarting ${APP} service"
systemctl start jotty
msg_ok "Restarted ${APP} service"
rm /opt/data_config.tar
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}:3000${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,23 +20,28 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/Kavita ]]; then if [[ ! -d /opt/Kavita ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
systemctl stop kavita
RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
$STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
rm -rf Kavita/config
cp -r Kavita/* /opt/Kavita
rm -rf Kavita
systemctl start kavita
msg_ok "Updated $APP LXC"
exit exit
fi
if check_for_gh_release "kavita" "Kareadita/Kavita"; then
msg_info "Stopping Service"
systemctl stop kavita
msg_ok "Service Stopped"
fetch_and_deploy_gh_release "kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
msg_info "Starting Service"
systemctl start kavita
msg_ok "Service Started"
msg_ok "Update Successfully!"
fi
exit
} }
start start

View File

@@ -23,32 +23,21 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if ! command -v lsb_release; then
apt install -y lsb-release
fi
if [[ ! -d /opt/kimai ]]; then if [[ ! -d /opt/kimai ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2) CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
if [[ "$CURRENT_PHP" != "8.4" ]]; then if [[ "$CURRENT_PHP" != "8.4" ]]; then
msg_info "Migrating PHP $CURRENT_PHP to 8.4" msg_info "Migrating PHP $CURRENT_PHP to 8.4"
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb PHP_VERSION="8.4" PHP_MODULE="gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm" PHP_APACHE="YES" setup_php
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$STD apt-get update
$STD apt-get remove -y php"${CURRENT_PHP//./}"*
$STD apt-get install -y \
php8.4 composer \
php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
libapache2-mod-php8.4
msg_ok "Migrated PHP $CURRENT_PHP to 8.4" msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') if check_for_gh_release "Kimai" "kimai/kimai"; then
BACKUP_DIR="/opt/kimai_backup" BACKUP_DIR="/opt/kimai_backup"
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Apache2" msg_info "Stopping Apache2"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Apache2" msg_ok "Stopped Apache2"
@@ -60,15 +49,9 @@ function update_script() {
[ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/" [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
msg_ok "Backup completed" msg_ok "Backup completed"
msg_info "Updating ${APP} to ${RELEASE}" fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
trap "echo Unable to download release file for version ${RELEASE}; try again later" ERR
set -e msg_info "Updating Kimai"
curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
$STD unzip "${RELEASE}".zip
set +e
trap - ERR
rm -rf /opt/kimai
mv kimai-"${RELEASE}" /opt/kimai
[ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/ [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
[ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/ [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/
[ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/ [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
@@ -76,8 +59,7 @@ function update_script() {
cd /opt/kimai cd /opt/kimai
$STD composer install --no-dev --optimize-autoloader $STD composer install --no-dev --optimize-autoloader
$STD bin/console kimai:update $STD bin/console kimai:update
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated Kimai"
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting Apache2" msg_info "Starting Apache2"
systemctl start apache2 systemctl start apache2
@@ -90,14 +72,7 @@ function update_script() {
chown -R www-data:www-data /opt/* chown -R www-data:www-data /opt/*
chmod -R 777 /opt/* chmod -R 777 /opt/*
msg_ok "Setup Permissions" msg_ok "Setup Permissions"
msg_ok "Updated Successfully!"
msg_info "Cleaning Up"
rm -rf "${RELEASE}".zip
rm -rf "$BACKUP_DIR"
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

View File

@@ -28,21 +28,24 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then
msg_info "Stopping $APP"
systemctl stop libretranslate
msg_ok "Stopped $APP"
msg_info "Updating $APP" setup_uv
if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then
msg_info "Stopping Service"
systemctl stop libretranslate
msg_ok "Stopped Service"
msg_info "Updating LibreTranslate"
cd /opt/libretranslate cd /opt/libretranslate
source .venv/bin/activate source .venv/bin/activate
$STD pip install -U libretranslate $STD pip install -U libretranslate
msg_ok "Updated $APP" msg_ok "Updated LibreTranslate"
msg_info "Starting $APP" msg_info "Starting Service"
systemctl start libretranslate systemctl start libretranslate
msg_ok "Started $APP" msg_ok "Started Service"
msg_ok "Update Successful" msg_ok "Update Successfully!"
fi fi
exit exit
} }

View File

@@ -30,7 +30,7 @@ function update_script() {
fi fi
if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc
source ~/.bashrc source ~/.bashrc
if ! command -v deno &>/dev/null; then if ! command -v deno &>/dev/null; then
export DENO_INSTALL="/usr/local" export DENO_INSTALL="/usr/local"
@@ -110,6 +110,7 @@ EOF
msg_ok "Updated Successfully!" msg_ok "Updated Successfully!"
fi fi
exit
} }
start start

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: davalanche # Author: davalanche | Co-Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mylar3/mylar3 # Source: https://github.com/mylar3/mylar3
@@ -25,16 +25,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if check_for_gh_release "mylar3" "mylar3/mylar3"; then
msg_info "Updating ${APP} to ${RELEASE}" fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
rm -rf /opt/mylar3/* /opt/mylar3/.*
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3
systemctl restart mylar3 systemctl restart mylar3
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,18 +20,18 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
} }
start start

View File

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

View File

@@ -28,12 +28,20 @@ function update_script() {
exit exit
fi fi
if ! command -v yarn &>/dev/null; then if command -v node &> /dev/null; then
msg_info "Installing Yarn" CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
$STD npm install -g yarn if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
msg_ok "Installed Yarn" systemctl stop openresty
apt-get purge -y nodejs npm
apt-get autoremove -y
rm -rf /usr/local/bin/node /usr/local/bin/npm
rm -rf /usr/local/lib/node_modules
rm -rf ~/.npm
rm -rf /root/.npm
fi
fi fi
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
export NODE_OPTIONS="--openssl-legacy-provider" export NODE_OPTIONS="--openssl-legacy-provider"
RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest | RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -20,18 +20,18 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Successfully"
exit
} }
start start

View File

@@ -37,7 +37,7 @@ function update_script() {
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr" fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)" PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs NODE_VERSION="24" NODE_MODULE="$PNPM" setup_nodejs
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt/palmr/apps/server cd /opt/palmr/apps/server

View File

@@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Paperless-AI" APP="Paperless-AI"
var_tags="${var_tags:-ai;document}" var_tags="${var_tags:-ai;document}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}" var_disk="${var_disk:-20}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"

76
ct/patchmon.sh Normal file
View File

@@ -0,0 +1,76 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/PatchMon/PatchMon
APP="PatchMon"
var_tags="${var_tags:-monitoring}"
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}"
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/patchmon" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "PatchMon" "PatchMon/PatchMon"; then
msg_info "Stopping Service"
systemctl stop patchmon-server
msg_ok "Stopped Service"
msg_info "Creating Backup"
cp /opt/patchmon/backend/.env /opt/backend.env
cp /opt/patchmon/frontend/.env /opt/frontend.env
msg_ok "Backup Created"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
msg_info "Updating PatchMon"
cd /opt/patchmon
export NODE_ENV=production
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/backend
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/frontend
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
$STD npm run build
cd /opt/patchmon/backend
mv /opt/backend.env /opt/patchmon/backend/.env
mv /opt/frontend.env /opt/patchmon/frontend/.env
$STD npx prisma migrate deploy
$STD npx prisma generate
msg_ok "Updated PatchMon"
msg_info "Starting Service"
systemctl start patchmon-server
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}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,12 +27,13 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}" msg_info "Updating PiHole"
set +e set +e
$STD apt update $STD apt update
$STD apt upgrade -y $STD apt upgrade -y
/usr/local/bin/pihole -up /usr/local/bin/pihole -up
msg_ok "Updated ${APP}" msg_ok "Updated PiHole"
msg_ok "Updated Successfully!"
exit exit
} }

View File

@@ -27,31 +27,28 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/projectsend/projectsend/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if check_for_gh_release "projectsend" "projectsend/projectsend"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" php_ver=$(php -v | head -n 1 | awk '{print $2}')
cd /opt if [[ ! $php_ver == "8.4"* ]]; then
curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o $(basename "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip") PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
$STD unzip -o "projectsend-r${RELEASE}.zip" -d projectsend fi
mv /opt/projectsend/includes/sys.config.php /opt/sys.config.php
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
mv /opt/sys.config.php /opt/projectsend/includes/sys.config.php
chown -R www-data:www-data /opt/projectsend chown -R www-data:www-data /opt/projectsend
chmod -R 775 /opt/projectsend chmod -R 775 /opt/projectsend
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf "/opt/projectsend-r${RELEASE}.zip"
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit exit
} }

View File

@@ -66,6 +66,8 @@ function update_script() {
$STD unzip "$brwsr_tmp" $STD unzip "$brwsr_tmp"
mv browserless-"$TAG"/ /opt/browserless mv browserless-"$TAG"/ /opt/browserless
cd /opt/browserless cd /opt/browserless
$STD npm install typescript
$STD npm install esbuild
$STD npm install $STD npm install
rm -rf src/routes/{chrome,edge,firefox,webkit} rm -rf src/routes/{chrome,edge,firefox,webkit}
$STD node_modules/playwright-core/cli.js install --with-deps chromium $STD node_modules/playwright-core/cli.js install --with-deps chromium

View File

@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
APP="rwMarkable" APP="rwMarkable"
var_tags="${var_tags:-tasks;notes}" var_tags="${var_tags:-tasks;notes}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
@@ -29,38 +29,41 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "rwMarkable" "fccview/rwMarkable"; then msg_info "Stopping service"
msg_info "Stopping Service" systemctl -q disable --now rwmarkable
systemctl stop rwmarkable msg_ok "Stopped Service"
msg_ok "Stopped Service"
msg_info "Backing up configuration & data" NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
cd /opt/rwmarkable CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
cp ./.env /opt/app.env
$STD tar -cf /opt/data_config.tar ./data ./config
msg_ok "Backed up configuration & data"
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs msg_info "Updating app"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rwMarkable" "fccview/rwMarkable" "tarball" "latest" "/opt/rwmarkable" cd /opt/jotty
$STD yarn --frozen-lockfile
$STD yarn next telemetry disable
$STD yarn build
msg_ok "Updated app"
msg_info "Updating app" msg_info "Migrating configuration & data"
cd /opt/rwmarkable cp /opt/rwmarkable/.env /opt/jotty/.env
$STD yarn --frozen-lockfile mkdir -p /opt/jotty/data
$STD yarn next telemetry disable cp -r /opt/rwmarkable/data/* /opt/jotty/data
$STD yarn build cp -r /opt/rwmarkable/config/* /opt/jotty/config
msg_ok "Updated app" msg_ok "Migrated configuration & data"
msg_info "Restoring configuration & data" msg_info "Patching systemd service file"
mv /opt/app.env /opt/rwmarkable/.env sed -i 's/rw[M|m]arkable/jotty/g' /etc/systemd/system/rwmarkable.service
$STD tar -xf /opt/data_config.tar mv /etc/systemd/system/rwmarkable.service /etc/systemd/system/jotty.service
msg_ok "Restored configuration & data" systemctl daemon-reload
msg_ok "Patched systemd service file"
msg_info "Restarting ${APP} service" msg_info "Patching update script"
systemctl start rwmarkable sed -i 's/rwmarkable/jotty/g' /usr/bin/update
msg_ok "Restarted ${APP} service" msg_ok "Patched update script"
rm /opt/data_config.tar
msg_ok "Updated Successfully" msg_info "Starting jotty service"
fi systemctl -q enable --now jotty
msg_ok "Started jotty service"
msg_ok "Migrated Successfully!"
exit exit
} }

View File

@@ -24,40 +24,38 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if par2 --version | grep -q "par2cmdline-turbo"; then
fetch_and_deploy_gh_release "par2cmdline-turbo" "animetosho/par2cmdline-turbo" "prebuild" "latest" "/usr/bin/" "*-linux-amd64.zip"
fi
if [[ ! -d /opt/sabnzbd ]]; then if [[ ! -d /opt/sabnzbd ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
setup_uv if check_for_gh_release "sabnzbd-org" "sabnzbd/sabnzbd"; then
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') PYTHON_VERSION="3.13" setup_uv
if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then systemctl stop sabnzbd
msg_ok "No update required. ${APP} is already at ${RELEASE}" cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
exit fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
fi
setup_uv
msg_info "Updating $APP to ${RELEASE}"
systemctl stop sabnzbd
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
temp_file=$(mktemp)
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
rm -f "$temp_file"
if [[ ! -d /opt/sabnzbd/venv ]]; then
msg_info "Migrating SABnzbd to uv virtual environment"
$STD uv venv /opt/sabnzbd/venv
msg_ok "Created uv venv at /opt/sabnzbd/venv"
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service if [[ ! -d /opt/sabnzbd/venv ]]; then
systemctl daemon-reload msg_info "Migrating SABnzbd to uv virtual environment"
msg_ok "Updated SABnzbd service to use uv venv" $STD uv venv /opt/sabnzbd/venv
msg_ok "Created uv venv at /opt/sabnzbd/venv"
if grep -q "ExecStart=python3 SABnzbd.py" /etc/systemd/system/sabnzbd.service; then
sed -i "s|ExecStart=python3 SABnzbd.py|ExecStart=/opt/sabnzbd/venv/bin/python SABnzbd.py|" /etc/systemd/system/sabnzbd.service
systemctl daemon-reload
msg_ok "Updated SABnzbd service to use uv venv"
fi
fi fi
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
systemctl start sabnzbd
msg_ok "Updated Successfully"
fi fi
$STD uv pip install --upgrade pip --python=/opt/sabnzbd/venv/bin/python
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
echo "${RELEASE}" >/opt/${APP}_version.txt
systemctl start sabnzbd
msg_ok "Updated ${APP} to ${RELEASE}"
exit exit
} }

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
"documentation": "https://docs.bunkerweb.io/latest/", "documentation": "https://docs.bunkerweb.io/latest/",
"website": "https://www.bunkerweb.io/", "website": "https://www.bunkerweb.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp",
"config_path": "/opt/bunkerweb/variables.env", "config_path": "/etc/bunkerweb/variables.env",
"description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.", "description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -0,0 +1,44 @@
{
"name": "ComfyUI",
"slug": "comfyui",
"categories": [
20
],
"date_created": "2025-10-26",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/opt",
"interface_port": 8188,
"documentation": "https://github.com/comfyanonymous/ComfyUI",
"website": "https://www.comfy.org/",
"logo": "https://framerusercontent.com/images/3cNQMWKzIhIrQ5KErBm7dSmbd2w.png",
"description": "ComfyUI is a node-based interface and inference engine for generative AI. Users can combine various AI models and operations through nodes to achieve highly customizable and controllable content generation.",
"install_methods": [
{
"type": "default",
"script": "ct/comfyui.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 25,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Application takes long time to install. Please be patient!",
"type": "warning"
},
{
"text": "Please check that you have installed the drivers for your GPU.",
"type": "info"
}
]
}

View File

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

View File

@@ -0,0 +1,35 @@
{
"name": "Dispatcharr",
"slug": "dispatcharr",
"categories": [
14
],
"date_created": "2025-10-27",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9191,
"documentation": "https://dispatcharr.github.io/Dispatcharr-Docs/",
"website": "https://github.com/Dispatcharr/Dispatcharr",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/dispatcharr.webp",
"config_path": "/opt/dispatcharr/.env",
"description": "Dispatcharr is an open-source powerhouse for managing IPTV streams and EPG data with elegance and control. Born from necessity and built with passion, it started as a personal project by OkinawaBoss and evolved with contributions from legends like dekzter, SergeantPanda and Bucatini.",
"install_methods": [
{
"type": "default",
"script": "ct/dispatcharr.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -23,7 +23,7 @@
"ram": 2048, "ram": 2048,
"hdd": 4, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],
@@ -31,10 +31,5 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [ "notes": []
{
"text": "Flaresolverr is pinned to Version 3.3.25 because they add an breaking python package which doesn't work with debian 12.`",
"type": "info"
}
]
} }

View File

@@ -0,0 +1,59 @@
{
"name": "Garage",
"slug": "garage",
"categories": [
8
],
"date_created": "2025-10-27",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3900,
"documentation": "https://garagehq.deuxfleurs.fr/documentation/quick-start/",
"website": "https://garagehq.deuxfleurs.fr/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/garage.webp",
"config_path": "/etc/garage.toml",
"description": "Garage is a lightweight, self-hosted, S3-compatible object storage service built for distributed environments. It is designed to be simple, efficient, and easy to deploy across multiple nodes.",
"install_methods": [
{
"type": "default",
"script": "ct/garage.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 5,
"os": "debian",
"version": "13"
}
},
{
"type": "alpine",
"script": "ct/alpine-garage.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 5,
"os": "alpine",
"version": "3.22"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The Garage configuration file is located at `/etc/garage.toml`. You can edit RPC and API bindings, tokens, and data directories there.",
"type": "info"
},
{
"text": "Admin API runs by default on port `3903`, S3 API on port `3900`, Web UI on `3902`. Adjust firewall rules accordingly.",
"type": "warning"
},
{
"text": "To view your generated tokens and RPC secret, check `~/garage.creds` after installation.",
"type": "info"
}
]
}

View File

@@ -1,40 +0,0 @@
{
"name": "GoMFT",
"slug": "gomft",
"categories": [
7
],
"date_created": "2025-03-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://github.com/StarFleetCPTN/GoMFT#configuration",
"website": "https://github.com/StarFleetCPTN/GoMFT",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gomft.webp",
"config_path": "/opt/gomft/.env",
"description": "GoMFT is a web-based managed file transfer application built with Go, leveraging rclone for robust file transfer capabilities. It provides a user-friendly interface for configuring, scheduling, and monitoring file transfers across various storage providers.",
"install_methods": [
{
"type": "default",
"script": "ct/gomft.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin@example.com",
"password": "admin"
},
"notes": [
{
"text": "For additional configuration options check the documentation.",
"type": "info"
}
]
}

View File

@@ -12,7 +12,7 @@
"documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md", "documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
"config_path": "/opt/guardian/.env", "config_path": "/opt/guardian/.env",
"website": "https://github.com/HydroshieldMKII/Guardian", "website": "https://github.com/HydroshieldMKII/Guardian",
"logo": null, "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/guardian-plex.webp",
"description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.", "description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 16,
"os": "ubuntu", "os": "ubuntu",
"version": "24.04" "version": "24.04"
} }

View File

@@ -0,0 +1,40 @@
{
"name": "jotty",
"slug": "jotty",
"categories": [
12
],
"date_created": "2025-10-21",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/fccview/jotty/blob/main/README.md",
"website": "https://github.com/fccview/jotty",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jotty.webp",
"config_path": "/opt/jotty/.env",
"description": "A simple, self-hosted app for your checklists and notes. Tired of bloated, cloud-based to-do apps? jotty is a lightweight alternative for managing your personal checklists and notes. It's built with Next.js 14, is easy to deploy, and keeps all your data on your own server.",
"install_methods": [
{
"type": "default",
"script": "ct/jotty.sh",
"resources": {
"cpu": 2,
"ram": 3072,
"hdd": 6,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "jotty was previously named rwMarkable",
"type": "info"
}
]
}

View File

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

View File

@@ -1,48 +0,0 @@
{
"name": "MySQL",
"slug": "mysql",
"categories": [
8
],
"date_created": "2024-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://dev.mysql.com/doc/",
"website": "https://www.mysql.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
"config_path": "",
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
"install_methods": [
{
"type": "default",
"script": "ct/mysql.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat mysql.creds`",
"type": "info"
},
{
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
"type": "info"
},
{
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
"type": "info"
}
]
}

View File

@@ -0,0 +1,48 @@
{
"name": "MySQL",
"slug": "mysql",
"categories": [
8
],
"date_created": "2024-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://dev.mysql.com/doc/",
"website": "https://www.mysql.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
"config_path": "",
"description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
"install_methods": [
{
"type": "default",
"script": "ct/mysql.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat mysql.creds`",
"type": "info"
},
{
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
"type": "info"
},
{
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
"type": "info"
}
]
}

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
"documentation": "https://docs.openarchiver.com/", "documentation": "https://docs.openarchiver.com/",
"config_path": "/opt/openarchiver/.env", "config_path": "/opt/openarchiver/.env",
"website": "https://openarchiver.com/", "website": "https://openarchiver.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/OpenArchiver.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/open-archiver.webp",
"description": "Open Archiver is a secure, self-hosted email archiving solution, and it's completely open source. Get an email archiver that enables full-text search across email and attachments. Create a permanent, searchable, and compliant mail archive from Google Workspace, Microsoft 35, and any IMAP server.", "description": "Open Archiver is a secure, self-hosted email archiving solution, and it's completely open source. Get an email archiver that enables full-text search across email and attachments. Create a permanent, searchable, and compliant mail archive from Google Workspace, Microsoft 35, and any IMAP server.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -19,8 +19,8 @@
"type": "default", "type": "default",
"script": "ct/paperless-ai.sh", "script": "ct/paperless-ai.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 4,
"ram": 2048, "ram": 4096,
"hdd": 20, "hdd": 20,
"os": "debian", "os": "debian",
"version": "13" "version": "13"

View File

@@ -0,0 +1,35 @@
{
"name": "PatchMon",
"slug": "patchmon",
"categories": [
9
],
"date_created": "2025-10-25",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3399,
"documentation": "https://docs.patchmon.net",
"website": "https://patchmon.net",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/patchmon.webp",
"config_path": "/opt/patchmon/backend/.env, /opt/patchmon/frontend/.env",
"description": "Monitor Linux patches across all your hosts with real-time visibility, security update tracking, and comprehensive package management.",
"install_methods": [
{
"type": "default",
"script": "ct/patchmon.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

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

View File

@@ -1,35 +0,0 @@
{
"name": "rwMarkable",
"slug": "rwmarkable",
"categories": [
12
],
"date_created": "2025-10-09",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/fccview/rwMarkable/blob/main/README.md",
"website": "https://github.com/fccview/rwMarkable",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/rwmarkable.webp",
"config_path": "/opt/rwmarkable/.env",
"description": "A simple, self-hosted app for your checklists and notes. Tired of bloated, cloud-based to-do apps? rwMarkable is a lightweight alternative for managing your personal checklists and notes. It's built with Next.js 14, is easy to deploy, and keeps all your data on your own server.",
"install_methods": [
{
"type": "default",
"script": "ct/rwmarkable.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

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

View File

@@ -35,6 +35,10 @@
{ {
"text": "You probably want to drastically extend the storage space to fit whatever clients you want to back up", "text": "You probably want to drastically extend the storage space to fit whatever clients you want to back up",
"type": "info" "type": "info"
},
{
"text": "Directory `/opt/urbackup/backups` is set as initial backup path. Change it to your liking",
"type": "info"
} }
] ]
} }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apk add --no-cache openssl
msg_ok "Installed Dependencies"
GITEA_RELEASE=$(curl -s https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
mkdir -p /var/lib/garage/{data,meta,snapshots}
mkdir -p /etc/garage
RPC_SECRET=$(openssl rand -hex 64 | cut -c1-64)
ADMIN_TOKEN=$(openssl rand -base64 32)
METRICS_TOKEN=$(openssl rand -base64 32)
{
echo "Garage Tokens and Secrets"
echo "RPC Secret: $RPC_SECRET"
echo "Admin Token: $ADMIN_TOKEN"
echo "Metrics Token: $METRICS_TOKEN"
} >~/garage.creds
echo $GITEA_RELEASE >>~/.garage
cat <<EOF >/etc/garage.toml
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
replication_factor = 1
rpc_bind_addr = "0.0.0.0:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "${RPC_SECRET}"
[s3_api]
s3_region = "garage"
api_bind_addr = "0.0.0.0:3900"
root_domain = ".s3.garage"
[s3_web]
bind_addr = "0.0.0.0:3902"
root_domain = ".web.garage"
index = "index.html"
[k2v_api]
api_bind_addr = "0.0.0.0:3904"
[admin]
api_bind_addr = "0.0.0.0:3903"
admin_token = "${ADMIN_TOKEN}"
metrics_token = "${METRICS_TOKEN}"
EOF
msg_ok "Configured Garage"
msg_info "Creating Service"
cat <<'EOF' >/etc/init.d/garage
#!/sbin/openrc-run
name="Garage Object Storage"
command="/usr/local/bin/garage"
command_args="server"
command_background="yes"
pidfile="/run/garage.pid"
depend() {
need net
}
EOF
chmod +x /etc/init.d/garage
$STD rc-update add garage default
$STD rc-service garage restart || rc-service garage start
msg_ok "Service active"
motd_ssh
customize

View File

@@ -20,7 +20,7 @@ $STD apk add --no-cache \
libc6-compat libc6-compat
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]\+\).*/\1/p' | head -1) RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]*[0-9]\).*/\1/p' | head -1)
msg_info "Installing Teamspeak Server v${RELEASE}" msg_info "Installing Teamspeak Server v${RELEASE}"
mkdir -p /opt/teamspeak-server mkdir -p /opt/teamspeak-server
cd /opt/teamspeak-server cd /opt/teamspeak-server

View File

@@ -13,20 +13,15 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setup Python3" PYTHON_VERSION="3.12" setup_uv
$STD apt-get install -y \
python3 \
python3-dev
msg_ok "Setup Python3"
PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip" fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
msg_info "Installing Bazarr" msg_info "Installing Bazarr"
mkdir -p /var/lib/bazarr/ mkdir -p /var/lib/bazarr/
chmod 775 /opt/bazarr /var/lib/bazarr/ chmod 775 /opt/bazarr /var/lib/bazarr/
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
$STD uv pip install -r /opt/bazarr/requirements.txt --system $STD uv venv /opt/bazarr/venv --python 3.12
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
msg_ok "Installed Bazarr" msg_ok "Installed Bazarr"
msg_info "Creating Service" msg_info "Creating Service"
@@ -41,7 +36,7 @@ UMask=0002
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
Type=simple Type=simple
ExecStart=/usr/bin/python3 /opt/bazarr/bazarr.py ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py
KillSignal=SIGINT KillSignal=SIGINT
TimeoutStopSec=20 TimeoutStopSec=20
SyslogIdentifier=bazarr SyslogIdentifier=bazarr

View File

@@ -0,0 +1,87 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: jdacode
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/comfyanonymous/ComfyUI
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
echo
echo "${TAB3}Choose the GPU type for ComfyUI:"
echo "${TAB3}[1]-None [2]-NVIDIA [3]-AMD [4]-Intel"
read -rp "${TAB3}Enter your choice [1-4] (default: 1): " gpu_choice
gpu_choice=${gpu_choice:-1}
case "$gpu_choice" in
1) comfyui_gpu_type="none";;
2) comfyui_gpu_type="nvidia";;
3) comfyui_gpu_type="amd";;
4) comfyui_gpu_type="intel";;
*) comfyui_gpu_type="none"; echo "${TAB3}Invalid choice. Defaulting to ${comfyui_gpu_type}." ;;
esac
echo
PYTHON_VERSION="3.12" setup_uv
fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest" "/opt/ComfyUI"
msg_info "Python dependencies"
$STD uv venv "/opt/ComfyUI/venv"
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
$STD uv pip install \
torch \
torchvision \
torchaudio \
--extra-index-url "https://download.pytorch.org/whl/cu128" \
--python="/opt/ComfyUI/venv/bin/python"
elif [[ "${comfyui_gpu_type,,}" == "amd" ]]; then
$STD uv pip install \
torch \
torchvision \
torchaudio \
--index-url "https://download.pytorch.org/whl/rocm6.3" \
--python="/opt/ComfyUI/venv/bin/python"
elif [[ "${comfyui_gpu_type,,}" == "intel" ]]; then
$STD uv pip install \
torch \
torchvision \
torchaudio \
--index-url "https://download.pytorch.org/whl/xpu" \
--python="/opt/ComfyUI/venv/bin/python"
fi
$STD uv pip install -r "/opt/ComfyUI/requirements.txt" --python="/opt/ComfyUI/venv/bin/python"
msg_ok "Python dependencies"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/comfyui.service
[Unit]
Description=ComfyUI Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/ComfyUI
ExecStart=/opt/ComfyUI/venv/bin/python /opt/ComfyUI/main.py --listen --port 8188 --cpu
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now comfyui
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -0,0 +1,268 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: ekke85
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Dispatcharr/Dispatcharr
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 \
build-essential \
python3-dev \
libpq-dev \
nginx \
redis-server \
ffmpeg \
procps \
streamlink
msg_ok "Installed Dependencies"
setup_uv
NODE_VERSION="24" setup_nodejs
PG_VERSION="16" setup_postgresql
msg_info "Creating PostgreSQL Database"
DB_NAME=dispatcharr_db
DB_USER=dispatcharr_usr
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Dispatcharr Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
echo ""
} >>~/dispatcharr.creds
msg_ok "Created PostgreSQL Database"
fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr"
msg_info "Installing Python Dependencies with uv"
cd /opt/dispatcharr
$STD uv venv
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
$STD uv pip install gunicorn gevent celery redis daphne
msg_ok "Installed Python Dependencies"
msg_info "Configuring Dispatcharr"
install -d -m 755 \
/data/{logos,recordings,plugins,db} \
/data/uploads/{m3us,epgs} \
/data/{m3us,epgs}
chown -R root:root /data
export DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}"
export POSTGRES_DB=$DB_NAME
export POSTGRES_USER=$DB_USER
export POSTGRES_PASSWORD=$DB_PASS
export POSTGRES_HOST=localhost
$STD uv run python manage.py migrate --noinput
$STD uv run python manage.py collectstatic --noinput
cat <<EOF >/opt/dispatcharr/.env
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
POSTGRES_DB=$DB_NAME
POSTGRES_USER=$DB_USER
POSTGRES_PASSWORD=$DB_PASS
POSTGRES_HOST=localhost
CELERY_BROKER_URL=redis://localhost:6379/0
EOF
cd /opt/dispatcharr/frontend
$STD npm install --legacy-peer-deps
$STD npm run build
msg_ok "Configured Dispatcharr"
msg_info "Configuring Nginx"
cat <<EOF >/etc/nginx/sites-available/dispatcharr.conf
server {
listen 80;
server_name _;
# Serve static assets with correct MIME types
location /assets/ {
alias /opt/dispatcharr/frontend/dist/assets/;
expires 30d;
add_header Cache-Control "public, immutable";
# Explicitly set MIME types for webpack-built assets
types {
text/javascript js;
text/css css;
image/png png;
image/svg+xml svg svgz;
font/woff2 woff2;
font/woff woff;
font/ttf ttf;
}
}
location /static/ {
alias /opt/dispatcharr/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
location /media/ {
alias /opt/dispatcharr/media/;
}
location /ws/ {
proxy_pass http://127.0.0.1:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "Upgrade";
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;
}
# All other requests proxy to Gunicorn
location / {
include proxy_params;
proxy_pass http://127.0.0.1:5656;
}
}
EOF
ln -sf /etc/nginx/sites-available/dispatcharr.conf /etc/nginx/sites-enabled/dispatcharr.conf
rm -f /etc/nginx/sites-enabled/default
systemctl restart nginx
msg_ok "Configured Nginx"
msg_info "Creating Services"
cat <<EOF >/opt/dispatcharr/start-gunicorn.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec uv run gunicorn \\
--workers=4 \\
--worker-class=gevent \\
--timeout=300 \\
--bind 0.0.0.0:5656 \\
dispatcharr.wsgi:application
EOF
chmod +x /opt/dispatcharr/start-gunicorn.sh
cat <<EOF >/opt/dispatcharr/start-celery.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec uv run celery -A dispatcharr worker -l info -c 4
EOF
chmod +x /opt/dispatcharr/start-celery.sh
cat <<EOF >/opt/dispatcharr/start-celerybeat.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec uv run celery -A dispatcharr beat -l info
EOF
chmod +x /opt/dispatcharr/start-celerybeat.sh
cat <<EOF >/opt/dispatcharr/start-daphne.sh
#!/usr/bin/env bash
cd /opt/dispatcharr
set -a
source .env
set +a
exec uv run daphne -b 0.0.0.0 -p 8001 dispatcharr.asgi:application
EOF
chmod +x /opt/dispatcharr/start-daphne.sh
cat <<EOF >/etc/systemd/system/dispatcharr.service
[Unit]
Description=Dispatcharr Web Server
After=network.target postgresql.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/dispatcharr
ExecStart=/opt/dispatcharr/start-gunicorn.sh
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/dispatcharr-celery.service
[Unit]
Description=Dispatcharr Celery Worker
After=network.target redis-server.service
Requires=dispatcharr.service
[Service]
Type=simple
WorkingDirectory=/opt/dispatcharr
ExecStart=/opt/dispatcharr/start-celery.sh
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/dispatcharr-celerybeat.service
[Unit]
Description=Dispatcharr Celery Beat Scheduler
After=network.target redis-server.service
Requires=dispatcharr.service
[Service]
Type=simple
WorkingDirectory=/opt/dispatcharr
ExecStart=/opt/dispatcharr/start-celerybeat.sh
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/dispatcharr-daphne.service
[Unit]
Description=Dispatcharr WebSocket Server (Daphne)
After=network.target
Requires=dispatcharr.service
[Service]
Type=simple
WorkingDirectory=/opt/dispatcharr
ExecStart=/opt/dispatcharr/start-daphne.sh
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now dispatcharr dispatcharr-celery dispatcharr-celerybeat dispatcharr-daphne
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -21,13 +21,18 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Chrome" msg_info "Installing Chrome"
curl -fsSL "https://dl.google.com/linux/linux_signing_key.pub" | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg setup_deb822_repo \
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" >/etc/apt/sources.list.d/google-chrome.list "google-chrome" \
"https://dl.google.com/linux/linux_signing_key.pub" \
"https://dl.google.com/linux/chrome/deb/" \
"stable"
$STD apt update $STD apt update
$STD apt install -y google-chrome-stable $STD apt install -y google-chrome-stable
# remove google-chrome.list added by google-chrome-stable
rm /etc/apt/sources.list.d/google-chrome.list
msg_ok "Installed Chrome" msg_ok "Installed Chrome"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.3.25" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/flaresolverr.service cat <<EOF >/etc/systemd/system/flaresolverr.service

95
install/garage-install.sh Normal file
View File

@@ -0,0 +1,95 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://garagehq.deuxfleurs.fr/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setup Garage"
GITEA_RELEASE=$(curl -s https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name')
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
chmod +x /usr/local/bin/garage
mkdir -p /var/lib/garage/{data,meta,snapshots}
mkdir -p /etc/garage
RPC_SECRET=$(openssl rand -hex 32)
ADMIN_TOKEN=$(openssl rand -base64 32)
METRICS_TOKEN=$(openssl rand -base64 32)
{
echo "Garage Tokens and Secrets"
echo "RPC Secret: $RPC_SECRET"
echo "Admin Token: $ADMIN_TOKEN"
echo "Metrics Token: $METRICS_TOKEN"
} >>~/garage.creds
echo $GITEA_RELEASE >>~/.garage
cat <<EOF >/etc/garage.toml
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
db_engine = "sqlite"
replication_factor = 1
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "${RPC_SECRET}"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"
[k2v_api]
api_bind_addr = "[::]:3904"
[admin]
api_bind_addr = "[::]:3903"
admin_token = "${ADMIN_TOKEN}"
metrics_token = "${METRICS_TOKEN}"
EOF
msg_ok "Set up Garage"
msg_info "Creating service"
cat <<'EOF' >/etc/systemd/system/garage.service
[Unit]
Description=Garage Object Storage (Deuxfleurs)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/garage -c /etc/garage.toml server
Restart=always
RestartSec=5
User=root
WorkingDirectory=/var/lib/garage
Environment=RUST_LOG=info
StandardOutput=append:/var/log/garage.log
StandardError=append:/var/log/garage.log
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
$STD systemctl enable -q --now garage
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -20,22 +20,22 @@ $STD apt-get install -y \
libjemalloc2 libjemalloc2
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mysql setup_mariadb
msg_info "Configuring Database" msg_info "Configuring Database"
DB_NAME=ghost DB_NAME=ghost
DB_USER=ghostuser DB_USER=ghostuser
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" $STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{ {
echo "Ghost-Credentials" echo "Ghost-Credentials"
echo "Ghost Database User: $DB_USER" echo "Ghost Database User: $DB_USER"
echo "Ghost Database Password: $DB_PASS" echo "Ghost Database Password: $DB_PASS"
echo "Ghost Database Name: $DB_NAME" echo "Ghost Database Name: $DB_NAME"
} >>~/ghost.creds } >>~/ghost.creds
msg_ok "Configured MySQL" msg_ok "Configured MariaDB"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
@@ -60,4 +60,5 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
$STD apt-get -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -1,78 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/StarFleetCPTN/GoMFT
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
sqlite3 \
rclone \
tzdata \
ca-certificates
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
msg_info "Configuring ${APPLICATION}"
JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=')
cat <<EOF >/opt/gomft/.env
SERVER_ADDRESS=:8080
DATA_DIR=/opt/gomft/data/gomft
BACKUP_DIR=/opt/gomft/data/gomft/backups
JWT_SECRET=$JWT_SECRET_KEY
BASE_URL=http://localhost:8080
# Email configuration
EMAIL_ENABLED=false
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_FROM_EMAIL=gomft@example.com
EMAIL_FROM_NAME=GoMFT
EMAIL_REPLY_TO=
EMAIL_ENABLE_TLS=true
EMAIL_REQUIRE_AUTH=true
EMAIL_USERNAME=smtp_username
EMAIL_PASSWORD=smtp_password
EOF
msg_ok "Configured ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gomft.service
[Unit]
Description=GoMFT Service
After=network.target
[Service]
Type=simple
User=root
EnvironmentFile=/opt/gomft/.env
WorkingDirectory=/opt/gomft
ExecStart=/opt/gomft/gomft
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now gomft
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
motd_ssh
customize

View File

@@ -14,7 +14,16 @@ network_check
update_os update_os
msg_info "Setting Up Hardware Acceleration" msg_info "Setting Up Hardware Acceleration"
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools} if ! grep -qEi 'ubuntu' /etc/os-release; then
fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
fetch_and_deploy_gh_release "intel-opencl-icd" "intel/compute-runtime" "binary" "latest" "" "intel-opencl-icd_*_amd64.deb"
else
$STD apt -y install intel-opencl-icd
fi
$STD apt -y install {va-driver-all,ocl-icd-libopencl1,vainfo,intel-gpu-tools}
if [[ "$CTTYPE" == "0" ]]; then if [[ "$CTTYPE" == "0" ]]; then
chgrp video /dev/dri chgrp video /dev/dri
chmod 755 /dev/dri chmod 755 /dev/dri
@@ -26,13 +35,16 @@ msg_ok "Set Up Hardware Acceleration"
msg_info "Installing Jellyfin" msg_info "Installing Jellyfin"
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)" VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
# If the keyring directory is absent, create it if ! dpkg -s libjemalloc2 >/dev/null 2>&1; then
$STD apt install -y libjemalloc2
fi
if [[ ! -f /usr/lib/libjemalloc.so ]]; then
ln -sf /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so
fi
if [[ ! -d /etc/apt/keyrings ]]; then if [[ ! -d /etc/apt/keyrings ]]; then
mkdir -p /etc/apt/keyrings mkdir -p /etc/apt/keyrings
fi fi
# Download the repository signing key and install it to the keyring directory
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor --yes --output /etc/apt/keyrings/jellyfin.gpg
# Install the Deb822 format jellyfin.sources entry
cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources
Types: deb Types: deb
URIs: https://repo.jellyfin.org/${PCT_OSTYPE} URIs: https://repo.jellyfin.org/${PCT_OSTYPE}
@@ -41,10 +53,11 @@ Components: main
Architectures: amd64 Architectures: amd64
Signed-By: /etc/apt/keyrings/jellyfin.gpg Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF EOF
# Install Jellyfin using the metapackage (which will fetch jellyfin-server, jellyfin-web, and jellyfin-ffmpeg5)
$STD apt-get update $STD apt update
$STD apt-get install -y jellyfin $STD apt install -y jellyfin
sed -i 's/"MinimumLevel": "Information"/"MinimumLevel": "Error"/g' /etc/jellyfin/logging.json sed -i 's/"MinimumLevel": "Information"/"MinimumLevel": "Error"/g' /etc/jellyfin/logging.json
chown -R jellyfin:adm /etc/jellyfin chown -R jellyfin:adm /etc/jellyfin
sleep 10 sleep 10
systemctl restart jellyfin systemctl restart jellyfin
@@ -59,6 +72,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt -y autoremove
$STD apt-get -y autoclean $STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream # Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fccview/rwMarkable # Source: https://github.com/fccview/jotty
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@@ -14,18 +14,26 @@ network_check
update_os update_os
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
fetch_and_deploy_gh_release "rwMarkable" "fccview/rwMarkable" "tarball" "latest" "/opt/rwmarkable" fetch_and_deploy_gh_release "jotty" "fccview/jotty" "tarball" "latest" "/opt/jotty"
msg_info "Installing ${APPLICATION}" msg_info "Installing ${APPLICATION}"
cd /opt/rwmarkable cd /opt/jotty
$STD yarn --frozen-lockfile $STD yarn --frozen-lockfile
$STD yarn next telemetry disable $STD yarn next telemetry disable
$STD yarn build $STD yarn build
mkdir -p data/{users,checklists,notes} mkdir -p data/{users,checklists,notes}
cat <<EOF >/opt/rwmarkable/.env cat <<EOF >/opt/jotty/.env
NODE_ENV=production NODE_ENV=production
# --- Uncomment to enable
# HTTPS=true # HTTPS=true
# SERVE_PUBLIC_IMAGES=yes
# SERVE_PUBLIC_FILES=yes
# SERVE_PUBLIC_VIDEOS=yes
# STOP_CHECK_UPDATES=yes
# --- For troubleshooting
# DEBUGGER=true
# --- SSO with OIDC (optional) # --- SSO with OIDC (optional)
# SSO_MODE=oidc # SSO_MODE=oidc
@@ -39,21 +47,21 @@ EOF
msg_ok "Installed ${APPLICATION}" msg_ok "Installed ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/rwmarkable.service cat <<EOF >/etc/systemd/system/jotty.service
[Unit] [Unit]
Description=rwMarkable server Description=jotty server
After=network.target After=network.target
[Service] [Service]
WorkingDirectory=/opt/rwmarkable WorkingDirectory=/opt/jotty
EnvironmentFile=/opt/rwmarkable/.env EnvironmentFile=/opt/jotty/.env
ExecStart=yarn start ExecStart=yarn start
Restart=on-abnormal Restart=on-abnormal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now rwmarkable systemctl enable -q --now jotty
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -13,15 +13,11 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Kavita" fetch_and_deploy_gh_release "Kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
$STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
msg_ok "Installed Kavita"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/kavita.service" cat <<EOF >/etc/systemd/system/kavita.service
echo "[Unit] [Unit]
Description=Kavita Server Description=Kavita Server
After=network.target After=network.target
@@ -34,15 +30,17 @@ KillMode=process
Restart=on-failure Restart=on-failure
[Install] [Install]
WantedBy=multi-user.target" >$service_path WantedBy=multi-user.target
chmod +x /opt/Kavita/* && chown root /opt/Kavita/* EOF
systemctl enable --now -q kavita.service chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
systemctl enable -q --now kavita
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt -y autoremove
$STD apt-get -y autoclean $STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -18,36 +18,21 @@ $STD apt-get install -y \
apt-transport-https \ apt-transport-https \
apache2 \ apache2 \
git \ git \
expect \ expect
composer \
lsb-release
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mysql setup_mariadb
PHP_VERSION="8.4" PHP_MODULE="gd,mysql,mbstring,bcmath,xml,curl,zip,intl" PHP_APACHE="YES" setup_php
msg_info "Adding PHP8.4 Repository" setup_composer
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
$STD apt-get update
msg_ok "Added PHP8.4 Repository"
msg_info "Installing PHP"
$STD apt-get remove -y php8.2*
$STD apt-get install -y \
php8.4 \
php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl} \
libapache2-mod-php8.4
msg_ok "Installed PHP"
msg_info "Setting up database" msg_info "Setting up database"
DB_NAME=kimai_db DB_NAME=kimai_db
DB_USER=kimai DB_USER=kimai
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
MYSQL_VERSION=$(mysql --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') MYSQL_VERSION=$(mariadb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" $STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{ {
echo "Kimai-Credentials" echo "Kimai-Credentials"
echo "Kimai Database User: $DB_USER" echo "Kimai Database User: $DB_USER"
@@ -56,11 +41,9 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH
} >>~/kimai.creds } >>~/kimai.creds
msg_ok "Set up database" msg_ok "Set up database"
msg_info "Installing Kimai (Patience)" fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
RELEASE=$(curl -fsSL https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}".zip msg_info "Installing Kimai"
$STD unzip "${RELEASE}".zip
mv kimai-"${RELEASE}" /opt/kimai
cd /opt/kimai cd /opt/kimai
echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc
source ~/.bashrc source ~/.bashrc
@@ -92,8 +75,6 @@ admin_lte:
options: options:
default_avatar: build/apple-touch-icon.png default_avatar: build/apple-touch-icon.png
EOF EOF
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Kimai" msg_ok "Installed Kimai"
msg_info "Creating Service" msg_info "Creating Service"
@@ -130,7 +111,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "${RELEASE}".zip $STD apt -y autoremove
$STD apt-get -y autoremove $STD apt -y autoclean
$STD apt-get -y autoclean $STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,9 +14,9 @@ network_check
update_os update_os
msg_info "Installing dependencies" msg_info "Installing dependencies"
$STD apt install -y --no-install-recommends \ $STD apt install -y \
pkg-config \ pkg-config \
gcc \ build-essentials \
g++ \ g++ \
libicu-dev libicu-dev
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
@@ -32,13 +32,18 @@ setup_uv
fetch_and_deploy_gh_release "libretranslate" "LibreTranslate/LibreTranslate" fetch_and_deploy_gh_release "libretranslate" "LibreTranslate/LibreTranslate"
msg_info "Setup LibreTranslate (Patience)" msg_info "Setup LibreTranslate (Patience)"
TORCH_VERSION=$(grep -Eo '"torch ==[0-9]+\.[0-9]+\.[0-9]+' /opt/libretranslate/pyproject.toml | \
tail -n1 | sed 's/.*==//')
if [[ -z "$TORCH_VERSION" ]]; then
TORCH_VERSION="2.5.0"
fi
cd /opt/libretranslate cd /opt/libretranslate
$STD uv venv .venv $STD uv venv .venv
$STD source .venv/bin/activate $STD source .venv/bin/activate
$STD uv pip install --upgrade pip setuptools $STD uv pip install --upgrade pip setuptools
$STD uv pip install Babel==2.12.1 $STD uv pip install Babel==2.12.1
$STD .venv/bin/python scripts/compile_locales.py $STD .venv/bin/python scripts/compile_locales.py
$STD uv pip install torch==2.2.0 --extra-index-url https://download.pytorch.org/whl/cpu $STD uv pip install "torch==${TORCH_VERSION}" --extra-index-url https://download.pytorch.org/whl/cpu
$STD uv pip install "numpy<2" $STD uv pip install "numpy<2"
$STD uv pip install . $STD uv pip install .
$STD uv pip install libretranslate $STD uv pip install libretranslate

View File

@@ -14,19 +14,19 @@ network_check
update_os update_os
msg_info "Installing dependencies" msg_info "Installing dependencies"
$STD apt install --no-install-recommends -y build-essential $STD apt install -y build-essential
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
MYSQL_VERSION="8.0" setup_mysql setup_mariadb
msg_info "Setting up Database" msg_info "Setting up Database"
DB_NAME="mmdl" DB_NAME="mmdl"
DB_USER="mmdl" DB_USER="mmdl"
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" $STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';" $STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';"
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{ {
echo "Manage My Damn Life Credentials" echo "Manage My Damn Life Credentials"
echo "Database User: $DB_USER" echo "Database User: $DB_USER"
@@ -59,7 +59,7 @@ msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mmdl.service cat <<EOF >/etc/systemd/system/mmdl.service
[Unit] [Unit]
Description=${APPLICATION} Service Description=${APPLICATION} Service
After=network.target mysql.service After=network.target mariadb.service
[Service] [Service]
WorkingDirectory=/opt/mmdl WorkingDirectory=/opt/mmdl

View File

@@ -33,7 +33,7 @@ msg_info "Installing Deno"
export DENO_INSTALL="/usr/local" export DENO_INSTALL="/usr/local"
curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y
[[ ":$PATH:" != *":/usr/local/bin:"* ]] && [[ ":$PATH:" != *":/usr/local/bin:"* ]] &&
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc && echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc &&
source ~/.bashrc source ~/.bashrc
msg_ok "Installed Deno" msg_ok "Installed Deno"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: davalanche # Author: davalanche | Co-Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mylar3/mylar3 # Source: https://github.com/mylar3/mylar3
@@ -14,7 +14,6 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y jq
cat <<EOF >/etc/apt/sources.list.d/non-free.sources cat <<EOF >/etc/apt/sources.list.d/non-free.sources
Types: deb Types: deb
URIs: http://deb.debian.org/debian URIs: http://deb.debian.org/debian
@@ -23,22 +22,17 @@ Components: non-free non-free-firmware
EOF EOF
$STD apt update $STD apt update
$STD apt install -y unrar $STD apt install -y unrar
rm /etc/apt/sources.list.d/non-free.sources
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup Python3" PYTHON_VERSION="3.12" setup_uv
$STD apt install -y python3-pip fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD pip install -U --no-cache-dir pip
msg_ok "Setup Python3"
msg_info "Installing ${APPLICATION}" msg_info "Installing ${APPLICATION}"
mkdir -p /opt/mylar3
mkdir -p /opt/mylar3-data mkdir -p /opt/mylar3-data
RELEASE=$(curl -fsSL https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name') $STD uv venv /opt/mylar3/.venv
curl -fsSL "https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz --strip-components=1 -C /opt/mylar3 $STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
$STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt $STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt $STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
msg_ok "Installed ${APPLICATION}" msg_ok "Installed ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
@@ -48,7 +42,7 @@ Description=Mylar3 Service
After=network-online.target After=network-online.target
[Service] [Service]
ExecStart=/usr/bin/python3 /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data ExecStart=/opt/mylar3/.venv/bin/python /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
GuessMainPID=no GuessMainPID=no
Type=forking Type=forking
Restart=on-failure Restart=on-failure

View File

@@ -63,27 +63,7 @@ msg_ok "MySQL Server configured"
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing phpMyAdmin" bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/phpmyadmin.sh)"
$STD apt install -y \
apache2 \
php \
php-mysqli \
php-mbstring \
php-zip \
php-gd \
php-json \
php-curl
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz" -o "phpMyAdmin-5.2.2-all-languages.tar.gz"
mkdir -p /var/www/html/phpMyAdmin
tar xf phpMyAdmin-5.2.2-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
SECRET=$(openssl rand -base64 24)
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
chmod 660 /var/www/html/phpMyAdmin/config.inc.php
chown -R www-data:www-data /var/www/html/phpMyAdmin
systemctl restart apache2
msg_ok "Installed phpMyAdmin"
fi fi
msg_info "Start Service" msg_info "Start Service"

View File

@@ -19,11 +19,11 @@ msg_ok "Installed Dependencies"
msg_info "Checking CPU Features" msg_info "Checking CPU Features"
if lscpu | grep -q 'avx'; then if lscpu | grep -q 'avx'; then
MONGODB_VERSION="7.0" MONGODB_VERSION="8.0"
msg_ok "AVX detected: Using MongoDB 7.0" msg_ok "AVX detected: Using MongoDB 8.0"
MONGO_VERSION="8.0" setup_mongodb
else else
msg_error "No AVX detected: TP-Link Canceled Support for Old MongoDB for Debian 12\n https://www.tp-link.com/baltic/support/faq/4160/" MONGO_VERSION="4.4" setup_mongodb
exit 0
fi fi
msg_info "Installing Azul Zulu Java" msg_info "Installing Azul Zulu Java"
@@ -34,27 +34,15 @@ $STD apt update
$STD apt -y install zulu21-jre-headless $STD apt -y install zulu21-jre-headless
msg_ok "Installed Azul Zulu Java" msg_ok "Installed Azul Zulu Java"
msg_info "Installing libssl (if needed)"
if ! dpkg -l | grep -q 'libssl1.1'; then if ! dpkg -l | grep -q 'libssl1.1'; then
msg_info "Installing libssl (if needed)"
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb" curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
$STD dpkg -i /tmp/libssl.deb $STD dpkg -i /tmp/libssl.deb
rm -f /tmp/libssl.deb rm -f /tmp/libssl.deb
msg_ok "Installed libssl1.1" msg_ok "Installed libssl1.1"
fi fi
msg_info "Installing MongoDB $MONGODB_VERSION"
curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
cat <<EOF >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.sources
Types: deb
URIs: http://repo.mongodb.org/apt/debian
Suites: $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION}
Components: main
Signed-By: /usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
EOF
$STD apt update
$STD apt install -y mongodb-org
msg_ok "Installed MongoDB $MONGODB_VERSION"
msg_info "Installing Omada Controller" msg_info "Installing Omada Controller"
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" | OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |

View File

@@ -15,7 +15,7 @@ update_os
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr" fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)" PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs NODE_VERSION="24" NODE_MODULE="$PNPM" setup_nodejs
msg_info "Configuring palmr backend" msg_info "Configuring palmr backend"
PALMR_DIR="/opt/palmr_data" PALMR_DIR="/opt/palmr_data"

View File

@@ -13,19 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt install -y \
ca-certificates \
software-properties-common \
apt-transport-https \
lsb-release \
php-{opcache,curl,gd,mbstring,xml,bcmath,intl,zip,xsl,pgsql} \
libapache2-mod-php \
composer
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
setup_composer
msg_info "Setting up PHP" msg_info "Setting up PHP"
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";') PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')

287
install/patchmon-install.sh Normal file
View File

@@ -0,0 +1,287 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/PatcMmon/PatchMon
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 \
build-essential \
nginx \
redis-server
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
PG_VERSION="17" setup_postgresql
msg_info "Setup PostgreSQL Database"
DB_NAME=patchmon_db
DB_USER=patchmon_usr
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
{
echo "PatchMon Credentials"
echo "PatchMon Database Name: $DB_NAME"
echo "PatchMon Database User: $DB_USER"
echo "PatchMon Database Password: $DB_PASS"
} >>~/patchmon.creds
msg_ok "Setup PostgreSQL Database"
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
msg_info "Configuring PatchMon"
cd /opt/patchmon
export NODE_ENV=production
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/backend
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
cd /opt/patchmon/frontend
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
$STD npm run build
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
cat <<EOF >/opt/patchmon/backend/.env
# Database Configuration
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
PM_DB_CONN_WAIT_INTERVAL=2
# JWT Configuration
JWT_SECRET="$JWT_SECRET"
JWT_EXPIRES_IN=1h
JWT_REFRESH_EXPIRES_IN=7d
# Server Configuration
PORT=3399
NODE_ENV=production
# API Configuration
API_VERSION=v1
# CORS Configuration
CORS_ORIGIN="http://$LOCAL_IP"
# Session Configuration
SESSION_INACTIVITY_TIMEOUT_MINUTES=30
# User Configuration
DEFAULT_USER_ROLE=user
# Rate Limiting (times in milliseconds)
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX=5000
AUTH_RATE_LIMIT_WINDOW_MS=600000
AUTH_RATE_LIMIT_MAX=500
AGENT_RATE_LIMIT_WINDOW_MS=60000
AGENT_RATE_LIMIT_MAX=1000
# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
# Logging
LOG_LEVEL=info
ENABLE_LOGGING=true
# TFA Configuration
TFA_REMEMBER_ME_EXPIRES_IN=30d
TFA_MAX_REMEMBER_SESSIONS=5
TFA_SUSPICIOUS_ACTIVITY_THRESHOLD=3
EOF
cat <<EOF >/opt/patchmon/frontend/.env
VITE_API_URL=http://$LOCAL_IP/api/v1
VITE_APP_NAME=PatchMon
VITE_APP_VERSION=1.3.0
EOF
cd /opt/patchmon/backend
$STD npx prisma migrate deploy
$STD npx prisma generate
msg_ok "Configured PatchMon"
msg_info "Configuring Nginx"
cat <<EOF >/etc/nginx/sites-available/patchmon.conf
server {
listen 80;
server_name $LOCAL_IP;
# Security headers
add_header X-Frame-Options DENY always;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Frontend
location / {
root /opt/patchmon/frontend/dist;
try_files \$uri \$uri/ /index.html;
}
# Bull Board proxy
location /bullboard {
proxy_pass http://127.0.0.1:3399;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
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-Host \$host;
proxy_set_header Cookie \$http_cookie;
proxy_cache_bypass \$http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
# Enable cookie passthrough
proxy_pass_header Set-Cookie;
proxy_cookie_path / /;
# Preserve original client IP
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
if (\$request_method = 'OPTIONS') {
return 204;
}
}
# API proxy
location /api/ {
proxy_pass http://127.0.0.1:3399;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass \$http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
# Preserve original client IP
proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
if (\$request_method = 'OPTIONS') {
return 204;
}
}
# Static assets caching (exclude Bull Board assets)
location ~* ^/(?!bullboard).*\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
root /opt/patchmon/frontend/dist;
expires 1y;
add_header Cache-Control "public, immutable";
}
# Health check endpoint
location /health {
proxy_pass http://127.0.0.1:3399/health;
access_log off;
}
}
EOF
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
$STD nginx -t
systemctl restart nginx
msg_ok "Configured Nginx"
msg_info "Creating service"
cat <<EOF >/etc/systemd/system/patchmon-server.service
[Unit]
Description=PatchMon Service
After=network.target postgresql.service
[Service]
Type=simple
WorkingDirectory=/opt/patchmon/backend
ExecStart=/usr/bin/node src/server.js
Restart=always
RestartSec=10
Environment=NODE_ENV=production
Environment=PATH=/usr/bin:/usr/local/bin
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/patchmon
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now patchmon-server
msg_ok "Created and started service"
msg_info "Updating settings"
cat <<EOF >/opt/patchmon/backend/update-settings.js
const { PrismaClient } = require('@prisma/client');
const { v4: uuidv4 } = require('uuid');
const prisma = new PrismaClient();
async function updateSettings() {
try {
const existingSettings = await prisma.settings.findFirst();
const settingsData = {
id: uuidv4(),
server_url: 'http://$LOCAL_IP',
server_protocol: 'http',
server_host: '$LOCAL_IP',
server_port: 3399,
update_interval: 60,
auto_update: true,
signup_enabled: false,
ignore_ssl_self_signed: false,
updated_at: new Date()
};
if (existingSettings) {
// Update existing settings
await prisma.settings.update({
where: { id: existingSettings.id },
data: settingsData
});
} else {
// Create new settings record
await prisma.settings.create({
data: settingsData
});
}
console.log('✅ Database settings updated successfully');
} catch (error) {
console.error('❌ Error updating settings:', error.message);
process.exit(1);
} finally {
await prisma.\$disconnect();
}
}
updateSettings();
EOF
cd /opt/patchmon/backend
$STD node update-settings.js
msg_ok "Settings updated successfully"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -13,14 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="pdo,mysql,gettext,fileinfo" setup_php
$STD apt install -y \
apache2 \
libapache2-mod-php \
php8.2-{pdo,mysql,mbstring,gettext,fileinfo,gd,xml,zip}
msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
msg_info "Setting up MariaDB" msg_info "Setting up MariaDB"
DB_NAME=projectsend DB_NAME=projectsend
@@ -37,12 +32,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/projectsend.creds } >>~/projectsend.creds
msg_ok "Set up MariaDB" msg_ok "Set up MariaDB"
msg_info "Installing projectsend" msg_info "Installing ProjectSend"
RELEASE=$(curl -fsSL https://api.github.com/repos/projectsend/projectsend/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt
curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o "projectsend-r${RELEASE}.zip"
mkdir projectsend
$STD unzip "projectsend-r${RELEASE}.zip" -d projectsend
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
chown -R www-data:www-data /opt/projectsend chown -R www-data:www-data /opt/projectsend
chmod -R 775 /opt/projectsend chmod -R 775 /opt/projectsend
@@ -55,8 +45,7 @@ sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
-e "s/^\(post_max_size = \).*/\1 256M/" \ -e "s/^\(post_max_size = \).*/\1 256M/" \
-e "s/^\(upload_max_filesize = \).*/\1 256M/" \ -e "s/^\(upload_max_filesize = \).*/\1 256M/" \
-e "s/^\(max_execution_time = \).*/\1 300/" \ -e "s/^\(max_execution_time = \).*/\1 300/" \
/etc/php/8.2/apache2/php.ini /etc/php/8.4/apache2/php.ini
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed projectsend" msg_ok "Installed projectsend"
msg_info "Creating Service" msg_info "Creating Service"
@@ -84,7 +73,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/projectsend-r${RELEASE}.zip"
$STD apt -y autoremove $STD apt -y autoremove
$STD apt -y autoclean $STD apt -y autoclean
$STD apt -y clean $STD apt -y clean

View File

@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt install -y \
apache2-utils \ apache2-utils \
python3-pip \ python3-pip \
python3.11-venv python3-venv
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setting up Radicale" msg_info "Setting up Radicale"

View File

@@ -61,6 +61,8 @@ cd /opt/browserless
$STD npm install $STD npm install
rm -rf src/routes/{chrome,edge,firefox,webkit} rm -rf src/routes/{chrome,edge,firefox,webkit}
$STD node_modules/playwright-core/cli.js install --with-deps chromium $STD node_modules/playwright-core/cli.js install --with-deps chromium
$STD npm install typescript --save-dev
$STD npm install esbuild --save-dev
$STD npm run build $STD npm run build
$STD npm run build:function $STD npm run build:function
$STD npm prune production $STD npm prune production

View File

@@ -19,30 +19,33 @@ $STD apt install -y \
p7zip-full p7zip-full
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Setup uv" PYTHON_VERSION="3.13" setup_uv
setup_uv
msg_ok "Setup uv"
msg_info "Setup Unrar" msg_info "Setup Unrar"
cat <<EOF >/etc/apt/sources.list.d/non-free.list cat <<EOF >/etc/apt/sources.list.d/non-free.sources
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware Types: deb
URIs: http://deb.debian.org/debian/
Suites: trixie
Components: non-free
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF EOF
$STD apt update $STD apt update
$STD apt install -y unrar $STD apt install -y unrar
rm /etc/apt/sources.list.d/non-free.list
msg_ok "Setup Unrar" msg_ok "Setup Unrar"
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
msg_info "Installing SABnzbd" msg_info "Installing SABnzbd"
RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
mkdir -p /opt/sabnzbd
$STD uv venv /opt/sabnzbd/venv $STD uv venv /opt/sabnzbd/venv
temp_file=$(mktemp)
curl -fsSL "https://github.com/sabnzbd/sabnzbd/releases/download/${RELEASE}/SABnzbd-${RELEASE}-src.tar.gz" -o "$temp_file"
tar -xzf "$temp_file" -C /opt/sabnzbd --strip-components=1
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python $STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed SABnzbd" msg_ok "Installed SABnzbd"
read -r -p "Would you like to install par2cmdline-turbo? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
mv /usr/bin/par2 /usr/bin/par2.old
fetch_and_deploy_gh_release "par2cmdline-turbo" "animetosho/par2cmdline-turbo" "prebuild" "latest" "/usr/bin/" "*-linux-amd64.zip"
fi
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/sabnzbd.service cat <<EOF >/etc/systemd/system/sabnzbd.service
[Unit] [Unit]
@@ -65,7 +68,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt -y autoremove $STD apt -y autoremove
$STD apt -y autoclean $STD apt -y autoclean
$STD apt -y clean $STD apt -y clean

View File

@@ -54,7 +54,6 @@ $STD apt install -y \
libreoffice-base-core \ libreoffice-base-core \
libreoffice-script-provider-python \ libreoffice-script-provider-python \
libreoffice-java-common \ libreoffice-java-common \
unoconv \
pngquant \ pngquant \
weasyprint weasyprint
msg_ok "Installed LibreOffice Components" msg_ok "Installed LibreOffice Components"

View File

@@ -35,8 +35,8 @@ if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
msg_ok "No AVX Support Detected" msg_ok "No AVX Support Detected"
msg_info "Installing MongoDB 4.4" msg_info "Installing MongoDB 4.4"
if ! dpkg -l | grep -q "libssl1.1"; then if ! dpkg -l | grep -q "libssl1.1"; then
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u3_amd64.deb" -o "libssl1.1_1.1.1w-0+deb11u3_amd64.deb" curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "libssl1.1_1.1.1w-0+deb11u4_amd64.deb"
$STD dpkg -i libssl1.1_1.1.1w-0+deb11u3_amd64.deb $STD dpkg -i libssl1.1_1.1.1w-0+deb11u4_amd64.deb
fi fi
curl -fsSL "https://www.mongodb.org/static/pgp/server-4.4.asc" | gpg --dearmor -o /usr/share/keyrings/mongodb-server-4.4.gpg curl -fsSL "https://www.mongodb.org/static/pgp/server-4.4.asc" | gpg --dearmor -o /usr/share/keyrings/mongodb-server-4.4.gpg
cat <<EOF | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.sources >/dev/null cat <<EOF | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.sources >/dev/null

View File

@@ -14,9 +14,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y coreutils $STD apt install -y \
coreutils \
debconf-utils
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing UrBackup Server" msg_info "Installing UrBackup Server"
curl -fsSL https://download.opensuse.org/repositories/home:uroni/Debian_12/Release.key | gpg --dearmor -o /usr/share/keyrings/home-uroni.gpg curl -fsSL https://download.opensuse.org/repositories/home:uroni/Debian_12/Release.key | gpg --dearmor -o /usr/share/keyrings/home-uroni.gpg
cat <<EOF | sudo tee /etc/apt/sources.list.d/home-uroni.sources >/dev/null cat <<EOF | sudo tee /etc/apt/sources.list.d/home-uroni.sources >/dev/null
@@ -27,6 +30,8 @@ Components:
Signed-By: /usr/share/keyrings/home-uroni.gpg Signed-By: /usr/share/keyrings/home-uroni.gpg
EOF EOF
$STD apt update $STD apt update
mkdir -p /opt/urbackup/backups
echo "urbackup-server urbackup/backuppath string /opt/urbackup/backups" | debconf-set-selections
$STD apt install -y urbackup-server $STD apt install -y urbackup-server
msg_ok "Installed UrBackup Server" msg_ok "Installed UrBackup Server"

View File

@@ -345,7 +345,7 @@ if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[
msg_error "Template appears to be corrupted re-downloading." msg_error "Template appears to be corrupted re-downloading."
rm -f "$TEMPLATE_PATH" rm -f "$TEMPLATE_PATH"
else else
msg_error "Template is valid, but container creation still failed." msg_error "Template is valid, but container creation failed. Update your whole Proxmox System (pve-container) first or check https://github.com/community-scripts/ProxmoxVE/discussions/8126"
exit 209 exit 209
fi fi

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: Author: MickLesk # Author: MickLesk
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
function header_info() { function header_info() {
@@ -53,20 +53,9 @@ fi
header_info header_info
function msg_info() { function msg_info() { echo -e "${INFO} ${YW}$1...${CL}"; }
local msg="$1" function msg_ok() { echo -e "${CM} ${GN}$1${CL}"; }
echo -e "${INFO} ${YW}${msg}...${CL}" function msg_error() { echo -e "${CROSS} ${RD}$1${CL}"; }
}
function msg_ok() {
local msg="$1"
echo -e "${CM} ${GN}${msg}${CL}"
}
function msg_error() {
local msg="$1"
echo -e "${CROSS} ${RD}${msg}${CL}"
}
# Detect legacy FileBrowser installation # Detect legacy FileBrowser installation
LEGACY_DB="/usr/local/community-scripts/filebrowser.db" LEGACY_DB="/usr/local/community-scripts/filebrowser.db"
@@ -96,42 +85,32 @@ if [[ -f "$LEGACY_DB" || -f "$LEGACY_BIN" && ! -f "$CONFIG_PATH" ]]; then
fi fi
fi fi
# Check existing installation # Existing installation
if [[ -f "$INSTALL_PATH" ]]; then if [[ -f "$INSTALL_PATH" ]]; then
echo -e "${YW}⚠️ ${APP} is already installed.${CL}" echo -e "${YW}⚠️ ${APP} is already installed.${CL}"
echo -n "Uninstall ${APP}? (y/N): " echo -n "Uninstall ${APP}? (y/N): "
read -r uninstall_prompt read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Uninstalling ${APP}" msg_info "Uninstalling ${APP}"
if [[ "$OS" == "Debian" ]]; then if [[ "$OS" == "Debian" ]]; then
systemctl disable --now filebrowser.service &>/dev/null systemctl disable --now filebrowser.service &>/dev/null
rm -f "$SERVICE_PATH" rm -f "$SERVICE_PATH"
else else
rc-service filebrowser stop &>/dev/null rc-service filebrowser stop &>/dev/null
rc-update del filebrowser &>/dev/null rc-update del filebrowser &>/dev/null
rm -f "$SERVICE_PATH" rm -f "$SERVICE_PATH"
fi
rm -f "$INSTALL_PATH" "$CONFIG_PATH"
msg_ok "${APP} has been uninstalled."
exit 0
fi fi
rm -f "$INSTALL_PATH" "$CONFIG_PATH"
msg_ok "${APP} has been uninstalled."
exit 0
fi
echo -n "Update ${APP}? (y/N): " echo -n "Update ${APP}? (y/N): "
read -r update_prompt read -r update_prompt
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
tmp="${INSTALL_PATH}.tmp.$$" curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
if ! curl -fSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$tmp"; then chmod +x "$INSTALL_PATH"
msg_error "Download failed"
rm -f "$tmp"
exit 1
fi
chmod 0755 "$tmp"
if ! mv -f "$tmp" "$INSTALL_PATH"; then
msg_error "Install failed (cannot move into $INSTALL_PATH)"
rm -f "$tmp"
exit 1
fi
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
exit 0 exit 0
else else
@@ -147,72 +126,80 @@ PORT=${PORT:-$DEFAULT_PORT}
echo -n "Install ${APP}? (y/n): " echo -n "Install ${APP}? (y/n): "
read -r install_prompt read -r install_prompt
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then if ! [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing ${APP} on ${OS}" echo -e "${YW}⚠️ Installation skipped. Exiting.${CL}"
$PKG_MANAGER curl ffmpeg &>/dev/null exit 0
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH" fi
chmod +x "$INSTALL_PATH"
msg_ok "Installed ${APP}"
msg_info "Preparing configuration directory" msg_info "Installing ${APP} on ${OS}"
mkdir -p /usr/local/community-scripts $PKG_MANAGER curl ffmpeg &>/dev/null
chown root:root /usr/local/community-scripts curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
chmod 755 /usr/local/community-scripts chmod +x "$INSTALL_PATH"
msg_ok "Directory prepared" msg_ok "Installed ${APP}"
echo -n "Use No Authentication? (y/N): " msg_info "Preparing configuration directory"
read -r noauth_prompt mkdir -p /usr/local/community-scripts
chown root:root /usr/local/community-scripts
chmod 755 /usr/local/community-scripts
msg_ok "Directory prepared"
if [[ "${noauth_prompt,,}" =~ ^(y|yes)$ ]]; then echo -n "Use No Authentication? (y/N): "
cat <<EOF >"$CONFIG_PATH" read -r noauth_prompt
# === YAML CONFIG GENERATION ===
if [[ "${noauth_prompt,,}" =~ ^(y|yes)$ ]]; then
cat <<EOF >"$CONFIG_PATH"
server: server:
port: $PORT port: $PORT
sources: sources:
- path: "$SRC_DIR" - path: "$SRC_DIR"
name: "RootFS"
config: config:
denyByDefault: false
disableIndexing: false disableIndexing: false
indexingIntervalMinutes: 240 indexingIntervalMinutes: 240
exclude: conditionals:
folderPaths: rules:
- "/proc" - neverWatchPath: "/proc"
- "/sys" - neverWatchPath: "/sys"
- "/dev" - neverWatchPath: "/dev"
- "/run" - neverWatchPath: "/run"
- "/tmp" - neverWatchPath: "/tmp"
- "/lost+found" - neverWatchPath: "/lost+found"
auth: auth:
methods: methods:
noauth: true noauth: true
EOF EOF
msg_ok "Configured with no authentication" msg_ok "Configured with no authentication"
else else
cat <<EOF >"$CONFIG_PATH" cat <<EOF >"$CONFIG_PATH"
server: server:
port: $PORT port: $PORT
sources: sources:
- path: "$SRC_DIR" - path: "$SRC_DIR"
name: "RootFS"
config: config:
denyByDefault: false
disableIndexing: false disableIndexing: false
indexingIntervalMinutes: 240 indexingIntervalMinutes: 240
exclude: conditionals:
folderPaths: rules:
- "/proc" - neverWatchPath: "/proc"
- "/sys" - neverWatchPath: "/sys"
- "/dev" - neverWatchPath: "/dev"
- "/run" - neverWatchPath: "/run"
- "/tmp" - neverWatchPath: "/tmp"
- "/lost+found" - neverWatchPath: "/lost+found"
auth: auth:
adminUsername: admin adminUsername: admin
adminPassword: helper-scripts.com adminPassword: helper-scripts.com
EOF EOF
msg_ok "Configured with default admin (admin / helper-scripts.com)" msg_ok "Configured with default admin (admin / helper-scripts.com)"
fi fi
msg_info "Creating service" msg_info "Creating service"
if [[ "$OS" == "Debian" ]]; then
if [[ "$OS" == "Debian" ]]; then cat <<EOF >"$SERVICE_PATH"
cat <<EOF >"$SERVICE_PATH"
[Unit] [Unit]
Description=FileBrowser Quantum Description=FileBrowser Quantum
After=network.target After=network.target
@@ -226,9 +213,9 @@ Restart=always
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable --now filebrowser &>/dev/null systemctl enable --now filebrowser &>/dev/null
else else
cat <<EOF >"$SERVICE_PATH" cat <<EOF >"$SERVICE_PATH"
#!/sbin/openrc-run #!/sbin/openrc-run
command="/usr/local/bin/filebrowser" command="/usr/local/bin/filebrowser"
@@ -241,14 +228,10 @@ depend() {
need net need net
} }
EOF EOF
chmod +x "$SERVICE_PATH" chmod +x "$SERVICE_PATH"
rc-update add filebrowser default &>/dev/null rc-update add filebrowser default &>/dev/null
rc-service filebrowser start &>/dev/null rc-service filebrowser start &>/dev/null
fi
msg_ok "Service created successfully"
echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"
else
echo -e "${YW}⚠️ Installation skipped. Exiting.${CL}"
exit 0
fi fi
msg_ok "Service created successfully"
echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"