mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-21 07:56:44 +02:00
Compare commits
288
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a76d94745 | ||
|
|
b4030cef3a | ||
|
|
a35e496d93 | ||
|
|
bd834f690a | ||
|
|
a5a0b90643 | ||
|
|
aa8352bfd5 | ||
|
|
3b8f57672e | ||
|
|
9028029ea0 | ||
|
|
0d3ee851d0 | ||
|
|
6408653564 | ||
|
|
e925e29966 | ||
|
|
8505d28429 | ||
|
|
f15e9c320b | ||
|
|
5b4e526329 | ||
|
|
a61dc9c585 | ||
|
|
f8cc69e244 | ||
|
|
1dba4eb2ee | ||
|
|
fa9377cd45 | ||
|
|
b6a8ca1a3a | ||
|
|
2c13cb6a38 | ||
|
|
beeb497519 | ||
|
|
9ea82fa992 | ||
|
|
d6cd545e98 | ||
|
|
31b7024997 | ||
|
|
a6a608614f | ||
|
|
3042cd5cee | ||
|
|
026fd25e7a | ||
|
|
e1ce55b547 | ||
|
|
d81c9f3ed2 | ||
|
|
b098501a37 | ||
|
|
a1058256be | ||
|
|
e425d9c02c | ||
|
|
0dbea508d3 | ||
|
|
787e27a4ac | ||
|
|
8f0083850e | ||
|
|
8f9c4eb13b | ||
|
|
beacf9e43a | ||
|
|
b2898debce | ||
|
|
8c7da1e036 | ||
|
|
bbd5a3f522 | ||
|
|
c07dc4a4c3 | ||
|
|
e7f6a6d4cd | ||
|
|
3242b9a2d1 | ||
|
|
38ed344e0a | ||
|
|
658aad229a | ||
|
|
eb5a5b2cb7 | ||
|
|
09c85021fc | ||
|
|
7f1b0ead93 | ||
|
|
c24bba00de | ||
|
|
3f7228f9c6 | ||
|
|
c0a327dad8 | ||
|
|
78990277f2 | ||
|
|
0b15e19500 | ||
|
|
f75b0a8b0e | ||
|
|
b5360882c9 | ||
|
|
b2936ff9ce | ||
|
|
29552c6e2e | ||
|
|
d2ecb9f44c | ||
|
|
ec3c25c5f5 | ||
|
|
b1259e3749 | ||
|
|
ff192c4530 | ||
|
|
e72f335b46 | ||
|
|
13d7bf6c78 | ||
|
|
2ab4a31dd1 | ||
|
|
e7557c2355 | ||
|
|
79cee47df6 | ||
|
|
b4dcdd4472 | ||
|
|
8f2b68ed7e | ||
|
|
853f5e868a | ||
|
|
7c7d40cfe3 | ||
|
|
373ae7e143 | ||
|
|
abc31499a2 | ||
|
|
7bf45d5b66 | ||
|
|
f119e8782a | ||
|
|
271df3c3fb | ||
|
|
c991a7eccf | ||
|
|
5d4eff0493 | ||
|
|
3f90af2a21 | ||
|
|
55002839fb | ||
|
|
a51e1f37f5 | ||
|
|
8655282c2d | ||
|
|
e15db754a6 | ||
|
|
772430de7e | ||
|
|
04a84f5052 | ||
|
|
12dec08523 | ||
|
|
775f1a98c2 | ||
|
|
6d6d66eec6 | ||
|
|
9bb99c59c5 | ||
|
|
d122341a47 | ||
|
|
b9f26d66ed | ||
|
|
c44789f5f6 | ||
|
|
5144f8d0cc | ||
|
|
d23a2e64e7 | ||
|
|
b36ad5c3a2 | ||
|
|
74a233b8b9 | ||
|
|
66eff7ee87 | ||
|
|
812267aedd | ||
|
|
c759617379 | ||
|
|
75a1da273f | ||
|
|
c99768869d | ||
|
|
c52a69e8e5 | ||
|
|
2afea1239c | ||
|
|
07e31eb5bc | ||
|
|
80c4b04d83 | ||
|
|
ed29bb6f62 | ||
|
|
a5b839f91f | ||
|
|
d4d482746b | ||
|
|
2bffa47924 | ||
|
|
108c9dcf43 | ||
|
|
0f37abff3c | ||
|
|
670d972cc1 | ||
|
|
9f8bc4b03d | ||
|
|
817ee347c7 | ||
|
|
bb4e35f988 | ||
|
|
254e720b4f | ||
|
|
9055f4b34e | ||
|
|
3f5453b609 | ||
|
|
e812206116 | ||
|
|
7f430e15bb | ||
|
|
9c586b94ab | ||
|
|
ab3c9be482 | ||
|
|
103b420e30 | ||
|
|
c039ab2e62 | ||
|
|
63f219f14f | ||
|
|
09ec7b3203 | ||
|
|
55ab97a020 | ||
|
|
b7a002cae4 | ||
|
|
171b954c7c | ||
|
|
6f76cc043e | ||
|
|
5d57c328fb | ||
|
|
da62724407 | ||
|
|
dbe2c9eb97 | ||
|
|
3c5a848d7d | ||
|
|
1e3d0dedb3 | ||
|
|
bcaadc4dbd | ||
|
|
666bdbd8c8 | ||
|
|
7596b95517 | ||
|
|
1521e131b5 | ||
|
|
734bb75b12 | ||
|
|
d6d8d20c76 | ||
|
|
649e66ed2b | ||
|
|
81bb9c7d71 | ||
|
|
ca082aedf0 | ||
|
|
1e7667e5f8 | ||
|
|
f828e629b5 | ||
|
|
4a98e86db1 | ||
|
|
37b5242c21 | ||
|
|
a1333222a8 | ||
|
|
12949bce6c | ||
|
|
fae0aacf6d | ||
|
|
fd20ed1bfc | ||
|
|
eb3fb749df | ||
|
|
f7fdf419b1 | ||
|
|
0a7bd0f37e | ||
|
|
48483c63b8 | ||
|
|
962c040f44 | ||
|
|
c0b2c906fa | ||
|
|
96100474cc | ||
|
|
76335cefe8 | ||
|
|
8fbb4b1988 | ||
|
|
c481c3e24e | ||
|
|
dcd1eefdd4 | ||
|
|
f1b2bd0486 | ||
|
|
42f6b3ccdd | ||
|
|
ed9c80f805 | ||
|
|
0906341e95 | ||
|
|
618d578c35 | ||
|
|
f137f8c894 | ||
|
|
98bedb6ccd | ||
|
|
b958252441 | ||
|
|
92c4fb45a9 | ||
|
|
f4e0111ac0 | ||
|
|
2e4558e262 | ||
|
|
11139aede7 | ||
|
|
6716d8de84 | ||
|
|
f1e952005e | ||
|
|
89b671880a | ||
|
|
25045ef344 | ||
|
|
bfab0dd034 | ||
|
|
f1adfc32d3 | ||
|
|
11937bf5fa | ||
|
|
a6a8651000 | ||
|
|
6e55269d9f | ||
|
|
e64f5a041d | ||
|
|
67e0c7e9f8 | ||
|
|
87f2189cbb | ||
|
|
a9d71b7d23 | ||
|
|
2bf6c5e5da | ||
|
|
3143d25caa | ||
|
|
d9d724ce57 | ||
|
|
7a9726b1dd | ||
|
|
0102d5bd83 | ||
|
|
8d288ffee3 | ||
|
|
e00df4fd6e | ||
|
|
fe7de5e26c | ||
|
|
87ccf49dc3 | ||
|
|
c5f905ccf1 | ||
|
|
bff3c6932a | ||
|
|
7027d67eb3 | ||
|
|
766f8519a3 | ||
|
|
68cc4f3da7 | ||
|
|
81d6b2beee | ||
|
|
555953117c | ||
|
|
93ce08aa72 | ||
|
|
728726d5cc | ||
|
|
20740c3ca2 | ||
|
|
417b0641a0 | ||
|
|
86991b283d | ||
|
|
4ebae9f1c4 | ||
|
|
d8c636eaef | ||
|
|
4b71ee8b3a | ||
|
|
a8aa1ba085 | ||
|
|
954da140f1 | ||
|
|
604f7c7ae9 | ||
|
|
dbd591ada6 | ||
|
|
cc5976baa6 | ||
|
|
d29eec9494 | ||
|
|
819ecc1105 | ||
|
|
7e15a4bf26 | ||
|
|
9406a1ca98 | ||
|
|
d58123a518 | ||
|
|
704916d27d | ||
|
|
3c84f2d6c1 | ||
|
|
044bffcea4 | ||
|
|
84a1f13fa7 | ||
|
|
c075708588 | ||
|
|
2b3e2346e1 | ||
|
|
6ad04d8b19 | ||
|
|
225329a62f | ||
|
|
b8a1879b24 | ||
|
|
9f90357abc | ||
|
|
a068d32a66 | ||
|
|
ea7249ca03 | ||
|
|
d610a35b34 | ||
|
|
a76225aba6 | ||
|
|
0c9d77973e | ||
|
|
9b7f4533c6 | ||
|
|
70f8118198 | ||
|
|
ace936085e | ||
|
|
6f18af08d8 | ||
|
|
cd9c920d48 | ||
|
|
6a07f1bfd5 | ||
|
|
3f1b2f2180 | ||
|
|
0bc090abc6 | ||
|
|
be29bb1538 | ||
|
|
8f3d439daa | ||
|
|
88458c5837 | ||
|
|
ce11015489 | ||
|
|
f156e761e0 | ||
|
|
7493a7f003 | ||
|
|
a8eedc1848 | ||
|
|
be21f7517a | ||
|
|
4c10c0d98f | ||
|
|
17d18e70c8 | ||
|
|
80af66e864 | ||
|
|
53c72b9a1f | ||
|
|
34f56866d5 | ||
|
|
7b5d525d26 | ||
|
|
26c8959902 | ||
|
|
9c6d4479a7 | ||
|
|
e276b6c5b5 | ||
|
|
a1fa80cec3 | ||
|
|
cd8a07a170 | ||
|
|
2dff51e198 | ||
|
|
7450c1ef03 | ||
|
|
dbad31ba08 | ||
|
|
8fba38a423 | ||
|
|
5d25171d8d | ||
|
|
fde188a6ff | ||
|
|
4d56173394 | ||
|
|
02bbb774c9 | ||
|
|
7c8bbed4fa | ||
|
|
71761ce5a9 | ||
|
|
069c8f578f | ||
|
|
da24518021 | ||
|
|
5703462a0d | ||
|
|
89998b4fa0 | ||
|
|
7140f1dd00 | ||
|
|
e9bc9df3a9 | ||
|
|
b85df60ddf | ||
|
|
b1523bc2e2 | ||
|
|
33642ab1c5 | ||
|
|
1aef5d655c | ||
|
|
a84e13b504 | ||
|
|
3141dfbfb7 | ||
|
|
084fe40484 | ||
|
|
905c3fa411 | ||
|
|
fd2ec706f3 |
+40
-7
@@ -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:
|
||||
|
||||
Generated
+1
@@ -1,2 +1,3 @@
|
||||
ko_fi: community_scripts
|
||||
github: community_scripts
|
||||
buy_me_a_coffee: communityscripts
|
||||
|
||||
Generated
+44
@@ -1,3 +1,47 @@
|
||||
## 2026-06-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
||||
|
||||
## 2026-06-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
||||
|
||||
## 2026-06-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
||||
|
||||
## 2026-06-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
Generated
+352
@@ -0,0 +1,352 @@
|
||||
## 2026-07-18
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add configurable host CA inheritance during bootstrap [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15840](https://github.com/community-scripts/ProxmoxVE/pull/15840))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: Safe Delete Directorys & Update PYTHON_VERSION with setup_uv [@MickLesk](https://github.com/MickLesk) ([#15870](https://github.com/community-scripts/ProxmoxVE/pull/15870))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.update-lxcs] feat: optional reporting success/failures to heathchecks.io (or others) [@sir106](https://github.com/sir106) ([#15701](https://github.com/community-scripts/ProxmoxVE/pull/15701))
|
||||
|
||||
## 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
|
||||
|
||||
- webtrees: initialize database schema before admin user creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15837](https://github.com/community-scripts/ProxmoxVE/pull/15837))
|
||||
- Fix DocuSeal missing Leptonica deps on install and update [@Copilot](https://github.com/Copilot) ([#15858](https://github.com/community-scripts/ProxmoxVE/pull/15858))
|
||||
- apache-guacamole: detect installed extensions during update [@TowyTowy](https://github.com/TowyTowy) ([#15841](https://github.com/community-scripts/ProxmoxVE/pull/15841))
|
||||
- CLIProxyAPI: fix update deleting config.yaml [@austinpilz](https://github.com/austinpilz) ([#15834](https://github.com/community-scripts/ProxmoxVE/pull/15834))
|
||||
- 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
|
||||
|
||||
- AFFiNE: Bump to 0.27.0 [@MickLesk](https://github.com/MickLesk) ([#15848](https://github.com/community-scripts/ProxmoxVE/pull/15848))
|
||||
- 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
|
||||
|
||||
- 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
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Element Synapse: Fix heredoc syntax in elementsynapse-install.sh [@tremor021](https://github.com/tremor021) ([#15594](https://github.com/community-scripts/ProxmoxVE/pull/15594))
|
||||
- Twenty: Fix backup restore [@tremor021](https://github.com/tremor021) ([#15586](https://github.com/community-scripts/ProxmoxVE/pull/15586))
|
||||
- fix(endurain): update frontend dist path after upstream restructure [@joaovitoriasilva](https://github.com/joaovitoriasilva) ([#15590](https://github.com/community-scripts/ProxmoxVE/pull/15590))
|
||||
|
||||
## 2026-07-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: handle mise monorepo_root rename correctly | bump to 3.0.1 [@MickLesk](https://github.com/MickLesk) ([#15557](https://github.com/community-scripts/ProxmoxVE/pull/15557))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Opencloud: bump to v7.2.0 [@vhsdream](https://github.com/vhsdream) ([#15575](https://github.com/community-scripts/ProxmoxVE/pull/15575))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: fix corepack/pnpm install flow in setup_nodejs [@MickLesk](https://github.com/MickLesk) ([#15579](https://github.com/community-scripts/ProxmoxVE/pull/15579))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
||||
|
||||
## 2026-07-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
||||
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
||||
|
||||
## 2026-07-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
||||
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
||||
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
||||
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
||||
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
||||
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
||||
+163
@@ -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
@@ -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 {
|
||||
|
||||
+461
-390
@@ -65,6 +65,15 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -84,7 +93,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>June (27 entries)</h4></summary>
|
||||
<summary><h4>July (18 entries)</h4></summary>
|
||||
|
||||
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h4>June (30 entries)</h4></summary>
|
||||
|
||||
[View June 2026 Changelog](.github/changelogs/2026/06.md)
|
||||
|
||||
@@ -489,6 +505,449 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-07-20
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: vikunja: asset selection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15929](https://github.com/community-scripts/ProxmoxVE/pull/15929))
|
||||
- RomM: use backup helpers in update / clear folder [@MickLesk](https://github.com/MickLesk) ([#15915](https://github.com/community-scripts/ProxmoxVE/pull/15915))
|
||||
- Zammad : bind Elasticsearch to 127.0.0.1 [@MickLesk](https://github.com/MickLesk) ([#15909](https://github.com/community-scripts/ProxmoxVE/pull/15909))
|
||||
- Omada: fix package version extraction [@MickLesk](https://github.com/MickLesk) ([#15908](https://github.com/community-scripts/ProxmoxVE/pull/15908))
|
||||
- fix(wanderer): use PocketBase-relative plugin symlink in unprivileged LXC [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15911](https://github.com/community-scripts/ProxmoxVE/pull/15911))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- AFFiNE: Bump version to v0.27.2 [@MickLesk](https://github.com/MickLesk) ([#15930](https://github.com/community-scripts/ProxmoxVE/pull/15930))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Gotify: Migration to v3 [@MickLesk](https://github.com/MickLesk) ([#15912](https://github.com/community-scripts/ProxmoxVE/pull/15912))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add support for extracting 7z archives [@MickLesk](https://github.com/MickLesk) ([#15919](https://github.com/community-scripts/ProxmoxVE/pull/15919))
|
||||
- Meilisearch : use dumpless Meilisearch upgrades [@MickLesk](https://github.com/MickLesk) ([#15921](https://github.com/community-scripts/ProxmoxVE/pull/15921))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: Improve GPU detection and mapping logic [@MickLesk](https://github.com/MickLesk) ([#15918](https://github.com/community-scripts/ProxmoxVE/pull/15918))
|
||||
|
||||
## 2026-07-19
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- change trek repo to liketrek/TREK [@asylumexp](https://github.com/asylumexp) ([#15893](https://github.com/community-scripts/ProxmoxVE/pull/15893))
|
||||
- update authentik to 2026.5.5 [@thieneret](https://github.com/thieneret) ([#15855](https://github.com/community-scripts/ProxmoxVE/pull/15855))
|
||||
- [FIX] BookOrbit: add missing `restore_backup` during update [@vhsdream](https://github.com/vhsdream) ([#15881](https://github.com/community-scripts/ProxmoxVE/pull/15881))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: centralize deploy tail + trap-based tmpdir cleanup [@MickLesk](https://github.com/MickLesk) ([#15872](https://github.com/community-scripts/ProxmoxVE/pull/15872))
|
||||
- Update OPNsense from 26.1 to 26.7 [@tdn131](https://github.com/tdn131) ([#15895](https://github.com/community-scripts/ProxmoxVE/pull/15895))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- Revert "core: add configurable host CA inheritance during bootstrap" [@MickLesk](https://github.com/MickLesk) ([#15886](https://github.com/community-scripts/ProxmoxVE/pull/15886))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(build.func): expand glob in SSH key "Scan Folder/Glob" so it can find keys [@TowyTowy](https://github.com/TowyTowy) ([#15873](https://github.com/community-scripts/ProxmoxVE/pull/15873))
|
||||
|
||||
## 2026-07-18
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: add configurable host CA inheritance during bootstrap [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15840](https://github.com/community-scripts/ProxmoxVE/pull/15840))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: Safe Delete Directorys & Update PYTHON_VERSION with setup_uv [@MickLesk](https://github.com/MickLesk) ([#15870](https://github.com/community-scripts/ProxmoxVE/pull/15870))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.update-lxcs] feat: optional reporting success/failures to heathchecks.io (or others) [@sir106](https://github.com/sir106) ([#15701](https://github.com/community-scripts/ProxmoxVE/pull/15701))
|
||||
|
||||
## 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
|
||||
|
||||
- webtrees: initialize database schema before admin user creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15837](https://github.com/community-scripts/ProxmoxVE/pull/15837))
|
||||
- Fix DocuSeal missing Leptonica deps on install and update [@Copilot](https://github.com/Copilot) ([#15858](https://github.com/community-scripts/ProxmoxVE/pull/15858))
|
||||
- apache-guacamole: detect installed extensions during update [@TowyTowy](https://github.com/TowyTowy) ([#15841](https://github.com/community-scripts/ProxmoxVE/pull/15841))
|
||||
- CLIProxyAPI: fix update deleting config.yaml [@austinpilz](https://github.com/austinpilz) ([#15834](https://github.com/community-scripts/ProxmoxVE/pull/15834))
|
||||
- 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
|
||||
|
||||
- AFFiNE: Bump to 0.27.0 [@MickLesk](https://github.com/MickLesk) ([#15848](https://github.com/community-scripts/ProxmoxVE/pull/15848))
|
||||
- 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
|
||||
|
||||
- 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
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Element Synapse: Fix heredoc syntax in elementsynapse-install.sh [@tremor021](https://github.com/tremor021) ([#15594](https://github.com/community-scripts/ProxmoxVE/pull/15594))
|
||||
- Twenty: Fix backup restore [@tremor021](https://github.com/tremor021) ([#15586](https://github.com/community-scripts/ProxmoxVE/pull/15586))
|
||||
- fix(endurain): update frontend dist path after upstream restructure [@joaovitoriasilva](https://github.com/joaovitoriasilva) ([#15590](https://github.com/community-scripts/ProxmoxVE/pull/15590))
|
||||
|
||||
## 2026-07-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: handle mise monorepo_root rename correctly | bump to 3.0.1 [@MickLesk](https://github.com/MickLesk) ([#15557](https://github.com/community-scripts/ProxmoxVE/pull/15557))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Opencloud: bump to v7.2.0 [@vhsdream](https://github.com/vhsdream) ([#15575](https://github.com/community-scripts/ProxmoxVE/pull/15575))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- tools.func: fix corepack/pnpm install flow in setup_nodejs [@MickLesk](https://github.com/MickLesk) ([#15579](https://github.com/community-scripts/ProxmoxVE/pull/15579))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
||||
|
||||
## 2026-07-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
||||
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
||||
|
||||
## 2026-07-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
||||
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
||||
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
||||
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
||||
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
||||
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
||||
|
||||
## 2026-06-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
||||
|
||||
## 2026-06-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
||||
|
||||
## 2026-06-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
@@ -751,392 +1210,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- chore(ct): sync coredns defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15182](https://github.com/community-scripts/ProxmoxVE/pull/15182))
|
||||
- chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184))
|
||||
- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183))
|
||||
|
||||
## 2026-06-18
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- flowise: add deps / uv / python 3.11 [@MickLesk](https://github.com/MickLesk) ([#15177](https://github.com/community-scripts/ProxmoxVE/pull/15177))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- refactor: crafty-controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15178](https://github.com/community-scripts/ProxmoxVE/pull/15178))
|
||||
|
||||
## 2026-06-17
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- kasm: fix release detection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15151](https://github.com/community-scripts/ProxmoxVE/pull/15151))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- trek: update install and upgrade workflow for v3.1.0 [@MickLesk](https://github.com/MickLesk) ([#15165](https://github.com/community-scripts/ProxmoxVE/pull/15165))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- chore(paperless-ngx): pin version to prevent v3 update [@tomfrenzel](https://github.com/tomfrenzel) ([#15171](https://github.com/community-scripts/ProxmoxVE/pull/15171))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- immich public proxy: replace npm install with npm ci for consistent dependency installation [@MickLesk](https://github.com/MickLesk) ([#15166](https://github.com/community-scripts/ProxmoxVE/pull/15166))
|
||||
|
||||
## 2026-06-16
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Feishin ([#15130](https://github.com/community-scripts/ProxmoxVE/pull/15130))
|
||||
- Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131))
|
||||
- Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(degoog): use localhost for valkey url [@ethan-hgwr](https://github.com/ethan-hgwr) ([#15149](https://github.com/community-scripts/ProxmoxVE/pull/15149))
|
||||
- Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141))
|
||||
- fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140))
|
||||
- fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137))
|
||||
|
||||
## 2026-06-15
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Watcharr: Clean install on update [@tremor021](https://github.com/tremor021) ([#15119](https://github.com/community-scripts/ProxmoxVE/pull/15119))
|
||||
- Vaultwarden: extend version check for VaultWarden update [@MickLesk](https://github.com/MickLesk) ([#15105](https://github.com/community-scripts/ProxmoxVE/pull/15105))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- degoog: add curl-impersonate to script [@MickLesk](https://github.com/MickLesk) ([#15117](https://github.com/community-scripts/ProxmoxVE/pull/15117))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: extend mesa-vulkan-drivers and vulkan-tools to installation for ARC GPU's [@MickLesk](https://github.com/MickLesk) ([#15106](https://github.com/community-scripts/ProxmoxVE/pull/15106))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: improve mirror selection and error handling [@MickLesk](https://github.com/MickLesk) ([#15108](https://github.com/community-scripts/ProxmoxVE/pull/15108))
|
||||
- core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107))
|
||||
|
||||
## 2026-06-14
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Iinvoiceninja: fix nginx setup assets port [@MickLesk](https://github.com/MickLesk) ([#15090](https://github.com/community-scripts/ProxmoxVE/pull/15090))
|
||||
- CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Implement backup functions for scripts C-D [@tremor021](https://github.com/tremor021) ([#15096](https://github.com/community-scripts/ProxmoxVE/pull/15096))
|
||||
|
||||
## 2026-06-13
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- BookOrbit ([#15080](https://github.com/community-scripts/ProxmoxVE/pull/15080))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Update authentik version to 2026.5.3 [@thieneret](https://github.com/thieneret) ([#15093](https://github.com/community-scripts/ProxmoxVE/pull/15093))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Update image-processing libraries [@vhsdream](https://github.com/vhsdream) ([#15082](https://github.com/community-scripts/ProxmoxVE/pull/15082))
|
||||
- HomeBox: Support v0.26.0 [@tomfrenzel](https://github.com/tomfrenzel) ([#15086](https://github.com/community-scripts/ProxmoxVE/pull/15086))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Implement backup functions for scripts A-B [@tremor021](https://github.com/tremor021) ([#15075](https://github.com/community-scripts/ProxmoxVE/pull/15075))
|
||||
|
||||
## 2026-06-12
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Twenty ([#15047](https://github.com/community-scripts/ProxmoxVE/pull/15047))
|
||||
- Alpine-Cinny ([#15044](https://github.com/community-scripts/ProxmoxVE/pull/15044))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ 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))
|
||||
|
||||
## 2026-06-04
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix status messages for several alpine scripts [@tremor021](https://github.com/tremor021) ([#14911](https://github.com/community-scripts/ProxmoxVE/pull/14911))
|
||||
- ReactiveResume: Fix Service Path [@MickLesk](https://github.com/MickLesk) ([#14926](https://github.com/community-scripts/ProxmoxVE/pull/14926))
|
||||
- Jellyfin: install intel-igc deps before intel-opencl-icd to fix dependency order [@MickLesk](https://github.com/MickLesk) ([#14927](https://github.com/community-scripts/ProxmoxVE/pull/14927))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- OpenThread-BR: use official GitHub releases [@tomfrenzel](https://github.com/tomfrenzel) ([#14916](https://github.com/community-scripts/ProxmoxVE/pull/14916))
|
||||
- Grist: remove extra text at the end of installation [@tremor021](https://github.com/tremor021) ([#14905](https://github.com/community-scripts/ProxmoxVE/pull/14905))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- chore(ct): sync sparkyfitness defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#14925](https://github.com/community-scripts/ProxmoxVE/pull/14925))
|
||||
|
||||
## 2026-06-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Glance: Use separate directory for configuration files [@tremor021](https://github.com/tremor021) ([#14906](https://github.com/community-scripts/ProxmoxVE/pull/14906))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [core]: Fix alignment for `msg_` functions [@tremor021](https://github.com/tremor021) ([#14908](https://github.com/community-scripts/ProxmoxVE/pull/14908))
|
||||
|
||||
## 2026-06-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- DDNS-Updater ([#14883](https://github.com/community-scripts/ProxmoxVE/pull/14883))
|
||||
- InvoiceShelf ([#14882](https://github.com/community-scripts/ProxmoxVE/pull/14882))
|
||||
- Certimate ([#14881](https://github.com/community-scripts/ProxmoxVE/pull/14881))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- OpenThread-BR: preserve config during update [@tomfrenzel](https://github.com/tomfrenzel) ([#14893](https://github.com/community-scripts/ProxmoxVE/pull/14893))
|
||||
- infisical: fix update abort due to creds field mismatch (#14868) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14870](https://github.com/community-scripts/ProxmoxVE/pull/14870))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- feat(degoog): enable default valkey cache integration [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14871](https://github.com/community-scripts/ProxmoxVE/pull/14871))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- chore: bump Node version in selected scripts [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14873](https://github.com/community-scripts/ProxmoxVE/pull/14873))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add support for Rust installation profile in setup_rust [@MickLesk](https://github.com/MickLesk) ([#14872](https://github.com/community-scripts/ProxmoxVE/pull/14872))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- fix(workflow): only flag node drift when local is behind upstream [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14874](https://github.com/community-scripts/ProxmoxVE/pull/14874))
|
||||
|
||||
## 2026-06-01
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix(dispatcharr): forward nginx port for M3U URLs on new installs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14862](https://github.com/community-scripts/ProxmoxVE/pull/14862))
|
||||
- Set environment paths in service for apprise-api-install.sh [@SystemIdleProcess](https://github.com/SystemIdleProcess) ([#14805](https://github.com/community-scripts/ProxmoxVE/pull/14805))
|
||||
- fix(fireshare): rebuild client on update to fix nginx 500 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14848](https://github.com/community-scripts/ProxmoxVE/pull/14848))
|
||||
- Fix Kan build failure (TS7016 nodemailer) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14856](https://github.com/community-scripts/ProxmoxVE/pull/14856))
|
||||
- fix(firefly): set Data Importer APP_URL for subdirectory install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14847](https://github.com/community-scripts/ProxmoxVE/pull/14847))
|
||||
- kan: extend fetch_and_deploy_gh_tag to use 'latest' tag [@MickLesk](https://github.com/MickLesk) ([#14853](https://github.com/community-scripts/ProxmoxVE/pull/14853))
|
||||
- Glance: preserve glance.yml across updates [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14845](https://github.com/community-scripts/ProxmoxVE/pull/14845))
|
||||
- NginxProxymanager: set Certbot version in npm.service environment variable (2.15.0) [@MickLesk](https://github.com/MickLesk) ([#14843](https://github.com/community-scripts/ProxmoxVE/pull/14843))
|
||||
- [FileFlows] Fix service handling by using systemctl --all with quoted glob [@adrianmusante](https://github.com/adrianmusante) ([#14838](https://github.com/community-scripts/ProxmoxVE/pull/14838))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Kometa: also update Quickstart in update_script [@MickLesk](https://github.com/MickLesk) ([#14529](https://github.com/community-scripts/ProxmoxVE/pull/14529))
|
||||
|
||||
## 2026-05-31
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Manyfold: regenerate Rails credentials on update to fix encryption mimatch [@MickLesk](https://github.com/MickLesk) ([#14817](https://github.com/community-scripts/ProxmoxVE/pull/14817))
|
||||
- OpenThread-BR: use correct ipv6 configuration [@tomfrenzel](https://github.com/tomfrenzel) ([#14829](https://github.com/community-scripts/ProxmoxVE/pull/14829))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Webtrees: use PHP CLI for initial setup instead of curl to setup wizard [@MickLesk](https://github.com/MickLesk) ([#14818](https://github.com/community-scripts/ProxmoxVE/pull/14818))
|
||||
- Kima-Hub: use curl_with_retry for ML model downloads to fix possible timeout issues [@MickLesk](https://github.com/MickLesk) ([#14816](https://github.com/community-scripts/ProxmoxVE/pull/14816))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- PBS4-Upgrade: update current PBS3 packages before switching to Trixie repos [@MickLesk](https://github.com/MickLesk) ([#14815](https://github.com/community-scripts/ProxmoxVE/pull/14815))
|
||||
|
||||
## 2026-05-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Flatnotes: fix empty package name in pyproject.toml [@MickLesk](https://github.com/MickLesk) ([#14814](https://github.com/community-scripts/ProxmoxVE/pull/14814))
|
||||
|
||||
## 2026-05-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Kan ([#14776](https://github.com/community-scripts/ProxmoxVE/pull/14776))
|
||||
- Dynacat ([#14777](https://github.com/community-scripts/ProxmoxVE/pull/14777))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix lobehub docker path [@dannyyy](https://github.com/dannyyy) ([#14793](https://github.com/community-scripts/ProxmoxVE/pull/14793))
|
||||
- karakeep: add more hdd space [@MickLesk](https://github.com/MickLesk) ([#14797](https://github.com/community-scripts/ProxmoxVE/pull/14797))
|
||||
- Grist: Revert installation of EE [@tremor021](https://github.com/tremor021) ([#14784](https://github.com/community-scripts/ProxmoxVE/pull/14784))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Sure: Remove `$STD` for `systemctl enable -q` [@tremor021](https://github.com/tremor021) ([#14801](https://github.com/community-scripts/ProxmoxVE/pull/14801))
|
||||
- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183))
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-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.27.2"
|
||||
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"
|
||||
|
||||
ensure_dependencies cmake
|
||||
|
||||
create_backup /opt/affine/.env /root/.affine/config /root/.affine/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "${RELEASE}" "/opt/affine"
|
||||
|
||||
restore_backup
|
||||
|
||||
if [[ ! -f /opt/affine/.env ]]; then
|
||||
msg_error "/opt/affine/.env is missing (lost by an earlier update). Recreate it before retrying — see the AFFiNE install script for the expected variables."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Rebuilding Application (Patience ~25 mins, don't close the console!)"
|
||||
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)
|
||||
export HUSKY=0
|
||||
$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" --no-verify --allow-empty
|
||||
|
||||
# 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.13.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
|
||||
|
||||
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}"
|
||||
+4
-9
@@ -30,16 +30,11 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "cinny" "cinnyapp/cinny"; then
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/cinny/config.json /opt/cinny_config.json.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/cinny/config.json
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cinny" "cinnyapp/cinny" "prebuild" "latest" "/opt/cinny" "cinny-*.tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/cinny_config.json.bak /opt/cinny/config.json
|
||||
rm -f /opt/cinny_config.json.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Restarting nginx"
|
||||
$STD rc-service nginx restart
|
||||
@@ -54,5 +49,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}"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -146,7 +146,7 @@ function update_script() {
|
||||
|
||||
# Check and upgrade optional extensions
|
||||
# TOTP Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar ]]; then
|
||||
if compgen -G "/etc/guacamole/extensions/guacamole-auth-totp-*.jar" >/dev/null; then
|
||||
msg_info "Updating TOTP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar
|
||||
curl_download "/tmp/guacamole-auth-totp.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz"
|
||||
@@ -158,7 +158,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
# DUO Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar ]]; then
|
||||
if compgen -G "/etc/guacamole/extensions/guacamole-auth-duo-*.jar" >/dev/null; then
|
||||
msg_info "Updating DUO Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar
|
||||
curl_download "/tmp/guacamole-auth-duo.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz"
|
||||
@@ -170,7 +170,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
# LDAP Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar ]]; then
|
||||
if compgen -G "/etc/guacamole/extensions/guacamole-auth-ldap-*.jar" >/dev/null; then
|
||||
msg_info "Updating LDAP Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar
|
||||
curl_download "/tmp/guacamole-auth-ldap.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz"
|
||||
@@ -182,7 +182,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
# Quick Connect Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar ]]; then
|
||||
if compgen -G "/etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar" >/dev/null; then
|
||||
msg_info "Updating Quick Connect Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar
|
||||
curl_download "/tmp/guacamole-auth-quickconnect.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz"
|
||||
@@ -194,7 +194,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
# History Recording Storage Extension
|
||||
if [[ -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar ]]; then
|
||||
if compgen -G "/etc/guacamole/extensions/guacamole-history-recording-storage-*.jar" >/dev/null; then
|
||||
msg_info "Updating History Recording Storage Extension"
|
||||
rm -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar
|
||||
curl_download "/tmp/guacamole-history-recording-storage.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz"
|
||||
|
||||
+64
-63
@@ -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
|
||||
@@ -38,13 +38,14 @@ function update_script() {
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
setup_go
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.3" setup_uv
|
||||
$STD uv cache clean
|
||||
UV_PYTHON_INSTALL_DIR="/usr/local/bin" PYTHON_VERSION="3.14.6" setup_uv
|
||||
RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust
|
||||
setup_yq
|
||||
|
||||
AUTHENTIK_VERSION="version/2026.5.3"
|
||||
AUTHENTIK_VERSION="version/2026.5.5"
|
||||
# Source: https://github.com/goauthentik/fips/blob/main/Makefile#L26
|
||||
XMLSEC_VERSION="1.3.11"
|
||||
XMLSEC_VERSION="1.3.12"
|
||||
|
||||
if check_for_gh_release "geoipupdate" "maxmind/geoipupdate"; then
|
||||
fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary"
|
||||
@@ -66,26 +67,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 +100,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 +126,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 +160,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 +175,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 +199,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 +218,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 +271,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
@@ -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
@@ -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}"
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
+3
-2
@@ -53,6 +53,7 @@ function update_script() {
|
||||
mkdir -p /opt/bookorbit/server/migrations
|
||||
cp -r /opt/bookorbit/server/src/db/migrations/. /opt/bookorbit/server/migrations/
|
||||
chmod +x /opt/bookorbit/server/bin/kepubify/*
|
||||
restore_backup
|
||||
APP_VER=$(cat ~/.bookorbit)
|
||||
sed -i "s/^APP_VERSION=.*/APP_VERSION=v$APP_VER/" /opt/bookorbit/.env
|
||||
msg_ok "Rebuilt Application"
|
||||
@@ -75,5 +76,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
@@ -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}"
|
||||
|
||||
+6
-2
@@ -36,8 +36,12 @@ function update_script() {
|
||||
systemctl stop cliproxyapi
|
||||
msg_ok "Stopped CLIProxyAPI"
|
||||
|
||||
create_backup /opt/cliproxyapi/config.yaml
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_$(arch_resolve "amd64" "aarch64").tar.gz"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting CLIProxyAPI"
|
||||
systemctl start cliproxyapi
|
||||
msg_ok "Started CLIProxyAPI"
|
||||
@@ -52,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 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
@@ -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
@@ -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
-25
@@ -116,21 +116,10 @@ EOF
|
||||
|
||||
msg_info "Creating Backup"
|
||||
BACKUP_FILE="/opt/dispatcharr_backup_$(date +%F_%H-%M-%S).tar.gz"
|
||||
if [[ -f /opt/dispatcharr/.env ]]; then
|
||||
cp /opt/dispatcharr/.env /tmp/dispatcharr.env.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-gunicorn.sh ]]; then
|
||||
rm -f /opt/dispatcharr/start-gunicorn.sh
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-celery.sh ]]; then
|
||||
cp /opt/dispatcharr/start-celery.sh /tmp/start-celery.sh.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-celerybeat.sh ]]; then
|
||||
cp /opt/dispatcharr/start-celerybeat.sh /tmp/start-celerybeat.sh.backup
|
||||
fi
|
||||
if [[ -f /opt/dispatcharr/start-daphne.sh ]]; then
|
||||
cp /opt/dispatcharr/start-daphne.sh /tmp/start-daphne.sh.backup
|
||||
fi
|
||||
create_backup /opt/dispatcharr/.env /opt/dispatcharr/start-celery.sh /opt/dispatcharr/start-celerybeat.sh /opt/dispatcharr/start-daphne.sh
|
||||
if [[ -f /opt/dispatcharr/.env ]]; then
|
||||
set -o allexport
|
||||
source /opt/dispatcharr/.env
|
||||
@@ -145,20 +134,9 @@ EOF
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" "tarball"
|
||||
|
||||
msg_info "Updating Dispatcharr Backend"
|
||||
if [[ -f /tmp/dispatcharr.env.backup ]]; then
|
||||
mv /tmp/dispatcharr.env.backup /opt/dispatcharr/.env
|
||||
fi
|
||||
if [[ -f /tmp/start-celery.sh.backup ]]; then
|
||||
mv /tmp/start-celery.sh.backup /opt/dispatcharr/start-celery.sh
|
||||
fi
|
||||
if [[ -f /tmp/start-celerybeat.sh.backup ]]; then
|
||||
mv /tmp/start-celerybeat.sh.backup /opt/dispatcharr/start-celerybeat.sh
|
||||
fi
|
||||
if [[ -f /tmp/start-daphne.sh.backup ]]; then
|
||||
mv /tmp/start-daphne.sh.backup /opt/dispatcharr/start-daphne.sh
|
||||
fi
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Dispatcharr Backend"
|
||||
if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then
|
||||
DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
|
||||
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env
|
||||
|
||||
+3
-2
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+5
-14
@@ -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/app/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/app
|
||||
cd /opt/endurain/frontend
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cp /opt/endurain.env.js /opt/endurain/frontend/app/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")
|
||||
|
||||
+57
-3
@@ -29,9 +29,63 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_info "Updating ERPNext"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
||||
msg_ok "Updated ERPNext"
|
||||
|
||||
FRAPPE_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||
SITE="$(ls /opt/frappe-bench/sites/*/site_config.json 2>/dev/null | head -1 | cut -d/ -f5)"
|
||||
[[ -z "$SITE" ]] && SITE="site1.local"
|
||||
|
||||
msg_info "Stopping ERPNext service"
|
||||
$STD supervisorctl stop all
|
||||
msg_ok "Stopped ERPNext service"
|
||||
|
||||
if [[ "${FRAPPE_MAJOR:-0}" -lt 16 ]] && { [[ "${PHS_SILENT:-0}" == "1" ]] || whiptail --backtitle "Proxmox VE Helper Scripts" --title "ERPNext v16 Major Upgrade" \
|
||||
--yesno "A major upgrade from Frappe/ERPNext v15 to v16 is available.\n\nUpgrade to v16 now?" 16 78; }; then
|
||||
|
||||
msg_info "Backing up site ${SITE}"
|
||||
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} backup"
|
||||
msg_ok "Backup created"
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y pkg-config
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && uv python install 3.14'
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Migrating bench environment"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench migrate-env "$(uv python find 3.14)"'
|
||||
msg_ok "Migrated environment"
|
||||
|
||||
msg_info "Switching Frappe and ERPNext to v16 (Patience)"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench switch-to-branch version-16 frappe erpnext --upgrade' || true
|
||||
NEW_MAJOR="$(grep -oP '__version__\s*=\s*[\x27"]\K[0-9]+' /opt/frappe-bench/apps/frappe/frappe/__init__.py 2>/dev/null || echo 0)"
|
||||
if [[ "${NEW_MAJOR:-0}" -lt 16 ]]; then
|
||||
msg_error "Failed to switch Frappe/ERPNext to v16"
|
||||
exit 250
|
||||
fi
|
||||
msg_ok "Switched to v16"
|
||||
|
||||
msg_info "Running database migration (Patience)"
|
||||
for i in 1 2 3; do
|
||||
$STD sudo -u frappe bash -c "export PATH=\"\$HOME/.local/bin:/usr/local/bin:\$PATH\"; cd /opt/frappe-bench && bench --site ${SITE} migrate" && break
|
||||
[[ "$i" -eq 3 ]] && {
|
||||
msg_error "Database migration failed after 3 attempts"
|
||||
exit 253
|
||||
}
|
||||
done
|
||||
msg_ok "Database migrated"
|
||||
|
||||
msg_info "Building assets"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench build --production'
|
||||
msg_ok "Assets built"
|
||||
|
||||
msg_info "Restarting ERPNext"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && bench restart'
|
||||
msg_ok "Upgraded ERPNext to v16"
|
||||
else
|
||||
msg_info "Updating ERPNext"
|
||||
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:$PATH"; cd /opt/frappe-bench && bench update --reset'
|
||||
msg_ok "Updated ERPNext"
|
||||
fi
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable
+65
@@ -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: John McLear (JohnMcLear)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://etherpad.org
|
||||
|
||||
APP="Etherpad"
|
||||
var_tags="${var_tags:-docs;collaboration;editor}"
|
||||
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}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/etherpad-lite ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "etherpad-lite" "ether/etherpad"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop etherpad
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/etherpad-lite/.env /opt/etherpad-lite/APIKEY.txt /opt/etherpad-lite/settings.json
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "etherpad-lite" "ether/etherpad" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Etherpad"
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
$STD corepack enable
|
||||
cd /opt/etherpad-lite
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build:etherpad
|
||||
msg_ok "Rebuilt Etherpad"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start etherpad
|
||||
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}:9001${CL}"
|
||||
@@ -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: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/ZimengXiong/ExcaliDash
|
||||
|
||||
APP="ExcaliDash"
|
||||
var_tags="${var_tags:-documents;drawing;collaboration}"
|
||||
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:-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/excalidash ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "excalidash" "ZimengXiong/ExcaliDash"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop excalidash
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidash" "ZimengXiong/ExcaliDash" "tarball"
|
||||
ln -sf /opt/excalidash_data/.env /opt/excalidash/backend/.env
|
||||
set -a && source /opt/excalidash_data/.env && set +a
|
||||
|
||||
msg_info "Configuring Database Provider (${DATABASE_PROVIDER:-sqlite})"
|
||||
cd /opt/excalidash/backend
|
||||
sed -i '/datasource db {/,/}/ s/provider = env("[^"]*")/provider = "'"${DATABASE_PROVIDER:-sqlite}"'"/' prisma/schema.prisma
|
||||
mv prisma/migrations/"${DATABASE_PROVIDER:-sqlite}"/* prisma/migrations/
|
||||
rm -rf prisma/migrations/postgresql prisma/migrations/sqlite
|
||||
msg_ok "Configured Database Provider"
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
$STD npm ci
|
||||
$STD npx prisma generate
|
||||
$STD npx tsc
|
||||
cd /opt/excalidash/frontend
|
||||
$STD npm ci
|
||||
$STD npm run build
|
||||
cp -r /opt/excalidash/frontend/dist/. /var/www/excalidash/
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/excalidash/backend
|
||||
$STD npx prisma migrate deploy
|
||||
msg_ok "Ran Migrations"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start excalidash
|
||||
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}:6767${CL}"
|
||||
+2
-2
@@ -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
@@ -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
@@ -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
|
||||
|
||||
+2
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop nginx
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
if [[ -f /opt/fladder/assets/config/config.json ]]; then
|
||||
msg_info "Backing up configuration"
|
||||
cp /opt/fladder/assets/config/config.json /tmp/fladder_config.json.bak
|
||||
msg_ok "Configuration backed up"
|
||||
fi
|
||||
create_backup /opt/fladder/assets/config/config.json
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Fladder" "DonutWare/Fladder" "prebuild" "latest" "/opt/fladder" "Fladder-Web-*.zip"
|
||||
|
||||
if [[ -f /tmp/fladder_config.json.bak ]]; then
|
||||
msg_info "Restoring configuration"
|
||||
mkdir -p /opt/fladder/assets/config
|
||||
cp /tmp/fladder_config.json.bak /opt/fladder/assets/config/config.json
|
||||
rm -f /tmp/fladder_config.json.bak
|
||||
msg_ok "Configuration restored"
|
||||
fi
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start nginx
|
||||
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: CrazyWolf13
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/pawelmalak/flame
|
||||
|
||||
APP="Flame"
|
||||
var_tags="${var_tags:-dashboard;startpage}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_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/flame ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "flame" "pawelmalak/flame"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop flame
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/flame/.env \
|
||||
/opt/flame/data
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Application"
|
||||
cd /opt/flame
|
||||
mkdir -p data public
|
||||
$STD npm install --production
|
||||
cd /opt/flame/client
|
||||
$STD npm install --production
|
||||
$STD npm run build
|
||||
cd /opt/flame
|
||||
cp -r client/build/. public/
|
||||
msg_ok "Rebuilt Application"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start flame
|
||||
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}:5005${CL}"
|
||||
+4
-12
@@ -34,12 +34,11 @@ function update_script() {
|
||||
systemctl stop flatnotes
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration and Data"
|
||||
cp /opt/flatnotes/.env /opt/flatnotes.env
|
||||
cp -r /opt/flatnotes/data /opt/flatnotes_data_backup
|
||||
msg_ok "Backed up Configuration and Data"
|
||||
create_backup /opt/flatnotes/.env /opt/flatnotes/data
|
||||
|
||||
fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Flatnotes"
|
||||
cd /opt/flatnotes/client
|
||||
@@ -52,13 +51,6 @@ function update_script() {
|
||||
$STD /usr/local/bin/uv sync
|
||||
msg_ok "Updated Flatnotes"
|
||||
|
||||
msg_info "Restoring Configuration and Data"
|
||||
cp /opt/flatnotes.env /opt/flatnotes/.env
|
||||
cp -r /opt/flatnotes_data_backup/. /opt/flatnotes/data
|
||||
rm -f /opt/flatnotes.env
|
||||
rm -r /opt/flatnotes_data_backup
|
||||
msg_ok "Restored Configuration and Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start flatnotes
|
||||
msg_ok "Started Service"
|
||||
|
||||
@@ -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}"
|
||||
@@ -38,9 +38,9 @@ function update_script() {
|
||||
systemctl stop fluid-calendar
|
||||
msg_info "Stopped Service"
|
||||
|
||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||
create_backup /opt/fluid-calendar/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
|
||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Fluid Calendar"
|
||||
cd /opt/fluid-calendar
|
||||
|
||||
@@ -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: Slaviša Arežina (tremor021)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://gitlab.com/fmd-foss/fmd-server
|
||||
|
||||
APP="FMD-Server"
|
||||
var_tags="${var_tags:-FMD}"
|
||||
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/fmd-server ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gl_release "fmd-server" "fmd-foss/fmd-server"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop fmd-server
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/fmd-server/config.yml /opt/fmd-server/db
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "fmd-server" "fmd-foss/fmd-server" "prebuild" "latest" "/opt/fmd-server" "fmd-server-*.zip"
|
||||
|
||||
msg_info "Configuring FMD-Server"
|
||||
cd /opt/fmd-server
|
||||
chmod +x fmd-server-*
|
||||
msg_ok "Configured FMD-Server"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start fmd-server
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
||||
@@ -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}"
|
||||
+4
-2
@@ -41,13 +41,15 @@ function update_script() {
|
||||
--exclude="ghostfolio/node_modules" \
|
||||
--exclude="ghostfolio/dist" \
|
||||
ghostfolio
|
||||
mv /opt/ghostfolio/.env /opt/env.backup
|
||||
msg_ok "Backup Created"
|
||||
|
||||
create_backup /opt/ghostfolio/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Ghostfolio"
|
||||
mv /opt/env.backup /opt/ghostfolio/.env
|
||||
sed -i -E '/^DATABASE_URL=/ s/[?&]sslmode=prefer//g' /opt/ghostfolio/.env
|
||||
cd /opt/ghostfolio
|
||||
$STD npm ci
|
||||
|
||||
+2
-9
@@ -35,18 +35,11 @@ function update_script() {
|
||||
systemctl stop gogs
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/gogs/custom /opt/gogs_custom_backup
|
||||
cp -r /opt/gogs/data /opt/gogs_data_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/gogs/custom /opt/gogs/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gogs" "gogs/gogs" "prebuild" "latest" "/opt/gogs" "gogs_*_linux_$(arch_resolve).tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/gogs_custom_backup/. /opt/gogs/custom
|
||||
cp -r /opt/gogs_data_backup/. /opt/gogs/data
|
||||
rm -rf /opt/gogs_custom_backup /opt/gogs_data_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gogs
|
||||
|
||||
@@ -36,6 +36,30 @@ function update_script() {
|
||||
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-$(arch_resolve).zip"
|
||||
chmod +x /opt/gotify/gotify-linux-$(arch_resolve)
|
||||
|
||||
if [[ ! -f /opt/gotify/gotify-server.env ]]; then
|
||||
gotify_old_config=""
|
||||
for f in /opt/gotify/config.yml /etc/gotify/config.yml; do
|
||||
[[ -f "$f" ]] && gotify_old_config="$f" && break
|
||||
done
|
||||
if [[ -n "$gotify_old_config" ]]; then
|
||||
msg_info "Migrating ${gotify_old_config} to env format (Gotify 3.x)"
|
||||
if /opt/gotify/gotify-linux-$(arch_resolve) migrate-config "$gotify_old_config" >/opt/gotify/gotify-server.env 2>/dev/null; then
|
||||
mv "$gotify_old_config" "${gotify_old_config}.bak"
|
||||
msg_ok "Migrated config to /opt/gotify/gotify-server.env (backup: ${gotify_old_config}.bak)"
|
||||
else
|
||||
rm -f /opt/gotify/gotify-server.env
|
||||
msg_warn "Config migration failed — left ${gotify_old_config} in place, review manually"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! grep -qE '^ExecStart=.* serve' /etc/systemd/system/gotify.service 2>/dev/null; then
|
||||
msg_info "Migrating service to serve subcommand (Gotify 3.x)"
|
||||
sed -i -E 's|^(ExecStart=/opt/gotify/.*gotify-linux-[^ ]+)$|\1 serve|' /etc/systemd/system/gotify.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Migrated service to serve subcommand"
|
||||
fi
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start gotify
|
||||
msg_ok "Started Service"
|
||||
|
||||
+54
@@ -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}"
|
||||
+4
-11
@@ -37,21 +37,14 @@ function update_script() {
|
||||
systemctl stop grist
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating backup"
|
||||
rm -rf /opt/grist_bak
|
||||
mv /opt/grist /opt/grist_bak
|
||||
msg_ok "Backup created"
|
||||
create_backup /opt/grist/.env /opt/grist/docs /opt/grist/grist-sessions.db /opt/grist/landing.db
|
||||
|
||||
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Grist"
|
||||
mkdir -p /opt/grist/docs
|
||||
cp -n /opt/grist_bak/.env /opt/grist/.env
|
||||
if ls /opt/grist_bak/docs/* &>/dev/null; then
|
||||
cp -r /opt/grist_bak/docs/* /opt/grist/docs/
|
||||
fi
|
||||
[[ -f /opt/grist_bak/grist-sessions.db ]] && cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
|
||||
[[ -f /opt/grist_bak/landing.db ]] && cp /opt/grist_bak/landing.db /opt/grist/landing.db
|
||||
cd /opt/grist
|
||||
$STD yarn install
|
||||
$STD yarn run build:prod
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
___ _____________ _ ________
|
||||
/ | / ____/ ____(_) | / / ____/
|
||||
/ /| | / /_ / /_ / / |/ / __/
|
||||
/ ___ |/ __/ / __/ / / /| / /___
|
||||
/_/ |_/_/ /_/ /_/_/ |_/_____/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
____ __ __ __ _ __
|
||||
/ __ )___ ____ __ _____ _____/ / / /___ _/ /_ (_) /______
|
||||
/ __ / _ \/ __ `/ | / / _ \/ ___/ /_/ / __ `/ __ \/ / __/ ___/
|
||||
/ /_/ / __/ /_/ /| |/ / __/ / / __ / /_/ / /_/ / / /_(__ )
|
||||
/_____/\___/\__,_/ |___/\___/_/ /_/ /_/\__,_/_.___/_/\__/____/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
________ __ __
|
||||
/ ____/ /_/ /_ ___ _________ ____ _____/ /
|
||||
/ __/ / __/ __ \/ _ \/ ___/ __ \/ __ `/ __ /
|
||||
/ /___/ /_/ / / / __/ / / /_/ / /_/ / /_/ /
|
||||
/_____/\__/_/ /_/\___/_/ / .___/\__,_/\__,_/
|
||||
/_/
|
||||
@@ -0,0 +1,6 @@
|
||||
______ ___ ____ __
|
||||
/ ____/ ___________ _/ (_) __ \____ ______/ /_
|
||||
/ __/ | |/_/ ___/ __ `/ / / / / / __ `/ ___/ __ \
|
||||
/ /____> </ /__/ /_/ / / / /_/ / /_/ (__ ) / / /
|
||||
/_____/_/|_|\___/\__,_/_/_/_____/\__,_/____/_/ /_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
________
|
||||
/ ____/ /___ _____ ___ ___
|
||||
/ /_ / / __ `/ __ `__ \/ _ \
|
||||
/ __/ / / /_/ / / / / / / __/
|
||||
/_/ /_/\__,_/_/ /_/ /_/\___/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
________ _ ___ ____
|
||||
/ ____/ /___ _ __(_)_______ / | / _/
|
||||
/ /_ / / __ \ | /| / / / ___/ _ \/ /| | / /
|
||||
/ __/ / / /_/ / |/ |/ / (__ ) __/ ___ |_/ /
|
||||
/_/ /_/\____/|__/|__/_/____/\___/_/ |_/___/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
________ _______ _____
|
||||
/ ____/ |/ / __ \ / ___/___ ______ _____ _____
|
||||
/ /_ / /|_/ / / / /_____\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||
/ __/ / / / / /_/ /_____/__/ / __/ / | |/ / __/ /
|
||||
/_/ /_/ /_/_____/ /____/\___/_/ |___/\___/_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
______ _ ____
|
||||
/ ____/___ _________ ____ (_)___ / __ \__ ______ ____ ___ _____
|
||||
/ /_ / __ \/ ___/ __ `/ _ \ / / __ \______/ /_/ / / / / __ \/ __ \/ _ \/ ___/
|
||||
/ __/ / /_/ / / / /_/ / __/ / / /_/ /_____/ _, _/ /_/ / / / / / / / __/ /
|
||||
/_/ \____/_/ \__, /\___/_/ /\____/ /_/ |_|\__,_/_/ /_/_/ /_/\___/_/
|
||||
/____/ /___/
|
||||
@@ -0,0 +1,6 @@
|
||||
______
|
||||
/ ____/________ __ __
|
||||
/ / __/ ___/ __ `/ | / /
|
||||
/ /_/ / / / /_/ /| |/ /
|
||||
\____/_/ \__,_/ |___/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
____ _ ___
|
||||
/ _/___ _ __(_)___/ (_)___ __ _______
|
||||
/ // __ \ | / / / __ / / __ \/ / / / ___/
|
||||
_/ // / / / |/ / / /_/ / / /_/ / /_/ (__ )
|
||||
/___/_/ /_/|___/_/\__,_/_/\____/\__,_/____/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
_ _ __ __
|
||||
(_) | / /__ ____ / /_____ __ __
|
||||
/ /| | / / _ \/ __ \/ __/ __ \/ / / /
|
||||
/ / | |/ / __/ / / / /_/ /_/ / /_/ /
|
||||
/_/ |___/\___/_/ /_/\__/\____/\__, /
|
||||
/____/
|
||||
@@ -0,0 +1,6 @@
|
||||
__ __ ________
|
||||
/ //_/___ / __/ __/___ _____
|
||||
/ ,< / __ \/ /_/ /_/ __ `/ __ \
|
||||
/ /| / /_/ / __/ __/ /_/ / / / /
|
||||
/_/ |_\____/_/ /_/ \__,_/_/ /_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
__ _____ ___ __ _
|
||||
/ / ___ ____ _/ __/ | / (_) /__(_)
|
||||
/ / / _ \/ __ `/ /_ | | /| / / / //_/ /
|
||||
/ /___/ __/ /_/ / __/ | |/ |/ / / ,< / /
|
||||
/_____/\___/\__,_/_/ |__/|__/_/_/|_/_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
__ _____ __________
|
||||
/ / ____ _________ _/ / | / ____/ _/
|
||||
/ / / __ \/ ___/ __ `/ / /| |/ / __ / /
|
||||
/ /___/ /_/ / /__/ /_/ / / ___ / /_/ // /
|
||||
/_____/\____/\___/\__,_/_/_/ |_\____/___/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
_ __ __
|
||||
/ | / /__ _ __/ /____ _________ ___
|
||||
/ |/ / _ \| |/_/ __/ _ \/ ___/ __ `__ \
|
||||
/ /| / __/> </ /_/ __/ / / / / / / /
|
||||
/_/ |_/\___/_/|_|\__/\___/_/ /_/ /_/ /_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
_ __ __ ____ _
|
||||
/ | / /___ / /____ / __ \(_)_____________ _ _____ _______ __
|
||||
/ |/ / __ \/ __/ _ \/ / / / / ___/ ___/ __ \ | / / _ \/ ___/ / / /
|
||||
/ /| / /_/ / /_/ __/ /_/ / (__ ) /__/ /_/ / |/ / __/ / / /_/ /
|
||||
/_/ |_/\____/\__/\___/_____/_/____/\___/\____/|___/\___/_/ \__, /
|
||||
/____/
|
||||
@@ -0,0 +1,6 @@
|
||||
____ _ ________ __
|
||||
/ __ \_ __(_) ____/ /___ __ ______/ /
|
||||
/ / / / |/_/ / / / / __ \/ / / / __ /
|
||||
/ /_/ /> </ / /___/ / /_/ / /_/ / /_/ /
|
||||
\____/_/|_/_/\____/_/\____/\__,_/\__,_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
____ __ __
|
||||
/ __ \____ ______/ /____ __/ /___ _
|
||||
/ /_/ / __ `/ ___/ //_/ / / / / __ `/
|
||||
/ _, _/ /_/ / /__/ ,< / /_/ / / /_/ /
|
||||
/_/ |_|\__,_/\___/_/|_|\__,_/_/\__,_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
_____ _ __
|
||||
/ ___/____ ___ __(_)___/ /
|
||||
\__ \/ __ `/ / / / / __ /
|
||||
___/ / /_/ / /_/ / / /_/ /
|
||||
/____/\__, /\__,_/_/\__,_/
|
||||
/_/
|
||||
@@ -0,0 +1,6 @@
|
||||
_____ _
|
||||
/ ___/__ ______ _____ (_)___
|
||||
\__ \/ / / / __ \/ ___/_____/ / __ \
|
||||
___/ / /_/ / / / / /__/_____/ / / / /
|
||||
/____/\__, /_/ /_/\___/ /_/_/ /_/
|
||||
/____/
|
||||
@@ -0,0 +1,6 @@
|
||||
__ __ _
|
||||
\ \/ /_ ___ ______ ____ ___ (_)
|
||||
\ / / / / | / / __ \/ __ `__ \/ /
|
||||
/ / /_/ /| |/ / /_/ / / / / / / /
|
||||
/_/\__,_/ |___/\____/_/ /_/ /_/_/
|
||||
|
||||
@@ -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}"
|
||||
|
||||
+7
-2
@@ -35,6 +35,11 @@ function update_script() {
|
||||
systemctl stop redis-server
|
||||
msg_ok "Services Stopped"
|
||||
|
||||
if ! grep -q "source /opt/homarr.env" /usr/bin/homarr 2>/dev/null; then
|
||||
echo $'#!/bin/bash\nset -a\nsource /opt/homarr.env\nset +a\ncd /opt/homarr/apps/cli && timeout 10 node ./cli.cjs "$@"' >/usr/bin/homarr
|
||||
chmod +x /usr/bin/homarr
|
||||
fi
|
||||
|
||||
if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then
|
||||
msg_info "Fixing old structure"
|
||||
systemctl disable -q --now nginx
|
||||
@@ -51,7 +56,7 @@ function update_script() {
|
||||
ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -/etc/redis
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
rm /opt/run_homarr.sh
|
||||
rm -f /opt/run_homarr.sh
|
||||
msg_ok "Fixed old structure"
|
||||
fi
|
||||
|
||||
@@ -68,7 +73,7 @@ EOF
|
||||
cp /opt/homarr/redis.conf /etc/redis/redis.conf
|
||||
sed -i -e '$a\' /etc/redis/redis.conf
|
||||
grep -q '^bind 127.0.0.1 -::1$' /etc/redis/redis.conf || echo "bind 127.0.0.1 -::1" >> /etc/redis/redis.conf
|
||||
rm /etc/nginx/nginx.conf
|
||||
rm -f /etc/nginx/nginx.conf
|
||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
||||
msg_ok "Updated Homarr"
|
||||
|
||||
|
||||
@@ -39,8 +39,12 @@ function update_script() {
|
||||
systemctl stop homebox
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/homebox/.env /opt/homebox/.data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||
chmod +x /opt/homebox/homebox
|
||||
|
||||
restore_backup
|
||||
[ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
|
||||
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
|
||||
|
||||
|
||||
+4
-17
@@ -35,16 +35,12 @@ function update_script() {
|
||||
systemctl stop homelable
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration and Data"
|
||||
cp /opt/homelable/backend/.env /opt/homelable.env.bak
|
||||
cp -r /opt/homelable/data /opt/homelable_data_bak
|
||||
if [[ -f /opt/homelable/mcp/.env ]]; then
|
||||
cp -a /opt/homelable/mcp/.env /opt/homelable-mcp.env.bak
|
||||
fi
|
||||
msg_ok "Backed up Configuration and Data"
|
||||
create_backup /opt/homelable/backend/.env /opt/homelable/data /opt/homelable/mcp/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Python Dependencies"
|
||||
cd /opt/homelable/backend
|
||||
$STD uv venv --clear /opt/homelable/backend/.venv
|
||||
@@ -57,17 +53,8 @@ function update_script() {
|
||||
$STD npm run build
|
||||
msg_ok "Rebuilt Frontend"
|
||||
|
||||
msg_info "Restoring Configuration and Data"
|
||||
cp /opt/homelable.env.bak /opt/homelable/backend/.env
|
||||
cp -r /opt/homelable_data_bak/. /opt/homelable/data/
|
||||
rm -f /opt/homelable.env.bak
|
||||
rm -rf /opt/homelable_data_bak
|
||||
msg_ok "Restored Configuration and Data"
|
||||
|
||||
if [[ -f /opt/homelable-mcp.env.bak ]]; then
|
||||
if [[ -f /opt/homelable/mcp/.env ]]; then
|
||||
msg_info "Restoring MCP Server"
|
||||
cp -a /opt/homelable-mcp.env.bak /opt/homelable/mcp/.env
|
||||
rm -f /opt/homelable-mcp.env.bak
|
||||
MCP_OWNER=$(stat -c '%U' /opt/homelable/mcp/.env)
|
||||
cd /opt/homelable/mcp
|
||||
$STD uv venv --clear /opt/homelable/mcp/.venv
|
||||
|
||||
+4
-13
@@ -37,20 +37,12 @@ function update_script() {
|
||||
systemctl stop homepage
|
||||
msg_ok "Stopped service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
cp /opt/homepage/.env /opt/homepage.env
|
||||
cp -r /opt/homepage/config /opt/homepage_config_backup
|
||||
[[ -d /opt/homepage/public/images ]] && cp -r /opt/homepage/public/images /opt/homepage_images_backup
|
||||
[[ -d /opt/homepage/public/icons ]] && cp -r /opt/homepage/public/icons /opt/homepage_icons_backup
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/homepage/.env /opt/homepage/config
|
||||
BACKUP_DIR=/opt/homepage-assets.backup create_backup /opt/homepage/public/images /opt/homepage/public/icons
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball"
|
||||
|
||||
msg_info "Restoring Backup"
|
||||
mv /opt/homepage.env /opt/homepage
|
||||
rm -rf /opt/homepage/config
|
||||
mv /opt/homepage_config_backup /opt/homepage/config
|
||||
msg_ok "Restored Backup"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Homepage (Patience)"
|
||||
RELEASE=$(get_latest_github_release "gethomepage/homepage")
|
||||
@@ -63,8 +55,7 @@ function update_script() {
|
||||
export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
|
||||
export NEXT_TELEMETRY_DISABLED=1
|
||||
$STD pnpm build
|
||||
[[ -d /opt/homepage_images_backup ]] && mv /opt/homepage_images_backup /opt/homepage/public/images
|
||||
[[ -d /opt/homepage_icons_backup ]] && mv /opt/homepage_icons_backup /opt/homepage/public/icons
|
||||
BACKUP_DIR=/opt/homepage-assets.backup restore_backup
|
||||
msg_ok "Updated Homepage"
|
||||
|
||||
msg_info "Starting service"
|
||||
|
||||
+2
-7
@@ -36,16 +36,11 @@ function update_script() {
|
||||
systemctl stop hoodik
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/hoodik/.env /opt/hoodik.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/hoodik/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hoodik" "hudikhq/hoodik" "prebuild" "latest" "/opt/hoodik" "*$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/hoodik.env.bak /opt/hoodik/.env
|
||||
rm -f /opt/hoodik.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start hoodik
|
||||
|
||||
+2
-7
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop igotify
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/igotify/.env /opt/igotify.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/igotify/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "igotify" "androidseb25/iGotify-Notification-Assistent" "prebuild" "latest" "/opt/igotify" "iGotify-Notification-Service-$(arch_resolve)-v*.zip"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/igotify.env.bak /opt/igotify/.env
|
||||
rm -f /opt/igotify.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start igotify
|
||||
|
||||
+95
-29
@@ -110,7 +110,7 @@ EOF
|
||||
msg_ok "Image-processing libraries up to date"
|
||||
fi
|
||||
|
||||
RELEASE="v2.7.5"
|
||||
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,10 +124,17 @@ EOF
|
||||
systemctl stop immich-web
|
||||
systemctl stop immich-ml
|
||||
msg_ok "Stopped Services"
|
||||
VCHORD_RELEASE="0.5.3"
|
||||
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
|
||||
fetch_and_deploy_gh_release "VectorChord" "tensorchord/VectorChord" "binary" "${VCHORD_RELEASE}" "/tmp" "postgresql-16-vchord_*_$(arch_resolve).deb"
|
||||
# dead tuples in smart_search/face_search make the REINDEX below fail with
|
||||
# "missing chunk ... for toast value" on VectorChord 1.0.0 (#15588); must vacuum
|
||||
# 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-${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;"
|
||||
@@ -140,7 +147,7 @@ EOF
|
||||
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
|
||||
SRC_DIR="${INSTALL_DIR}/source"
|
||||
APP_DIR="${INSTALL_DIR}/app"
|
||||
PLUGIN_DIR="${APP_DIR}/corePlugin"
|
||||
PLUGIN_DIR="${APP_DIR}/plugins/immich-plugin-core"
|
||||
ML_DIR="${APP_DIR}/machine-learning"
|
||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||
|
||||
@@ -168,19 +175,21 @@ EOF
|
||||
setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "${RELEASE}" "$SRC_DIR"
|
||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)"
|
||||
NODE_VERSION="24" NODE_MODULE="corepack,pnpm@${PNPM_VERSION}" setup_nodejs
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
export CI=1
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate
|
||||
export PATH="/root/.local/share/pnpm/bin:$PATH"
|
||||
$STD pnpm config set --global dangerouslyAllowAllBuilds true
|
||||
|
||||
msg_info "Updating Immich web and microservices"
|
||||
cd "$SRC_DIR"/server
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
export CI=1
|
||||
|
||||
# server build
|
||||
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
||||
$STD pnpm --filter immich --frozen-lockfile build
|
||||
$STD pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter immich build
|
||||
unset SHARP_IGNORE_GLOBAL_LIBVIPS
|
||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
||||
$STD pnpm --filter immich --prod --no-optional deploy "$APP_DIR"
|
||||
|
||||
# Patch helmet.json: disable upgrade-insecure-requests for HTTP access
|
||||
if [[ -f "$APP_DIR/helmet.json" ]]; then
|
||||
@@ -190,32 +199,50 @@ EOF
|
||||
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||
sed -i "s|^start|${APP_DIR}/bin/start|" "$APP_DIR"/bin/immich-admin
|
||||
|
||||
# openapi & web build
|
||||
# sdk, cli & web build
|
||||
cd "$SRC_DIR"
|
||||
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
|
||||
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
||||
unset SHARP_FORCE_GLOBAL_LIBVIPS
|
||||
export SHARP_IGNORE_GLOBAL_LIBVIPS=true
|
||||
$STD pnpm --filter @immich/sdk --filter immich-web build
|
||||
$STD pnpm --filter @immich/sdk --filter immich-web --filter @immich/cli build
|
||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||
cp -a web/build "$APP_DIR"/www
|
||||
cp LICENSE "$APP_DIR"
|
||||
|
||||
# cli build
|
||||
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||
[[ -f "$INSTALL_DIR"/start.sh ]] && mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||
|
||||
# plugins
|
||||
cd "$SRC_DIR"
|
||||
$STD mise trust --ignore ./mise.toml
|
||||
$STD mise trust ./plugins/mise.toml
|
||||
cd plugins
|
||||
export MISE_TRUSTED_CONFIG_PATHS="$SRC_DIR"/mise.toml
|
||||
export MISE_DISABLE_TOOLS=github:jellyfin/jellyfin-ffmpeg
|
||||
$STD mise install
|
||||
$STD mise run build
|
||||
export PATH="$(mise bin-paths 2>/dev/null | tr '\n' ':')$PATH"
|
||||
if ! command -v extism-js >/dev/null 2>&1; then
|
||||
# extism-js ships as a bare gzip-compressed single binary (.gz) that
|
||||
# fetch_and_deploy_gh_release cannot deploy; fetch + gunzip it directly.
|
||||
EXTISM_ARCH="$(arch_resolve x86_64 aarch64)"
|
||||
curl_download /tmp/extism-js.gz "https://github.com/extism/js-pdk/releases/download/v1.6.0/extism-js-${EXTISM_ARCH}-linux-v1.6.0.gz"
|
||||
gunzip -f /tmp/extism-js.gz
|
||||
install -m 0755 /tmp/extism-js /usr/local/bin/extism-js
|
||||
rm -f /tmp/extism-js
|
||||
fi
|
||||
if ! command -v wasm-merge >/dev/null 2>&1; then
|
||||
# extism-js needs binaryen's `wasm-merge` to build the plugin wasm. mise
|
||||
# 2026.7.0's github backend no longer exposes `wasm-merge` on PATH (ubi only
|
||||
# extracts a single binary), so install the pinned binaryen release from
|
||||
# mise.toml directly. The extracted bin/ keeps libbinaryen.so alongside it.
|
||||
BINARYEN_VERSION="$(grep -oiP 'binaryen"\s*=\s*"\Kversion_[0-9]+' "$SRC_DIR"/mise.toml | head -n1)"
|
||||
[[ -z "$BINARYEN_VERSION" ]] && BINARYEN_VERSION="version_124"
|
||||
BINARYEN_ARCH="$(arch_resolve x86_64 aarch64)"
|
||||
curl_download /tmp/binaryen.tar.gz "https://github.com/WebAssembly/binaryen/releases/download/${BINARYEN_VERSION}/binaryen-${BINARYEN_VERSION}-${BINARYEN_ARCH}-linux.tar.gz"
|
||||
tar -xzf /tmp/binaryen.tar.gz -C /opt
|
||||
rm -f /tmp/binaryen.tar.gz
|
||||
export PATH="/opt/binaryen-${BINARYEN_VERSION}/bin:$PATH"
|
||||
fi
|
||||
$STD mise exec -- pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter @immich/plugin-core install --frozen-lockfile
|
||||
$STD mise exec -- pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter @immich/plugin-core build
|
||||
mkdir -p "$PLUGIN_DIR"
|
||||
cp -r ./dist "$PLUGIN_DIR"/dist
|
||||
cp ./manifest.json "$PLUGIN_DIR"
|
||||
cp -r ./packages/plugin-core/dist "$PLUGIN_DIR"/dist
|
||||
cp ./packages/plugin-core/manifest.json "$PLUGIN_DIR"
|
||||
msg_ok "Updated Immich server, web, cli and plugins"
|
||||
|
||||
cd "$SRC_DIR"/machine-learning
|
||||
@@ -231,13 +258,13 @@ EOF
|
||||
ML_PYTHON="python3.13"
|
||||
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV -Pnu immich uv python install "${ML_PYTHON}" && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
||||
done
|
||||
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
||||
msg_info "Updating Intel OpenVINO machine-learning"
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -Pnu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
||||
done
|
||||
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.13/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-313-$(arch_resolve "x86_64" "aarch64")-linux-gnu.so"
|
||||
@@ -246,13 +273,13 @@ EOF
|
||||
ML_PYTHON="python3.11"
|
||||
msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning"
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV -Pnu immich uv python install "${ML_PYTHON}" && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5
|
||||
done
|
||||
msg_ok "Pre-installed Python ${ML_PYTHON}"
|
||||
msg_info "Updating machine-learning"
|
||||
for attempt in $(seq 1 3); do
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||
$STD sudo --preserve-env=VIRTUAL_ENV,UV_HTTP_TIMEOUT -Pnu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python && break
|
||||
[[ $attempt -lt 3 ]] && msg_warn "uv sync attempt $attempt failed, retrying..." && sleep 10
|
||||
done
|
||||
msg_ok "Updated machine-learning"
|
||||
@@ -260,6 +287,23 @@ EOF
|
||||
cd "$SRC_DIR"
|
||||
cp -a machine-learning/{ann,immich_ml} "$ML_DIR"
|
||||
[[ -f "$INSTALL_DIR"/ml_start.sh ]] && mv "$INSTALL_DIR"/ml_start.sh "$ML_DIR"
|
||||
# Regenerate ml_start.sh if it is missing (e.g. lost by a previously interrupted update),
|
||||
# otherwise immich-ml.service fails to start with status=203/EXEC
|
||||
if [[ ! -f "$ML_DIR"/ml_start.sh ]]; then
|
||||
cat <<EOF >"$ML_DIR"/ml_start.sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
cd ${ML_DIR}
|
||||
. ${VIRTUAL_ENV}/bin/activate
|
||||
|
||||
set -a
|
||||
. ${INSTALL_DIR}/.env
|
||||
set +a
|
||||
|
||||
python3 -m immich_ml
|
||||
EOF
|
||||
chmod +x "$ML_DIR"/ml_start.sh
|
||||
fi
|
||||
[[ -f ~/.openvino ]] && sed -i "/intra_op/s/int = 0/int = os.cpu_count() or 0/" "$ML_DIR"/immich_ml/config.py
|
||||
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
||||
cd "$APP_DIR"
|
||||
@@ -286,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 {} +
|
||||
@@ -429,13 +494,14 @@ function compile_imagemagick() {
|
||||
|
||||
function compile_libvips() {
|
||||
SOURCE=$SOURCE_DIR/libvips
|
||||
LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e"
|
||||
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
|
||||
|
||||
+2
-7
@@ -35,9 +35,7 @@ function update_script() {
|
||||
systemctl stop immichframe
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp -r /opt/immichframe/Config /tmp/immichframe_config.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/immichframe/Config
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immichframe" "immichFrame/ImmichFrame" "tarball" "latest" "/tmp/immichframe"
|
||||
|
||||
@@ -57,11 +55,8 @@ function update_script() {
|
||||
rm -rf /tmp/immichframe
|
||||
msg_ok "Setup ImmichFrame"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp -r /tmp/immichframe_config.bak/* /opt/immichframe/Config/
|
||||
rm -rf /tmp/immichframe_config.bak
|
||||
restore_backup
|
||||
chown -R immichframe:immichframe /opt/immichframe
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
+4
-11
@@ -41,20 +41,14 @@ function update_script() {
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
PG_VERSION="17" setup_postgresql
|
||||
|
||||
msg_info "Creating Backup"
|
||||
rm -f /opt/.env.backup
|
||||
rm -rf /opt/investbrain_backup
|
||||
cp /opt/investbrain/.env /opt/.env.backup
|
||||
cp -r /opt/investbrain/storage /opt/investbrain_backup
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/investbrain/.env /opt/investbrain/storage
|
||||
|
||||
fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Investbrain" "investbrainapp/investbrain" "tarball" "latest" "/opt/investbrain"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Investbrain"
|
||||
cd /opt/investbrain
|
||||
rm -rf /opt/investbrain/storage
|
||||
cp /opt/.env.backup /opt/investbrain/.env
|
||||
cp -r /opt/investbrain_backup/ /opt/investbrain/storage
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
$STD /usr/local/bin/composer install --no-interaction --no-dev --optimize-autoloader
|
||||
$STD npm install
|
||||
@@ -69,7 +63,6 @@ function update_script() {
|
||||
$STD php artisan event:cache
|
||||
chown -R www-data:www-data /opt/investbrain
|
||||
chmod -R 775 /opt/investbrain/storage /opt/investbrain/bootstrap/cache
|
||||
rm -rf /opt/.env.backup /opt/investbrain_backup
|
||||
msg_ok "Updated Investbrain"
|
||||
|
||||
msg_info "Starting Services"
|
||||
|
||||
@@ -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
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop supervisor nginx php8.4-fpm
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /tmp/invoiceninja_backup
|
||||
cp /opt/invoiceninja/.env /tmp/invoiceninja_backup/
|
||||
cp -r /opt/invoiceninja/storage /tmp/invoiceninja_backup/ 2>/dev/null || true
|
||||
cp -r /opt/invoiceninja/public/storage /tmp/invoiceninja_backup/public_storage 2>/dev/null || true
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/invoiceninja/.env /opt/invoiceninja/storage /opt/invoiceninja/public/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /tmp/invoiceninja_backup/.env /opt/invoiceninja/
|
||||
cp -r /tmp/invoiceninja_backup/storage/* /opt/invoiceninja/storage/ 2>/dev/null || true
|
||||
cp -r /tmp/invoiceninja_backup/public_storage/* /opt/invoiceninja/public/storage/ 2>/dev/null || true
|
||||
rm -rf /tmp/invoiceninja_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/invoiceninja
|
||||
|
||||
+2
-10
@@ -35,19 +35,11 @@ function update_script() {
|
||||
systemctl stop caddy
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/invoiceshelf/.env /opt/invoiceshelf.env.bak
|
||||
cp -r /opt/invoiceshelf/storage /opt/invoiceshelf_storage_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/invoiceshelf/.env /opt/invoiceshelf/storage
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/invoiceshelf.env.bak /opt/invoiceshelf/.env
|
||||
rm -f /opt/invoiceshelf.env.bak
|
||||
cp -r /opt/invoiceshelf_storage_backup/. /opt/invoiceshelf/storage
|
||||
rm -rf /opt/invoiceshelf_storage_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Application"
|
||||
cd /opt/invoiceshelf
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/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: tteck (tteckster) | MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.iventoy.com/en/index.html
|
||||
|
||||
APP="iVentoy"
|
||||
var_tags="${var_tags:-pxe-tool}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-512}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-0}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /opt/iventoy ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "iventoy" "ventoy/PXE"; then
|
||||
msg_info "Stopping iVentoy"
|
||||
$STD /opt/iventoy/iventoy.sh stop
|
||||
msg_ok "Stopped iVentoy"
|
||||
|
||||
create_backup /opt/iventoy/data /opt/iventoy/iso
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "iventoy" "ventoy/PXE" "prebuild" "latest" "/opt/iventoy" "iventoy-*-linux-$(arch_resolve x86_64-free arm64-trial).tar.gz"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting iVentoy"
|
||||
$STD /opt/iventoy/iventoy.sh -R start
|
||||
msg_ok "Started iVentoy"
|
||||
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}:26000${CL}"
|
||||
+2
-2
@@ -36,9 +36,9 @@ function update_script() {
|
||||
systemctl stop joplin-server
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
cp /opt/joplin-server/.env /opt
|
||||
create_backup /opt/joplin-server/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball"
|
||||
mv /opt/.env /opt/joplin-server
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Joplin-Server"
|
||||
cd /opt/joplin-server
|
||||
|
||||
+2
-10
@@ -35,20 +35,12 @@ function update_script() {
|
||||
systemctl stop jotty
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up configuration & data"
|
||||
cp /opt/jotty/.env /opt/app.env
|
||||
[[ -d /opt/jotty/data ]] && mv /opt/jotty/data /opt/data
|
||||
[[ -d /opt/jotty/config ]] && mv /opt/jotty/config /opt/config
|
||||
msg_ok "Backed up configuration & data"
|
||||
create_backup /opt/jotty/.env /opt/jotty/data /opt/jotty/config
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz"
|
||||
|
||||
msg_info "Restoring configuration & data"
|
||||
mv /opt/app.env /opt/jotty/.env
|
||||
[[ -d /opt/data ]] && mv /opt/data /opt/jotty/data
|
||||
[[ -d /opt/config ]] && cp -a /opt/config/* /opt/jotty/config && rm -rf /opt/config
|
||||
msg_ok "Restored configuration & data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start jotty
|
||||
|
||||
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop kan
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/kan/.env /opt/kan.env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/kan/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_tag "kan" "kanbn/kan" "latest"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/kan.env.bak /opt/kan/.env
|
||||
rm -f /opt/kan.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/kan
|
||||
|
||||
+2
-9
@@ -37,18 +37,11 @@ function update_script() {
|
||||
systemctl stop kima-frontend kima-backend kima-analyzer kima-analyzer-clap
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/kima-hub/backend/.env /opt/kima-hub-backend-env.bak
|
||||
cp /opt/kima-hub/frontend/.env /opt/kima-hub-frontend-env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/kima-hub/backend/.env /opt/kima-hub/frontend/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kima-hub" "Chevron7Locked/kima-hub" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /opt/kima-hub-backend-env.bak /opt/kima-hub/backend/.env
|
||||
cp /opt/kima-hub-frontend-env.bak /opt/kima-hub/frontend/.env
|
||||
rm -f /opt/kima-hub-backend-env.bak /opt/kima-hub-frontend-env.bak
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Backend"
|
||||
cd /opt/kima-hub/backend
|
||||
|
||||
+2
-10
@@ -35,22 +35,14 @@ function update_script() {
|
||||
systemctl stop kitchenowl
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /opt/kitchenowl_backup
|
||||
cp -r /opt/kitchenowl/data /opt/kitchenowl_backup/
|
||||
cp -f /opt/kitchenowl/kitchenowl.env /opt/kitchenowl_backup/
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/kitchenowl/data /opt/kitchenowl/kitchenowl.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kitchenowl" "TomBursch/kitchenowl" "tarball" "latest" "/opt/kitchenowl"
|
||||
rm -rf /opt/kitchenowl/web
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kitchenowl-web" "TomBursch/kitchenowl" "prebuild" "latest" "/opt/kitchenowl/web" "kitchenowl_Web.tar.gz"
|
||||
|
||||
msg_info "Restoring data"
|
||||
restore_backup
|
||||
sed -i 's/default=True/default=False/' /opt/kitchenowl/backend/wsgi.py
|
||||
cp -r /opt/kitchenowl_backup/data /opt/kitchenowl/
|
||||
cp -f /opt/kitchenowl_backup/kitchenowl.env /opt/kitchenowl/
|
||||
rm -rf /opt/kitchenowl_backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Updating KitchenOwl"
|
||||
cd /opt/kitchenowl/backend
|
||||
|
||||
+4
-4
@@ -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
-12
@@ -35,21 +35,11 @@ function update_script() {
|
||||
systemctl stop nginx php8.4-fpm
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Creating Backup"
|
||||
mkdir -p /tmp/koel_backup
|
||||
cp /opt/koel/.env /tmp/koel_backup/
|
||||
cp -r /opt/koel/storage /tmp/koel_backup/ 2>/dev/null || true
|
||||
cp -r /opt/koel/public/img /tmp/koel_backup/ 2>/dev/null || true
|
||||
msg_ok "Created Backup"
|
||||
create_backup /opt/koel/.env /opt/koel/storage /opt/koel/public/img
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koel" "koel/koel" "prebuild" "latest" "/opt/koel" "koel-*.tar.gz"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp /tmp/koel_backup/.env /opt/koel/
|
||||
cp -r /tmp/koel_backup/storage/* /opt/koel/storage/ 2>/dev/null || true
|
||||
cp -r /tmp/koel_backup/img/* /opt/koel/public/img/ 2>/dev/null || true
|
||||
rm -rf /tmp/koel_backup
|
||||
msg_ok "Restored Data"
|
||||
restore_backup
|
||||
|
||||
msg_info "Running Migrations"
|
||||
cd /opt/koel
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/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: (AminGholizad)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/PanSalut/Koffan
|
||||
|
||||
APP="Koffan"
|
||||
var_tags="${var_tags:-productivity}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
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_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 [[ ! -f /opt/koffan/koffan ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "koffan" "PanSalut/Koffan"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop koffan
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/koffan/data
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koffan" "PanSalut/Koffan" "tarball"
|
||||
restore_backup
|
||||
|
||||
msg_info "Rebuilding Koffan"
|
||||
cd /opt/koffan
|
||||
$STD go build -o koffan main.go
|
||||
msg_ok "Rebuild Koffan"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start koffan
|
||||
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
-1
@@ -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}"
|
||||
|
||||
@@ -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}"
|
||||
+7
-9
@@ -34,20 +34,18 @@ function update_script() {
|
||||
msg_info "Creating Backup"
|
||||
mariadb-dump leantime >"/opt/leantime_db_backup_$(date +%F).sql"
|
||||
tar -czf "/opt/leantime_backup_$(date +%F).tar.gz" "/opt/leantime"
|
||||
mv /opt/leantime /opt/leantime_bak
|
||||
msg_ok "Backup Created"
|
||||
|
||||
fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz
|
||||
create_backup /opt/leantime/config/.env
|
||||
|
||||
msg_info "Restoring Config & Permissions"
|
||||
mv /opt/leantime_bak/config/.env /opt/leantime/config/.env
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Setting Permissions"
|
||||
chown -R www-data:www-data "/opt/leantime"
|
||||
chmod -R 750 "/opt/leantime"
|
||||
msg_ok "Restored Config & Permissions"
|
||||
|
||||
msg_info "Removing Backup"
|
||||
rm -rf /opt/leantime_bak
|
||||
msg_ok "Removed Backup"
|
||||
msg_ok "Set Permissions"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
|
||||
+6
-16
@@ -35,12 +35,12 @@ function update_script() {
|
||||
systemctl stop librechat rag-api
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Configuration"
|
||||
cp /opt/librechat/.env /opt/librechat.env.bak
|
||||
msg_ok "Backed up Configuration"
|
||||
create_backup /opt/librechat/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_tag "librechat" "danny-avila/LibreChat"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
cd /opt/librechat
|
||||
$STD npm ci
|
||||
@@ -52,11 +52,6 @@ function update_script() {
|
||||
$STD npm cache clean --force
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/librechat.env.bak /opt/librechat/.env
|
||||
rm -f /opt/librechat.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start rag-api librechat
|
||||
msg_ok "Started Services"
|
||||
@@ -68,22 +63,17 @@ function update_script() {
|
||||
systemctl stop rag-api
|
||||
msg_ok "Stopped RAG API"
|
||||
|
||||
msg_info "Backing up RAG API Configuration"
|
||||
cp /opt/rag-api/.env /opt/rag-api.env.bak
|
||||
msg_ok "Backed up RAG API Configuration"
|
||||
create_backup /opt/rag-api/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "rag-api" "danny-avila/rag_api" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating RAG API Dependencies"
|
||||
cd /opt/rag-api
|
||||
$STD .venv/bin/pip install -r requirements.lite.txt
|
||||
msg_ok "Updated RAG API Dependencies"
|
||||
|
||||
msg_info "Restoring RAG API Configuration"
|
||||
cp /opt/rag-api.env.bak /opt/rag-api/.env
|
||||
rm -f /opt/rag-api.env.bak
|
||||
msg_ok "Restored RAG API Configuration"
|
||||
|
||||
msg_info "Starting RAG API"
|
||||
systemctl start rag-api
|
||||
msg_ok "Started RAG API"
|
||||
|
||||
+2
-9
@@ -35,19 +35,12 @@ function update_script() {
|
||||
systemctl stop nginx linkding linkding-tasks
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -r /opt/linkding/data /opt/linkding_data_backup
|
||||
cp /opt/linkding/.env /opt/linkding_env_backup
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/linkding/data /opt/linkding/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkding" "sissbruecker/linkding" "tarball"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
cp -r /opt/linkding_data_backup/. /opt/linkding/data
|
||||
cp /opt/linkding_env_backup /opt/linkding/.env
|
||||
rm -rf /opt/linkding_data_backup /opt/linkding_env_backup
|
||||
restore_backup
|
||||
ln -sf /usr/lib/$(arch_resolve "x86_64-linux-gnu" "aarch64-linux-gnu")/mod_icu.so /opt/linkding/libicu.so
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Updating LinkDing"
|
||||
cd /opt/linkding
|
||||
|
||||
+4
-8
@@ -35,13 +35,11 @@ function update_script() {
|
||||
|
||||
RUST_CRATES="monolith" setup_rust
|
||||
|
||||
msg_info "Backing up data"
|
||||
mv /opt/linkwarden/.env /opt/.env
|
||||
[ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
|
||||
rm -rf /opt/linkwarden
|
||||
msg_ok "Backed up data"
|
||||
create_backup /opt/linkwarden/.env /opt/linkwarden/data
|
||||
|
||||
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating Linkwarden"
|
||||
cd /opt/linkwarden
|
||||
@@ -60,11 +58,9 @@ function update_script() {
|
||||
$STD yarn
|
||||
$STD npx playwright install-deps
|
||||
$STD npx playwright install
|
||||
mv /opt/.env /opt/linkwarden/.env
|
||||
$STD yarn prisma:generate
|
||||
$STD yarn web:build
|
||||
$STD yarn prisma:deploy
|
||||
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
|
||||
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
|
||||
rm -rf /root/.cache/yarn
|
||||
rm -rf /opt/linkwarden/.next/cache
|
||||
|
||||
+2
-7
@@ -35,16 +35,11 @@ function update_script() {
|
||||
systemctl stop lobehub
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/lobehub/.env /opt/lobehub.env.bak
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/lobehub/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lobehub" "lobehub/lobehub" "tarball"
|
||||
|
||||
msg_info "Restoring Configuration"
|
||||
cp /opt/lobehub.env.bak /opt/lobehub/.env
|
||||
rm -f /opt/lobehub.env.bak
|
||||
msg_ok "Restored Configuration"
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/lobehub
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user