mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
303 Commits
2025-07-28
...
2025-08-13
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcf14a93c2 | ||
|
|
549e1ee01e | ||
|
|
c4b7966303 | ||
|
|
2ed4d91f3c | ||
|
|
6a5685505a | ||
|
|
7cc1eaa259 | ||
|
|
0db53c98e0 | ||
|
|
0faf32c4d0 | ||
|
|
5c564b4bd1 | ||
|
|
5b81fc1aaa | ||
|
|
047c7fe53c | ||
|
|
c759269f0a | ||
|
|
7540314f53 | ||
|
|
8d73af0106 | ||
|
|
f1cdef1f9b | ||
|
|
79f3662636 | ||
|
|
c43e5318ae | ||
|
|
7e32903f10 | ||
|
|
ba5c318276 | ||
|
|
634fcb5abb | ||
|
|
5d29a4f11c | ||
|
|
cf62139e07 | ||
|
|
716f1f05ec | ||
|
|
47d773d088 | ||
|
|
f9eb0cfa40 | ||
|
|
2b164f8281 | ||
|
|
6937ca1c67 | ||
|
|
af6c1ae680 | ||
|
|
75335f3362 | ||
|
|
d0dfe1f3a6 | ||
|
|
0ebc6b94ab | ||
|
|
bf110c1814 | ||
|
|
0d7de4f292 | ||
|
|
f7ca7b28df | ||
|
|
27b79a23b6 | ||
|
|
49fbe38981 | ||
|
|
0cd7985f8a | ||
|
|
428fae66c3 | ||
|
|
18c57600c6 | ||
|
|
68d2d3c52c | ||
|
|
76f9232c3a | ||
|
|
4258d44a7d | ||
|
|
c60f04e229 | ||
|
|
6b93869e52 | ||
|
|
c3cfdc1efa | ||
|
|
33678fde1b | ||
|
|
3dfdfeb2fa | ||
|
|
305d3603ef | ||
|
|
00138323b9 | ||
|
|
1d50632019 | ||
|
|
8883ba6b60 | ||
|
|
7b06f611ad | ||
|
|
412919670c | ||
|
|
77ac07efd7 | ||
|
|
55def0d441 | ||
|
|
70a01abbd8 | ||
|
|
d5b0209453 | ||
|
|
755da8bdc3 | ||
|
|
9228cd06e3 | ||
|
|
49579e8558 | ||
|
|
030a977209 | ||
|
|
b8176dc7b3 | ||
|
|
cd0625cba6 | ||
|
|
73e131ecf8 | ||
|
|
a0d6082b95 | ||
|
|
70ccaf6835 | ||
|
|
05b58decc2 | ||
|
|
ff1b7cc81d | ||
|
|
a2bbc2174a | ||
|
|
a8a44a4d51 | ||
|
|
ed620e8258 | ||
|
|
1fc667088c | ||
|
|
d89055a5cd | ||
|
|
4ecd019e15 | ||
|
|
e3a31aa47e | ||
|
|
ed936528d2 | ||
|
|
6f24de7d63 | ||
|
|
54de40ed53 | ||
|
|
872cd289ff | ||
|
|
9c37ac385c | ||
|
|
575ad61c93 | ||
|
|
1773cc5507 | ||
|
|
11b19fdeab | ||
|
|
5e6081fbea | ||
|
|
e2a310dd3a | ||
|
|
d934d1b51b | ||
|
|
6e3c08142d | ||
|
|
a41497f90a | ||
|
|
c54025f8de | ||
|
|
a1eb53841d | ||
|
|
6c4c3ffa39 | ||
|
|
78f695f397 | ||
|
|
4b0d24ed2e | ||
|
|
705d66e7c6 | ||
|
|
c4703527dc | ||
|
|
9b607c60b4 | ||
|
|
4717852019 | ||
|
|
ab9c57ccf9 | ||
|
|
dce77d12c7 | ||
|
|
1f35b649cc | ||
|
|
5938a9aceb | ||
|
|
3b76211c12 | ||
|
|
7221a0759d | ||
|
|
a750932b3a | ||
|
|
a4de1efae8 | ||
|
|
f7570cb40c | ||
|
|
10471b88aa | ||
|
|
04a83cce10 | ||
|
|
f9e26f4f7c | ||
|
|
ed6baa1158 | ||
|
|
a7cc93af09 | ||
|
|
a494ed5872 | ||
|
|
ede517a560 | ||
|
|
bd41b236df | ||
|
|
229c7ce4b3 | ||
|
|
cc8381d7f7 | ||
|
|
dc5b9be9ae | ||
|
|
993aff59d7 | ||
|
|
f3844c664c | ||
|
|
47b3f71992 | ||
|
|
09c815e935 | ||
|
|
f59d4960f1 | ||
|
|
c53d1d004a | ||
|
|
bbdda06297 | ||
|
|
daab80aaf4 | ||
|
|
9250f9fae9 | ||
|
|
6fa371fffc | ||
|
|
e85263078e | ||
|
|
f9b0916885 | ||
|
|
964e29cd9e | ||
|
|
31932499a9 | ||
|
|
b155881de9 | ||
|
|
010435ecaf | ||
|
|
0863d080a4 | ||
|
|
99837db81a | ||
|
|
b4df862579 | ||
|
|
01c6eb3a67 | ||
|
|
5aabc88723 | ||
|
|
23340f5d24 | ||
|
|
77dcf87e6a | ||
|
|
d9cefc3777 | ||
|
|
7d6806e1fb | ||
|
|
86d438c3a1 | ||
|
|
fdc381e501 | ||
|
|
3b1b8a7da2 | ||
|
|
96f2c9c990 | ||
|
|
349827aa97 | ||
|
|
4dc458c605 | ||
|
|
b5b6048697 | ||
|
|
dc5fcb83e8 | ||
|
|
db86049a3e | ||
|
|
e6ceca0bc7 | ||
|
|
d24425efad | ||
|
|
3dda41df94 | ||
|
|
fc77ca85e4 | ||
|
|
db09b9cc36 | ||
|
|
9f933c1e56 | ||
|
|
efe45185fc | ||
|
|
0a56fee31e | ||
|
|
20048d442a | ||
|
|
b1be93155c | ||
|
|
1e2eb31560 | ||
|
|
ca701632e1 | ||
|
|
c3c5a7584b | ||
|
|
3cd1fc7bce | ||
|
|
1c7a39438c | ||
|
|
46728b01fe | ||
|
|
e0abf63778 | ||
|
|
4451f07990 | ||
|
|
6776912a42 | ||
|
|
b914fd95df | ||
|
|
f33afd9163 | ||
|
|
c811b51a0a | ||
|
|
ccbf86196b | ||
|
|
64366a0b34 | ||
|
|
183c459549 | ||
|
|
44e62f73d4 | ||
|
|
2f97e14f4d | ||
|
|
7cd5a8d771 | ||
|
|
9846bfd067 | ||
|
|
77c37a5552 | ||
|
|
8efcab38a4 | ||
|
|
201782552c | ||
|
|
7433f7df0c | ||
|
|
dde882f9e5 | ||
|
|
b8bdf56297 | ||
|
|
df504635a5 | ||
|
|
158bdfc88e | ||
|
|
4eaffda82d | ||
|
|
074bb615e7 | ||
|
|
7c0869e29b | ||
|
|
7862d23866 | ||
|
|
e1669c22de | ||
|
|
00a69678c0 | ||
|
|
1c2ccf81d2 | ||
|
|
88483b7dab | ||
|
|
7c41c51bfe | ||
|
|
ecf01637a5 | ||
|
|
3068ae1383 | ||
|
|
ca8cddb788 | ||
|
|
750397e1af | ||
|
|
30172379cd | ||
|
|
f07b273be3 | ||
|
|
e5c673df44 | ||
|
|
61fb45a0b8 | ||
|
|
084ceae9d9 | ||
|
|
054a963ca2 | ||
|
|
b366ffac34 | ||
|
|
29747ab8b8 | ||
|
|
12b904a014 | ||
|
|
fad4d2e0d7 | ||
|
|
899e576426 | ||
|
|
0f29e5672c | ||
|
|
3e1d43c29a | ||
|
|
ff695fa4ea | ||
|
|
93b80362f6 | ||
|
|
52e08e5474 | ||
|
|
b9408ef06f | ||
|
|
4652338536 | ||
|
|
3c7c540576 | ||
|
|
a0502e00db | ||
|
|
6f56655ad6 | ||
|
|
6de8d50969 | ||
|
|
da217bb3e0 | ||
|
|
f80c7008a8 | ||
|
|
afd577db9e | ||
|
|
47ab850e5b | ||
|
|
654bd1f0d5 | ||
|
|
b6bd8a6de4 | ||
|
|
ae7fe6e3e1 | ||
|
|
3bb787d746 | ||
|
|
82ff5f587e | ||
|
|
38cb85d9c4 | ||
|
|
296bcbf56f | ||
|
|
6f096b04fe | ||
|
|
3c889430ed | ||
|
|
bb664636f6 | ||
|
|
5acca4975c | ||
|
|
7f07395ab1 | ||
|
|
dcd979e00c | ||
|
|
e7c7b6384a | ||
|
|
492be65aec | ||
|
|
b5b59342bd | ||
|
|
30fed5b1bc | ||
|
|
dd30ad5fa3 | ||
|
|
5b67c8a426 | ||
|
|
709fb03305 | ||
|
|
c7a1334b29 | ||
|
|
9b2b794f9c | ||
|
|
9e9bff2315 | ||
|
|
dd2defebaf | ||
|
|
9d3250a82d | ||
|
|
d71c3efecd | ||
|
|
d366abe8e2 | ||
|
|
f76bb98d3d | ||
|
|
4bd360d31b | ||
|
|
27e095e1dd | ||
|
|
e98f6051e2 | ||
|
|
e4d0ac301d | ||
|
|
907be41752 | ||
|
|
af88ff3dd4 | ||
|
|
2c618f53ca | ||
|
|
16dbcac3a1 | ||
|
|
0ba9c9dff3 | ||
|
|
23573bfce9 | ||
|
|
9f1431b263 | ||
|
|
53beca39e8 | ||
|
|
2701308b45 | ||
|
|
f33c292c3e | ||
|
|
234b4e334e | ||
|
|
eada9f3ae8 | ||
|
|
fb8c44b753 | ||
|
|
4679d321a7 | ||
|
|
50345c631a | ||
|
|
2f61a2ffe2 | ||
|
|
e9240fb9b8 | ||
|
|
f77e7b626d | ||
|
|
f8b901ab0d | ||
|
|
25b811040c | ||
|
|
05d11bf66d | ||
|
|
c7aac080ac | ||
|
|
0ad0a665ed | ||
|
|
304f181bb2 | ||
|
|
ea50246c91 | ||
|
|
7aa1f18761 | ||
|
|
ab6f2dd24f | ||
|
|
815720b59e | ||
|
|
5597f7fc41 | ||
|
|
6450c3c6a4 | ||
|
|
70cb8198fd | ||
|
|
498723fd62 | ||
|
|
d4146e0d43 | ||
|
|
0ca0126420 | ||
|
|
5af772af2f | ||
|
|
241df52ae5 | ||
|
|
10db421c45 | ||
|
|
1f101c0bd3 | ||
|
|
202eb3fb2a | ||
|
|
e54ed7dc35 | ||
|
|
34da66600d | ||
|
|
5a889d8fc6 | ||
|
|
22e9c33a2a | ||
|
|
25a8df4902 |
299
CHANGELOG.md
299
CHANGELOG.md
@@ -10,6 +10,305 @@
|
|||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||||
|
|
||||||
|
## 2025-08-14
|
||||||
|
|
||||||
|
## 2025-08-13
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- emby: fix update output [@MickLesk](https://github.com/MickLesk) ([#6791](https://github.com/community-scripts/ProxmoxVE/pull/6791))
|
||||||
|
- archivebox: fix wrong formatted uv command [@MickLesk](https://github.com/MickLesk) ([#6794](https://github.com/community-scripts/ProxmoxVE/pull/6794))
|
||||||
|
- Outline: Fixes for install and update procedures [@tremor021](https://github.com/tremor021) ([#6806](https://github.com/community-scripts/ProxmoxVE/pull/6806))
|
||||||
|
- Palmr: fix release version parsing // increase RAM [@vhsdream](https://github.com/vhsdream) ([#6800](https://github.com/community-scripts/ProxmoxVE/pull/6800))
|
||||||
|
- myspeed: fix update process if no data exist [@MickLesk](https://github.com/MickLesk) ([#6795](https://github.com/community-scripts/ProxmoxVE/pull/6795))
|
||||||
|
- crafty-controller: fix update output [@MickLesk](https://github.com/MickLesk) ([#6793](https://github.com/community-scripts/ProxmoxVE/pull/6793))
|
||||||
|
- GLPI: Fix timezone command [@tremor021](https://github.com/tremor021) ([#6783](https://github.com/community-scripts/ProxmoxVE/pull/6783))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Docker LXC: Add Portainer info [@tremor021](https://github.com/tremor021) ([#6803](https://github.com/community-scripts/ProxmoxVE/pull/6803))
|
||||||
|
- AgentDVR: Added update function [@tremor021](https://github.com/tremor021) ([#6804](https://github.com/community-scripts/ProxmoxVE/pull/6804))
|
||||||
|
|
||||||
|
## 2025-08-12
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pulse: binary path changed AGAIN; other fixes [@vhsdream](https://github.com/vhsdream) ([#6770](https://github.com/community-scripts/ProxmoxVE/pull/6770))
|
||||||
|
- fix alpine syncthing config not being created [@GamerHun1238](https://github.com/GamerHun1238) ([#6773](https://github.com/community-scripts/ProxmoxVE/pull/6773))
|
||||||
|
- change owner of hortusfox directory [@snow2k9](https://github.com/snow2k9) ([#6763](https://github.com/community-scripts/ProxmoxVE/pull/6763))
|
||||||
|
|
||||||
|
## 2025-08-11
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Reactive Resume: use new release parsing; other fixes [@vhsdream](https://github.com/vhsdream) ([#6744](https://github.com/community-scripts/ProxmoxVE/pull/6744))
|
||||||
|
|
||||||
|
## 2025-08-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix/thinpool detection as it allows to delete active thinpool with different name than "data" [@onethree7](https://github.com/onethree7) ([#6730](https://github.com/community-scripts/ProxmoxVE/pull/6730))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pulse: fix binary path [@vhsdream](https://github.com/vhsdream) ([#6740](https://github.com/community-scripts/ProxmoxVE/pull/6740))
|
||||||
|
- Karakeep: chromium fix [@vhsdream](https://github.com/vhsdream) ([#6729](https://github.com/community-scripts/ProxmoxVE/pull/6729))
|
||||||
|
|
||||||
|
## 2025-08-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Paperless-AI: increase HDD Space to 20G [@MickLesk](https://github.com/MickLesk) ([#6716](https://github.com/community-scripts/ProxmoxVE/pull/6716))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- vaultwarden: increase disk space [@CrazyWolf13](https://github.com/CrazyWolf13) ([#6712](https://github.com/community-scripts/ProxmoxVE/pull/6712))
|
||||||
|
- Fix: Bazarr requirements.txt file not parse-able by UV [@Xerovoxx98](https://github.com/Xerovoxx98) ([#6701](https://github.com/community-scripts/ProxmoxVE/pull/6701))
|
||||||
|
- Improve backup of adventurelog folder [@ThomasDetemmerman](https://github.com/ThomasDetemmerman) ([#6653](https://github.com/community-scripts/ProxmoxVE/pull/6653))
|
||||||
|
- HomeBox: Fixes for update procedure [@tremor021](https://github.com/tremor021) ([#6702](https://github.com/community-scripts/ProxmoxVE/pull/6702))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Tianji [@MickLesk](https://github.com/MickLesk) ([#6662](https://github.com/community-scripts/ProxmoxVE/pull/6662))
|
||||||
|
|
||||||
|
## 2025-08-08
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Palmr ([#6642](https://github.com/community-scripts/ProxmoxVE/pull/6642))
|
||||||
|
- HortusFox ([#6641](https://github.com/community-scripts/ProxmoxVE/pull/6641))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Unifi: Update libssl dependency [@tremor021](https://github.com/tremor021) ([#6680](https://github.com/community-scripts/ProxmoxVE/pull/6680))
|
||||||
|
- HomeBox: Fix checking for existing install [@tremor021](https://github.com/tremor021) ([#6677](https://github.com/community-scripts/ProxmoxVE/pull/6677))
|
||||||
|
- Immich: unpin libvips revision [@vhsdream](https://github.com/vhsdream) ([#6669](https://github.com/community-scripts/ProxmoxVE/pull/6669))
|
||||||
|
- Meilisearch: fix wrong path switch [@MickLesk](https://github.com/MickLesk) ([#6668](https://github.com/community-scripts/ProxmoxVE/pull/6668))
|
||||||
|
- MariaDB: fix "feedback" (statistical informations) whiptail [@MickLesk](https://github.com/MickLesk) ([#6657](https://github.com/community-scripts/ProxmoxVE/pull/6657))
|
||||||
|
- Karakeep: workaround/fix for #6593 [@vhsdream](https://github.com/vhsdream) ([#6648](https://github.com/community-scripts/ProxmoxVE/pull/6648))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Feature: FSTrim (Filesystem Trim) - Log / LVM Check / ZFS [@MickLesk](https://github.com/MickLesk) ([#6660](https://github.com/community-scripts/ProxmoxVE/pull/6660))
|
||||||
|
- IP Tag: Allow installation on PVE 9.x [@webhdx](https://github.com/webhdx) ([#6679](https://github.com/community-scripts/ProxmoxVE/pull/6679))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Alpine IT-Tools [@tremor021](https://github.com/tremor021) ([#6579](https://github.com/community-scripts/ProxmoxVE/pull/6579))
|
||||||
|
- Refactor: ArchiveBox [@MickLesk](https://github.com/MickLesk) ([#6670](https://github.com/community-scripts/ProxmoxVE/pull/6670))
|
||||||
|
- Refactor: Bazarr [@MickLesk](https://github.com/MickLesk) ([#6663](https://github.com/community-scripts/ProxmoxVE/pull/6663))
|
||||||
|
- Refactor: Kometa [@MickLesk](https://github.com/MickLesk) ([#6673](https://github.com/community-scripts/ProxmoxVE/pull/6673))
|
||||||
|
|
||||||
|
## 2025-08-07
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Commafeed: Fix Backup Handling while Update [@MickLesk](https://github.com/MickLesk) ([#6629](https://github.com/community-scripts/ProxmoxVE/pull/6629))
|
||||||
|
- VictoriaMetrics: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6632](https://github.com/community-scripts/ProxmoxVE/pull/6632))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Feature: Post-PVE-Script (PVE9 Support + some Features) [@MickLesk](https://github.com/MickLesk) ([#6626](https://github.com/community-scripts/ProxmoxVE/pull/6626))
|
||||||
|
- Feature: Clean-LXC now supports Alpine based containers [@MickLesk](https://github.com/MickLesk) ([#6628](https://github.com/community-scripts/ProxmoxVE/pull/6628))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Tandoor v2 [@MickLesk](https://github.com/MickLesk) ([#6635](https://github.com/community-scripts/ProxmoxVE/pull/6635))
|
||||||
|
- Refactor: Paymenter [@tremor021](https://github.com/tremor021) ([#6589](https://github.com/community-scripts/ProxmoxVE/pull/6589))
|
||||||
|
|
||||||
|
## 2025-08-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- [core] better y/N handling for ressource check [@MickLesk](https://github.com/MickLesk) ([#6608](https://github.com/community-scripts/ProxmoxVE/pull/6608))
|
||||||
|
- fix: update Pulse scripts for v4 Go rewrite support [@rcourtman](https://github.com/rcourtman) ([#6574](https://github.com/community-scripts/ProxmoxVE/pull/6574))
|
||||||
|
- OpenProject: Fix missing apt update [@tremor021](https://github.com/tremor021) ([#6598](https://github.com/community-scripts/ProxmoxVE/pull/6598))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- PVE9: Remove Beta Whiptail / add correct version check [@MickLesk](https://github.com/MickLesk) ([#6599](https://github.com/community-scripts/ProxmoxVE/pull/6599))
|
||||||
|
|
||||||
|
## 2025-08-05
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- NIC offloading: e1000 support [@rcastley](https://github.com/rcastley) ([#6575](https://github.com/community-scripts/ProxmoxVE/pull/6575))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Temporary Remove: SearXNG [@MickLesk](https://github.com/MickLesk) ([#6578](https://github.com/community-scripts/ProxmoxVE/pull/6578))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Prometheus Alertmanager [@tremor021](https://github.com/tremor021) ([#6577](https://github.com/community-scripts/ProxmoxVE/pull/6577))
|
||||||
|
|
||||||
|
## 2025-08-04
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Tududi ([#6534](https://github.com/community-scripts/ProxmoxVE/pull/6534))
|
||||||
|
- ots ([#6532](https://github.com/community-scripts/ProxmoxVE/pull/6532))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- MySpeed: fix update and copy old tests back [@MickLesk](https://github.com/MickLesk) ([#6550](https://github.com/community-scripts/ProxmoxVE/pull/6550))
|
||||||
|
- Composer: PATH Issues when updating [@MickLesk](https://github.com/MickLesk) ([#6543](https://github.com/community-scripts/ProxmoxVE/pull/6543))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Feat: enable tun for VPN services (wireguard) [@MickLesk](https://github.com/MickLesk) ([#6562](https://github.com/community-scripts/ProxmoxVE/pull/6562))
|
||||||
|
- turnkey: add hostname & Fix TUN access [@masterofrpm](https://github.com/masterofrpm) ([#6512](https://github.com/community-scripts/ProxmoxVE/pull/6512))
|
||||||
|
- Increase: Core Network check (pre-LXC Creation) [@MickLesk](https://github.com/MickLesk) ([#6546](https://github.com/community-scripts/ProxmoxVE/pull/6546))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: PrivateBin [@tremor021](https://github.com/tremor021) ([#6559](https://github.com/community-scripts/ProxmoxVE/pull/6559))
|
||||||
|
- Refactor: PocketID [@tremor021](https://github.com/tremor021) ([#6556](https://github.com/community-scripts/ProxmoxVE/pull/6556))
|
||||||
|
- Refactor: Pocketbase [@tremor021](https://github.com/tremor021) ([#6554](https://github.com/community-scripts/ProxmoxVE/pull/6554))
|
||||||
|
- Refactor: NocoDB [@tremor021](https://github.com/tremor021) ([#6548](https://github.com/community-scripts/ProxmoxVE/pull/6548))
|
||||||
|
- Refactor: PairDrop [@tremor021](https://github.com/tremor021) ([#6528](https://github.com/community-scripts/ProxmoxVE/pull/6528))
|
||||||
|
|
||||||
|
## 2025-08-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- docmost: remove build step due new version [@MickLesk](https://github.com/MickLesk) ([#6513](https://github.com/community-scripts/ProxmoxVE/pull/6513))
|
||||||
|
- Fix: Komga uses .komga as storage / so it fails after install [@MickLesk](https://github.com/MickLesk) ([#6517](https://github.com/community-scripts/ProxmoxVE/pull/6517))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Remove: Ubuntu 24.10-VM [@MickLesk](https://github.com/MickLesk) ([#6515](https://github.com/community-scripts/ProxmoxVE/pull/6515))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: openHAB [@tremor021](https://github.com/tremor021) ([#6524](https://github.com/community-scripts/ProxmoxVE/pull/6524))
|
||||||
|
- Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#6525](https://github.com/community-scripts/ProxmoxVE/pull/6525))
|
||||||
|
|
||||||
|
## 2025-08-02
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Alternative connectivity checks for LXC [@mariano-dagostino](https://github.com/mariano-dagostino) ([#6472](https://github.com/community-scripts/ProxmoxVE/pull/6472))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: fix copy error during install [@vhsdream](https://github.com/vhsdream) ([#6497](https://github.com/community-scripts/ProxmoxVE/pull/6497))
|
||||||
|
- MagicMirror: Fix install process [@tremor021](https://github.com/tremor021) ([#6492](https://github.com/community-scripts/ProxmoxVE/pull/6492))
|
||||||
|
- chore: BookLore repo change [@vhsdream](https://github.com/vhsdream) ([#6493](https://github.com/community-scripts/ProxmoxVE/pull/6493))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- VictoriaMetrics: Make VictoriaLogs optional add-on [@tremor021](https://github.com/tremor021) ([#6489](https://github.com/community-scripts/ProxmoxVE/pull/6489))
|
||||||
|
|
||||||
|
## 2025-08-01
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fumadocs: add git as dependency [@MickLesk](https://github.com/MickLesk) ([#6459](https://github.com/community-scripts/ProxmoxVE/pull/6459))
|
||||||
|
- Immich: Fix immich-admin script; other fixes | pin to v.137.3 [@vhsdream](https://github.com/vhsdream) ([#6443](https://github.com/community-scripts/ProxmoxVE/pull/6443))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Re-Add: Suwayomi-Server [@MickLesk](https://github.com/MickLesk) ([#6458](https://github.com/community-scripts/ProxmoxVE/pull/6458))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Update homepage.sh to use setup_nodejs [@burgerga](https://github.com/burgerga) ([#6462](https://github.com/community-scripts/ProxmoxVE/pull/6462))
|
||||||
|
- Refactor: Owncast [@tremor021](https://github.com/tremor021) ([#6434](https://github.com/community-scripts/ProxmoxVE/pull/6434))
|
||||||
|
- Refactor: MediaMTX [@tremor021](https://github.com/tremor021) ([#6406](https://github.com/community-scripts/ProxmoxVE/pull/6406))
|
||||||
|
- Refactor: LubeLogger [@tremor021](https://github.com/tremor021) ([#6400](https://github.com/community-scripts/ProxmoxVE/pull/6400))
|
||||||
|
- Refactor: MagicMirror [@tremor021](https://github.com/tremor021) ([#6402](https://github.com/community-scripts/ProxmoxVE/pull/6402))
|
||||||
|
- Refactor: Manage My Damn Life [@tremor021](https://github.com/tremor021) ([#6403](https://github.com/community-scripts/ProxmoxVE/pull/6403))
|
||||||
|
- Refactor: Meilisearch [@tremor021](https://github.com/tremor021) ([#6407](https://github.com/community-scripts/ProxmoxVE/pull/6407))
|
||||||
|
- Refactor: NodeBB [@tremor021](https://github.com/tremor021) ([#6419](https://github.com/community-scripts/ProxmoxVE/pull/6419))
|
||||||
|
- Refactor: oauth2-proxy [@tremor021](https://github.com/tremor021) ([#6421](https://github.com/community-scripts/ProxmoxVE/pull/6421))
|
||||||
|
- Refactor: Outline [@tremor021](https://github.com/tremor021) ([#6424](https://github.com/community-scripts/ProxmoxVE/pull/6424))
|
||||||
|
- Refactor: Overseerr [@tremor021](https://github.com/tremor021) ([#6425](https://github.com/community-scripts/ProxmoxVE/pull/6425))
|
||||||
|
|
||||||
|
## 2025-07-31
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- OpenObserve: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6409](https://github.com/community-scripts/ProxmoxVE/pull/6409))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Remove temp. Tandoor during Install & Update Issues [@MickLesk](https://github.com/MickLesk) ([#6438](https://github.com/community-scripts/ProxmoxVE/pull/6438))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: listmonk [@tremor021](https://github.com/tremor021) ([#6399](https://github.com/community-scripts/ProxmoxVE/pull/6399))
|
||||||
|
- Refactor: Neo4j [@tremor021](https://github.com/tremor021) ([#6418](https://github.com/community-scripts/ProxmoxVE/pull/6418))
|
||||||
|
- Refactor: Monica [@tremor021](https://github.com/tremor021) ([#6416](https://github.com/community-scripts/ProxmoxVE/pull/6416))
|
||||||
|
- Refactor: Memos [@tremor021](https://github.com/tremor021) ([#6415](https://github.com/community-scripts/ProxmoxVE/pull/6415))
|
||||||
|
- Refactor: Opengist [@tremor021](https://github.com/tremor021) ([#6423](https://github.com/community-scripts/ProxmoxVE/pull/6423))
|
||||||
|
- Refactor: Ombi [@tremor021](https://github.com/tremor021) ([#6422](https://github.com/community-scripts/ProxmoxVE/pull/6422))
|
||||||
|
- Refactor: MySpeed [@tremor021](https://github.com/tremor021) ([#6417](https://github.com/community-scripts/ProxmoxVE/pull/6417))
|
||||||
|
|
||||||
|
## 2025-07-30
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Strip SD and NS prefixes before writing to config file [@mattv8](https://github.com/mattv8) ([#6356](https://github.com/community-scripts/ProxmoxVE/pull/6356))
|
||||||
|
- [core] fix: expand $CACHER_IP in apt-proxy-detect.sh (revert quoted heredoc) [@MickLesk](https://github.com/MickLesk) ([#6385](https://github.com/community-scripts/ProxmoxVE/pull/6385))
|
||||||
|
- PiAlert: bugfix dependencies [@leiweibau](https://github.com/leiweibau) ([#6396](https://github.com/community-scripts/ProxmoxVE/pull/6396))
|
||||||
|
- Librespeed-Rust: Fix service name and RELEASE var fetching [@tremor021](https://github.com/tremor021) ([#6378](https://github.com/community-scripts/ProxmoxVE/pull/6378))
|
||||||
|
- n8n: add build-essential as dependency [@MickLesk](https://github.com/MickLesk) ([#6392](https://github.com/community-scripts/ProxmoxVE/pull/6392))
|
||||||
|
- Habitica: Fix trusted domains [@tremor021](https://github.com/tremor021) ([#6380](https://github.com/community-scripts/ProxmoxVE/pull/6380))
|
||||||
|
- Mafl: Fix undeclared var [@tremor021](https://github.com/tremor021) ([#6371](https://github.com/community-scripts/ProxmoxVE/pull/6371))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Lidarr [@tremor021](https://github.com/tremor021) ([#6379](https://github.com/community-scripts/ProxmoxVE/pull/6379))
|
||||||
|
- Refactor: Kubo [@tremor021](https://github.com/tremor021) ([#6376](https://github.com/community-scripts/ProxmoxVE/pull/6376))
|
||||||
|
- Refactor: Komga [@tremor021](https://github.com/tremor021) ([#6374](https://github.com/community-scripts/ProxmoxVE/pull/6374))
|
||||||
|
- Refactor: Koillection [@tremor021](https://github.com/tremor021) ([#6373](https://github.com/community-scripts/ProxmoxVE/pull/6373))
|
||||||
|
- Refactor: Karakeep [@tremor021](https://github.com/tremor021) ([#6372](https://github.com/community-scripts/ProxmoxVE/pull/6372))
|
||||||
|
|
||||||
|
## 2025-07-29
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Jeedom ([#6336](https://github.com/community-scripts/ProxmoxVE/pull/6336))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- PiAlert: add new dependencies [@leiweibau](https://github.com/leiweibau) ([#6337](https://github.com/community-scripts/ProxmoxVE/pull/6337))
|
||||||
|
- Element Synapse CT RAM increased from 1024 to 2048 [@tjcomserv](https://github.com/tjcomserv) ([#6330](https://github.com/community-scripts/ProxmoxVE/pull/6330))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: HomeBox [@tremor021](https://github.com/tremor021) ([#6338](https://github.com/community-scripts/ProxmoxVE/pull/6338))
|
||||||
|
- Refactor: InspIRCd [@tremor021](https://github.com/tremor021) ([#6343](https://github.com/community-scripts/ProxmoxVE/pull/6343))
|
||||||
|
- Refactor: Jackett [@tremor021](https://github.com/tremor021) ([#6344](https://github.com/community-scripts/ProxmoxVE/pull/6344))
|
||||||
|
- Update keycloak script to support configuration of latest release (v26) [@remz1337](https://github.com/remz1337) ([#6322](https://github.com/community-scripts/ProxmoxVE/pull/6322))
|
||||||
|
- Refactor: Photoprism [@MickLesk](https://github.com/MickLesk) ([#6335](https://github.com/community-scripts/ProxmoxVE/pull/6335))
|
||||||
|
- Refactor: Autobrr [@tremor021](https://github.com/tremor021) ([#6302](https://github.com/community-scripts/ProxmoxVE/pull/6302))
|
||||||
|
|
||||||
## 2025-07-28
|
## 2025-07-28
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -36,10 +36,7 @@ function update_script() {
|
|||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Backup Old Installation"
|
msg_info "Backup Old Installation"
|
||||||
mkdir -p /opt/adventurelog-backup
|
cp -r /opt/adventurelog /opt/adventurelog-backup
|
||||||
cp /opt/adventurelog/backend/server/.env /opt/adventurelog-backup/backend/server/.env
|
|
||||||
cp -r /opt/adventurelog/backend/server/media /opt/adventurelog-backup/backend/server/media
|
|
||||||
cp /opt/adventurelog/frontend/.env /opt/adventurelog-backup/frontend/.env
|
|
||||||
msg_ok "Backup done"
|
msg_ok "Backup done"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||||
|
|||||||
@@ -27,7 +27,30 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
|
RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
|
||||||
|
msg_info "Stopping service"
|
||||||
|
systemctl stop AgentDVR
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
msg_info "Updating $APP"
|
||||||
|
cd /opt/agentdvr/agent
|
||||||
|
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
||||||
|
$STD unzip -o Agent_Linux64*.zip
|
||||||
|
chmod +x ./Agent
|
||||||
|
echo $RELEASE > ~/.agentdvr
|
||||||
|
rm -rf Agent_Linux64*.zip
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start AgentDVR
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated $APP successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,16 +27,15 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
||||||
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
||||||
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
|
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
|
curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
|
||||||
mkdir -p /usr/share/nginx/html
|
mkdir -p /usr/share/nginx/html
|
||||||
rm -rf /usr/share/nginx/html/*
|
rm -rf /usr/share/nginx/html/*
|
||||||
$STD unzip it-tools.zip -d /tmp/it-tools
|
$STD unzip it-tools.zip -d /tmp
|
||||||
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
|
cp -r /tmp/dist/* /usr/share/nginx/html
|
||||||
rm -rf /tmp/it-tools
|
rm -rf /tmp/dist
|
||||||
rm -f it-tools.zip
|
rm -f it-tools.zip
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-1}"
|
|||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.22}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_tun="${var_tun:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -20,29 +20,38 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/archivebox ]]; then
|
if [[ ! -d /opt/archivebox ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop archivebox
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
cd /opt/archivebox/data
|
|
||||||
pip install --upgrade --ignore-installed archivebox
|
|
||||||
sudo -u archivebox archivebox init
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start archivebox
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
|
||||||
|
msg_info "Stopping ArchiveBox"
|
||||||
|
systemctl stop archivebox
|
||||||
|
msg_ok "Stopped ArchiveBox"
|
||||||
|
|
||||||
|
msg_info "Upgrading Playwright"
|
||||||
|
$STD uv pip install playwright --system
|
||||||
|
$STD playwright install-deps chromium
|
||||||
|
msg_ok "Upgraded Playwright"
|
||||||
|
|
||||||
|
msg_info "Updating ArchiveBox"
|
||||||
|
cd /opt/archivebox/data
|
||||||
|
$STD uv pip install --system --upgrade --no-reinstall archivebox
|
||||||
|
sudo -u archivebox archivebox init
|
||||||
|
msg_ok "Updated ArchiveBox"
|
||||||
|
|
||||||
|
msg_info "Starting ArchiveBox"
|
||||||
|
systemctl start archivebox
|
||||||
|
msg_ok "Started ArchiveBox"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -52,4 +61,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
|
||||||
|
|||||||
@@ -27,22 +27,24 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping ${APP} LXC"
|
|
||||||
systemctl stop autobrr.service
|
|
||||||
msg_ok "Stopped ${APP} LXC"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} LXC"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
rm -rf /usr/local/bin/*
|
if [[ "${RELEASE}" != "$(cat ~/.autobrr 2>/dev/null)" ]] || [[ ! -f ~/.autobrr ]]; then
|
||||||
curl -fsSL "$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4)" -o $(basename "$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4)")
|
msg_info "Stopping ${APP} LXC"
|
||||||
tar -C /usr/local/bin -xzf autobrr*.tar.gz
|
systemctl stop autobrr
|
||||||
rm -rf autobrr*.tar.gz
|
msg_ok "Stopped ${APP} LXC"
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP} LXC"
|
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
||||||
systemctl start autobrr.service
|
|
||||||
msg_ok "Started ${APP} LXC"
|
msg_info "Starting ${APP} LXC"
|
||||||
msg_ok "Updated Successfully"
|
systemctl start autobrr
|
||||||
exit
|
msg_ok "Started ${APP} LXC"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
43
ct/bazarr.sh
43
ct/bazarr.sh
@@ -20,20 +20,37 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var/lib/bazarr/ ]]; then
|
if [[ ! -d /var/lib/bazarr/ ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
exit
|
||||||
}
|
fi
|
||||||
|
|
||||||
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/morpheus65535/bazarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.bazarr 2>/dev/null)" ]] || [[ ! -f ~/.bazarr ]]; then
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
|
||||||
|
|
||||||
|
msg_info "Setup Bazarr"
|
||||||
|
mkdir -p /var/lib/bazarr/
|
||||||
|
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||||
|
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||||
|
$STD uv pip install -r /opt/bazarr/requirements.txt --system
|
||||||
|
msg_ok "Setup Bazarr"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
@@ -41,4 +58,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: MickLesk (CanbiZ)
|
# Author: MickLesk (CanbiZ)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/adityachandelgit/BookLore
|
# Source: https://github.com/booklore-app/BookLore
|
||||||
|
|
||||||
APP="BookLore"
|
APP="BookLore"
|
||||||
var_tags="${var_tags:-books;library}"
|
var_tags="${var_tags:-books;library}"
|
||||||
@@ -29,13 +29,13 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop booklore
|
systemctl stop booklore
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
|
fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
msg_info "Building Frontend"
|
||||||
cd /opt/booklore/booklore-ui
|
cd /opt/booklore/booklore-ui
|
||||||
@@ -45,7 +45,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Building Backend"
|
msg_info "Building Backend"
|
||||||
cd /opt/booklore/booklore-api
|
cd /opt/booklore/booklore-api
|
||||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||||
$STD ./gradlew clean build --no-daemon
|
$STD ./gradlew clean build --no-daemon
|
||||||
mkdir -p /opt/booklore/dist
|
mkdir -p /opt/booklore/dist
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
systemctl stop cleanuparr
|
systemctl stop cleanuparr
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "$RELEASE" "/opt/cleanuparr" "*linux-amd64.zip"
|
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start cleanuparr
|
systemctl start cleanuparr
|
||||||
|
|||||||
@@ -40,16 +40,20 @@ function update_script() {
|
|||||||
$STD apt-get install -y rsync
|
$STD apt-get install -y rsync
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
|
if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
|
||||||
|
msg_info "Backing up existing data"
|
||||||
mv /opt/commafeed/data /opt/data.bak
|
mv /opt/commafeed/data /opt/data.bak
|
||||||
|
msg_ok "Backed up existing data"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
|
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
if [ -d /opt/data.bak ] && [ "$(ls -A /opt/data.bak)" ]; then
|
||||||
if [ -d /opt/commafeed/data.bak ] && [ "$(ls -A /opt/commafeed/data.bak)" ]; then
|
msg_info "Restoring data"
|
||||||
mv /opt/commafeed/data.bak /opt/commafeed/data
|
mv /opt/data.bak /opt/commafeed/data
|
||||||
|
msg_ok "Restored data"
|
||||||
fi
|
fi
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start commafeed
|
systemctl start commafeed
|
||||||
|
|||||||
@@ -68,10 +68,10 @@ function update_script() {
|
|||||||
msg_ok "Started Crafty-Controller"
|
msg_ok "Started Crafty-Controller"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. Crafty-Controller is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -90,3 +90,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Element Synapse"
|
APP="Element Synapse"
|
||||||
var_tags="${var_tags:-server}"
|
var_tags="${var_tags:-server}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
|
|||||||
@@ -41,8 +41,10 @@ function update_script() {
|
|||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ function update_script() {
|
|||||||
msg_error "Project directory does not exist: $PROJECT_DIR"
|
msg_error "Project directory does not exist: $PROJECT_DIR"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if ! command -v git &>/dev/null; then
|
||||||
|
$STD apt-get install -y git
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Stopping service $SERVICE_NAME"
|
msg_info "Stopping service $SERVICE_NAME"
|
||||||
systemctl stop "$SERVICE_NAME"
|
systemctl stop "$SERVICE_NAME"
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
__ __ ___ _ __ __ ______
|
|
||||||
/ / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ / ____/___ ________
|
|
||||||
/ /_/ / __ \/ __ `__ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/_____/ / / __ \/ ___/ _ \
|
|
||||||
/ __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_/_____/ /___/ /_/ / / / __/
|
|
||||||
/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ \____/\____/_/ \___/
|
|
||||||
|
|
||||||
6
ct/headers/hortusfox
Normal file
6
ct/headers/hortusfox
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __ __ ______
|
||||||
|
/ / / /___ _____/ /___ _______/ ____/___ _ __
|
||||||
|
/ /_/ / __ \/ ___/ __/ / / / ___/ /_ / __ \| |/_/
|
||||||
|
/ __ / /_/ / / / /_/ /_/ (__ ) __/ / /_/ /> <
|
||||||
|
/_/ /_/\____/_/ \__/\__,_/____/_/ \____/_/|_|
|
||||||
|
|
||||||
6
ct/headers/jeedom
Normal file
6
ct/headers/jeedom
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __
|
||||||
|
/ /__ ___ ____/ /___ ____ ___
|
||||||
|
__ / / _ \/ _ \/ __ / __ \/ __ `__ \
|
||||||
|
/ /_/ / __/ __/ /_/ / /_/ / / / / / /
|
||||||
|
\____/\___/\___/\__,_/\____/_/ /_/ /_/
|
||||||
|
|
||||||
6
ct/headers/ots
Normal file
6
ct/headers/ots
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ ___________
|
||||||
|
/ __ \/_ __/ ___/
|
||||||
|
/ / / / / / \__ \
|
||||||
|
/ /_/ / / / ___/ /
|
||||||
|
\____/ /_/ /____/
|
||||||
|
|
||||||
6
ct/headers/palmr
Normal file
6
ct/headers/palmr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ __
|
||||||
|
/ __ \____ _/ /___ ___ _____
|
||||||
|
/ /_/ / __ `/ / __ `__ \/ ___/
|
||||||
|
/ ____/ /_/ / / / / / / / /
|
||||||
|
/_/ \__,_/_/_/ /_/ /_/_/
|
||||||
|
|
||||||
6
ct/headers/tududi
Normal file
6
ct/headers/tududi
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
______ __ ___
|
||||||
|
/_ __/_ ______/ /_ ______/ (_)
|
||||||
|
/ / / / / / __ / / / / __ / /
|
||||||
|
/ / / /_/ / /_/ / /_/ / /_/ / /
|
||||||
|
/_/ \__,_/\__,_/\__,_/\__,_/_/
|
||||||
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://www.home-assistant.io/
|
|
||||||
|
|
||||||
APP="Home Assistant-Core"
|
|
||||||
var_tags="${var_tags:-automation;smarthome}"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-2048}"
|
|
||||||
var_disk="${var_disk:-10}"
|
|
||||||
var_os="${var_os:-ubuntu}"
|
|
||||||
var_version="${var_version:-24.10}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
|
|
||||||
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
|
|
||||||
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /srv/homeassistant ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
setup_uv
|
|
||||||
IP=$(hostname -I | awk '{print $1}')
|
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
|
||||||
"1" "Update Core" ON \
|
|
||||||
"2" "Install HACS" OFF \
|
|
||||||
"3" "Install FileBrowser" OFF \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
|
||||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
|
|
||||||
clear
|
|
||||||
header_info
|
|
||||||
echo -e "${GN}Updating to Beta Version${CL}"
|
|
||||||
BR="--pre"
|
|
||||||
else
|
|
||||||
clear
|
|
||||||
header_info
|
|
||||||
echo -e "${GN}Updating to Stable Version${CL}"
|
|
||||||
BR=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Stopping Home Assistant"
|
|
||||||
systemctl stop homeassistant
|
|
||||||
msg_ok "Stopped Home Assistant"
|
|
||||||
|
|
||||||
if [[ -d /srv/homeassistant/bin ]]; then
|
|
||||||
msg_info "Migrating to .venv-based structure"
|
|
||||||
$STD source /srv/homeassistant/bin/activate
|
|
||||||
PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
|
|
||||||
$STD deactivate
|
|
||||||
mv /srv/homeassistant "/srv/homeassistant_backup_$PY_VER"
|
|
||||||
mkdir -p /srv/homeassistant
|
|
||||||
cd /srv/homeassistant
|
|
||||||
|
|
||||||
$STD uv python install 3.13
|
|
||||||
UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
|
|
||||||
if [[ -z "$UV_PYTHON" ]]; then
|
|
||||||
msg_error "No local Python 3.13 found via uv"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
$STD uv venv .venv --python "$UV_PYTHON"
|
|
||||||
$STD source .venv/bin/activate
|
|
||||||
$STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
|
|
||||||
mkdir -p /root/.homeassistant
|
|
||||||
msg_ok "Migration complete"
|
|
||||||
else
|
|
||||||
source /srv/homeassistant/.venv/bin/activate
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_info "Updating Home Assistant"
|
|
||||||
$STD uv pip install $BR --upgrade homeassistant
|
|
||||||
msg_ok "Updated Home Assistant"
|
|
||||||
|
|
||||||
msg_info "Starting Home Assistant"
|
|
||||||
if [[ -f /etc/systemd/system/homeassistant.service ]] && grep -q "/srv/homeassistant/bin/python3" /etc/systemd/system/homeassistant.service; then
|
|
||||||
sed -i 's|ExecStart=/srv/homeassistant/bin/python3|ExecStart=/srv/homeassistant/.venv/bin/python3|' /etc/systemd/system/homeassistant.service
|
|
||||||
sed -i 's|PATH=/srv/homeassistant/bin|PATH=/srv/homeassistant/.venv/bin|' /etc/systemd/system/homeassistant.service
|
|
||||||
$STD systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
|
|
||||||
systemctl start homeassistant
|
|
||||||
sleep 5
|
|
||||||
msg_ok "Started Home Assistant"
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$UPD" == "2" ]; then
|
|
||||||
msg_info "Installing Home Assistant Community Store (HACS)"
|
|
||||||
$STD apt update
|
|
||||||
cd /root/.homeassistant
|
|
||||||
$STD bash <(curl -fsSL https://get.hacs.xyz)
|
|
||||||
msg_ok "Installed Home Assistant Community Store (HACS)"
|
|
||||||
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$UPD" == "3" ]; then
|
|
||||||
set +Eeuo pipefail
|
|
||||||
read -r -p "${TAB3}Would you like to use No Authentication? <y/N> " prompt
|
|
||||||
msg_info "Installing FileBrowser"
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
|
|
||||||
$STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/$RELEASE/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin
|
|
||||||
|
|
||||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
|
||||||
$STD filebrowser config init -a '0.0.0.0'
|
|
||||||
$STD filebrowser config set -a '0.0.0.0'
|
|
||||||
$STD filebrowser config set --auth.method=noauth
|
|
||||||
$STD filebrowser users add ID 1 --perm.admin
|
|
||||||
else
|
|
||||||
$STD filebrowser config init -a '0.0.0.0'
|
|
||||||
$STD filebrowser config set -a '0.0.0.0'
|
|
||||||
$STD filebrowser users add admin helper-scripts.com --perm.admin
|
|
||||||
fi
|
|
||||||
msg_ok "Installed FileBrowser"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/filebrowser.service
|
|
||||||
[Unit]
|
|
||||||
Description=Filebrowser
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
WorkingDirectory=/root/
|
|
||||||
ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
systemctl enable --now -q filebrowser.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "FileBrowser should be reachable by going to the following URL.
|
|
||||||
${BL}http://$IP:8080${CL} admin|helper-scripts.com\n"
|
|
||||||
exit
|
|
||||||
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} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
|
||||||
@@ -22,26 +22,27 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /opt/homebox ]]; then
|
if [[ ! -f /etc/systemd/system/homebox.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
if [[ -x /opt/homebox ]]; then
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
sed -i 's|/opt\b|/opt/homebox|g' /etc/systemd/system/homebox.service
|
||||||
|
sed -i 's|^ExecStart=/opt/homebox$|ExecStart=/opt/homebox/homebox|' /etc/systemd/system/homebox.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.homebox 2>/dev/null)" ]] || [[ ! -f ~/.homebox ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop homebox
|
systemctl stop homebox
|
||||||
msg_ok "${APP} Stopped"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
[ -x /opt/homebox ] && rm -f /opt/homebox
|
||||||
cd /opt
|
fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz"
|
||||||
rm -rf homebox_bak
|
chmod +x /opt/homebox/homebox
|
||||||
rm -rf /tmp/homebox.tar.gz
|
[ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
|
||||||
mv homebox homebox_bak
|
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
|
||||||
curl -fsSL "https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz" -o "/tmp/homebox.tar.gz"
|
|
||||||
tar -xzf /tmp/homebox.tar.gz -C /opt
|
|
||||||
chmod +x /opt/homebox
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated Homebox"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start homebox
|
systemctl start homebox
|
||||||
@@ -61,4 +62,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7745${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7745${CL}"
|
||||||
|
|||||||
@@ -27,14 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
|
|
||||||
if ! command -v npm >/dev/null 2>&1; then
|
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||||
echo "Installing NPM..."
|
|
||||||
$STD apt-get install -y npm
|
|
||||||
$STD npm install -g pnpm
|
|
||||||
echo "Installed NPM..."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# ensure that jq is installed
|
# ensure that jq is installed
|
||||||
if ! command -v jq &>/dev/null; then
|
if ! command -v jq &>/dev/null; then
|
||||||
$STD msg_info "Installing jq..."
|
$STD msg_info "Installing jq..."
|
||||||
|
|||||||
74
ct/hortusfox.sh
Normal file
74
ct/hortusfox.sh
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/danielbrendel/hortusfox-web
|
||||||
|
|
||||||
|
APP="HortusFox"
|
||||||
|
var_tags="${var_tags:-plants}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-5}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/hortusfox ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/danielbrendel/hortusfox-web/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||||
|
if [[ ! -f ~/.hortusfox ]] || [[ "${RELEASE}" != "$(cat ~/.hortusfox)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop apache2
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Backing up current HortusFox installation"
|
||||||
|
cd /opt
|
||||||
|
mv /opt/hortusfox/ /opt/hortusfox-backup
|
||||||
|
msg_ok "Backed up current HortusFox installation"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web"
|
||||||
|
|
||||||
|
msg_info "Updating HortusFox"
|
||||||
|
cd /opt/hortusfox
|
||||||
|
mv /opt/hortusfox-backup/.env /opt/hortusfox/.env
|
||||||
|
$STD composer install --no-dev --optimize-autoloader
|
||||||
|
$STD php asatru migrate --no-interaction
|
||||||
|
$STD php asatru plants:attributes
|
||||||
|
$STD php asatru calendar:classes
|
||||||
|
chown -R www-data:www-data /opt/hortusfox
|
||||||
|
msg_ok "Updated HortusFox"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start apache2
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -r /opt/hortusfox-backup
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
35
ct/immich.sh
35
ct/immich.sh
@@ -58,7 +58,7 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
msg_ok "Image-processing libraries updated"
|
msg_ok "Image-processing libraries updated"
|
||||||
fi
|
fi
|
||||||
RELEASE="1.136.0"
|
RELEASE="1.137.3"
|
||||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
@@ -99,11 +99,25 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
cp "$ML_DIR"/ml_start.sh "$INSTALL_DIR"
|
cp "$ML_DIR"/ml_start.sh "$INSTALL_DIR"
|
||||||
|
if grep -qs "set -a" "$APP_DIR"/bin/start.sh; then
|
||||||
|
cp "$APP_DIR"/bin/start.sh "$INSTALL_DIR"
|
||||||
|
else
|
||||||
|
cat <<EOF >"$INSTALL_DIR"/start.sh
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -a
|
||||||
|
. "$INSTALL_DIR"/.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
/usr/bin/node "$APP_DIR"/dist/main.js "\$@"
|
||||||
|
EOF
|
||||||
|
chmod +x "$INSTALL_DIR"/start.sh
|
||||||
|
fi
|
||||||
rm -rf "${APP_DIR:?}"/*
|
rm -rf "${APP_DIR:?}"/*
|
||||||
mkdir -p "$ML_DIR"
|
mkdir -p "$ML_DIR"
|
||||||
rm -rf "$SRC_DIR"
|
rm -rf "$SRC_DIR"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.136.0" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Updating ${APP} web and microservices"
|
msg_info "Updating ${APP} web and microservices"
|
||||||
cd "$SRC_DIR"/server
|
cd "$SRC_DIR"/server
|
||||||
@@ -114,6 +128,10 @@ function update_script() {
|
|||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
$STD npm prune --omit=dev --omit=optional
|
$STD npm prune --omit=dev --omit=optional
|
||||||
|
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
||||||
|
cp package.json "$APP_DIR"/bin
|
||||||
|
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||||
|
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
cd "$SRC_DIR"/open-api/typescript-sdk
|
||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
@@ -121,7 +139,6 @@ function update_script() {
|
|||||||
$STD npm ci
|
$STD npm ci
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,bin/start.sh} "$APP_DIR"/
|
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
@@ -151,8 +168,8 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
grep -Rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
grep -rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||||
grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
grep -rlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||||
sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
||||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$APP_DIR"/upload
|
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$APP_DIR"/upload
|
||||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||||
@@ -214,6 +231,7 @@ function compile_libjxl() {
|
|||||||
$STD make clean
|
$STD make clean
|
||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
rm -rf "$SOURCE"/{build,third_party}
|
rm -rf "$SOURCE"/{build,third_party}
|
||||||
|
sed -i "s/libjxl: .*$/libjxl: $LIBJXL_REVISION/" ~/.immich_library_revisions
|
||||||
msg_ok "Recompiled libjxl"
|
msg_ok "Recompiled libjxl"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -248,6 +266,7 @@ function compile_libheif() {
|
|||||||
$STD make clean
|
$STD make clean
|
||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
rm -rf "$SOURCE"/build
|
rm -rf "$SOURCE"/build
|
||||||
|
sed -i "s/libheif: .*$/libheif: $LIBHEIF_REVISION/" ~/.immich_library_revisions
|
||||||
msg_ok "Recompiled libheif"
|
msg_ok "Recompiled libheif"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -269,6 +288,7 @@ function compile_libraw() {
|
|||||||
ldconfig /usr/local/lib
|
ldconfig /usr/local/lib
|
||||||
$STD make clean
|
$STD make clean
|
||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
|
sed -i "s/libraw: .*$/libraw: $LIBRAW_REVISION/" ~/.immich_library_revisions
|
||||||
msg_ok "Recompiled libraw"
|
msg_ok "Recompiled libraw"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -288,14 +308,14 @@ function compile_imagemagick() {
|
|||||||
ldconfig /usr/local/lib
|
ldconfig /usr/local/lib
|
||||||
$STD make clean
|
$STD make clean
|
||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
|
sed -i "s/imagemagick: .*$/imagemagick: $IMAGEMAGICK_REVISION/" ~/.immich_library_revisions
|
||||||
msg_ok "Recompiled ImageMagick"
|
msg_ok "Recompiled ImageMagick"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function compile_libvips() {
|
function compile_libvips() {
|
||||||
SOURCE=$SOURCE_DIR/libvips
|
SOURCE=$SOURCE_DIR/libvips
|
||||||
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
|
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
|
||||||
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
|
|
||||||
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
|
||||||
msg_info "Recompiling libvips"
|
msg_info "Recompiling libvips"
|
||||||
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
|
||||||
@@ -308,6 +328,7 @@ function compile_libvips() {
|
|||||||
ldconfig /usr/local/lib
|
ldconfig /usr/local/lib
|
||||||
cd "$STAGING_DIR"
|
cd "$STAGING_DIR"
|
||||||
rm -rf "$SOURCE"/build
|
rm -rf "$SOURCE"/build
|
||||||
|
sed -i "s/libvips: .*$/libvips: $LIBVIPS_REVISION/" ~/.immich_library_revisions
|
||||||
msg_ok "Recompiled libvips"
|
msg_ok "Recompiled libvips"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,26 +27,19 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.inspircd 2>/dev/null)" ]] || [[ ! -f ~/.inspircd ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop inspircd
|
systemctl stop inspircd
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
fetch_and_deploy_gh_release "inspircd" "inspircd/inspircd" "binary"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u2_amd64.deb" -o $(basename "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u2_amd64.deb")
|
|
||||||
$STD apt-get install "./inspircd_${RELEASE}.deb12u2_amd64.deb" -y
|
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start inspircd
|
systemctl start inspircd
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/inspircd_${RELEASE}.deb12u2_amd64.deb
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -27,17 +27,18 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/Jackett/Jackett/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [ ! -f /opt/.env ]; then
|
||||||
msg_info "Updating ${APP}"
|
sed -i 's|^Environment="DisableRootWarning=true"$|EnvironmentFile="/opt/.env"|' /etc/systemd/system/jackett.service
|
||||||
curl -fsSL "https://github.com/Jackett/Jackett/releases/download/$RELEASE/Jackett.Binaries.LinuxAMDx64.tar.gz" -o $(basename "https://github.com/Jackett/Jackett/releases/download/$RELEASE/Jackett.Binaries.LinuxAMDx64.tar.gz")
|
cat <<EOF >/opt/.env
|
||||||
systemctl stop jackett
|
DisableRootWarning=true
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/Jackett/Jackett/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.jackett 2>/dev/null)" ]] || [[ ! -f ~/.jackett ]]; then
|
||||||
rm -rf /opt/Jackett
|
rm -rf /opt/Jackett
|
||||||
tar -xzf Jackett.Binaries.LinuxAMDx64.tar.gz -C /opt
|
fetch_and_deploy_gh_release "jackett" "Jackett/Jackett" "prebuild" "latest" "/opt/Jackett" "Jackett.Binaries.LinuxAMDx64.tar.gz"
|
||||||
rm -rf Jackett.Binaries.LinuxAMDx64.tar.gz
|
|
||||||
systemctl start jackett
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
46
ct/jeedom.sh
Normal file
46
ct/jeedom.sh
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Mips2648
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://jeedom.com/
|
||||||
|
|
||||||
|
APP="Jeedom"
|
||||||
|
var_tags="${var_tags:-automation;smarthome}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-16}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /var/www/html/core/config/version ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Updating OS"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
msg_ok "OS updated, you can now update Jeedom from the Web UI."
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
@@ -78,7 +78,7 @@ function update_script() {
|
|||||||
cd /opt/karakeep/apps/cli
|
cd /opt/karakeep/apps/cli
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
DATA_DIR="$(sed -n '/^DATA_DIR/p' /etc/karakeep/karakeep.env | awk -F= '{print $2}')"
|
DATA_DIR="$(sed -n '/^DATA_DIR/p' /etc/karakeep/karakeep.env | awk -F= '{print $2}' | tr -d '="=')"
|
||||||
export DATA_DIR="${DATA_DIR:-/opt/karakeep_data}"
|
export DATA_DIR="${DATA_DIR:-/opt/karakeep_data}"
|
||||||
cd /opt/karakeep/packages/db
|
cd /opt/karakeep/packages/db
|
||||||
$STD pnpm migrate
|
$STD pnpm migrate
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 tteck
|
||||||
# Author: tteck (tteckster)
|
# Author: tteck (tteckster) | Co-Author: remz1337
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://www.keycloak.org/
|
# Source: https://www.keycloak.org/
|
||||||
|
|
||||||
@@ -23,34 +23,39 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/systemd/system/keycloak.service ]]; then
|
if [[ ! -d /opt/keycloak ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP} LXC"
|
|
||||||
|
msg_info "Stopping Keycloak"
|
||||||
|
systemctl stop keycloak
|
||||||
|
msg_ok "Stopped Keycloak"
|
||||||
|
|
||||||
msg_info "Updating packages"
|
msg_info "Updating packages"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
|
msg_ok "Updated packages"
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
msg_info "Backup old Keycloak"
|
||||||
msg_info "Updating Keycloak to v$RELEASE"
|
|
||||||
cd /opt
|
cd /opt
|
||||||
curl -fsSL "https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz" -o $(basename "https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz")
|
|
||||||
mv keycloak keycloak.old
|
mv keycloak keycloak.old
|
||||||
tar -xzf keycloak-$RELEASE.tar.gz
|
tar -czf keycloak_conf_backup.tar.gz keycloak.old/conf
|
||||||
cp -r keycloak.old/conf keycloak-$RELEASE
|
msg_ok "Backup done"
|
||||||
cp -r keycloak.old/providers keycloak-$RELEASE
|
|
||||||
cp -r keycloak.old/themes keycloak-$RELEASE
|
|
||||||
mv keycloak-$RELEASE keycloak
|
|
||||||
|
|
||||||
msg_info "Delete temporary installation files"
|
fetch_and_deploy_gh_release "keycloak" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
|
||||||
rm keycloak-$RELEASE.tar.gz
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt
|
||||||
|
mv keycloak_conf_backup.tar.gz keycloak/conf
|
||||||
|
cp -r keycloak.old/providers keycloak
|
||||||
|
cp -r keycloak.old/themes keycloak
|
||||||
rm -rf keycloak.old
|
rm -rf keycloak.old
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
|
||||||
msg_info "Restating Keycloak"
|
msg_info "Restarting Keycloak"
|
||||||
systemctl restart keycloak
|
systemctl restart keycloak
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Restarted Keycloak"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,17 +28,18 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.koillection ]] || [[ "${RELEASE}" != "$(cat ~/.koillection)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Creating a backup"
|
||||||
cd /opt
|
|
||||||
mv /opt/koillection/ /opt/koillection-backup
|
mv /opt/koillection/ /opt/koillection-backup
|
||||||
curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip")
|
msg_ok "Backup created"
|
||||||
$STD unzip "${RELEASE}.zip"
|
|
||||||
mv "/opt/koillection-${RELEASE}" /opt/koillection
|
fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/koillection
|
cd /opt/koillection
|
||||||
cp -r /opt/koillection-backup/.env.local /opt/koillection
|
cp -r /opt/koillection-backup/.env.local /opt/koillection
|
||||||
cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
|
cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
|
||||||
@@ -50,7 +51,6 @@ function update_script() {
|
|||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
chown -R www-data:www-data /opt/koillection/public/uploads
|
chown -R www-data:www-data /opt/koillection/public/uploads
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
@@ -58,9 +58,9 @@ function update_script() {
|
|||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -r "/opt/${RELEASE}.zip"
|
|
||||||
rm -r /opt/koillection-backup
|
rm -r /opt/koillection-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
83
ct/kometa.sh
83
ct/kometa.sh
@@ -20,51 +20,46 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f "/opt/kometa/kometa.py" ]]; then
|
if [[ ! -d "/opt/kometa" ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop kometa
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
cd /tmp
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
|
||||||
tar -xzf "$temp_file"
|
|
||||||
cp /opt/kometa/config/config.yml /opt
|
|
||||||
rm -rf /opt/kometa
|
|
||||||
mv Kometa-${RELEASE} /opt/kometa
|
|
||||||
cd /opt/kometa
|
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
||||||
$STD pip install -r requirements.txt --ignore-installed
|
|
||||||
mkdir -p config/assets
|
|
||||||
cp /opt/config.yml config/config.yml
|
|
||||||
echo "${RELEASE}" >/opt/kometa_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start kometa
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f $temp_file
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | jq -r '.tag_name | sub("^v";"")')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.kometa 2>/dev/null)" ]] || [[ ! -f ~/.kometa ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop kometa
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Backing up data"
|
||||||
|
cp /opt/kometa/config/config.yml /opt
|
||||||
|
msg_ok "Backup completed"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
$STD uv python update-shell
|
||||||
|
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa"
|
||||||
|
|
||||||
|
msg_info "Updating Kometa"
|
||||||
|
$STD uv pip install -r requirements.txt --system
|
||||||
|
mkdir -p config/assets
|
||||||
|
cp /opt/config.yml config/config.yml
|
||||||
|
msg_ok "Updated Kometa"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start kometa
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -74,4 +69,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
|
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
|
||||||
|
|||||||
14
ct/komga.sh
14
ct/komga.sh
@@ -27,23 +27,21 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.komga ]] || [[ "${RELEASE}" != "$(cat ~/.komga)" ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop komga
|
systemctl stop komga
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
rm -f /opt/komga/komga.jar
|
||||||
curl -fsSL "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" -o $(basename "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar")
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
|
||||||
rm -rf /opt/komga/komga.jar
|
mv /opt/komga/komga-*.jar /opt/komga/komga.jar
|
||||||
mv -f komga-${RELEASE}.jar /opt/komga/komga.jar
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start komga
|
systemctl start komga
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
|||||||
27
ct/kubo.sh
27
ct/kubo.sh
@@ -23,21 +23,24 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /usr/local/kubo ]]; then
|
if [[ ! -f /usr/local/kubo/ipfs ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/ipfs/kubo/releases/latest | grep "title>Release" | cut -d " " -f 4)
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/ipfs/kubo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Updating $APP LXC"
|
if [[ "${RELEASE}" != "$(cat ~/.kubo)" ]] || [[ ! -f ~/.kubo ]]; then
|
||||||
$STD apt-get update
|
msg_info "Stopping service"
|
||||||
$STD apt-get -y upgrade
|
systemctl stop ipfs
|
||||||
curl -fsSL "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" -o $(basename "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz")
|
msg_ok "Stopped service"
|
||||||
tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local
|
|
||||||
systemctl restart ipfs.service
|
fetch_and_deploy_gh_release "kubo" "ipfs/kubo" "prebuild" "latest" "/usr/local/kubo" "kubo*linux-amd64.tar.gz"
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
rm "kubo_${RELEASE}_linux-amd64.tar.gz"
|
msg_info "Starting service"
|
||||||
msg_ok "Updated $APP LXC"
|
systemctl start ipfs
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated successfuly"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -27,16 +27,17 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop librespeed-rs
|
systemctl stop librespeed_rs
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
|
fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start librespeed-rs
|
systemctl start librespeed_rs
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
29
ct/lidarr.sh
29
ct/lidarr.sh
@@ -29,19 +29,24 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
temp_file="$(mktemp)"
|
if [[ "${RELEASE}" != "$(cat ~/.lidarr)" ]] || [[ ! -f ~/.lidarr ]]; then
|
||||||
rm -rf /opt/Lidarr
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
|
|
||||||
$STD tar -xvzf "$temp_file"
|
|
||||||
mv Lidarr /opt
|
|
||||||
chmod 775 /opt/Lidarr
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Stopping service"
|
||||||
rm -rf "$temp_file"
|
systemctl stop lidarr
|
||||||
msg_ok "Cleaned up"
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "lidarr" "Lidarr/Lidarr" "prebuild" "latest" "/opt/Lidarr" "Lidarr.master*linux-core-x64.tar.gz"
|
||||||
|
chmod 775 /opt/Lidarr
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start lidarr
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,31 +27,33 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.listmonk)" ]] || [[ ! -f ~/.listmonk ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop listmonk
|
systemctl stop listmonk
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cd /opt
|
|
||||||
mv /opt/listmonk/ /opt/listmonk-backup
|
mv /opt/listmonk/ /opt/listmonk-backup
|
||||||
mkdir /opt/listmonk/
|
msg_ok "Backed up data"
|
||||||
curl -fsSL "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz")
|
|
||||||
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
|
fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Configuring listmonk"
|
||||||
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
|
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
|
||||||
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
|
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
|
||||||
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
|
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured listmonk"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start listmonk
|
systemctl start listmonk
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
|
||||||
rm -rf /opt/listmonk-backup/
|
rm -rf /opt/listmonk-backup/
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
|
|||||||
@@ -27,16 +27,17 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
if ! command -v jq &>/dev/null; then
|
||||||
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
$STD apt-get install -y jq
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ ! -f ~/.lubelogger ]] || [[ "${RELEASE}" != "$(cat ~/.lubelogger)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop lubelogger
|
systemctl stop lubelogger
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip" -o $(basename "https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip")
|
|
||||||
mkdir -p /tmp/lubeloggerData/data
|
mkdir -p /tmp/lubeloggerData/data
|
||||||
cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json
|
cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json
|
||||||
cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/
|
cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/
|
||||||
@@ -50,20 +51,23 @@ function update_script() {
|
|||||||
[[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/
|
[[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/
|
||||||
[[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/
|
[[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/
|
||||||
rm -rf /opt/lubelogger
|
rm -rf /opt/lubelogger
|
||||||
$STD unzip LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
|
msg_ok "Backed up data"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip"
|
||||||
|
|
||||||
|
msg_info "Configuring LubeLogger"
|
||||||
chmod 700 /opt/lubelogger/CarCareTracker
|
chmod 700 /opt/lubelogger/CarCareTracker
|
||||||
cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
|
cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
msg_ok "Configured LubeLogger"
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start lubelogger
|
systemctl start lubelogger
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
|
||||||
rm -rf /tmp/lubeloggerData
|
rm -rf /tmp/lubeloggerData
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -27,16 +27,17 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
if ! command -v jq &>/dev/null; then
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
$STD apt-get install -y jq
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ ! -f ~/.magicmirror ]] || [[ "${RELEASE}" != "$(cat ~/.magicmirror)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop magicmirror
|
systemctl stop magicmirror
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get upgrade -y
|
|
||||||
rm -rf /opt/magicmirror-backup
|
rm -rf /opt/magicmirror-backup
|
||||||
mkdir /opt/magicmirror-backup
|
mkdir /opt/magicmirror-backup
|
||||||
cp /opt/magicmirror/config/config.js /opt/magicmirror-backup
|
cp /opt/magicmirror/config/config.js /opt/magicmirror-backup
|
||||||
@@ -44,27 +45,24 @@ function update_script() {
|
|||||||
cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup
|
cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup
|
||||||
fi
|
fi
|
||||||
cp -r /opt/magicmirror/modules /opt/magicmirror-backup
|
cp -r /opt/magicmirror/modules /opt/magicmirror-backup
|
||||||
temp_file=$(mktemp)
|
msg_ok "Backed up data"
|
||||||
curl -fsSL "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
|
|
||||||
tar -xzf "$temp_file"
|
fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball"
|
||||||
rm -rf /opt/magicmirror
|
|
||||||
mv MagicMirror-${RELEASE} /opt/magicmirror
|
msg_info "Configuring MagicMirror"
|
||||||
cd /opt/magicmirror
|
cd /opt/magicmirror
|
||||||
|
sed -i -E 's/("postinstall": )".*"/\1""/; s/("prepare": )".*"/\1""/' package.json
|
||||||
$STD npm run install-mm
|
$STD npm run install-mm
|
||||||
cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
|
cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
|
||||||
if [[ -f /opt/magicmirror-backup/custom.css ]]; then
|
if [[ -f /opt/magicmirror-backup/custom.css ]]; then
|
||||||
cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/
|
cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/
|
||||||
fi
|
fi
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
msg_ok "Configured MagicMirror"
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start magicmirror
|
systemctl start magicmirror
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -f $temp_file
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
@@ -79,4 +77,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
@@ -28,39 +28,33 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/mmdl_version.txt)" ]] || [[ ! -f /opt/mmdl_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.mmdl)" ]] || [[ ! -f ~/.mmdl ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping service"
|
||||||
systemctl stop mmdl
|
systemctl stop mmdl
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped service"
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
cp /opt/mmdl/.env /opt/mmdl.env
|
cp /opt/mmdl/.env /opt/mmdl.env
|
||||||
msg_ok "Backup Created"
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
||||||
curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
|
|
||||||
rm -r /opt/mmdl
|
msg_info "Configuring ${APP}"
|
||||||
unzip -q v"$RELEASE".zip
|
|
||||||
mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
|
|
||||||
mv /opt/mmdl.env /opt/mmdl/.env
|
|
||||||
cd /opt/mmdl
|
cd /opt/mmdl
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run migrate
|
$STD npm run migrate
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Configured ${APP}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting service"
|
||||||
systemctl start mmdl
|
systemctl start mmdl
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started service"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ~/v"$RELEASE".zip
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
# Last Action
|
|
||||||
echo "$RELEASE" >/opt/mmdl_version.txt
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
@@ -20,15 +20,34 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/mediamtx/ ]]; then
|
if [[ ! -d /opt/mediamtx/ ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
if ! command -v jq &>/dev/null; then
|
||||||
exit
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bluenviron/mediamtx/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.mediamtx)" ]] || [[ ! -f ~/.mediamtx ]]; then
|
||||||
|
msg_info "Stopping service"
|
||||||
|
systemctl stop mediamtx
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "mediamtx" "bluenviron/mediamtx" "prebuild" "latest" "/opt/mediamtx" "mediamtx*linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start mediamtx
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -36,4 +55,4 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
|||||||
@@ -24,10 +24,6 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /opt/Meilisearch_version.txt ]]; then
|
|
||||||
msg_error "No Meilisearch Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
|
||||||
"1" "Update Meilisearch" ON \
|
"1" "Update Meilisearch" ON \
|
||||||
"2" "Update Meilisearch-UI" OFF \
|
"2" "Update Meilisearch-UI" OFF \
|
||||||
@@ -38,13 +34,7 @@ function update_script() {
|
|||||||
systemctl stop meilisearch
|
systemctl stop meilisearch
|
||||||
msg_ok "Stopped Meilisearch"
|
msg_ok "Stopped Meilisearch"
|
||||||
|
|
||||||
msg_info "Updating Meilisearch"
|
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
|
||||||
tmp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/meilisearch/meilisearch/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb -o $tmp_file
|
|
||||||
$STD dpkg -i $tmp_file
|
|
||||||
echo "$RELEASE" >/opt/meilisearch_version.txt
|
|
||||||
msg_ok "Updated Meilisearch"
|
|
||||||
|
|
||||||
msg_info "Starting Meilisearch"
|
msg_info "Starting Meilisearch"
|
||||||
systemctl start meilisearch
|
systemctl start meilisearch
|
||||||
@@ -53,7 +43,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$UPD" == "2" ]; then
|
if [ "$UPD" == "2" ]; then
|
||||||
if [[ ! -f /opt/Meilisearch-ui_version.txt ]]; then
|
if [[ ! -d /opt/meilisearch-ui ]]; then
|
||||||
msg_error "No Meilisearch-UI Installation Found!"
|
msg_error "No Meilisearch-UI Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -61,22 +51,16 @@ function update_script() {
|
|||||||
systemctl stop meilisearch-ui
|
systemctl stop meilisearch-ui
|
||||||
msg_ok "Stopped Meilisearch-UI"
|
msg_ok "Stopped Meilisearch-UI"
|
||||||
|
|
||||||
msg_info "Updating Meilisearch-UI"
|
|
||||||
tmp_file=$(mktemp)
|
|
||||||
tmp_dir=$(mktemp -d)
|
|
||||||
RELEASE_UI=$(curl -s https://api.github.com/repos/riccox/meilisearch-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
cp /opt/meilisearch-ui/.env.local /tmp/.env.local.bak
|
cp /opt/meilisearch-ui/.env.local /tmp/.env.local.bak
|
||||||
rm -rf /opt/meilisearch-ui
|
rm -rf /opt/meilisearch-ui
|
||||||
mkdir -p /opt/meilisearch-ui
|
fetch_and_deploy_gh_release "meilisearch-ui" "riccox/meilisearch-ui" "tarball"
|
||||||
curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
|
|
||||||
$STD unzip "$tmp_file" -d "$tmp_dir"
|
msg_info "Configuring Meilisearch-UI"
|
||||||
mv "$tmp_dir"/*/* /opt/meilisearch-ui/
|
|
||||||
cd /opt/meilisearch-ui
|
cd /opt/meilisearch-ui
|
||||||
sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
|
sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
|
||||||
mv /tmp/.env.local.bak /opt/meilisearch-ui/.env.local
|
mv /tmp/.env.local.bak /opt/meilisearch-ui/.env.local
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
echo "$RELEASE_UI" >/opt/meilisearch-ui_version.txt
|
msg_ok "Configured Meilisearch-UI"
|
||||||
msg_ok "Updated Meilisearch-UI"
|
|
||||||
|
|
||||||
msg_info "Starting Meilisearch-UI"
|
msg_info "Starting Meilisearch-UI"
|
||||||
systemctl start meilisearch-ui
|
systemctl start meilisearch-ui
|
||||||
|
|||||||
43
ct/memos.sh
43
ct/memos.sh
@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="Memos"
|
APP="Memos"
|
||||||
var_tags="${var_tags:-notes}"
|
var_tags="${var_tags:-notes}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-7}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@@ -27,26 +27,23 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP (Patience)"
|
|
||||||
cd /opt/memos
|
RELEASE=$(curl -fsSL https://api.github.com/repos/usememos/memos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
git reset --hard HEAD
|
if [[ "${RELEASE}" != "$(cat ~/.memos 2>/dev/null)" ]] || [[ ! -f ~/.memos ]]; then
|
||||||
output=$(git pull --no-rebase)
|
msg_info "Stopping service"
|
||||||
if echo "$output" | grep -q "Already up to date."; then
|
systemctl stop memos
|
||||||
msg_ok "$APP is already up to date."
|
msg_ok "Service stopped"
|
||||||
exit
|
|
||||||
|
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start memos
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
systemctl stop memos
|
|
||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
|
||||||
cd /opt/memos/web
|
|
||||||
$STD pnpm i --frozen-lockfile
|
|
||||||
$STD pnpm build
|
|
||||||
cd /opt/memos
|
|
||||||
mkdir -p /opt/memos/server/dist
|
|
||||||
cp -r web/dist/* /opt/memos/server/dist/
|
|
||||||
cp -r web/dist/* /opt/memos/server/router/frontend/dist/
|
|
||||||
$STD go build -o /opt/memos/memos -tags=embed bin/memos/main.go
|
|
||||||
systemctl start memos
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,4 +54,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}"
|
||||||
|
|||||||
19
ct/monica.sh
19
ct/monica.sh
@@ -27,18 +27,20 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.monica ]] || [[ "${RELEASE}" != "$(cat ~/.monica)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Creating backup"
|
||||||
cd /opt
|
|
||||||
mv /opt/monica/ /opt/monica-backup
|
mv /opt/monica/ /opt/monica-backup
|
||||||
curl -fsSL "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2" -o $(basename "https://github.com/monicahq/monica/releases/download/v${RELEASE}/monica-v${RELEASE}.tar.bz2")
|
msg_ok "Backup created"
|
||||||
tar -xjf "monica-v${RELEASE}.tar.bz2"
|
|
||||||
mv "/opt/monica-v${RELEASE}" /opt/monica
|
fetch_and_deploy_gh_release "monica" "monicahq/monica" "prebuild" "latest" "/opt/monica" "monica-v*.tar.bz2"
|
||||||
|
|
||||||
|
msg_info "Configuring monica"
|
||||||
cd /opt/monica/
|
cd /opt/monica/
|
||||||
cp -r /opt/monica-backup/.env /opt/monica
|
cp -r /opt/monica-backup/.env /opt/monica
|
||||||
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
|
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
|
||||||
@@ -48,17 +50,16 @@ function update_script() {
|
|||||||
$STD php artisan monica:update --force
|
$STD php artisan monica:update --force
|
||||||
chown -R www-data:www-data /opt/monica
|
chown -R www-data:www-data /opt/monica
|
||||||
chmod -R 775 /opt/monica/storage
|
chmod -R 775 /opt/monica/storage
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured monica"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -r "/opt/monica-v${RELEASE}.tar.bz2"
|
|
||||||
rm -r /opt/monica-backup
|
rm -r /opt/monica-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
@@ -28,31 +28,32 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/gnmyt/myspeed/releases/latest | grep "title>Release" | cut -d " " -f 5)
|
RELEASE=$(curl -fsSL https://github.com/gnmyt/myspeed/releases/latest | grep "title>Release" | cut -d " " -f 5)
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.myspeed ]] || [[ "${RELEASE}" != "$(cat ~/.myspeed)" ]]; then
|
||||||
|
|
||||||
msg_info "Stopping ${APP} Service"
|
msg_info "Stopping ${APP} Service"
|
||||||
systemctl stop myspeed
|
systemctl stop myspeed
|
||||||
msg_ok "Stopped ${APP} Service"
|
msg_ok "Stopped ${APP} Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Creating backup"
|
||||||
cd /opt
|
cd /opt
|
||||||
rm -rf myspeed_bak
|
rm -rf myspeed_bak
|
||||||
mv myspeed myspeed_bak
|
mv myspeed myspeed_bak
|
||||||
curl -fsSL "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip" -o $(basename "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip")
|
msg_ok "Backup created"
|
||||||
$STD unzip MySpeed-$RELEASE.zip -d myspeed
|
|
||||||
cd myspeed
|
fetch_and_deploy_gh_release "myspeed" "gnmyt/myspeed" "prebuild" "latest" "/opt/myspeed" "MySpeed-*.zip"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
cd /opt/myspeed
|
||||||
$STD npm install
|
$STD npm install
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
if [[ -d /opt/myspeed_bak/data ]]; then
|
||||||
|
mkdir -p /opt/myspeed/data/
|
||||||
|
cp -r /opt/myspeed_bak/data/* /opt/myspeed/data/
|
||||||
|
fi
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting ${APP} Service"
|
msg_info "Starting ${APP} Service"
|
||||||
systemctl start myspeed
|
systemctl start myspeed
|
||||||
msg_ok "Started ${APP} Service"
|
msg_ok "Started ${APP} Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf MySpeed-$RELEASE.zip
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
|
|
||||||
msg_ok "Updated Successfully!\n"
|
msg_ok "Updated Successfully!\n"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ ! -f /opt/n8n.env ]; then
|
if [ ! -f /opt/n8n.env ]; then
|
||||||
sed -i 's|^Environment="N8N_SECURE_COOKIE=false"$|EnvironmentFile="/opt/n8n.env"|' /etc/systemd/system/n8n.service
|
sed -i 's|^Environment="N8N_SECURE_COOKIE=false"$|EnvironmentFile=/opt/n8n.env|' /etc/systemd/system/n8n.service
|
||||||
HOST_IP=$(hostname -I | awk '{print $1}')
|
HOST_IP=$(hostname -I | awk '{print $1}')
|
||||||
mkdir -p /opt
|
mkdir -p /opt
|
||||||
cat <<EOF >/opt/n8n.env
|
cat <<EOF >/opt/n8n.env
|
||||||
|
|||||||
11
ct/neo4j.sh
11
ct/neo4j.sh
@@ -28,16 +28,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! dpkg -l | grep -q temurin-21-jre; then
|
if ! dpkg -l | grep -q temurin-21-jre; then
|
||||||
msg_info "Installing Adoptium JDK"
|
JAVA_VERSION="21" setup_java
|
||||||
$STD apt-get install -y \
|
|
||||||
gnupg2 \
|
|
||||||
lsb-release
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
|
|
||||||
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y temurin-21-jre
|
|
||||||
msg_ok "Adoptium JDK installed"
|
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
|
|||||||
27
ct/nocodb.sh
27
ct/nocodb.sh
@@ -27,15 +27,24 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
systemctl stop nocodb.service
|
RELEASE=$(curl -fsSL https://api.github.com/repos/nocodb/nocodb/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
cd /opt/nocodb
|
if [[ ! -f ~/.nocodb ]] || [[ "${RELEASE}" != "$(cat ~/.nocodb)" ]]; then
|
||||||
rm -rf nocodb
|
msg_info "Stopping Service"
|
||||||
curl -fsSL http://get.nocodb.com/linux-x64 -o nocodb -L
|
systemctl stop nocodb
|
||||||
chmod +x nocodb
|
msg_ok "Stopped Service"
|
||||||
systemctl start nocodb.service
|
|
||||||
|
fetch_and_deploy_gh_release "nocodb" "nocodb/nocodb" "singlefile" "latest" "/opt/nocodb/" "Noco-linux-x64"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start nocodb
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -45,4 +54,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.nodebb)" ]] || [[ ! -f ~/.nodebb ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop nodebb
|
systemctl stop nodebb
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
@@ -40,13 +40,14 @@ function update_script() {
|
|||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/nodebb
|
cd /opt/nodebb
|
||||||
$STD ./nodebb upgrade
|
$STD ./nodebb upgrade
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" > ~/.nodebb
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start nodebb
|
systemctl start nodebb
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
|
msg_ok "Updated Successfully\n"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
fi
|
fi
|
||||||
@@ -60,4 +61,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4567${CL}"
|
||||||
|
|||||||
@@ -30,26 +30,18 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.oauth2-proxy ]] || [[ "${RELEASE}" != "$(cat ~/.oauth2-proxy)" ]]; then
|
||||||
msg_info "Stopping ${APP} services"
|
msg_info "Stopping ${APP} services"
|
||||||
systemctl stop oauth2-proxy
|
systemctl stop oauth2-proxy
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP} service"
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
fetch_and_deploy_gh_release "oauth2-proxy" "oauth2-proxy/oauth2-proxy" "prebuild" "latest" "/opt/oauth2-proxy" "oauth2-proxy*linux-amd64.tar.gz"
|
||||||
rm -f /opt/oauth2-proxy/oauth2-proxy
|
|
||||||
curl -fsSL "https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v${RELEASE}/oauth2-proxy-v${RELEASE}.linux-amd64.tar.gz" -o /opt/oauth2-proxy.tar.gz
|
msg_info "Starting ${APP} service"
|
||||||
tar -xzf /opt/oauth2-proxy.tar.gz
|
|
||||||
mv /opt/oauth2-proxy-v${RELEASE}.linux-amd64/oauth2-proxy /opt/oauth2-proxy
|
|
||||||
systemctl start oauth2-proxy
|
systemctl start oauth2-proxy
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Started ${APP} service"
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_ok "Updated successfully!\n"
|
||||||
rm -f "/opt/oauth2-proxy.tar.gz"
|
|
||||||
rm -rf "/opt/oauth2-proxy-v${RELEASE}.linux-amd64"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
else
|
else
|
||||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||||
fi
|
fi
|
||||||
|
|||||||
31
ct/ombi.sh
31
ct/ombi.sh
@@ -27,22 +27,29 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
msg_info "Stopping ${APP}"
|
if [[ "${RELEASE}" != "$(cat ~/.ombi)" ]] || [[ ! -f ~/.ombi ]]; then
|
||||||
|
msg_info "Stopping ${APP} service"
|
||||||
systemctl stop ombi
|
systemctl stop ombi
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP} service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Creating backup"
|
||||||
curl -fsSL "https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz" -o $(basename "https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz")
|
[[ -f /opt/ombi/Ombi.db ]] && mv /opt/ombi/Ombi.db /opt
|
||||||
tar -xzf linux-x64.tar.gz -C /opt/ombi
|
[[ -f /opt/ombi/OmbiExternal.db ]] && mv /opt/ombi/OmbiExternal.db /opt
|
||||||
rm -rf linux-x64.tar.gz
|
[[ -f /opt/ombi/OmbiSettings.db ]] && mv /opt/ombi/OmbiSettings.db /opt
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Backup created"
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
rm -rf /opt/ombi
|
||||||
|
fetch_and_deploy_gh_release "ombi" "Ombi-app/Ombi" "prebuild" "latest" "/opt/ombi" "linux-x64.tar.gz"
|
||||||
|
[[ -f /opt/Ombi.db ]] && mv /opt/Ombi.db /opt/ombi
|
||||||
|
[[ -f /opt/OmbiExternal.db ]] && mv /opt/OmbiExternal.db /opt/ombi
|
||||||
|
[[ -f /opt/OmbiSettings.db ]] && mv /opt/OmbiSettings.db /opt/ombi
|
||||||
|
|
||||||
|
msg_info "Starting ${APP} service"
|
||||||
systemctl start ombi
|
systemctl start ombi
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP} service"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} ia already at ${RELEASE}."
|
msg_ok "No update required. ${APP} ia already at ${RELEASE}."
|
||||||
|
|||||||
@@ -27,34 +27,27 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.opengist ]] || [[ "${RELEASE}" != "$(cat ~/.opengist)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop opengist.service
|
systemctl stop opengist
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Creating backup"
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
cd /opt
|
|
||||||
mv /opt/opengist /opt/opengist-backup
|
mv /opt/opengist /opt/opengist-backup
|
||||||
curl -fsSL "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz" -o $(basename "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz")
|
msg_ok "Backup created"
|
||||||
tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
|
|
||||||
|
fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz"
|
||||||
|
|
||||||
|
msg_info "Configuring ${APP}"
|
||||||
mv /opt/opengist-backup/config.yml /opt/opengist/config.yml
|
mv /opt/opengist-backup/config.yml /opt/opengist/config.yml
|
||||||
chmod +x /opt/opengist/opengist
|
msg_ok "Configured ${APP}"
|
||||||
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start opengist.service
|
systemctl start opengist
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/opengist${RELEASE}-linux-amd64.tar.gz
|
|
||||||
rm -rf /opt/opengist-backup
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -42,4 +42,4 @@ msg_ok "Completed Successfully!\n"
|
|||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}"
|
echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
58
ct/ots.sh
Normal file
58
ct/ots.sh
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: bvdberg01
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Luzifer/ots
|
||||||
|
|
||||||
|
APP="OTS"
|
||||||
|
var_tags="${var_tags:-secrets-sharer}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-3}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/ots ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Luzifer/ots/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.ots 2>/dev/null)" ]] || [[ ! -f ~/.ots ]]; then
|
||||||
|
msg_info "Stopping ${APP} Service"
|
||||||
|
systemctl stop ots
|
||||||
|
systemctl stop nginx
|
||||||
|
msg_ok "Stopped ${APP} Service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
|
||||||
|
|
||||||
|
msg_info "Stopping ${APP} Service"
|
||||||
|
systemctl start ots
|
||||||
|
systemctl start nginx
|
||||||
|
msg_ok "Stopped ${APP} Service"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}${CL}"
|
||||||
@@ -27,36 +27,33 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/outline/outline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/outline/outline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.outline ]] || [[ "${RELEASE}" != "$(cat ~/.outline)" ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop outline
|
systemctl stop outline
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Creating backup"
|
||||||
temp_file=$(mktemp)
|
|
||||||
cp /opt/outline/.env /opt
|
cp /opt/outline/.env /opt
|
||||||
rm -rf /opt/outline
|
msg_ok "Backup created"
|
||||||
curl -fsSL "https://github.com/outline/outline/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file"
|
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||||
mv outline-"${RELEASE}" /opt/outline
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt/outline
|
cd /opt/outline
|
||||||
|
mv /opt/.env /opt/outline
|
||||||
export NODE_ENV=development
|
export NODE_ENV=development
|
||||||
export NODE_OPTIONS="--max-old-space-size=3584"
|
export NODE_OPTIONS="--max-old-space-size=3584"
|
||||||
$STD yarn install --frozen-lockfile
|
$STD yarn install --frozen-lockfile
|
||||||
|
export NODE_ENV=production
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
mv /opt/.env /opt/outline
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start outline
|
systemctl start outline
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf "$temp_file"
|
|
||||||
rm -rf "$HOME"/outline-"${RELEASE}"
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -27,20 +27,35 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP"
|
|
||||||
systemctl stop overseerr
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sct/overseerr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
cd /opt/overseerr
|
if [[ ! -f ~/.overseerr ]] || [[ "${RELEASE}" != "$(cat ~/.overseerr)" ]]; then
|
||||||
output=$(git pull)
|
msg_info "Stopping ${APP} service"
|
||||||
$STD git pull
|
systemctl stop overseerr
|
||||||
if echo "$output" | grep -q "Already up to date."; then
|
msg_ok "Service stopped"
|
||||||
msg_ok " $APP is already up to date."
|
|
||||||
|
msg_info "Creating backup"
|
||||||
|
mv /opt/overseerr/config /opt/config_backup
|
||||||
|
msg_ok "Backup created"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "overseerr" "sct/overseerr" "tarball"
|
||||||
|
rm -rf /opt/overseerr/config
|
||||||
|
|
||||||
|
msg_info "Configuring ${APP} (Patience)"
|
||||||
|
cd /opt/overseerr
|
||||||
|
$STD yarn install
|
||||||
|
$STD yarn build
|
||||||
|
mv /opt/config_backup /opt/overseerr/config
|
||||||
|
msg_ok "Configured ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP} service"
|
||||||
systemctl start overseerr
|
systemctl start overseerr
|
||||||
exit
|
msg_ok "Started ${APP} service"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
$STD yarn install
|
|
||||||
$STD yarn build
|
|
||||||
systemctl start overseerr
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,4 +66,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}"
|
||||||
|
|||||||
@@ -27,10 +27,23 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
RELEASE=$(curl -fsSL https://api.github.com/repos/owncast/owncast/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
$STD apt-get -y upgrade
|
if [[ ! -f ~/.owncast ]] || [[ "${RELEASE}" != "$(cat ~/.owncast)" ]]; then
|
||||||
msg_ok "Updated $APP LXC"
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop owncast
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "owncast" "owncast/owncast" "prebuild" "latest" "/opt/owncast" "owncast*linux-64bit.zip"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start owncast
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,4 +54,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}"
|
||||||
|
|||||||
@@ -27,13 +27,28 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP"
|
|
||||||
systemctl stop pairdrop
|
RELEASE=$(curl -fsSL https://api.github.com/repos/schlagmichdoch/PairDrop/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
cd /opt/pairdrop
|
if [[ ! -f ~/.pairdrop ]] || [[ "${RELEASE}" != "$(cat ~/.pairdrop)" ]]; then
|
||||||
git pull
|
msg_info "Stopping ${APP}"
|
||||||
npm install
|
systemctl stop pairdrop
|
||||||
systemctl start pairdrop
|
msg_ok "Stopped ${APP}"
|
||||||
msg_ok "Updated $APP"
|
|
||||||
|
fetch_and_deploy_gh_release "pairdrop" "schlagmichdoch/PairDrop" "tarball"
|
||||||
|
|
||||||
|
msg_info "Configuring PairDrop"
|
||||||
|
cd /opt/pairdrop
|
||||||
|
$STD npm install
|
||||||
|
msg_ok "Configured PairDrop"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start pairdrop
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,4 +59,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
79
ct/palmr.sh
Normal file
79
ct/palmr.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/kyantech/Palmr
|
||||||
|
|
||||||
|
APP="Palmr"
|
||||||
|
var_tags="${var_tags:-files}"
|
||||||
|
var_cpu="${var_cpu:-4}"
|
||||||
|
var_ram="${var_ram:-6144}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/palmr_data ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/kyantech/palmr/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.palmr 2>/dev/null)" ]] || [[ ! -f ~/.palmr ]]; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop palmr-frontend palmr-backend
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
cp /opt/palmr/apps/server/.env /opt/palmr.env
|
||||||
|
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
|
||||||
|
|
||||||
|
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
|
||||||
|
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/palmr/apps/server
|
||||||
|
mv /opt/palmr.env /opt/palmr/apps/server/.env
|
||||||
|
$STD pnpm install
|
||||||
|
$STD pnpm dlx prisma generate
|
||||||
|
$STD pnpm dlx prisma migrate deploy
|
||||||
|
$STD pnpm dlx prisma db push
|
||||||
|
$STD pnpm build
|
||||||
|
|
||||||
|
cd /opt/palmr/apps/web
|
||||||
|
export NODE_ENV=production
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
mv ./.env.example ./.env
|
||||||
|
$STD pnpm install
|
||||||
|
$STD pnpm build
|
||||||
|
chown -R palmr:palmr /opt/palmr_data /opt/palmr
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start palmr-backend palmr-frontend
|
||||||
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "Already up to date"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
@@ -9,7 +9,7 @@ APP="Paperless-AI"
|
|||||||
var_tags="${var_tags:-ai;document}"
|
var_tags="${var_tags:-ai;document}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-12}"
|
var_disk="${var_disk:-20}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -23,32 +23,25 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/paymenter ]]; then
|
if [[ ! -d /opt/paymenter ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
|
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
|
||||||
if [[ "$CURRENT_PHP" != "8.3" ]]; then
|
if [[ "$CURRENT_PHP" != "8.3" ]]; then
|
||||||
msg_info "Migrating PHP $CURRENT_PHP to 8.3"
|
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,fpm,redis" setup_php
|
||||||
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
|
setup_composer
|
||||||
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
|
|
||||||
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get remove -y php"${CURRENT_PHP//./}"*
|
|
||||||
$STD apt-get install -y \
|
|
||||||
php8.3 \
|
|
||||||
php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,curl,zip,intl,redis,fpm}
|
|
||||||
sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
|
sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
|
||||||
$STD systemctl reload nginx
|
$STD systemctl reload nginx
|
||||||
msg_ok "Migrated PHP $CURRENT_PHP to 8.3"
|
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/paymenter/paymenter/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
RELEASE=$(curl -fsSL https://api.github.com/repos/paymenter/paymenter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f ~/.paymenter ]] || [[ "${RELEASE}" != "$(cat ~/.paymenter)" ]]; then
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
cd /opt/paymenter
|
cd /opt/paymenter
|
||||||
$STD php artisan p:upgrade --no-interaction
|
$STD php artisan p:upgrade --no-interaction
|
||||||
|
echo "${RELEASE}" >~/.paymenter
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
|||||||
@@ -27,22 +27,35 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping PhotoPrism"
|
|
||||||
sudo systemctl stop photoprism
|
|
||||||
msg_ok "Stopped PhotoPrism"
|
|
||||||
|
|
||||||
msg_info "Updating PhotoPrism"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/photoprism/photoprism/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
$STD apt-get install -y libvips42
|
if [[ "${RELEASE}" != "$(cat ~/.photoprism 2>/dev/null)" ]] || [[ ! -f ~/.photoprism ]]; then
|
||||||
curl -fsSL https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xzf - -C /opt/photoprism --strip-components=1
|
msg_info "Stopping PhotoPrism"
|
||||||
msg_ok "Updated PhotoPrism"
|
systemctl stop photoprism
|
||||||
|
msg_ok "Stopped PhotoPrism"
|
||||||
|
|
||||||
msg_info "Starting PhotoPrism"
|
fetch_and_deploy_gh_release "photoprism" "photoprism/photoprism" "prebuild" "latest" "/opt/photoprism" "*linux-amd64.tar.gz"
|
||||||
sudo systemctl start photoprism
|
|
||||||
msg_ok "Started PhotoPrism"
|
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-$(lsb_release -cs)-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
|
||||||
msg_ok "Update Successful"
|
if [[ "${LIBHEIF_URL}" != "$(cat ~/.photoprism_libheif 2>/dev/null)" ]] || [[ ! -f ~/.photoprism_libheif ]]; then
|
||||||
|
msg_info "Updating PhotoPrism LibHeif"
|
||||||
|
$STD apt-get install -y libvips42
|
||||||
|
curl -fsSL "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" -o /tmp/libheif.tar.gz
|
||||||
|
tar -xzf /tmp/libheif.tar.gz -C /usr/local
|
||||||
|
ldconfig
|
||||||
|
echo "${LIBHEIF_URL}" >~/.photoprism_libheif
|
||||||
|
msg_ok "Updated PhotoPrism LibHeif"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Starting PhotoPrism"
|
||||||
|
systemctl start photoprism
|
||||||
|
msg_ok "Started PhotoPrism"
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|||||||
@@ -27,18 +27,26 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop pocketbase
|
|
||||||
msg_ok "Stopped ${APP}"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
RELEASE=$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
/opt/pocketbase/pocketbase update
|
if [[ "${RELEASE}" != "$(cat ~/.pocketbase 2>/dev/null)" ]] || [[ ! -f ~/.pocketbase ]]; then
|
||||||
msg_ok "Updated ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop pocketbase
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
systemctl start pocketbase
|
/opt/pocketbase/pocketbase update
|
||||||
msg_ok "Started ${APP}"
|
echo "${RELEASE}" > ~/.pocketbase
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start pocketbase
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,4 +57,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/_/${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/_/${CL}"
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[[ -f /opt/${APP}_version.txt ]] && mv /opt/${APP}_version.txt ~/.pocket-id
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.pocket-id)" ]] || [[ ! -f ~/.pocket-id ]]; then
|
||||||
if [[ "$(cat /opt/${APP}_version.txt)" < "1.0.0" ]]; then
|
if [[ "$(cat ~/.pocket-id)" < "1.0.0" ]]; then
|
||||||
msg_info "Migrating ${APP} to v${RELEASE}"
|
msg_info "Migrating ${APP} to v${RELEASE}"
|
||||||
systemctl -q disable --now pocketid-backend pocketid-frontend caddy
|
systemctl -q disable --now pocketid-backend pocketid-frontend caddy
|
||||||
mv /etc/caddy/Caddyfile ~/Caddyfile.bak
|
mv /etc/caddy/Caddyfile ~/Caddyfile.bak
|
||||||
@@ -58,19 +59,19 @@ function update_script() {
|
|||||||
mv /opt/data /opt/pocket-id
|
mv /opt/data /opt/pocket-id
|
||||||
msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
|
msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
|
||||||
else
|
else
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop pocketid
|
systemctl stop pocketid
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
cp /opt/pocket-id/.env /opt/env
|
cp /opt/pocket-id/.env /opt/env
|
||||||
fi
|
fi
|
||||||
curl -fsSL "https://github.com/pocket-id/pocket-id/releases/download/v${RELEASE}/pocket-id-linux-amd64" -o /opt/pocket-id/pocket-id
|
|
||||||
chmod u+x /opt/pocket-id/pocket-id
|
fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id-linux-amd64"
|
||||||
mv /opt/env /opt/pocket-id/.env
|
mv /opt/env /opt/pocket-id/.env
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start pocketid
|
systemctl start pocketid
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@@ -27,22 +27,25 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.privatebin ]] || [[ "${RELEASE}" != "$(cat ~/.privatebin)" ]]; then
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Creating backup"
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
|
cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
|
||||||
curl -fsSL "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip")
|
msg_ok "Backup created"
|
||||||
$STD unzip ${RELEASE}.zip
|
|
||||||
rm -rf /opt/privatebin/*
|
rm -rf /opt/privatebin/*
|
||||||
mv PrivateBin-${RELEASE}/* /opt/privatebin/
|
fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
|
||||||
|
|
||||||
|
msg_info "Configuring ${APP}"
|
||||||
|
mkdir -p /opt/privatebin/data
|
||||||
mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
|
mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
|
||||||
chown -R www-data:www-data /opt/privatebin
|
chown -R www-data:www-data /opt/privatebin
|
||||||
chmod -R 0755 /opt/privatebin/data
|
chmod -R 0755 /opt/privatebin/data}
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
rm -rf ${RELEASE}.zip PrivateBin-${RELEASE}
|
|
||||||
systemctl reload nginx php8.2-fpm
|
systemctl reload nginx php8.2-fpm
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Configured ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Successfully updated"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -27,24 +27,19 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.alertmanager ]] || [[ "${RELEASE}" != "$(cat ~/.alertmanager)" ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop prometheus-alertmanager
|
systemctl stop prometheus-alertmanager
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
fetch_and_deploy_gh_release "alertmanager" "prometheus/alertmanager" "prebuild" "latest" "/usr/local/bin/" "alertmanager*linux-amd64.tar.gz"
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz" -o $(basename "https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz")
|
|
||||||
tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz
|
|
||||||
cp -rf alertmanager-${RELEASE}.linux-amd64/alertmanager alertmanager-${RELEASE}.linux-amd64/amtool /usr/local/bin/
|
|
||||||
rm -rf alertmanager-${RELEASE}.linux-amd64 alertmanager-${RELEASE}.linux-amd64.tar.gz
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start prometheus-alertmanager
|
systemctl start prometheus-alertmanager
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
48
ct/pulse.sh
48
ct/pulse.sh
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: rcourtman
|
# Author: rcourtman & vhsdream
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/rcourtman/Pulse
|
# Source: https://github.com/rcourtman/Pulse
|
||||||
|
|
||||||
@@ -23,42 +23,46 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ -d /opt/pulse-monitor ]]; then
|
|
||||||
msg_error "An old installation was detected. Please recreate the LXC from scratch (https://github.com/community-scripts/ProxmoxVE/pull/4848)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [[ ! -d /opt/pulse ]]; then
|
if [[ ! -d /opt/pulse ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f ~/.pulse ]]; then
|
||||||
|
msg_error "Old Installation Found! Please recreate the container due big changes in the software."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop pulse
|
systemctl stop pulse
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating Pulse"
|
dirs=(/opt/pulse/bin /opt/pulse/frontend-modern)
|
||||||
temp_file=$(mktemp)
|
for dir in "${dirs[@]}"; do
|
||||||
mkdir -p /opt/pulse
|
if [[ -d "$dir" ]]; then
|
||||||
rm -rf /opt/pulse/*
|
rm -rf "$dir"
|
||||||
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
|
fi
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
|
done
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated Pulse to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Setting permissions for /opt/pulse..."
|
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
|
||||||
chown -R pulse:pulse "/opt/pulse"
|
chown -R pulse:pulse /etc/pulse /opt/pulse
|
||||||
find "/opt/pulse" -type d -exec chmod 755 {} \;
|
sed -i 's|bin/pulse|pulse|' /etc/systemd/system/pulse.service
|
||||||
find "/opt/pulse" -type f -exec chmod 644 {} \;
|
systemctl daemon-reload
|
||||||
msg_ok "Set permissions."
|
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
|
||||||
|
usermod -s /usr/sbin/nologin pulse
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start pulse
|
systemctl start pulse
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Reactive-Resume"
|
APP="Reactive-Resume"
|
||||||
var_tags="${var_tags:-documents}"
|
var_tags="${var_tags:-documents}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
@@ -28,15 +28,16 @@ function update_script() {
|
|||||||
msg_error "No $APP Installation Found!"
|
msg_error "No $APP Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
|
if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
|
||||||
msg_info "Stopping services"
|
msg_info "Stopping services"
|
||||||
systemctl stop Reactive-Resume
|
systemctl stop Reactive-Resume
|
||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|
||||||
cp /opt/"$APP"/.env /opt/rxresume.env
|
cp /opt/"$APP"/.env /opt/rxresume.env
|
||||||
rm -rf /opt/"$APP"
|
|
||||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" "tarball" "latest" "/opt/Reactive-Resume"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt/"$APP"
|
cd /opt/"$APP"
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
@@ -84,9 +85,9 @@ function update_script() {
|
|||||||
rm -f "$brwsr_tmp"
|
rm -f "$brwsr_tmp"
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. $APP is already at v{$RELEASE}"
|
msg_ok "No update required. $APP is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,10 +27,11 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
|
msg_ok "There is currently no update available."
|
||||||
if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
|
# sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
|
||||||
msg_ok "There is currently no update available."
|
# if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
|
||||||
fi
|
# msg_ok "There is currently no update available."
|
||||||
|
# fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -28,34 +28,20 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if dpkg -l | grep -q "openjdk-17-jre"; then
|
|
||||||
$STD apt-get remove -y openjdk-17-jre
|
|
||||||
fi
|
|
||||||
JAVA_VERSION=21 setup_java
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.suwayomi-server 2>/dev/null)" ]] || [[ ! -f ~/.suwayomi-server ]]; then
|
||||||
msg_info "Updating $APP"
|
JAVA_VERSION=21 setup_java
|
||||||
|
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop suwayomi-server
|
systemctl stop suwayomi-server
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
fetch_and_deploy_gh_release "suwayomi-server" "Suwayomi/Suwayomi-Server" "binary"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
|
|
||||||
$STD dpkg -i "$temp_file"
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start suwayomi-server
|
systemctl start suwayomi-server
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: MickLesk (Canbiz)
|
# Author: MickLesk (Canbiz)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://tandoor.dev/
|
# Source: https://tandoor.dev/
|
||||||
@@ -27,27 +27,57 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
|
|
||||||
$STD apt-get update
|
if [[ ! -f ~/.tandoor ]]; then
|
||||||
$STD apt-get install -y python3-xmlsec
|
msg_error "v1 Installation found, please export your data and create an new LXC."
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
|
|
||||||
msg_ok "There is currently no update available."
|
RELEASE=$(curl -fsSL https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
else
|
if [[ "${RELEASE}" != "$(cat ~/.tandoor 2>/dev/null)" ]] || [[ ! -f ~/.tandoor ]]; then
|
||||||
msg_info "Updating ${APP} (Patience)"
|
msg_info "Stopping $APP"
|
||||||
export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
|
systemctl stop tandoor
|
||||||
cd /opt/tandoor/
|
msg_ok "Stopped $APP"
|
||||||
$STD pip3 install -r requirements.txt
|
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
|
msg_info "Creating Backup"
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
|
mv /opt/tandoor /opt/tandoor.bak
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
|
msg_ok "Backup Created"
|
||||||
cd /opt/tandoor/vue
|
|
||||||
|
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
||||||
|
mv /opt/.env /opt/tandoor/.env
|
||||||
|
cd /opt/tandoor
|
||||||
|
$STD uv venv .venv --python=python3
|
||||||
|
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||||
|
cd /opt/tandoor/vue3
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
|
TANDOOR_VERSION="$(curl -fsSL https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r .tag_name)"
|
||||||
|
cat <<EOF >/opt/tandoor/cookbook/version_info.py
|
||||||
|
TANDOOR_VERSION = "$TANDOOR_VERSION"
|
||||||
|
TANDOOR_REF = "bare-metal"
|
||||||
|
VERSION_INFO = []
|
||||||
|
EOF
|
||||||
cd /opt/tandoor
|
cd /opt/tandoor
|
||||||
$STD python3 version.py
|
$STD /opt/tandoor/.venv/bin/python manage.py migrate
|
||||||
systemctl restart gunicorn_tandoor
|
$STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start tandoor
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf /opt/tandoor.bak
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
49
ct/tianji.sh
49
ct/tianji.sh
@@ -29,33 +29,26 @@ function update_script() {
|
|||||||
if ! command -v jq &>/dev/null; then
|
if ! command -v jq &>/dev/null; then
|
||||||
$STD apt-get install -y jq
|
$STD apt-get install -y jq
|
||||||
fi
|
fi
|
||||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
|
||||||
msg_info "Installing Node.js 22"
|
|
||||||
$STD apt-get purge -y nodejs
|
|
||||||
rm -f /etc/apt/sources.list.d/nodesource.list
|
|
||||||
rm -f /etc/apt/keyrings/nodesource.gpg
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g pnpm@9.7.1
|
|
||||||
msg_ok "Node.js 22 installed"
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP} Service"
|
|
||||||
systemctl stop tianji
|
|
||||||
msg_ok "Stopped ${APP} Service"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
cd /opt
|
if [[ "${RELEASE}" != "$(cat ~/.tianji 2>/dev/null)" ]] || [[ ! -f ~/.tianji ]]; then
|
||||||
|
|
||||||
|
setup_uv
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||||
|
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop tianji
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Backing up data"
|
||||||
cp /opt/tianji/src/server/.env /opt/.env
|
cp /opt/tianji/src/server/.env /opt/.env
|
||||||
mv /opt/tianji /opt/tianji_bak
|
mv /opt/tianji /opt/tianji_bak
|
||||||
curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip")
|
msg_ok "Backed up data"
|
||||||
$STD unzip v${RELEASE}.zip
|
|
||||||
mv tianji-${RELEASE} /opt/tianji
|
fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
|
||||||
cd tianji
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/tianji
|
||||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||||
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
|
$STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
|
||||||
$STD pnpm build:static
|
$STD pnpm build:static
|
||||||
@@ -66,15 +59,17 @@ function update_script() {
|
|||||||
mv /opt/.env /opt/tianji/src/server/.env
|
mv /opt/.env /opt/tianji/src/server/.env
|
||||||
cd src/server
|
cd src/server
|
||||||
$STD pnpm db:migrate:apply
|
$STD pnpm db:migrate:apply
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Updated ${APP}"
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
msg_info "Updating AppRise"
|
||||||
|
$STD uv pip install apprise cryptography --system
|
||||||
|
msg_ok "Updated AppRise"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start tianji
|
systemctl start tianji
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -R /opt/v${RELEASE}.zip
|
|
||||||
rm -rf /opt/tianji_bak
|
rm -rf /opt/tianji_bak
|
||||||
rm -rf /opt/tianji/src/client
|
rm -rf /opt/tianji/src/client
|
||||||
rm -rf /opt/tianji/website
|
rm -rf /opt/tianji/website
|
||||||
|
|||||||
72
ct/tududi.sh
Normal file
72
ct/tududi.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://tududi.com
|
||||||
|
|
||||||
|
APP="Tududi"
|
||||||
|
var_tags="${var_tags:-todo-app}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/tududi ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/chrisvel/tududi/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.tududi 2>/dev/null)" ]] || [[ ! -f ~/.tududi ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop tududi
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Remove and backup Files"
|
||||||
|
cp /opt/tududi/backend/.env /opt/tududi.env
|
||||||
|
rm -rf /opt/tududi/backend/dist
|
||||||
|
msg_ok "Backup and removed Files"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/tududi
|
||||||
|
$STD npm install
|
||||||
|
export NODE_ENV=production
|
||||||
|
$STD npm run frontend:build
|
||||||
|
mv ./dist ./backend
|
||||||
|
mv ./public/locales ./backend/dist
|
||||||
|
mv ./public/favicon.* ./backend/dist
|
||||||
|
mv /opt/tududi.env /opt/tududi/.env
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start tududi
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "Already up to date"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3002${CL}"
|
||||||
@@ -9,7 +9,7 @@ APP="Vaultwarden"
|
|||||||
var_tags="${var_tags:-password-manager}"
|
var_tags="${var_tags:-password-manager}"
|
||||||
var_cpu="${var_cpu:-4}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-6144}"
|
var_ram="${var_ram:-6144}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-20}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -35,10 +35,20 @@ function update_script() {
|
|||||||
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
|
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
victoriametrics_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest" |
|
||||||
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
jq -r '.assets[].name' |
|
||||||
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
grep -E '^victoria-metrics-linux-amd64-v[0-9.]+\.tar\.gz$')
|
||||||
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
vmutils_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest" |
|
||||||
|
jq -r '.assets[].name' |
|
||||||
|
grep -E '^vmutils-linux-amd64-v[0-9.]+\.tar\.gz$')
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$victoriametrics_filename"
|
||||||
|
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$vmutils_filename"
|
||||||
|
|
||||||
|
if [[ -f /etc/systemd/system/victoriametrics-logs.service ]]; then
|
||||||
|
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||||
|
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||||
|
fi
|
||||||
chmod +x /opt/victoriametrics/*
|
chmod +x /opt/victoriametrics/*
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-4}"
|
|||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_tun="${var_tun:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
@@ -20,20 +21,20 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /etc/wireguard ]]; then
|
if [[ ! -d /etc/wireguard ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
apt-get update
|
|
||||||
apt-get -y upgrade
|
|
||||||
sleep 2
|
|
||||||
cd /etc/wgdashboard/src
|
|
||||||
./wgd.sh update
|
|
||||||
./wgd.sh start
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
apt-get update
|
||||||
|
apt-get -y upgrade
|
||||||
|
sleep 2
|
||||||
|
cd /etc/wgdashboard/src
|
||||||
|
./wgd.sh update
|
||||||
|
./wgd.sh start
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -43,4 +44,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": 8090,
|
"interface_port": 8090,
|
||||||
"documentation": "https://www.ispyconnect.com/docs/agent/about",
|
"documentation": "https://www.ispyconnect.com/docs/agent/about",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://it-tools.tech/",
|
"website": "https://sharevb-it-tools.vercel.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/it-tools.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/it-tools.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
|
"description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 6767,
|
"interface_port": 6767,
|
||||||
"documentation": "https://wiki.bazarr.media/",
|
"documentation": "https://wiki.bazarr.media/",
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 6060,
|
"interface_port": 6060,
|
||||||
"documentation": "https://github.com/adityachandelgit/BookLore",
|
"documentation": "https://booklore-app.github.io/booklore-docs/docs/getting-started",
|
||||||
"website": "https://github.com/adityachandelgit/BookLore",
|
"website": "https://github.com/booklore-app/booklore",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
|
||||||
"config_path": "/opt/booklore_storage/.env",
|
"config_path": "/opt/booklore_storage/.env",
|
||||||
"description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
|
"description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
"website": "https://docmost.com/",
|
"website": "https://docmost.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/docmost.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/docmost.webp",
|
||||||
"config_path": "/opt/docmost/.env",
|
"config_path": "/opt/docmost/.env",
|
||||||
"description": "Open-source collaborative wiki and documentation software Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.",
|
"description": "Open-source collaborative wiki and documentation software. Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/elementsynapse.sh",
|
"script": "ct/elementsynapse.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 1024,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Home Assistant Core",
|
|
||||||
"slug": "homeassistant-core",
|
|
||||||
"categories": [
|
|
||||||
16
|
|
||||||
],
|
|
||||||
"date_created": "2025-01-17",
|
|
||||||
"type": "ct",
|
|
||||||
"updateable": true,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": 8123,
|
|
||||||
"documentation": "https://www.home-assistant.io/docs/",
|
|
||||||
"website": "https://www.home-assistant.io/",
|
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
|
|
||||||
"config_path": "/root/.homeassistant",
|
|
||||||
"description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "ct/homeassistant-core.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 2,
|
|
||||||
"ram": 2048,
|
|
||||||
"hdd": 10,
|
|
||||||
"os": "ubuntu",
|
|
||||||
"version": "24.10"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
|
|
||||||
"type": "warning"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Requires PVE 8.2.2 with kernel 6.8.4-3-pve or newer",
|
|
||||||
"type": "warning"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Deprecation-Warning: This Core-based setup will be deprecated by August 2025. Use Home Assistant OS is strongly recommended to ensure long-term stability and updates.",
|
|
||||||
"type": "warning"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "config path: `/root/.homeassistant`",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 7745,
|
"interface_port": 7745,
|
||||||
"documentation": null,
|
"documentation": "https://homebox.software/en/quick-start.html",
|
||||||
"website": "https://homebox.software/en/",
|
"website": "https://homebox.software/en/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homebox.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/homebox.webp",
|
||||||
"config_path": "/opt/.env",
|
"config_path": "/opt/homebox/.env",
|
||||||
"description": "HomeBox is a simple, home-focused inventory management software. It allows users to organize and track household items by adding, updating, or deleting them. Features include optional details like warranty info, CSV import/export, custom labels, locations, and multi-tenant support for sharing with others. It\u2019s designed to be fast, easy to use, and portable.",
|
"description": "HomeBox is a simple, home-focused inventory management software. It allows users to organize and track household items by adding, updating, or deleting them. Features include optional details like warranty info, CSV import/export, custom labels, locations, and multi-tenant support for sharing with others. It\u2019s designed to be fast, easy to use, and portable.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -31,10 +31,5 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": []
|
||||||
{
|
|
||||||
"text": ".env file location: `/opt/.env`",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
40
frontend/public/json/hortusfox.json
Normal file
40
frontend/public/json/hortusfox.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "HortusFox",
|
||||||
|
"slug": "hortusfox",
|
||||||
|
"categories": [
|
||||||
|
24
|
||||||
|
],
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"date_created": "2025-08-08",
|
||||||
|
"config_path": "/opt/hortusfox/.env",
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://github.com/danielbrendel/hortusfox-web",
|
||||||
|
"website": "https://www.hortusfox.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hortusfox.webp",
|
||||||
|
"description": "HortusFox is a collaborative plant management system for plant enthusiasts. Manage, document and track your entire plant collection – self-hosted and privacy-friendly.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/hortusfox.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 5,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Login Credentials : `cat ~/hortusfox.creds`",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,13 +6,13 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 9117,
|
"interface_port": 9117,
|
||||||
"documentation": "https://github.com/Jackett/Jackett/wiki",
|
"documentation": "https://github.com/Jackett/Jackett/wiki",
|
||||||
"website": "https://github.com/Jackett/Jackett",
|
"website": "https://github.com/Jackett/Jackett",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jackett.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/jackett.webp",
|
||||||
"config_path": "",
|
"config_path": "/opt/.env",
|
||||||
"description": "Jackett supports a wide range of trackers, including popular ones like The Pirate Bay, RARBG, and Torrentz2, as well as many private trackers. It can be integrated with several BitTorrent clients, including qBittorrent, Deluge, and uTorrent, among others.",
|
"description": "Jackett supports a wide range of trackers, including popular ones like The Pirate Bay, RARBG, and Torrentz2, as well as many private trackers. It can be integrated with several BitTorrent clients, including qBittorrent, Deluge, and uTorrent, among others.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
|
|||||||
44
frontend/public/json/jeedom.json
Normal file
44
frontend/public/json/jeedom.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "Jeedom",
|
||||||
|
"slug": "jeedom",
|
||||||
|
"categories": [
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"date_created": "2025-07-29",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://doc.jeedom.com",
|
||||||
|
"config_path": "",
|
||||||
|
"website": "https://jeedom.com/",
|
||||||
|
"logo": "https://jeedom.com/_next/image?url=%2Fassets%2Fimg%2Flogo.png&w=256&q=75",
|
||||||
|
"description": "Jeedom is a home automation system that is free, open, and cloudless. It allows users to manage and automate various aspects of their homes by creating objects, installing plugins for added functionalities, and connecting to a Market account for services. It also supports direct access URLs and user management.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/jeedom.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 16,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "admin",
|
||||||
|
"password": "admin"
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Only OS packages are updateable. To update Jeedom, please use the web interface.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": "https://www.keycloak.org/documentation",
|
"documentation": "https://www.keycloak.org/documentation",
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "tmpadm",
|
||||||
"password": null
|
"password": "admin123"
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
@@ -39,6 +39,10 @@
|
|||||||
{
|
{
|
||||||
"text": "This script requires some extra steps after the installation, Please checkout the `https://github.com/community-scripts/ProxmoxVE/discussions/193`",
|
"text": "This script requires some extra steps after the installation, Please checkout the `https://github.com/community-scripts/ProxmoxVE/discussions/193`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "When updating, if you had modified cache-ispn.xml: Re-apply your changes to the new file, otherwise leave it unchanged.",
|
||||||
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8686,
|
"interface_port": 8686,
|
||||||
"documentation": null,
|
"documentation": "https://wiki.servarr.com/en/lidarr",
|
||||||
"website": "https://lidarr.audio/",
|
"website": "https://lidarr.audio/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lidarr.webp",
|
||||||
"config_path": "",
|
"config_path": "/var/lib/lidarr/config.xml",
|
||||||
"description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
|
"description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "listmonk",
|
"name": "listmonk",
|
||||||
"slug": "listmonk",
|
"slug": "listmonk",
|
||||||
"categories": [
|
"categories": [
|
||||||
0
|
0
|
||||||
],
|
],
|
||||||
"date_created": "2024-11-22",
|
"date_created": "2024-11-22",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 9000,
|
"interface_port": 9000,
|
||||||
"documentation": "https://listmonk.app/docs/",
|
"documentation": "https://listmonk.app/docs/",
|
||||||
"website": "https://listmonk.app/",
|
"website": "https://listmonk.app/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/listmonk.webp",
|
||||||
"config_path": "/opt/listmonk/config.toml",
|
"config_path": "/opt/listmonk/config.toml",
|
||||||
"description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.",
|
"description": "High performance, self-hosted, newsletter and mailing list manager with a modern dashboard.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/listmonk.sh",
|
"script": "ct/listmonk.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": "https://github.com/bluenviron/mediamtx/blob/main/README.md",
|
"documentation": "https://github.com/bluenviron/mediamtx/blob/main/README.md",
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/memos.sh",
|
"script": "ct/memos.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 1,
|
||||||
"ram": 3072,
|
"ram": 1024,
|
||||||
"hdd": 7,
|
"hdd": 3,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-10-20",
|
"date_created": "2024-10-20",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 7474,
|
"interface_port": 7474,
|
||||||
"documentation": null,
|
"documentation": "https://neo4j.com/docs/",
|
||||||
"website": "https://neo4j.com/product/neo4j-graph-database/",
|
"website": "https://neo4j.com/product/neo4j-graph-database/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/neo4j.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/neo4j.webp",
|
||||||
"config_path": "/etc/neo4j/neo4j.conf",
|
"config_path": "/etc/neo4j/neo4j.conf",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5000,
|
"interface_port": 5000,
|
||||||
"documentation": "https://docs.ombi.app/",
|
"documentation": "https://docs.ombi.app/",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 6157,
|
"interface_port": 6157,
|
||||||
"documentation": null,
|
"documentation": "https://opengist.io/docs/",
|
||||||
"website": "https://opengist.io/",
|
"website": "https://opengist.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opengist.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opengist.webp",
|
||||||
"config_path": "/opt/opengist/config.yml",
|
"config_path": "/opt/opengist/config.yml",
|
||||||
|
|||||||
40
frontend/public/json/ots.json
Normal file
40
frontend/public/json/ots.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "OTS",
|
||||||
|
"slug": "ots",
|
||||||
|
"categories": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-04",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 443,
|
||||||
|
"documentation": "https://github.com/Luzifer/ots/wiki",
|
||||||
|
"config_path": "/opt/ots/.env",
|
||||||
|
"website": "https://github.com/Luzifer/ots",
|
||||||
|
"logo": null,
|
||||||
|
"description": "One-Time-Secret sharing platform with a symmetric 256bit AES encryption in the browser.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/ots.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 512,
|
||||||
|
"hdd": 3,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "When it is in used external please use it behind reverse proxy or create your own certificates",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": "https://owncast.online/docs/",
|
"documentation": "https://owncast.online/docs/",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user