Compare commits

...

75 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot] f0b236ec77 Update CHANGELOG.md (#16579)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 09:27:52 +00:00
CanbiZ (MickLesk) e683dd92e7 patchmon: fetch only SCAP datastream XMLs (#16565)
* patchmon: fetch only SCAP datastream XMLs, not the full 2.1GB content archive

* Increase default disk size from 4GB to 8GB
2026-08-17 11:27:25 +02:00
community-scripts-pr-app[bot] 8490cd606d Update CHANGELOG.md (#16578)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 09:27:02 +00:00
community-scripts-pr-app[bot] 9e6d1c1c71 Update CHANGELOG.md (#16577)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 09:26:38 +00:00
CanbiZ (MickLesk) ee06ad86f1 teslamate: use precompiled Elixir (#16561) 2026-08-17 11:26:34 +02:00
CanbiZ (MickLesk) 7d7db6dd33 keycloak: remove invalid ExecStop, kc.sh has no stop subcommand (#16563) 2026-08-17 11:26:13 +02:00
community-scripts-pr-app[bot] b3531bb0a8 Update CHANGELOG.md (#16576)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 09:23:46 +00:00
community-scripts-pr-app[bot] bdbe5d4043 Update CHANGELOG.md (#16575)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 09:23:21 +00:00
CanbiZ (MickLesk) b559bcef39 Pin ownfoil release to version 2.3.0 (#16574) 2026-08-17 11:23:12 +02:00
CanbiZ (MickLesk) 4ec4bb26ed kometa: add git, needed by requirements.txt's git dependency (#16562) 2026-08-17 11:22:53 +02:00
community-scripts-pr-app[bot] bb7721b199 Update CHANGELOG.md (#16573)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-17 07:23:58 +00:00
Tim Moore 22e2a6d73e fix romm: deploy EmulatorJS and Ruffle after the frontend build (#16571) 2026-08-17 09:23:31 +02:00
MickLesk b19dad1809 tools.func: fix invalid find -prune/-delete combination breaking CLEAN_INSTALL 2026-08-16 22:51:27 +02:00
community-scripts-pr-app[bot] 4f04894a19 Update CHANGELOG.md (#16564)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 18:43:38 +00:00
Robbie Trencheny 05fdd15406 [FIX] Shelfmark: internal bypasser never starts under the gevent worker (#16495)
* Shelfmark: fix internal bypasser under the gevent worker

The internal captcha bypasser never worked on this install. Shelfmark is served
by gunicorn's GeventWebSocketWorker, and DOCKERMODE controls whether the bypass
browser runs in a helper process "isolated from gunicorn/gevent" (upstream's
_get_via_subprocess). With DOCKERMODE=false the SeleniumBase CDP browser starts
inside the monkey-patched loop, its asyncio websocket never connects, and every
bypass dies at "Pure CDP browser startup timed out after 45s" — searches then
burn their whole retry budget and surface as "mirrors are blocked".

Set DOCKERMODE=true for deployment type 1, and migrate existing installs on
update. The flag is misnamed upstream: it gates gevent isolation, not Docker.

Also drop chromium.service. Nothing in Shelfmark connects to port 9222 — the
bypasser launches its own browser on a random port — so it only consumed
~226MB. With DOCKERMODE enabled it is additionally killed by Shelfmark's
orphan-process reaper (pkill -f chromium) on every bypass and respawned by
systemd, since an LXC shares its PID namespace.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ln3yVj3sWHG2c6T78W1we

* Shelfmark: address review — one check, drop comments

Collapse the chromium.service removal and the DOCKERMODE migration into the
single internal-bypasser check, as every affected install has both. Guard the
disable so a second update run does not fail on the removed unit, matching
esphome.sh. Drop the explanatory comments.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ln3yVj3sWHG2c6T78W1we

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 20:43:14 +02:00
community-scripts-pr-app[bot] 92ec089410 Update CHANGELOG.md (#16560)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 18:37:34 +00:00
Tobias abc9e569ad tubearchivist: fix: enhance update script (#16521) 2026-08-16 20:37:12 +02:00
community-scripts-pr-app[bot] 4255711f06 Update CHANGELOG.md (#16559)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 18:35:23 +00:00
CanbiZ (MickLesk) 3ac1f1dfd4 cronmaster: back up scripts, data and snippets folders on update (#16529) 2026-08-16 20:34:55 +02:00
community-scripts-pr-app[bot] fc61dddffd Update CHANGELOG.md (#16558)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 18:29:05 +00:00
community-scripts-pr-app[bot] d61764878c Update CHANGELOG.md (#16557)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 18:28:40 +00:00
CanbiZ (MickLesk) fa8e6d5bb7 tracktor: build with pnpm using upstream's frozen lockfile (#16530) 2026-08-16 20:28:36 +02:00
CanbiZ (MickLesk) 85a621993d wallos: run db migration after apache reload on update (#16528) 2026-08-16 20:28:16 +02:00
community-scripts-pr-app[bot] 4ccc82e0a4 Update .app files (#16546)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-08-16 14:58:42 +02:00
community-scripts-pr-app[bot] 756f160eb6 Update CHANGELOG.md (#16549)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 11:59:31 +00:00
CanbiZ (MickLesk) cb09223b37 networkoptimizer: also build uwnspeedtest binary for server arch (#16531) 2026-08-16 21:59:03 +10:00
community-scripts-pr-app[bot] 5471da8bf7 Update CHANGELOG.md (#16548)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 11:58:32 +00:00
community-scripts-pr-app[bot] 74d5fc67d5 Update CHANGELOG.md (#16547)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 11:58:23 +00:00
CanbiZ (MickLesk) a9ff7e6a13 core: skip mount points during backup and clean installs (#16532)
* Skip mount points during backup and clean install

Prevent accidental deletion or backup of mount points:
- In create_backup(), skip paths that are mount points with a warning
- In _deploy_source_tarball(), _deploy_unpacked_archive(), and fetch_and_deploy_from_url(), use find with mountpoint pruning to avoid deleting mount point directories during CLEAN_INSTALL

* change comments for new variant

Update `_deploy_source_tarball` and related helper comments to note that CLEAN_INSTALL wipes target contents including dotfiles while preserving mount points. This improves guidance around backup/restore of config dotfiles during source deployments.
2026-08-16 21:58:07 +10:00
community-scripts-pr-app[bot] d0456f5b77 Update CHANGELOG.md (#16545)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 11:57:59 +00:00
CanbiZ (MickLesk) 1246048481 Remove: Jeedom (#16536) 2026-08-16 21:57:36 +10:00
community-scripts-pr-app[bot] 2c1a9c9535 Update .app files (#16542)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-08-16 12:48:43 +02:00
community-scripts-pr-app[bot] 714d38b01a Update CHANGELOG.md (#16543)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 10:25:00 +00:00
CanbiZ (MickLesk) ab88c8decf Remove: Swizzin (#16535) 2026-08-16 12:24:27 +02:00
community-scripts-pr-app[bot] e5cd138dfb Update CHANGELOG.md (#16541)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 10:23:23 +00:00
CanbiZ (MickLesk) 662adaa6d4 Remove: NocoDB (#16533) 2026-08-16 20:22:54 +10:00
community-scripts-pr-app[bot] 6ee1758997 Update CHANGELOG.md (#16539)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 00:03:46 +00:00
community-scripts-pr-app[bot] ba59f092ab Archive old changelog entries (#16538)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-16 00:03:21 +00:00
community-scripts-pr-app[bot] bbecb68618 Update CHANGELOG.md (#16537)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-15 21:41:59 +00:00
push-app-to-main[bot] f4a36e9200 Securo (#16518)
* Add securo (ct)

* fix: src

* securo: enable nginx site via nginx_enable_site helper

Replaces the manual symlink + default removal + restart with the core
helper, which also runs nginx -t before restarting and enables the unit.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
Co-authored-by: MickLesk <mickey.leskowitz@gmail.com>
2026-08-15 23:41:31 +02:00
community-scripts-pr-app[bot] 28b848ddf2 Update CHANGELOG.md (#16534)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-15 21:34:24 +00:00
push-app-to-main[bot] a06ca3cf59 ntopng (#16387) 2026-08-15 23:33:58 +02:00
community-scripts-pr-app[bot] 91fd6e57a6 Update CHANGELOG.md (#16516)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-15 03:37:21 +00:00
community-scripts-pr-app[bot] 3aa4538765 Update CHANGELOG.md (#16515)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-15 03:36:54 +00:00
CanbiZ (MickLesk) a566b6b129 adventurelog: remove pnpm build-allowlist override causing pnpm 10.33 conflict (#16478) 2026-08-15 13:36:49 +10:00
CanbiZ (MickLesk) 91dd24f38c PatchMon: add ssg-content (#16481)
* patchmon: fetch SCAP Security Guide content, bump disk default

* patchmon: simplify SCAP content fetch with &&/|| chaining

* patchmon: use fetch_and_deploy_gh_release for SCAP content

* Reintroduce fetch_and_deploy_gh_release for ssg-content
2026-08-15 13:36:27 +10:00
community-scripts-pr-app[bot] b183bcc64e Update CHANGELOG.md (#16511)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:13:02 +00:00
community-scripts-pr-app[bot] a04bcaf832 Update CHANGELOG.md (#16510)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:12:42 +00:00
push-app-to-main[bot] cf6e9abfd0 RSS-Bridge (#16471) 2026-08-14 22:12:35 +02:00
CanbiZ (MickLesk) a1c38b514a powerdns: move poweradmin database outside the web root (#16476) 2026-08-14 22:12:12 +02:00
community-scripts-pr-app[bot] 6372ba3a65 Update CHANGELOG.md (#16509)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:11:59 +00:00
CanbiZ (MickLesk) f096c8b91f projectsend: rewrite for 2.0.0 (Laravel, nginx, MariaDB) (#16477) 2026-08-14 22:11:45 +02:00
community-scripts-pr-app[bot] 7779722cba Update CHANGELOG.md (#16508)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:11:36 +00:00
community-scripts-pr-app[bot] 1f77a9ea7e Update CHANGELOG.md (#16507)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:11:23 +00:00
community-scripts-pr-app[bot] 621060584b Update CHANGELOG.md (#16506)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:11:05 +00:00
CanbiZ (MickLesk) 70dfd66dff paperless-ngx: run services with uv --no-sync to avoid startup network dependency (#16479) 2026-08-14 22:10:54 +02:00
community-scripts-pr-app[bot] 21ed75c9e9 Update CHANGELOG.md (#16505)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:10:51 +00:00
CanbiZ (MickLesk) 7317baddc1 calibre-web: install as package for 0.6.27's src-layout restructure (#16480) 2026-08-14 22:10:34 +02:00
community-scripts-pr-app[bot] 2cfba7771c Update CHANGELOG.md (#16504)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:10:24 +00:00
community-scripts-pr-app[bot] 1ccd3c0dde Update CHANGELOG.md (#16503)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:10:15 +00:00
Johann Grobe ade7cadf9b Wanderer: Refactor of Services / Installation / Paths (#16487) 2026-08-14 22:09:54 +02:00
community-scripts-pr-app[bot] 8a78cd1a7b Update CHANGELOG.md (#16502)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:09:51 +00:00
CanbiZ (MickLesk) ca1f0181b2 pelican-panel: set APP_URL to container IP (#16488) 2026-08-14 22:09:22 +02:00
community-scripts-pr-app[bot] b2ec867104 Update CHANGELOG.md (#16501)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 20:08:48 +00:00
Chris b2997c15ed Homepage v2.0 (#16500) 2026-08-14 22:08:21 +02:00
community-scripts-pr-app[bot] d247079e89 Update CHANGELOG.md (#16494)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 14:07:52 +00:00
community-scripts-pr-app[bot] bd4f8fd8ae Update CHANGELOG.md (#16493)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 14:07:34 +00:00
push-app-to-main[bot] c9413b0ccf GoDoxy (#16470)
* Add godoxy (ct)

* Refactor fetch_and_deploy_gh_release call

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-08-14 16:07:15 +02:00
push-app-to-main[bot] 97c773a435 Mumble (#16474)
* Add mumble (ct)

* Update mumble.sh to source new build function

Removed local core checkout instructions and added new source for build.func.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-08-14 16:07:03 +02:00
community-scripts-pr-app[bot] 50c5e9c386 Update CHANGELOG.md (#16492)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 14:03:59 +00:00
push-app-to-main[bot] dd30b01b82 Fleet (#16472)
* Add fleet (ct)

* Clean up comments and source fallback in fleet.sh

Removed local core checkout comments and fallback source.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-08-14 16:03:28 +02:00
community-scripts-pr-app[bot] 04ec69b582 Update CHANGELOG.md (#16491)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 13:57:57 +00:00
push-app-to-main[bot] ab9fb6279f Newt (#16473)
* Add newt (ct)

* Modify build function source and var_arm64 default

Updated source for build function and changed default value for var_arm64.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-08-14 15:57:31 +02:00
community-scripts-pr-app[bot] 3e687478d9 Update CHANGELOG.md (#16490)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-14 13:21:51 +00:00
Brian Rodriguez 1c7d875d85 fix(ampache): update to PHP 8.5 asset, auto-upgrade PHP on update (#16484)
Ampache 8.0.0 dropped the php8.4 prebuilt zip in favor of php8.5, so
new installs and updates could no longer find a matching release
asset. Install script now provisions PHP 8.5; update script detects
existing PHP 8.4 containers and upgrades them to 8.5 before fetching
the new release.

Closes #16482
2026-08-14 15:21:26 +02:00
69 changed files with 1608 additions and 576 deletions
+153
View File
@@ -1,3 +1,156 @@
## 2026-08-15
### 🆕 New Scripts
- Securo ([#16518](https://github.com/community-scripts/ProxmoxVE/pull/16518))
- ntopng ([#16387](https://github.com/community-scripts/ProxmoxVE/pull/16387))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- AdventureLog: remove pnpm build-allowlist override causing pnpm 10.33 conflict [@MickLesk](https://github.com/MickLesk) ([#16478](https://github.com/community-scripts/ProxmoxVE/pull/16478))
- #### ✨ New Features
- PatchMon: add ssg-content [@MickLesk](https://github.com/MickLesk) ([#16481](https://github.com/community-scripts/ProxmoxVE/pull/16481))
## 2026-08-14
### 🆕 New Scripts
- RSS-Bridge ([#16471](https://github.com/community-scripts/ProxmoxVE/pull/16471))
- GoDoxy ([#16470](https://github.com/community-scripts/ProxmoxVE/pull/16470))
- Mumble ([#16474](https://github.com/community-scripts/ProxmoxVE/pull/16474))
- Fleet ([#16472](https://github.com/community-scripts/ProxmoxVE/pull/16472))
- Newt ([#16473](https://github.com/community-scripts/ProxmoxVE/pull/16473))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- calibre-web: install as package for 0.6.27's src-layout restructure [@MickLesk](https://github.com/MickLesk) ([#16480](https://github.com/community-scripts/ProxmoxVE/pull/16480))
- Wanderer: Refactor of Services / Installation / Paths [@johanngrobe](https://github.com/johanngrobe) ([#16487](https://github.com/community-scripts/ProxmoxVE/pull/16487))
- pelican-panel: set APP_URL to container IP [@MickLesk](https://github.com/MickLesk) ([#16488](https://github.com/community-scripts/ProxmoxVE/pull/16488))
- fix(ampache): update to PHP 8.5 asset, auto-upgrade PHP on update [@CervezaStallone](https://github.com/CervezaStallone) ([#16484](https://github.com/community-scripts/ProxmoxVE/pull/16484))
- #### ✨ New Features
- projectsend: rewrite for 2.0.0 (Laravel, nginx, MariaDB) [@MickLesk](https://github.com/MickLesk) ([#16477](https://github.com/community-scripts/ProxmoxVE/pull/16477))
- Homepage v2.0 [@vhsdream](https://github.com/vhsdream) ([#16500](https://github.com/community-scripts/ProxmoxVE/pull/16500))
- #### 🔧 Refactor
- Refactor: PowerDNS move poweradmin database outside the web root [@MickLesk](https://github.com/MickLesk) ([#16476](https://github.com/community-scripts/ProxmoxVE/pull/16476))
- paperless-ngx: run services with uv --no-sync to avoid startup network dependency [@MickLesk](https://github.com/MickLesk) ([#16479](https://github.com/community-scripts/ProxmoxVE/pull/16479))
## 2026-08-13
### 🆕 New Scripts
- SuggestArr ([#16449](https://github.com/community-scripts/ProxmoxVE/pull/16449))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(stirling-pdf): LibreOffice listener collides with unoserver on UNO port 2002, burning a core [@angusmaul](https://github.com/angusmaul) ([#16460](https://github.com/community-scripts/ProxmoxVE/pull/16460))
- fix(reitti): enable SNI for tile cache [@kylemd](https://github.com/kylemd) ([#16463](https://github.com/community-scripts/ProxmoxVE/pull/16463))
- [wanderer] refactor [@johanngrobe](https://github.com/johanngrobe) ([#16448](https://github.com/community-scripts/ProxmoxVE/pull/16448))
- #### ✨ New Features
- feat: Update koillection-install.sh to support API usage [@Crazy-Duck](https://github.com/Crazy-Duck) ([#16425](https://github.com/community-scripts/ProxmoxVE/pull/16425))
## 2026-08-12
### 🆕 New Scripts
- Stalwart ([#16388](https://github.com/community-scripts/ProxmoxVE/pull/16388))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- networkoptimizer: mitigate dotnet publish hang in LXC [@MickLesk](https://github.com/MickLesk) ([#16436](https://github.com/community-scripts/ProxmoxVE/pull/16436))
- lazylibrarian: reinstall deps after git pull on update [@MickLesk](https://github.com/MickLesk) ([#16435](https://github.com/community-scripts/ProxmoxVE/pull/16435))
- wanderer: fix deprecated meilisearch upgrade flag [@MickLesk](https://github.com/MickLesk) ([#16434](https://github.com/community-scripts/ProxmoxVE/pull/16434))
- calibre-web: fix release asset filename pattern [@MickLesk](https://github.com/MickLesk) ([#16433](https://github.com/community-scripts/ProxmoxVE/pull/16433))
- fix(stirling-pdf): unoserver installed into the venv, and login mode truncates .env [@angusmaul](https://github.com/angusmaul) ([#16439](https://github.com/community-scripts/ProxmoxVE/pull/16439))
- fix(pulse): keep the container recoverable when an update fails [@rcourtman](https://github.com/rcourtman) ([#16311](https://github.com/community-scripts/ProxmoxVE/pull/16311))
- #### 🔧 Refactor
- ConvertX: add some new dependencies [@MickLesk](https://github.com/MickLesk) ([#16437](https://github.com/community-scripts/ProxmoxVE/pull/16437))
## 2026-08-11
### 🚀 Updated Scripts
- Update source URL for Reactive Resume [@MickLesk](https://github.com/MickLesk) ([#16407](https://github.com/community-scripts/ProxmoxVE/pull/16407))
- #### 🐞 Bug Fixes
- Pelican-Panel: add php artisan p:environment:database [@MickLesk](https://github.com/MickLesk) ([#16397](https://github.com/community-scripts/ProxmoxVE/pull/16397))
- outline: fix URL sed matching wrong line in .env.sample // refactor .env generation [@MickLesk](https://github.com/MickLesk) ([#16408](https://github.com/community-scripts/ProxmoxVE/pull/16408))
- paperless-ngx: reindex Tantivy search index on webserver start [@MickLesk](https://github.com/MickLesk) ([#16395](https://github.com/community-scripts/ProxmoxVE/pull/16395))
- karakeep: pin Node.js to 22 LTS, avoid Node 24.19 better-sqlite3 crash [@MickLesk](https://github.com/MickLesk) ([#16396](https://github.com/community-scripts/ProxmoxVE/pull/16396))
- #### ✨ New Features
- Open WebUI: add optional OpenTelemetry package install [@irishpadres](https://github.com/irishpadres) ([#16415](https://github.com/community-scripts/ProxmoxVE/pull/16415))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix(add-tailscale-lxc): stop spinner before whiptail menu [@halcycon](https://github.com/halcycon) ([#16402](https://github.com/community-scripts/ProxmoxVE/pull/16402))
- #### 🔧 Refactor
- arcane: fix projects/builds dir ownership for non-root container UID [@MickLesk](https://github.com/MickLesk) ([#16411](https://github.com/community-scripts/ProxmoxVE/pull/16411))
## 2026-08-10
### 🆕 New Scripts
- GitLab ([#16386](https://github.com/community-scripts/ProxmoxVE/pull/16386))
- TeslaMate ([#16385](https://github.com/community-scripts/ProxmoxVE/pull/16385))
- tor-snowflake ([#15684](https://github.com/community-scripts/ProxmoxVE/pull/15684))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- ErsatzTV: update ffmpeg to 8.1 version [@MickLesk](https://github.com/MickLesk) ([#16383](https://github.com/community-scripts/ProxmoxVE/pull/16383))
### 🧰 Tools
- post-pdm-install ([#16368](https://github.com/community-scripts/ProxmoxVE/pull/16368))
## 2026-08-09
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix: CouchDB Erlang cookie breaks vm.args (use hex) [@fudianchn](https://github.com/fudianchn) ([#16361](https://github.com/community-scripts/ProxmoxVE/pull/16361))
- SparkyFitness: Install Git for frontend builds [@MickLesk](https://github.com/MickLesk) ([#16352](https://github.com/community-scripts/ProxmoxVE/pull/16352))
- Byparr: Use invisible-playwright browser setup [@MickLesk](https://github.com/MickLesk) ([#16353](https://github.com/community-scripts/ProxmoxVE/pull/16353))
- Crafty Controller: Restore ownership after updates [@MickLesk](https://github.com/MickLesk) ([#16354](https://github.com/community-scripts/ProxmoxVE/pull/16354))
- Webtrees: Fix schema check in silent mode [@MickLesk](https://github.com/MickLesk) ([#16355](https://github.com/community-scripts/ProxmoxVE/pull/16355))
- SigNoz: Allow legacy metadata schema on ClickHouse 26 [@MickLesk](https://github.com/MickLesk) ([#16356](https://github.com/community-scripts/ProxmoxVE/pull/16356))
### 🧰 Tools
- #### ✨ New Features
- Portainer: Update existing CE and BE installations [@MickLesk](https://github.com/MickLesk) ([#16357](https://github.com/community-scripts/ProxmoxVE/pull/16357))
### 📚 Documentation
- github: update Star History links and image sources [@MickLesk](https://github.com/MickLesk) ([#16367](https://github.com/community-scripts/ProxmoxVE/pull/16367))
## 2026-08-08 ## 2026-08-08
### 🆕 New Scripts ### 🆕 New Scripts
+99 -144
View File
@@ -89,6 +89,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
@@ -102,7 +105,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
<details> <details>
<summary><h4>August (8 entries)</h4></summary> <summary><h4>August (15 entries)</h4></summary>
[View August 2026 Changelog](.github/changelogs/2026/08.md) [View August 2026 Changelog](.github/changelogs/2026/08.md)
@@ -521,6 +524,101 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details> </details>
## 2026-08-17
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- keycloak: remove invalid ExecStop, kc.sh has no stop subcommand [@MickLesk](https://github.com/MickLesk) ([#16563](https://github.com/community-scripts/ProxmoxVE/pull/16563))
- Pin ownfoil release to version 2.3.0 [@MickLesk](https://github.com/MickLesk) ([#16574](https://github.com/community-scripts/ProxmoxVE/pull/16574))
- kometa: add git, needed by requirements.txt's git dependency [@MickLesk](https://github.com/MickLesk) ([#16562](https://github.com/community-scripts/ProxmoxVE/pull/16562))
- fix romm: deploy EmulatorJS and Ruffle after the frontend build [@angusmaul](https://github.com/angusmaul) ([#16571](https://github.com/community-scripts/ProxmoxVE/pull/16571))
- #### 🔧 Refactor
- patchmon: fetch only SCAP datastream XMLs [@MickLesk](https://github.com/MickLesk) ([#16565](https://github.com/community-scripts/ProxmoxVE/pull/16565))
- teslamate: use precompiled Elixir [@MickLesk](https://github.com/MickLesk) ([#16561](https://github.com/community-scripts/ProxmoxVE/pull/16561))
## 2026-08-16
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- [FIX] Shelfmark: internal bypasser never starts under the gevent worker [@robbiet480](https://github.com/robbiet480) ([#16495](https://github.com/community-scripts/ProxmoxVE/pull/16495))
- tubearchivist: fix: enhance update script [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16521](https://github.com/community-scripts/ProxmoxVE/pull/16521))
- tracktor: build with pnpm using upstream's frozen lockfile [@MickLesk](https://github.com/MickLesk) ([#16530](https://github.com/community-scripts/ProxmoxVE/pull/16530))
- wallos: run db migration after apache reload on update [@MickLesk](https://github.com/MickLesk) ([#16528](https://github.com/community-scripts/ProxmoxVE/pull/16528))
- #### 🔧 Refactor
- networkoptimizer: also build uwnspeedtest binary for server arch [@MickLesk](https://github.com/MickLesk) ([#16531](https://github.com/community-scripts/ProxmoxVE/pull/16531))
### 🗑️ Deleted Scripts
- Remove: Jeedom [@MickLesk](https://github.com/MickLesk) ([#16536](https://github.com/community-scripts/ProxmoxVE/pull/16536))
- Remove: Swizzin [@MickLesk](https://github.com/MickLesk) ([#16535](https://github.com/community-scripts/ProxmoxVE/pull/16535))
- Remove: NocoDB [@MickLesk](https://github.com/MickLesk) ([#16533](https://github.com/community-scripts/ProxmoxVE/pull/16533))
### 💾 Core
- #### 🔧 Refactor
- core: skip mount points during backup and clean installs [@MickLesk](https://github.com/MickLesk) ([#16532](https://github.com/community-scripts/ProxmoxVE/pull/16532))
### 🧰 Tools
- #### 🐞 Bug Fixes
- cronmaster: back up scripts, data and snippets folders on update [@MickLesk](https://github.com/MickLesk) ([#16529](https://github.com/community-scripts/ProxmoxVE/pull/16529))
## 2026-08-15
### 🆕 New Scripts
- Securo ([#16518](https://github.com/community-scripts/ProxmoxVE/pull/16518))
- ntopng ([#16387](https://github.com/community-scripts/ProxmoxVE/pull/16387))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- AdventureLog: remove pnpm build-allowlist override causing pnpm 10.33 conflict [@MickLesk](https://github.com/MickLesk) ([#16478](https://github.com/community-scripts/ProxmoxVE/pull/16478))
- #### ✨ New Features
- PatchMon: add ssg-content [@MickLesk](https://github.com/MickLesk) ([#16481](https://github.com/community-scripts/ProxmoxVE/pull/16481))
## 2026-08-14
### 🆕 New Scripts
- RSS-Bridge ([#16471](https://github.com/community-scripts/ProxmoxVE/pull/16471))
- GoDoxy ([#16470](https://github.com/community-scripts/ProxmoxVE/pull/16470))
- Mumble ([#16474](https://github.com/community-scripts/ProxmoxVE/pull/16474))
- Fleet ([#16472](https://github.com/community-scripts/ProxmoxVE/pull/16472))
- Newt ([#16473](https://github.com/community-scripts/ProxmoxVE/pull/16473))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- calibre-web: install as package for 0.6.27's src-layout restructure [@MickLesk](https://github.com/MickLesk) ([#16480](https://github.com/community-scripts/ProxmoxVE/pull/16480))
- Wanderer: Refactor of Services / Installation / Paths [@johanngrobe](https://github.com/johanngrobe) ([#16487](https://github.com/community-scripts/ProxmoxVE/pull/16487))
- pelican-panel: set APP_URL to container IP [@MickLesk](https://github.com/MickLesk) ([#16488](https://github.com/community-scripts/ProxmoxVE/pull/16488))
- fix(ampache): update to PHP 8.5 asset, auto-upgrade PHP on update [@CervezaStallone](https://github.com/CervezaStallone) ([#16484](https://github.com/community-scripts/ProxmoxVE/pull/16484))
- #### ✨ New Features
- projectsend: rewrite for 2.0.0 (Laravel, nginx, MariaDB) [@MickLesk](https://github.com/MickLesk) ([#16477](https://github.com/community-scripts/ProxmoxVE/pull/16477))
- Homepage v2.0 [@vhsdream](https://github.com/vhsdream) ([#16500](https://github.com/community-scripts/ProxmoxVE/pull/16500))
- #### 🔧 Refactor
- Refactor: PowerDNS move poweradmin database outside the web root [@MickLesk](https://github.com/MickLesk) ([#16476](https://github.com/community-scripts/ProxmoxVE/pull/16476))
- paperless-ngx: run services with uv --no-sync to avoid startup network dependency [@MickLesk](https://github.com/MickLesk) ([#16479](https://github.com/community-scripts/ProxmoxVE/pull/16479))
## 2026-08-13 ## 2026-08-13
### 🆕 New Scripts ### 🆕 New Scripts
@@ -1134,146 +1232,3 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### ✨ New Features - #### ✨ New Features
- update-lxc: autoremove and autoclean after apt full-upgrade [@soupy-boy](https://github.com/soupy-boy) ([#15831](https://github.com/community-scripts/ProxmoxVE/pull/15831)) - update-lxc: autoremove and autoclean after apt full-upgrade [@soupy-boy](https://github.com/soupy-boy) ([#15831](https://github.com/community-scripts/ProxmoxVE/pull/15831))
## 2026-07-16
### 🆕 New Scripts
- Sync-In ([#15812](https://github.com/community-scripts/ProxmoxVE/pull/15812))
- Beaverhabits ([#15813](https://github.com/community-scripts/ProxmoxVE/pull/15813))
- Notediscovery ([#15811](https://github.com/community-scripts/ProxmoxVE/pull/15811))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Pin Immich to v3.0.3 [@vhsdream](https://github.com/vhsdream) ([#15790](https://github.com/community-scripts/ProxmoxVE/pull/15790))
## 2026-07-15
### 🆕 New Scripts
- Nexterm ([#15688](https://github.com/community-scripts/ProxmoxVE/pull/15688))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- 2fauth: minor fixes for 8.0.0 [@MickLesk](https://github.com/MickLesk) ([#15795](https://github.com/community-scripts/ProxmoxVE/pull/15795))
- SnapOtter: refactor update process to prebuild [@MickLesk](https://github.com/MickLesk) ([#15797](https://github.com/community-scripts/ProxmoxVE/pull/15797))
### 💾 Core
- #### 🔧 Refactor
- tools.func: default Docker setup to official repo [@MickLesk](https://github.com/MickLesk) ([#15794](https://github.com/community-scripts/ProxmoxVE/pull/15794))
## 2026-07-14
### 🆕 New Scripts
- Grav ([#15773](https://github.com/community-scripts/ProxmoxVE/pull/15773))
- Yuvomi ([#15772](https://github.com/community-scripts/ProxmoxVE/pull/15772))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Lychee: Preserve uploads and ownership during update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15768](https://github.com/community-scripts/ProxmoxVE/pull/15768))
- Wanderer: Clean deploy and install plugins for v0.20.0 update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15759](https://github.com/community-scripts/ProxmoxVE/pull/15759))
- FileFlows: Handle update API 401, force update, and Node install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15766](https://github.com/community-scripts/ProxmoxVE/pull/15766))
- BirdNET-Go: Match new upstream release asset naming [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15758](https://github.com/community-scripts/ProxmoxVE/pull/15758))
- [Upstream Fix] Immich: Fix loader priority [@vhsdream](https://github.com/vhsdream) ([#15755](https://github.com/community-scripts/ProxmoxVE/pull/15755))
- #### ✨ New Features
- Bump OpenCloud version to v7.2.2 [@MickLesk](https://github.com/MickLesk) ([#15769](https://github.com/community-scripts/ProxmoxVE/pull/15769))
- Silverbullet: Add optional Runtime API install via Chromium [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15761](https://github.com/community-scripts/ProxmoxVE/pull/15761))
- #### 💥 Breaking Changes
- Pangolin: Bump to 1.20.0 | BREAKING: Switch to PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#15682](https://github.com/community-scripts/ProxmoxVE/pull/15682))
- #### 🔧 Refactor
- AFFiNE: Pin to v0.26.3 [@MickLesk](https://github.com/MickLesk) ([#15782](https://github.com/community-scripts/ProxmoxVE/pull/15782))
## 2026-07-13
### 🆕 New Scripts
- LeafWiki ([#15748](https://github.com/community-scripts/ProxmoxVE/pull/15748))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(hyperion): keep service running after container reboot [@TowyTowy](https://github.com/TowyTowy) ([#15653](https://github.com/community-scripts/ProxmoxVE/pull/15653))
- Change sign-in URL to admin URL in affine.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15741](https://github.com/community-scripts/ProxmoxVE/pull/15741))
- immich: use actual PostgreSQL version for VectorChord package lookup [@mnavon](https://github.com/mnavon) ([#15705](https://github.com/community-scripts/ProxmoxVE/pull/15705))
- fix storyteller release selection for stable web tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15736](https://github.com/community-scripts/ProxmoxVE/pull/15736))
- Docmost: Fix update procedure [@MickLesk](https://github.com/MickLesk) ([#15732](https://github.com/community-scripts/ProxmoxVE/pull/15732))
- fix(shinobi): remove obsolete --unsafe-perm npm flag [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15730](https://github.com/community-scripts/ProxmoxVE/pull/15730))
- #### 💥 Breaking Changes
- reitti: update to v5 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15635](https://github.com/community-scripts/ProxmoxVE/pull/15635))
### 💾 Core
- #### 🐞 Bug Fixes
- fix(build.func): parse script status without jq dependency [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15729](https://github.com/community-scripts/ProxmoxVE/pull/15729))
- #### 🔧 Refactor
- tools.func: some improvements (sql injection / command injection / guard) [@MickLesk](https://github.com/MickLesk) ([#15661](https://github.com/community-scripts/ProxmoxVE/pull/15661))
## 2026-07-12
### 🆕 New Scripts
- AFFiNE ([#15690](https://github.com/community-scripts/ProxmoxVE/pull/15690))
### 🚀 Updated Scripts
- Immich: Bump version to 3.0.2 [@vhsdream](https://github.com/vhsdream) ([#15668](https://github.com/community-scripts/ProxmoxVE/pull/15668))
### ❔ Uncategorized
- fix(immich): correct Python indentation error in ct/immich.sh heredoc patch [@Copilot](https://github.com/Copilot) ([#15723](https://github.com/community-scripts/ProxmoxVE/pull/15723))
## 2026-07-11
### 🆕 New Scripts
- LocalAGI ([#15687](https://github.com/community-scripts/ProxmoxVE/pull/15687))
### 🚀 Updated Scripts
- fix(adventurelog): allow pnpm build scripts so install/update doesn't abort [@TowyTowy](https://github.com/TowyTowy) ([#15681](https://github.com/community-scripts/ProxmoxVE/pull/15681))
- #### 🐞 Bug Fixes
- fix(fileflows): install .NET 10 ASP.NET Core Runtime to match current release [@TowyTowy](https://github.com/TowyTowy) ([#15702](https://github.com/community-scripts/ProxmoxVE/pull/15702))
- Fix spacing on VLAN Input Box in haos-vm.sh [@pumrum](https://github.com/pumrum) ([#15696](https://github.com/community-scripts/ProxmoxVE/pull/15696))
### 💾 Core
- #### ✨ New Features
- [tools.func]: Add function to handle deployment via GitLab release tags [@tremor021](https://github.com/tremor021) ([#15641](https://github.com/community-scripts/ProxmoxVE/pull/15641))
## 2026-07-10
### 🆕 New Scripts
- Squid ([#15605](https://github.com/community-scripts/ProxmoxVE/pull/15605))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Adapt to new artifact filename format for pocket id [@wollew](https://github.com/wollew) ([#15689](https://github.com/community-scripts/ProxmoxVE/pull/15689))
- Fireshare: Fix for install and upgrade to v1.7.3 [@tremor021](https://github.com/tremor021) ([#15673](https://github.com/community-scripts/ProxmoxVE/pull/15673))
- Endurain: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15674](https://github.com/community-scripts/ProxmoxVE/pull/15674))
-1
View File
@@ -60,7 +60,6 @@ function update_script() {
$STD .venv/bin/python -m manage migrate $STD .venv/bin/python -m manage migrate
cd /opt/adventurelog/frontend cd /opt/adventurelog/frontend
grep -q "^dangerouslyAllowAllBuilds:" ./pnpm-workspace.yaml 2>/dev/null || echo "dangerouslyAllowAllBuilds: true" >>./pnpm-workspace.yaml
$STD pnpm i $STD pnpm i
$STD pnpm build $STD pnpm build
msg_ok "Updated AdventureLog" msg_ok "Updated AdventureLog"
+9 -1
View File
@@ -39,7 +39,15 @@ function update_script() {
/opt/ampache/public/play/.htaccess \ /opt/ampache/public/play/.htaccess \
/opt/ampache/advanced-config /opt/ampache/advanced-config
fetch_and_deploy_gh_release "Ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.4.zip" if ! dpkg -l 2>/dev/null | grep -q "libapache2-mod-php8.5"; then
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \
-e 's/post_max_size = .*/post_max_size = 100M/' \
-e 's/max_execution_time = .*/max_execution_time = 600/' \
-e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.5/apache2/php.ini
fi
fetch_and_deploy_gh_release "Ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.5.zip"
restore_backup restore_backup
chmod 664 /opt/ampache/public/rest/.htaccess /opt/ampache/public/play/.htaccess chmod 664 /opt/ampache/public/rest/.htaccess /opt/ampache/public/play/.htaccess
+4 -1
View File
@@ -45,9 +45,12 @@ function update_script() {
cd /opt/calibre-web cd /opt/calibre-web
$STD uv venv --clear /opt/calibre-web/.venv $STD uv venv --clear /opt/calibre-web/.venv
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
sed -i 's|^ExecStart=.*|ExecStart=/opt/calibre-web/.venv/bin/cps|' /etc/systemd/system/calibre-web.service
$STD systemctl daemon-reload
restore_backup restore_backup
msg_info "Starting Service" msg_info "Starting Service"
+63
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-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fleetdm/fleet
APP="Fleet"
var_tags="${var_tags:-monitoring;device-management;security}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
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/fleet/fleet ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "fleet" "fleetdm/fleet"; then
msg_info "Stopping Service"
systemctl stop fleet
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "fleet" "fleetdm/fleet" "prebuild" "latest" "/opt/fleet" "fleet_v*_linux.tar.gz"
chmod +x /opt/fleet/fleet
msg_info "Running Database Migrations"
set -a && source /opt/fleet/.env && set +a
$STD /opt/fleet/fleet prepare db --no-prompt
msg_ok "Ran Database Migrations"
msg_info "Starting Service"
systemctl start fleet
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 "${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${INFO}${YW} Admin Email:${CL} ${BGN}admin@fleet.local${CL}"
echo -e "${INFO}${YW} Admin Password:${CL} ${BGN}Check inside the container: cat /opt/fleet/.env${CL}"
+64
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-2026 community-scripts ORG
# Author: MickLesk (CanbiZ) | Co-Authors: yusing
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/yusing/godoxy
APP="GoDoxy"
var_tags="${var_tags:-reverse-proxy;webserver;network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
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/godoxy/godoxy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "godoxy" "yusing/godoxy"; then
msg_info "Stopping Service"
systemctl stop godoxy
msg_ok "Stopped Service"
create_backup \
/opt/godoxy/config \
/opt/godoxy/data \
/opt/godoxy/error_pages \
/etc/godoxy.env \
/etc/ssl/godoxy
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "godoxy" "yusing/godoxy" "singlefile" "latest" "/opt/godoxy" "godoxy-linux-$(arch_resolve)"
restore_backup
msg_info "Starting Service"
systemctl start godoxy
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 "${GATEWAY}${BGN}https://${IP}${CL}"
echo -e "${INFO}${YW}Login as admin; the generated password is stored in /etc/godoxy.env.${CL}"
+6
View File
@@ -0,0 +1,6 @@
________ __
/ ____/ /__ ___ / /_
/ /_ / / _ \/ _ \/ __/
/ __/ / / __/ __/ /_
/_/ /_/\___/\___/\__/
+6
View File
@@ -0,0 +1,6 @@
______ ____
/ ____/___ / __ \____ _ ____ __
/ / __/ __ \/ / / / __ \| |/_/ / / /
/ /_/ / /_/ / /_/ / /_/ /> </ /_/ /
\____/\____/_____/\____/_/|_|\__, /
/____/
-6
View File
@@ -1,6 +0,0 @@
__ __
/ /__ ___ ____/ /___ ____ ___
__ / / _ \/ _ \/ __ / __ \/ __ `__ \
/ /_/ / __/ __/ /_/ / /_/ / / / / / /
\____/\___/\___/\__,_/\____/_/ /_/ /_/
+6
View File
@@ -0,0 +1,6 @@
__ ___ __ __
/ |/ /_ ______ ___ / /_ / /__
/ /|_/ / / / / __ `__ \/ __ \/ / _ \
/ / / / /_/ / / / / / / /_/ / / __/
/_/ /_/\__,_/_/ /_/ /_/_.___/_/\___/
+6
View File
@@ -0,0 +1,6 @@
_ __ __
/ | / /__ _ __/ /_
/ |/ / _ \ | /| / / __/
/ /| / __/ |/ |/ / /_
/_/ |_/\___/|__/|__/\__/
-6
View File
@@ -1,6 +0,0 @@
_ __ ____ ____
/ | / /___ _________ / __ \/ __ )
/ |/ / __ \/ ___/ __ \/ / / / __ |
/ /| / /_/ / /__/ /_/ / /_/ / /_/ /
/_/ |_/\____/\___/\____/_____/_____/
+6
View File
@@ -0,0 +1,6 @@
__
____ / /_____ ____ ____ ____ _
/ __ \/ __/ __ \/ __ \/ __ \/ __ `/
/ / / / /_/ /_/ / /_/ / / / / /_/ /
/_/ /_/\__/\____/ .___/_/ /_/\__, /
/_/ /____/
+6
View File
@@ -0,0 +1,6 @@
____ __________ ____ _ __
/ __ \/ ___/ ___/ / __ )_____(_)___/ /___ ____
/ /_/ /\__ \\__ \______/ __ / ___/ / __ / __ `/ _ \
/ _, _/___/ /__/ /_____/ /_/ / / / / /_/ / /_/ / __/
/_/ |_|/____/____/ /_____/_/ /_/\__,_/\__, /\___/
/____/
+6
View File
@@ -0,0 +1,6 @@
_____
/ ___/___ _______ ___________
\__ \/ _ \/ ___/ / / / ___/ __ \
___/ / __/ /__/ /_/ / / / /_/ /
/____/\___/\___/\__,_/_/ \____/
-6
View File
@@ -1,6 +0,0 @@
_____ _ _
/ ___/ __(_)_______ (_)___
\__ \ | /| / / /_ /_ / / / __ \
___/ / |/ |/ / / / /_/ /_/ / / / /
/____/|__/|__/_/ /___/___/_/_/ /_/
+22 -1
View File
@@ -47,7 +47,7 @@ function update_script() {
msg_info "Updating Homepage (Patience)" msg_info "Updating Homepage (Patience)"
RELEASE=$(get_latest_github_release "gethomepage/homepage") RELEASE=$(get_latest_github_release "gethomepage/homepage")
cd /opt/homepage cd /opt/homepage
echo 'onlyBuiltDependencies=*' >> .npmrc echo 'onlyBuiltDependencies=*' >>.npmrc
$STD pnpm install $STD pnpm install
$STD pnpm update --no-save caniuse-lite $STD pnpm update --no-save caniuse-lite
export NEXT_PUBLIC_VERSION="v$RELEASE" export NEXT_PUBLIC_VERSION="v$RELEASE"
@@ -56,6 +56,27 @@ function update_script() {
export NEXT_TELEMETRY_DISABLED=1 export NEXT_TELEMETRY_DISABLED=1
$STD pnpm build $STD pnpm build
BACKUP_DIR=/opt/homepage-assets.backup restore_backup BACKUP_DIR=/opt/homepage-assets.backup restore_backup
if ! grep -q 'AUTH' /opt/homepage/.env; then
msg_info "Updating .env"
cp /opt/homepage/.env /opt/homepage/env.bak
cat <<EOF >>/opt/homepage/.env
## Optional Authentication
# HOMEPAGE_AUTH_ENABLED=true
# HOMEPAGE_AUTH_SECRET="$(openssl rand -base64 32)"
# HOMEPAGE_EXTERNAL_URL=<your-external-url>
## Uncomment below and use strong, unique password for password login
# HOMEPAGE_AUTH_PASSWORD=
## Uncomment and fill in below for OIDC login
# HOMEPAGE_OIDC_ISSUER=
# HOMEPAGE_OIDC_CLIENT_ID=
# HOMEPAGE_OIDC_CLIENT_SECRET=
# HOMEPAGE_OIDC_SCOPE=openid email profile
# HOMEPAGE_OIDC_NAME=
EOF
msg_ok "Updated .env"
rm /opt/homepage/env.bak
chmod 600 /opt/homepage/.env
fi
msg_ok "Updated Homepage" msg_ok "Updated Homepage"
msg_info "Starting service" msg_info "Starting service"
+8
View File
@@ -28,6 +28,14 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if grep -q '^ExecStop=/opt/keycloak/bin/kc.sh stop$' /etc/systemd/system/keycloak.service 2>/dev/null; then
msg_info "Correcting Service"
sed -i '/^ExecStop=\/opt\/keycloak\/bin\/kc.sh stop$/d' /etc/systemd/system/keycloak.service
systemctl daemon-reload
msg_ok "Corrected Service"
fi
if check_for_gh_release "keycloak_app" "keycloak/keycloak"; then if check_for_gh_release "keycloak_app" "keycloak/keycloak"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop keycloak systemctl stop keycloak
+1
View File
@@ -39,6 +39,7 @@ function update_script() {
cp /opt/kometa/config/config.yml /opt cp /opt/kometa/config/config.yml /opt
msg_ok "Backup completed" msg_ok "Backup completed"
ensure_dependencies git
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa" "tarball" fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa" "tarball"
+26 -16
View File
@@ -1,14 +1,14 @@
#!/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-2026 tteck # Copyright (c) 2021-2026 community-scripts ORG
# Author: tteck (tteckster) # Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.nocodb.com/ | Github: https://github.com/nocodb/nocodb # Source: https://www.mumble.info/
APP="NocoDB" APP="Mumble"
var_tags="${var_tags:-noCode}" var_tags="${var_tags:-voice;chat;gaming}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-512}"
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:-13}"
@@ -24,21 +24,31 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
#RELEASE="0.301.1"
if [[ ! -f /etc/systemd/system/nocodb.service ]]; then if [[ ! -f /etc/mumble/mumble-server.ini ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
#if check_for_gh_release "nocodb" "nocodb/nocodb" "${RELEASE}"; then
if check_for_gh_release "nocodb" "nocodb/nocodb"; then if check_for_gh_release "mumble" "mumble-voip/mumble"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop nocodb systemctl stop mumble-server
msg_ok "Stopped Service" msg_ok "Stopped Service"
fetch_and_deploy_gh_release "nocodb" "nocodb/nocodb" "singlefile" "latest" "/opt/nocodb/" "Noco-linux-$(arch_resolve "x64" "arm64")" create_backup /etc/mumble/mumble-server.ini /var/lib/mumble-server/mumble-server.sqlite
msg_info "Updating Mumble"
$STD apt update
$STD apt install -y mumble-server
cat <<EOF >~/.mumble
$(get_latest_github_release "mumble-voip/mumble")
EOF
msg_ok "Updated Mumble"
restore_backup
msg_info "Starting Service" msg_info "Starting Service"
systemctl start nocodb systemctl start mumble-server
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
@@ -49,7 +59,7 @@ start
build_container build_container
description description
msg_ok "Completed successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}" echo -e "${INFO}${YW}Connect using:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}" echo -e "${GATEWAY}${BGN}${IP}:64738${CL}"
+1
View File
@@ -51,6 +51,7 @@ function update_script() {
mkdir -p /opt/networkoptimizer/publish/tools mkdir -p /opt/networkoptimizer/publish/tools
cd /opt/networkoptimizer/src/uwnspeedtest cd /opt/networkoptimizer/src/uwnspeedtest
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $STD go build -trimpath -ldflags "-s -w" -o /opt/networkoptimizer/publish/tools/uwnspeedtest-linux-arm64 . CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $STD go build -trimpath -ldflags "-s -w" -o /opt/networkoptimizer/publish/tools/uwnspeedtest-linux-arm64 .
[[ "$(arch_resolve)" != "arm64" ]] && CGO_ENABLED=0 GOOS=linux GOARCH="$(arch_resolve)" $STD go build -trimpath -ldflags "-s -w" -o "/opt/networkoptimizer/publish/tools/uwnspeedtest-linux-$(arch_resolve)" .
msg_ok "Rebuilt NetworkOptimizer" msg_ok "Rebuilt NetworkOptimizer"
msg_info "Starting Service" msg_info "Starting Service"
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Arubinu
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fosrl/newt
APP="Newt"
var_tags="${var_tags:-network;tunnel}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/newt/newt.env ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "newt" "fosrl/newt"; then
msg_info "Stopping Service"
systemctl stop newt
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "newt" "fosrl/newt" "singlefile" "latest" "/opt/newt" "newt_linux_$(arch_resolve)"
ln -sf /opt/newt/newt /usr/local/bin/newt
msg_info "Starting Service"
systemctl start newt
msg_ok "Started Service"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${INFO}${YW} Check the site status in your Pangolin dashboard.${CL}"
+19 -13
View File
@@ -1,18 +1,18 @@
#!/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-2026 community-scripts ORG # Copyright (c) 2021-2026 community-scripts ORG
# Author: Mips2648 # Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://jeedom.com/ # Source: https://www.ntop.org/products/traffic-analysis/ntop/
APP="Jeedom" APP="ntopng"
var_tags="${var_tags:-automation;smarthome}" var_tags="${var_tags:-network;monitoring}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-16}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}" var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -25,15 +25,20 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /var/www/html/core/config/version ]]; then if [[ ! -f /etc/ntopng/ntopng.conf ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating OS" msg_info "Updating ntopng"
$STD apt update $STD apt update
$STD apt -y upgrade $STD apt install -y ntopng
msg_ok "OS updated, you can now update Jeedom from the Web UI." msg_ok "Updated ntopng"
msg_info "Restarting Service"
systemctl restart ntopng
msg_ok "Restarted Service"
msg_ok "Updated successfully!"
exit exit
} }
@@ -41,7 +46,8 @@ start
build_container build_container
description description
msg_ok "Completed successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}" echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}" echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Default login: admin / admin${CL}"
+3 -3
View File
@@ -29,15 +29,15 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE="2.3.0"
if check_for_gh_release "ownfoil" "a1ex4/ownfoil"; then if check_for_gh_release "ownfoil" "a1ex4/ownfoil" "${RELEASE}" "pinned until 2.4.0 (coming soon) is tested, possible Breaking Changes."; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop ownfoil systemctl stop ownfoil
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/ownfoil/app/config create_backup /opt/ownfoil/app/config
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "${RELEASE}"
restore_backup restore_backup
+5 -5
View File
@@ -165,7 +165,7 @@ function update_script() {
msg_info "Updating Paperless-ngx" msg_info "Updating Paperless-ngx"
if ((BRIDGE_UPDATE == 0)); then if ((BRIDGE_UPDATE == 0)); then
sed -i 's|^ExecStart=.*|ExecStart=uv run -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application"|' /etc/systemd/system/paperless-webserver.service sed -i 's|^ExecStart=.*|ExecStart=uv run --no-sync -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application"|' /etc/systemd/system/paperless-webserver.service
grep -q "document_index reindex" /etc/systemd/system/paperless-webserver.service || grep -q "document_index reindex" /etc/systemd/system/paperless-webserver.service ||
sed -i '/^ExecStart=/i ExecStartPre=uv run -- python manage.py document_index reindex --if-needed --no-progress-bar' /etc/systemd/system/paperless-webserver.service sed -i '/^ExecStart=/i ExecStartPre=uv run -- python manage.py document_index reindex --if-needed --no-progress-bar' /etc/systemd/system/paperless-webserver.service
$STD systemctl daemon-reload $STD systemctl daemon-reload
@@ -207,10 +207,10 @@ function update_script() {
msg_ok "Backup completed to $BACKUP_DIR" msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=( declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer" ["paperless-consumer.service"]="ExecStart=uv run --no-sync -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO" ["paperless-scheduler.service"]="ExecStart=uv run --no-sync -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO" ["paperless-task-queue.service"]="ExecStart=uv run --no-sync -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\"" ["paperless-webserver.service"]="ExecStart=uv run --no-sync -- granian --interface asgi --ws \"paperless.asgi:application\""
) )
for svc in "${!PATCHES[@]}"; do for svc in "${!PATCHES[@]}"; do
+10 -1
View File
@@ -9,7 +9,7 @@ APP="PatchMon"
var_tags="${var_tags:-monitoring}" var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-8}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}" var_arm64="${var_arm64:-yes}"
@@ -77,6 +77,15 @@ EOF
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "singlefile" "latest" "/opt/patchmon" "patchmon-server-linux-$(arch_resolve)" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "singlefile" "latest" "/opt/patchmon" "patchmon-server-linux-$(arch_resolve)"
mv /opt/patchmon/PatchMon /opt/patchmon/patchmon-server mv /opt/patchmon/PatchMon /opt/patchmon/patchmon-server
msg_info "Updating SCAP Content"
RELEASE=$(get_latest_github_release "ComplianceAsCode/content")
curl_with_retry "https://github.com/ComplianceAsCode/content/releases/download/v${RELEASE}/scap-security-guide-${RELEASE}.tar.gz" "/tmp/ssg.tar.gz"
mkdir -p /opt/patchmon/ssg-content
find /opt/patchmon/ssg-content -mindepth 1 -delete
tar -xzf /tmp/ssg.tar.gz -C /opt/patchmon/ssg-content --strip-components=1 --wildcards '*/ssg-*-ds.xml'
rm -f /tmp/ssg.tar.gz
msg_ok "Updated SCAP Content"
restore_backup restore_backup
msg_info "Fetching PatchMon agent binaries" msg_info "Fetching PatchMon agent binaries"
+1
View File
@@ -60,6 +60,7 @@ function update_script() {
msg_info "Updating Pelican Panel" msg_info "Updating Pelican Panel"
cp -a /opt/backup/.env /opt/pelican-panel/ cp -a /opt/backup/.env /opt/pelican-panel/
grep -q "^APP_URL=http://panel.test$" /opt/pelican-panel/.env && sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" /opt/pelican-panel/.env
$SQLITE_INSTALL && mv /opt/backup/*.sqlite /opt/pelican-panel/database/ $SQLITE_INSTALL && mv /opt/backup/*.sqlite /opt/pelican-panel/database/
cp -a /opt/backup/storage/app/public /opt/pelican-panel/storage/app/ cp -a /opt/backup/storage/app/public /opt/pelican-panel/storage/app/
+14 -3
View File
@@ -30,13 +30,26 @@ function update_script() {
exit exit
fi fi
if [[ -f /opt/poweradmin/powerdns.db ]]; then
msg_info "Moving PowerDNS database out of the web root"
systemctl stop pdns apache2
mkdir -p /var/lib/powerdns
mv /opt/poweradmin/powerdns.db /var/lib/powerdns/powerdns.db
sed -i 's#/opt/poweradmin/powerdns.db#/var/lib/powerdns/powerdns.db#' \
/etc/powerdns/pdns.d/gsqlite3.conf /opt/poweradmin/config/settings.php
chown pdns:pdns /var/lib/powerdns/powerdns.db
chmod 664 /var/lib/powerdns/powerdns.db
systemctl start pdns apache2
msg_ok "Moved PowerDNS database out of the web root"
fi
msg_info "Updating PowerDNS" msg_info "Updating PowerDNS"
$STD apt update $STD apt update
$STD apt install -y --only-upgrade pdns-server pdns-backend-sqlite3 $STD apt install -y --only-upgrade pdns-server pdns-backend-sqlite3
msg_ok "Updated PowerDNS" msg_ok "Updated PowerDNS"
if check_for_gh_release "poweradmin" "poweradmin/poweradmin"; then if check_for_gh_release "poweradmin" "poweradmin/poweradmin"; then
create_backup /opt/poweradmin/config/settings.php /opt/poweradmin/powerdns.db create_backup /opt/poweradmin/config/settings.php
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
@@ -46,8 +59,6 @@ function update_script() {
rm -rf /opt/poweradmin/install rm -rf /opt/poweradmin/install
chown -R www-data:pdns /opt/poweradmin chown -R www-data:pdns /opt/poweradmin
chmod 775 /opt/poweradmin chmod 775 /opt/poweradmin
chown pdns:pdns /opt/poweradmin/powerdns.db
chmod 664 /opt/poweradmin/powerdns.db
msg_ok "Updated Poweradmin" msg_ok "Updated Poweradmin"
msg_info "Restarting Services" msg_info "Restarting Services"
+27 -16
View File
@@ -28,27 +28,37 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
setup_mariadb
if [[ -f /opt/projectsend/includes/sys.config.php ]]; then
msg_error "This container runs ProjectSend Legacy (pre-2.0)."
msg_error "2.0 is a new application, not an update - there is no in-place upgrade."
msg_error "Set up a fresh ProjectSend container and use projectsend/v1-migration-tool to bring your data across."
exit
fi
if check_for_gh_release "projectsend" "projectsend/projectsend"; then if check_for_gh_release "projectsend" "projectsend/projectsend"; then
msg_info "Stopping Service" msg_info "Stopping Services"
systemctl stop apache2 systemctl stop nginx projectsend-worker
msg_ok "Stopped Service" msg_ok "Stopped Services"
php_ver=$(php -v | head -n 1 | awk '{print $2}') create_backup /opt/projectsend/.env /opt/projectsend/storage/app/files
if [[ ! $php_ver == "8.4"* ]]; then
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
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"
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 restore_backup
msg_info "Updating ProjectSend"
cd /opt/projectsend
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/storage /opt/projectsend/bootstrap/cache
$STD sudo -u www-data php artisan migrate --force
$STD sudo -u www-data php artisan projectsend:ensure-roles
$STD sudo -u www-data php artisan optimize:clear
msg_ok "Updated ProjectSend"
msg_info "Starting Service" msg_info "Starting Services"
systemctl start apache2 systemctl start nginx projectsend-worker
msg_ok "Started Service" msg_ok "Started Services"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit
@@ -61,4 +71,5 @@ description
msg_ok "Completed successfully!\n" msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}" echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}/install for the initial setup${CL}" echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW}Admin credentials saved to ~/projectsend.creds${CL}"
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://rss-bridge.org/
APP="RSS-Bridge"
var_tags="${var_tags:-rss;feed;bridge}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
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/rss-bridge ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "rss-bridge" "RSS-Bridge/rss-bridge"; then
create_backup /opt/rss-bridge/config.ini.php
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rss-bridge" "RSS-Bridge/rss-bridge" "tarball"
restore_backup
msg_info "Updating Application"
cd /opt/rss-bridge
$STD composer install --no-dev --optimize-autoloader
chown -R www-data:www-data /opt/rss-bridge
systemctl restart caddy
msg_ok "Updated Application"
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 "${GATEWAY}${BGN}http://${IP}${CL}"
+74
View File
@@ -0,0 +1,74 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/securo-finance/securo
APP="Securo"
var_tags="${var_tags:-finance;self-hosted}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-12}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
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/securo ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "securo" "securo-finance/securo"; then
msg_info "Stopping Services"
systemctl stop securo securo-worker securo-beat
msg_ok "Stopped Services"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "securo" "securo-finance/securo" "tarball"
msg_info "Updating Backend"
cd /opt/securo/backend
ln -sf /opt/securo_data/.env /opt/securo/backend/.env
$STD uv venv --python 3.12 /opt/securo/backend/.venv
$STD uv pip install --python /opt/securo/backend/.venv -e .
set -a
source /opt/securo_data/.env
set +a
$STD /opt/securo/backend/.venv/bin/alembic upgrade head
msg_ok "Updated Backend"
msg_info "Rebuilding Frontend"
cd /opt/securo/frontend
export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm install
$STD npm run build
msg_ok "Rebuilt Frontend"
msg_info "Starting Services"
systemctl start securo securo-worker securo-beat
systemctl reload nginx
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}https://${IP}${CL}"
+10 -2
View File
@@ -36,9 +36,18 @@ function update_script() {
if check_for_gh_release "shelfmark" "calibrain/shelfmark"; then if check_for_gh_release "shelfmark" "calibrain/shelfmark"; then
msg_info "Stopping Service(s)" msg_info "Stopping Service(s)"
systemctl stop shelfmark systemctl stop shelfmark
[[ -f /etc/systemd/system/chromium.service ]] && systemctl stop chromium
msg_ok "Stopped Service(s)" msg_ok "Stopped Service(s)"
if [[ $(sed -n '/_BYPASS=/s/[^=]*=//p' /etc/shelfmark/.env) == "true" ]] &&
[[ $(sed -n '/BYPASSER=/s/[^=]*=//p' /etc/shelfmark/.env) == "false" ]]; then
msg_info "Updating internal bypasser configuration"
systemctl disable -q --now chromium 2>/dev/null || true
rm -f /etc/systemd/system/chromium.service
systemctl daemon-reload
sed -i '/DOCKERMODE=/s/false/true/' /etc/shelfmark/.env
msg_ok "Updated internal bypasser configuration"
fi
[[ -f /etc/systemd/system/flaresolverr.service ]] && if check_for_gh_release "flaresolverr" "Flaresolverr/Flaresolverr"; then [[ -f /etc/systemd/system/flaresolverr.service ]] && if check_for_gh_release "flaresolverr" "Flaresolverr/Flaresolverr"; then
msg_info "Stopping FlareSolverr service" msg_info "Stopping FlareSolverr service"
systemctl stop flaresolverr systemctl stop flaresolverr
@@ -79,7 +88,6 @@ function update_script() {
msg_info "Starting Service(s)" msg_info "Starting Service(s)"
systemctl start shelfmark systemctl start shelfmark
[[ -f /etc/systemd/system/chromium.service ]] && systemctl start chromium
msg_ok "Started Service(s)" msg_ok "Started Service(s)"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
-44
View File
@@ -1,44 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: EEJoshua
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://swizzin.ltd/
APP="Swizzin"
var_tags="${var_tags:-seedbox}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if ! command -v sudo box >/dev/null 2>&1; then
msg_error "No ${APP} installation found!"
exit
fi
msg_info "Running 'sudo box update' inside the container"
$STD sudo box update
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}If installed panel, access through the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
+10
View File
@@ -35,6 +35,16 @@ function update_script() {
systemctl stop teslamate systemctl stop teslamate
msg_ok "Stopped Service" msg_ok "Stopped Service"
if [[ ! -d /opt/elixir ]]; then
msg_info "Migrating to newer Elixir (required by TeslaMate)"
$STD apt remove -y elixir
fetch_and_deploy_gh_release "elixir" "elixir-lang/elixir" "prebuild" "latest" "/opt/elixir" "elixir-otp-27.zip"
for bin in elixir elixirc iex mix; do
ln -sf "/opt/elixir/bin/$bin" "/usr/local/bin/$bin"
done
msg_ok "Migrated to newer Elixir"
fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "teslamate" "teslamate-org/teslamate" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "teslamate" "teslamate-org/teslamate" "tarball"
msg_info "Building TeslaMate (Patience)" msg_info "Building TeslaMate (Patience)"
+3 -4
View File
@@ -41,7 +41,6 @@ function update_script() {
if ! grep -qxF 'BODY_SIZE_LIMIT=Infinity' /opt/tracktor.env; then if ! grep -qxF 'BODY_SIZE_LIMIT=Infinity' /opt/tracktor.env; then
rm /opt/tracktor.env rm /opt/tracktor.env
cat <<EOF >/opt/tracktor.env cat <<EOF >/opt/tracktor.env
cat <<EOF >/opt/tracktor.env
NODE_ENV=production NODE_ENV=production
# Set this to the path of the database file. Default - ./tracktor.db # Set this to the path of the database file. Default - ./tracktor.db
DB_PATH=/opt/tracktor-data/tracktor.db DB_PATH=/opt/tracktor-data/tracktor.db
@@ -67,13 +66,13 @@ EOF
fi fi
msg_ok "Corrected Services" msg_ok "Corrected Services"
NODE_VERSION="24" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
msg_info "Updating tracktor" msg_info "Updating tracktor"
cd /opt/tracktor cd /opt/tracktor
$STD npm install $STD pnpm install --frozen-lockfile
$STD npm run build $STD pnpm run build
msg_ok "Updated tracktor" msg_ok "Updated tracktor"
msg_info "Starting Service" msg_info "Starting Service"
+14 -3
View File
@@ -35,7 +35,10 @@ function update_script() {
systemctl stop tubearchivist tubearchivist-celery tubearchivist-beat systemctl stop tubearchivist tubearchivist-celery tubearchivist-beat
msg_ok "Stopped Services" msg_ok "Stopped Services"
create_backup /opt/tubearchivist/.env create_backup \
/opt/tubearchivist/.env \
/opt/tubearchivist/cache \
/opt/tubearchivist/backend/run.sh
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tubearchivist" "tubearchivist/tubearchivist" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tubearchivist" "tubearchivist/tubearchivist" "tarball"
@@ -48,6 +51,8 @@ function update_script() {
mkdir -p /opt/tubearchivist/backend/static mkdir -p /opt/tubearchivist/backend/static
cp -r /opt/tubearchivist/frontend/dist/* /opt/tubearchivist/backend/static/ cp -r /opt/tubearchivist/frontend/dist/* /opt/tubearchivist/backend/static/
cp /opt/tubearchivist/docker_assets/backend_start.py /opt/tubearchivist/backend/ cp /opt/tubearchivist/docker_assets/backend_start.py /opt/tubearchivist/backend/
rm -rf /opt/tubearchivist/.venv
$STD uv venv /opt/tubearchivist/.venv --python 3.13
$STD uv pip install --python /opt/tubearchivist/.venv/bin/python -r /opt/tubearchivist/backend/requirements.txt $STD uv pip install --python /opt/tubearchivist/.venv/bin/python -r /opt/tubearchivist/backend/requirements.txt
if [[ -f /opt/tubearchivist/backend/requirements.plugins.txt ]]; then if [[ -f /opt/tubearchivist/backend/requirements.plugins.txt ]]; then
mkdir -p /opt/yt_plugins/bgutil mkdir -p /opt/yt_plugins/bgutil
@@ -59,8 +64,14 @@ function update_script() {
sed -i 's|^TA_APP_DIR=/opt/tubearchivist$|TA_APP_DIR=/opt/tubearchivist/backend|' /opt/tubearchivist/.env sed -i 's|^TA_APP_DIR=/opt/tubearchivist$|TA_APP_DIR=/opt/tubearchivist/backend|' /opt/tubearchivist/.env
sed -i 's|^TA_CACHE_DIR=/opt/tubearchivist/cache$|TA_CACHE_DIR=/cache|' /opt/tubearchivist/.env sed -i 's|^TA_CACHE_DIR=/opt/tubearchivist/cache$|TA_CACHE_DIR=/cache|' /opt/tubearchivist/.env
sed -i 's|^TA_MEDIA_DIR=/opt/tubearchivist/media$|TA_MEDIA_DIR=/youtube|' /opt/tubearchivist/.env sed -i 's|^TA_MEDIA_DIR=/opt/tubearchivist/media$|TA_MEDIA_DIR=/youtube|' /opt/tubearchivist/.env
ln -sf /opt/tubearchivist/cache /cache ln -sfn /opt/tubearchivist/cache /cache
ln -sf /opt/tubearchivist/media /youtube # /youtube may already be a user-managed Proxmox bind mount. Only create the symlink if nothing is there
if [[ ! -e /youtube ]]; then
mkdir -p /opt/tubearchivist/media
ln -sfn /opt/tubearchivist/media /youtube
elif ! mountpoint -q /youtube && [[ ! -L /youtube ]]; then
msg_error "/youtube exists but is neither a mount nor a symlink - check manually"
fi
ln -sf /opt/tubearchivist/.env /opt/tubearchivist/backend/.env ln -sf /opt/tubearchivist/.env /opt/tubearchivist/backend/.env
msg_ok "Restored Configuration" msg_ok "Restored Configuration"
+4 -1
View File
@@ -48,12 +48,15 @@ function update_script() {
chown -R www-data:www-data /opt/wallos chown -R www-data:www-data /opt/wallos
chmod -R 755 /opt/wallos chmod -R 755 /opt/wallos
mkdir -p /var/log/cron mkdir -p /var/log/cron
$STD curl http://localhost/endpoints/db/migrate.php
msg_ok "Configured Wallos" msg_ok "Configured Wallos"
msg_info "Reload Apache2" msg_info "Reload Apache2"
systemctl reload apache2 systemctl reload apache2
msg_ok "Apache2 Reloaded" msg_ok "Apache2 Reloaded"
msg_info "Running Database Migration"
$STD curl http://localhost/endpoints/db/migrate.php
msg_ok "Ran Database Migration"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
fi fi
exit exit
+37 -14
View File
@@ -25,7 +25,7 @@ function update_script() {
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/wanderer/source ]]; then if [[ ! -d /opt/wanderer/source && ! -d /opt/wanderer/db ]]; then
msg_error "No wanderer Installation Found!" msg_error "No wanderer Installation Found!"
exit exit
fi fi
@@ -35,11 +35,15 @@ function update_script() {
systemctl stop wanderer-web systemctl stop wanderer-web
rm -rf /opt/wanderer/source/search rm -rf /opt/wanderer/source/search
mkdir -p /opt/wanderer_data
[[ -d /opt/wanderer/data/meili_data ]] && cp -r /opt/wanderer/data/meili_data /opt/wanderer_data/
mkdir -p /opt/wanderer_data/meili_data
rm -rf /opt/wanderer/data/meili_data
MEILI_MASTER_KEY_VAL=$(grep -oP '^MEILI_MASTER_KEY=\K.*' /opt/wanderer/.env) MEILI_MASTER_KEY_VAL=$(grep -oP '^MEILI_MASTER_KEY=\K.*' /opt/wanderer/.env)
cat <<EOF >/etc/meilisearch.toml cat <<EOF >/etc/meilisearch.toml
env = "production" env = "production"
master_key = "$MEILI_MASTER_KEY_VAL" master_key = "$MEILI_MASTER_KEY_VAL"
db_path = "/opt/wanderer/data/meili_data" db_path = "/opt/wanderer_data/meili_data"
dump_dir = "/var/lib/meilisearch/dumps" dump_dir = "/var/lib/meilisearch/dumps"
snapshot_dir = "/var/lib/meilisearch/snapshots" snapshot_dir = "/var/lib/meilisearch/snapshots"
no_analytics = true no_analytics = true
@@ -72,11 +76,30 @@ EOF
setup_meilisearch setup_meilisearch
if [[ -f /opt/wanderer/start.sh ]]; then if [[ -f /opt/wanderer/start.sh || -d /opt/wanderer/source ]]; then
msg_info "Migrating wanderer services" msg_info "Migrating wanderer services"
systemctl stop wanderer-web systemctl stop wanderer-web
rm -f /opt/wanderer/start.sh rm -f /opt/wanderer/start.sh
rm -rf /opt/wanderer/source/search
mkdir -p /opt/wanderer_data
[[ -d /opt/wanderer/data/pb_data ]] && cp -r /opt/wanderer/data/pb_data /opt/wanderer_data/
[[ -d /opt/wanderer/data/plugins ]] && cp -r /opt/wanderer/data/plugins /opt/wanderer_data/
mkdir -p /opt/wanderer_data/{pb_data,plugins}
rm -rf /opt/wanderer/data
[[ -d /opt/wanderer/source ]] && cp -r /opt/wanderer/source/. /opt/wanderer/
rm -rf /opt/wanderer/source
if [[ -d /opt/wanderer/db/data ]]; then
[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
fi
sed -i \
-e "s|^PB_DB_LOCATION=.*|PB_DB_LOCATION=/opt/wanderer_data/pb_data|" \
-e "s|^MEILI_DB_PATH=.*|MEILI_DB_PATH=/opt/wanderer_data/meili_data|" \
/opt/wanderer/.env
sed -i "s|^db_path =.*|db_path = \"/opt/wanderer_data/meili_data\"|" /etc/meilisearch.toml
rm -f /usr/local/bin/wanderer-pb
cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service
[Unit] [Unit]
@@ -89,9 +112,9 @@ StartLimitBurst=5
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/wanderer/source/db WorkingDirectory=/opt/wanderer/db
EnvironmentFile=/opt/wanderer/.env EnvironmentFile=/opt/wanderer/.env
ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} ExecStart=/opt/wanderer/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION}
Restart=always Restart=always
RestartSec=1 RestartSec=1
@@ -109,7 +132,7 @@ StartLimitBurst=5
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/wanderer/source/web WorkingDirectory=/opt/wanderer/web
EnvironmentFile=/opt/wanderer/.env EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build ExecStart=/usr/bin/node build
Restart=always Restart=always
@@ -129,22 +152,22 @@ EOF
systemctl stop wanderer-web systemctl stop wanderer-web
msg_ok "Stopped service" msg_ok "Stopped service"
create_backup /opt/wanderer/source create_backup /opt/wanderer/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest"
restore_backup restore_backup
msg_info "Updating wanderer" msg_info "Updating wanderer"
cd /opt/wanderer/source/db cd /opt/wanderer/db
$STD go mod tidy $STD go mod tidy
$STD go build $STD go build
cd /opt/wanderer/source/web cd /opt/wanderer/web
$STD npm ci $STD npm ci
$STD npm run build $STD npm run build
mkdir -p /opt/wanderer/data/plugins /opt/wanderer/source/db/data mkdir -p /opt/wanderer_data/plugins /opt/wanderer/db/data
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins [[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
msg_info "Installing wanderer plugins" msg_info "Installing wanderer plugins"
for plugin in hammerhead komoot strava; do for plugin in hammerhead komoot strava; do
fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "${CHECK_UPDATE_RELEASE:-latest}" "/opt/wanderer/data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "${CHECK_UPDATE_RELEASE:-latest}" "/opt/wanderer_data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}"
done done
msg_ok "Installed wanderer plugins" msg_ok "Installed wanderer plugins"
msg_ok "Updated wanderer" msg_ok "Updated wanderer"
-1
View File
@@ -72,7 +72,6 @@ BODY_SIZE_LIMIT=Infinity
ORIGIN='http://$LOCAL_IP:3000' ORIGIN='http://$LOCAL_IP:3000'
EOF EOF
cd /opt/adventurelog/frontend cd /opt/adventurelog/frontend
grep -q "^dangerouslyAllowAllBuilds:" ./pnpm-workspace.yaml 2>/dev/null || echo "dangerouslyAllowAllBuilds: true" >>./pnpm-workspace.yaml
$STD pnpm i $STD pnpm i
$STD pnpm build $STD pnpm build
msg_ok "Installed AdventureLog" msg_ok "Installed AdventureLog"
+3 -3
View File
@@ -27,11 +27,11 @@ $STD apt install -y \
libvpx-dev libvpx-dev
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
setup_mariadb setup_mariadb
MARIADB_DB_USER="ampache" MARIADB_DB_NAME="ampache" setup_mariadb_db MARIADB_DB_USER="ampache" MARIADB_DB_NAME="ampache" setup_mariadb_db
fetch_and_deploy_gh_release "ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.4.zip" fetch_and_deploy_gh_release "ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.5.zip"
msg_info "Setting up Ampache" msg_info "Setting up Ampache"
rm -rf /var/www/html rm -rf /var/www/html
@@ -58,7 +58,7 @@ msg_info "Configuring PHP"
sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \ sed -i -e 's/upload_max_filesize = .*/upload_max_filesize = 100M/' \
-e 's/post_max_size = .*/post_max_size = 100M/' \ -e 's/post_max_size = .*/post_max_size = 100M/' \
-e 's/max_execution_time = .*/max_execution_time = 600/' \ -e 's/max_execution_time = .*/max_execution_time = 600/' \
-e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4/apache2/php.ini -e 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.5/apache2/php.ini
$STD a2enmod rewrite $STD a2enmod rewrite
$STD systemctl restart apache2 $STD systemctl restart apache2
msg_ok "Configured PHP" msg_ok "Configured PHP"
+2 -2
View File
@@ -39,7 +39,7 @@ msg_info "Installing Python Dependencies"
cd /opt/calibre-web cd /opt/calibre-web
$STD uv venv $STD uv venv
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir --upgrade pip setuptools wheel
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
msg_ok "Installed Python Dependencies" msg_ok "Installed Python Dependencies"
msg_info "Creating Service" msg_info "Creating Service"
@@ -54,7 +54,7 @@ Type=simple
User=root User=root
Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox" Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox"
WorkingDirectory=/opt/calibre-web WorkingDirectory=/opt/calibre-web
ExecStart=/opt/calibre-web/.venv/bin/python /opt/calibre-web/cps.py ExecStart=/opt/calibre-web/.venv/bin/cps
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
+93
View File
@@ -0,0 +1,93 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fleetdm/fleet
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 redis-server mysql-server
msg_ok "Installed Dependencies"
MYSQL_DB_NAME="fleet" MYSQL_DB_USER="fleet" setup_mysql_db
fetch_and_deploy_gh_release "fleet" "fleetdm/fleet" "prebuild" "latest" "/opt/fleet" "fleet_v*_linux.tar.gz"
msg_info "Configuring Application"
chmod +x /opt/fleet/fleet
PRIVATE_KEY=$(openssl rand -hex 32)
cat <<EOF >/opt/fleet/.env
FLEET_MYSQL_ADDRESS=127.0.0.1:3306
FLEET_MYSQL_DATABASE=fleet
FLEET_MYSQL_USERNAME=fleet
FLEET_MYSQL_PASSWORD=${MYSQL_DB_PASS}
FLEET_SERVER_ADDRESS=0.0.0.0:8080
FLEET_SERVER_TLS=false
FLEET_SERVER_PRIVATE_KEY=${PRIVATE_KEY}
FLEET_REDIS_ADDRESS=127.0.0.1:6379
FLEET_LOGGING_JSON=true
EOF
msg_ok "Configured Application"
msg_info "Running Database Migrations"
set -a && source /opt/fleet/.env && set +a
$STD /opt/fleet/fleet prepare db --no-prompt
msg_ok "Ran Database Migrations"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/fleet.service
[Unit]
Description=Fleet
After=network.target mysql.service redis-server.service
Requires=mysql.service redis-server.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/fleet
EnvironmentFile=/opt/fleet/.env
ExecStart=/opt/fleet/fleet serve
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now fleet redis-server
msg_ok "Created Service"
msg_info "Initializing Fleet"
FLEET_ADMIN_EMAIL="admin@fleet.local"
FLEET_ADMIN_PASS="$(openssl rand -hex 8)1!"
ELAPSED=0
until curl -sf "http://127.0.0.1:8080/healthz" >/dev/null 2>&1; do
sleep 2
ELAPSED=$((ELAPSED + 2))
[[ $ELAPSED -ge 60 ]] && break
done
SETUP_RESPONSE=$(curl -s -X POST "http://127.0.0.1:8080/api/v1/setup" \
-H "Content-Type: application/json" \
-d "{\"admin\":{\"admin\":true,\"email\":\"${FLEET_ADMIN_EMAIL}\",\"name\":\"Admin\",\"password\":\"${FLEET_ADMIN_PASS}\"},\"org_info\":{\"org_name\":\"Fleet\",\"org_logo_url\":\"\"},\"server_url\":\"http://127.0.0.1:8080\"}")
FLEET_TOKEN=$(echo "${SETUP_RESPONSE}" | grep -o '"token":"[^"]*"' | cut -d'"' -f4) || true
if [[ -n "${FLEET_TOKEN}" ]]; then
curl -s -X PATCH "http://127.0.0.1:8080/api/latest/fleet/config" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${FLEET_TOKEN}" \
-d "{\"server_settings\":{\"server_url\":\"http://${LOCAL_IP}:8080\"}}" >/dev/null
fi
cat <<EOF >>/opt/fleet/.env
FLEET_ADMIN_EMAIL=${FLEET_ADMIN_EMAIL}
FLEET_ADMIN_PASSWORD=${FLEET_ADMIN_PASS}
EOF
msg_ok "Initialized Fleet"
motd_ssh
customize
cleanup_lxc
+88
View File
@@ -0,0 +1,88 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# Co-Authors: yusing
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/yusing/godoxy
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "godoxy" "yusing/godoxy" "singlefile" "latest" "/opt/godoxy" "godoxy-linux-$(arch_resolve)"
msg_info "Generating Self-Signed Certificate"
create_self_signed_cert "godoxy"
msg_ok "Generated Self-Signed Certificate"
msg_info "Configuring GoDoxy"
mkdir -p \
/opt/godoxy/config/middlewares \
/opt/godoxy/data \
/opt/godoxy/error_pages
cat <<EOF >/opt/godoxy/config/config.yml
autocert:
provider: local
cert_path: /etc/ssl/godoxy/godoxy.crt
key_path: /etc/ssl/godoxy/godoxy.key
providers:
include:
- routes.yml
webui:
aliases:
- "${LOCAL_IP}"
EOF
cat <<'EOF' >/opt/godoxy/config/routes.yml
{}
EOF
cat <<EOF >/etc/godoxy.env
GODOXY_API_USER="admin"
GODOXY_API_PASSWORD="$(openssl rand -hex 16)"
GODOXY_API_JWT_SECRET="$(openssl rand -base64 32)"
EOF
chmod 600 /etc/godoxy.env
msg_ok "Configured GoDoxy"
msg_info "Creating Service"
cat <<'EOF' >/etc/systemd/system/godoxy.service
[Unit]
Description=GoDoxy Reverse Proxy
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/godoxy
EnvironmentFile=/etc/godoxy.env
ExecStart=/opt/godoxy/godoxy
Restart=on-failure
RestartSec=5
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
ReadWritePaths=/opt/godoxy /etc/ssl/godoxy
UMask=0077
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now godoxy
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+17 -2
View File
@@ -25,14 +25,29 @@ msg_info "Installing Homepage (Patience)"
mkdir -p /opt/homepage/config mkdir -p /opt/homepage/config
cd /opt/homepage cd /opt/homepage
cp /opt/homepage/src/skeleton/* /opt/homepage/config cp /opt/homepage/src/skeleton/* /opt/homepage/config
echo 'onlyBuiltDependencies=*' >> .npmrc echo 'onlyBuiltDependencies=*' >>.npmrc
$STD pnpm install $STD pnpm install
export NEXT_PUBLIC_VERSION="v$RELEASE" export NEXT_PUBLIC_VERSION="v$RELEASE"
export NEXT_PUBLIC_REVISION="source" export NEXT_PUBLIC_REVISION="source"
export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at') export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
export NEXT_TELEMETRY_DISABLED=1 export NEXT_TELEMETRY_DISABLED=1
$STD pnpm build $STD pnpm build
echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env cat <<EOF >/opt/homepage/.env
HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000
## Optional Authentication
# HOMEPAGE_AUTH_ENABLED=true
# HOMEPAGE_AUTH_SECRET="$(openssl rand -base64 32)"
# HOMEPAGE_EXTERNAL_URL=<your-external-url>
## Uncomment below and use strong, unique password for password login
# HOMEPAGE_AUTH_PASSWORD=
## Uncomment and fill in below for OIDC login
# HOMEPAGE_OIDC_ISSUER=
# HOMEPAGE_OIDC_CLIENT_ID=
# HOMEPAGE_OIDC_CLIENT_SECRET=
# HOMEPAGE_OIDC_SCOPE=openid email profile
# HOMEPAGE_OIDC_NAME=
EOF
chmod 600 /opt/homepage/.env
msg_ok "Installed Homepage" msg_ok "Installed Homepage"
msg_info "Creating Service" msg_info "Creating Service"
-102
View File
@@ -1,102 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Mips2648
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://jeedom.com/
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 \
lsb-release \
git
msg_ok "Dependencies installed"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://github.com/jeedom/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/jeedom/core/master/install/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
DEFAULT_BRANCH="master"
REPO_URL="https://github.com/jeedom/core.git"
echo
while true; do
read -rp "${TAB3}Enter branch to use (master, beta, alpha...) (Default: ${DEFAULT_BRANCH}): " BRANCH
BRANCH="${BRANCH:-$DEFAULT_BRANCH}"
if git ls-remote --heads "$REPO_URL" "refs/heads/$BRANCH" | grep -q .; then
break
else
msg_error "Branch '$BRANCH' does not exist on remote. Please try again."
fi
done
msg_info "Downloading Jeedom installation script"
cd /tmp
wget -q https://raw.githubusercontent.com/jeedom/core/"${BRANCH}"/install/install.sh
chmod +x install.sh
msg_ok "Installation script downloaded"
msg_info "Install Jeedom main dependencies, please wait"
$STD ./install.sh -v "$BRANCH" -s 2
msg_ok "Installed Jeedom main dependencies"
msg_info "Install Database"
$STD ./install.sh -v "$BRANCH" -s 3
msg_ok "Database installed"
msg_info "Install Apache"
$STD ./install.sh -v "$BRANCH" -s 4
msg_ok "Apache installed"
msg_info "Install PHP and dependencies"
$STD ./install.sh -v "$BRANCH" -s 5
msg_ok "PHP installed"
msg_info "Download Jeedom core"
$STD ./install.sh -v "$BRANCH" -s 6
msg_ok "Download done"
msg_info "Database customisation"
$STD ./install.sh -v "$BRANCH" -s 7
msg_ok "Database customisation done"
msg_info "Jeedom customisation"
$STD ./install.sh -v "$BRANCH" -s 8
msg_ok "Jeedom customisation done"
msg_info "Configuring Jeedom"
$STD ./install.sh -v "$BRANCH" -s 9
msg_ok "Jeedom configured"
msg_info "Installing Jeedom"
$STD ./install.sh -v "$BRANCH" -s 10
msg_ok "Jeedom installed"
msg_info "Post installation"
$STD ./install.sh -v "$BRANCH" -s 11
msg_ok "Post installation done"
msg_info "Check installation"
$STD ./install.sh -v "$BRANCH" -s 12
msg_ok "Installation checked, everything is successfuly installed. A reboot is recommended."
motd_ssh
customize
rm -rf /tmp/install.sh
cleanup_lxc
-1
View File
@@ -39,7 +39,6 @@ Type=idle
User=root User=root
WorkingDirectory=/opt/keycloak WorkingDirectory=/opt/keycloak
ExecStart=/opt/keycloak/bin/kc.sh start ExecStart=/opt/keycloak/bin/kc.sh start
ExecStop=/opt/keycloak/bin/kc.sh stop
Restart=always Restart=always
RestartSec=3 RestartSec=3
Environment="JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-$(arch_resolve)" Environment="JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-$(arch_resolve)"
+4
View File
@@ -13,6 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt install -y git
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv PYTHON_VERSION="3.13" setup_uv
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa" "tarball" fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa" "tarball"
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.mumble.info/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Mumble"
$STD apt install -y mumble-server
cat <<EOF >~/.mumble
$(get_latest_github_release "mumble-voip/mumble")
EOF
msg_ok "Installed Mumble"
msg_info "Configuring Mumble"
mkdir -p /var/lib/mumble-server
cat <<EOF >/etc/mumble/mumble-server.ini
database=/var/lib/mumble-server/mumble-server.sqlite
sqlite_wal=2
port=64738
users=100
bandwidth=558000
allowping=true
obfuscate=true
ice="tcp -h 127.0.0.1 -p 6502"
icesecretwrite=$(tr -d '-' </proc/sys/kernel/random/uuid)
EOF
chown -R mumble-server:mumble-server /var/lib/mumble-server
chown root:mumble-server /etc/mumble/mumble-server.ini
chmod 640 /etc/mumble/mumble-server.ini
msg_ok "Configured Mumble"
msg_info "Setting SuperUser Password"
MUMBLE_PASSWORD=$(tr -d '-' </proc/sys/kernel/random/uuid)
mumble-server -ini /etc/mumble/mumble-server.ini -supw "$MUMBLE_PASSWORD"
chown -R mumble-server:mumble-server /var/lib/mumble-server
msg_ok "Set SuperUser password: ${MUMBLE_PASSWORD}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mumble-server.service
[Unit]
Description=Mumble Server
After=network.target
[Service]
Type=simple
User=mumble-server
Group=mumble-server
ExecStart=/usr/bin/mumble-server -ini /etc/mumble/mumble-server.ini -fg
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now mumble-server
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+3 -2
View File
@@ -42,11 +42,12 @@ $STD dotnet publish src/NetworkOptimizer.Web -c Release -r "$RID" --self-contain
chmod +x /opt/networkoptimizer/publish/NetworkOptimizer.Web chmod +x /opt/networkoptimizer/publish/NetworkOptimizer.Web
msg_ok "Built NetworkOptimizer" msg_ok "Built NetworkOptimizer"
msg_info "Building Gateway Speed Test Binary" msg_info "Building Speed Test Binaries"
mkdir -p /opt/networkoptimizer/publish/tools mkdir -p /opt/networkoptimizer/publish/tools
cd /opt/networkoptimizer/src/uwnspeedtest cd /opt/networkoptimizer/src/uwnspeedtest
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $STD go build -trimpath -ldflags "-s -w" -o /opt/networkoptimizer/publish/tools/uwnspeedtest-linux-arm64 . CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $STD go build -trimpath -ldflags "-s -w" -o /opt/networkoptimizer/publish/tools/uwnspeedtest-linux-arm64 .
msg_ok "Built Gateway Speed Test Binary" [[ "$(arch_resolve)" != "arm64" ]] && CGO_ENABLED=0 GOOS=linux GOARCH="$(arch_resolve)" $STD go build -trimpath -ldflags "-s -w" -o "/opt/networkoptimizer/publish/tools/uwnspeedtest-linux-$(arch_resolve)" .
msg_ok "Built Speed Test Binaries"
msg_info "Configuring NetworkOptimizer" msg_info "Configuring NetworkOptimizer"
cat <<EOF >/opt/networkoptimizer/networkoptimizer.env cat <<EOF >/opt/networkoptimizer/networkoptimizer.env
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Arubinu
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/fosrl/newt
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "newt" "fosrl/newt" "singlefile" "latest" "/opt/newt" "newt_linux_$(arch_resolve)"
ln -sf /opt/newt/newt /usr/local/bin/newt
if [[ -z "${NEWT_ID:-}" ]]; then
read -rp "Newt ID (from your Pangolin dashboard): " NEWT_ID
fi
if [[ -z "${NEWT_SECRET:-}" ]]; then
read -rsp "Newt Secret: " NEWT_SECRET
echo
fi
if [[ -z "${PANGOLIN_ENDPOINT:-}" ]]; then
read -rp "Pangolin endpoint (e.g. https://pangolin.example.com): " PANGOLIN_ENDPOINT
fi
if [[ -z "$NEWT_ID" || -z "$NEWT_SECRET" || -z "$PANGOLIN_ENDPOINT" ]]; then
msg_error "Newt ID, Secret and Endpoint are all required. Aborting."
exit 1
fi
msg_info "Configuring Newt"
mkdir -p /etc/newt
cat <<EOF >/etc/newt/newt.env
NEWT_ID=${NEWT_ID}
NEWT_SECRET=${NEWT_SECRET}
PANGOLIN_ENDPOINT=${PANGOLIN_ENDPOINT}
EOF
chmod 600 /etc/newt/newt.env
msg_ok "Configured Newt"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/newt.service
[Unit]
Description=Newt (Pangolin tunnel client)
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
EnvironmentFile=/etc/newt/newt.env
ExecStart=/usr/local/bin/newt
Restart=always
RestartSec=2
UMask=0077
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now newt
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.nocodb.com/ | Github: https://github.com/nocodb/nocodb
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "nocodb" "nocodb/nocodb" "singlefile" "latest" "/opt/nocodb/" "Noco-linux-$(arch_resolve "x64" "arm64")"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/nocodb.service
[Unit]
Description=nocodb
[Service]
Type=simple
Restart=always
User=root
WorkingDirectory=/opt/nocodb
ExecStart=/opt/nocodb/./nocodb
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now nocodb
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.ntop.org/products/traffic-analysis/ntop/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_from_url "https://packages.ntop.org/apt-stable/$(get_os_info codename)/all/apt-ntop-stable.deb" ""
msg_info "Installing ntopng"
$STD apt update
$STD apt install -y ntopng
msg_ok "Installed ntopng"
msg_info "Configuring ntopng"
cat <<EOF >/etc/ntopng/ntopng.conf
-i=$(ip -4 route | awk '/default/ {print $5; exit}')
-w=3000
-d=/var/lib/ntopng
--community
EOF
systemctl restart ntopng
msg_ok "Configured ntopng"
motd_ssh
customize
cleanup_lxc
+1 -1
View File
@@ -18,7 +18,7 @@ $STD apt install -y git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_uv setup_uv
fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" "2.3.0"
msg_info "Setting up Ownfoil" msg_info "Setting up Ownfoil"
cd /opt/ownfoil cd /opt/ownfoil
+4 -4
View File
@@ -108,7 +108,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStart=uv run -- celery --app paperless beat --loglevel INFO ExecStart=uv run --no-sync -- celery --app paperless beat --loglevel INFO
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -122,7 +122,7 @@ After=postgresql.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStart=uv run -- celery --app paperless worker --loglevel INFO ExecStart=uv run --no-sync -- celery --app paperless worker --loglevel INFO
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -136,7 +136,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
ExecStartPre=/bin/sleep 2 ExecStartPre=/bin/sleep 2
ExecStart=uv run -- python manage.py document_consumer ExecStart=uv run --no-sync -- python manage.py document_consumer
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
@@ -152,7 +152,7 @@ Requires=redis.service
[Service] [Service]
WorkingDirectory=/opt/paperless/src WorkingDirectory=/opt/paperless/src
#ExecStartPre=uv run -- python manage.py document_index reindex --if-needed --no-progress-bar #ExecStartPre=uv run -- python manage.py document_index reindex --if-needed --no-progress-bar
ExecStart=uv run -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application" ExecStart=uv run --no-sync -- granian --interface asginl --ws --loop uvloop "paperless.asgi:application"
Environment=GRANIAN_HOST=:: Environment=GRANIAN_HOST=::
Environment=GRANIAN_PORT=8000 Environment=GRANIAN_PORT=8000
Environment=GRANIAN_WORKERS=1 Environment=GRANIAN_WORKERS=1
+9
View File
@@ -60,6 +60,7 @@ REDIS_PORT=6379
# OIDC_ENFORCE_HTTPS=true # OIDC_ENFORCE_HTTPS=true
AGENT_BINARIES_DIR=/opt/patchmon/agents AGENT_BINARIES_DIR=/opt/patchmon/agents
SSG_CONTENT_DIR=/opt/patchmon/ssg-content
EOF EOF
msg_ok "Configured PatchMon" msg_ok "Configured PatchMon"
@@ -85,6 +86,14 @@ for arch in "${AGENT_NAME[@]}"; do
done done
msg_ok "Fetched PatchMon agent binaries" msg_ok "Fetched PatchMon agent binaries"
msg_info "Fetching SCAP Content"
RELEASE=$(get_latest_github_release "ComplianceAsCode/content")
curl_with_retry "https://github.com/ComplianceAsCode/content/releases/download/v${RELEASE}/scap-security-guide-${RELEASE}.tar.gz" "/tmp/ssg.tar.gz"
mkdir -p /opt/patchmon/ssg-content
tar -xzf /tmp/ssg.tar.gz -C /opt/patchmon/ssg-content --strip-components=1 --wildcards '*/ssg-*-ds.xml'
rm -f /tmp/ssg.tar.gz
msg_ok "Fetched SCAP Content"
msg_info "Creating service" msg_info "Creating service"
cat <<EOF >/etc/systemd/system/patchmon-server.service cat <<EOF >/etc/systemd/system/patchmon-server.service
[Unit] [Unit]
+1
View File
@@ -27,6 +27,7 @@ msg_info "Installing Pelican Panel"
cd /opt/pelican-panel cd /opt/pelican-panel
$STD composer install --no-dev --optimize-autoloader --no-interaction $STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan p:environment:setup $STD php artisan p:environment:setup
sed -i "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" /opt/pelican-panel/.env
echo "yes" | $STD php artisan p:environment:database --driver mariadb --host localhost --port 3306 --database "$MARIADB_DB_NAME" --username "$MARIADB_DB_USER" --password "$MARIADB_DB_PASS" echo "yes" | $STD php artisan p:environment:database --driver mariadb --host localhost --port 3306 --database "$MARIADB_DB_NAME" --username "$MARIADB_DB_USER" --password "$MARIADB_DB_PASS"
$STD php artisan p:environment:queue-service --no-interaction $STD php artisan p:environment:queue-service --no-interaction
echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data - echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
+8 -7
View File
@@ -40,24 +40,25 @@ $STD apt install -y \
pdns-backend-sqlite3 pdns-backend-sqlite3
sed -i 's/^launch=$/# launch=/' /etc/powerdns/pdns.conf sed -i 's/^launch=$/# launch=/' /etc/powerdns/pdns.conf
rm -f /etc/powerdns/pdns.d/bind.conf rm -f /etc/powerdns/pdns.d/bind.conf
mkdir -p /var/lib/powerdns
cat <<EOF >/etc/powerdns/pdns.d/gsqlite3.conf cat <<EOF >/etc/powerdns/pdns.d/gsqlite3.conf
launch=gsqlite3 launch=gsqlite3
gsqlite3-database=/opt/poweradmin/powerdns.db gsqlite3-database=/var/lib/powerdns/powerdns.db
EOF EOF
msg_ok "Setup PowerDNS" msg_ok "Setup PowerDNS"
fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball" fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
msg_info "Setting up Poweradmin" msg_info "Setting up Poweradmin"
sqlite3 /opt/poweradmin/powerdns.db </opt/poweradmin/sql/poweradmin-sqlite-db-structure.sql sqlite3 /var/lib/powerdns/powerdns.db </opt/poweradmin/sql/poweradmin-sqlite-db-structure.sql
sqlite3 /opt/poweradmin/powerdns.db </opt/poweradmin/sql/pdns/49/schema.sqlite3.sql sqlite3 /var/lib/powerdns/powerdns.db </opt/poweradmin/sql/pdns/49/schema.sqlite3.sql
PA_ADMIN_USERNAME="admin" PA_ADMIN_USERNAME="admin"
PA_ADMIN_EMAIL="admin@example.com" PA_ADMIN_EMAIL="admin@example.com"
PA_ADMIN_FULLNAME="Administrator" PA_ADMIN_FULLNAME="Administrator"
PA_ADMIN_PASSWORD=$(openssl rand -base64 16 | tr -d "=+/" | cut -c1-16) PA_ADMIN_PASSWORD=$(openssl rand -base64 16 | tr -d "=+/" | cut -c1-16)
PA_SESSION_KEY=$(openssl rand -base64 75 | tr -dc 'A-Za-z0-9^@#!(){}[]%_\-+=~' | head -c 50) PA_SESSION_KEY=$(openssl rand -base64 75 | tr -dc 'A-Za-z0-9^@#!(){}[]%_\-+=~' | head -c 50)
PASSWORD_HASH=$(php -r "echo password_hash(\$argv[1], PASSWORD_DEFAULT);" -- "${PA_ADMIN_PASSWORD}" 2>/dev/null) PASSWORD_HASH=$(php -r "echo password_hash(\$argv[1], PASSWORD_DEFAULT);" -- "${PA_ADMIN_PASSWORD}" 2>/dev/null)
sqlite3 /opt/poweradmin/powerdns.db "INSERT INTO users (username, password, fullname, email, description, perm_templ, active, use_ldap) \ sqlite3 /var/lib/powerdns/powerdns.db "INSERT INTO users (username, password, fullname, email, description, perm_templ, active, use_ldap) \
VALUES ('$(escape_sql "${PA_ADMIN_USERNAME}")', '$(escape_sql "${PASSWORD_HASH}")', '$(escape_sql "${PA_ADMIN_FULLNAME}")', \ VALUES ('$(escape_sql "${PA_ADMIN_USERNAME}")', '$(escape_sql "${PASSWORD_HASH}")', '$(escape_sql "${PA_ADMIN_FULLNAME}")', \
'$(escape_sql "${PA_ADMIN_EMAIL}")', 'System Administrator', 1, 1, 0);" '$(escape_sql "${PA_ADMIN_EMAIL}")', 'System Administrator', 1, 1, 0);"
@@ -81,7 +82,7 @@ return [
*/ */
'database' => [ 'database' => [
'type' => 'sqlite', 'type' => 'sqlite',
'file' => '/opt/poweradmin/powerdns.db', 'file' => '/var/lib/powerdns/powerdns.db',
], ],
/** /**
@@ -133,8 +134,8 @@ EOF
$STD a2enmod rewrite headers $STD a2enmod rewrite headers
chown -R www-data:pdns /opt/poweradmin chown -R www-data:pdns /opt/poweradmin
chmod 775 /opt/poweradmin chmod 775 /opt/poweradmin
chown pdns:pdns /opt/poweradmin/powerdns.db chown pdns:pdns /var/lib/powerdns/powerdns.db
chmod 664 /opt/poweradmin/powerdns.db chmod 664 /var/lib/powerdns/powerdns.db
usermod -aG pdns www-data usermod -aG pdns www-data
$STD systemctl restart pdns apache2 $STD systemctl restart pdns apache2
msg_ok "Created Service" msg_ok "Created Service"
+94 -34
View File
@@ -13,46 +13,106 @@ setting_up_container
network_check network_check
update_os update_os
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php msg_info "Installing Dependencies"
setup_mariadb $STD apt install -y nginx
MARIADB_DB_NAME="projectsend" MARIADB_DB_USER="projectsend" setup_mariadb_db msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
msg_info "Installing ProjectSend" PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="ldap,pcntl" setup_php
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php setup_mariadb
MARIADB_DB_NAME="projectsend"
MARIADB_DB_USER="projectsend"
setup_mariadb_db
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-*.zip"
msg_info "Configuring ProjectSend"
cd /opt/projectsend
cp .env.example .env
ADMIN_EMAIL="admin@example.com"
ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
sed -i \
-e "s|^APP_ENV=.*|APP_ENV=production|" \
-e "s|^APP_DEBUG=.*|APP_DEBUG=false|" \
-e "s|^APP_URL=.*|APP_URL=http://${LOCAL_IP}|" \
-e "s|^DB_HOST=.*|DB_HOST=localhost|" \
-e "s|^DB_DATABASE=.*|DB_DATABASE=${MARIADB_DB_NAME}|" \
-e "s|^DB_USERNAME=.*|DB_USERNAME=${MARIADB_DB_USER}|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=${MARIADB_DB_PASS}|" \
-e "s|^SESSION_DRIVER=.*|SESSION_DRIVER=database|" \
-e "s|^CACHE_STORE=.*|CACHE_STORE=database|" \
-e "s|^QUEUE_CONNECTION=.*|QUEUE_CONNECTION=database|" \
.env
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/storage /opt/projectsend/bootstrap/cache
chmod 644 /opt/projectsend/includes/sys.config.php $STD sudo -u www-data php artisan key:generate --force --no-interaction
sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \ $STD sudo -u www-data php artisan migrate --force
-e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \ $STD sudo -u www-data php artisan storage:link --force
-e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \ $STD sudo -u www-data php artisan projectsend:ensure-roles
/opt/projectsend/includes/sys.config.php $STD sudo -u www-data php artisan projectsend:admin --if-none \
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \ --name="Administrator" \
-e "s/^\(post_max_size = \).*/\1 256M/" \ --email="${ADMIN_EMAIL}" \
-e "s/^\(upload_max_filesize = \).*/\1 256M/" \ --password="${ADMIN_PASSWORD}"
-e "s/^\(max_execution_time = \).*/\1 300/" \ cat <<EOF >~/projectsend.creds
/etc/php/8.4/apache2/php.ini ProjectSend Credentials
msg_ok "Installed projectsend" Admin Email: ${ADMIN_EMAIL}
Admin Password: ${ADMIN_PASSWORD}
EOF
msg_ok "Configured ProjectSend"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/projectsend.conf PHP_SOCK=$(get_php_fpm_socket)
<VirtualHost *:80> cat <<EOF >/etc/nginx/sites-available/projectsend.conf
ServerName projectsend server {
DocumentRoot /opt/projectsend listen 80 default_server;
<Directory /opt/projectsend> server_name _;
Options FollowSymLinks root /opt/projectsend/public;
AllowOverride All index index.php;
Require all granted
</Directory>
ErrorLog /var/log/apache2/projectsend_error.log client_max_body_size 100m;
CustomLog /var/log/apache2/projectsend_access.log combined
</VirtualHost> location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location /protected-files/ {
internal;
alias /opt/projectsend/storage/app/files/;
}
location ~ \.php\$ {
try_files \$uri =404;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
}
location ~ /\.(?!well-known) {
deny all;
}
}
EOF EOF
$STD a2ensite projectsend nginx_enable_site projectsend.conf
$STD a2enmod rewrite
$STD a2dissite 000-default.conf cat <<EOF >/etc/systemd/system/projectsend-worker.service
$STD systemctl reload apache2 [Unit]
Description=ProjectSend queue worker
After=network.target mariadb.service
[Service]
User=www-data
Group=www-data
Restart=always
WorkingDirectory=/opt/projectsend
ExecStart=/usr/bin/php artisan queue:work --tries=3 --backoff=3
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now projectsend-worker
echo "* * * * * cd /opt/projectsend && php artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh
+3 -2
View File
@@ -136,8 +136,6 @@ else
fi fi
fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball"
fetch_and_deploy_gh_release "ruffle" "ruffle-rs/ruffle" "prebuild" "latest" "/opt/romm/frontend/dist/assets/ruffle" "ruffle-*-web-selfhosted.zip"
fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
msg_info "Creating environment file" msg_info "Creating environment file"
sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf sed -i 's/^supervised no/supervised systemd/' /etc/redis/redis.conf
@@ -214,6 +212,9 @@ ln -sfn "$ROMM_BASE"/resources /opt/romm/frontend/dist/assets/romm/resources
ln -sfn "$ROMM_BASE"/assets /opt/romm/frontend/dist/assets/romm/assets ln -sfn "$ROMM_BASE"/assets /opt/romm/frontend/dist/assets/romm/assets
msg_ok "Set up RomM Frontend" msg_ok "Set up RomM Frontend"
fetch_and_deploy_gh_release "ruffle" "ruffle-rs/ruffle" "prebuild" "latest" "/opt/romm/frontend/dist/assets/ruffle" "ruffle-*-web-selfhosted.zip"
fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
msg_info "Configuring Angie" msg_info "Configuring Angie"
cat <<'EOF' >/etc/angie/http.d/romm.conf cat <<'EOF' >/etc/angie/http.d/romm.conf
upstream romm_backend { upstream romm_backend {
+68
View File
@@ -0,0 +1,68 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://rss-bridge.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y caddy patchelf
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM="YES" setup_php
setup_composer
fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/lib/curl-impersonate" "libcurl-impersonate-v*.$(arch_resolve x86_64-linux-gnu aarch64-linux-gnu).tar.gz"
fetch_and_deploy_gh_release "rss-bridge" "RSS-Bridge/rss-bridge" "tarball"
msg_info "Setting up RSS-Bridge"
cd /opt/rss-bridge
$STD composer install --no-dev --optimize-autoloader
cp config.default.ini.php config.ini.php
chown -R www-data:www-data /opt/rss-bridge
msg_ok "Set up RSS-Bridge"
msg_info "Configuring Caddy"
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
cat <<EOF >/etc/caddy/Caddyfile
:80 {
root * /opt/rss-bridge
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
file_server
encode gzip
}
EOF
usermod -aG www-data caddy
msg_ok "Configured Caddy"
if [[ -f /usr/local/lib/curl-impersonate/libcurl-impersonate.so ]]; then
msg_info "Enabling curl-impersonate for PHP-FPM"
patchelf --set-soname libcurl.so.4 /usr/local/lib/curl-impersonate/libcurl-impersonate.so
mkdir -p /etc/systemd/system/php${PHP_VER}-fpm.service.d
cat <<EOF >/etc/systemd/system/php${PHP_VER}-fpm.service.d/curl-impersonate.conf
[Service]
Environment=LD_PRELOAD=/usr/local/lib/curl-impersonate/libcurl-impersonate.so
EOF
cat <<EOF >>/etc/php/${PHP_VER}/fpm/pool.d/www.conf
env[CURL_IMPERSONATE] = chrome142
EOF
$STD systemctl daemon-reload
safe_service_restart php${PHP_VER}-fpm
msg_ok "Enabled curl-impersonate for PHP-FPM"
fi
systemctl enable -q --now php${PHP_VER}-fpm
systemctl restart caddy
motd_ssh
customize
cleanup_lxc
+164
View File
@@ -0,0 +1,164 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/securo-finance/securo
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 \
nginx \
redis-server \
build-essential
systemctl enable -q --now redis-server
msg_ok "Installed Dependencies"
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
PG_DB_NAME="securo" PG_DB_USER="securo" PG_DB_EXTENSIONS="vector" setup_postgresql_db
NODE_VERSION="22" setup_nodejs
UV_PYTHON="3.12" setup_uv
fetch_and_deploy_gh_release "securo" "securo-finance/securo" "tarball"
msg_info "Setting up Backend"
cd /opt/securo/backend
$STD uv venv --python 3.12 /opt/securo/backend/.venv
$STD uv pip install --python /opt/securo/backend/.venv -e .
msg_ok "Set up Backend"
msg_info "Configuring Securo"
mkdir -p /opt/securo_data
SECRET_KEY=$(openssl rand -hex 32)
cat <<EOF >/opt/securo_data/.env
DATABASE_URL=postgresql+asyncpg://securo:${PG_DB_PASS}@127.0.0.1:5432/securo
REDIS_URL=redis://127.0.0.1:6379/0
SECRET_KEY=${SECRET_KEY}
DEBUG=false
FRONTEND_URL=https://${LOCAL_IP}
EOF
ln -sf /opt/securo_data/.env /opt/securo/backend/.env
set -a
source /opt/securo_data/.env
set +a
$STD /opt/securo/backend/.venv/bin/alembic upgrade head
msg_ok "Configured Securo"
msg_info "Building Frontend (Patience)"
cd /opt/securo/frontend
export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm install
$STD npm run build
msg_ok "Built Frontend"
msg_info "Generating Self-Signed Certificate"
create_self_signed_cert "securo"
msg_ok "Generated Self-Signed Certificate"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/securo.service
[Unit]
Description=Securo Backend (FastAPI)
After=network-online.target postgresql.service redis-server.service
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/securo/backend
EnvironmentFile=/opt/securo_data/.env
ExecStart=/opt/securo/backend/.venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/securo-worker.service
[Unit]
Description=Securo Celery Worker
After=network-online.target postgresql.service redis-server.service
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/securo/backend
EnvironmentFile=/opt/securo_data/.env
ExecStart=/opt/securo/backend/.venv/bin/celery -A app.worker worker --loglevel=info --concurrency=2
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/securo-beat.service
[Unit]
Description=Securo Celery Beat
After=network-online.target postgresql.service redis-server.service
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/securo/backend
EnvironmentFile=/opt/securo_data/.env
ExecStart=/opt/securo/backend/.venv/bin/celery -A app.worker beat --loglevel=info
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now securo securo-worker securo-beat
msg_ok "Created Services"
msg_info "Configuring Nginx"
cat <<'EOF' >/etc/nginx/sites-available/securo.conf
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
http2 on;
server_name _;
ssl_certificate /etc/ssl/securo/securo.crt;
ssl_certificate_key /etc/ssl/securo/securo.key;
client_max_body_size 25m;
root /opt/securo/frontend/dist;
index index.html;
location /api/ {
proxy_pass http://127.0.0.1:8000;
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;
}
location / {
try_files $uri $uri/ /index.html;
}
}
EOF
nginx_enable_site securo.conf
msg_ok "Configured Nginx"
motd_ssh
customize
cleanup_lxc
+1 -16
View File
@@ -116,6 +116,7 @@ else
chromium-common \ chromium-common \
chromium \ chromium \
python3-tk python3-tk
sed -i '/DOCKERMODE=/s/false/true/' /etc/shelfmark/.env
msg_ok "Installed internal bypasser dependencies" msg_ok "Installed internal bypasser dependencies"
fi fi
@@ -165,22 +166,6 @@ KillMode=mixed
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
if [[ "$DEPLOYMENT_TYPE" == "1" ]]; then
cat <<EOF >/etc/systemd/system/chromium.service
[Unit]
Description=Chromium Headless Browser
After=network.target
[Service]
User=root
ExecStart=/usr/bin/chromium --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --hide-scrollbars
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now chromium
fi
if [[ "$DEPLOYMENT_TYPE" == "2" ]]; then if [[ "$DEPLOYMENT_TYPE" == "2" ]]; then
cat <<EOF >/etc/systemd/system/flaresolverr.service cat <<EOF >/etc/systemd/system/flaresolverr.service
[Unit] [Unit]
-30
View File
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: EEJoshua
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://swizzin.ltd/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://swizzin.ltd/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://s5n.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
bash <(curl -fsSL https://s5n.sh)
motd_ssh
customize
cleanup_lxc
+5 -1
View File
@@ -19,7 +19,6 @@ $STD apt install -y \
erlang \ erlang \
erlang-dev \ erlang-dev \
erlang-syntax-tools \ erlang-syntax-tools \
elixir \
mosquitto \ mosquitto \
locales locales
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen
@@ -27,6 +26,11 @@ $STD locale-gen
systemctl enable -q --now mosquitto systemctl enable -q --now mosquitto
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "elixir" "elixir-lang/elixir" "prebuild" "latest" "/opt/elixir" "elixir-otp-27.zip"
for bin in elixir elixirc iex mix; do
ln -sf "/opt/elixir/bin/$bin" "/usr/local/bin/$bin"
done
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
PG_DB_NAME="teslamate" PG_DB_USER="teslamate" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db PG_DB_NAME="teslamate" PG_DB_USER="teslamate" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
+3 -3
View File
@@ -13,13 +13,13 @@ setting_up_container
network_check network_check
update_os update_os
NODE_VERSION="24" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor" fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
msg_info "Configuring Tracktor" msg_info "Configuring Tracktor"
cd /opt/tracktor cd /opt/tracktor
$STD npm install $STD pnpm install --frozen-lockfile
$STD npm run build $STD pnpm run build
mkdir -p /opt/tracktor-data/{uploads,logs} mkdir -p /opt/tracktor-data/{uploads,logs}
cat <<EOF >/opt/tracktor.env cat <<EOF >/opt/tracktor.env
NODE_ENV=production NODE_ENV=production
+13 -23
View File
@@ -15,24 +15,24 @@ update_os
setup_go setup_go
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
mkdir -p /opt/wanderer/{source,data/pb_data,data/meili_data,data/plugins} mkdir -p /opt/{wanderer,wanderer_data/pb_data,wanderer_data/meili_data,wanderer_data/plugins}
MEILISEARCH_DB_PATH="/opt/wanderer/data/meili_data" setup_meilisearch MEILISEARCH_DB_PATH="/opt/wanderer_data/meili_data" setup_meilisearch
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source" fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest"
mkdir -p /opt/wanderer/source/db/data mkdir -p /opt/wanderer/db/data
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins [[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
msg_info "Installing wanderer (patience)" msg_info "Installing wanderer (patience)"
cd /opt/wanderer/source/db cd /opt/wanderer/db
$STD go mod tidy $STD go mod tidy
$STD go build $STD go build
cd /opt/wanderer/source/web cd /opt/wanderer/web
$STD npm ci $STD npm ci
$STD npm run build $STD npm run build
msg_ok "Installed wanderer" msg_ok "Installed wanderer"
msg_info "Installing wanderer plugins" msg_info "Installing wanderer plugins"
for plugin in hammerhead komoot strava; do for plugin in hammerhead komoot strava; do
fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "latest" "/opt/wanderer/data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}" fetch_and_deploy_gh_release "wanderer-plugin-${plugin}" "open-wanderer/wanderer" "prebuild" "latest" "/opt/wanderer_data/plugins" "wanderer-plugin-${plugin}.tar.gz" || msg_warn "Failed to install wanderer plugin: ${plugin}"
done done
msg_ok "Installed wanderer plugins" msg_ok "Installed wanderer plugins"
@@ -48,20 +48,10 @@ PB_URL=${LOCAL_IP}:8090
PUBLIC_POCKETBASE_URL=http://${LOCAL_IP}:8090 PUBLIC_POCKETBASE_URL=http://${LOCAL_IP}:8090
PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de
POCKETBASE_ENCRYPTION_KEY=${POCKETBASE_KEY} POCKETBASE_ENCRYPTION_KEY=${POCKETBASE_KEY}
PB_DB_LOCATION=/opt/wanderer/data/pb_data PB_DB_LOCATION=/opt/wanderer_data/pb_data
MEILI_DB_PATH=/opt/wanderer/data/meili_data MEILI_DB_PATH=/opt/wanderer_data/meili_data
EOF EOF
cat <<'EOF' >/usr/local/bin/wanderer-pb
#!/usr/bin/env bash
set -a
source /opt/wanderer/.env
set +a
cd /opt/wanderer/source/db
exec ./pocketbase "$@" --dir="$PB_DB_LOCATION"
EOF
chmod +x /usr/local/bin/wanderer-pb
cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service cat <<EOF >/etc/systemd/system/wanderer-pocketbase.service
[Unit] [Unit]
Description=wanderer PocketBase Description=wanderer PocketBase
@@ -73,9 +63,9 @@ StartLimitBurst=5
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/wanderer/source/db WorkingDirectory=/opt/wanderer/db
EnvironmentFile=/opt/wanderer/.env EnvironmentFile=/opt/wanderer/.env
ExecStart=/opt/wanderer/source/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION} ExecStart=/opt/wanderer/db/pocketbase serve --http=\${PB_URL} --dir=\${PB_DB_LOCATION}
Restart=always Restart=always
RestartSec=1 RestartSec=1
@@ -93,7 +83,7 @@ StartLimitBurst=5
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/wanderer/source/web WorkingDirectory=/opt/wanderer/web
EnvironmentFile=/opt/wanderer/.env EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build ExecStart=/usr/bin/node build
Restart=always Restart=always
+13 -9
View File
@@ -1336,6 +1336,10 @@ create_backup() {
msg_warn "Skipping backup of '${path}' (not found)" msg_warn "Skipping backup of '${path}' (not found)"
continue continue
fi fi
if mountpoint -q "$path" 2>/dev/null; then
msg_warn "Skipping backup of '${path}' (is a mount point)"
continue
fi
dest="${store}/files${path}" dest="${store}/files${path}"
if ! mkdir -p "$(dirname "$dest")" || ! cp -a "$path" "$dest"; then if ! mkdir -p "$(dirname "$dest")" || ! cp -a "$path" "$dest"; then
msg_error "Backup of '${path}' failed - aborting update" msg_error "Backup of '${path}' failed - aborting update"
@@ -2524,9 +2528,9 @@ _download_source_tarball() {
# directory). Extracts <tarball_path> into <workdir>, then copies the contents # directory). Extracts <tarball_path> into <workdir>, then copies the contents
# of that top-level directory into <target>. # of that top-level directory into <target>.
# #
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included — back # - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included, mount
# up config dotfiles like .env via create_backup and call restore_backup # points preserved — back up config dotfiles like .env via create_backup
# BEFORE any build step that sources them). # and call restore_backup BEFORE any build step that sources them).
# - Does NOT own <workdir>: the caller creates it and is responsible for its # - Does NOT own <workdir>: the caller creates it and is responsible for its
# cleanup (typically via a RETURN trap on its tmpdir). # cleanup (typically via a RETURN trap on its tmpdir).
# - cp failures are non-fatal here, matching the previous inline behavior. # - cp failures are non-fatal here, matching the previous inline behavior.
@@ -2538,7 +2542,7 @@ _deploy_source_tarball() {
mkdir -p "$target" mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${target:?}" -mindepth 1 -delete find "${target:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -print0 | xargs -0 rm -rf --
fi fi
tar --no-same-owner -xzf "$tarball" -C "$workdir" || { tar --no-same-owner -xzf "$tarball" -C "$workdir" || {
@@ -2564,9 +2568,9 @@ _deploy_source_tarball() {
# a single top-level directory, that directory is stripped (its contents land # a single top-level directory, that directory is stripped (its contents land
# directly in <target>); otherwise the archive contents are copied as-is. # directly in <target>); otherwise the archive contents are copied as-is.
# #
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included — back # - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included, mount
# up config dotfiles like .env via create_backup and call restore_backup # points preserved — back up config dotfiles like .env via create_backup
# BEFORE any build step that sources them). # and call restore_backup BEFORE any build step that sources them).
# - Does NOT own <workdir>: the caller creates it and cleans it up. # - Does NOT own <workdir>: the caller creates it and cleans it up.
# #
# Returns: 0 on success, 65 on unsupported format, 251 on extraction failure, # Returns: 0 on success, 65 on unsupported format, 251 on extraction failure,
@@ -2627,7 +2631,7 @@ _deploy_unpacked_archive() {
# was truncated, the archive was unreadable, or it unpacked to nothing. # was truncated, the archive was unreadable, or it unpacked to nothing.
mkdir -p "$target" mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${target:?}" -mindepth 1 -delete find "${target:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -print0 | xargs -0 rm -rf --
fi fi
if ! cp -r "$source_dir"/* "$target/"; then if ! cp -r "$source_dir"/* "$target/"; then
@@ -9368,7 +9372,7 @@ fetch_and_deploy_from_url() {
mkdir -p "$directory" mkdir -p "$directory"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${directory:?}" -mindepth 1 -delete find "${directory:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -print0 | xargs -0 rm -rf --
fi fi
local unpack_tmp local unpack_tmp
+1 -1
View File
@@ -61,7 +61,7 @@ function update() {
msg_ok "Stopped service" msg_ok "Stopped service"
BACKUP_DIR="/opt/cronmaster_backup" BACKUP_DIR="/opt/cronmaster_backup"
create_backup "$CONFIG_PATH" create_backup "$CONFIG_PATH" "$INSTALL_PATH/scripts" "$INSTALL_PATH/data" "$INSTALL_PATH/snippets"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cronmaster" "fccview/cronmaster" "prebuild" "latest" "$INSTALL_PATH" "cronmaster_*_prebuild.tar.gz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cronmaster" "fccview/cronmaster" "prebuild" "latest" "$INSTALL_PATH" "cronmaster_*_prebuild.tar.gz"