mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 10:22:50 +00:00
Compare commits
204 Commits
2025-07-23
...
2025-08-01
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
c8a107e730 | ||
|
|
404b9feef2 | ||
|
|
cc6f56fec8 | ||
|
|
89ab0f162c | ||
|
|
8846915506 | ||
|
|
ecc585ebef | ||
|
|
72dcd61244 | ||
|
|
0955ec4b7f | ||
|
|
4fb5ea4ec2 | ||
|
|
7051dfeea7 | ||
|
|
253c4f4f5b | ||
|
|
69e947246a | ||
|
|
1f1bc5f12d | ||
|
|
15e3958687 | ||
|
|
7b82199a36 | ||
|
|
01631c305a | ||
|
|
bc36a60a49 | ||
|
|
d4c59caf12 | ||
|
|
bd9c778922 | ||
|
|
63d65420a9 | ||
|
|
08e451f8de | ||
|
|
b602a9d50c | ||
|
|
759239bc7c | ||
|
|
9c50105e86 | ||
|
|
7bf69cbd07 | ||
|
|
48c63aaebb | ||
|
|
ba70f9867b | ||
|
|
c4ab8f92d5 | ||
|
|
9fd1a868cb | ||
|
|
a5d540648e | ||
|
|
3676dff24e | ||
|
|
b80ad6655f | ||
|
|
1eb0099f2a | ||
|
|
759f3f8c79 | ||
|
|
33f6d698c7 | ||
|
|
7b4bab66af | ||
|
|
5322ae69c3 | ||
|
|
27426ded94 | ||
|
|
1e035c5c85 | ||
|
|
0db8e39b40 | ||
|
|
2588029d1e | ||
|
|
67973ada07 | ||
|
|
ac6cf2af7b | ||
|
|
8900d12a9d | ||
|
|
3e2d9bdd97 | ||
|
|
07da06cb75 | ||
|
|
e176779d49 | ||
|
|
44cee5f303 | ||
|
|
22ccd36e55 | ||
|
|
c688887f43 | ||
|
|
6afa25b06b | ||
|
|
02ad46585e | ||
|
|
2c57cd815b | ||
|
|
72fc8a1880 | ||
|
|
72cf24fef4 | ||
|
|
a7a6a81596 | ||
|
|
470a2593a2 | ||
|
|
7efdc02bc4 | ||
|
|
c1ebb07416 | ||
|
|
9cf83f0ef4 | ||
|
|
57a299fe03 | ||
|
|
7272c8dd50 | ||
|
|
aa9373402e | ||
|
|
ff429ded15 | ||
|
|
5b6b55d37a | ||
|
|
e8e90ce5b5 | ||
|
|
1ae40a929b | ||
|
|
0484259f39 | ||
|
|
cadd0a53bd | ||
|
|
c82c185e4e | ||
|
|
89b2b21761 | ||
|
|
0a722a242f | ||
|
|
01be7acf10 | ||
|
|
2d66d09de2 | ||
|
|
67069cfb21 | ||
|
|
e78c590772 | ||
|
|
d956763642 | ||
|
|
af4aedf15a | ||
|
|
e25f3dce52 | ||
|
|
eda1b1aea8 | ||
|
|
16e2d2206c | ||
|
|
33a03f4b0e | ||
|
|
5867ef3288 | ||
|
|
8ef59b590a | ||
|
|
72d6fb40dc | ||
|
|
7e9d786202 | ||
|
|
ed934a21ff | ||
|
|
c9015cca20 | ||
|
|
b52e958623 | ||
|
|
1f51e96cb1 | ||
|
|
de1a93bf6d | ||
|
|
8bfb78e001 | ||
|
|
4fa4ed35cc | ||
|
|
4a050f3723 |
185
CHANGELOG.md
185
CHANGELOG.md
@@ -10,8 +10,193 @@
|
|||||||
> [!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-02
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Refactor: Cronicle [@tremor021](https://github.com/tremor021) ([#6314](https://github.com/community-scripts/ProxmoxVE/pull/6314))
|
||||||
|
- Refactor: HiveMQ [@tremor021](https://github.com/tremor021) ([#6313](https://github.com/community-scripts/ProxmoxVE/pull/6313))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: SSH authorized keys not added in Alpine install script [@enihsyou](https://github.com/enihsyou) ([#6316](https://github.com/community-scripts/ProxmoxVE/pull/6316))
|
||||||
|
- fix: removing ",gw=" from GATE var when reading/writing from/to config. [@teohz](https://github.com/teohz) ([#6177](https://github.com/community-scripts/ProxmoxVE/pull/6177))
|
||||||
|
- add 'g++' to actualbudget-install.sh [@saivishnu725](https://github.com/saivishnu725) ([#6293](https://github.com/community-scripts/ProxmoxVE/pull/6293))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [core]: create_lxc: better handling, fix lock handling, improve template validation & storage selection UX [@MickLesk](https://github.com/MickLesk) ([#6296](https://github.com/community-scripts/ProxmoxVE/pull/6296))
|
||||||
|
- ProxmoxVE 9.0 Beta: add BETA Version as test in pve_check [@MickLesk](https://github.com/MickLesk) ([#6295](https://github.com/community-scripts/ProxmoxVE/pull/6295))
|
||||||
|
- karakeep: Run workers in prod without tsx [@vhsdream](https://github.com/vhsdream) ([#6285](https://github.com/community-scripts/ProxmoxVE/pull/6285))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: grocy [@tremor021](https://github.com/tremor021) ([#6307](https://github.com/community-scripts/ProxmoxVE/pull/6307))
|
||||||
|
- Refactor: Navidrome [@tremor021](https://github.com/tremor021) ([#6300](https://github.com/community-scripts/ProxmoxVE/pull/6300))
|
||||||
|
- Refactor: Gotify [@tremor021](https://github.com/tremor021) ([#6301](https://github.com/community-scripts/ProxmoxVE/pull/6301))
|
||||||
|
- Refactor: Grafana [@tremor021](https://github.com/tremor021) ([#6306](https://github.com/community-scripts/ProxmoxVE/pull/6306))
|
||||||
|
- Refactor: Argus [@tremor021](https://github.com/tremor021) ([#6305](https://github.com/community-scripts/ProxmoxVE/pull/6305))
|
||||||
|
- n8n: refactor environmentfile [@CrazyWolf13](https://github.com/CrazyWolf13) ([#6297](https://github.com/community-scripts/ProxmoxVE/pull/6297))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- temp change the analytics url to one that works untill community one is fixed [@BramSuurdje](https://github.com/BramSuurdje) ([#6319](https://github.com/community-scripts/ProxmoxVE/pull/6319))
|
||||||
|
|
||||||
|
## 2025-07-27
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- karakeep: export DATA_DIR from user config in update [@vhsdream](https://github.com/vhsdream) ([#6283](https://github.com/community-scripts/ProxmoxVE/pull/6283))
|
||||||
|
- go2rtc: Fix release download handling [@tremor021](https://github.com/tremor021) ([#6280](https://github.com/community-scripts/ProxmoxVE/pull/6280))
|
||||||
|
|
||||||
|
## 2025-07-26
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- PiAlert: Update dependencies [@leiweibau](https://github.com/leiweibau) ([#6251](https://github.com/community-scripts/ProxmoxVE/pull/6251))
|
||||||
|
|
||||||
|
## 2025-07-25
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Cleanuparr ([#6238](https://github.com/community-scripts/ProxmoxVE/pull/6238))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: fix #6236 [@vhsdream](https://github.com/vhsdream) ([#6243](https://github.com/community-scripts/ProxmoxVE/pull/6243))
|
||||||
|
- Wizarr: use absolute path to uv [@vhsdream](https://github.com/vhsdream) ([#6221](https://github.com/community-scripts/ProxmoxVE/pull/6221))
|
||||||
|
- Immich v1.136.0 [@vhsdream](https://github.com/vhsdream) ([#6219](https://github.com/community-scripts/ProxmoxVE/pull/6219))
|
||||||
|
|
||||||
## 2025-07-24
|
## 2025-07-24
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Alpine TeamSpeak Server [@tremor021](https://github.com/tremor021) ([#6201](https://github.com/community-scripts/ProxmoxVE/pull/6201))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: Pin Version to v1.135.3 [@MickLesk](https://github.com/MickLesk) ([#6212](https://github.com/community-scripts/ProxmoxVE/pull/6212))
|
||||||
|
- Habitica: force npm to 10 [@MickLesk](https://github.com/MickLesk) ([#6192](https://github.com/community-scripts/ProxmoxVE/pull/6192))
|
||||||
|
- sabnzbd: add uv setup in update [@MickLesk](https://github.com/MickLesk) ([#6191](https://github.com/community-scripts/ProxmoxVE/pull/6191))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- SnipeIT - Update dependencies [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#6217](https://github.com/community-scripts/ProxmoxVE/pull/6217))
|
||||||
|
- Refactor: VictoriaMetrics [@tremor021](https://github.com/tremor021) ([#6210](https://github.com/community-scripts/ProxmoxVE/pull/6210))
|
||||||
|
- Headscale: Add headscale-admin UI as option [@tremor021](https://github.com/tremor021) ([#6205](https://github.com/community-scripts/ProxmoxVE/pull/6205))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Gokapi [@tremor021](https://github.com/tremor021) ([#6197](https://github.com/community-scripts/ProxmoxVE/pull/6197))
|
||||||
|
- Refactor: duplicati [@tremor021](https://github.com/tremor021) ([#6202](https://github.com/community-scripts/ProxmoxVE/pull/6202))
|
||||||
|
- Refactor: go2rtc [@tremor021](https://github.com/tremor021) ([#6198](https://github.com/community-scripts/ProxmoxVE/pull/6198))
|
||||||
|
- Refactor: Headscale [@tremor021](https://github.com/tremor021) ([#6180](https://github.com/community-scripts/ProxmoxVE/pull/6180))
|
||||||
|
|
||||||
## 2025-07-23
|
## 2025-07-23
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
58
ct/alpine-teamspeak-server.sh
Normal file
58
ct/alpine-teamspeak-server.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: tremor021 (Slaviša Arežina)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://teamspeak.com/en/
|
||||||
|
|
||||||
|
APP="Alpine-TeamSpeak-Server"
|
||||||
|
var_tags="${var_tags:-alpine;communication}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
|
||||||
|
if [[ ! -d /opt/teamspeak-server ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set +o pipefail && RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.teamspeak3-server_linux_amd64-([0-9]+.[0-9]+.[0-9]+)./\1/p' | head -1) && set -o pipefail
|
||||||
|
|
||||||
|
if [ "${RELEASE}" != "$(cat ~/.teamspeak-server)" ] || [ ! -f ~/.teamspeak-server ]; then
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
$STD service teamspeak stop
|
||||||
|
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
||||||
|
tar -xf ./ts3server.tar.bz2
|
||||||
|
cp -ru teamspeak3-server_linux_amd64/* /opt/teamspeak-server/
|
||||||
|
rm -f ~/ts3server.tar.bz*
|
||||||
|
rm -rf teamspeak3-server_linux_amd64
|
||||||
|
echo "${RELEASE}" >~/.teamspeak-server
|
||||||
|
$STD service teamspeak start
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
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 IP:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}${IP}:9987${CL}"
|
||||||
19
ct/argus.sh
19
ct/argus.sh
@@ -23,20 +23,23 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/argus ]]; then
|
if [[ ! -d /opt/argus ]]; 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/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/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 ~/.Argus 2>/dev/null)" ]] || [[ ! -f ~/.Argus ]]; then
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Stopping service"
|
||||||
rm -f /opt/argus/Argus
|
systemctl stop argus
|
||||||
curl -fsSL "https://github.com/release-argus/Argus/releases/download/${RELEASE}/Argus-${RELEASE}.linux-amd64" -o /opt/argus/Argus
|
msg_ok "Service stopped"
|
||||||
chmod +x /opt/argus/Argus
|
|
||||||
systemctl restart argus
|
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64"
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start argus
|
||||||
|
msg_ok "Service started"
|
||||||
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
else
|
else
|
||||||
msg_ok "${APP} is already up to date (${RELEASE})"
|
msg_ok "${APP} is already up to date (${RELEASE})"
|
||||||
|
|||||||
@@ -27,21 +27,23 @@ 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/autobrr/autobrr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.autobrr 2>/dev/null)" ]] || [[ ! -f ~/.autobrr ]]; then
|
||||||
msg_info "Stopping ${APP} LXC"
|
msg_info "Stopping ${APP} LXC"
|
||||||
systemctl stop autobrr.service
|
systemctl stop autobrr
|
||||||
msg_ok "Stopped ${APP} LXC"
|
msg_ok "Stopped ${APP} LXC"
|
||||||
|
|
||||||
msg_info "Updating ${APP} LXC"
|
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
||||||
rm -rf /usr/local/bin/*
|
|
||||||
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)")
|
|
||||||
tar -C /usr/local/bin -xzf autobrr*.tar.gz
|
|
||||||
rm -rf autobrr*.tar.gz
|
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP} LXC"
|
msg_info "Starting ${APP} LXC"
|
||||||
systemctl start autobrr.service
|
systemctl start autobrr
|
||||||
msg_ok "Started ${APP} LXC"
|
msg_ok "Started ${APP} LXC"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
56
ct/cleanuparr.sh
Executable file
56
ct/cleanuparr.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Lucas Zampieri (zampierilucas) | MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Cleanuparr/Cleanuparr
|
||||||
|
|
||||||
|
APP="Cleanuparr"
|
||||||
|
var_tags="${var_tags:-arr}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
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 [[ ! -f /opt/cleanuparr/Cleanuparr ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Cleanuparr/Cleanuparr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.Cleanuparr 2>/dev/null)" ]] || [[ ! -f ~/.Cleanuparr ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop cleanuparr
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "$RELEASE" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start cleanuparr
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
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}:11011${CL}"
|
||||||
@@ -56,30 +56,18 @@ function update_script() {
|
|||||||
LATEST=$(curl -fsSL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
LATEST=$(curl -fsSL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
IP=$(hostname -I | awk '{print $1}')
|
IP=$(hostname -I | awk '{print $1}')
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y git
|
git \
|
||||||
$STD apt-get install -y make
|
build-essential \
|
||||||
$STD apt-get install -y g++
|
ca-certificates \
|
||||||
$STD apt-get install -y gcc
|
gnupg2
|
||||||
$STD apt-get install -y ca-certificates
|
|
||||||
$STD apt-get install -y gnupg
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
NODE_VERSION="22" setup_nodejs
|
||||||
mkdir -p /etc/apt/keyrings
|
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle"
|
||||||
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
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
msg_info "Configuring Cronicle Worker"
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Installing Cronicle Worker"
|
|
||||||
mkdir -p /opt/cronicle
|
|
||||||
cd /opt/cronicle
|
cd /opt/cronicle
|
||||||
$STD tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1
|
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD node bin/build.js dist
|
$STD node bin/build.js dist
|
||||||
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
||||||
@@ -88,6 +76,7 @@ function update_script() {
|
|||||||
chmod 775 /etc/init.d/cronicled
|
chmod 775 /etc/init.d/cronicled
|
||||||
$STD update-rc.d cronicled defaults
|
$STD update-rc.d cronicled defaults
|
||||||
msg_ok "Installed Cronicle Worker"
|
msg_ok "Installed Cronicle Worker"
|
||||||
|
|
||||||
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
|
echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ function update_script() {
|
|||||||
mv /opt/.env /opt/docmost/.env
|
mv /opt/.env /opt/docmost/.env
|
||||||
mv /opt/data /opt/docmost/data
|
mv /opt/data /opt/docmost/data
|
||||||
$STD pnpm install --force
|
$STD pnpm install --force
|
||||||
|
$STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
|||||||
@@ -27,25 +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/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/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 ~/.duplicati)" ]] || [[ ! -f ~/.duplicati ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop duplicati
|
systemctl stop duplicati
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
curl -fsSL "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb" -o $(basename "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb")
|
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb"
|
||||||
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start duplicati
|
systemctl start duplicati
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
21
ct/go2rtc.sh
21
ct/go2rtc.sh
@@ -27,14 +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"
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/AlexxIT/go2rtc/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.go2rtc 2>/dev/null)" ]] || [[ ! -f ~/.go2rtc ]]; then
|
||||||
|
msg_info "Stopping service"
|
||||||
systemctl stop go2rtc
|
systemctl stop go2rtc
|
||||||
cd /opt/go2rtc
|
msg_ok "Stopped service"
|
||||||
rm go2rtc_linux_amd64
|
|
||||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
|
fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
|
||||||
chmod +x go2rtc_linux_amd64
|
|
||||||
|
msg_info "Starting service"
|
||||||
systemctl start go2rtc
|
systemctl start go2rtc
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Started service"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
21
ct/gokapi.sh
21
ct/gokapi.sh
@@ -27,7 +27,26 @@ 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}."
|
if [[ -f /opt/${APP}_version.txt ]]; then
|
||||||
|
mv /opt/${APP}_version ~/.gokapi
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.gokapi 2>/dev/null)" ]] || [[ ! -f ~/.gokapi ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop gokapi
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start gokapi
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
13
ct/gotify.sh
13
ct/gotify.sh
@@ -29,23 +29,18 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/gotify/server/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 ~/.gotify 2>/dev/null)" ]] || [[ ! -f ~/.gotify ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop gotify
|
systemctl stop gotify
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-amd64.zip"
|
||||||
cd /opt/gotify
|
chmod +x /opt/gotify/gotify-linux-amd64
|
||||||
curl -fsSL "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip" -o $(basename "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip")
|
|
||||||
$STD unzip -o gotify-linux-amd64.zip
|
|
||||||
rm -rf gotify-linux-amd64.zip
|
|
||||||
chmod +x gotify-linux-amd64
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start gotify
|
systemctl start gotify
|
||||||
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,6 +27,7 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
|
|||||||
20
ct/grocy.sh
20
ct/grocy.sh
@@ -27,20 +27,20 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
php_version=$(php -v | head -n 1 | awk '{print $2}')
|
|
||||||
if [[ ! $php_version == "8.3"* ]]; then
|
php_ver=$(php -v | head -n 1 | awk '{print $2}')
|
||||||
msg_info "Updating PHP"
|
if [[ ! $php_ver == "8.3"* ]]; then
|
||||||
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
|
PHP_VERSION="8.3" PHP_MODULE="sqlite3,bz2" PHP_APACHE="yes" setup_php
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl,sqlite3,fpm,gd,zip,xml}
|
|
||||||
systemctl reload apache2
|
|
||||||
apt autoremove
|
|
||||||
msg_ok "Updated PHP"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/grocy/grocy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.grocy 2>/dev/null)" ]] || [[ ! -f ~/.grocy ]]; then
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
bash /var/www/html/update.sh
|
bash /var/www/html/update.sh
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
ct/headers/alpine-teamspeak-server
Normal file
6
ct/headers/alpine-teamspeak-server
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
___ __ _ ______ _____ __ _____
|
||||||
|
/ | / /___ (_)___ ___ /_ __/__ ____ _____ ___ / ___/____ ___ ____ _/ /__ / ___/___ ______ _____ _____
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ / / _ \/ __ `/ __ `__ \\__ \/ __ \/ _ \/ __ `/ //_/_____\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ / / __/ /_/ / / / / / /__/ / /_/ / __/ /_/ / ,< /_____/__/ / __/ / | |/ / __/ /
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ \___/\__,_/_/ /_/ /_/____/ .___/\___/\__,_/_/|_| /____/\___/_/ |___/\___/_/
|
||||||
|
/_/ /_/
|
||||||
6
ct/headers/cleanuparr
Normal file
6
ct/headers/cleanuparr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
________
|
||||||
|
/ ____/ /__ ____ _____ __ ______ ____ ___________
|
||||||
|
/ / / / _ \/ __ `/ __ \/ / / / __ \/ __ `/ ___/ ___/
|
||||||
|
/ /___/ / __/ /_/ / / / / /_/ / /_/ / /_/ / / / /
|
||||||
|
\____/_/\___/\__,_/_/ /_/\__,_/ .___/\__,_/_/ /_/
|
||||||
|
/_/
|
||||||
6
ct/headers/jeedom
Normal file
6
ct/headers/jeedom
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __
|
||||||
|
/ /__ ___ ____/ /___ ____ ___
|
||||||
|
__ / / _ \/ _ \/ __ / __ \/ __ `__ \
|
||||||
|
/ /_/ / __/ __/ /_/ / /_/ / / / / / /
|
||||||
|
\____/\___/\___/\__,_/\____/_/ /_/ /_/
|
||||||
|
|
||||||
@@ -27,18 +27,18 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if [[ -f /opt/${APP}_version.txt ]]; then
|
||||||
|
mv /opt/"${APP}_version.txt" ~/.headscale
|
||||||
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/juanfont/headscale/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 ~/.headscale 2>/dev/null)" ]] || [[ ! -f ~/.headscale ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop headscale
|
systemctl stop headscale
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
|
||||||
curl -fsSL "https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb")
|
fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
|
||||||
dpkg -i headscale_${RELEASE}_linux_amd64.deb
|
|
||||||
rm headscale_${RELEASE}_linux_amd64.deb
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
# Temporary fix until headscale project resolves service getting disabled on updates.
|
# Temporary fix until headscale project resolves service getting disabled on updates.
|
||||||
|
|||||||
@@ -22,26 +22,24 @@ 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 [[ ! -d /opt/homebox ]]; 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
|
||||||
|
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}"
|
fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz"
|
||||||
cd /opt
|
chmod +x /opt/homebox/homebox
|
||||||
rm -rf homebox_bak
|
[ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
|
||||||
rm -rf /tmp/homebox.tar.gz
|
|
||||||
mv homebox homebox_bak
|
|
||||||
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
|
||||||
|
|||||||
@@ -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..."
|
||||||
|
|||||||
33
ct/immich.sh
33
ct/immich.sh
@@ -58,7 +58,8 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
msg_ok "Image-processing libraries updated"
|
msg_ok "Image-processing libraries updated"
|
||||||
fi
|
fi
|
||||||
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="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) }')
|
||||||
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}"
|
||||||
exit
|
exit
|
||||||
@@ -98,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" "latest" "$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
|
||||||
@@ -113,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
|
||||||
@@ -120,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,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"
|
||||||
@@ -150,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
|
||||||
@@ -213,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
|
||||||
}
|
}
|
||||||
@@ -247,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
|
||||||
}
|
}
|
||||||
@@ -268,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
|
||||||
}
|
}
|
||||||
@@ -287,6 +308,7 @@ 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
|
||||||
}
|
}
|
||||||
@@ -307,6 +329,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}"
|
||||||
@@ -52,6 +52,10 @@ function update_script() {
|
|||||||
rm -rf /opt/karakeep
|
rm -rf /opt/karakeep
|
||||||
msg_ok "Update prepared"
|
msg_ok "Update prepared"
|
||||||
|
|
||||||
|
if grep -q "start:prod" /etc/systemd/system/karakeep-workers.service; then
|
||||||
|
sed -i 's|^ExecStart=.*$|ExecStart=/usr/bin/node dist/index.mjs|' /etc/systemd/system/karakeep-workers.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
|
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
|
||||||
if command -v corepack >/dev/null; then
|
if command -v corepack >/dev/null; then
|
||||||
$STD corepack disable
|
$STD corepack disable
|
||||||
@@ -60,6 +64,7 @@ function update_script() {
|
|||||||
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
corepack enable
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
|
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
@@ -69,10 +74,12 @@ function update_script() {
|
|||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
cd /opt/karakeep/apps/workers
|
cd /opt/karakeep/apps/workers
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm build
|
||||||
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
|
||||||
export DATA_DIR=/opt/karakeep_data
|
DATA_DIR="$(sed -n '/^DATA_DIR/p' /etc/karakeep/karakeep.env | awk -F= '{print $2}')"
|
||||||
|
export DATA_DIR="${DATA_DIR:-/opt/karakeep_data}"
|
||||||
cd /opt/karakeep/packages/db
|
cd /opt/karakeep/packages/db
|
||||||
$STD pnpm migrate
|
$STD pnpm migrate
|
||||||
$STD pnpm store prune
|
$STD pnpm store prune
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
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" "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,23 @@ 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
|
||||||
$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}."
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -27,7 +27,26 @@ 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}."
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$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
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /opt/Meilisearch_version.txt ]]; then
|
if [[ ! -d /opt/meilisearch ]]; then
|
||||||
msg_error "No Meilisearch Installation Found!"
|
msg_error "No Meilisearch Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -38,13 +38,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 +47,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 +55,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
|
||||||
|
|||||||
39
ct/memos.sh
39
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
|
|
||||||
msg_ok "$APP is already up to date."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
systemctl stop memos
|
systemctl stop memos
|
||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
msg_ok "Service stopped"
|
||||||
cd /opt/memos/web
|
|
||||||
$STD pnpm i --frozen-lockfile
|
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||||
$STD pnpm build
|
|
||||||
cd /opt/memos
|
msg_info "Starting service"
|
||||||
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
|
systemctl start memos
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Service started"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
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,28 @@ 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
|
|
||||||
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}"
|
||||||
|
|||||||
12
ct/n8n.sh
12
ct/n8n.sh
@@ -34,6 +34,18 @@ function update_script() {
|
|||||||
echo "Installed NPM..."
|
echo "Installed NPM..."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
if [ ! -f /opt/n8n.env ]; then
|
||||||
|
sed -i 's|^Environment="N8N_SECURE_COOKIE=false"$|EnvironmentFile=/opt/n8n.env|' /etc/systemd/system/n8n.service
|
||||||
|
HOST_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
mkdir -p /opt
|
||||||
|
cat <<EOF >/opt/n8n.env
|
||||||
|
N8N_SECURE_COOKIE=false
|
||||||
|
N8N_PORT=5678
|
||||||
|
N8N_PROTOCOL=http
|
||||||
|
N8N_HOST=$HOST_IP
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD npm update -g n8n
|
$STD npm update -g n8n
|
||||||
systemctl restart n8n
|
systemctl restart n8n
|
||||||
|
|||||||
@@ -27,27 +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/navidrome/navidrome/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.navidrome 2>/dev/null)" ]] || [[ ! -f ~/.navidrome ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop navidrome
|
systemctl stop navidrome
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
fetch_and_deploy_gh_release "navidrome" "navidrome/navidrome" "binary"
|
||||||
TMP_DEB=$(mktemp --suffix=.deb)
|
|
||||||
curl -fsSL -o "${TMP_DEB}" "https://github.com/navidrome/navidrome/releases/download/${RELEASE}/navidrome_${RELEASE#v}_linux_amd64.deb"
|
|
||||||
$STD apt-get install -y "${TMP_DEB}"
|
|
||||||
echo "${RELEASE}" >/opt/"${APP}_version.txt"
|
|
||||||
msg_ok "Updated Navidrome"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start navidrome
|
systemctl start navidrome
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f "${TMP_DEB}"
|
|
||||||
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}"
|
||||||
|
|||||||
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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}."
|
||||||
|
|||||||
@@ -27,36 +27,32 @@ 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
|
||||||
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
|
||||||
$STD yarn build
|
$STD yarn build
|
||||||
mv /opt/.env /opt/outline
|
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"
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sct/overseerr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f ~/.overseerr ]] || [[ "${RELEASE}" != "$(cat ~/.overseerr)" ]]; then
|
||||||
|
msg_info "Stopping ${APP} service"
|
||||||
systemctl stop overseerr
|
systemctl stop overseerr
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
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
|
cd /opt/overseerr
|
||||||
output=$(git pull)
|
|
||||||
$STD git pull
|
|
||||||
if echo "$output" | grep -q "Already up to date."; then
|
|
||||||
msg_ok " $APP is already up to date."
|
|
||||||
systemctl start overseerr
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn build
|
$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
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Started ${APP} service"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,22 +27,35 @@ 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/photoprism/photoprism/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.photoprism 2>/dev/null)" ]] || [[ ! -f ~/.photoprism ]]; then
|
||||||
msg_info "Stopping PhotoPrism"
|
msg_info "Stopping PhotoPrism"
|
||||||
sudo systemctl stop photoprism
|
systemctl stop photoprism
|
||||||
msg_ok "Stopped PhotoPrism"
|
msg_ok "Stopped PhotoPrism"
|
||||||
|
|
||||||
msg_info "Updating PhotoPrism"
|
fetch_and_deploy_gh_release "photoprism" "photoprism/photoprism" "prebuild" "latest" "/opt/photoprism" "*linux-amd64.tar.gz"
|
||||||
|
|
||||||
|
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)
|
||||||
|
if [[ "${LIBHEIF_URL}" != "$(cat ~/.photoprism_libheif 2>/dev/null)" ]] || [[ ! -f ~/.photoprism_libheif ]]; then
|
||||||
|
msg_info "Updating PhotoPrism LibHeif"
|
||||||
$STD apt-get install -y libvips42
|
$STD apt-get install -y libvips42
|
||||||
curl -fsSL https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xzf - -C /opt/photoprism --strip-components=1
|
curl -fsSL "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" -o /tmp/libheif.tar.gz
|
||||||
msg_ok "Updated PhotoPrism"
|
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"
|
msg_info "Starting PhotoPrism"
|
||||||
sudo systemctl start photoprism
|
systemctl start photoprism
|
||||||
msg_ok "Started PhotoPrism"
|
msg_ok "Started PhotoPrism"
|
||||||
msg_ok "Update Successful"
|
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
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ function update_script() {
|
|||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
setup_uv
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
systemctl stop sabnzbd
|
systemctl stop sabnzbd
|
||||||
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
cp -r /opt/sabnzbd /opt/sabnzbd_backup_$(date +%s)
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -27,27 +27,27 @@ 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
|
#if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
|
||||||
$STD apt-get update
|
#$STD apt-get update
|
||||||
$STD apt-get install -y python3-xmlsec
|
#$STD apt-get install -y python3-xmlsec
|
||||||
fi
|
#fi
|
||||||
if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
|
#if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
|
||||||
msg_ok "There is currently no update available."
|
msg_ok "There is currently no update available."
|
||||||
else
|
#else
|
||||||
msg_info "Updating ${APP} (Patience)"
|
#msg_info "Updating ${APP} (Patience)"
|
||||||
export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
|
#export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
|
||||||
cd /opt/tandoor/
|
#cd /opt/tandoor/
|
||||||
$STD pip3 install -r requirements.txt
|
#$STD pip3 install -r requirements.txt
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
|
#$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
|
#$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
|
||||||
$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
|
#$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
|
||||||
cd /opt/tandoor/vue
|
#cd /opt/tandoor/vue
|
||||||
$STD yarn install
|
#$STD yarn install
|
||||||
$STD yarn build
|
#$STD yarn build
|
||||||
cd /opt/tandoor
|
#cd /opt/tandoor
|
||||||
$STD python3 version.py
|
#$STD python3 version.py
|
||||||
systemctl restart gunicorn_tandoor
|
#systemctl restart gunicorn_tandoor
|
||||||
msg_ok "Updated ${APP}"
|
#msg_ok "Updated ${APP}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,31 +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/VictoriaMetrics/VictoriaMetrics/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/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 ~/.victoriametrics ]] || [[ "${RELEASE}" != "$(cat ~/.victoriametrics)" ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop victoriametrics
|
systemctl stop victoriametrics
|
||||||
|
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
|
||||||
temp_dir=$(mktemp -d)
|
fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
|
||||||
cd $temp_dir
|
fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
|
||||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/victoria-metrics-linux-amd64-v${RELEASE}.tar.gz" -o $(basename "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/victoria-metrics-linux-amd64-v${RELEASE}.tar.gz")
|
fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
|
||||||
curl -fsSL "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/vmutils-linux-amd64-v${RELEASE}.tar.gz" -o $(basename "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${RELEASE}/vmutils-linux-amd64-v${RELEASE}.tar.gz")
|
|
||||||
find /opt/victoriametrics -maxdepth 1 -type f -executable -delete
|
|
||||||
tar -xf victoria-metrics-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
|
||||||
tar -xf vmutils-linux-amd64-v${RELEASE}.tar.gz -C /opt/victoriametrics
|
|
||||||
chmod +x /opt/victoriametrics/*
|
chmod +x /opt/victoriametrics/*
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start victoriametrics
|
systemctl start victoriametrics
|
||||||
|
[[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl start victoriametrics-logs
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf $temp_dir
|
|
||||||
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}"
|
||||||
|
|||||||
@@ -45,13 +45,13 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt/wizarr
|
cd /opt/wizarr
|
||||||
uv -q sync --locked
|
/usr/local/bin/uv -q sync --locked
|
||||||
$STD uv -q run pybabel compile -d app/translations
|
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
||||||
$STD npm --prefix app/static install
|
$STD npm --prefix app/static install
|
||||||
$STD npm --prefix app/static run build:css
|
$STD npm --prefix app/static run build:css
|
||||||
mkdir -p ./.cache
|
mkdir -p ./.cache
|
||||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
$STD tar -xf "$BACKUP_FILE" --directory=/
|
||||||
$STD uv -q run flask db upgrade
|
$STD /usr/local/bin/uv -q run flask db upgrade
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Calibre-Web",
|
|
||||||
"slug": "calibre-web",
|
|
||||||
"categories": [
|
|
||||||
11
|
|
||||||
],
|
|
||||||
"date_created": "2024-05-02",
|
|
||||||
"type": "ct",
|
|
||||||
"updateable": true,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": 8083,
|
|
||||||
"documentation": "https://github.com/janeczku/calibre-web/wiki",
|
|
||||||
"website": "https://github.com/janeczku/calibre-web",
|
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/calibre-web.webp",
|
|
||||||
"config_path": "",
|
|
||||||
"description": "Calibre-Web is a web app for browsing, reading and downloading eBooks stored in a Calibre database.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "ct/calibre-web.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 2,
|
|
||||||
"ram": 2048,
|
|
||||||
"hdd": 4,
|
|
||||||
"os": "debian",
|
|
||||||
"version": "12"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "admin",
|
|
||||||
"password": "admin123"
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "Add Calibre-Web Extras via `update`",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
35
frontend/public/json/cleanuparr.json
Normal file
35
frontend/public/json/cleanuparr.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Cleanuparr",
|
||||||
|
"slug": "cleanuparr",
|
||||||
|
"categories": [
|
||||||
|
14
|
||||||
|
],
|
||||||
|
"date_created": "2025-07-25",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 11011,
|
||||||
|
"documentation": "https://cleanuparr.github.io/Cleanuparr/docs/",
|
||||||
|
"website": "https://github.com/Cleanuparr/Cleanuparr",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/cleanuparr.webp",
|
||||||
|
"config_path": "/opt/cleanuparr/config",
|
||||||
|
"description": "Cleanuparr is a tool for automating the cleanup of unwanted or blocked files in Sonarr, Radarr, and supported download clients like qBittorrent, Transmission, and Deluge. It removes incomplete, blocked, or malicious downloads and can trigger replacement searches to ensure your media library stays complete and up-to-date.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/cleanuparr.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3012,
|
"interface_port": 3012,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/jhuckaby/Cronicle/blob/master/README.md",
|
||||||
"website": "https://github.com/jhuckaby/Cronicle",
|
"website": "https://github.com/jhuckaby/Cronicle",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/chronicle.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/chronicle.webp",
|
||||||
"config_path": "/opt/cronicle/conf/config.json",
|
"config_path": "/opt/cronicle/conf/config.json",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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": 80,
|
"interface_port": 80,
|
||||||
"documentation": "https://gotify.net/docs/index",
|
"documentation": "https://gotify.net/docs/index",
|
||||||
|
|||||||
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Configuration settings: `/etc/headscale/config.yaml`",
|
"text": "Configuration settings: `/etc/headscale/config.yaml`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Access headscale-admin UI via `http://<LXC-IP>/admin/`",
|
||||||
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 1883,
|
"interface_port": 1883,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/hivemq/hivemq-community-edition/wiki",
|
||||||
"website": "https://www.hivemq.com/",
|
"website": "https://www.hivemq.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hivemq.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hivemq.webp",
|
||||||
"config_path": "/opt/hivemq/conf/config.xml",
|
"config_path": "/opt/hivemq/conf/config.xml",
|
||||||
|
|||||||
@@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": "https://docs.n8n.io/",
|
"documentation": "https://docs.n8n.io/",
|
||||||
"website": "https://n8n.io/",
|
"website": "https://n8n.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/n8n.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/n8n.webp",
|
||||||
"config_path": "",
|
"config_path": "/opt/n8n.env",
|
||||||
"description": "n8n is a workflow automation tool that enables users to automate various tasks and processes by connecting various data sources, systems, and services. It provides a visual interface for building workflows, allowing users to easily define and automate complex sequences of actions, such as data processing, conditional branching, and API calls. n8n supports a wide range of integrations, making it a versatile tool for automating a variety of use cases, from simple data processing workflows to complex business processes. With its extendable architecture, n8n is designed to be easily customizable and can be adapted to meet the specific needs of different users and industries.",
|
"description": "n8n is a workflow automation tool that enables users to automate various tasks and processes by connecting various data sources, systems, and services. It provides a visual interface for building workflows, allowing users to easily define and automate complex sequences of actions, such as data processing, conditional branching, and API calls. n8n supports a wide range of integrations, making it a versatile tool for automating a variety of use cases, from simple data processing workflows to complex business processes. With its extendable architecture, n8n is designed to be easily customizable and can be adapted to meet the specific needs of different users and industries.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -31,5 +31,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "You may need to configure the `WEBHOOK_URL` in the config file when using a domain.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 4533,
|
"interface_port": 4533,
|
||||||
"documentation": null,
|
"documentation": "https://www.navidrome.org/docs/",
|
||||||
"website": "https://www.navidrome.org/",
|
"website": "https://www.navidrome.org/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/navidrome.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/navidrome.webp",
|
||||||
"config_path": "/etc/navidrome/navidrome.toml",
|
"config_path": "/etc/navidrome/navidrome.toml",
|
||||||
|
|||||||
@@ -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/",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "ONLYOFFICE Docs",
|
"name": "ONLYOFFICE Docs",
|
||||||
"slug": "onlyoffice",
|
"slug": "onlyoffice",
|
||||||
"categories": [
|
"categories": [
|
||||||
9
|
12
|
||||||
],
|
],
|
||||||
"date_created": "2025-06-24",
|
"date_created": "2025-06-24",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "OPNsense",
|
|
||||||
"slug": "opnsense-vm",
|
|
||||||
"categories": [
|
|
||||||
4,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"date_created": "2025-02-11",
|
|
||||||
"type": "vm",
|
|
||||||
"updateable": true,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": 443,
|
|
||||||
"documentation": "https://docs.opnsense.org/",
|
|
||||||
"website": "https://opnsense.org/",
|
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/opnsense.webp",
|
|
||||||
"config_path": "",
|
|
||||||
"description": "OPNsense is an open-source firewall and routing platform based on FreeBSD. It provides advanced security features, including intrusion detection, VPN support, traffic shaping, and web filtering, with an intuitive web interface for easy management. Known for its reliability and regular updates, OPNsense is a popular choice for both businesses and home networks.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "vm/opnsense-vm.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": 4,
|
|
||||||
"ram": 8192,
|
|
||||||
"hdd": 10,
|
|
||||||
"os": "FreeBSD",
|
|
||||||
"version": "latest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "root",
|
|
||||||
"password": "opnsense"
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "It will fail with default settings if there is no vmbr0 and vmbr1 on your node. Use advanced settings in this case.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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/",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
|
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-api-token`",
|
||||||
"type": "Info"
|
"type": "Info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"config_path": "/opt/salt/.env",
|
"config_path": "/opt/salt/.env",
|
||||||
"interface_port": 3000,
|
"interface_port": null,
|
||||||
"documentation": "https://docs.saltproject.io/salt/install-guide/en/latest/",
|
"documentation": "https://docs.saltproject.io/salt/install-guide/en/latest/",
|
||||||
"website": "https://saltproject.io/",
|
"website": "https://saltproject.io/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/salt.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/salt.webp",
|
||||||
|
|||||||
40
frontend/public/json/suwayomi-server.json
Normal file
40
frontend/public/json/suwayomi-server.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "Suwayomi-Server",
|
||||||
|
"slug": "suwayomi-server",
|
||||||
|
"categories": [
|
||||||
|
13
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-01",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 4567,
|
||||||
|
"documentation": "https://github.com/Suwayomi/Suwayomi-Server/wiki",
|
||||||
|
"website": "https://github.com/Suwayomi/Suwayomi-Server",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/suwayomi.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "A free and open source manga reader server that runs extensions built for Mihon (Tachiyomi).",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/suwayomiserver.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "This application can be conflicting with Kaspersky products. You maybe need to disable Kaspersky in order to use this application.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -25,6 +25,17 @@
|
|||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "alpine",
|
||||||
|
"script": "ct/alpine-teamspeak-server.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 256,
|
||||||
|
"hdd": 2,
|
||||||
|
"os": "alpine",
|
||||||
|
"version": "3.22"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
@@ -33,7 +44,11 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Use `journalctl -u teamspeak-server.service` inside LXC console to check for admin credentials!",
|
"text": "Use `journalctl -u teamspeak-server.service` inside Debian LXC console to check for admin credentials!",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Use `cat /var/log/teamspeak.err.log` inside Alpine LXC console to check for admin credentials!",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -45,7 +45,7 @@ export const navbarLinks = [
|
|||||||
export const mostPopularScripts = ["post-pve-install", "docker", "homeassistant"];
|
export const mostPopularScripts = ["post-pve-install", "docker", "homeassistant"];
|
||||||
|
|
||||||
export const analytics = {
|
export const analytics = {
|
||||||
url: "analytics.community-scripts.org",
|
url: "analytics.bramsuurd.nl",
|
||||||
token: "aefee1b9-2a12-4ac2-9d82-a63113edc62e",
|
token: "aefee1b9-2a12-4ac2-9d82-a63113edc62e",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
make
|
make \
|
||||||
|
g++
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Actual Budget"
|
msg_info "Installing Actual Budget"
|
||||||
|
|||||||
68
install/alpine-teamspeak-server-install.sh
Normal file
68
install/alpine-teamspeak-server-install.sh
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: tremor021 (Slaviša Arežina)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://teamspeak.com/en/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apk add --no-cache \
|
||||||
|
ca-certificates \
|
||||||
|
libstdc++ \
|
||||||
|
libc6-compat
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://teamspeak.com/en/downloads/#server | sed -n 's/.*teamspeak3-server_linux_amd64-\([0-9.]\+\).*/\1/p' | head -1)
|
||||||
|
msg_info "Installing Teamspeak Server v${RELEASE}"
|
||||||
|
mkdir -p /opt/teamspeak-server
|
||||||
|
cd /opt/teamspeak-server
|
||||||
|
curl -fsSL "https://files.teamspeak-services.com/releases/server/${RELEASE}/teamspeak3-server_linux_amd64-${RELEASE}.tar.bz2" -o ts3server.tar.bz2
|
||||||
|
tar xf ts3server.tar.bz2 --strip-components=1
|
||||||
|
mkdir -p logs data lib
|
||||||
|
mv *.so lib
|
||||||
|
touch data/ts3server.sqlitedb data/query_ip_blacklist.txt data/query_ip_whitelist.txt .ts3server_license_accepted
|
||||||
|
echo "${RELEASE}" >~/.teamspeak-server
|
||||||
|
msg_ok "Installed TeamSpeak Server v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Enabling TeamSpeak Server Service"
|
||||||
|
cat <<EOF >/etc/init.d/teamspeak
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
|
||||||
|
name="TeamSpeak Server"
|
||||||
|
description="TeamSpeak 3 Server"
|
||||||
|
command="/opt/teamspeak-server/ts3server_startscript.sh"
|
||||||
|
command_args="start"
|
||||||
|
output_log="/var/log/teamspeak.out.log"
|
||||||
|
error_log="/var/log/teamspeak.err.log"
|
||||||
|
command_background=true
|
||||||
|
pidfile="/run/teamspeak-server.pid"
|
||||||
|
directory="/opt/teamspeak-server"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
need net
|
||||||
|
use dns
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
chmod +x /etc/init.d/teamspeak
|
||||||
|
$STD rc-update add teamspeak default
|
||||||
|
msg_ok "Enabled TeamSpeak Server Service"
|
||||||
|
|
||||||
|
msg_info "Starting TeamSpeak Server"
|
||||||
|
$STD service teamspeak start
|
||||||
|
msg_ok "Started TeamSpeak Server"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -r ts3server.tar.bz* LICENSE* CHANGELOG doc serverquerydocs tsdns redist
|
||||||
|
$STD apk cache clean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -13,17 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64"
|
||||||
$STD apt-get install -y \
|
|
||||||
jq
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setup Argus"
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
|
|
||||||
mkdir -p /opt/argus
|
|
||||||
curl -fsSL "https://github.com/release-argus/Argus/releases/download/${RELEASE}/Argus-${RELEASE}.linux-amd64" -o /opt/argus/Argus
|
|
||||||
chmod +x /opt/argus/Argus
|
|
||||||
msg_ok "Setup Argus"
|
|
||||||
|
|
||||||
msg_info "Setup Argus Config"
|
msg_info "Setup Argus Config"
|
||||||
cat <<EOF >/opt/argus/config.yml
|
cat <<EOF >/opt/argus/config.yml
|
||||||
@@ -71,7 +61,6 @@ service:
|
|||||||
icon_link_to: https://helper-scripts.com/
|
icon_link_to: https://helper-scripts.com/
|
||||||
web_url: https://github.com/community-scripts/ProxmoxVE/releases
|
web_url: https://github.com/community-scripts/ProxmoxVE/releases
|
||||||
EOF
|
EOF
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Setup Config"
|
msg_ok "Setup Config"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -13,10 +13,9 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Autobrr"
|
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
||||||
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)")
|
|
||||||
tar -C /usr/local/bin -xzf autobrr*.tar.gz
|
msg_info "Configuring Autobrr"
|
||||||
rm -rf autobrr*.tar.gz
|
|
||||||
mkdir -p /root/.config/autobrr
|
mkdir -p /root/.config/autobrr
|
||||||
cat <<EOF >>/root/.config/autobrr/config.toml
|
cat <<EOF >>/root/.config/autobrr/config.toml
|
||||||
# https://autobrr.com/configuration/autobrr
|
# https://autobrr.com/configuration/autobrr
|
||||||
@@ -25,21 +24,24 @@ port = 7474
|
|||||||
logLevel = "DEBUG"
|
logLevel = "DEBUG"
|
||||||
sessionSecret = "$(openssl rand -base64 24)"
|
sessionSecret = "$(openssl rand -base64 24)"
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Installed Autobrr"
|
msg_ok "Configured Autobrr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/autobrr.service"
|
cat <<EOF >/etc/systemd/system/autobrr.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=autobrr service
|
Description=autobrr service
|
||||||
After=syslog.target network-online.target
|
After=syslog.target network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
ExecStart=/usr/local/bin/autobrr --config=/root/.config/autobrr/
|
ExecStart=/usr/local/bin/autobrr --config=/root/.config/autobrr/
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
systemctl enable --now -q autobrr.service
|
EOF
|
||||||
|
systemctl enable --now -q autobrr
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: tteck (tteckster)
|
|
||||||
# Co-Author: remz1337
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/janeczku/calibre-web
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apt-get install -y imagemagick
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
|
||||||
$STD apt-get -y install python3-pip
|
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
||||||
msg_ok "Installed Python Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Kepubify"
|
|
||||||
mkdir -p /opt/kepubify
|
|
||||||
cd /opt/kepubify
|
|
||||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null
|
|
||||||
chmod +x kepubify-linux-64bit
|
|
||||||
msg_ok "Installed Kepubify"
|
|
||||||
|
|
||||||
msg_info "Installing Calibre-Web"
|
|
||||||
mkdir -p /opt/calibre-web
|
|
||||||
$STD apt-get install -y calibre
|
|
||||||
$STD curl -fsSL https://github.com/janeczku/calibre-web/raw/master/library/metadata.db -o /opt/calibre-web/metadata.db
|
|
||||||
$STD pip install calibreweb
|
|
||||||
$STD pip install jsonschema
|
|
||||||
msg_ok "Installed Calibre-Web"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/cps.service
|
|
||||||
[Unit]
|
|
||||||
Description=Calibre-Web Server
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
WorkingDirectory=/opt/calibre-web
|
|
||||||
ExecStart=/usr/local/bin/cps
|
|
||||||
TimeoutStopSec=20
|
|
||||||
KillMode=process
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now cps
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
46
install/cleanuparr-install.sh
Executable file
46
install/cleanuparr-install.sh
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Lucas Zampieri (zampierilucas) | MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/Cleanuparr/Cleanuparr
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
||||||
|
[Unit]
|
||||||
|
Description=Cleanuparr Daemon
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/cleanuparr
|
||||||
|
ExecStart=/opt/cleanuparr/Cleanuparr
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
Environment="PORT=11011"
|
||||||
|
Environment="CONFIG_DIR=/opt/cleanuparr/config"
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now cleanuparr
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -24,10 +24,7 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up TemurinJDK"
|
msg_info "Setting up TemurinJDK"
|
||||||
mkdir -p /etc/apt/keyrings
|
setup_java
|
||||||
curl -fsSL "https://packages.adoptium.net/artifactory/api/gpg/key/public" | tee /etc/apt/keyrings/adoptium.asc
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y temurin-{8,11,17,21}-jre
|
$STD apt-get install -y temurin-{8,11,17,21}-jre
|
||||||
sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java
|
sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java
|
||||||
msg_ok "Installed TemurinJDK"
|
msg_ok "Installed TemurinJDK"
|
||||||
@@ -41,7 +38,7 @@ $STD apt-get install -y \
|
|||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
msg_ok "Setup Python3"
|
msg_ok "Setup Python3"
|
||||||
|
|
||||||
msg_info "Installing Craty-Controller (Patience)"
|
msg_info "Installing Crafty-Controller (Patience)"
|
||||||
useradd crafty -m -s /bin/bash
|
useradd crafty -m -s /bin/bash
|
||||||
cd /opt
|
cd /opt
|
||||||
mkdir -p /opt/crafty-controller/crafty /opt/crafty-controller/server
|
mkdir -p /opt/crafty-controller/crafty /opt/crafty-controller/server
|
||||||
|
|||||||
@@ -14,13 +14,11 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "cronicle" "jhuckaby/Cronicle"
|
||||||
|
|
||||||
msg_info "Installing Cronicle Primary Server"
|
msg_info "Configuring Cronicle Primary Server"
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
|
||||||
IP=$(hostname -I | awk '{print $1}')
|
IP=$(hostname -I | awk '{print $1}')
|
||||||
mkdir -p /opt/cronicle
|
|
||||||
cd /opt/cronicle
|
cd /opt/cronicle
|
||||||
$STD tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1
|
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD node bin/build.js dist
|
$STD node bin/build.js dist
|
||||||
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json
|
||||||
@@ -29,7 +27,7 @@ $STD /opt/cronicle/bin/control.sh start
|
|||||||
$STD cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled
|
$STD cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled
|
||||||
chmod 775 /etc/init.d/cronicled
|
chmod 775 /etc/init.d/cronicled
|
||||||
$STD update-rc.d cronicled defaults
|
$STD update-rc.d cronicled defaults
|
||||||
msg_ok "Installed Cronicle Primary Server"
|
msg_ok "Configured Cronicle Primary Server"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
|
|||||||
/opt/docmost/.env
|
/opt/docmost/.env
|
||||||
export NODE_OPTIONS="--max-old-space-size=2048"
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
$STD pnpm install
|
$STD pnpm install
|
||||||
|
$STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
msg_ok "Configured Docmost"
|
msg_ok "Configured Docmost"
|
||||||
|
|
||||||
|
|||||||
@@ -20,19 +20,16 @@ $STD apt-get install -y \
|
|||||||
libfontconfig1
|
libfontconfig1
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Duplicati"
|
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "linux-x64-gui.deb"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
|
||||||
curl -fsSL "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb" -o "duplicati-${RELEASE}-linux-x64-gui.deb"
|
|
||||||
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
|
|
||||||
echo "${RELEASE}" >/opt/Duplicati_version.txt
|
|
||||||
msg_ok "Finished setting up Duplicati"
|
|
||||||
|
|
||||||
|
msg_info "Configuring duplicati"
|
||||||
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
{
|
{
|
||||||
echo "Admin password = ${ADMINPASS}"
|
echo "Admin password = ${ADMINPASS}"
|
||||||
echo "Database encryption key = ${DECRYPTKEY}"
|
echo "Database encryption key = ${DECRYPTKEY}"
|
||||||
} >>~/duplicati.creds
|
} >>~/duplicati.creds
|
||||||
|
msg_ok "Configured duplicati"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/duplicati.service
|
cat <<EOF >/etc/systemd/system/duplicati.service
|
||||||
@@ -54,10 +51,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f duplicati-${RELEASE}-linux-x64-gui.deb
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
ca-certificates
|
ca-certificates \
|
||||||
|
git
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||||
|
|||||||
@@ -13,15 +13,10 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing go2rtc"
|
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/opt/go2rtc" "go2rtc_linux_amd64"
|
||||||
mkdir -p /opt/go2rtc
|
|
||||||
cd /opt/go2rtc
|
|
||||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o "go2rtc_linux_amd64"
|
|
||||||
chmod +x go2rtc_linux_amd64
|
|
||||||
msg_ok "Installed go2rtc"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/go2rtc.service"
|
cat <<EOF >/etc/systemd/system/go2rtc.service
|
||||||
echo "[Unit]
|
echo "[Unit]
|
||||||
Description=go2rtc service
|
Description=go2rtc service
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -32,7 +27,8 @@ User=root
|
|||||||
ExecStart=/opt/go2rtc/go2rtc_linux_amd64
|
ExecStart=/opt/go2rtc/go2rtc_linux_amd64
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
systemctl enable -q --now go2rtc
|
systemctl enable -q --now go2rtc
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
|||||||
@@ -13,14 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Gokapi"
|
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
|
||||||
|
msg_info "Configuring Gokapi"
|
||||||
mkdir -p /opt/gokapi/{data,config}
|
mkdir -p /opt/gokapi/{data,config}
|
||||||
curl -fsSL "https://github.com/Forceu/Gokapi/releases/download/$LATEST/gokapi-linux_amd64.zip" -o "gokapi-linux_amd64.zip"
|
|
||||||
$STD unzip gokapi-linux_amd64.zip -d /opt/gokapi
|
|
||||||
rm gokapi-linux_amd64.zip
|
|
||||||
chmod +x /opt/gokapi/gokapi-linux_amd64
|
chmod +x /opt/gokapi/gokapi-linux_amd64
|
||||||
msg_ok "Installed Gokapi"
|
msg_ok "Configured Gokapi"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/gokapi.service
|
cat <<EOF >/etc/systemd/system/gokapi.service
|
||||||
|
|||||||
@@ -13,16 +13,8 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Gotify"
|
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-amd64.zip"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
chmod +x /opt/gotify/gotify-linux-amd64
|
||||||
mkdir -p /opt/gotify
|
|
||||||
cd /opt/gotify
|
|
||||||
curl -fsSL "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip" -o "gotify-linux-amd64.zip"
|
|
||||||
$STD unzip gotify-linux-amd64.zip
|
|
||||||
rm -rf gotify-linux-amd64.zip
|
|
||||||
chmod +x gotify-linux-amd64
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed Gotify"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/gotify.service
|
cat <<EOF >/etc/systemd/system/gotify.service
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user