Compare commits

..

64 Commits

Author SHA1 Message Date
CanbiZ (MickLesk) b856fd7ae0 Increase default disk size from 4GB to 8GB 2026-08-16 20:55:23 +02:00
MickLesk 7a80b6c5b0 patchmon: fetch only SCAP datastream XMLs, not the full 2.1GB content archive 2026-08-16 20:53:07 +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
59 changed files with 1550 additions and 569 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
### 🆕 New Scripts
+84 -145
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>
<summary><h4>August (8 entries)</h4></summary>
<summary><h4>August (15 entries)</h4></summary>
[View August 2026 Changelog](.github/changelogs/2026/08.md)
@@ -521,6 +524,85 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 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
### 🆕 New Scripts
@@ -1133,147 +1215,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### ✨ 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))
## 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))
- 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))
-1
View File
@@ -60,7 +60,6 @@ function update_script() {
$STD .venv/bin/python -m manage migrate
cd /opt/adventurelog/frontend
grep -q "^dangerouslyAllowAllBuilds:" ./pnpm-workspace.yaml 2>/dev/null || echo "dangerouslyAllowAllBuilds: true" >>./pnpm-workspace.yaml
$STD pnpm i
$STD pnpm build
msg_ok "Updated AdventureLog"
+5 -5
View File
@@ -39,12 +39,12 @@ function update_script() {
/opt/ampache/public/play/.htaccess \
/opt/ampache/advanced-config
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
if [[ "$CURRENT_PHP" != "8.5" ]]; then
msg_info "Migrating PHP $CURRENT_PHP to 8.5"
$STD apt remove -y php"${CURRENT_PHP//./}"*
if ! dpkg -l 2>/dev/null | grep -q "libapache2-mod-php8.5"; then
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
msg_ok "Migrated PHP $CURRENT_PHP to 8.5"
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"
+4 -1
View File
@@ -45,9 +45,12 @@ function update_script() {
cd /opt/calibre-web
$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 -r requirements.txt
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
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
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 @@
_____ _ _
/ ___/ __(_)_______ (_)___
\__ \ | /| / / /_ /_ / / / __ \
___/ / |/ |/ / / / /_/ /_/ / / / /
/____/|__/|__/_/ /___/___/_/_/ /_/
+24 -3
View File
@@ -39,15 +39,15 @@ function update_script() {
create_backup /opt/homepage/.env /opt/homepage/config
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
restore_backup
msg_info "Updating Homepage (Patience)"
RELEASE=$(get_latest_github_release "gethomepage/homepage")
cd /opt/homepage
echo 'onlyBuiltDependencies=*' >> .npmrc
echo 'onlyBuiltDependencies=*' >>.npmrc
$STD pnpm install
$STD pnpm update --no-save caniuse-lite
export NEXT_PUBLIC_VERSION="v$RELEASE"
@@ -56,6 +56,27 @@ function update_script() {
export NEXT_TELEMETRY_DISABLED=1
$STD pnpm build
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_info "Starting service"
+26 -16
View File
@@ -1,14 +1,14 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# 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"
var_tags="${var_tags:-noCode}"
APP="Mumble"
var_tags="${var_tags:-voice;chat;gaming}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
@@ -24,21 +24,31 @@ function update_script() {
header_info
check_container_storage
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!"
exit
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"
systemctl stop nocodb
systemctl stop mumble-server
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"
systemctl start nocodb
systemctl start mumble-server
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
@@ -49,7 +59,7 @@ start
build_container
description
msg_ok "Completed successfully!\n"
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/dashboard${CL}"
echo -e "${INFO}${YW}Connect using:${CL}"
echo -e "${GATEWAY}${BGN}${IP}:64738${CL}"
+1
View File
@@ -51,6 +51,7 @@ function update_script() {
mkdir -p /opt/networkoptimizer/publish/tools
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 .
[[ "$(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_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
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Mips2648
# Author: MickLesk (CanbiZ)
# 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"
var_tags="${var_tags:-automation;smarthome}"
APP="ntopng"
var_tags="${var_tags:-network;monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-16}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_arm64="${var_arm64:-yes}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -25,15 +25,20 @@ function update_script() {
check_container_storage
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!"
exit
fi
msg_info "Updating OS"
msg_info "Updating ntopng"
$STD apt update
$STD apt -y upgrade
msg_ok "OS updated, you can now update Jeedom from the Web UI."
$STD apt install -y ntopng
msg_ok "Updated ntopng"
msg_info "Restarting Service"
systemctl restart ntopng
msg_ok "Restarted Service"
msg_ok "Updated successfully!"
exit
}
@@ -41,7 +46,8 @@ start
build_container
description
msg_ok "Completed successfully!\n"
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}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Default login: admin / admin${CL}"
+5 -5
View File
@@ -165,7 +165,7 @@ function update_script() {
msg_info "Updating Paperless-ngx"
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 ||
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
@@ -207,10 +207,10 @@ function update_script() {
msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
["paperless-consumer.service"]="ExecStart=uv run --no-sync -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run --no-sync -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run --no-sync -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run --no-sync -- granian --interface asgi --ws \"paperless.asgi:application\""
)
for svc in "${!PATCHES[@]}"; do
+10 -1
View File
@@ -9,7 +9,7 @@ APP="PatchMon"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
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)"
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
msg_info "Fetching PatchMon agent binaries"
+1
View File
@@ -60,6 +60,7 @@ function update_script() {
msg_info "Updating 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/
cp -a /opt/backup/storage/app/public /opt/pelican-panel/storage/app/
+14 -3
View File
@@ -30,13 +30,26 @@ function update_script() {
exit
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"
$STD apt update
$STD apt install -y --only-upgrade pdns-server pdns-backend-sqlite3
msg_ok "Updated PowerDNS"
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"
@@ -46,8 +59,6 @@ function update_script() {
rm -rf /opt/poweradmin/install
chown -R www-data:pdns /opt/poweradmin
chmod 775 /opt/poweradmin
chown pdns:pdns /opt/poweradmin/powerdns.db
chmod 664 /opt/poweradmin/powerdns.db
msg_ok "Updated Poweradmin"
msg_info "Restarting Services"
+27 -16
View File
@@ -28,27 +28,37 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
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
msg_info "Stopping Service"
systemctl stop apache2
msg_ok "Stopped Service"
msg_info "Stopping Services"
systemctl stop nginx projectsend-worker
msg_ok "Stopped Services"
php_ver=$(php -v | head -n 1 | awk '{print $2}')
if [[ ! $php_ver == "8.4"* ]]; then
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
fi
create_backup /opt/projectsend/.env /opt/projectsend/storage/app/files
mv /opt/projectsend/includes/sys.config.php /opt/sys.config.php
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
mv /opt/sys.config.php /opt/projectsend/includes/sys.config.php
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend"
restore_backup
msg_info "Updating ProjectSend"
cd /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"
systemctl start apache2
msg_ok "Started Service"
msg_info "Starting Services"
systemctl start nginx projectsend-worker
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
@@ -61,4 +71,5 @@ 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}/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
msg_info "Stopping Service(s)"
systemctl stop shelfmark
[[ -f /etc/systemd/system/chromium.service ]] && systemctl stop chromium
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
msg_info "Stopping FlareSolverr service"
systemctl stop flaresolverr
@@ -79,7 +88,6 @@ function update_script() {
msg_info "Starting Service(s)"
systemctl start shelfmark
[[ -f /etc/systemd/system/chromium.service ]] && systemctl start chromium
msg_ok "Started Service(s)"
msg_ok "Updated successfully!"
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}"
+3 -4
View File
@@ -41,7 +41,6 @@ function update_script() {
if ! grep -qxF 'BODY_SIZE_LIMIT=Infinity' /opt/tracktor.env; then
rm /opt/tracktor.env
cat <<EOF >/opt/tracktor.env
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
# Set this to the path of the database file. Default - ./tracktor.db
DB_PATH=/opt/tracktor-data/tracktor.db
@@ -67,13 +66,13 @@ EOF
fi
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"
msg_info "Updating tracktor"
cd /opt/tracktor
$STD npm install
$STD npm run build
$STD pnpm install --frozen-lockfile
$STD pnpm run build
msg_ok "Updated tracktor"
msg_info "Starting Service"
+14 -3
View File
@@ -35,7 +35,10 @@ function update_script() {
systemctl stop tubearchivist tubearchivist-celery tubearchivist-beat
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"
@@ -48,6 +51,8 @@ function update_script() {
mkdir -p /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/
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
if [[ -f /opt/tubearchivist/backend/requirements.plugins.txt ]]; then
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_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
ln -sf /opt/tubearchivist/cache /cache
ln -sf /opt/tubearchivist/media /youtube
ln -sfn /opt/tubearchivist/cache /cache
# /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
msg_ok "Restored Configuration"
+4 -1
View File
@@ -48,12 +48,15 @@ function update_script() {
chown -R www-data:www-data /opt/wallos
chmod -R 755 /opt/wallos
mkdir -p /var/log/cron
$STD curl http://localhost/endpoints/db/migrate.php
msg_ok "Configured Wallos"
msg_info "Reload Apache2"
systemctl reload apache2
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!"
fi
exit
+37 -14
View File
@@ -25,7 +25,7 @@ function update_script() {
check_container_storage
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!"
exit
fi
@@ -35,11 +35,15 @@ function update_script() {
systemctl stop wanderer-web
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)
cat <<EOF >/etc/meilisearch.toml
env = "production"
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"
snapshot_dir = "/var/lib/meilisearch/snapshots"
no_analytics = true
@@ -72,11 +76,30 @@ EOF
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"
systemctl stop wanderer-web
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
[Unit]
@@ -89,9 +112,9 @@ StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/db
WorkingDirectory=/opt/wanderer/db
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
RestartSec=1
@@ -109,7 +132,7 @@ StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/web
WorkingDirectory=/opt/wanderer/web
EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build
Restart=always
@@ -129,22 +152,22 @@ EOF
systemctl stop wanderer-web
msg_ok "Stopped service"
create_backup /opt/wanderer/source
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
create_backup /opt/wanderer/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest"
restore_backup
msg_info "Updating wanderer"
cd /opt/wanderer/source/db
cd /opt/wanderer/db
$STD go mod tidy
$STD go build
cd /opt/wanderer/source/web
cd /opt/wanderer/web
$STD npm ci
$STD npm run build
mkdir -p /opt/wanderer/data/plugins /opt/wanderer/source/db/data
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
mkdir -p /opt/wanderer_data/plugins /opt/wanderer/db/data
[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
msg_info "Installing wanderer plugins"
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
msg_ok "Installed wanderer plugins"
msg_ok "Updated wanderer"
-1
View File
@@ -72,7 +72,6 @@ BODY_SIZE_LIMIT=Infinity
ORIGIN='http://$LOCAL_IP:3000'
EOF
cd /opt/adventurelog/frontend
grep -q "^dangerouslyAllowAllBuilds:" ./pnpm-workspace.yaml 2>/dev/null || echo "dangerouslyAllowAllBuilds: true" >>./pnpm-workspace.yaml
$STD pnpm i
$STD pnpm build
msg_ok "Installed AdventureLog"
+2 -2
View File
@@ -39,7 +39,7 @@ msg_info "Installing Python Dependencies"
cd /opt/calibre-web
$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 -r requirements.txt
$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir .
msg_ok "Installed Python Dependencies"
msg_info "Creating Service"
@@ -54,7 +54,7 @@ Type=simple
User=root
Environment="QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox"
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
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
cd /opt/homepage
cp /opt/homepage/src/skeleton/* /opt/homepage/config
echo 'onlyBuiltDependencies=*' >> .npmrc
echo 'onlyBuiltDependencies=*' >>.npmrc
$STD pnpm install
export NEXT_PUBLIC_VERSION="v$RELEASE"
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_TELEMETRY_DISABLED=1
$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_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
+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
msg_ok "Built NetworkOptimizer"
msg_info "Building Gateway Speed Test Binary"
msg_info "Building Speed Test Binaries"
mkdir -p /opt/networkoptimizer/publish/tools
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 .
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"
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
+4 -4
View File
@@ -108,7 +108,7 @@ Requires=redis.service
[Service]
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]
WantedBy=multi-user.target
@@ -122,7 +122,7 @@ After=postgresql.service
[Service]
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]
WantedBy=multi-user.target
@@ -136,7 +136,7 @@ Requires=redis.service
[Service]
WorkingDirectory=/opt/paperless/src
ExecStartPre=/bin/sleep 2
ExecStart=uv run -- python manage.py document_consumer
ExecStart=uv run --no-sync -- python manage.py document_consumer
[Install]
WantedBy=multi-user.target
@@ -152,7 +152,7 @@ Requires=redis.service
[Service]
WorkingDirectory=/opt/paperless/src
#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_PORT=8000
Environment=GRANIAN_WORKERS=1
+9
View File
@@ -60,6 +60,7 @@ REDIS_PORT=6379
# OIDC_ENFORCE_HTTPS=true
AGENT_BINARIES_DIR=/opt/patchmon/agents
SSG_CONTENT_DIR=/opt/patchmon/ssg-content
EOF
msg_ok "Configured PatchMon"
@@ -85,6 +86,14 @@ for arch in "${AGENT_NAME[@]}"; do
done
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"
cat <<EOF >/etc/systemd/system/patchmon-server.service
[Unit]
+1
View File
@@ -27,6 +27,7 @@ msg_info "Installing Pelican Panel"
cd /opt/pelican-panel
$STD composer install --no-dev --optimize-autoloader --no-interaction
$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"
$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 -
+8 -7
View File
@@ -40,24 +40,25 @@ $STD apt install -y \
pdns-backend-sqlite3
sed -i 's/^launch=$/# launch=/' /etc/powerdns/pdns.conf
rm -f /etc/powerdns/pdns.d/bind.conf
mkdir -p /var/lib/powerdns
cat <<EOF >/etc/powerdns/pdns.d/gsqlite3.conf
launch=gsqlite3
gsqlite3-database=/opt/poweradmin/powerdns.db
gsqlite3-database=/var/lib/powerdns/powerdns.db
EOF
msg_ok "Setup PowerDNS"
fetch_and_deploy_gh_release "poweradmin" "poweradmin/poweradmin" "tarball"
msg_info "Setting up Poweradmin"
sqlite3 /opt/poweradmin/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/poweradmin-sqlite-db-structure.sql
sqlite3 /var/lib/powerdns/powerdns.db </opt/poweradmin/sql/pdns/49/schema.sqlite3.sql
PA_ADMIN_USERNAME="admin"
PA_ADMIN_EMAIL="admin@example.com"
PA_ADMIN_FULLNAME="Administrator"
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)
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}")', \
'$(escape_sql "${PA_ADMIN_EMAIL}")', 'System Administrator', 1, 1, 0);"
@@ -81,7 +82,7 @@ return [
*/
'database' => [
'type' => 'sqlite',
'file' => '/opt/poweradmin/powerdns.db',
'file' => '/var/lib/powerdns/powerdns.db',
],
/**
@@ -133,8 +134,8 @@ EOF
$STD a2enmod rewrite headers
chown -R www-data:pdns /opt/poweradmin
chmod 775 /opt/poweradmin
chown pdns:pdns /opt/poweradmin/powerdns.db
chmod 664 /opt/poweradmin/powerdns.db
chown pdns:pdns /var/lib/powerdns/powerdns.db
chmod 664 /var/lib/powerdns/powerdns.db
usermod -aG pdns www-data
$STD systemctl restart pdns apache2
msg_ok "Created Service"
+94 -34
View File
@@ -13,46 +13,106 @@ setting_up_container
network_check
update_os
PHP_VERSION="8.4" PHP_APACHE="YES" setup_php
setup_mariadb
MARIADB_DB_NAME="projectsend" MARIADB_DB_USER="projectsend" setup_mariadb_db
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-r*.zip"
msg_info "Installing Dependencies"
$STD apt install -y nginx
msg_ok "Installed Dependencies"
msg_info "Installing ProjectSend"
mv /opt/projectsend/includes/sys.config.sample.php /opt/projectsend/includes/sys.config.php
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="ldap,pcntl" setup_php
setup_mariadb
MARIADB_DB_NAME="projectsend"
MARIADB_DB_USER="projectsend"
setup_mariadb_db
fetch_and_deploy_gh_release "projectsend" "projectsend/projectsend" "prebuild" "latest" "/opt/projectsend" "projectsend-*.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
chmod -R 775 /opt/projectsend
chmod 644 /opt/projectsend/includes/sys.config.php
sed -i -e "s/\(define('DB_NAME', \).*/\1'$MARIADB_DB_NAME');/" \
-e "s/\(define('DB_USER', \).*/\1'$MARIADB_DB_USER');/" \
-e "s/\(define('DB_PASSWORD', \).*/\1'$MARIADB_DB_PASS');/" \
/opt/projectsend/includes/sys.config.php
sed -i -e "s/^\(memory_limit = \).*/\1 256M/" \
-e "s/^\(post_max_size = \).*/\1 256M/" \
-e "s/^\(upload_max_filesize = \).*/\1 256M/" \
-e "s/^\(max_execution_time = \).*/\1 300/" \
/etc/php/8.4/apache2/php.ini
msg_ok "Installed projectsend"
chmod -R 775 /opt/projectsend/storage /opt/projectsend/bootstrap/cache
$STD sudo -u www-data php artisan key:generate --force --no-interaction
$STD sudo -u www-data php artisan migrate --force
$STD sudo -u www-data php artisan storage:link --force
$STD sudo -u www-data php artisan projectsend:ensure-roles
$STD sudo -u www-data php artisan projectsend:admin --if-none \
--name="Administrator" \
--email="${ADMIN_EMAIL}" \
--password="${ADMIN_PASSWORD}"
cat <<EOF >~/projectsend.creds
ProjectSend Credentials
Admin Email: ${ADMIN_EMAIL}
Admin Password: ${ADMIN_PASSWORD}
EOF
msg_ok "Configured ProjectSend"
msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/projectsend.conf
<VirtualHost *:80>
ServerName projectsend
DocumentRoot /opt/projectsend
<Directory /opt/projectsend>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/sites-available/projectsend.conf
server {
listen 80 default_server;
server_name _;
root /opt/projectsend/public;
index index.php;
ErrorLog /var/log/apache2/projectsend_error.log
CustomLog /var/log/apache2/projectsend_access.log combined
</VirtualHost>
client_max_body_size 100m;
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
$STD a2ensite projectsend
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
nginx_enable_site projectsend.conf
cat <<EOF >/etc/systemd/system/projectsend-worker.service
[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"
motd_ssh
+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 \
python3-tk
sed -i '/DOCKERMODE=/s/false/true/' /etc/shelfmark/.env
msg_ok "Installed internal bypasser dependencies"
fi
@@ -165,22 +166,6 @@ KillMode=mixed
WantedBy=multi-user.target
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
cat <<EOF >/etc/systemd/system/flaresolverr.service
[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
+3 -3
View File
@@ -13,13 +13,13 @@ setting_up_container
network_check
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"
msg_info "Configuring Tracktor"
cd /opt/tracktor
$STD npm install
$STD npm run build
$STD pnpm install --frozen-lockfile
$STD pnpm run build
mkdir -p /opt/tracktor-data/{uploads,logs}
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
+13 -23
View File
@@ -15,24 +15,24 @@ update_os
setup_go
NODE_VERSION="22" setup_nodejs
mkdir -p /opt/wanderer/{source,data/pb_data,data/meili_data,data/plugins}
MEILISEARCH_DB_PATH="/opt/wanderer/data/meili_data" setup_meilisearch
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
mkdir -p /opt/wanderer/source/db/data
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/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
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest"
mkdir -p /opt/wanderer/db/data
[[ -e /opt/wanderer/db/data/plugins ]] || ln -sfn /opt/wanderer_data/plugins /opt/wanderer/db/data/plugins
msg_info "Installing wanderer (patience)"
cd /opt/wanderer/source/db
cd /opt/wanderer/db
$STD go mod tidy
$STD go build
cd /opt/wanderer/source/web
cd /opt/wanderer/web
$STD npm ci
$STD npm run build
msg_ok "Installed wanderer"
msg_info "Installing wanderer plugins"
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
msg_ok "Installed wanderer plugins"
@@ -48,20 +48,10 @@ PB_URL=${LOCAL_IP}:8090
PUBLIC_POCKETBASE_URL=http://${LOCAL_IP}:8090
PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de
POCKETBASE_ENCRYPTION_KEY=${POCKETBASE_KEY}
PB_DB_LOCATION=/opt/wanderer/data/pb_data
MEILI_DB_PATH=/opt/wanderer/data/meili_data
PB_DB_LOCATION=/opt/wanderer_data/pb_data
MEILI_DB_PATH=/opt/wanderer_data/meili_data
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
[Unit]
Description=wanderer PocketBase
@@ -73,9 +63,9 @@ StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/db
WorkingDirectory=/opt/wanderer/db
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
RestartSec=1
@@ -93,7 +83,7 @@ StartLimitBurst=5
[Service]
Type=simple
WorkingDirectory=/opt/wanderer/source/web
WorkingDirectory=/opt/wanderer/web
EnvironmentFile=/opt/wanderer/.env
ExecStart=/usr/bin/node build
Restart=always
+13 -9
View File
@@ -1336,6 +1336,10 @@ create_backup() {
msg_warn "Skipping backup of '${path}' (not found)"
continue
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}"
if ! mkdir -p "$(dirname "$dest")" || ! cp -a "$path" "$dest"; then
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
# of that top-level directory into <target>.
#
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included — back
# up config dotfiles like .env via create_backup and call restore_backup
# BEFORE any build step that sources them).
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included, mount
# points preserved — back up config dotfiles like .env via create_backup
# and call restore_backup BEFORE any build step that sources them).
# - Does NOT own <workdir>: the caller creates it and is responsible for its
# cleanup (typically via a RETURN trap on its tmpdir).
# - cp failures are non-fatal here, matching the previous inline behavior.
@@ -2538,7 +2542,7 @@ _deploy_source_tarball() {
mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${target:?}" -mindepth 1 -delete
find "${target:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -delete
fi
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
# directly in <target>); otherwise the archive contents are copied as-is.
#
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included — back
# up config dotfiles like .env via create_backup and call restore_backup
# BEFORE any build step that sources them).
# - Honors CLEAN_INSTALL=1 (wipes <target> first, dotfiles included, mount
# points preserved — back up config dotfiles like .env via create_backup
# and call restore_backup BEFORE any build step that sources them).
# - Does NOT own <workdir>: the caller creates it and cleans it up.
#
# 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.
mkdir -p "$target"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${target:?}" -mindepth 1 -delete
find "${target:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -delete
fi
if ! cp -r "$source_dir"/* "$target/"; then
@@ -9368,7 +9372,7 @@ fetch_and_deploy_from_url() {
mkdir -p "$directory"
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
find "${directory:?}" -mindepth 1 -delete
find "${directory:?}" -mindepth 1 \( -type d -exec mountpoint -q {} \; -prune \) -o -delete
fi
local unpack_tmp
+1 -1
View File
@@ -61,7 +61,7 @@ function update() {
msg_ok "Stopped service"
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"