Compare commits

...
Author SHA1 Message Date
copilot-swe-agent[bot]andGitHub bb93ea31ab Fix DocuSeal leptonica dependencies 2026-07-17 19:03:23 +00:00
copilot-swe-agent[bot]andGitHub 7b84889808 Initial plan 2026-07-17 19:01:19 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
ec3c25c5f5 Update CHANGELOG.md (#15853)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 12:31:18 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b1259e3749 Update CHANGELOG.md (#15852)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 12:31:05 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>Sam Heinz
ff192c4530 Invidious (#15824)
* Add invidious (ct)

* Update install/invidious-install.sh

* Update install/invidious-install.sh

* Update install/invidious-install.sh

* Update ct/invidious.sh

* Update ct/invidious.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-07-17 14:30:55 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e72f335b46 Update CHANGELOG.md (#15851)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 12:30:52 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
13d7bf6c78 Update CHANGELOG.md (#15850)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 12:30:43 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>Sam Heinz
2ab4a31dd1 OxiCloud (#15823)
* Add oxicloud (ct)

* Update ct/oxicloud.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-07-17 14:30:27 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e7557c2355 Update CHANGELOG.md (#15849)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 12:30:21 +00:00
CanbiZ (MickLesk)andGitHub 79cee47df6 SFTPGo: Update APT Repo & Re-Enable Script (#15829)
* SFTPGo: Update APT Repo & Re-Enable Script

* Update sftpgo.sh
2026-07-17 14:29:59 +02:00
MickLesk b4dcdd4472 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2026-07-17 12:54:18 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
8f2b68ed7e Update CHANGELOG.md (#15847)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 10:53:42 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
853f5e868a Update CHANGELOG.md (#15846)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 10:53:20 +00:00
CanbiZ (MickLesk)andGitHub 7c7d40cfe3 tools.func: enhance rbenv with profile updates / bundle in bashrc (#15822)
* tools.func: enhance rbenv with profile updates / bundle in bashrc

Added checks to update shell profile files for rbenv integration and removed redundant profile setup code.

* Refactor Ruby version installation script

* Fix comment formatting in tools.func
2026-07-17 12:53:13 +02:00
CanbiZ (MickLesk)andGitHub 373ae7e143 MongoDB: Implement kernel version check and patch (#15821) 2026-07-17 12:53:05 +02:00
CanbiZ (MickLesk)andGitHub abc31499a2 n8n: unpin / use latest release (#15817)
* n8n: unpin / use latest release

startup issue is fixed, so unpin and set to latest release

* Update n8n installation to latest version
2026-07-17 12:52:57 +02:00
MickLesk 7bf45d5b66 fix stupid branch delete bot 2026-07-17 12:49:24 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f119e8782a Update CHANGELOG.md (#15844)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 10:18:59 +00:00
Michel Roegl-BrunnerandGitHub 271df3c3fb feat(build.func): notify users when already on a pinned script version (#15819)
Query PocketBase pinned_version/pin_reason during LXC updates and show an informational message when the installed version matches the pin, so users know not to open issues for missing newer updates.
2026-07-17 12:18:36 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
c991a7eccf Update CHANGELOG.md (#15843)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 09:59:30 +00:00
Michel Roegl-BrunnerandGitHub 5d4eff0493 fix(esphome): install libusb-1.0-0 for ESP-IDF native builds (#15838)
ESPHome 2026.7.0 validates openocd-esp32 during native ESP-IDF setup, which requires libusb-1.0.so.0. Add the runtime package to install and update paths.

Fixes #15835
2026-07-17 11:59:05 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
3f90af2a21 Update CHANGELOG.md (#15839)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 07:00:56 +00:00
ChrisandGitHub 55002839fb Pin Opencloud to v7.3.0 (#15826) 2026-07-17 09:00:32 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a51e1f37f5 Update CHANGELOG.md (#15836)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-17 06:43:31 +00:00
soupy-boyandGitHub 8655282c2d autoremove and autoclean after apt full-upgrade (#15831) 2026-07-17 08:43:05 +02:00
Michel Roegl-Brunner e15db754a6 github: close PRs that do not follow the PR template
Add a workflow that validates description, prerequisites, and type-of-change checkboxes, with exemptions for bots, maintainers, and the keep open label.
2026-07-16 11:46:06 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
772430de7e Update CHANGELOG.md (#15818)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-16 08:28:51 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>Sam Heinz
04a84f5052 Update CHANGELOG.md (#15816)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-07-16 10:28:25 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
12dec08523 Update CHANGELOG.md (#15815)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-16 08:02:15 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>CanbiZ
775f1a98c2 Sync-In (#15812)
* Add sync-in (ct)

* remove empty lines

---------

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-07-16 18:02:13 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
6d6d66eec6 Update CHANGELOG.md (#15814)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-16 08:01:53 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>CanbiZ
9bb99c59c5 Beaverhabits (#15813)
* Add beaverhabits (ct)

* Update URL to include '/register' path

---------

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-07-16 18:01:44 +10:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
d122341a47 Add notediscovery (ct) (#15811)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-07-16 18:01:24 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b9f26d66ed Update CHANGELOG.md (#15810)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-16 07:31:00 +00:00
ChrisandGitHub c44789f5f6 Pin Immich to v3.0.3 (#15790) 2026-07-16 17:30:38 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
5144f8d0cc Update CHANGELOG.md (#15809)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-16 07:02:22 +00:00
MickLesk d23a2e64e7 migration snapotter 2026-07-16 09:01:53 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b36ad5c3a2 Update CHANGELOG.md (#15804)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-15 19:37:39 +00:00
CanbiZ (MickLesk)andGitHub 74a233b8b9 Default Docker setup to official repo (#15794) 2026-07-15 21:37:10 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
66eff7ee87 Update CHANGELOG.md (#15803)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-15 19:36:37 +00:00
CanbiZ (MickLesk)andGitHub 812267aedd 2fauth: minor fixes for 8.0.0 (#15795) 2026-07-15 21:36:13 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
c759617379 Update CHANGELOG.md (#15802)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-15 19:35:52 +00:00
CanbiZ (MickLesk)andGitHub 75a1da273f SnapOtter: refactor deployment and installation process (#15797) 2026-07-15 21:35:28 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
c99768869d Update CHANGELOG.md (#15798)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-15 10:55:37 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>CanbiZ
c52a69e8e5 Nexterm (#15688)
* Add nexterm (ct)

* Remove architecture check from nexterm.sh

Removed architecture check for dpkg.

* Change var_arm64 default to 'yes' and update fetch commands

* Fix license URL and update service creation messages

* typo

---------

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-07-15 20:55:10 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
2afea1239c Update CHANGELOG.md (#15789)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 20:55:21 +00:00
CanbiZ (MickLesk)andGitHub 07e31eb5bc Pangolin: Bump to 1.20.0 | BREAKING: Switch to PostgreSQL (#15682)
* Pangolin: Bump to 1.20.0 and harden SQLite migrations

Bump the default Pangolin version to 1.20.0 in both CT and install scripts. Update the CT upgrade path to validate required 1.20.0 schema objects, clear stale versionMigrations markers when needed, retry migrations once, and abort with a clear error if the schema is still incomplete to avoid a broken runtime.

* extend migration check...

* another try...

* bump pangolin to PSQL

* remove migration paths

* remove old migrations

* use create_backup and restore_backup

* Block Pangolin SQLite upgrades

Update the Pangolin CT upgrade path to fail fast when PostgreSQL is not installed. The script now explains that upgrades to Pangolin 1.20.0+ require PostgreSQL and that SQLite data cannot be migrated automatically.

* fix env

* Update pangolin.sh

* Update pangolin-install.sh
2026-07-14 22:54:55 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
80c4b04d83 Update CHANGELOG.md (#15788)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 20:38:53 +00:00
CanbiZ (MickLesk)andGitHub ed29bb6f62 AFFiNE: Pin to v0.26.3 (#15782)
* AFFiNE: Pin to v0.26.3

* Update GitHub release version to v0.26.3
2026-07-14 22:38:24 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a5b839f91f Update CHANGELOG.md (#15781)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:16:30 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
d4d482746b Add grav (ct) (#15773)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-07-14 14:16:10 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
2bffa47924 Update CHANGELOG.md (#15780)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:16:01 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
108c9dcf43 Add yuvomi (ct) (#15772)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-07-14 14:15:32 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
0f37abff3c Update CHANGELOG.md (#15779)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:14:44 +00:00
Michel Roegl-BrunnerandGitHub 670d972cc1 fix(wanderer): clean deploy and install plugins for v0.20.0 update (#15759)
Use CLEAN_INSTALL with create_backup/restore_backup so stale v0.19.x source files no longer break go build after the integrations migration. Also set up the plugins directory and install official WASM bundles.
2026-07-14 14:14:20 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
9f8bc4b03d Update CHANGELOG.md (#15778)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:08:38 +00:00
CanbiZ (MickLesk)andGitHub 817ee347c7 Bump OpenCloud version to v7.2.2 (#15769)
* Bump OpenCloud release version to v7.2.2

* Update OpenCloud version to v7.2.2
2026-07-14 22:08:14 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
bb4e35f988 Update CHANGELOG.md (#15777)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:02:17 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
254e720b4f Update CHANGELOG.md (#15776)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:01:44 +00:00
Michel Roegl-BrunnerandGitHub 9055f4b34e fix(lychee): preserve uploads and ownership during update (#15768)
The update script wiped public/uploads and did not re-apply www-data
ownership, causing HTTP 500 after successful updates. Align with upstream
upgrade steps and sibling Laravel scripts by backing up uploads/dist,
restarting PHP-FPM, running full artisan cache cycle, and adding verbose
diagnostics.

Fixes #15763
2026-07-14 22:01:40 +10:00
Michel Roegl-BrunnerandGitHub 3f5453b609 FileFlows: Handle update API 401, force update, and Node install (#15766)
* fix(fileflows): handle update API failures and fix Node install

Server updates no longer abort on 401 or unreachable API; users can force deploy when security is enabled or the app is down. Node installs now pass --server during systemd setup, and Node updates skip the server-only API.

* Update fileflows.sh
2026-07-14 22:01:16 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e812206116 Update CHANGELOG.md (#15775)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 12:00:40 +00:00
Michel Roegl-BrunnerandGitHub 7f430e15bb feat(silverbullet): add optional Runtime API install via Chromium (#15761)
Adds an install-time prompt to optionally enable Silverbullet's Runtime API by installing Chromium and configuring SB_CHROME_PATH / SB_CHROME_DATA_DIR.
2026-07-14 22:00:17 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
9c586b94ab Update CHANGELOG.md (#15774)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 11:58:44 +00:00
Michel Roegl-BrunnerandGitHub ab3c9be482 fix(birdnet-go): match new upstream release asset naming (#15758)
Upstream BirdNET-Go releases now suffix tarball names with the release date (e.g. birdnet-go-linux-amd64-20260713.tar.gz). Use a wildcard pattern so install and update can fetch the latest release without falling back to older nightlies.

Fixes #15753
2026-07-14 21:58:22 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
103b420e30 Update CHANGELOG.md (#15771)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 11:08:23 +00:00
CanbiZ (MickLesk)andGitHub c039ab2e62 Refactor input and checkbox fields for repository stars 2026-07-14 12:45:49 +02:00
CanbiZ (MickLesk)andGitHub 63f219f14f Revise project eligibility criteria in request template
Updated eligibility requirements for project requests in the discussion template, clarifying the criteria for self-hosting, repository stars, and project age.
2026-07-14 12:44:19 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
09ec7b3203 Update CHANGELOG.md (#15765)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 10:02:33 +00:00
Michel Roegl-BrunnerandGitHub 55ab97a020 Revert "fix(fileflows): handle update API failures and fix Node install (#14858)" (#15764)
This reverts commit 171b954c7c.
2026-07-14 12:02:10 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b7a002cae4 Update CHANGELOG.md (#15762)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 10:00:47 +00:00
Michel Roegl-BrunnerandGitHub 171b954c7c fix(fileflows): handle update API failures and fix Node install (#14858)
Server updates no longer abort on 401 or unreachable API; users can force deploy when security is enabled or the app is down. Node installs now pass --server during systemd setup, and Node updates skip the server-only API.
2026-07-14 12:00:22 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
6f76cc043e Update CHANGELOG.md (#15756)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 07:32:54 +00:00
ChrisandGitHub 5d57c328fb [Upstream Fix] Immich: Fix loader priority (#15755) 2026-07-14 09:32:29 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
da62724407 Update CHANGELOG.md (#15749)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 15:41:02 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
dbe2c9eb97 Add leafwiki (ct) (#15748)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-07-13 17:39:10 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
3c5a848d7d Update CHANGELOG.md (#15747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 13:10:47 +00:00
Michel Roegl-BrunnerandGitHub 1e3d0dedb3 Change sign-in URL to admin URL in affine.sh (#15741) 2026-07-13 23:09:56 +10:00
CanbiZ (MickLesk)andGitHub bcaadc4dbd typo 2026-07-13 14:58:23 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
666bdbd8c8 Update CHANGELOG.md (#15742)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 10:00:14 +00:00
mnavonandGitHub 7596b95517 immich: use actual PostgreSQL version for VectorChord package lookup (#15705)
* immich: use actual PostgreSQL version for VectorChord package lookup

* fix: update PostgreSQL version variable for VectorChord package deployment
2026-07-13 11:59:52 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
1521e131b5 Update CHANGELOG.md (#15740)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:56:44 +00:00
Michel Roegl-BrunnerandGitHub 734bb75b12 fix storyteller release selection for multi-stream tags (#15736)
Add optional tag prefix filtering to GitHub/GitLab release helpers and use web-v2 for Storyteller install/update so latest non-web tags no longer break deployment.
2026-07-13 11:56:12 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
d6d8d20c76 Update CHANGELOG.md (#15739)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:38:01 +00:00
649e66ed2b tools.func: some improvements (sql injection / command injection / guard) (#15661)
* Update tools.func

- Add _TOOLS_FUNC_LOADED guard to prevent double-sourcing
- Remove duplicate is_alpine() (core.func version is more robust)
- Fix end_timer: now actually outputs duration (was silent)
- Fix SQL injection in setup_mariadb_db: escape single quotes in identifiers
- Fix SQL injection in setup_postgresql_db: escape single quotes in identifiers
- Fix sed injection in edit_yaml_config: escape | and & in value
- Fix command injection in curl_with_retry: use array instead of string eval
- Fix command injection in curl_api_with_retry: use array instead of string eval

* Update misc/tools.func

Co-authored-by: Sam Heinz <sam@samheinz.com>

---------

Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-07-13 11:37:39 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
81bb9c7d71 Update CHANGELOG.md (#15737)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:32:19 +00:00
CanbiZ (MickLesk)andGitHub ca082aedf0 Docmost: Fix update procedure (#15732)
Updated messages for configuring and starting the Docmost service.
2026-07-13 11:31:53 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
1e7667e5f8 Update CHANGELOG.md (#15735)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:12:36 +00:00
f828e629b5 fix(hyperion): keep service running after container reboot (#15653)
* fix(hyperion): keep service running after container reboot

The packaged hyperion@.service declares "Requisite=network.target" but is
not ordered After=network.target. Inside an LXC the unit's start job can be
evaluated before network.target is active, and because Requisite= is stricter
than Requires= (it does not pull the unit in or wait for it) the job fails
with "Dependency failed", so Hyperion does not start after a reboot.

Add a systemd drop-in that clears Requisite=; ordering is still provided by
the base unit's Wants=/After=network-online.target.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix Hyperion service startup issue in LXC

Remove Requisite from Hyperion service to ensure it starts correctly in LXC environments.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-07-13 11:12:10 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
4a98e86db1 Update CHANGELOG.md (#15734)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:11:36 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
37b5242c21 Update CHANGELOG.md (#15733)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:11:16 +00:00
Michel Roegl-BrunnerandGitHub a1333222a8 fix(shinobi): remove obsolete --unsafe-perm npm flag (#15730)
Shinobi installs fail on Node.js 22 because npm 10 no longer accepts the
--unsafe-perm CLI flag during npm install.
2026-07-13 11:11:08 +02:00
Michel Roegl-BrunnerandGitHub 12949bce6c fix(build.func): parse script status without jq dependency (#15729)
Replace jq-based PocketBase status parsing with sed/grep so disabled and deleted script checks work on hosts that do not have jq installed yet.
2026-07-13 11:10:49 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
fae0aacf6d Update CHANGELOG.md (#15731)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-13 09:05:39 +00:00
TobiasandGitHub fd20ed1bfc reitti: update to v5 (#15635) 2026-07-13 11:05:11 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
eb3fb749df Update CHANGELOG.md (#15727)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-12 21:22:59 +00:00
push-app-to-main[bot]andGitHub f7fdf419b1 AFFiNE (#15690) 2026-07-12 23:22:39 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
0a7bd0f37e Update CHANGELOG.md (#15724)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-12 16:24:42 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
48483c63b8 fix(immich): correct Python indentation error in ct/immich.sh heredoc patch (#15723)
* Initial plan

* fix: correct Python indentation in immich heredoc patch (ct/immich.sh)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-07-12 18:24:19 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
962c040f44 Update CHANGELOG.md (#15721)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-12 15:49:09 +00:00
ChrisandGitHub c0b2c906fa Immich: Bump version to 3.0.2 (#15668)
* Immich: Bump version to 3.0.2

* Bump vchord to 1.1.1

* Add MickLesk HEIC patch
2026-07-12 17:48:43 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
96100474cc Update CHANGELOG.md (#15715)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-12 00:18:12 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
76335cefe8 Archive old changelog entries (#15714)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-12 00:17:46 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
8fbb4b1988 Update CHANGELOG.md (#15712)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 20:15:36 +00:00
c481c3e24e fix(fileflows): install .NET 10 ASP.NET Core Runtime to match current release (#15702)
* fix(fileflows): install .NET 10 ASP.NET Core Runtime to match current release

FileFlows now ships its server/node binaries targeting .NET 10
(Microsoft.NETCore.App 10.0.0), but the install script still installs the
ASP.NET Core Runtime 8.0. On a fresh install the app therefore cannot start:

  You must install or update .NET to run this application.
  Framework: 'Microsoft.NETCore.App', version '10.0.0' (x64)
  The following frameworks were found:
    8.0.28 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]

so "dotnet FileFlows.Server.dll --systemd install" fails with exit code 150
(service failed to start) and the container aborts (issue #15686).

Bump the runtime to 10.0 on both branches: aspnetcore-runtime-10.0 from
packages.microsoft.com on amd64 (the same repo and package already used by
igotify, rdtclient and technitiumdns) and dotnet-install --channel 10.0 on
arm64.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(fileflows): ensure current .NET runtime on update too

An existing install set up under an older .NET (e.g. aspnetcore-runtime-8.0)
would download a newer FileFlows on update but keep the old runtime, failing to
start with the same framework-not-found error. Mirror the runtime handling used
by technitiumdns/rdtclient in update_script.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 22:15:12 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
dcd1eefdd4 Update CHANGELOG.md (#15709)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 18:07:32 +00:00
f1b2bd0486 fix(adventurelog): allow pnpm build scripts so install/update doesn't abort (#15681)
AdventureLog's frontend install runs a bare `pnpm i`. On pnpm v10+, build
scripts of dependencies (esbuild, es5-ext, svelte-preprocess) are ignored by
default and pnpm aborts with ERR_PNPM_IGNORED_BUILDS (exit 1), so the install
never reaches `pnpm build`. The shipped frontend/pnpm-workspace.yaml already
pins esbuild, so those builds are expected to run.

Enable the builds for this app only by appending `dangerouslyAllowAllBuilds:
true` to the frontend's pnpm-workspace.yaml before `pnpm i`, in both the install
and update paths. The change is guarded so it is not duplicated on re-run, and
it is scoped to AdventureLog (which ships no onlyBuiltDependencies) to avoid the
global config conflict that a repo-wide setting would cause.

Fixes #15670

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 20:07:05 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
42f6b3ccdd Update CHANGELOG.md (#15708)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 18:00:59 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
ed9c80f805 Update CHANGELOG.md (#15707)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 18:00:51 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>CanbiZ
0906341e95 LocalAGI (#15687)
* Add localagi (ct)

* Refactor localagi.sh for better readability

Removed unnecessary blank lines and improved script readability.

---------

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-07-11 20:00:36 +02:00
Slaviša ArežinaGitHubcommunity-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>github-actions[bot] <github-actions[bot]@users.noreply.github.com>
618d578c35 [tools.func]: Add function to handle deployment via GitLab release tags (#15641)
* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* add gl tag handling funcs

---------

Co-authored-by: community-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 20:00:29 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f137f8c894 Update CHANGELOG.md (#15699)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-11 08:49:21 +00:00
pumrumandGitHub 98bedb6ccd Fix spacing on VLAN Input Box in haos-vm.sh (#15696) 2026-07-11 10:48:55 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b958252441 Update CHANGELOG.md (#15692)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 18:48:25 +00:00
wollewandGitHub 92c4fb45a9 Adapt to new artifact filename format for pocket id (#15689)
* Adapt to new artifact filename format for pocket id

* adapt pocket id install to new artifact filename format as well
2026-07-10 20:47:58 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f4e0111ac0 Update CHANGELOG.md (#15680)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 08:57:54 +00:00
push-app-to-main[bot]GitHubpush-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>Sam HeinzCanbiZ
2e4558e262 Squid (#15605)
* Add squid (ct)

* Update ct/squid.sh

* Simplify squid.sh by removing proxy user instructions

Removed instructions for adding a proxy user inside the container.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Sam Heinz <sam@samheinz.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-07-10 10:57:27 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
11139aede7 Update CHANGELOG.md (#15679)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 08:54:13 +00:00
Slaviša ArežinaGitHubcommunity-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6716d8de84 Fireshare: Fix for install and upgrade to v1.7.3 (#15673)
* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix install and upgrade to v1.7.3

---------

Co-authored-by: community-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 10:53:51 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f1e952005e Update CHANGELOG.md (#15678)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 08:53:34 +00:00
Slaviša ArežinaGitHubcommunity-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>github-actions[bot] <github-actions[bot]@users.noreply.github.com>
89b671880a Endurain: Fix update procedure (#15674)
* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update CHANGELOG.md (#15631)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fixed update procedure

* ups

---------

Co-authored-by: community-scripts-pr-app[bot] <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-10 10:53:04 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
25045ef344 Update CHANGELOG.md (#15659)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-09 01:29:01 +00:00
bfab0dd034 fix(pihole): repair Unbound DNS-over-TLS (DoT) forwarding config (#15654)
When the optional Unbound install is chosen with DoT forwarding, the script
truncated (>) /etc/unbound/unbound.conf.d/pi-hole.conf and rewrote it starting
with an indented "tls-cert-bundle:" option that has no "server:" section header.
unbound-checkconf rejects this ("syntax error, is there no section start"), so
"systemctl restart unbound" exits 1 and the install aborts (line 153). The
overwrite also dropped the interface/port 5335 settings Pi-hole forwards to.

Append (>>) the DoT additions to the existing recursive server block instead,
under a proper "server:" section (unbound merges multiple server: clauses), so
the tls-cert-bundle and forward-zone are valid and the resolver keeps listening
on 127.0.0.1:5335. Recursive (non-DoT) mode is unchanged.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 11:28:40 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f1adfc32d3 Update CHANGELOG.md (#15657)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-08 22:57:24 +00:00
ChrisandGitHub 11937bf5fa Opencloud: Bump version to 7.2.1 (#15655) 2026-07-09 00:56:59 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a6a8651000 Update CHANGELOG.md (#15647)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-08 11:04:41 +00:00
CanbiZ (MickLesk)andGitHub 6e55269d9f BabyBuddy: Harden update script (#15642)
Ensure cleanup runs from `/opt/babybuddy` before deleting old files, add `--` to the removal command for safer argument handling, and run `manage.py makemigrations` before `migrate` so database updates are applied reliably during upgrades.
2026-07-08 21:04:13 +10:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e64f5a041d Update CHANGELOG.md (#15644)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-07 20:46:17 +00:00
push-app-to-main[bot]andGitHub 67e0c7e9f8 Forgejo-Runner (#15046) 2026-07-07 22:45:52 +02:00
community-scripts-pr-app[bot]GitHubGitHub Actions <github-actions[bot]@users.noreply.github.com>
87f2189cbb Update .app files (#15636)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-07-06 23:47:06 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a9d71b7d23 Update CHANGELOG.md (#15638)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 21:29:10 +00:00
ChrisandGitHub 2bf6c5e5da Wizarr: Build JS and CSS static assets (#15634) 2026-07-06 23:28:48 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
3143d25caa Update CHANGELOG.md (#15637)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 21:28:09 +00:00
CanbiZ (MickLesk)andGitHub d9d724ce57 Remove: FlowiseAI (#15624) 2026-07-06 23:27:42 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
7a9726b1dd Update CHANGELOG.md (#15633)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 19:15:29 +00:00
Slaviša ArežinaandGitHub 0102d5bd83 fix alignment in various ct end messages (#15632) 2026-07-06 21:15:04 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
8d288ffee3 Update CHANGELOG.md (#15631)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 18:19:14 +00:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e00df4fd6e Update CHANGELOG.md (#15630)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 18:18:57 +00:00
Slaviša ArežinaandGitHub fe7de5e26c Update URL format in rustdeskserver.sh (#15626) 2026-07-06 20:18:45 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
87ccf49dc3 Update CHANGELOG.md (#15629)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 18:18:31 +00:00
c5f905ccf1 cliproxyapi: point setup message at /management.html (#15628)
The completion message previously pointed to the bare host:port,
which serves the proxy API rather than the admin UI. Provider
authentication happens at /management.html.

Co-authored-by: root <root@paperclip.pilz.dev>
2026-07-06 20:18:09 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
bff3c6932a Update CHANGELOG.md (#15621)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 13:42:23 +00:00
Sam HeinzandGitHub 7027d67eb3 attempt to port docker-vm to support arm64 (#15611) 2026-07-06 15:41:55 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
766f8519a3 Update CHANGELOG.md (#15620)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 13:39:09 +00:00
ChrisandGitHub 68cc4f3da7 Immich: Update libvips to 8.18.4 (#15619) 2026-07-06 15:38:39 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
81d6b2beee Update CHANGELOG.md (#15617)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 13:01:09 +00:00
Sam HeinzandGitHub 555953117c fix(plane): don't clobber global app var, breaking /usr/bin/update (#15612) 2026-07-06 15:00:41 +02:00
community-scripts-pr-app[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
93ce08aa72 Update CHANGELOG.md (#15616)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-06 12:44:28 +00:00
MickLesk 728726d5cc fix(docker): safe, interactive per-container update check
Replace the destructive multi-select container update block with a
proper per-container Y/N workflow:

- Unattended / non-interactive (DOCKER_NONINTERACTIVE=1 or no tty):
  skip silently -- no docker pulls, no prompts.
- Interactive: stop_spinner() before any prompt to keep the terminal
  clean, then for each container with a newer image:
    Compose-managed  → prompt Y/N (auto-no after 60 s)
                       → on Y: docker compose pull <service> &&
                                docker compose up -d <service>
    Standalone run   → prompt Y/N (auto-no after 60 s)
                       → on Y: docker pull only; no stop/rm;
                                user is told to recreate manually
- portainer / portainer_agent are excluded (handled earlier in
  setup_docker)

The old code always stopped and removed the container without
recreating it, leaving users with a destroyed service.  Standalone
containers without a Compose project can never be auto-recreated
safely, so only the image is pulled.

Fixes #15601
2026-07-06 14:43:25 +02:00
MickLesk 20740c3ca2 fix(docker): remove interactive container update check from setup_docker
The 'Interactive Container Update Check' block scanned ALL running
Docker containers, pulled their images, then stopped and removed them
with only a message asking the user to manually recreate them.  This
is destructive and outside the scope of the Docker LXC update script,
which is responsible for updating the Docker engine itself and the
Portainer / Portainer-Agent containers that this script originally
installed.

Removes the entire block.  Updates now cover:
  - OS packages (apt)
  - Docker engine (via setup_docker / repo)
  - Portainer CE (if installed by this script)
  - Portainer Agent (if installed by this script)

Self-hosted / user-managed containers are intentionally left alone.

Fixes #15601
2026-07-06 14:38:07 +02:00
132 changed files with 3885 additions and 691 deletions
+40 -7
View File
@@ -12,13 +12,17 @@ body:
Requests may be closed if the application is out of scope, abandoned, too new, not publicly verifiable, or not suitable for a reliable Proxmox VE Helper-Scripts integration.
General requirements:
- The application should be self-hosted.
- The project should have an official public source repository.
- The project should provide official releases, tags, or release tarballs.
- The project should be actively maintained.
- The project should generally have at least 1,000 stars or a comparable public adoption signal.
- The latest official release or tag should not be older than 6 months.
- The project itself should be at least 6 months old.
- The application must be self-hosted.
- The project must have an official public source repository.
- The project must provide official releases, tags, or release tarballs.
- The project must be actively maintained.
- The official source repository must have at least 1,000 stars.
- The latest official release or tag must not be older than 6 months.
- The project itself must be at least 6 months old.
Projects that do not meet these requirements may be closed without further evaluation.
Exceptions to the 1,000-star requirement are rare and require a clearly verifiable, significant public adoption signal.
- type: input
id: application-name
@@ -47,6 +51,35 @@ body:
validations:
required: true
- type: markdown
attributes:
value: |
## ⚠️ Project Eligibility
Before continuing, verify that the requested project meets the minimum requirements below.
**Projects with fewer than 1,000 stars are generally not eligible for a script request.**
Exceptions are only considered where there is a clearly verifiable, significant public adoption signal.
- type: input
id: repository-stars
attributes:
label: Repository Stars
description: Enter the current number of stars of the official source repository.
placeholder: "e.g., 15,000"
validations:
required: true
- type: checkboxes
id: minimum-stars
attributes:
label: Minimum Adoption Requirement
description: Confirm that you have verified the project's public adoption.
options:
- label: The official source repository has at least 1,000 stars.
required: true
- type: textarea
id: app-description
attributes:
+91
View File
@@ -1,3 +1,94 @@
## 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))
## 2026-07-09
### 🚀 Updated Scripts
- fix(pihole): repair Unbound DNS-over-TLS (DoT) forwarding config [@TowyTowy](https://github.com/TowyTowy) ([#15654](https://github.com/community-scripts/ProxmoxVE/pull/15654))
## 2026-07-08
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Opencloud: Bump version to 7.2.1 [@vhsdream](https://github.com/vhsdream) ([#15655](https://github.com/community-scripts/ProxmoxVE/pull/15655))
- BabyBuddy: Harden update script [@MickLesk](https://github.com/MickLesk) ([#15642](https://github.com/community-scripts/ProxmoxVE/pull/15642))
## 2026-07-07
### 🆕 New Scripts
- Forgejo-Runner ([#15046](https://github.com/community-scripts/ProxmoxVE/pull/15046))
## 2026-07-06
### 🚀 Updated Scripts
- Fix alignment in various ct end messages [@tremor021](https://github.com/tremor021) ([#15632](https://github.com/community-scripts/ProxmoxVE/pull/15632))
- Immich: Update libvips to 8.18.4 [@vhsdream](https://github.com/vhsdream) ([#15619](https://github.com/community-scripts/ProxmoxVE/pull/15619))
- #### 🐞 Bug Fixes
- Wizarr: Build JS and CSS static assets [@vhsdream](https://github.com/vhsdream) ([#15634](https://github.com/community-scripts/ProxmoxVE/pull/15634))
- RustDesk Server: Update URL format in rustdeskserver.sh [@tremor021](https://github.com/tremor021) ([#15626](https://github.com/community-scripts/ProxmoxVE/pull/15626))
- attempt to port docker-vm to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15611](https://github.com/community-scripts/ProxmoxVE/pull/15611))
- fix(plane): don't clobber global app var, breaking /usr/bin/update [@asylumexp](https://github.com/asylumexp) ([#15612](https://github.com/community-scripts/ProxmoxVE/pull/15612))
- #### 🔧 Refactor
- cliproxyapi: point setup message at /management.html [@austinpilz](https://github.com/austinpilz) ([#15628](https://github.com/community-scripts/ProxmoxVE/pull/15628))
### 🗑️ Deleted Scripts
- Remove: FlowiseAI [@MickLesk](https://github.com/MickLesk) ([#15624](https://github.com/community-scripts/ProxmoxVE/pull/15624))
## 2026-07-05
### 🆕 New Scripts
- excalidash ([#15604](https://github.com/community-scripts/ProxmoxVE/pull/15604))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix: homarr: cli [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15603](https://github.com/community-scripts/ProxmoxVE/pull/15603))
- immich: vacuum smart_search/face_search before VectorChord bump [@irishpadres](https://github.com/irishpadres) ([#15607](https://github.com/community-scripts/ProxmoxVE/pull/15607))
## 2026-07-04
### 🚀 Updated Scripts
+163
View File
@@ -0,0 +1,163 @@
name: Close PRs Missing Template
on:
pull_request_target:
branches: ["main"]
types: [opened, edited, reopened, synchronize, labeled]
jobs:
validate-pr-template:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
contents: read
steps:
- name: Close PR if it does not follow the PR template
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const prNumber = pr.number;
const author = pr.user.login;
const owner = context.repo.owner;
const repo = context.repo.repo;
const allowedBots = [
"push-app-to-main[bot]",
"push-app-to-main",
"community-scripts-pr-app",
"github-actions[bot]",
"dependabot[bot]",
];
if (allowedBots.includes(author) || author.endsWith("[bot]")) {
core.info(`PR #${prNumber} by bot "${author}" — skipping template validation.`);
return;
}
const association = pr.author_association;
const exemptAssociations = ["OWNER", "MEMBER", "COLLABORATOR"];
if (exemptAssociations.includes(association)) {
core.info(`PR #${prNumber} by ${association} "${author}" — skipping template validation.`);
return;
}
const labels = pr.labels.map((label) => label.name);
const skipLabels = ["automated pr", "keep open"];
if (skipLabels.some((label) => labels.includes(label))) {
core.info(`PR #${prNumber} has a skip label (${labels.join(", ")}) — skipping template validation.`);
return;
}
if (pr.draft) {
core.info(`PR #${prNumber} is a draft — skipping template validation.`);
return;
}
const body = pr.body || "";
const failures = [];
const requiredSections = [
"## ✍️ Description",
"## ✅ Prerequisites",
"## 🛠️ Type of Change",
];
for (const section of requiredSections) {
if (!body.includes(section)) {
failures.push(`Missing required section: \`${section}\``);
}
}
const descriptionMatch = body.match(
/## ✍️ Description\s*\n+([\s\S]*?)(?=\n## )/i
);
const description = (descriptionMatch?.[1] || "").trim();
if (!description) {
failures.push("The **Description** section is empty.");
}
const prerequisiteCheckboxes = [
"**Self-review completed**",
"**Tested thoroughly**",
"**No security risks**",
];
for (const checkbox of prerequisiteCheckboxes) {
const escaped = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escaped}`, "i");
if (!regex.test(body)) {
failures.push(`Prerequisite not checked: ${checkbox}`);
}
}
const typeOfChangeCheckboxes = [
"🐞 **Bug fix**",
"✨ **New feature**",
"💥 **Breaking change**",
"🆕 **New script**",
"🌍 **Website update**",
"🔧 **Refactoring / Code Cleanup**",
"📝 **Documentation update**",
];
const hasTypeChecked = typeOfChangeCheckboxes.some((checkbox) => {
const escaped = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escaped}`, "i");
return regex.test(body);
});
if (!hasTypeChecked) {
failures.push("At least one **Type of Change** checkbox must be checked.");
}
if (failures.length === 0) {
core.info(`PR #${prNumber} follows the PR template.`);
return;
}
core.info(`Closing PR #${prNumber} — template validation failed.`);
const templateUrl =
"https://github.com/community-scripts/ProxmoxVE/blob/main/.github/pull_request_template.md";
const failureList = failures.map((item) => `- ${item}`).join("\n");
const comment = [
`👋 Hi @${author},`,
``,
`This pull request was closed because it does not follow the [PR template](${templateUrl}).`,
``,
`Please fix the following and open a new PR (or reopen this one after updating the description):`,
``,
failureList,
``,
`> Use the template sections, fill in the description, check all prerequisite boxes, and select at least one type of change.`,
``,
`Maintainers can add the \`keep open\` label to exempt a PR from this check.`,
``,
`Thank you for contributing! 🙏`,
].join("\n");
await github.rest.issues.createComment({
owner,
repo,
issue_number: prNumber,
body: comment,
});
await github.rest.pulls.update({
owner,
repo,
pull_number: prNumber,
state: "closed",
});
await github.rest.issues.addLabels({
owner,
repo,
issue_number: prNumber,
labels: ["missing pr template"],
});
+24
View File
@@ -91,6 +91,30 @@ jobs:
let skipped = 0;
for (const branch of candidates) {
// A branch name can be reused after an earlier PR was merged. Never delete a
// branch while it is the head of a current open PR, even if it is also a
// candidate from an older merged PR.
try {
const { data: openPrs } = await github.rest.pulls.list({
owner,
repo,
state: "open",
head: `${owner}:${branch}`,
per_page: 1,
});
if (openPrs.length > 0) {
console.log(`Skipped "${branch}" (head of open PR #${openPrs[0].number})`);
skipped++;
continue;
}
} catch (error) {
// Do not risk deleting a branch if GitHub cannot confirm it has no open PR.
console.log(`Failed to check open PRs for "${branch}": ${error.message}`);
skipped++;
continue;
}
// Confirm the branch still exists and isn't protected.
let branchData;
try {
+230 -133
View File
@@ -74,6 +74,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
@@ -87,7 +90,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
<details>
<summary><h4>July (4 entries)</h4></summary>
<summary><h4>July (11 entries)</h4></summary>
[View July 2026 Changelog](.github/changelogs/2026/07.md)
@@ -499,6 +502,231 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-07-17
### 🆕 New Scripts
- Invidious ([#15824](https://github.com/community-scripts/ProxmoxVE/pull/15824))
- OxiCloud ([#15823](https://github.com/community-scripts/ProxmoxVE/pull/15823))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- esphome: install libusb-1.0-0 for ESP-IDF native builds [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15838](https://github.com/community-scripts/ProxmoxVE/pull/15838))
- #### ✨ New Features
- n8n: unpin / use latest release [@MickLesk](https://github.com/MickLesk) ([#15817](https://github.com/community-scripts/ProxmoxVE/pull/15817))
- Pin Opencloud to v7.3.0 [@vhsdream](https://github.com/vhsdream) ([#15826](https://github.com/community-scripts/ProxmoxVE/pull/15826))
- #### 🔧 Refactor
- SFTPGo: Update APT Repo & Re-Enable Script [@MickLesk](https://github.com/MickLesk) ([#15829](https://github.com/community-scripts/ProxmoxVE/pull/15829))
### 💾 Core
- #### ✨ New Features
- tools.func: enhance rbenv with profile updates / bundle in bashrc [@MickLesk](https://github.com/MickLesk) ([#15822](https://github.com/community-scripts/ProxmoxVE/pull/15822))
- feat(build.func): notify users when already on a pinned script version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15819](https://github.com/community-scripts/ProxmoxVE/pull/15819))
- #### 💥 Breaking Changes
- MongoDB: Implement kernel version check and patch [@MickLesk](https://github.com/MickLesk) ([#15821](https://github.com/community-scripts/ProxmoxVE/pull/15821))
### 🧰 Tools
- #### ✨ 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))
## 2026-07-09
### 🚀 Updated Scripts
- fix(pihole): repair Unbound DNS-over-TLS (DoT) forwarding config [@TowyTowy](https://github.com/TowyTowy) ([#15654](https://github.com/community-scripts/ProxmoxVE/pull/15654))
## 2026-07-08
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Opencloud: Bump version to 7.2.1 [@vhsdream](https://github.com/vhsdream) ([#15655](https://github.com/community-scripts/ProxmoxVE/pull/15655))
- BabyBuddy: Harden update script [@MickLesk](https://github.com/MickLesk) ([#15642](https://github.com/community-scripts/ProxmoxVE/pull/15642))
## 2026-07-07
### 🆕 New Scripts
- Forgejo-Runner ([#15046](https://github.com/community-scripts/ProxmoxVE/pull/15046))
## 2026-07-06
### 🚀 Updated Scripts
- Fix alignment in various ct end messages [@tremor021](https://github.com/tremor021) ([#15632](https://github.com/community-scripts/ProxmoxVE/pull/15632))
- Immich: Update libvips to 8.18.4 [@vhsdream](https://github.com/vhsdream) ([#15619](https://github.com/community-scripts/ProxmoxVE/pull/15619))
- #### 🐞 Bug Fixes
- Wizarr: Build JS and CSS static assets [@vhsdream](https://github.com/vhsdream) ([#15634](https://github.com/community-scripts/ProxmoxVE/pull/15634))
- RustDesk Server: Update URL format in rustdeskserver.sh [@tremor021](https://github.com/tremor021) ([#15626](https://github.com/community-scripts/ProxmoxVE/pull/15626))
- attempt to port docker-vm to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15611](https://github.com/community-scripts/ProxmoxVE/pull/15611))
- fix(plane): don't clobber global app var, breaking /usr/bin/update [@asylumexp](https://github.com/asylumexp) ([#15612](https://github.com/community-scripts/ProxmoxVE/pull/15612))
- #### 🔧 Refactor
- cliproxyapi: point setup message at /management.html [@austinpilz](https://github.com/austinpilz) ([#15628](https://github.com/community-scripts/ProxmoxVE/pull/15628))
### 🗑️ Deleted Scripts
- Remove: FlowiseAI [@MickLesk](https://github.com/MickLesk) ([#15624](https://github.com/community-scripts/ProxmoxVE/pull/15624))
## 2026-07-05
### 🆕 New Scripts
@@ -1026,135 +1254,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### ✨ New Features
- [core] Implement backup and restore functions [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15067](https://github.com/community-scripts/ProxmoxVE/pull/15067))
## 2026-06-11
### 🆕 New Scripts
- Clickhouse ([#15045](https://github.com/community-scripts/ProxmoxVE/pull/15045))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Manyfold: add new dependency [@MickLesk](https://github.com/MickLesk) ([#15040](https://github.com/community-scripts/ProxmoxVE/pull/15040))
- OpenArchiver: switch Rebuild Function [@MickLesk](https://github.com/MickLesk) ([#15042](https://github.com/community-scripts/ProxmoxVE/pull/15042))
- CLIProxyAPI: Save management password to creds file [@tremor021](https://github.com/tremor021) ([#15051](https://github.com/community-scripts/ProxmoxVE/pull/15051))
- Jotty: Fix wrong path test in config restore [@vhsdream](https://github.com/vhsdream) ([#15038](https://github.com/community-scripts/ProxmoxVE/pull/15038))
- Fix for cross-seed after node upgrade [@TorinFrancis](https://github.com/TorinFrancis) ([#15025](https://github.com/community-scripts/ProxmoxVE/pull/15025))
- #### 🔧 Refactor
- Alpine-Nextcloud: Upgrade PHP and dependencies in installation script [@MickLesk](https://github.com/MickLesk) ([#15039](https://github.com/community-scripts/ProxmoxVE/pull/15039))
- [arm64] porting stage 1: set script arm64 statuses to yes [@asylumexp](https://github.com/asylumexp) ([#15052](https://github.com/community-scripts/ProxmoxVE/pull/15052))
### 💾 Core
- #### ✨ New Features
- misc scripts: add support for arm64 [@asylumexp](https://github.com/asylumexp) ([#12639](https://github.com/community-scripts/ProxmoxVE/pull/12639))
- #### 🔧 Refactor
- [arm64] remove logic for custom debian arm64 template [@asylumexp](https://github.com/asylumexp) ([#15050](https://github.com/community-scripts/ProxmoxVE/pull/15050))
### 📚 Documentation
- (github): Revise script request template [@MickLesk](https://github.com/MickLesk) ([#15058](https://github.com/community-scripts/ProxmoxVE/pull/15058))
## 2026-06-10
### 🆕 New Scripts
- Baserow ([#14968](https://github.com/community-scripts/ProxmoxVE/pull/14968))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Koillection: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15033](https://github.com/community-scripts/ProxmoxVE/pull/15033))
## 2026-06-09
### 🆕 New Scripts
- paperclip ([#14990](https://github.com/community-scripts/ProxmoxVE/pull/14990))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- endurain: Install pytz package during backend setup [@MickLesk](https://github.com/MickLesk) ([#15014](https://github.com/community-scripts/ProxmoxVE/pull/15014))
- #### 🔧 Refactor
- Refactor: Proxmox Backup Server - use deb822 [@MickLesk](https://github.com/MickLesk) ([#15013](https://github.com/community-scripts/ProxmoxVE/pull/15013))
## 2026-06-08
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- security: Fix HTTP to HTTPS for all package and repository downloads [@MickLesk](https://github.com/MickLesk) ([#15009](https://github.com/community-scripts/ProxmoxVE/pull/15009))
- homelable: preserve MCP server config across updates [@ferr079](https://github.com/ferr079) ([#14996](https://github.com/community-scripts/ProxmoxVE/pull/14996))
- changedetection: migrate Python install to uv venv [@ferr079](https://github.com/ferr079) ([#14995](https://github.com/community-scripts/ProxmoxVE/pull/14995))
- #### 🔧 Refactor
- Update Flowwiseai to node 24 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14999](https://github.com/community-scripts/ProxmoxVE/pull/14999))
### 🧰 Tools
- #### 🐞 Bug Fixes
- security: Fix MITM RCE vulnerability in microcode scripts (CVE) [@MickLesk](https://github.com/MickLesk) ([#15007](https://github.com/community-scripts/ProxmoxVE/pull/15007))
## 2026-06-07
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Immich: use actual installed PostgreSQL version for vchord package [@MickLesk](https://github.com/MickLesk) ([#14989](https://github.com/community-scripts/ProxmoxVE/pull/14989))
- #### 🔧 Refactor
- Navidrome: remove genereic filebrowser addon setup [@MickLesk](https://github.com/MickLesk) ([#14991](https://github.com/community-scripts/ProxmoxVE/pull/14991))
## 2026-06-06
### 🆕 New Scripts
- Spliit ([#14966](https://github.com/community-scripts/ProxmoxVE/pull/14966))
- Tolgee ([#14965](https://github.com/community-scripts/ProxmoxVE/pull/14965))
- XYOps ([#14967](https://github.com/community-scripts/ProxmoxVE/pull/14967))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Photoprism: Allow env variables with spaces [@Badintral](https://github.com/Badintral) ([#14969](https://github.com/community-scripts/ProxmoxVE/pull/14969))
## 2026-06-05
### 🆕 New Scripts
- MatterJS-Server ([#14951](https://github.com/community-scripts/ProxmoxVE/pull/14951))
- CyberChef ([#14952](https://github.com/community-scripts/ProxmoxVE/pull/14952))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Jackett: Create missing .env file [@tremor021](https://github.com/tremor021) ([#14959](https://github.com/community-scripts/ProxmoxVE/pull/14959))
- OpenThread-BR: use systemd instead of init.d [@tomfrenzel](https://github.com/tomfrenzel) ([#14942](https://github.com/community-scripts/ProxmoxVE/pull/14942))
- #### ✨ New Features
- AMD IGPU support [@Learath](https://github.com/Learath) ([#14944](https://github.com/community-scripts/ProxmoxVE/pull/14944))
- #### 💥 Breaking Changes
- update authentik to 2026.5.2 [@thieneret](https://github.com/thieneret) ([#14846](https://github.com/community-scripts/ProxmoxVE/pull/14846))
- [core] Implement backup and restore functions [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15067](https://github.com/community-scripts/ProxmoxVE/pull/15067))
+1
View File
@@ -60,6 +60,7 @@ function update_script() {
php artisan 2fauth:install
chown -R www-data: /opt/2fauth
chmod -R 755 /opt/2fauth
$STD php artisan 2fauth:fix-passport-key-permissions
$STD systemctl restart php8.4-fpm
$STD systemctl restart nginx
msg_ok "Configured 2FAuth"
+1
View File
@@ -60,6 +60,7 @@ 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"
+128
View File
@@ -0,0 +1,128 @@
#!/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/toeverything/AFFiNE
APP="AFFiNE"
var_tags="${var_tags:-knowledge;notes;workspace}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
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/affine ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE="v0.26.3"
if check_for_gh_release "affine_app" "toeverything/AFFiNE" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
msg_info "Stopping Services"
systemctl stop affine-web affine-worker
msg_ok "Stopped Services"
create_backup /root/.affine/config /root/.affine/storage
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "${RELEASE}" "/opt/affine"
msg_info "Rebuilding Application (Patience)"
cd /opt/affine
source /root/.profile
export PATH="/root/.cargo/bin:/root/.rbenv/shims:$PATH"
set -a && source /opt/affine/.env && set +a
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export VITE_CORE_COMMIT_SHA=$(cat ~/.affine_app)
# Initialize git repo (required for build process)
$STD git init -q
$STD git config user.email "build@local"
$STD git config user.name "Build"
$STD git add -A
$STD git commit -q -m "update"
# Force Turbo to run sequentially
mkdir -p /opt/affine/.turbo
cat <<TURBO >/opt/affine/.turbo/config.json
{
"concurrency": 1
}
TURBO
$STD corepack enable
$STD corepack prepare yarn@4.12.0 --activate
$STD yarn config set enableTelemetry 0
export NODE_OPTIONS="--max-old-space-size=2048"
$STD yarn install
$STD npm install -g typescript
$STD yarn affine @affine/native build
$STD yarn affine @affine/server-native build
# Create architecture-specific symlinks
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.x64.node
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.arm64.node
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.armv7.node
$STD yarn affine init
$STD yarn affine build -p @affine/reader
$STD yarn affine build -p @affine/server
export NODE_OPTIONS="--max-old-space-size=4096"
$STD yarn affine build -p @affine/web
$STD yarn affine build -p @affine/admin
# Copy web assets
mkdir -p /opt/affine/packages/backend/server/static
cp -r /opt/affine/packages/frontend/apps/web/dist/* /opt/affine/packages/backend/server/static/
mkdir -p /opt/affine/packages/backend/server/static/admin
cp -r /opt/affine/packages/frontend/admin/dist/* /opt/affine/packages/backend/server/static/admin/
# Mobile manifest placeholder
mkdir -p /opt/affine/packages/backend/server/static/mobile
echo '{"publicPath":"/","js":[],"css":[],"gitHash":"","description":""}' \
>/opt/affine/packages/backend/server/static/mobile/assets-manifest.json
# Run migrations
cd /opt/affine/packages/backend/server
set -a && source /opt/affine/.env && set +a
$STD node ./scripts/self-host-predeploy.js
restore_backup
msg_info "Starting Services"
systemctl start affine-web affine-worker
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}http://${IP}:3010/admin${CL}"
+2 -2
View File
@@ -54,5 +54,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 IP:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${INFO}${YW}Access it using the following IP:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
+3 -3
View File
@@ -33,7 +33,7 @@ function update_script() {
INSTALLED=$(cat ~/.airflow 2>/dev/null || echo "0")
LATEST=$(curl -fsSL "https://pypi.org/pypi/apache-airflow/json" | jq -r '.info.version')
if [[ "$INSTALLED" == "$LATEST" ]]; then
if [[ $INSTALLED == "$LATEST" ]]; then
msg_ok "Already on the latest version (${LATEST})"
exit
fi
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
+60 -60
View File
@@ -30,7 +30,7 @@ function update_script() {
exit
fi
read -r MAJOR MINOR PATCH <<< "$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
read -r MAJOR MINOR PATCH <<<"$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
msg_info "Update dependencies"
ensure_dependencies crossbuild-essential-$(arch_resolve) gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu cmake clang libunwind-18-dev
@@ -66,26 +66,26 @@ function update_script() {
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
msg_info "Stopping Services"
systemctl stop authentik-server authentik-worker
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
systemctl stop authentik-ldap
fi
if [[ $(systemctl is-active authentik-rac) == active ]]; then
systemctl stop authentik-rac
fi
if [[ $(systemctl is-active authentik-radius) == active ]]; then
systemctl stop authentik-radius
fi
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
systemctl stop authentik-ldap
fi
if [[ $(systemctl is-active authentik-rac) == active ]]; then
systemctl stop authentik-rac
fi
if [[ $(systemctl is-active authentik-radius) == active ]]; then
systemctl stop authentik-radius
fi
msg_ok "Stopped Services"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
msg_info "Configuring rust"
cd /opt/authentik
$STD rustup install
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
msg_ok "Configured rust"
msg_info "Configuring rust"
cd /opt/authentik
$STD rustup install
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
msg_ok "Configured rust"
msg_info "Updating web"
msg_info "Updating web"
cd /opt/authentik/web
export NODE_ENV="production"
$STD npm install
@@ -99,18 +99,18 @@ function update_script() {
export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc"
$STD go mod download
$STD go build -o /opt/authentik/authentik-server ./cmd/server
$STD go build -o /opt/authentik/ldap ./cmd/ldap
$STD go build -o /opt/authentik/rac ./cmd/rac
$STD go build -o /opt/authentik/radius ./cmd/radius
$STD go build -o /opt/authentik/ldap ./cmd/ldap
$STD go build -o /opt/authentik/rac ./cmd/rac
$STD go build -o /opt/authentik/radius ./cmd/radius
msg_ok "Updated go proxy"
msg_info "Building worker"
export AWS_LC_FIPS_SYS_CC="clang"
cd /opt/authentik
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
cp ./target/release/authentik /opt/authentik/authentik-worker
rm -r ./target
msg_ok "Built worker"
msg_info "Building worker"
export AWS_LC_FIPS_SYS_CC="clang"
cd /opt/authentik
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
cp ./target/release/authentik /opt/authentik/authentik-worker
rm -r ./target
msg_ok "Built worker"
msg_info "Updating python server"
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
@@ -125,26 +125,26 @@ function update_script() {
msg_ok "Updated python server"
if [[ $MAJOR == 2026 && $MINOR -lt 5 ]]; then
msg_info "Updating Worker and Server config"
cp /etc/authentik/config.yml /etc/authentik/config.bak
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
yq -i ".listen.debug_tokio = \"[::]:6669\"" /etc/authentik/config.yml
yq -i ".log.rust_log.console_subscriber = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.h2 = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.hyper_util = \"warn\"" /etc/authentik/config.yml
yq -i ".log.rust_log.mio = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.notify = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.reqwest = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.runtime = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.rustls = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.sqlx = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.sqlx_postgres = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.tokio = \"info\"" /etc/authentik/config.yml
yq -i ".log.rust_log.tungstenite = \"info\"" /etc/authentik/config.yml
yq -i ".web.workers = 2" /etc/authentik/config.yml
mv /etc/default/authentik /etc/default/authentik.bak
cat <<EOF >/etc/default/authentik-server
msg_info "Updating Worker and Server config"
cp /etc/authentik/config.yml /etc/authentik/config.bak
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
yq -i '.listen.debug_tokio = "[::]:6669"' /etc/authentik/config.yml
yq -i '.log.rust_log.console_subscriber = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.h2 = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.hyper_util = "warn"' /etc/authentik/config.yml
yq -i '.log.rust_log.mio = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.notify = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.reqwest = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.runtime = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.rustls = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.sqlx = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.sqlx_postgres = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.tokio = "info"' /etc/authentik/config.yml
yq -i '.log.rust_log.tungstenite = "info"' /etc/authentik/config.yml
yq -i ".web.workers = 2" /etc/authentik/config.yml
mv /etc/default/authentik /etc/default/authentik.bak
cat <<EOF >/etc/default/authentik-server
TMPDIR=/dev/shm/
UV_LINK_MODE=copy
UV_PYTHON_DOWNLOADS=0
@@ -159,7 +159,7 @@ AUTHENTIK_LISTEN__HTTP="[::]:9000"
AUTHENTIK_LISTEN__HTTPS="[::]:9443"
AUTHENTIK_LISTEN__METRICS="[::]:9300"
EOF
cat <<EOF >/etc/default/authentik-worker
cat <<EOF >/etc/default/authentik-worker
TMPDIR=/dev/shm/
UV_LINK_MODE=copy
UV_PYTHON_DOWNLOADS=0
@@ -174,11 +174,11 @@ AUTHENTIK_LISTEN__HTTP="[::]:8000"
AUTHENTIK_LISTEN__HTTPS="[::]:8443"
AUTHENTIK_LISTEN__METRICS="[::]:8300"
EOF
msg_ok "Updated Worker and Server config!"
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
msg_ok "Updated Worker and Server config!"
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
msg_info "Updating services"
cat <<EOF >/etc/systemd/system/authentik-server.service
msg_info "Updating services"
cat <<EOF >/etc/systemd/system/authentik-server.service
[Unit]
Description=authentik Go Server (API Gateway)
After=network.target
@@ -198,7 +198,7 @@ EnvironmentFile=/etc/default/authentik-server
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/authentik-worker.service
cat <<EOF >/etc/systemd/system/authentik-worker.service
[Unit]
Description=authentik Worker
After=network.target postgresql.service
@@ -217,21 +217,21 @@ RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
msg_ok "Updated services"
fi
systemctl daemon-reload
msg_ok "Updated services"
fi
fi
msg_info "Starting Services"
systemctl start authentik-server authentik-worker
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
systemctl start authentik-ldap
systemctl start authentik-ldap
fi
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
systemctl start authentik-rac
systemctl start authentik-rac
fi
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
systemctl start authentik-radius
systemctl start authentik-radius
fi
msg_ok "Started Services"
msg_ok "Updated successfully!"
@@ -270,5 +270,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 "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}"
+3 -1
View File
@@ -40,7 +40,8 @@ function update_script() {
create_backup /opt/babybuddy/babybuddy/settings/production.py
msg_info "Cleaning old files"
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
cd /opt/babybuddy || exit
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf -- {} +
msg_ok "Cleaned old files"
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
@@ -51,6 +52,7 @@ function update_script() {
source .venv/bin/activate
$STD uv pip install -r requirements.txt
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
$STD python manage.py makemigrations
$STD python manage.py migrate
msg_ok "Updated ${APP}"
+2 -2
View File
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${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)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/daya0576/beaverhabits
APP="BeaverHabits"
var_tags="${var_tags:-habits;tracking;productivity}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
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 [[ ! -d /opt/beaverhabits ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "beaverhabits" "daya0576/beaverhabits"; then
msg_info "Stopping Service"
systemctl stop beaverhabits
msg_ok "Stopped Service"
create_backup /opt/beaverhabits/.user
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "beaverhabits" "daya0576/beaverhabits" "tarball"
msg_info "Syncing Dependencies"
cd /opt/beaverhabits
$STD uv sync --no-dev
msg_ok "Synced Dependencies"
restore_backup
msg_info "Starting Service"
systemctl start beaverhabits
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/register{CL}"
+1 -1
View File
@@ -37,7 +37,7 @@ function update_script() {
systemctl stop birdnet
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve).tar.gz"
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve)*.tar.gz"
msg_info "Deploying Binary"
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
+2 -2
View File
@@ -75,5 +75,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+2 -2
View File
@@ -41,5 +41,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 "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8123${CL}"
+2 -2
View File
@@ -52,5 +52,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}:8317${CL}"
echo -e "${INFO}${YW}Authenticate your AI providers via the management panel at:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8317/management.html${CL}"
+1 -1
View File
@@ -52,5 +52,5 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access cross-seed API using the following URL:${CL}"
echo -e "${INFO}${YW}Access cross-seed API using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:2468${CL}"
+4 -4
View File
@@ -26,8 +26,8 @@ function update_script() {
check_container_resources
if [[ ! -d /opt/cyberchef ]]; then
msg_error "No ${APP} Installation Found!"
exit
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "cyberchef" "gchq/CyberChef"; then
@@ -58,5 +58,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
+3 -2
View File
@@ -39,7 +39,6 @@ function update_script() {
create_backup /opt/docmost/.env \
/opt/docmost/data
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
restore_backup
@@ -54,9 +53,11 @@ function update_script() {
sed -i '/^@Module({$/i @Global()' /opt/docmost/apps/server/src/core/core.module.ts
fi
msg_info "Configuring Docmost"
cd /opt/docmost
$STD pnpm install --force
$STD pnpm build
msg_ok "Updated ${APP}"
msg_ok "Configured Docmost"
msg_info "Starting Service"
systemctl start docmost
+2
View File
@@ -35,6 +35,8 @@ function update_script() {
systemctl stop docuseal docuseal-sidekiq
msg_ok "Stopped Services"
ensure_dependencies libleptonica-dev libleptonica6
create_backup /opt/docuseal/.env \
/opt/docuseal/data
+4 -13
View File
@@ -34,31 +34,22 @@ function update_script() {
systemctl stop endurain
msg_ok "Stopped Service"
msg_info "Creating Backup"
cp /opt/endurain/.env /opt/endurain.env
cp /opt/endurain/frontend/dist/env.js /opt/endurain.env.js
msg_ok "Created Backup"
create_backup /opt/endurain/.env /opt/endurain/frontend/dist/env.js
CLEAN_INSTALL=1 fetch_and_deploy_codeberg_release "endurain" "endurain-project/endurain" "tarball" "latest" "/opt/endurain"
msg_info "Preparing Update"
cd /opt/endurain
rm -rf \
/opt/endurain/{docs,example.env,screenshot_01.png} \
/opt/endurain/docker* \
/opt/endurain/*.yml
cp /opt/endurain.env /opt/endurain/.env
rm /opt/endurain.env
rm -rf /opt/endurain/{docs,example.env,screenshot_01.png} /opt/endurain/docker* /opt/endurain/*.yml
msg_ok "Prepared Update"
msg_info "Updating Frontend"
cd /opt/endurain/frontend
$STD npm ci
$STD npm run build
cp /opt/endurain.env.js /opt/endurain/frontend/dist/env.js
rm /opt/endurain.env.js
msg_ok "Updated Frontend"
restore_backup
msg_info "Updating Backend"
cd /opt/endurain/backend
UV_VERSION=$(grep -Po 'required-version\s*=\s*"\K[^"]+' pyproject.toml 2>/dev/null || echo "0.11.18")
+1
View File
@@ -28,6 +28,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
ensure_dependencies libusb-1.0-0
msg_info "Stopping Service"
systemctl stop esphome-device-builder 2>/dev/null || true
+2 -2
View File
@@ -61,5 +61,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 "${TAB}${GATEWAY}${BGN}http://${IP}:9001${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:9001${CL}"
+2 -2
View File
@@ -75,5 +75,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 "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:6767${CL}"
+2 -2
View File
@@ -75,5 +75,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 "${TAB}${GATEWAY}${BGN}http://${IP}:9180${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:9180${CL}"
+73 -18
View File
@@ -31,28 +31,83 @@ function update_script() {
exit
fi
update_available=$(curl -fsSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable)
if [[ "${update_available}" == "true" ]]; then
msg_info "Stopping Service"
systemctl --all stop 'fileflows*'
msg_info "Stopped Service"
local proceed=false
msg_info "Creating Backup"
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf "$backup_filename" -C /opt/fileflows Data
msg_ok "Backup Created"
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
msg_info "Starting Service"
systemctl --all start 'fileflows*'
msg_ok "Started Service"
msg_ok "Updated successfully!"
if systemctl list-unit-files 'fileflows.service' --no-legend 2>/dev/null | grep -q '^fileflows\.service'; then
tmp=$(mktemp)
http_code=$(curl -sSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' -o "$tmp" -w '%{http_code}' 2>/dev/null) || http_code="000"
if [[ "$http_code" == "200" ]]; then
update_available=$(jq -r '.UpdateAvailable // false' "$tmp" 2>/dev/null)
rm -f "$tmp"
if [[ "${update_available}" == "true" ]]; then
proceed=true
else
msg_ok "No update required. ${APP} is already at latest version"
exit
fi
else
rm -f "$tmp"
if [[ "$http_code" == "401" ]]; then
msg_warn "Could not check for updates: API returned 401 (security may be enabled)."
else
msg_warn "Could not check for updates: API unreachable (HTTP ${http_code})."
fi
if [[ "${FORCE_UPDATE:-}" == "1" ]]; then
proceed=true
else
read -r -p "${TAB3}Force update without version check? [y/N]: " CONFIRM
if [[ "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
proceed=true
else
msg_error "Update aborted."
exit
fi
fi
fi
else
msg_ok "No update required. ${APP} is already at latest version"
proceed=true
fi
if [[ "$proceed" != "true" ]]; then
exit
fi
msg_info "Stopping Service"
systemctl --all stop 'fileflows*'
msg_ok "Stopped Service"
msg_info "Creating Backup"
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf "$backup_filename" -C /opt/fileflows Data
msg_ok "Backup Created"
msg_info "Ensuring ASP.NET Core Runtime"
if [[ "$(arch_resolve)" == "arm64" ]]; then
if [[ ! -x /usr/lib/dotnet10/dotnet ]]; then
curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
$STD bash /tmp/dotnet-install.sh --channel 10.0 --runtime aspnetcore --install-dir /usr/lib/dotnet10
ln -sf /usr/lib/dotnet10/dotnet /usr/bin/dotnet
rm -f /tmp/dotnet-install.sh
fi
elif ! is_package_installed "aspnetcore-runtime-10.0"; then
$STD apt remove -y aspnetcore-runtime-8.0 aspnetcore-runtime-9.0 2>/dev/null || true
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie"
$STD apt install -y aspnetcore-runtime-10.0
fi
msg_ok "Ensured ASP.NET Core Runtime"
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
msg_info "Starting Service"
systemctl --all start 'fileflows*'
msg_ok "Started Service"
msg_ok "Updated successfully!"
exit
}
+14 -7
View File
@@ -35,12 +35,22 @@ function update_script() {
systemctl stop fireshare
msg_ok "Stopped Service"
mv /opt/fireshare/fireshare.env /opt
create_backup /opt/fireshare/fireshare.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fireshare" "ShaneIsrael/fireshare" "tarball"
mv /opt/fireshare.env /opt/fireshare
restore_backup
rm -f /usr/local/bin/fireshare
msg_info "Updating Fireshare"
if ! grep -q "__FIRESHARE_PORT__" /etc/nginx/nginx.conf; then
cp /opt/fireshare/app/nginx/prod.conf /etc/nginx/nginx.conf
sed -i 's|root /processed/|root /opt/fireshare-processed/|g' /etc/nginx/nginx.conf
sed -i 's/^user[[:space:]]\+nginx;/user root;/' /etc/nginx/nginx.conf
sed -i 's|root[[:space:]]\+/app/build;|root /opt/fireshare/app/client/build;|' /etc/nginx/nginx.conf
sed -i 's/__FIRESHARE_PORT__/80/g' /etc/nginx/nginx.conf
cp /opt/fireshare/app/nginx/error.html /etc/nginx/
cp /opt/fireshare/app/nginx/api_unavailable.html /etc/nginx/
fi
msg_info "Configuring Fireshare"
cd /opt/fireshare
$STD uv venv --clear
$STD .venv/bin/python -m ensurepip --upgrade
@@ -53,13 +63,10 @@ function update_script() {
export VIDEO_DIRECTORY=/opt/fireshare-videos
export PROCESSED_DIRECTORY=/opt/fireshare-processed
$STD uv run flask db upgrade
msg_info "Building Fireshare Client"
cd /opt/fireshare/app/client
$STD npm install
$STD npm run build
msg_ok "Built Fireshare Client"
msg_ok "Updated Fireshare"
msg_ok "Configured Fireshare"
msg_info "Starting Service"
systemctl start fireshare
+3 -3
View File
@@ -36,7 +36,7 @@ function update_script() {
msg_ok "Stopped Service"
create_backup /opt/flame/.env \
/opt/flame/data
/opt/flame/data
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
restore_backup
@@ -65,5 +65,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 "${TAB}${GATEWAY}${BGN}http://${IP}:5005${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:5005${CL}"
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://flowiseai.com/ | Github: https://github.com/FlowiseAI/Flowise
APP="FlowiseAI"
var_tags="${var_tags:-low-code}"
var_disk="${var_disk:-10}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}"
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/systemd/system/flowise.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
msg_info "Updating FlowiseAI (this may take some time)"
systemctl stop flowise
$STD pnpm add -g flowise
if grep -q 'ExecStart=npx flowise start' /etc/systemd/system/flowise.service; then
sed -i 's|ExecStart=npx flowise start|ExecStart=flowise start|' /etc/systemd/system/flowise.service
systemctl daemon-reload
fi
systemctl start flowise
msg_ok "Updated FlowiseAI"
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}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+2 -2
View File
@@ -60,5 +60,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 "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}https://${IP}:8443${CL}"
+79
View File
@@ -0,0 +1,79 @@
#!/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: Simon Friedrich (lengschder97)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://forgejo.org/
APP="Forgejo-Runner"
var_tags="${var_tags:-ci}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}"
var_nesting="${var_nesting:-1}"
var_keyctl="${var_keyctl:-1}"
export var_forgejo_instance="${var_forgejo_instance:-}"
export var_forgejo_runner_token="${var_forgejo_runner_token:-}"
export var_runner_labels="${var_runner_labels:-}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/local/bin/forgejo-runner ]]; then
msg_error "No ${APP} installation found!"
exit 1
fi
RELEASE=$(curl -fsSL https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
if [[ "${RELEASE}" == "$(cat ~/.forgejo-runner 2>/dev/null)" ]]; then
msg_ok "No update required. ${APP} is already at v${RELEASE}"
exit
fi
msg_info "Stopping Services"
systemctl stop forgejo-runner
msg_ok "Stopped Services"
msg_info "Updating Forgejo Runner to v${RELEASE}"
curl -fsSL "https://code.forgejo.org/forgejo/runner/releases/download/v${RELEASE}/forgejo-runner-${RELEASE}-linux-$(arch_resolve)" -o /usr/local/bin/forgejo-runner
chmod +x /usr/local/bin/forgejo-runner
echo "${RELEASE}" >~/.forgejo-runner
msg_ok "Updated Forgejo Runner"
msg_info "Starting Services"
systemctl start forgejo-runner
msg_ok "Started Services"
msg_ok "Updated successfully!"
exit
}
if [[ -n "${mode:-}" ]]; then
if [[ -z "${var_forgejo_instance:-}" ]]; then
msg_error "var_forgejo_instance is required for unattended installs."
exit 1
fi
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
msg_error "var_forgejo_runner_token is required for unattended installs."
exit 1
fi
fi
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} After first boot, check your Forgejo Instance for the new Runner.${CL}"
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Raffaele (rafspiny)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://getgrav.org/
APP="Grav"
var_tags="${var_tags:-cms}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
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/grav" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "grav" "getgrav/grav"; then
msg_info "Creating Backup"
cd /opt/grav
bin/grav backup -nq
msg_ok "Backup Created"
bin/gpm self-upgrade -y
cd -
chown -R www-data:www-data /opt/grav
msg_ok "Update Successful"
fi
exit
}
start
build_container
description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:80${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
@@ -0,0 +1,6 @@
____ _ ___
/ _/___ _ __(_)___/ (_)___ __ _______
/ // __ \ | / / / __ / / __ \/ / / / ___/
_/ // / / / |/ / / /_/ / / /_/ / /_/ (__ )
/___/_/ /_/|___/_/\__,_/_/\____/\__,_/____/
+6
View File
@@ -0,0 +1,6 @@
__ _____ ___ __ _
/ / ___ ____ _/ __/ | / (_) /__(_)
/ / / _ \/ __ `/ /_ | | /| / / / //_/ /
/ /___/ __/ /_/ / __/ | |/ |/ / / ,< / /
/_____/\___/\__,_/_/ |__/|__/_/_/|_/_/
+6
View File
@@ -0,0 +1,6 @@
__ _____ __________
/ / ____ _________ _/ / | / ____/ _/
/ / / __ \/ ___/ __ `/ / /| |/ / __ / /
/ /___/ /_/ / /__/ /_/ / / ___ / /_/ // /
/_____/\____/\___/\__,_/_/_/ |_\____/___/
+6
View File
@@ -0,0 +1,6 @@
_ __ __
/ | / /__ _ __/ /____ _________ ___
/ |/ / _ \| |/_/ __/ _ \/ ___/ __ `__ \
/ /| / __/> </ /_/ __/ / / / / / / /
/_/ |_/\___/_/|_|\__/\___/_/ /_/ /_/ /_/
+6
View File
@@ -0,0 +1,6 @@
_ __ __ ____ _
/ | / /___ / /____ / __ \(_)_____________ _ _____ _______ __
/ |/ / __ \/ __/ _ \/ / / / / ___/ ___/ __ \ | / / _ \/ ___/ / / /
/ /| / /_/ / /_/ __/ /_/ / (__ ) /__/ /_/ / |/ / __/ / / /_/ /
/_/ |_/\____/\__/\___/_____/_/____/\___/\____/|___/\___/_/ \__, /
/____/
+6
View File
@@ -0,0 +1,6 @@
____ _ ________ __
/ __ \_ __(_) ____/ /___ __ ______/ /
/ / / / |/_/ / / / / __ \/ / / / __ /
/ /_/ /> </ / /___/ / /_/ / /_/ / /_/ /
\____/_/|_/_/\____/_/\____/\__,_/\__,_/
+6
View File
@@ -0,0 +1,6 @@
_____ _ __
/ ___/____ ___ __(_)___/ /
\__ \/ __ `/ / / / / __ /
___/ / /_/ / /_/ / / /_/ /
/____/\__, /\__,_/_/\__,_/
/_/
+6
View File
@@ -0,0 +1,6 @@
_____ _
/ ___/__ ______ _____ (_)___
\__ \/ / / / __ \/ ___/_____/ / __ \
___/ / /_/ / / / / /__/_____/ / / / /
/____/\__, /_/ /_/\___/ /_/_/ /_/
/____/
+6
View File
@@ -0,0 +1,6 @@
__ __ _
\ \/ /_ ___ ______ ____ ___ (_)
\ / / / / | / / __ \/ __ `__ \/ /
/ / /_/ /| |/ / /_/ / / / / / / /
/_/\__,_/ |___/\____/_/ /_/ /_/_/
+1 -2
View File
@@ -30,7 +30,6 @@ function update_script() {
exit
fi
if check_for_gh_release "hev-socks5-server" "heiher/hev-socks5-server"; then
msg_info "Stopping Service"
systemctl stop hev-socks5-server
@@ -52,6 +51,6 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it with a SOCKS5 client using the following URL:${CL}"
echo -e "${INFO}${YW}Access it with a SOCKS5 client using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}${IP}:1080${CL}"
echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}"
+28 -4
View File
@@ -110,7 +110,7 @@ EOF
msg_ok "Image-processing libraries up to date"
fi
RELEASE="v3.0.1"
RELEASE="v3.0.3"
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
msg_info "Enabling Maintenance Mode"
@@ -124,7 +124,9 @@ EOF
systemctl stop immich-web
systemctl stop immich-ml
msg_ok "Stopped Services"
VCHORD_RELEASE="1.0.0"
VCHORD_RELEASE="1.1.1"
PG_VERSION=$(ls /etc/postgresql/ 2>/dev/null | sort -V | tail -1)
PG_VERSION=${PG_VERSION:-16}
[[ -f ~/.vchord_version ]] && mv ~/.vchord_version ~/.vectorchord
if check_for_gh_release "VectorChord" "tensorchord/VectorChord" "${VCHORD_RELEASE}" "updated together with Immich after testing"; then
# dead tuples in smart_search/face_search make the REINDEX below fail with
@@ -132,7 +134,7 @@ EOF
# while still on the old extension version, a post-upgrade vacuum errors instead
$STD sudo -u postgres psql -d immich -c "VACUUM (ANALYZE) smart_search;"
$STD sudo -u postgres psql -d immich -c "VACUUM (ANALYZE) face_search;"
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-16-vchord_*_$(arch_resolve).deb"
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-${PG_VERSION}-vchord_*_$(arch_resolve).deb"
systemctl restart postgresql
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vector UPDATE;"
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
@@ -328,6 +330,27 @@ EOF
systemctl daemon-reload
fi
# MickLesk temporary patch for HEIC thumbnail gen
msg_info "Patching media.repository.js"
MEDIA_REPO_JS="/opt/immich/app/dist/repositories/media.repository.js"
if [[ -f "$MEDIA_REPO_JS" ]]; then
python3 - <<'PY'
from pathlib import Path
p = Path('/opt/immich/app/dist/repositories/media.repository.js')
s = p.read_text()
old = "(0, sharp_1.default)(input).metadata()"
new = "(0, sharp_1.default)(input, { unlimited: true, limitInputPixels: false }).metadata()"
if new in s:
print('hotfix already there')
elif old in s:
p.write_text(s.replace(old, new, 1))
print('hotfix applied')
else:
print('pattern not found, skipped')
PY
fi
msg_ok "Patched media.repository.js"
# chown excluding upload dir contents (may be a mount with restricted permissions)
chown immich:immich "$INSTALL_DIR"
find "$INSTALL_DIR" -maxdepth 1 -mindepth 1 ! -name upload -exec chown -R immich:immich {} +
@@ -471,13 +494,14 @@ function compile_imagemagick() {
function compile_libvips() {
SOURCE=$SOURCE_DIR/libvips
LIBVIPS_REVISION="3664cfc5dc2c5661288f5bf5a85ccc51c64c1626"
LIBVIPS_REVISION="e01a4797cabe77d457fdfa7d776b7a7e7ca6d6a7"
if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libvips"
[[ -d "$SOURCE" ]] && rm -rf "$SOURCE"
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBVIPS_REVISION"
$STD git apply "$BASE_DIR"/server/sources/libvips-patches/0001-put-other-loaders-ahead-of-dcrawload.patch
$STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
cd build
$STD ninja install
+77
View File
@@ -0,0 +1,77 @@
#!/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: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/iv-org/invidious
APP="Invidious"
var_tags="${var_tags:-streaming}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
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 [[ ! -d /opt/invidious ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "Invidious" "iv-org/invidious"; then
msg_info "Stopping services"
$STD systemctl stop invidious-companion invidious
msg_ok "Stopped services"
create_backup /opt/invidious/config/config.yml
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Invidious" "iv-org/invidious" "tarball" "latest" "/opt/invidious"
if check_for_gh_release "Invidious-Companion" "iv-org/invidious-companion"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Invidious-Companion" "iv-org/invidious-companion" "prebuild" "latest" "/opt/invidious-companion" "invidious_companion-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz"
fi
msg_info "Rebuilding Invidious"
cd /opt/invidious
INVIDIOUS_VERSION="$(cat ~/.invidious 2>/dev/null || echo "unknown")"
INVIDIOUS_VERSION="${INVIDIOUS_VERSION#v}"
sed -i \
-e "s~^\(\s*CURRENT_BRANCH\s*=\).*~\1 \"master\"~" \
-e "s~^\(\s*CURRENT_COMMIT\s*=\).*~\1 \"\"~" \
-e "s~^\(\s*CURRENT_VERSION\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*CURRENT_TAG\s*=\).*~\1 \"${INVIDIOUS_VERSION}\"~" \
-e "s~^\(\s*ASSET_COMMIT\s*=\).*~\1 \"\"~" \
src/invidious.cr
$STD make
msg_ok "Rebuilt Invidious"
restore_backup
msg_info "Starting services"
$STD systemctl start invidious invidious-companion
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}http://${IP}:3000${CL}"
+2 -2
View File
@@ -52,5 +52,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 "${TAB}${GATEWAY}${BGN}http://${IP}:26000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:26000${CL}"
+4 -4
View File
@@ -37,12 +37,12 @@ function update_script() {
msg_ok "Updated Package Index"
CANDIDATE=$(apt-cache policy kiwix-tools | awk '/Candidate:/{print $2}')
if [[ -z "$CANDIDATE" || "$CANDIDATE" == "(none)" ]]; then
if [[ -z $CANDIDATE || $CANDIDATE == "(none)" ]]; then
msg_error "No Candidate Version Found for kiwix-tools"
exit
fi
if [[ "$CURRENT" == "$CANDIDATE" ]]; then
if [[ $CURRENT == "$CANDIDATE" ]]; then
echo "${CURRENT}" >/root/.kiwix
msg_ok "Already on latest version: ${CURRENT}"
exit
@@ -71,5 +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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
+2 -2
View File
@@ -59,5 +59,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+1 -1
View File
@@ -83,5 +83,5 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access Kometa Quickstart:${CL}"
echo -e "${INFO}${YW}Access Kometa Quickstart:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:7171${CL}"
+57
View File
@@ -0,0 +1,57 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/perber/leafwiki
APP="LeafWiki"
var_tags="${var_tags:-wiki;markdown;notes}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
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 /usr/local/bin/leafwiki ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "leafwiki" "perber/leafwiki"; then
msg_info "Stopping Service"
systemctl stop leafwiki
msg_ok "Stopped Service"
create_backup /opt/leafwiki/data
fetch_and_deploy_gh_release "leafwiki" "perber/leafwiki" "singlefile" "latest" "/usr/local/bin" "leafwiki-v*-linux-$(arch_resolve)"
restore_backup
msg_info "Starting Service"
systemctl start leafwiki
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}"
+67
View File
@@ -0,0 +1,67 @@
#!/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: BillyOutlast
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mudler/LocalAGI
APP="LocalAGI"
var_tags="${var_tags:-ai}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-no}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/localagi ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "localagi" "mudler/LocalAGI"; then
msg_info "Stopping Service"
systemctl stop localagi
msg_ok "Stopped Service"
create_backup /opt/localagi/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "localagi" "mudler/LocalAGI" "tarball" "latest" "/opt/localagi"
restore_backup
msg_info "Building LocalAGI"
cd /opt/localagi/webui/react-ui
$STD bun install
$STD bun run build
cd /opt/localagi
$STD go build -o /usr/local/bin/localagi
msg_ok "Updated LocalAGI successfully"
msg_info "Starting Service"
systemctl start localagi
msg_ok "Started Service"
msg_ok "Updated successfully!"
exit
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}:3000${CL}"
+31 -31
View File
@@ -37,38 +37,38 @@ function update_script() {
case $CHOICE in
1)
msg_info "Stopping Loki"
systemctl stop loki
msg_ok "Stopped Loki"
msg_info "Stopping Loki"
systemctl stop loki
msg_ok "Stopped Loki"
msg_info "Updating Loki"
$STD apt update
$STD apt install -y --only-upgrade loki
msg_ok "Updated Loki"
msg_info "Updating Loki"
$STD apt update
$STD apt install -y --only-upgrade loki
msg_ok "Updated Loki"
msg_info "Starting Loki"
systemctl start loki
msg_ok "Started Loki"
msg_ok "Updated successfully!"
exit
;;
2)
msg_info "Configuring Loki to listen on 0.0.0.0"
sed -i 's/http_listen_address:.*/http_listen_address: 0.0.0.0/' /etc/loki/config.yml
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
systemctl restart loki
msg_ok "Configured Loki to listen on 0.0.0.0"
exit
;;
3)
msg_info "Configuring Loki to listen on ${LOCAL_IP}"
sed -i "s/http_listen_address:.*/http_listen_address: $LOCAL_IP/" /etc/loki/config.yml
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
systemctl restart loki
msg_ok "Configured Loki to listen on ${LOCAL_IP}"
exit
;;
esac
msg_info "Starting Loki"
systemctl start loki
msg_ok "Started Loki"
msg_ok "Updated successfully!"
exit
;;
2)
msg_info "Configuring Loki to listen on 0.0.0.0"
sed -i 's/http_listen_address:.*/http_listen_address: 0.0.0.0/' /etc/loki/config.yml
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
systemctl restart loki
msg_ok "Configured Loki to listen on 0.0.0.0"
exit
;;
3)
msg_info "Configuring Loki to listen on ${LOCAL_IP}"
sed -i "s/http_listen_address:.*/http_listen_address: $LOCAL_IP/" /etc/loki/config.yml
sed -i 's/http_listen_port:.*/http_listen_port: 3100/' /etc/loki/config.yml
systemctl restart loki
msg_ok "Configured Loki to listen on ${LOCAL_IP}"
exit
;;
esac
exit 0
}
@@ -78,5 +78,5 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access loki using the following URL:${CL}"
echo -e "${INFO}${YW}Access loki using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}\n"
+18 -13
View File
@@ -31,33 +31,38 @@ function update_script() {
fi
if check_for_gh_release "lychee" "LycheeOrg/Lychee"; then
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
msg_info "Stopping Services"
systemctl stop caddy
systemctl stop caddy php${PHP_VER}-fpm
msg_ok "Stopped Services"
msg_info "Backing up Data"
cp /opt/lychee/.env /opt/lychee.env.bak
cp -r /opt/lychee/storage /opt/lychee_storage_backup
msg_ok "Backed up Data"
create_backup /opt/lychee/.env \
/opt/lychee/storage \
/opt/lychee/public/uploads \
/opt/lychee/public/dist
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lychee" "LycheeOrg/Lychee" "prebuild" "latest" "/opt/lychee" "Lychee.zip"
msg_info "Restoring Data"
cp /opt/lychee.env.bak /opt/lychee/.env
rm -f /opt/lychee.env.bak
cp -r /opt/lychee_storage_backup/. /opt/lychee/storage
rm -rf /opt/lychee_storage_backup
msg_ok "Restored Data"
restore_backup
msg_info "Updating Application"
cd /opt/lychee
$STD php artisan migrate --force
$STD php artisan config:clear
$STD php artisan cache:clear
$STD php artisan optimize:clear
chmod -R 775 /opt/lychee/storage /opt/lychee/bootstrap/cache
$STD php artisan optimize
chown -R www-data:www-data /opt/lychee
chmod -R 775 /opt/lychee/storage /opt/lychee/bootstrap/cache \
/opt/lychee/public/dist /opt/lychee/public/uploads
if [[ "${VERBOSE:-no}" = "yes" ]]; then
php artisan lychee:diagnostics || true
fi
msg_ok "Updated Application"
msg_info "Starting Services"
systemctl start caddy
systemctl start caddy php${PHP_VER}-fpm
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
DEB_URL=$(curl_with_retry 'https://lyrion.org/getting-started/' | grep -oP "<a\s[^>]*href=\"\K[^\"]*${DEB_ARCH}\.deb(?=\"[^>]*>)" | head -n 1)
RELEASE=$(echo "$DEB_URL" | grep -oP "lyrionmusicserver_\K[0-9.]+(?=_${DEB_ARCH}\.deb)")
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_${DEB_ARCH}.deb"
if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
if [[ ! -f /opt/lyrion_version.txt ]] || [[ ${RELEASE} != "$(cat /opt/lyrion_version.txt)" ]]; then
msg_info "Updating $APP to ${RELEASE}"
curl_with_retry "$DEB_URL" "$DEB_FILE"
$STD apt install "$DEB_FILE" -y
@@ -56,5 +56,5 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access the web interface at:${CL}"
echo -e "${INFO}${YW}Access the web interface at:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:9000${CL}"
+4 -4
View File
@@ -31,10 +31,10 @@ function update_script() {
fi
NODE_VERSION="24" setup_nodejs
CURRENT=$(cat /opt/matter-server/node_modules/matter-server/package.json | grep '"version"' | head -1 | sed 's/.*"\([^"]*\)".*/\1/')
LATEST=$(npm view matter-server version 2>/dev/null)
if [[ "$CURRENT" != "$LATEST" ]]; then
if [[ $CURRENT != "$LATEST" ]]; then
msg_info "Stopping Service"
systemctl stop matterjs-server
msg_ok "Stopped Service"
@@ -60,5 +60,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 "${TAB}${GATEWAY}${BGN}http://${IP}:5580${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:5580${CL}"
+1 -1
View File
@@ -45,7 +45,7 @@ EOF
systemctl daemon-reload
fi
$STD npm install -g n8n@2.27.5
$STD npm install -g n8n@latest
systemctl restart n8n
msg_ok "Updated n8n"
msg_ok "Updated successfully!"
+1 -1
View File
@@ -44,5 +44,5 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access NetBird by entering the container and running:${CL}"
echo -e "${INFO}${YW}Access NetBird by entering the container and running:${CL}"
echo -e "${GATEWAY}${BGN}netbird up${CL}"
+66
View File
@@ -0,0 +1,66 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Mathias Wagner (gnmyt)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://nexterm.dev/
APP="Nexterm"
var_tags="${var_tags:-server-management}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
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/nexterm/server/nexterm-server ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "nexterm-engine" "gnmyt/Nexterm"; then
msg_info "Stopping nexterm-engine"
systemctl stop nexterm-engine
msg_ok "Stopped nexterm-engine"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nexterm-engine" "gnmyt/Nexterm" "prebuild" "latest" "/opt/nexterm/engine" "nexterm-engine-linux-$(arch_resolve "x64" "arm64").tar.gz"
msg_info "Starting nexterm-engine"
systemctl start nexterm-engine
msg_ok "Started nexterm-engine"
fi
if check_for_gh_release "nexterm-server" "gnmyt/Nexterm"; then
msg_info "Stopping nexterm-server"
systemctl stop nexterm-server
msg_ok "Stopped nexterm-server"
fetch_and_deploy_gh_release "nexterm-server" "gnmyt/Nexterm" "singlefile" "latest" "/opt/nexterm/server" "nexterm-server-linux-$(arch_resolve "x64" "arm64")"
msg_info "Starting nexterm-server"
systemctl start nexterm-server
msg_ok "Started nexterm-server"
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}:6989${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)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gamosoft/NoteDiscovery
APP="NoteDiscovery"
var_tags="${var_tags:-notes;wiki;knowledge-base}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
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 [[ ! -d /opt/notediscovery ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "notediscovery" "gamosoft/NoteDiscovery"; then
msg_info "Stopping Service"
systemctl stop notediscovery
msg_ok "Stopped Service"
create_backup /opt/notediscovery/data /opt/notediscovery/config.yaml
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "notediscovery" "gamosoft/NoteDiscovery" "tarball"
msg_info "Syncing Dependencies"
cd /opt/notediscovery
$STD uv sync --no-dev
msg_ok "Synced Dependencies"
restore_backup
msg_info "Starting Service"
systemctl start notediscovery
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}:8000${CL}"
+1 -1
View File
@@ -30,7 +30,7 @@ function update_script() {
exit
fi
RELEASE="v7.2.0"
RELEASE="v7.3.0"
if check_for_gh_release "OpenCloud" "opencloud-eu/opencloud" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
msg_info "Stopping services"
systemctl stop opencloud opencloud-wopi
+85
View File
@@ -0,0 +1,85 @@
#!/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: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/DioCrafts/OxiCloud
APP="OxiCloud"
var_tags="${var_tags:-files;documents}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-6144}"
var_disk="${var_disk:-20}"
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 [[ ! -d /opt/oxicloud ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "OxiCloud" "DioCrafts/OxiCloud"; then
msg_info "Stopping OxiCloud"
systemctl stop oxicloud
msg_ok "Stopped OxiCloud"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "OxiCloud" "DioCrafts/OxiCloud" "tarball" "latest" "/opt/oxicloud"
TOOLCHAIN="$(grep -oP 'FROM\s+rust:\K[0-9]+\.[0-9]+(\.[0-9]+)?' /opt/oxicloud/Dockerfile | head -1)"
RUST_TOOLCHAIN="${TOOLCHAIN:-stable}" setup_rust
msg_info "Building Frontend SPA"
cd /opt/oxicloud/frontend
$STD npm ci
$STD npm run build
msg_ok "Built Frontend SPA"
msg_info "Updating OxiCloud (Patience)"
set -a
source /etc/oxicloud/.env
set +a
cd /opt/oxicloud
export DATABASE_URL
export RUSTFLAGS="-C target-cpu=native"
RAM_MB=$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo)
CARGO_JOBS=$((RAM_MB / 2560))
[[ $CARGO_JOBS -lt 1 ]] && CARGO_JOBS=1
[[ $CARGO_JOBS -gt $(nproc) ]] && CARGO_JOBS=$(nproc)
$STD cargo build --release -j "$CARGO_JOBS" --bin oxicloud --bin migrate-nfc-filenames
mv target/release/oxicloud /usr/local/bin/oxicloud
mv target/release/migrate-nfc-filenames /usr/local/bin/migrate-nfc-filenames
chmod +x /usr/local/bin/oxicloud /usr/local/bin/migrate-nfc-filenames
rm -f /usr/bin/oxicloud
rm -rf /opt/oxicloud/static
mv /opt/oxicloud/static-dist /opt/oxicloud/static
rm -rf /opt/oxicloud/target /opt/oxicloud/frontend/node_modules
msg_ok "Updated OxiCloud"
msg_info "Starting OxiCloud"
systemctl start oxicloud
msg_ok "Started OxiCloud"
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}:8086${CL}"
+18 -21
View File
@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Source: https://pangolin.net/ | Github: https://github.com/fosrl/pangolin
APP="Pangolin"
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.18.4}"
PANGOLIN_VERSION="${PANGOLIN_VERSION:-1.20.0}"
var_tags="${var_tags:-proxy}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
@@ -33,6 +33,15 @@ function update_script() {
ensure_dependencies build-essential python3
if ! command -v psql &>/dev/null; then
msg_error "This installation uses SQLite and cannot be upgraded to Pangolin ${PANGOLIN_VERSION}."
echo -e "${INFO}${YW}Starting with Pangolin 1.20.0, PostgreSQL is required as the database backend.${CL}"
echo -e "${INFO}${YW}An automatic migration of your existing SQLite data is not supported.${CL}"
echo -e "${INFO}${YW}Please create a new LXC with the Pangolin install script, which sets up PostgreSQL automatically.${CL}"
echo -e "${INFO}${YW}Your current data is preserved in this container and can be manually migrated if needed.${CL}"
exit 1
fi
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "pangolin" "fosrl/pangolin" "$PANGOLIN_VERSION" "Pinned to a tested release because Pangolin's schema changes have repeatedly broken unattended updates. To try a newer version at your own risk, run: 'export PANGOLIN_VERSION=<tag>' and re-run update. If it breaks, please open an issue at https://github.com/community-scripts/ProxmoxVE/issues with the error log."; then
@@ -41,13 +50,8 @@ function update_script() {
systemctl stop gerbil
msg_info "Service stopped"
msg_info "Creating backup"
tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
if [[ -f /opt/pangolin/config/db/db.sqlite ]]; then
cp -a /opt/pangolin/config/db/db.sqlite \
"/opt/pangolin/config/db/db.sqlite.pre-${PANGOLIN_VERSION}-$(date +%Y%m%d-%H%M%S).bak"
fi
msg_ok "Created backup"
DB_URL=$(sed -n 's/.*connection_string: "\(.*\)".*/\1/p' /opt/pangolin/config/config.yml)
create_backup /opt/pangolin/config
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball" "$PANGOLIN_VERSION"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_$(arch_resolve)"
@@ -55,23 +59,21 @@ function update_script() {
msg_info "Updating Pangolin"
cd /opt/pangolin
$STD npm ci
$STD npm run set:sqlite
$STD npm run set:pg
$STD npm run set:oss
rm -rf server/private
$STD npm run db:generate
DATABASE_URL="$DB_URL" $STD npm run db:generate
$STD npm run build
$STD npm run build:cli
cp -R .next/standalone ./
cp -r server/migrations ./dist/init
chmod +x ./dist/cli.mjs
cp server/db/names.json ./dist/names.json
cp server/db/ios_models.json ./dist/ios_models.json
cp server/db/mac_models.json ./dist/mac_models.json
msg_ok "Updated Pangolin"
msg_info "Restoring config"
tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
rm -f /opt/pangolin_config_backup.tar.gz
msg_ok "Restored config"
restore_backup
if ! grep -q '^ExecStartPre=/usr/bin/node dist/migrations.mjs' /etc/systemd/system/pangolin.service 2>/dev/null; then
msg_info "Adding migration step to pangolin.service"
@@ -82,13 +84,8 @@ function update_script() {
msg_info "Running database migrations"
cd /opt/pangolin
SQLITE_DB="/opt/pangolin/config/db/db.sqlite"
if [[ -f "$SQLITE_DB" ]]; then
if ! sqlite3 "$SQLITE_DB" ".tables" 2>/dev/null | tr ' ' '\n' | grep -qx "statusHistory"; then
sqlite3 "$SQLITE_DB" "DELETE FROM versionMigrations;" 2>/dev/null || true
fi
fi
ENVIRONMENT=prod $STD node dist/migrations.mjs
msg_ok "Ran database migrations"
msg_info "Updating Badger plugin version"
@@ -112,4 +109,4 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}https://<YOUR_PANGOLIN_URL>${CL}"
echo -e "${GATEWAY}${BGN}https://<YOUR_PANGOLIN_URL> or http://${IP}:3002${CL}"
+2 -2
View File
@@ -79,5 +79,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3100${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}"
+2 -2
View File
@@ -66,5 +66,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 "${TAB}${GATEWAY}${BGN}http://${IP}:8945${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8945${CL}"
+6 -6
View File
@@ -38,10 +38,10 @@ function update_script() {
msg_ok "Stopped Services"
create_backup /opt/plane/.env \
/opt/plane/apps/admin/.env \
/opt/plane/apps/api/.env \
/opt/plane/apps/space/.env \
/opt/plane/apps/web/.env
/opt/plane/apps/admin/.env \
/opt/plane/apps/api/.env \
/opt/plane/apps/space/.env \
/opt/plane/apps/web/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "plane" "makeplane/plane" "tarball"
@@ -86,5 +86,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
+1 -1
View File
@@ -71,7 +71,7 @@ function update_script() {
cp /opt/pocket-id/.env /opt/env
fi
fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id-linux-$(arch_resolve)"
fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id_linux_$(arch_resolve)"
mv /opt/env /opt/pocket-id/.env
msg_info "Starting Service"
+3 -4
View File
@@ -37,7 +37,7 @@ function update_script() {
msg_ok "Stopped Services"
create_backup /opt/postiz/.env \
/opt/postiz/uploads
/opt/postiz/uploads
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "postiz" "gitroomhq/postiz-app" "tarball"
@@ -56,7 +56,6 @@ function update_script() {
$STD pnpm run prisma-db-push
msg_ok "Ran Database Migrations"
mkdir -p /opt/postiz/uploads
restore_backup
@@ -74,5 +73,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
+2 -2
View File
@@ -77,5 +77,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 "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
+77 -7
View File
@@ -106,13 +106,6 @@ spring.servlet.multipart.max-file-size=5GB
spring.servlet.multipart.max-request-size=5GB
server.tomcat.max-part-count=100
# Rqueue configuration
rqueue.web.enable=false
rqueue.job.enabled=false
rqueue.message.durability.in-terminal-state=0
rqueue.key.prefix=\${spring.cache.redis.key-prefix}
rqueue.message.converter.provider.class=com.dedicatedcode.reitti.config.RQueueCustomMessageConverter
# Application-specific settings
reitti.server.advertise-uri=
@@ -168,6 +161,81 @@ PROPEOF
msg_ok "Rewrote application.properties (backup: application.properties.bak)"
fi
# Migrate v4 -> v5: Remove Rqueue configuration (replaced by Quartz Scheduler)
if grep -q "^rqueue\." /opt/reitti/application.properties 2>/dev/null; then
msg_info "Migrating to v5: Removing Rqueue configuration"
sed -i '/^# Rqueue configuration$/d; /^rqueue\./d' /opt/reitti/application.properties
msg_ok "Removed Rqueue configuration"
fi
# Migrate v4 -> v5: Update application.properties and nginx tile cache for v5 compatibility
if grep -q "^reitti\.process-data\.schedule=" /opt/reitti/application.properties 2>/dev/null; then
msg_info "Migrating to v5: Updating application.properties"
sed -i '/^reitti\.process-data\.schedule=/d' /opt/reitti/application.properties
sed -i 's/^reitti\.import\.processing-idle-start-time=.*/reitti.import.grace-time-seconds=30/' /opt/reitti/application.properties
sed -i 's/^spring\.datasource\.hikari\.maximum-pool-size=20$/spring.datasource.hikari.maximum-pool-size=30/' /opt/reitti/application.properties
grep -q "devices" /opt/reitti/application.properties || \
sed -i 's/^spring\.cache\.cache-names=\(.*\)$/spring.cache.cache-names=\1,devices,mapStyles,mapStyleJson/' /opt/reitti/application.properties
grep -q "org.quartz.core.ErrorLogger" /opt/reitti/application.properties || \
sed -i '/^logging\.level\.com\.dedicatedcode\.reitti=/a logging.level.org.quartz.core.ErrorLogger=FATAL' /opt/reitti/application.properties
grep -q "^spring.servlet.multipart.resolve-lazily=" /opt/reitti/application.properties || \
sed -i '/^spring\.servlet\.multipart\.max-request-size=/a spring.servlet.multipart.resolve-lazily=true' /opt/reitti/application.properties
grep -q "^spring.mvc.async.request-timeout=" /opt/reitti/application.properties || \
echo "spring.mvc.async.request-timeout=600000" >>/opt/reitti/application.properties
if ! grep -q "^spring.quartz" /opt/reitti/application.properties; then
cat >>/opt/reitti/application.properties <<'QUARTZEOF'
# Quartz Scheduler configuration
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=never
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
spring.quartz.properties.org.quartz.jobStore.isClustered=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.threadPool.threadCount=5
QUARTZEOF
fi
grep -q "^reitti.import.staging.cleanup.cron=" /opt/reitti/application.properties || \
echo "reitti.import.staging.cleanup.cron=0 0 4 * * *" >>/opt/reitti/application.properties
grep -q "^reitti.batching.max-batch-size=" /opt/reitti/application.properties || \
printf "reitti.batching.max-batch-size=100\nreitti.batching.max-wait-time=5\n" >>/opt/reitti/application.properties
grep -q "^reitti.jobs.cleanup.cron=" /opt/reitti/application.properties || \
printf "reitti.jobs.cleanup.cron=0 0 4 * * ?\nreitti.jobs.cleanup.max-age-hours=24\n" >>/opt/reitti/application.properties
grep -q "^reitti.db-janitor.schedule=" /opt/reitti/application.properties || \
echo "reitti.db-janitor.schedule=0 0 4 * * ?" >>/opt/reitti/application.properties
msg_ok "Updated application.properties for v5"
if [[ -f /etc/nginx/nginx.conf ]]; then
msg_info "Migrating to v5: Updating nginx tile cache configuration"
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.v5
cat >/etc/nginx/nginx.conf <<'NGINXEOF'
user www-data;
events {
worker_connections 1024;
}
http {
resolver 1.1.1.1 8.8.8.8 valid=30s ipv6=off;
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
server {
listen 80;
location /custom/ {
set $upstream_url $http_x_reitti_upstream_url;
proxy_pass $upstream_url;
proxy_set_header Host $proxy_host;
proxy_set_header User-Agent "Reitti/1.0";
proxy_cache tiles;
proxy_cache_key $upstream_url;
proxy_cache_valid 200 30d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
}
}
}
NGINXEOF
systemctl reload nginx
msg_ok "Updated nginx tile cache configuration"
fi
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop reitti
@@ -179,10 +247,12 @@ PROPEOF
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
msg_warn "v5 runs a one-time database migration on first start (GPS points → device table). This may take several minutes on large datasets — do not interrupt the container."
msg_info "Starting Service"
systemctl start reitti
msg_ok "Started Service"
msg_ok "Updated successfully!"
msg_warn "Post-upgrade: Verify each API token has a Device assigned in Settings → API Tokens. Tokens without a device cannot ingest location data in v5."
fi
exit
}
+1 -1
View File
@@ -60,4 +60,4 @@ description
msg_ok "Completed successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}${IP}:21114${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:21114${CL}"
+6
View File
@@ -28,6 +28,12 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
setup_deb822_repo \
"sftpgo" \
"https://oss.sftpgo.com/apt/gpg.key" \
"https://oss.sftpgo.com/apt" \
"trixie"
msg_info "Updating SFTPGo"
$STD apt update
+1 -1
View File
@@ -80,7 +80,7 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access Shlink Web Client using the following URL:${CL}"
echo -e "${INFO}${YW}Access Shlink Web Client using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW} Shlink HTTP API:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
+53 -9
View File
@@ -30,19 +30,63 @@ function update_script() {
exit
fi
if check_for_gh_release "snapotter" "snapotter-hq/SnapOtter"; then
NEEDS_V2_MIGRATION=false
grep -q '^DB_PATH=' /opt/snapotter_data/.env 2>/dev/null && NEEDS_V2_MIGRATION=true
UPDATE_AVAILABLE=false
check_for_gh_release "snapotter" "snapotter-hq/SnapOtter" && UPDATE_AVAILABLE=true
if [[ "$NEEDS_V2_MIGRATION" == true || "$UPDATE_AVAILABLE" == true ]]; then
msg_info "Stopping Service"
systemctl stop snapotter
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snapotter" "snapotter-hq/SnapOtter" "tarball"
PG_VERSION="17" setup_postgresql
if ! sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname = 'snapotter'" | grep -qx '1'; then
PG_DB_NAME="snapotter" PG_DB_USER="snapotter" setup_postgresql_db
else
PG_DB_NAME="snapotter"
PG_DB_USER="snapotter"
PG_DB_PASS=$(sed -n 's|^DATABASE_URL=postgres://snapotter:\([^@]*\)@.*|\1|p' /opt/snapotter_data/.env | head -n1)
if [[ -z "$PG_DB_PASS" ]]; then
msg_error "SnapOtter's PostgreSQL database exists, but its password is not available in /opt/snapotter_data/.env"
exit 1
fi
fi
msg_info "Installing Redis"
$STD apt install -y redis-server
if grep -q '^appendonly ' /etc/redis/redis.conf; then
sed -i 's/^appendonly .*/appendonly yes/' /etc/redis/redis.conf
else
echo 'appendonly yes' >>/etc/redis/redis.conf
fi
$STD systemctl enable --now redis-server
msg_ok "Installed Redis"
msg_info "Migrating SnapOtter Configuration"
sed -i '/^DB_PATH=/d; /^DATABASE_URL=/d; /^REDIS_URL=/d; /^SQLITE_MIGRATE_PATH=/d' /opt/snapotter_data/.env
cat <<EOF >>/opt/snapotter_data/.env
DATABASE_URL=postgres://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}
REDIS_URL=redis://127.0.0.1:6379
EOF
if [[ -f /opt/snapotter_data/snapotter.db ]]; then
echo 'SQLITE_MIGRATE_PATH=/opt/snapotter_data/snapotter.db' >>/opt/snapotter_data/.env
fi
if ! grep -q '^Requires=postgresql.service redis-server.service$' /etc/systemd/system/snapotter.service; then
sed -i '/^After=/c\After=network-online.target postgresql.service redis-server.service' /etc/systemd/system/snapotter.service
sed -i '/^\[Unit\]/a Wants=network-online.target\nRequires=postgresql.service redis-server.service' /etc/systemd/system/snapotter.service
fi
systemctl daemon-reload
msg_ok "Migrated SnapOtter Configuration"
if [[ "$UPDATE_AVAILABLE" == true ]]; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snapotter" "snapotter-hq/SnapOtter" "prebuild" "latest" "/opt/snapotter" "snapotter-*-linux-amd64.tar.gz"
fi
msg_info "Updating SnapOtter"
cd /opt/snapotter
$STD npm pkg delete scripts.prepare
$STD pnpm install --frozen-lockfile
$STD pnpm --filter @snapotter/web build
sed -i 's/mediapipe==0.10.21/mediapipe>=0.10.21/' /opt/snapotter/docker/feature-manifest.json
$STD uv python install 3.11
$STD uv venv --seed --python 3.11 /opt/snapotter_data/ai/venv
ln -sfn /opt/snapotter /app
msg_ok "Updated SnapOtter"
msg_info "Starting Service"
@@ -59,5 +103,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 "${TAB}${GATEWAY}${BGN}http://${IP}:1349${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:1349${CL}"
+2 -2
View File
@@ -72,5 +72,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+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: 007hacky007
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.squid-cache.org/
APP="Squid"
var_tags="${var_tags:-proxy}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
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/squid/squid.conf ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating Squid"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Squid"
msg_info "Validating Squid Configuration"
$STD squid -k parse
msg_ok "Validated Squid Configuration"
msg_info "Restarting Squid"
systemctl restart squid
msg_ok "Restarted Squid"
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} Proxy endpoint:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3128${CL}"
+2 -2
View File
@@ -32,7 +32,7 @@ function update_script() {
NODE_VERSION="24" NODE_MODULE="corepack,yarn" setup_nodejs
if check_for_gl_release "storyteller" "storyteller-platform/storyteller"; then
if check_for_gl_release "storyteller" "storyteller-platform/storyteller" "" "" "web-v2"; then
msg_info "Stopping Service"
systemctl stop storyteller
msg_ok "Stopped Service"
@@ -41,7 +41,7 @@ function update_script() {
cp /opt/storyteller/.env /opt/storyteller_env.bak
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller"
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "tarball" "latest" "/opt/storyteller" "" "web-v2"
msg_info "Restoring Configuration"
mv /opt/storyteller_env.bak /opt/storyteller/.env
+65
View File
@@ -0,0 +1,65 @@
#!/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/Sync-in/server
APP="Sync-in"
var_tags="${var_tags:-files;sync;collaboration}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-20}"
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 [[ ! -d /opt/sync-in/node_modules/@sync-in ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "sync-in" "Sync-in/server"; then
msg_info "Stopping Service"
systemctl stop sync-in
msg_ok "Stopped Service"
msg_info "Updating Sync-in"
$STD npm install --prefix /opt/sync-in "@sync-in/server@${CHECK_UPDATE_RELEASE#v}"
msg_ok "Updated Sync-in"
msg_info "Running Database Migrations"
cd /opt/sync-in
$STD npx sync-in-server migrate-db
msg_ok "Ran Database Migrations"
VERSION=$(node -pe "require('/opt/sync-in/node_modules/@sync-in/server/package.json').version" 2>/dev/null || echo "")
[[ -n "$VERSION" ]] && echo "$VERSION" >~/.sync-in
msg_info "Starting Service"
systemctl start sync-in
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}"
+2 -2
View File
@@ -52,5 +52,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 "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
+4 -5
View File
@@ -39,10 +39,10 @@ function update_script() {
msg_ok "Stopped Services"
create_backup /opt/twenty/.env \
/opt/twenty/packages/twenty-server/.local-storage
/opt/twenty/packages/twenty-server/.local-storage
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "twenty" "twentyhq/twenty" "tarball"
restore_backup
msg_info "Building Application"
cd /opt/twenty
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
@@ -63,7 +63,6 @@ function update_script() {
$STD npx -y typeorm migration:run -d dist/database/typeorm/core/core.datasource
msg_ok "Ran Database Migrations"
msg_info "Starting Services"
systemctl start twenty-server twenty-worker
msg_ok "Started Services"
@@ -78,5 +77,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 "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:3000${CL}"
+11 -2
View File
@@ -30,12 +30,14 @@ function update_script() {
exit
fi
if check_for_gh_release "wanderer" "Flomp/wanderer"; then
if check_for_gh_release "wanderer" "open-wanderer/wanderer"; then
msg_info "Stopping service"
systemctl stop wanderer-web
msg_ok "Stopped service"
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
create_backup /opt/wanderer/source/search
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
restore_backup
msg_info "Updating wanderer"
cd /opt/wanderer/source/db
@@ -44,6 +46,13 @@ function update_script() {
cd /opt/wanderer/source/web
$STD npm ci
$STD npm run build
mkdir -p /opt/wanderer/data/plugins
[[ -e /data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /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}"
done
msg_ok "Installed wanderer plugins"
msg_ok "Updated wanderer"
msg_info "Starting service"
+26 -8
View File
@@ -50,20 +50,38 @@ function update_script() {
$STD /usr/local/bin/uv sync --frozen
$STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
$STD npm --prefix app/static install
$STD npm --prefix app/static run build:css
$STD npm --prefix app/static run build
mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/
if grep -q 'workers' /opt/wizarr/start.sh; then
sed -i 's/--workers 4//' /opt/wizarr/start.sh
if grep -q 'bind' /opt/wizarr/start.sh; then
WIZARR_PORT=$(awk -F: '{print $2}' /opt/wizarr/start.sh | awk -F' ' '{print $1}' | tr -d '[:space:]')
fi
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
cat <<EOF >/opt/wizarr/.env
sed -i -E -e 's/[[:space:]]+/ /g' \
-e 's/--workers 4//' \
-e 's/--bind 0.0.0.0:[0-9]+//' /opt/wizarr/start.sh
KEYS=("FLASK" "WORKERS" "HOST" "PORT")
for key in "${KEYS[@]}"; do
if ! grep -q "$key" /opt/wizarr/.env; then
cat <<EOF >/opt/wizarr/.env
APP_URL=http://${LOCAL_IP}
DISABLE_BUILTIN_AUTH=false
FLASK_ENV=production
GUNICORN_WORKERS=4
APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)
HOST=0.0.0.0
PORT=${WIZARR_PORT:-5690}
LOG_LEVEL=info
APP_VERSION=$(cat ~/.wizarr)
EOF
else
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
fi
continue
done
sed -i "s/_VERSION=.*$/_VERSION=$(cat ~/.wizarr)/" /opt/wizarr/.env
if grep -q 'abnormal' /etc/systemd/system/wizarr.service; then
sed -i 's/on-abnormal/always \
RestartSec=10 \
KillMode=mixed \
TimeoutStopSec=10/' /etc/systemd/system/wizarr.service
systemctl daemon-reload
fi
rm -rf "$BACKUP_FILE"
export FLASK_SKIP_SCHEDULER=true
+2 -2
View File
@@ -69,5 +69,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 "${TAB}${GATEWAY}${BGN}http://${IP}:5522${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:5522${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)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/ulsklyc/yuvomi
APP="Yuvomi"
var_tags="${var_tags:-family;planner;calendar}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-8}"
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 [[ ! -d /opt/yuvomi ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "yuvomi" "ulsklyc/yuvomi"; then
msg_info "Stopping Service"
systemctl stop yuvomi
msg_ok "Stopped Service"
create_backup /opt/yuvomi/data /opt/yuvomi/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yuvomi" "ulsklyc/yuvomi" "tarball"
msg_info "Installing Node.js Dependencies"
cd /opt/yuvomi
$STD npm ci --omit=dev
msg_ok "Installed Node.js Dependencies"
restore_backup
msg_info "Starting Service"
systemctl start yuvomi
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}:3000${CL}"
+1
View File
@@ -43,6 +43,7 @@ $STD php artisan migrate:refresh
$STD php artisan passport:install -q -n
$STD php artisan storage:link
$STD php artisan config:cache
$STD php artisan 2fauth:fix-passport-key-permissions
chown -R www-data: /opt/2fauth
chmod -R 755 /opt/2fauth
msg_ok "Setup 2fauth"
+1
View File
@@ -72,6 +72,7 @@ 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"
+215
View File
@@ -0,0 +1,215 @@
#!/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/toeverything/AFFiNE
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
git \
pkg-config \
openssl \
libssl-dev \
libjemalloc2 \
redis-server \
nginx
msg_ok "Installed Dependencies"
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
PG_DB_NAME="affine" PG_DB_USER="affine" setup_postgresql_db
NODE_VERSION="22" setup_nodejs
setup_rust
fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "v0.26.3" "/opt/affine"
msg_info "Setting up Directories"
rm -rf /root/.affine
mkdir -p /root/.affine/{storage,config}
msg_ok "Set up Directories"
msg_info "Configuring Environment"
SECRET_KEY=$(openssl rand -hex 32)
cat <<EOF >/opt/affine/.env
NODE_ENV=production
AFFINE_SERVER_PORT=3010
AFFINE_SERVER_HOST=${LOCAL_IP}
AFFINE_SERVER_EXTERNAL_URL=http://${LOCAL_IP}
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
REDIS_SERVER_HOST=localhost
REDIS_SERVER_PORT=6379
AFFINE_INDEXER_ENABLED=false
SECRET_KEY=${SECRET_KEY}
EOF
msg_ok "Configured Environment"
msg_info "Building AFFiNE (Patience)"
cd /opt/affine
source /root/.profile
export PATH="/root/.cargo/bin:$PATH"
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export VITE_CORE_COMMIT_SHA=$(cat ~/.affine_app)
# # Initialize git repo (required for build process)
$STD git init -q
$STD git config user.email "build@local"
$STD git config user.name "Build"
$STD git add -A
$STD git commit -q -m "initial"
mkdir -p /opt/affine/.turbo
cat <<TURBO >/opt/affine/.turbo/config.json
{
"concurrency": 1
}
TURBO
$STD corepack enable
$STD corepack prepare yarn@4.12.0 --activate
$STD yarn config set enableTelemetry 0
export NODE_OPTIONS="--max-old-space-size=4096"
export TSC_COMPILE_ON_ERROR=true
$STD yarn install
$STD npm install -g typescript
$STD yarn affine @affine/native build
$STD yarn affine @affine/server-native build
# Create architecture-specific symlinks for server-native
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.x64.node
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.arm64.node
ln -sf /opt/affine/packages/backend/native/server-native.node \
/opt/affine/packages/backend/native/server-native.armv7.node
$STD yarn affine init
$STD yarn affine build -p @affine/reader
$STD yarn affine build -p @affine/server
export NODE_OPTIONS="--max-old-space-size=4096"
$STD yarn affine build -p @affine/web
$STD yarn affine build -p @affine/admin
mkdir -p /opt/affine/packages/backend/server/static
cp -r /opt/affine/packages/frontend/apps/web/dist/* /opt/affine/packages/backend/server/static/
mkdir -p /opt/affine/packages/backend/server/static/admin
cp -r /opt/affine/packages/frontend/admin/dist/* /opt/affine/packages/backend/server/static/admin/
# Create empty mobile manifest (server expects it but we don't build mobile)
mkdir -p /opt/affine/packages/backend/server/static/mobile
cat <<'MANIFEST' >/opt/affine/packages/backend/server/static/mobile/assets-manifest.json
{"publicPath":"/","js":[],"css":[],"gitHash":"","description":""}
MANIFEST
msg_ok "Built AFFiNE"
msg_info "Running Initial Migration"
cd /opt/affine/packages/backend/server
set -a && source /opt/affine/.env && set +a
$STD node ./scripts/self-host-predeploy.js
msg_ok "Ran Initial Migration"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/affine-web.service
[Unit]
Description=AFFiNE Web Server
After=network.target postgresql.service redis-server.service
Requires=postgresql.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/affine/packages/backend/server
EnvironmentFile=/opt/affine/.env
Environment=LD_PRELOAD=libjemalloc.so.2
Environment=NODE_OPTIONS=--max-old-space-size=1024
ExecStart=/usr/bin/node ./dist/main.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/affine-worker.service
[Unit]
Description=AFFiNE Background Worker
After=network.target postgresql.service redis-server.service
Requires=postgresql.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/affine/packages/backend/server
EnvironmentFile=/opt/affine/.env
Environment=LD_PRELOAD=libjemalloc.so.2
Environment=NODE_OPTIONS=--max-old-space-size=1024
ExecStart=/usr/bin/node ./dist/main.js --worker
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now redis-server affine-web affine-worker
msg_ok "Created Services"
msg_info "Creating Admin User"
ADMIN_PASS=$(openssl rand -base64 12)
for i in {1..30}; do
if curl -s http://localhost:3010/info >/dev/null 2>&1; then
break
fi
sleep 2
done
# Create admin via API
ADMIN_RESPONSE=$(curl -s -X POST http://localhost:3010/api/setup/create-admin-user \
-H "Content-Type: application/json" \
-d "{\"email\":\"admin@affine.local\",\"password\":\"${ADMIN_PASS}\"}")
if echo "$ADMIN_RESPONSE" | grep -q '"id"'; then
{
echo "AFFiNE Credentials"
echo "=================="
echo "Email: admin@affine.local"
echo "Password: ${ADMIN_PASS}"
} >~/affine.creds
msg_ok "Created Admin User"
else
msg_warn "Admin creation skipped (may already exist)"
fi
msg_info "Configuring Nginx"
cat <<EOF >/etc/nginx/sites-available/affine.conf
upstream affine_backend {
server 127.0.0.1:3010;
}
server {
listen 80;
server_name _;
client_max_body_size 100M;
location / {
proxy_pass http://affine_backend;
proxy_http_version 1.1;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_buffering off;
}
}
EOF
ln -sf /etc/nginx/sites-available/affine.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
systemctl enable -q --now nginx
msg_ok "Configured Nginx"
motd_ssh
customize
cleanup_lxc
+53
View File
@@ -0,0 +1,53 @@
#!/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/daya0576/beaverhabits
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
PYTHON_VERSION="3.14" setup_uv
fetch_and_deploy_gh_release "beaverhabits" "daya0576/beaverhabits" "tarball"
msg_info "Installing Dependencies"
cd /opt/beaverhabits
$STD uv sync --no-dev
msg_ok "Installed Dependencies"
msg_info "Configuring BeaverHabits"
mkdir -p /opt/beaverhabits/.user
msg_ok "Configured BeaverHabits"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/beaverhabits.service
[Unit]
Description=BeaverHabits Habit Tracker
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/beaverhabits
Environment=HABITS_STORAGE=USER_DISK
Environment=NICEGUI_STORAGE_PATH=/opt/beaverhabits/.user/.nicegui
ExecStart=/opt/beaverhabits/.venv/bin/gunicorn beaverhabits.main:app --bind 0.0.0.0:8080 -w 1 -k uvicorn_worker.UvicornWorker --max-requests 10000 --log-level info
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now beaverhabits
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+1 -1
View File
@@ -21,7 +21,7 @@ $STD apt install -y \
ffmpeg
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve).tar.gz"
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve)*.tar.gz"
msg_info "Setting up BirdNET-Go"
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
+2
View File
@@ -23,6 +23,8 @@ $STD apt install -y \
libreadline-dev \
zlib1g-dev \
libffi-dev \
libleptonica-dev \
libleptonica6 \
libvips42 \
libvips-dev \
libheif1 \
+2 -1
View File
@@ -14,7 +14,8 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y git
$STD apt install -y git \
libusb-1.0-0
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.12" setup_uv
+8 -5
View File
@@ -26,8 +26,8 @@ msg_info "Installing ASP.NET Core Runtime"
if [[ "$(arch_resolve)" == "arm64" ]]; then
# packages.microsoft.com only ships amd64 debs for Debian; use dotnet-install on arm64
curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
$STD bash /tmp/dotnet-install.sh --channel 8.0 --runtime aspnetcore --install-dir /usr/lib/dotnet8
ln -sf /usr/lib/dotnet8/dotnet /usr/bin/dotnet
$STD bash /tmp/dotnet-install.sh --channel 10.0 --runtime aspnetcore --install-dir /usr/lib/dotnet10
ln -sf /usr/lib/dotnet10/dotnet /usr/bin/dotnet
rm -f /tmp/dotnet-install.sh
else
setup_deb822_repo \
@@ -35,7 +35,7 @@ else
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie"
$STD apt install -y aspnetcore-runtime-8.0
$STD apt install -y aspnetcore-runtime-10.0
fi
msg_ok "Installed ASP.NET Core Runtime"
@@ -55,9 +55,12 @@ if [[ "$install_server" =~ ^[Ss]$ ]]; then
msg_ok "Installed FileFlows Server"
else
msg_info "Installing FileFlows Node"
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
while [[ -z "${server_url// /}" ]]; do
read -r -p "${TAB3}Enter FileFlows Server URL (e.g. http://192.168.1.10:19200): " server_url
done
cd /opt/fileflows/Node
$STD dotnet FileFlows.Node.dll
$STD dotnet FileFlows.Node.dll --systemd install --root true
$STD dotnet FileFlows.Node.dll --server "$server_url" --systemd install --root true
systemctl enable -q --now fileflows-node
msg_ok "Installed FileFlows Node"
fi
+3
View File
@@ -141,6 +141,9 @@ cp /opt/fireshare/app/nginx/prod.conf /etc/nginx/nginx.conf
sed -i 's|root /processed/|root /opt/fireshare-processed/|g' /etc/nginx/nginx.conf
sed -i 's/^user[[:space:]]\+nginx;/user root;/' /etc/nginx/nginx.conf
sed -i 's|root[[:space:]]\+/app/build;|root /opt/fireshare/app/client/build;|' /etc/nginx/nginx.conf
sed -i 's/__FIRESHARE_PORT__/80/g' /etc/nginx/nginx.conf
cp /opt/fireshare/app/nginx/error.html /etc/nginx/
cp /opt/fireshare/app/nginx/api_unavailable.html /etc/nginx/
systemctl start nginx
cat <<EOF >~/fireshare.creds
-52
View File
@@ -1,52 +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://flowiseai.com/ | Github: https://github.com/FlowiseAI/Flowise
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
pkg-config
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.11" setup_uv
NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs
msg_info "Installing FlowiseAI (Patience)"
PYTHON_BIN="$(uv python find 3.11)"
export npm_config_python="$PYTHON_BIN"
$STD pnpm add -g flowise
mkdir -p /opt/flowiseai
curl -fsSL "https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example" -o "/opt/flowiseai/.env"
msg_ok "Installed FlowiseAI"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/flowise.service
[Unit]
Description=FlowiseAI
After=network.target
[Service]
EnvironmentFile=/opt/flowiseai/.env
ExecStart=flowise start
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now flowise
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc
+114
View File
@@ -0,0 +1,114 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Simon Friedrich (lengschder97)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://forgejo.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
setup_yq
if [[ -z "${var_forgejo_instance:-}" ]]; then
read -r -p "${TAB3}Forgejo Instance URL (e.g. https://codeberg.org): " var_forgejo_instance
var_forgejo_instance="${var_forgejo_instance:-https://codeberg.org}"
fi
if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
read -r -p "${TAB3}Forgejo Runner UUID: " var_forgejo_runner_uuid
fi
if [[ -z "${var_forgejo_runner_uuid:-}" ]]; then
msg_error "No runner UUID provided. Cannot continue."
exit 1
fi
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
read -r -p "${TAB3}Forgejo Runner Token: " var_forgejo_runner_token
fi
if [[ -z "${var_forgejo_runner_token:-}" ]]; then
msg_error "No runner registration token provided. Cannot continue."
exit 1
fi
DEFAULT_RUNNER_LABELS="linux-amd64:docker://node:22-bookworm"
if [[ -z "${var_runner_labels:-}" ]]; then
read -r -p "${TAB3}Additional runner labels (comma-separated, or leave blank for default only): " var_runner_labels
fi
if [[ -n "${var_runner_labels:-}" ]]; then
RUNNER_LABELS="${DEFAULT_RUNNER_LABELS},${var_runner_labels}"
else
RUNNER_LABELS="${DEFAULT_RUNNER_LABELS}"
fi
export FORGEJO_INSTANCE="$var_forgejo_instance"
export FORGEJO_RUNNER_TOKEN="$var_forgejo_runner_token"
export FORGEJO_RUNNER_UUID="$var_forgejo_runner_uuid"
export RUNNER_LABELS
msg_info "Installing dependencies"
$STD apt install -y \
git \
podman podman-docker
msg_ok "Installed dependencies"
msg_info "Enabling Podman socket"
systemctl enable --now podman.socket
msg_ok "Enabled Podman socket"
msg_info "Installing Forgejo Runner"
RUNNER_VERSION=$(curl -fsSL https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq -r .name | sed 's/^v//')
curl -fsSL "https://code.forgejo.org/forgejo/runner/releases/download/v${RUNNER_VERSION}/forgejo-runner-${RUNNER_VERSION}-linux-$(arch_resolve)" -o /usr/local/bin/forgejo-runner
chmod +x /usr/local/bin/forgejo-runner
echo "${RUNNER_VERSION}" >~/.forgejo-runner
msg_ok "Installed Forgejo Runner"
msg_info "Registering Forgejo Runner"
export DOCKER_HOST="unix:///run/podman/podman.sock"
msg_info "Generating Forgejo Runner Configuration"
mkdir -p /etc/forgejo-runner
CONFIG_FILE="/etc/forgejo-runner/config.yaml"
forgejo-runner generate-config > $CONFIG_FILE
yq -i '
.container.docker_host = strenv(DOCKER_HOST) |
.server.connections.forgejo.url = strenv(FORGEJO_INSTANCE) |
.server.connections.forgejo.uuid = strenv(FORGEJO_RUNNER_UUID) |
.server.connections.forgejo.token = strenv(FORGEJO_RUNNER_TOKEN) |
.server.connections.forgejo.labels = (strenv(RUNNER_LABELS) | split(",") | map(select(length > 0)))
' $CONFIG_FILE
msg_ok "Generated Forgejo Runner Configuration"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/forgejo-runner.service
[Unit]
Description=Forgejo Runner
Documentation=https://forgejo.org/docs/latest/admin/actions/
After=podman.socket
Requires=podman.socket
[Service]
User=root
WorkingDirectory=/root
Environment=DOCKER_HOST=unix:///run/podman/podman.sock
ExecStart=/usr/local/bin/forgejo-runner daemon -c $CONFIG_FILE
Restart=on-failure
RestartSec=10
TimeoutSec=0
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now forgejo-runner
msg_ok "Created Services"
motd_ssh
customize
cleanup_lxc

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