Compare commits

..

112 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
37e5f7272e Update CHANGELOG.md (#6955)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 00:14:19 +00:00
community-scripts-pr-app[bot]
5560c4eb12 Update versions.json (#6954)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-19 02:13:55 +02:00
community-scripts-pr-app[bot]
be6e2e3cb1 Update CHANGELOG.md (#6949)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 20:15:16 +00:00
CanbiZ
7086a15321 OpenWRT: add info for VLAN-aware in frontend (#6944) 2025-08-18 22:14:53 +02:00
community-scripts-pr-app[bot]
23f29b14fe Update CHANGELOG.md (#6948)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 20:12:47 +00:00
Slaviša Arežina
9aafb65a98 Refactor: Traefik (#6940)
* Refactor

* typo

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-08-18 22:12:22 +02:00
community-scripts-pr-app[bot]
296f4577d0 Update CHANGELOG.md (#6947)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 19:05:52 +00:00
Slaviša Arežina
1ea1429874 Refactor: Traccar (#6942)
* Refactor

* Update
2025-08-18 21:05:30 +02:00
community-scripts-pr-app[bot]
3f70f92fbb Update CHANGELOG.md (#6946)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 18:16:41 +00:00
CanbiZ
23c6994835 Keycloak: fix update function (#6943)
* Keycloak: fix update function

* fix issue with .keycloak file

* Update keycloak-install.sh

* remove double command

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-08-18 20:16:14 +02:00
community-scripts-pr-app[bot]
70cd362d3e Update CHANGELOG.md (#6945)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 17:59:15 +00:00
Slaviša Arežina
aed25098e5 Refactor (#6939) 2025-08-18 19:58:50 +02:00
community-scripts-pr-app[bot]
a79392149e Update .app files (#6937)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 16:29:33 +02:00
community-scripts-pr-app[bot]
f32647a3d3 Update CHANGELOG.md (#6936)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 14:26:56 +00:00
Chris
bb3c77f1b6 Immich: add message to indicate image-processing library update check (#6935) 2025-08-18 16:26:27 +02:00
community-scripts-pr-app[bot]
66a582dd09 Update CHANGELOG.md (#6932)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 12:32:22 +00:00
CanbiZ
06eb76c5d9 CopyParty (#6929)
* CopyParty

* add conf path in json

* change category to files
2025-08-18 14:32:00 +02:00
community-scripts-pr-app[bot]
a37f921aff Update versions.json (#6931)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 14:05:58 +02:00
community-scripts-pr-app[bot]
5c7e221efa Update .app files (#6925)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 09:50:06 +02:00
community-scripts-pr-app[bot]
7e00889967 Update CHANGELOG.md (#6927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:51 +00:00
community-scripts-pr-app[bot]
f1d855e331 Update CHANGELOG.md (#6926)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:40 +00:00
Gabriel David Pragin
a33bbd603d fix: unbound env variable (#6922) 2025-08-18 09:49:29 +02:00
community-scripts-pr-app[bot]
472ad02d44 Update date in json (#6924)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-18 07:49:21 +00:00
push-app-to-main[bot]
aed2fbc4b1 Twingate-Connector (#6921) 2025-08-18 09:48:59 +02:00
community-scripts-pr-app[bot]
dabb49d7eb Update CHANGELOG.md (#6920)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 06:22:34 +00:00
Slaviša Arežina
61b7b96780 Refactor (#6916) 2025-08-18 08:22:09 +02:00
community-scripts-pr-app[bot]
a72885b4c1 Update CHANGELOG.md (#6918)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 00:17:01 +00:00
community-scripts-pr-app[bot]
58fe2df6b4 Update versions.json (#6917)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-18 02:16:37 +02:00
community-scripts-pr-app[bot]
5c8bd4b124 Update versions.json (#6914)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 14:04:58 +02:00
community-scripts-pr-app[bot]
b6d7ad7c38 Update CHANGELOG.md (#6910)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 00:15:44 +00:00
community-scripts-pr-app[bot]
dd4d518052 Update versions.json (#6909)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-17 02:15:22 +02:00
community-scripts-pr-app[bot]
a99650f969 Update CHANGELOG.md (#6905)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:54:02 +00:00
Slaviša Arežina
842d73de82 Refactor (#6902) 2025-08-16 22:53:43 +02:00
community-scripts-pr-app[bot]
65f731d88b Update CHANGELOG.md (#6904)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:40:43 +00:00
Slaviša Arežina
363685d3d3 Refactor (#6900) 2025-08-16 22:40:14 +02:00
community-scripts-pr-app[bot]
ff77960aa6 Update CHANGELOG.md (#6903)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 20:39:58 +00:00
Slaviša Arežina
8d4a81d28e Update wireguard.sh (#6898) 2025-08-16 22:39:38 +02:00
community-scripts-pr-app[bot]
faf10a9d5b Update versions.json (#6895)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 14:04:52 +02:00
community-scripts-pr-app[bot]
1b931becaa Update CHANGELOG.md (#6894)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 06:31:26 +00:00
WarLord185
905198116d Tandoor Images Fix (#6892) 2025-08-16 08:31:02 +02:00
community-scripts-pr-app[bot]
8d65b4624f Update CHANGELOG.md (#6890)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 00:13:16 +00:00
community-scripts-pr-app[bot]
4e17190721 Update versions.json (#6889)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-16 02:12:57 +02:00
community-scripts-pr-app[bot]
9337e2de3c Update CHANGELOG.md (#6888)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 21:24:24 +00:00
community-scripts-pr-app[bot]
c7a7ea763b Update CHANGELOG.md (#6887)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 21:18:28 +00:00
BEN YOUSSEF Hamza
ce71992dd6 Add missing default user & pass for RabbitMQ (#6883) 2025-08-15 23:18:01 +02:00
Slaviša Arežina
f68b80fe4a Update watchyourlan.sh (#6886) 2025-08-15 22:09:56 +02:00
community-scripts-pr-app[bot]
79adb4ef9b Update CHANGELOG.md (#6881)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 12:42:29 +00:00
Chris
8dda5ac31f Immich: pin Vectorchord release; adjust extension update commands (#6878) 2025-08-15 14:42:08 +02:00
community-scripts-pr-app[bot]
7d901bc594 Update versions.json (#6879)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 14:05:10 +02:00
community-scripts-pr-app[bot]
b6dce8cff1 Update CHANGELOG.md (#6876)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:39 +00:00
community-scripts-pr-app[bot]
1b43202a79 Update CHANGELOG.md (#6875)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:26 +00:00
Slaviša Arežina
66687c0d21 Refactor: WatchYourLAN (#6871)
* Refactor

* Update
2025-08-15 12:57:16 +02:00
community-scripts-pr-app[bot]
39b9cfcffc Update CHANGELOG.md (#6874)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 10:57:07 +00:00
Slaviša Arežina
24f4d2f488 Refactor (#6872) 2025-08-15 12:57:00 +02:00
Slaviša Arežina
ee74400626 Refactor (#6869) 2025-08-15 12:56:46 +02:00
Slaviša Arežina
032709e107 Update zitadel-install.sh (#6867) 2025-08-15 09:07:01 +02:00
community-scripts-pr-app[bot]
65d60fbf1e Update CHANGELOG.md (#6868)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 06:42:28 +00:00
Chris
c7b80448dc Immich v1.138.0 (#6813) 2025-08-15 08:42:01 +02:00
community-scripts-pr-app[bot]
d7a60f6027 Update CHANGELOG.md (#6866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 00:14:39 +00:00
community-scripts-pr-app[bot]
241ae98c0b Update versions.json (#6865)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-15 02:14:16 +02:00
community-scripts-pr-app[bot]
63f24a8e61 Update CHANGELOG.md (#6862)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 21:46:40 +00:00
Chris
1cb87c4087 Immich: hotfix (#6861) 2025-08-14 23:43:58 +02:00
community-scripts-pr-app[bot]
5c22f9775e Update CHANGELOG.md (#6860)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 21:41:58 +00:00
Chris
a403da9f47 Pulse: v4.3.2+ (#6859)
- please send help
2025-08-14 23:41:36 +02:00
community-scripts-pr-app[bot]
4ce7335482 Update CHANGELOG.md (#6858)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:54:09 +00:00
Slaviša Arežina
bc52b1a7d7 Refactor: Zitadel (#6826) 2025-08-14 22:53:45 +02:00
community-scripts-pr-app[bot]
1c5ff8b26a Update CHANGELOG.md (#6857)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:52:04 +00:00
Slaviša Arežina
967b2a313f Refactor: WordPress (#6837)
* Refactor

* Update wordpress-install.sh

* Update wordpress-install.sh
2025-08-14 22:51:44 +02:00
Slaviša Arežina
50410acf8d Refactor: WireGuard (#6839)
* Refactor

* Make WGDashboard optional
2025-08-14 22:51:31 +02:00
community-scripts-pr-app[bot]
ab07afb7bd Update CHANGELOG.md (#6855)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 20:01:41 +00:00
Luis Palacios Derqui
eee083c7e0 ProxmoxVE svg logo (#6846) 2025-08-14 22:01:20 +02:00
community-scripts-pr-app[bot]
31ef36d744 Update CHANGELOG.md (#6854)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:36:49 +00:00
steadfasterX
13afa93ddf rustdeskserver: fix API version file (#6847) 2025-08-14 21:36:27 +02:00
community-scripts-pr-app[bot]
7c631eec00 Update CHANGELOG.md (#6853)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:07:04 +00:00
Slaviša Arežina
82d1a872c7 Refactor (#6832) 2025-08-14 21:06:44 +02:00
community-scripts-pr-app[bot]
0c23782485 Update CHANGELOG.md (#6852)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 19:06:12 +00:00
Slaviša Arežina
ef7c774a24 Refactor (#6829) 2025-08-14 21:05:44 +02:00
Michel Roegl-Brunner
c12ec76181 jenkins.json update (#6824) 2025-08-14 21:03:58 +02:00
community-scripts-pr-app[bot]
a805e40b04 Update CHANGELOG.md (#6851)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 18:20:45 +00:00
Chris
727b713893 Immich: quickfix #6836 (#6848) 2025-08-14 20:20:21 +02:00
community-scripts-pr-app[bot]
5cedb8469e Update CHANGELOG.md (#6845)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 16:01:29 +00:00
Slaviša Arežina
c612a4daa8 Refactor: WikiJS (#6840)
* Refactor

* Update docs URL
2025-08-14 18:01:06 +02:00
community-scripts-pr-app[bot]
87b7166924 Update CHANGELOG.md (#6842)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 15:12:51 +00:00
elvito
9b9faf7a53 Bugfix Searxng Redis replaced with Valkey in installscript (#6831) 2025-08-14 17:12:28 +02:00
community-scripts-pr-app[bot]
51a1d3c0ef Update CHANGELOG.md (#6835)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 12:15:52 +00:00
community-scripts-pr-app[bot]
8b1c2d6e68 Update CHANGELOG.md (#6834)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 12:15:35 +00:00
Slaviša Arežina
21c2ef2915 Refactor (#6822) 2025-08-14 14:15:24 +02:00
Slaviša Arežina
6796e609d0 Refactor (#6823) 2025-08-14 14:15:12 +02:00
Slaviša Arežina
723ac08abb Update (#6825) 2025-08-14 14:14:59 +02:00
community-scripts-pr-app[bot]
35c4c363a0 Update versions.json (#6830)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 14:06:10 +02:00
community-scripts-pr-app[bot]
32f99aee54 Update CHANGELOG.md (#6827)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 11:37:14 +00:00
Slaviša Arežina
1803ea0323 Refactor (#6820) 2025-08-14 13:36:50 +02:00
community-scripts-pr-app[bot]
fcf14a93c2 Update CHANGELOG.md (#6816)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 00:15:01 +00:00
community-scripts-pr-app[bot]
549e1ee01e Update versions.json (#6815)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-14 02:14:37 +02:00
community-scripts-pr-app[bot]
c4b7966303 Update CHANGELOG.md (#6811)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 21:17:21 +00:00
community-scripts-pr-app[bot]
2ed4d91f3c Update CHANGELOG.md (#6810)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 21:17:09 +00:00
CanbiZ
6a5685505a emby: fix update output (#6791) 2025-08-13 23:16:56 +02:00
CanbiZ
7cc1eaa259 archivebox: fix wrong formatted uv command (#6794) 2025-08-13 23:16:49 +02:00
community-scripts-pr-app[bot]
0db53c98e0 Update CHANGELOG.md (#6809)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 19:00:56 +00:00
community-scripts-pr-app[bot]
0faf32c4d0 Update CHANGELOG.md (#6808)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 19:00:17 +00:00
Slaviša Arežina
5c564b4bd1 Update (#6803) 2025-08-13 21:00:08 +02:00
Slaviša Arežina
5b81fc1aaa Fixed install and update functions (#6806) 2025-08-13 20:59:56 +02:00
Slaviša Arežina
047c7fe53c AgentDVR: Added update function (#6804)
* Update

* Update json
2025-08-13 20:59:43 +02:00
community-scripts-pr-app[bot]
c759269f0a Update CHANGELOG.md (#6801)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 14:58:17 +00:00
Chris
7540314f53 Palmr: fix release version parsing (#6800)
- increase RAM resources
2025-08-13 16:57:48 +02:00
community-scripts-pr-app[bot]
8d73af0106 Update CHANGELOG.md (#6798)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 13:12:09 +00:00
CanbiZ
f1cdef1f9b myspeed: fix update process if no data exist (#6795) 2025-08-13 15:11:41 +02:00
community-scripts-pr-app[bot]
79f3662636 Update CHANGELOG.md (#6797)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 13:11:26 +00:00
CanbiZ
c43e5318ae crafty-controller: fix update output (#6793) 2025-08-13 15:11:05 +02:00
community-scripts-pr-app[bot]
7e32903f10 Update CHANGELOG.md (#6796)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 12:29:18 +00:00
Slaviša Arežina
ba5c318276 GLPI: Fix timezone command (#6783)
* FIx timezone command

* Update glpi-install.sh
2025-08-13 14:28:50 +02:00
community-scripts-pr-app[bot]
634fcb5abb Update versions.json (#6790)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-13 14:05:34 +02:00
83 changed files with 1567 additions and 1072 deletions

View File

@@ -10,8 +10,125 @@
> [!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-19
## 2025-08-18
### 🆕 New Scripts
- CopyParty [@MickLesk](https://github.com/MickLesk) ([#6929](https://github.com/community-scripts/ProxmoxVE/pull/6929))
- Twingate-Connector ([#6921](https://github.com/community-scripts/ProxmoxVE/pull/6921))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Keycloak: fix update function [@MickLesk](https://github.com/MickLesk) ([#6943](https://github.com/community-scripts/ProxmoxVE/pull/6943))
- Immich: add message to indicate image-processing library update check [@vhsdream](https://github.com/vhsdream) ([#6935](https://github.com/community-scripts/ProxmoxVE/pull/6935))
- fix(uptimekuma): unbound env variable [@vidonnus](https://github.com/vidonnus) ([#6922](https://github.com/community-scripts/ProxmoxVE/pull/6922))
- #### 🔧 Refactor
- Refactor: Traefik [@tremor021](https://github.com/tremor021) ([#6940](https://github.com/community-scripts/ProxmoxVE/pull/6940))
- Refactor: Traccar [@tremor021](https://github.com/tremor021) ([#6942](https://github.com/community-scripts/ProxmoxVE/pull/6942))
- Refactor: Umami [@tremor021](https://github.com/tremor021) ([#6939](https://github.com/community-scripts/ProxmoxVE/pull/6939))
- Refactor: GoMFT [@tremor021](https://github.com/tremor021) ([#6916](https://github.com/community-scripts/ProxmoxVE/pull/6916))
### 🌐 Website
- #### 📝 Script Information
- OpenWRT: add info for VLAN-aware in frontend [@MickLesk](https://github.com/MickLesk) ([#6944](https://github.com/community-scripts/ProxmoxVE/pull/6944))
## 2025-08-17
## 2025-08-16
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Wireguard: Fix WGDashboard not updating [@tremor021](https://github.com/tremor021) ([#6898](https://github.com/community-scripts/ProxmoxVE/pull/6898))
- Tandoor Images Fix [@WarLord185](https://github.com/WarLord185) ([#6892](https://github.com/community-scripts/ProxmoxVE/pull/6892))
- #### 🔧 Refactor
- Refactor: Uptime Kuma [@tremor021](https://github.com/tremor021) ([#6902](https://github.com/community-scripts/ProxmoxVE/pull/6902))
- Refactor: Wallos [@tremor021](https://github.com/tremor021) ([#6900](https://github.com/community-scripts/ProxmoxVE/pull/6900))
## 2025-08-15
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Immich: pin Vectorchord release; adjust extension update commands [@vhsdream](https://github.com/vhsdream) ([#6878](https://github.com/community-scripts/ProxmoxVE/pull/6878))
- #### ✨ New Features
- Bump Immich to v1.138.0 [@vhsdream](https://github.com/vhsdream) ([#6813](https://github.com/community-scripts/ProxmoxVE/pull/6813))
- #### 🔧 Refactor
- Refactor: Wavelog [@tremor021](https://github.com/tremor021) ([#6869](https://github.com/community-scripts/ProxmoxVE/pull/6869))
- Refactor: WatchYourLAN [@tremor021](https://github.com/tremor021) ([#6871](https://github.com/community-scripts/ProxmoxVE/pull/6871))
- Refactor: Watcharr [@tremor021](https://github.com/tremor021) ([#6872](https://github.com/community-scripts/ProxmoxVE/pull/6872))
### 🌐 Website
- #### 📝 Script Information
- Add missing default user & pass for RabbitMQ [@hbenyoussef](https://github.com/hbenyoussef) ([#6883](https://github.com/community-scripts/ProxmoxVE/pull/6883))
## 2025-08-14
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Bugfix Searxng Redis replaced with Valkey in installscript [@elvito](https://github.com/elvito) ([#6831](https://github.com/community-scripts/ProxmoxVE/pull/6831))
- Spoolman: Use environment variables to control host and port [@tremor021](https://github.com/tremor021) ([#6825](https://github.com/community-scripts/ProxmoxVE/pull/6825))
- Pulse: v4.3.2+ [@vhsdream](https://github.com/vhsdream) ([#6859](https://github.com/community-scripts/ProxmoxVE/pull/6859))
- rustdeskserver: fix API version file [@steadfasterX](https://github.com/steadfasterX) ([#6847](https://github.com/community-scripts/ProxmoxVE/pull/6847))
- Immich: quickfix #6836 [@vhsdream](https://github.com/vhsdream) ([#6848](https://github.com/community-scripts/ProxmoxVE/pull/6848))
- #### 🔧 Refactor
- Refactor: WikiJS [@tremor021](https://github.com/tremor021) ([#6840](https://github.com/community-scripts/ProxmoxVE/pull/6840))
- Refactor: Zoraxy [@tremor021](https://github.com/tremor021) ([#6823](https://github.com/community-scripts/ProxmoxVE/pull/6823))
- Refactor: Zitadel [@tremor021](https://github.com/tremor021) ([#6826](https://github.com/community-scripts/ProxmoxVE/pull/6826))
- Refactor: WordPress [@tremor021](https://github.com/tremor021) ([#6837](https://github.com/community-scripts/ProxmoxVE/pull/6837))
- Refactor: WireGuard [@tremor021](https://github.com/tremor021) ([#6839](https://github.com/community-scripts/ProxmoxVE/pull/6839))
- Refactor: yt-dlp-webui [@tremor021](https://github.com/tremor021) ([#6832](https://github.com/community-scripts/ProxmoxVE/pull/6832))
- Refactor: Zipline [@tremor021](https://github.com/tremor021) ([#6829](https://github.com/community-scripts/ProxmoxVE/pull/6829))
- Refactor: Zot-Registry [@tremor021](https://github.com/tremor021) ([#6822](https://github.com/community-scripts/ProxmoxVE/pull/6822))
- Refactor: Zwave-JS-UI [@tremor021](https://github.com/tremor021) ([#6820](https://github.com/community-scripts/ProxmoxVE/pull/6820))
### 🧰 Maintenance
- #### 📂 Github
- ProxmoxVE svg logo [@LuisPalacios](https://github.com/LuisPalacios) ([#6846](https://github.com/community-scripts/ProxmoxVE/pull/6846))
## 2025-08-13 ## 2025-08-13
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- emby: fix update output [@MickLesk](https://github.com/MickLesk) ([#6791](https://github.com/community-scripts/ProxmoxVE/pull/6791))
- archivebox: fix wrong formatted uv command [@MickLesk](https://github.com/MickLesk) ([#6794](https://github.com/community-scripts/ProxmoxVE/pull/6794))
- Outline: Fixes for install and update procedures [@tremor021](https://github.com/tremor021) ([#6806](https://github.com/community-scripts/ProxmoxVE/pull/6806))
- Palmr: fix release version parsing // increase RAM [@vhsdream](https://github.com/vhsdream) ([#6800](https://github.com/community-scripts/ProxmoxVE/pull/6800))
- myspeed: fix update process if no data exist [@MickLesk](https://github.com/MickLesk) ([#6795](https://github.com/community-scripts/ProxmoxVE/pull/6795))
- crafty-controller: fix update output [@MickLesk](https://github.com/MickLesk) ([#6793](https://github.com/community-scripts/ProxmoxVE/pull/6793))
- GLPI: Fix timezone command [@tremor021](https://github.com/tremor021) ([#6783](https://github.com/community-scripts/ProxmoxVE/pull/6783))
- #### ✨ New Features
- Docker LXC: Add Portainer info [@tremor021](https://github.com/tremor021) ([#6803](https://github.com/community-scripts/ProxmoxVE/pull/6803))
- AgentDVR: Added update function [@tremor021](https://github.com/tremor021) ([#6804](https://github.com/community-scripts/ProxmoxVE/pull/6804))
## 2025-08-12 ## 2025-08-12
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -27,7 +27,30 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Currently we don't provide an update function for this ${APP}."
RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip')
if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
msg_info "Stopping service"
systemctl stop AgentDVR
msg_ok "Service stopped"
msg_info "Updating $APP"
cd /opt/agentdvr/agent
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
$STD unzip -o Agent_Linux64*.zip
chmod +x ./Agent
echo $RELEASE > ~/.agentdvr
rm -rf Agent_Linux64*.zip
msg_ok "Updated $APP"
msg_info "Starting service"
systemctl start AgentDVR
msg_ok "Service started"
msg_ok "Updated $APP successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -42,7 +42,7 @@ function update_script() {
msg_info "Updating ArchiveBox" msg_info "Updating ArchiveBox"
cd /opt/archivebox/data cd /opt/archivebox/data
uv --system pip install --upgrade --ignore-installed archivebox $STD uv pip install --system --upgrade --no-reinstall archivebox
sudo -u archivebox archivebox init sudo -u archivebox archivebox init
msg_ok "Updated ArchiveBox" msg_ok "Updated ArchiveBox"

View File

@@ -68,10 +68,10 @@ function update_script() {
msg_ok "Started Crafty-Controller" msg_ok "Started Crafty-Controller"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
exit
else else
msg_ok "No update required. Crafty-Controller is already at v${RELEASE}." msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
exit
} }
start start

View File

@@ -90,3 +90,5 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"

View File

@@ -41,8 +41,10 @@ function update_script() {
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
exit else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit
} }
start start

View File

@@ -28,83 +28,14 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if ! dpkg -l | grep -q "^ii.*build-essential"; then
$STD apt-get install -y build-essential
fi
if [[ ! -f "/usr/bin/node" ]]; then
mkdir -p /etc/apt/keyrings
curl -fsSL "https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
fi
RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/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 ~/.gomft)" ]] || [[ ! -f ~/.gomft ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop gomft systemctl stop gomft
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to ${RELEASE}" fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
if ! command -v git >/dev/null 2>&1; then
$STD apt-get install -y git
fi
rm -f /opt/gomft/gomft
temp_file=$(mktemp)
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
cp -rf "GoMFT-${RELEASE}"/* /opt/gomft/
cd /opt/gomft
$STD npm install
$STD npm run build
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate
export CGO_ENABLED=1
export GOOS=linux
$STD go build -o gomft
chmod +x /opt/gomft/gomft
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}"
msg_info "Cleaning Up"
rm -f "$temp_file"
rm -rf "$HOME/GoMFT-v.${RELEASE}/"
msg_ok "Cleanup Complete"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start gomft systemctl start gomft

View File

@@ -0,0 +1,6 @@
______ _ __ ______ __
/_ __/ __(_)___ ____ _____ _/ /____ / ____/___ ____ ____ ___ _____/ /_____ _____
/ / | | /| / / / __ \/ __ `/ __ `/ __/ _ \______/ / / __ \/ __ \/ __ \/ _ \/ ___/ __/ __ \/ ___/
/ / | |/ |/ / / / / / /_/ / /_/ / /_/ __/_____/ /___/ /_/ / / / / / / / __/ /__/ /_/ /_/ / /
/_/ |__/|__/_/_/ /_/\__, /\__,_/\__/\___/ \____/\____/_/ /_/_/ /_/\___/\___/\__/\____/_/
/____/

View File

@@ -52,13 +52,14 @@ function update_script() {
if [[ -f ~/.immich_library_revisions ]]; then if [[ -f ~/.immich_library_revisions ]]; then
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips") libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
cd "$BASE_DIR" cd "$BASE_DIR"
msg_info "Checking for updates to custom image-processing libraries"
$STD git pull $STD git pull
for library in "${libraries[@]}"; do for library in "${libraries[@]}"; do
compile_"$library" compile_"$library"
done done
msg_ok "Image-processing libraries updated" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="1.137.3" RELEASE="1.138.0"
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') #RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"
@@ -74,7 +75,8 @@ function update_script() {
APP_DIR="${INSTALL_DIR}/app" APP_DIR="${INSTALL_DIR}/app"
ML_DIR="${APP_DIR}/machine-learning" ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata" GEO_DIR="${INSTALL_DIR}/geodata"
VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" VCHORD_RELEASE="0.4.3"
# VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
msg_info "Updating VectorChord" msg_info "Updating VectorChord"
@@ -91,7 +93,8 @@ function update_script() {
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;" $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
systemctl restart postgresql systemctl restart postgresql
if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
$STD sudo -u postgres psql -d immich -c "REINDEX DATABASE;" $STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;"
$STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;"
fi fi
echo "$VCHORD_RELEASE" >~/.vchord_version echo "$VCHORD_RELEASE" >~/.vchord_version
rm ./vchord.deb rm ./vchord.deb
@@ -180,7 +183,10 @@ EOF
msg_ok "Updated Immich CLI" msg_ok "Updated Immich CLI"
chown -R immich:immich "$INSTALL_DIR" chown -R immich:immich "$INSTALL_DIR"
echo "$RELEASE" >/opt/"${APP}"_version.txt if [[ ! -f ~/.debian_version.bak ]]; then
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
fi
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Cleaning up" msg_info "Cleaning up"

View File

@@ -27,38 +27,50 @@ 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
msg_info "Stopping Keycloak" $STD apt-get install -y jq
systemctl stop keycloak fi
msg_ok "Stopped Keycloak"
RELEASE=$(curl -fsSL https://api.github.com/repos/keycloak/keycloak/releases/latest | jq -r '.tag_name' | sed 's/^v//')
msg_info "Updating packages" if [[ "${RELEASE}" != "$(cat ~/.keycloak_app 2>/dev/null)" ]] || [[ ! -f ~/.keycloak_app ]]; then
$STD apt-get update msg_info "Stopping Keycloak"
$STD apt-get -y upgrade systemctl stop keycloak
msg_ok "Updated packages" msg_ok "Stopped Keycloak"
msg_info "Backup old Keycloak" msg_info "Updating packages"
cd /opt $STD apt-get update
mv keycloak keycloak.old $STD apt-get -y upgrade
tar -czf keycloak_conf_backup.tar.gz keycloak.old/conf msg_ok "Updated packages"
msg_ok "Backup done"
msg_info "Backup old Keycloak"
fetch_and_deploy_gh_release "keycloak" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz" cd /opt
mv keycloak keycloak.old
msg_info "Updating ${APP}" msg_ok "Backup done"
cd /opt
mv keycloak_conf_backup.tar.gz keycloak/conf fetch_and_deploy_gh_release "keycloak_app" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
cp -r keycloak.old/providers keycloak
cp -r keycloak.old/themes keycloak msg_info "Updating ${APP}"
rm -rf keycloak.old cd /opt
msg_ok "Updated ${APP} LXC" cp -a keycloak.old/conf/. keycloak/conf/
cp -a keycloak.old/providers/. keycloak/providers/ 2>/dev/null || true
msg_info "Restarting Keycloak" cp -a keycloak.old/themes/. keycloak/themes/ 2>/dev/null || true
systemctl restart keycloak msg_ok "Updated ${APP} LXC"
msg_ok "Restarted Keycloak"
msg_info "Restarting Keycloak"
systemctl restart keycloak
msg_ok "Restarted Keycloak"
msg_info "Cleaning up"
rm -rf keycloak.old
msg_ok "Cleanup complete"
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

View File

@@ -44,7 +44,10 @@ function update_script() {
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/myspeed cd /opt/myspeed
$STD npm install $STD npm install
cp -r /opt/myspeed_bak/data/* /opt/myspeed/data/ if [[ -d /opt/myspeed_bak/data ]]; then
mkdir -p /opt/myspeed/data/
cp -r /opt/myspeed_bak/data/* /opt/myspeed/data/
fi
msg_ok "Updated ${APP} to ${RELEASE}" msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP} Service" msg_info "Starting ${APP} Service"

View File

@@ -42,11 +42,12 @@ function update_script() {
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/outline cd /opt/outline
mv /opt/.env /opt/outline
export NODE_ENV=development export NODE_ENV=development
export NODE_OPTIONS="--max-old-space-size=3584" export NODE_OPTIONS="--max-old-space-size=3584"
$STD yarn install --frozen-lockfile $STD yarn install --frozen-lockfile
export NODE_ENV=production
$STD yarn build $STD yarn build
mv /opt/.env /opt/outline
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting Services" msg_info "Starting Services"

View File

@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Palmr" APP="Palmr"
var_tags="${var_tags:-files}" var_tags="${var_tags:-files}"
var_cpu="${var_cpu:-4}" var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-6144}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
@@ -28,19 +28,18 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/kyantech/palmr/releases/latest | jq '.tag_name' | sed 's/^v//') RELEASE=$(curl -fsSL https://api.github.com/repos/kyantech/palmr/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
if [[ "${RELEASE}" != "$(cat ~/.palmr 2>/dev/null)" ]] || [[ ! -f ~/.palmr ]]; then if [[ "${RELEASE}" != "$(cat ~/.palmr 2>/dev/null)" ]] || [[ ! -f ~/.palmr ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop palmr-frontend palmr-backend systemctl stop palmr-frontend palmr-backend
msg_ok "Stopped Services" msg_ok "Stopped Services"
cp /opt/palmr/apps/server/.env /opt/palmr.env cp /opt/palmr/apps/server/.env /opt/palmr.env
rm -rf /opt/palmr
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr" fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)" PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt/palmr/apps/server cd /opt/palmr/apps/server
mv /opt/palmr.env /opt/palmr/apps/server/.env mv /opt/palmr.env /opt/palmr/apps/server/.env

View File

@@ -34,28 +34,30 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//') RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//')
SERVICE_PATH="/etc/systemd/system"
if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop pulse systemctl stop pulse*.service
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
dirs=(/opt/pulse/bin /opt/pulse/frontend-modern) if [[ -f /opt/pulse/pulse ]]; then
for dir in "${dirs[@]}"; do rm -f /opt/pulse/pulse
if [[ -d "$dir" ]]; then fi
rm -rf "$dir"
fi
done
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz" fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
chown -R pulse:pulse /etc/pulse /opt/pulse chown -R pulse:pulse /etc/pulse /opt/pulse
sed -i 's|bin/pulse|pulse|' /etc/systemd/system/pulse.service if [[ -f "$SERVICE_PATH"/pulse.service ]]; then
mv "$SERVICE_PATH"/pulse.service "$SERVICE_PATH"/pulse-backend.service
fi
sed -i -e 's|pulse/pulse|pulse/bin/pulse|' \
-e 's/^Environment="API.*$//' "$SERVICE_PATH"/pulse-backend.service
systemctl daemon-reload systemctl daemon-reload
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
usermod -s /usr/sbin/nologin pulse usermod -s /usr/sbin/nologin pulse
fi fi
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start pulse systemctl start pulse-backend
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"

View File

@@ -34,7 +34,7 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ "${APIRELEASE}" != "$(cat /opt/rustdesk-api.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]] || [[ ! -f /opt/rustdesk-api.txt ]]; then if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ "${APIRELEASE}" != "$(cat /opt/rustdeskapi_version.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]] || [[ ! -f /opt/rustdeskapi_version.txt ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop rustdesk-hbbr systemctl stop rustdesk-hbbr
systemctl stop rustdesk-hbbs systemctl stop rustdesk-hbbs

View File

@@ -27,7 +27,42 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Currently we don't provide an update function for this ${APP}."
RELEASE=$(curl -fsSL https://api.github.com/repos/traccar/traccar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.traccar)" ]] || [[ ! -f ~/.traccar ]]; then
msg_info "Stopping service"
systemctl stop traccar
msg_ok "Service stopped"
msg_info "Creating backup"
mv /opt/traccar/conf/traccar.xml /opt
[[ -d /opt/traccar/data ]] && mv /opt/traccar/data /opt
[[ -d /opt/traccar/media ]] && mv /opt/traccar/media /opt
msg_ok "Backup created"
rm -rf /opt/traccar
fetch_and_deploy_gh_release "traccar" "traccar/traccar" "prebuild" "latest" "/opt/traccar" "traccar-linux-64*.zip"
cd /opt/traccar
$STD ./traccar.run
msg_info "Restoring data"
mv /opt/traccar.xml /opt/traccar/conf
[[ -d /opt/data ]] && mv /opt/data /opt/traccar
[[ -d /opt/media ]] && mv /opt/media /opt/traccar
msg_ok "Data restored"
msg_info "Starting ${APP}"
systemctl start traccar
msg_ok "Started ${APP}"
msg_info "Cleaning up"
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
msg_ok "Cleaned up"
msg_ok "Successfully updated ${APP}"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }
@@ -38,4 +73,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8082${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8082${CL}"

View File

@@ -27,16 +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/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1)
msg_info "Updating $APP LXC" RELEASE=$(curl -fsSL https://api.github.com/repos/traefik/traefik/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 ~/.traefik)" ]] || [[ ! -f ~/.traefik ]]; then
curl -fsSL "https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz" -o $(basename "https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz") msg_info "Stopping service"
tar -C /tmp -xzf traefik*.tar.gz systemctl stop traefik
mv /tmp/traefik /usr/bin/ msg_ok "Service stopped"
rm -rf traefik*.tar.gz
systemctl restart traefik.service fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP LXC" msg_info "Starting ${APP}"
systemctl start traefik
msg_ok "Started ${APP}"
msg_ok "Successfully updated ${APP}"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

44
ct/twingate-connector.sh Normal file
View File

@@ -0,0 +1,44 @@
#!/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: twingate-andrewb
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.twingate.com/docs/
APP="Twingate-Connector"
var_tags="${var_tags:-network;connector;twingate}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-3}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
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 /lib/systemd/system/twingate-connector.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP}"
$STD apt update
$STD apt install -yq twingate-connector
$STD systemctl restart twingate-connector
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "All Finished! If you need to update your access or refresh tokens, they can be found in /etc/twingate/connector.conf"

View File

@@ -32,11 +32,12 @@ function update_script() {
systemctl stop umami systemctl stop umami
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball"
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
cd /opt/umami cd /opt/umami
git pull $STD yarn install
yarn install $STD yarn run build
yarn build
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
@@ -54,4 +55,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -34,27 +34,29 @@ function update_script() {
echo "Installed NPM..." echo "Installed NPM..."
fi fi
fi fi
LATEST=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
msg_info "Stopping ${APP}"
$STD sudo systemctl stop uptime-kuma
msg_ok "Stopped ${APP}"
cd /opt/uptime-kuma RELEASE=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ ! -f ~/.uptime-kuma ]] || [[ "${RELEASE}" != "$(cat ~/.uptime-kuma)" ]]; then
msg_info "Stopping ${APP}"
$STD systemctl stop uptime-kuma
msg_ok "Stopped ${APP}"
msg_info "Pulling ${APP} ${LATEST}" fetch_and_deploy_gh_release "uptime-kuma" "louislam/uptime-kuma" "tarball"
$STD git fetch --all cd /opt/uptime-kuma
$STD git checkout $LATEST --force
msg_ok "Pulled ${APP} ${LATEST}"
msg_info "Updating ${APP} to ${LATEST}" msg_info "Updating ${APP} to ${RELEASE}"
$STD npm install --production $STD npm install --omit dev
$STD npm run download-dist $STD npm run download-dist
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
$STD sudo systemctl start uptime-kuma $STD sudo systemctl start uptime-kuma
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -27,17 +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/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/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 ~/.wallos ]] || [[ "${RELEASE}" != "$(cat ~/.wallos)" ]]; then
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating backup"
cd /opt
curl -fsSL "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip")
mkdir -p /opt/logos mkdir -p /opt/logos
mv /opt/wallos/db/wallos.db /opt/wallos.db mv /opt/wallos/db/wallos.db /opt/wallos.db
mv /opt/wallos/images/uploads/logos /opt/logos/ mv /opt/wallos/images/uploads/logos /opt/logos/
$STD unzip v${RELEASE}.zip msg_ok "Backup created"
rm -rf /opt/wallos rm -rf /opt/wallos
mv Wallos-${RELEASE} /opt/wallos fetch_and_deploy_gh_release "wallos" "ellite/Wallos" "tarball"
msg_info "Configuring ${APP}"
rm -rf /opt/wallos/db/wallos.empty.db rm -rf /opt/wallos/db/wallos.empty.db
mv /opt/wallos.db /opt/wallos/db/wallos.db mv /opt/wallos.db /opt/wallos/db/wallos.db
mv /opt/logos/* /opt/wallos/images/uploads/logos mv /opt/logos/* /opt/wallos/images/uploads/logos
@@ -48,16 +50,12 @@ function update_script() {
chmod -R 755 /opt/wallos chmod -R 755 /opt/wallos
mkdir -p /var/log/cron mkdir -p /var/log/cron
$STD curl http://localhost/endpoints/db/migrate.php $STD curl http://localhost/endpoints/db/migrate.php
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Configured ${APP}"
msg_ok "Updated ${APP}"
msg_info "Reload Apache2" msg_info "Reload Apache2"
systemctl reload apache2 systemctl reload apache2
msg_ok "Apache2 Reloaded" msg_ok "Apache2 Reloaded"
msg_info "Cleaning Up"
rm -R /opt/v${RELEASE}.zip
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}"

View File

@@ -27,22 +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/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/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 ~/.watcharr)" ]] || [[ ! -f ~/.watcharr ]]; then
msg_info "Updating $APP" msg_info "Updating $APP"
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop watcharr systemctl stop watcharr
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
temp_file=$(mktemp)
temp_folder=$(mktemp -d)
curl -fsSL "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
tar -xzf "$temp_file" -C "$temp_folder"
rm -f /opt/watcharr/server/watcharr rm -f /opt/watcharr/server/watcharr
rm -rf /opt/watcharr/server/ui rm -rf /opt/watcharr/server/ui
cp -rf ${temp_folder}/Watcharr-${RELEASE}/* /opt/watcharr fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
msg_info "Updating $APP to v${RELEASE}"
cd /opt/watcharr cd /opt/watcharr
export GOOS=linux export GOOS=linux
$STD npm i $STD npm i
@@ -57,12 +55,6 @@ function update_script() {
systemctl start watcharr systemctl start watcharr
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f ${temp_file}
rm -rf ${temp_folder}
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -27,17 +27,28 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP"
systemctl stop watchyourlan.service RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cp -R /data/config.yaml config.yaml if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4) msg_info "Stopping service"
curl -fsSL "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb") systemctl stop watchyourlan.service
dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb msg_ok "Service stopped"
cp -R config.yaml /data/config.yaml
sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service cp -R /data/config.yaml ~/config.yaml
rm watchyourlan_${RELEASE}_linux_amd64.deb config.yaml fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
systemctl enable -q --now watchyourlan cp -R config.yaml /data/config.yaml
msg_ok "Updated $APP" sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
msg_info "Cleaning up"
rm ~/config.yaml
msg_ok "Cleaned up"
msg_info "Starting service"
systemctl enable -q --now watchyourlan
msg_ok "Service started"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }

View File

@@ -27,23 +27,26 @@ 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/wavelog/wavelog/releases/latest | grep "tag_name" | cut -d '"' -f 4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
if [[ ! -f ~/.wavelog ]] || [[ "${RELEASE}" != "$(cat ~/.wavelog)" ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop apache2 systemctl stop apache2
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Creating backup"
cp /opt/wavelog/application/config/config.php /opt/config.php cp /opt/wavelog/application/config/config.php /opt/config.php
cp /opt/wavelog/application/config/database.php /opt/database.php cp /opt/wavelog/application/config/database.php /opt/database.php
cp -r /opt/wavelog/userdata /opt/userdata cp -r /opt/wavelog/userdata /opt/userdata
if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then
cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
fi fi
curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip") msg_ok "Backup created"
$STD unzip ${RELEASE}.zip
rm -rf /opt/wavelog rm -rf /opt/wavelog
mv wavelog-${RELEASE}/ /opt/wavelog fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball"
msg_info "Updating ${APP} to ${RELEASE}"
rm -rf /opt/wavelog/install rm -rf /opt/wavelog/install
mv /opt/config.php /opt/wavelog/application/config/config.php mv /opt/config.php /opt/wavelog/application/config/config.php
mv /opt/database.php /opt/wavelog/application/config/database.php mv /opt/database.php /opt/wavelog/application/config/database.php
@@ -55,16 +58,12 @@ function update_script() {
chown -R www-data:www-data /opt/wavelog/ chown -R www-data:www-data /opt/wavelog/
find /opt/wavelog/ -type d -exec chmod 755 {} \; find /opt/wavelog/ -type d -exec chmod 755 {} \;
find /opt/wavelog/ -type f -exec chmod 664 {} \; find /opt/wavelog/ -type f -exec chmod 664 {} \;
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting Services" msg_info "Starting Services"
systemctl start apache2 systemctl start apache2
msg_ok "Started Services" msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf ${RELEASE}.zip
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}"

View File

@@ -27,8 +27,9 @@ 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/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/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 ~/.wikijs)" ]] || [[ ! -f ~/.wikijs ]]; then
msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite." msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false") SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")
if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then
@@ -47,13 +48,9 @@ function update_script() {
cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup
msg_ok "Backed up Data" msg_ok "Backed up Data"
msg_info "Updating ${APP}"
rm -rf /opt/wikijs/* rm -rf /opt/wikijs/*
cd /opt/wikijs fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz"
curl -fsSL "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" -o $(basename "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz")
tar -xzf wiki-js.tar.gz
msg_ok "Updated ${APP}"
msg_info "Restoring Data" msg_info "Restoring Data"
cp -R /opt/wikijs-backup/* /opt/wikijs cp -R /opt/wikijs-backup/* /opt/wikijs
$SQLITE_INSTALL && $STD npm rebuild sqlite3 $SQLITE_INSTALL && $STD npm rebuild sqlite3
@@ -64,9 +61,9 @@ function update_script() {
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -rf /opt/wikijs/wiki-js.tar.gz
rm -rf /opt/wikijs-backup rm -rf /opt/wikijs-backup
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
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}"

View File

@@ -30,10 +30,12 @@ function update_script() {
fi fi
apt-get update apt-get update
apt-get -y upgrade apt-get -y upgrade
sleep 2 if [[ -d /etc/wgdashboard ]]; then
cd /etc/wgdashboard/src sleep 2
./wgd.sh update cd /etc/wgdashboard/src
./wgd.sh start ./wgd.sh update
./wgd.sh start
fi
exit exit
} }
@@ -43,5 +45,5 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}" echo -e "${INFO}${YW}Access WGDashboard (if installed) using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"

View File

@@ -28,21 +28,20 @@ function update_script() {
exit exit
fi fi
msg_info "Updating yt-dlp"
$STD yt-dlp -U
msg_ok "Updated yt-dlp"
RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/yt-dlp-webui_version.txt)" ]] || [[ ! -f /opt/yt-dlp-webui_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.yt-dlp-webui)" ]] || [[ ! -f ~/.yt-dlp-webui ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop yt-dlp-webui systemctl stop yt-dlp-webui
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating yt-dlp"
$STD yt-dlp -U
msg_ok "Updated yt-dlp"
rm -rf /usr/local/bin/yt-dlp-webui rm -rf /usr/local/bin/yt-dlp-webui
curl -fsSL "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -o "/usr/local/bin/yt-dlp-webui" fetch_and_deploy_gh_release "yt-dlp-webui" "marcopiovanello/yt-dlp-web-ui" "singlefile" "latest" "/usr/local/bin" "yt-dlp-webui_linux-amd64"
chmod +x /usr/local/bin/yt-dlp-webui
msg_ok "Updated $APP LXC"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start yt-dlp-webui systemctl start yt-dlp-webui
@@ -60,4 +59,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3033${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3033${CL}"

View File

@@ -32,36 +32,32 @@ function update_script() {
$STD npm install -g pnpm@latest $STD npm install -g pnpm@latest
msg_ok "Installed pnpm" msg_ok "Installed pnpm"
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/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 ~/.zipline ]] || [[ "${RELEASE}" != "$(cat ~/.zipline)" ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop zipline systemctl stop zipline
msg_ok "${APP} Stopped" msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/zipline/.env /opt/
mkdir -p /opt/zipline-uploads mkdir -p /opt/zipline-uploads
if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then
cp -R /opt/zipline/uploads/* /opt/zipline-uploads/ cp -R /opt/zipline/uploads/* /opt/zipline-uploads/
fi fi
curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip") cp /opt/zipline/.env /opt/
$STD unzip v"${RELEASE}".zip
rm -R /opt/zipline rm -R /opt/zipline
mv zipline-"${RELEASE}" /opt/zipline fetch_and_deploy_gh_release "zipline" "diced/zipline" "tarball"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/zipline cd /opt/zipline
mv /opt/.env /opt/zipline/.env mv /opt/.env /opt/zipline/.env
$STD pnpm install $STD pnpm install
$STD pnpm build $STD pnpm build
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start zipline systemctl start zipline
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -rf v"${RELEASE}".zip
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}"

View File

@@ -27,27 +27,24 @@ 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/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ ! -f ~/.zitadel ]] || [[ "${RELEASE}" != "$(cat ~/.zitadel)" ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop zitadel systemctl stop zitadel
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
rm -f /usr/local/bin/zitadel
fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-amd64.tar.gz"
msg_info "Updating $APP to ${RELEASE}" msg_info "Updating $APP to ${RELEASE}"
cd /tmp
curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
mv zitadel-linux-amd64/zitadel /usr/local/bin
$STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start zitadel systemctl start zitadel
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf /tmp/zitadel-linux-amd64
msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -27,17 +27,21 @@ 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/tobychui/zoraxy/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 RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Updating $APP to ${RELEASE}" if [[ ! -f ~/.zoraxy ]] || [[ "${RELEASE}" != "$(cat ~/.zoraxy)" ]]; then
msg_info "Stopping service"
systemctl stop zoraxy systemctl stop zoraxy
curl -fsSL "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64" -o $(basename "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64") msg_ok "Service stopped"
rm -rf /opt/zoraxy/zoraxy rm -rf /opt/zoraxy/zoraxy
mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy fetch_and_deploy_gh_release "zoraxy" "tobychui/zoraxy" "singlefile" "latest" "/opt/zoraxy" "zoraxy_linux_amd64"
chmod +x /opt/zoraxy/zoraxy
msg_info "Starting service"
systemctl start zoraxy systemctl start zoraxy
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Service started"
msg_ok "Updated $APP"
msg_ok "Updated successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -23,25 +23,29 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/bin/zot ]]; then if [[ ! -f /usr/bin/zot ]]; 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/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}') RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
msg_info "Stopping Zot service" msg_info "Stopping Zot service"
systemctl stop zot systemctl stop zot
msg_ok "Stopped Zot service" msg_ok "Stopped Zot service"
msg_info "Updating Zot to ${RELEASE}" rm -f /usr/bin/zot
curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot fetch_and_deploy_gh_release "zot" "project-zot/zot" "singlefile" "latest" "/usr/bin" "zot-linux-amd64"
chmod +x /usr/bin/zot
msg_info "Configuring Zot Registry"
chown root:root /usr/bin/zot chown root:root /usr/bin/zot
echo "${RELEASE}" >~/.${APP} msg_ok "Configured Zot Registry"
systemctl restart zot
msg_ok "Updated Zot to ${RELEASE}" msg_info "Starting service"
systemctl start zot
msg_ok "Service started"
msg_ok "Updated successfuly"
else else
msg_ok "Zot is already up to date (${RELEASE})" msg_ok "Zot is already up to date (${RELEASE})"
fi fi

View File

@@ -27,27 +27,24 @@ 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/zwave-js/zwave-js-ui/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 RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f ~/.zwave-js-ui ]] || [[ "${RELEASE}" != "$(cat ~/.zwave-js-ui)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop zwave-js-ui systemctl stop zwave-js-ui
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating Z-Wave JS UI"
rm -rf /opt/zwave-js-ui/* rm -rf /opt/zwave-js-ui/*
cd /opt/zwave-js-ui fetch_and_deploy_gh_release "zwave-js-ui" "zwave-js/zwave-js-ui" "prebuild" "latest" "/opt/zwave-js-ui" "zwave-js-ui*-linux.zip"
curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o $(basename "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip")
$STD unzip zwave-js-ui-${RELEASE}-linux.zip
msg_ok "Updated Z-Wave JS UI"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start zwave-js-ui systemctl start zwave-js-ui
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleanup" msg_info "Cleanup"
rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
rm -rf /opt/zwave-js-ui/store rm -rf /opt/zwave-js-ui/store
msg_ok "Cleaned" 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}."

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": true, "privileged": true,
"interface_port": 8090, "interface_port": 8090,
"documentation": "https://www.ispyconnect.com/docs/agent/about", "documentation": "https://www.ispyconnect.com/docs/agent/about",

View File

@@ -0,0 +1,40 @@
{
"name": "Copyparty",
"slug": "copyparty",
"categories": [
11
],
"date_created": "2025-08-18",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://github.com/9001/copyparty?tab=readme-ov-file#the-browser",
"website": "https://github.com/9001/copyparty",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/copyparty.webp",
"config_path": "/etc/copyparty.conf",
"description": "Copyparty is a lightweight, portable HTTP file server with a browser-based interface. It supports drag-and-drop uploads, downloads, deduplication, media playback, and advanced search, making it ideal for quickly sharing and managing files.",
"install_methods": [
{
"type": "default",
"script": "tools/addon/copyparty.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Execute within the Proxmox shell or in LXC",
"type": "info"
}
]
}

View File

@@ -2,7 +2,7 @@
"name": "Jenkins", "name": "Jenkins",
"slug": "jenkins", "slug": "jenkins",
"categories": [ "categories": [
22 20
], ],
"date_created": "2024-12-26", "date_created": "2024-12-26",
"type": "ct", "type": "ct",

View File

@@ -32,5 +32,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "If you use VLANs (default LAN is set to VLAN 999), make sure the Proxmox Linux Bridge is configured as VLAN-aware, otherwise the VM may fail to start.",
"type": "info"
}
]
} }

View File

@@ -20,7 +20,7 @@
"script": "ct/palmr.sh", "script": "ct/palmr.sh",
"resources": { "resources": {
"cpu": 4, "cpu": 4,
"ram": 4096, "ram": 6144,
"hdd": 6, "hdd": 6,
"os": "Debian", "os": "Debian",
"version": "12" "version": "12"
@@ -32,6 +32,10 @@
"password": null "password": null
}, },
"notes": [ "notes": [
{
"text": "This LXC is very memory-hungry when updating; it requires at least 6GB RAM, but RAM may be reduced to as low as 2GB when running normally",
"type": "warning"
},
{ {
"text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`", "text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`",
"type": "info" "type": "info"

View File

@@ -39,6 +39,10 @@
{ {
"text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard", "text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
"type": "Info" "type": "Info"
},
{
"text": "Configure authentication in the Web UI => Settings => Security",
"type": "Info"
} }
] ]
} }

View File

@@ -28,8 +28,8 @@
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": "proxmox",
"password": null "password": "proxmox"
}, },
"notes": [] "notes": []
} }

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 7912, "interface_port": 7912,
"documentation": null, "documentation": "https://github.com/Donkie/Spoolman/wiki/Installation",
"website": "https://github.com/Donkie/Spoolman", "website": "https://github.com/Donkie/Spoolman",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp",
"config_path": "/opt/spoolman/.env", "config_path": "/opt/spoolman/.env",

View File

@@ -6,10 +6,10 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8082, "interface_port": 8082,
"documentation": null, "documentation": "https://www.traccar.org/documentation/",
"website": "https://www.traccar.org/", "website": "https://www.traccar.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traccar.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traccar.webp",
"config_path": "/opt/traccar/conf/traccar.xml", "config_path": "/opt/traccar/conf/traccar.xml",

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 8080,
"documentation": null, "documentation": "https://doc.traefik.io/",
"website": "https://traefik.io/", "website": "https://traefik.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/traefik.webp",
"config_path": "/etc/traefik/traefik.yaml", "config_path": "/etc/traefik/traefik.yaml",

View File

@@ -0,0 +1,44 @@
{
"name": "twingate-connector",
"slug": "twingate-connector",
"categories": [
4
],
"date_created": "2025-08-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://www.twingate.com/docs/",
"config_path": "/etc/twingate/connector.conf",
"website": "https://www.twingate.com",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/twingate.webp",
"description": "Twingate Connectors are lightweight software components that establish secure, least-privileged access between private network resources and authorized users without exposing the network to the internet. They act as outbound-only bridges between your protected resources and the Twingate infrastructure, ensuring zero-trust access without the need for a VPN.",
"install_methods": [
{
"type": "default",
"script": "ct/twingate-connector.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 3,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "You can get your Twingate access or refresh tokens from the Twingate Admin Console. `https://auth.twingate.com/signup-v2`",
"type": "info"
},
{
"text": "If you need to update your access or refresh tokens, they can be found in /etc/twingate/connector.conf",
"type": "info"
}
]
}

View File

@@ -1,40 +1,40 @@
{ {
"name": "Umami", "name": "Umami",
"slug": "umami", "slug": "umami",
"categories": [ "categories": [
9 9
], ],
"date_created": "2024-05-09", "date_created": "2024-05-09",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://umami.is/docs",
"website": "https://umami.is/", "website": "https://umami.is/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/umami.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/umami.webp",
"config_path": "/opt/umami/.env", "config_path": "/opt/umami/.env",
"description": "Umami makes it easy to collect, analyze, and understand your web data while maintaining visitor privacy and data ownership.", "description": "Umami makes it easy to collect, analyze, and understand your web data while maintaining visitor privacy and data ownership.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/umami.sh", "script": "ct/umami.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 12, "hdd": 12,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": "admin", "username": "admin",
"password": "umami" "password": "umami"
}, },
"notes": [ "notes": [
{ {
"text": "To view the database credentials : `cat umami.creds`", "text": "To view the database credentials : `cat umami.creds`",
"type": "info" "type": "info"
} }
] ]
} }

View File

@@ -1,35 +1,35 @@
{ {
"name": "Uptime Kuma", "name": "Uptime Kuma",
"slug": "uptimekuma", "slug": "uptimekuma",
"categories": [ "categories": [
9 9
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3001, "interface_port": 3001,
"documentation": null, "documentation": "https://github.com/louislam/uptime-kuma/wiki",
"website": "https://github.com/louislam/uptime-kuma#uptime-kuma", "website": "https://github.com/louislam/uptime-kuma#uptime-kuma",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp",
"config_path": "", "config_path": "",
"description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.", "description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/uptimekuma.sh", "script": "ct/uptimekuma.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 1,
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -1,8 +1,38 @@
[ [
{ {
"name": "grafana/grafana", "name": "plexguide/Huntarr.io",
"version": "v11.6.5", "version": "8.2.6",
"date": "2025-08-12T23:13:05Z" "date": "2025-08-18T23:31:31Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.10.1",
"date": "2025-08-18T21:59:08Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.11",
"date": "2025-07-22T12:11:38Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.4.0",
"date": "2025-08-17T18:47:35Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.38.3",
"date": "2025-08-18T20:24:06Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.4",
"date": "2025-08-18T20:22:07Z"
},
{
"name": "immich-app/immich",
"version": "v1.138.1",
"date": "2025-08-18T18:51:50Z"
}, },
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
@@ -10,29 +40,359 @@
"date": "2025-08-12T21:12:08Z" "date": "2025-08-12T21:12:08Z"
}, },
{ {
"name": "coder/code-server", "name": "n8n-io/n8n",
"version": "v4.103.0", "version": "n8n@1.107.3",
"date": "2025-08-12T22:29:54Z" "date": "2025-08-18T18:40:54Z"
},
{
"name": "TwiN/gatus",
"version": "v5.23.1",
"date": "2025-08-18T18:20:55Z"
}, },
{ {
"name": "firefly-iii/firefly-iii", "name": "firefly-iii/firefly-iii",
"version": "v6.3.0-beta.1", "version": "v6.3.1",
"date": "2025-08-12T18:27:12Z" "date": "2025-08-18T18:08:43Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.17",
"date": "2025-08-18T17:14:52Z"
},
{
"name": "ventoy/Ventoy",
"version": "v1.1.07",
"date": "2025-08-18T16:13:54Z"
},
{
"name": "FreshRSS/FreshRSS",
"version": "1.27.0",
"date": "2025-08-18T16:03:26Z"
},
{
"name": "redis/redis",
"version": "8.2.1",
"date": "2025-08-18T15:42:48Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.2",
"date": "2025-07-04T08:21:42Z"
}, },
{ {
"name": "meilisearch/meilisearch", "name": "meilisearch/meilisearch",
"version": "latest", "version": "prototype-arroy-becomes-hannoy-with-sharding-0",
"date": "2025-08-12T17:24:32Z" "date": "2025-08-18T14:48:37Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.124.0",
"date": "2025-08-18T12:14:50Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.9",
"date": "2025-08-18T09:37:22Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.4.0p10-rc1",
"date": "2025-08-18T09:07:06Z"
},
{
"name": "zabbix/zabbix",
"version": "7.4.2rc2",
"date": "2025-08-18T08:39:03Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.2",
"date": "2025-08-18T07:39:41Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2306",
"date": "2025-08-18T05:50:56Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.0",
"date": "2025-08-18T01:22:47Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "lldap/lldap",
"version": "v0.6.2",
"date": "2025-08-17T22:07:10Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.18.1",
"date": "2025-08-17T21:16:28Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.8.3",
"date": "2025-08-14T22:05:27Z"
},
{
"name": "deluge-torrent/deluge",
"version": "deluge-2.2.1.dev0",
"date": "2025-08-17T20:22:28Z"
},
{
"name": "go-vikunja/vikunja",
"version": "v1.0.0-rc0",
"date": "2025-08-17T18:47:15Z"
},
{
"name": "matze/wastebin",
"version": "3.3.0",
"date": "2025-08-17T19:57:11Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.26.2.10099",
"date": "2025-06-11T20:10:39Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.37.0.5076",
"date": "2025-06-04T11:04:53Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v2.12.4.4658",
"date": "2025-06-09T17:27:45Z"
},
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
"date": "2025-01-05T21:14:23Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.17",
"date": "2025-08-17T13:13:52Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-core@15.6.12",
"date": "2025-08-17T10:37:31Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.0.2",
"date": "2025-08-17T09:24:37Z"
},
{
"name": "mylar3/mylar3",
"version": "v0.8.3",
"date": "2025-08-17T06:24:54Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.1",
"date": "2025-07-17T21:36:42Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z"
},
{
"name": "runtipi/runtipi",
"version": "e2e",
"date": "2025-08-08T20:14:39Z"
},
{
"name": "blakeblackshear/frigate",
"version": "v0.14.1",
"date": "2024-08-29T22:32:51Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.2.10",
"date": "2025-08-16T11:45:23Z"
},
{
"name": "documenso/documenso",
"version": "v1.12.2-rc.4",
"date": "2025-08-16T09:16:29Z"
},
{
"name": "karlomikus/bar-assistant",
"version": "v5.7.0",
"date": "2025-08-16T07:59:43Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.2",
"date": "2025-08-16T05:32:58Z"
},
{
"name": "coder/code-server",
"version": "v4.103.1",
"date": "2025-08-16T01:59:28Z"
},
{
"name": "mongodb/mongo",
"version": "r8.2.0",
"date": "2025-08-15T22:02:15Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.7",
"date": "2025-08-07T08:19:29Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.33.0",
"date": "2025-08-15T19:17:31Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.90",
"date": "2025-08-15T19:14:52Z"
}, },
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
"version": "v4.3.6", "version": "v4.3.6",
"date": "2025-08-12T17:16:42Z" "date": "2025-08-12T17:16:42Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.8.2",
"date": "2025-08-15T16:00:26Z"
},
{
"name": "evcc-io/evcc",
"version": "0.207.3",
"date": "2025-08-15T15:32:33Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.0.2",
"date": "2025-08-15T14:12:26Z"
},
{
"name": "mattermost/mattermost",
"version": "v10.5.10",
"date": "2025-08-15T12:12:06Z"
},
{
"name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.8.0-release",
"date": "2025-08-15T06:19:12Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.5.1",
"date": "2025-08-15T05:53:22Z"
},
{
"name": "ollama/ollama",
"version": "v0.11.5-rc0",
"date": "2025-08-14T22:24:01Z"
},
{
"name": "esphome/esphome",
"version": "2025.7.5",
"date": "2025-08-05T03:37:52Z"
},
{ {
"name": "fallenbagel/jellyseerr", "name": "fallenbagel/jellyseerr",
"version": "preview-dns-cache-manager", "version": "v2.7.3",
"date": "2025-08-12T15:29:51Z" "date": "2025-08-14T20:43:46Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.2",
"date": "2025-08-14T19:07:57Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.11.7",
"date": "2025-08-14T17:14:33Z"
},
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.64",
"date": "2025-07-28T14:24:56Z"
},
{
"name": "Luligu/matterbridge",
"version": "Matter-1.4.1",
"date": "2025-08-14T07:37:23Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "booklore-app/booklore",
"version": "v0.37.0",
"date": "2025-08-14T00:37:49Z"
},
{
"name": "jellyfin/jellyfin",
"version": "v10.10.7",
"date": "2025-04-05T19:14:59Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w33-4.13.0",
"date": "2025-08-13T21:46:59Z"
},
{
"name": "Kometa-Team/Kometa",
"version": "v2.2.1",
"date": "2025-08-13T19:49:01Z"
},
{
"name": "grafana/grafana",
"version": "v12.1.1",
"date": "2025-08-13T17:54:07Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.5",
"date": "2025-08-13T16:35:52Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v1.17.3",
"date": "2025-08-13T14:04:44Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.4.5",
"date": "2025-08-13T13:52:09Z"
},
{
"name": "ellite/Wallos",
"version": "v4.1.1",
"date": "2025-08-13T11:58:04Z"
},
{
"name": "raydak-labs/configarr",
"version": "v1.14.1",
"date": "2025-08-13T09:34:15Z"
},
{
"name": "home-assistant/operating-system",
"version": "16.1",
"date": "2025-08-13T07:58:10Z"
},
{
"name": "requarks/wiki",
"version": "v2.5.308",
"date": "2025-08-13T07:09:29Z"
}, },
{ {
"name": "Brandawg93/PeaNUT", "name": "Brandawg93/PeaNUT",
@@ -44,11 +404,6 @@
"version": "jenkins-2.523", "version": "jenkins-2.523",
"date": "2025-08-12T14:54:07Z" "date": "2025-08-12T14:54:07Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.3.0",
"date": "2025-08-12T13:12:33Z"
},
{ {
"name": "element-hq/synapse", "name": "element-hq/synapse",
"version": "v1.136.0", "version": "v1.136.0",
@@ -59,51 +414,6 @@
"version": "v1.14.0", "version": "v1.14.0",
"date": "2025-08-12T13:58:46Z" "date": "2025-08-12T13:58:46Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v3.3.5",
"date": "2025-08-12T13:18:30Z"
},
{
"name": "zabbix/zabbix",
"version": "6.0.41rc1",
"date": "2025-08-12T10:19:14Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-core@15.6.10",
"date": "2025-08-12T07:46:58Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.5.0",
"date": "2025-08-12T07:03:15Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.0",
"date": "2025-08-12T06:13:55Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2280",
"date": "2025-08-12T05:53:50Z"
},
{
"name": "booklore-app/booklore",
"version": "v0.36.3",
"date": "2025-08-12T04:52:59Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "ellite/Wallos",
"version": "v4.1.0",
"date": "2025-08-11T22:54:58Z"
},
{ {
"name": "pelican-dev/panel", "name": "pelican-dev/panel",
"version": "v1.0.0-beta24", "version": "v1.0.0-beta24",
@@ -119,41 +429,6 @@
"version": "REL_13_22", "version": "REL_13_22",
"date": "2025-08-11T21:10:58Z" "date": "2025-08-11T21:10:58Z"
}, },
{
"name": "keycloak/keycloak",
"version": "26.2.7",
"date": "2025-08-07T08:19:29Z"
},
{
"name": "mongodb/mongo",
"version": "r8.2.0-rc4",
"date": "2025-08-11T19:20:25Z"
},
{
"name": "home-assistant/core",
"version": "2025.8.1",
"date": "2025-08-11T19:07:52Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.14",
"date": "2025-08-11T16:49:58Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.86",
"date": "2025-08-11T16:21:10Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.106.3",
"date": "2025-08-11T15:16:06Z"
},
{
"name": "TwiN/gatus",
"version": "v5.22.0",
"date": "2025-08-11T14:05:35Z"
},
{ {
"name": "BookStackApp/BookStack", "name": "BookStackApp/BookStack",
"version": "v25.07.1", "version": "v25.07.1",
@@ -169,16 +444,6 @@
"version": "flowise@3.0.5", "version": "flowise@3.0.5",
"date": "2025-08-11T13:01:45Z" "date": "2025-08-11T13:01:45Z"
}, },
{
"name": "Checkmk/checkmk",
"version": "v2.2.0p45",
"date": "2025-08-11T12:10:07Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.1",
"date": "2025-08-11T11:44:30Z"
},
{ {
"name": "emqx/emqx", "name": "emqx/emqx",
"version": "e5.10.1-beta.1", "version": "e5.10.1-beta.1",
@@ -189,31 +454,6 @@
"version": "4.5.2", "version": "4.5.2",
"date": "2025-07-09T19:08:28Z" "date": "2025-07-09T19:08:28Z"
}, },
{
"name": "semaphoreui/semaphore",
"version": "v2.16.7",
"date": "2025-08-11T07:44:10Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "moghtech/komodo",
"version": "v1.18.4",
"date": "2025-06-25T00:06:56Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.37.0.5076",
"date": "2025-06-04T11:04:53Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.2.2",
"date": "2025-08-11T00:22:17Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.2", "version": "0.23.2",
@@ -224,26 +464,11 @@
"version": "v2.28.0", "version": "v2.28.0",
"date": "2025-08-10T23:09:55Z" "date": "2025-08-10T23:09:55Z"
}, },
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.9",
"date": "2025-08-10T20:17:50Z"
},
{ {
"name": "pocket-id/pocket-id", "name": "pocket-id/pocket-id",
"version": "v1.7.0", "version": "v1.7.0",
"date": "2025-08-10T18:10:25Z" "date": "2025-08-10T18:10:25Z"
}, },
{
"name": "evcc-io/evcc",
"version": "0.207.2",
"date": "2025-08-10T14:40:21Z"
},
{
"name": "blakeblackshear/frigate",
"version": "v0.14.1",
"date": "2024-08-29T22:32:51Z"
},
{ {
"name": "ioBroker/ioBroker", "name": "ioBroker/ioBroker",
"version": "1012-08-09", "version": "1012-08-09",
@@ -259,16 +484,6 @@
"version": "v0.86.1", "version": "v0.86.1",
"date": "2025-08-09T22:05:10Z" "date": "2025-08-09T22:05:10Z"
}, },
{
"name": "runtipi/runtipi",
"version": "v4.3.0",
"date": "2025-07-05T12:14:52Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.8.2",
"date": "2025-08-09T18:11:46Z"
},
{ {
"name": "Stirling-Tools/Stirling-PDF", "name": "Stirling-Tools/Stirling-PDF",
"version": "v1.2.0", "version": "v1.2.0",
@@ -289,11 +504,6 @@
"version": "v0.29.2", "version": "v0.29.2",
"date": "2025-08-09T07:28:08Z" "date": "2025-08-09T07:28:08Z"
}, },
{
"name": "gethomepage/homepage",
"version": "v1.4.4",
"date": "2025-08-09T02:35:14Z"
},
{ {
"name": "duplicati/duplicati", "name": "duplicati/duplicati",
"version": "v2.1.1.100-2.1.1.100_canary_2025-08-08", "version": "v2.1.1.100-2.1.1.100_canary_2025-08-08",
@@ -304,21 +514,6 @@
"version": "2.38.0", "version": "2.38.0",
"date": "2025-08-08T21:47:19Z" "date": "2025-08-08T21:47:19Z"
}, },
{
"name": "homarr-labs/homarr",
"version": "v1.32.0",
"date": "2025-08-08T19:17:28Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.38.2",
"date": "2025-08-08T19:09:53Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.3",
"date": "2025-08-08T17:41:35Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v2.39.2", "version": "v2.39.2",
@@ -329,21 +524,6 @@
"version": "2025.8.0", "version": "2025.8.0",
"date": "2025-08-08T15:50:42Z" "date": "2025-08-08T15:50:42Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v25.2",
"date": "2025-07-04T08:21:42Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w32-4.13.0",
"date": "2025-07-30T08:30:15Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.16",
"date": "2025-07-28T22:46:46Z"
},
{ {
"name": "apache/tika", "name": "apache/tika",
"version": "3.2.2", "version": "3.2.2",
@@ -354,16 +534,6 @@
"version": "mariadb-12.0.2", "version": "mariadb-12.0.2",
"date": "2025-08-07T21:23:15Z" "date": "2025-08-07T21:23:15Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.11.4",
"date": "2025-08-07T21:23:55Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z"
},
{ {
"name": "tailscale/tailscale", "name": "tailscale/tailscale",
"version": "v1.86.4", "version": "v1.86.4",
@@ -374,31 +544,16 @@
"version": "v4.1.3", "version": "v4.1.3",
"date": "2025-08-04T12:13:45Z" "date": "2025-08-04T12:13:45Z"
}, },
{
"name": "cross-seed/cross-seed",
"version": "v6.13.1",
"date": "2025-07-17T21:36:42Z"
},
{ {
"name": "zwave-js/zwave-js-ui", "name": "zwave-js/zwave-js-ui",
"version": "v11.1.0", "version": "v11.1.0",
"date": "2025-08-07T14:57:29Z" "date": "2025-08-07T14:57:29Z"
}, },
{
"name": "karlomikus/bar-assistant",
"version": "v5.6.1",
"date": "2025-08-07T14:46:03Z"
},
{ {
"name": "glpi-project/glpi", "name": "glpi-project/glpi",
"version": "10.0.19", "version": "10.0.19",
"date": "2025-07-16T09:45:14Z" "date": "2025-07-16T09:45:14Z"
}, },
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.11",
"date": "2025-07-22T12:11:38Z"
},
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v1.12.2rc2", "version": "v1.12.2rc2",
@@ -479,46 +634,11 @@
"version": "v2.0.116", "version": "v2.0.116",
"date": "2025-08-05T04:45:21Z" "date": "2025-08-05T04:45:21Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.7.5",
"date": "2025-08-05T03:37:52Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.4",
"date": "2025-08-04T18:58:27Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.123.0",
"date": "2025-08-04T15:11:36Z"
},
{
"name": "home-assistant/operating-system",
"version": "16.0",
"date": "2025-07-09T13:28:43Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.2.8",
"date": "2025-08-04T13:44:03Z"
},
{ {
"name": "apache/tomcat", "name": "apache/tomcat",
"version": "10.1.44", "version": "10.1.44",
"date": "2025-08-04T13:17:59Z" "date": "2025-08-04T13:17:59Z"
}, },
{
"name": "redis/redis",
"version": "8.2.0",
"date": "2025-08-04T11:14:00Z"
},
{
"name": "raydak-labs/configarr",
"version": "v1.14.0",
"date": "2025-08-04T10:55:20Z"
},
{ {
"name": "henrygd/beszel", "name": "henrygd/beszel",
"version": "v0.12.3", "version": "v0.12.3",
@@ -529,11 +649,6 @@
"version": "1.6.18", "version": "1.6.18",
"date": "2025-08-03T21:41:45Z" "date": "2025-08-03T21:41:45Z"
}, },
{
"name": "jellyfin/jellyfin",
"version": "v10.10.7",
"date": "2025-04-05T19:14:59Z"
},
{ {
"name": "Tautulli/Tautulli", "name": "Tautulli/Tautulli",
"version": "v2.15.3", "version": "v2.15.3",
@@ -549,16 +664,6 @@
"version": "mcp/v0.26.0", "version": "mcp/v0.26.0",
"date": "2025-08-03T16:21:47Z" "date": "2025-08-03T16:21:47Z"
}, },
{
"name": "Lidarr/Lidarr",
"version": "v2.12.4.4658",
"date": "2025-06-09T17:27:45Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.26.2.10099",
"date": "2025-06-11T20:10:39Z"
},
{ {
"name": "linuxserver/Heimdall", "name": "linuxserver/Heimdall",
"version": "v2.7.4", "version": "v2.7.4",
@@ -589,16 +694,6 @@
"version": "2.6.0", "version": "2.6.0",
"date": "2025-08-01T15:42:21Z" "date": "2025-08-01T15:42:21Z"
}, },
{
"name": "immich-app/immich",
"version": "v1.137.3",
"date": "2025-08-01T15:06:36Z"
},
{
"name": "documenso/documenso",
"version": "v1.12.2-rc.3",
"date": "2025-08-01T14:46:22Z"
},
{ {
"name": "alexta69/metube", "name": "alexta69/metube",
"version": "2025.07.31", "version": "2025.07.31",
@@ -614,11 +709,6 @@
"version": "1.23.1", "version": "1.23.1",
"date": "2025-08-01T04:30:24Z" "date": "2025-08-01T04:30:24Z"
}, },
{
"name": "gristlabs/grist-core",
"version": "v1.7.1",
"date": "2025-07-31T22:26:54Z"
},
{ {
"name": "lazy-media/Reactive-Resume", "name": "lazy-media/Reactive-Resume",
"version": "v1.2.3", "version": "v1.2.3",
@@ -629,11 +719,6 @@
"version": "v2.1.1867", "version": "v2.1.1867",
"date": "2025-07-31T18:08:43Z" "date": "2025-07-31T18:08:43Z"
}, },
{
"name": "TandoorRecipes/recipes",
"version": "2.0.1",
"date": "2025-07-31T17:29:38Z"
},
{ {
"name": "hyperion-project/hyperion.ng", "name": "hyperion-project/hyperion.ng",
"version": "2.1.1", "version": "2.1.1",
@@ -654,11 +739,6 @@
"version": "v2025-07-30", "version": "v2025-07-30",
"date": "2025-07-30T17:13:40Z" "date": "2025-07-30T17:13:40Z"
}, },
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.8",
"date": "2025-07-30T11:33:00Z"
},
{ {
"name": "dani-garcia/vaultwarden", "name": "dani-garcia/vaultwarden",
"version": "1.34.3", "version": "1.34.3",
@@ -684,11 +764,6 @@
"version": "v0.58.0", "version": "v0.58.0",
"date": "2025-07-28T18:59:50Z" "date": "2025-07-28T18:59:50Z"
}, },
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.64",
"date": "2025-07-28T14:24:56Z"
},
{ {
"name": "PrivateBin/PrivateBin", "name": "PrivateBin/PrivateBin",
"version": "2.0.0", "version": "2.0.0",
@@ -754,11 +829,6 @@
"version": "5.0.0", "version": "5.0.0",
"date": "2025-07-21T07:16:58Z" "date": "2025-07-21T07:16:58Z"
}, },
{
"name": "linkwarden/linkwarden",
"version": "v2.11.5",
"date": "2025-07-20T03:14:42Z"
},
{ {
"name": "wavelog/wavelog", "name": "wavelog/wavelog",
"version": "2.0.7", "version": "2.0.7",
@@ -769,11 +839,6 @@
"version": "v0.22.0", "version": "v0.22.0",
"date": "2025-07-17T06:35:43Z" "date": "2025-07-17T06:35:43Z"
}, },
{
"name": "plexguide/Huntarr.io",
"version": "8.1.15",
"date": "2025-07-16T18:06:03Z"
},
{ {
"name": "usememos/memos", "name": "usememos/memos",
"version": "v0.25.0", "version": "v0.25.0",
@@ -814,11 +879,6 @@
"version": "1.3.11", "version": "1.3.11",
"date": "2025-07-13T13:33:48Z" "date": "2025-07-13T13:33:48Z"
}, },
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
"date": "2025-01-05T21:14:23Z"
},
{ {
"name": "eclipse-mosquitto/mosquitto", "name": "eclipse-mosquitto/mosquitto",
"version": "v2.0.22", "version": "v2.0.22",
@@ -864,11 +924,6 @@
"version": "v6.8.1", "version": "v6.8.1",
"date": "2025-07-07T14:40:11Z" "date": "2025-07-07T14:40:11Z"
}, },
{
"name": "Part-DB/Part-DB-server",
"version": "v1.17.2",
"date": "2025-07-06T12:21:52Z"
},
{ {
"name": "Kareadita/Kavita", "name": "Kareadita/Kavita",
"version": "v0.8.7", "version": "v0.8.7",
@@ -939,11 +994,6 @@
"version": "v12.7.0", "version": "v12.7.0",
"date": "2025-06-20T08:31:16Z" "date": "2025-06-20T08:31:16Z"
}, },
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.17.1",
"date": "2025-06-19T19:35:01Z"
},
{ {
"name": "prometheus-pve/prometheus-pve-exporter", "name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.5", "version": "v3.5.5",
@@ -1009,11 +1059,6 @@
"version": "v2.0.1", "version": "v2.0.1",
"date": "2025-06-08T14:40:24Z" "date": "2025-06-08T14:40:24Z"
}, },
{
"name": "matze/wastebin",
"version": "3.2.0",
"date": "2025-06-07T21:33:22Z"
},
{ {
"name": "jordan-dalby/ByteStash", "name": "jordan-dalby/ByteStash",
"version": "v1.5.8", "version": "v1.5.8",
@@ -1034,11 +1079,6 @@
"version": "v0.14.1", "version": "v0.14.1",
"date": "2025-06-04T08:57:15Z" "date": "2025-06-04T08:57:15Z"
}, },
{
"name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.7.1",
"date": "2025-06-04T04:39:36Z"
},
{ {
"name": "louislam/uptime-kuma", "name": "louislam/uptime-kuma",
"version": "2.0.0-beta.2-temp", "version": "2.0.0-beta.2-temp",
@@ -1049,11 +1089,6 @@
"version": "v0.9.0", "version": "v0.9.0",
"date": "2025-06-03T11:49:40Z" "date": "2025-06-03T11:49:40Z"
}, },
{
"name": "FreshRSS/FreshRSS",
"version": "1.26.3",
"date": "2025-06-02T22:00:14Z"
},
{ {
"name": "release-argus/Argus", "name": "release-argus/Argus",
"version": "0.26.3", "version": "0.26.3",
@@ -1119,11 +1154,6 @@
"version": "3.5.0", "version": "3.5.0",
"date": "2025-05-05T16:28:24Z" "date": "2025-05-05T16:28:24Z"
}, },
{
"name": "deluge-torrent/deluge",
"version": "deluge-2.2.0",
"date": "2025-04-28T21:31:06Z"
},
{ {
"name": "gotify/server", "name": "gotify/server",
"version": "v2.6.3", "version": "v2.6.3",
@@ -1179,11 +1209,6 @@
"version": "2.3", "version": "2.3",
"date": "2025-04-05T18:05:36Z" "date": "2025-04-05T18:05:36Z"
}, },
{
"name": "Kometa-Team/Kometa",
"version": "v2.2.0",
"date": "2025-03-31T21:31:48Z"
},
{ {
"name": "louislam/dockge", "name": "louislam/dockge",
"version": "1.5.0", "version": "1.5.0",
@@ -1209,11 +1234,6 @@
"version": "v1.55.4", "version": "v1.55.4",
"date": "2025-03-24T11:31:02Z" "date": "2025-03-24T11:31:02Z"
}, },
{
"name": "requarks/wiki",
"version": "v2.5.307",
"date": "2025-03-24T01:33:31Z"
},
{ {
"name": "Donkie/Spoolman", "name": "Donkie/Spoolman",
"version": "v0.22.1", "version": "v0.22.1",
@@ -1229,11 +1249,6 @@
"version": "v0.18.0", "version": "v0.18.0",
"date": "2025-03-11T12:47:22Z" "date": "2025-03-11T12:47:22Z"
}, },
{
"name": "mylar3/mylar3",
"version": "v0.8.2",
"date": "2025-03-11T05:20:22Z"
},
{ {
"name": "AlexxIT/go2rtc", "name": "AlexxIT/go2rtc",
"version": "v1.9.9", "version": "v1.9.9",
@@ -1274,11 +1289,6 @@
"version": "v2.6.6", "version": "v2.6.6",
"date": "2025-02-24T19:14:46Z" "date": "2025-02-24T19:14:46Z"
}, },
{
"name": "ventoy/Ventoy",
"version": "v1.1.05",
"date": "2025-02-24T11:53:12Z"
},
{ {
"name": "babybuddy/babybuddy", "name": "babybuddy/babybuddy",
"version": "v2.7.1", "version": "v2.7.1",
@@ -1304,11 +1314,6 @@
"version": "v0.5.7", "version": "v0.5.7",
"date": "2025-01-17T15:57:17Z" "date": "2025-01-17T15:57:17Z"
}, },
{
"name": "go-vikunja/vikunja",
"version": "v0.24.6",
"date": "2024-12-22T20:24:35Z"
},
{ {
"name": "favonia/cloudflare-ddns", "name": "favonia/cloudflare-ddns",
"version": "v1.15.1", "version": "v1.15.1",
@@ -1334,11 +1339,6 @@
"version": "v1.7.3", "version": "v1.7.3",
"date": "2024-11-27T21:26:11Z" "date": "2024-11-27T21:26:11Z"
}, },
{
"name": "lldap/lldap",
"version": "v0.6.1",
"date": "2024-11-22T21:48:41Z"
},
{ {
"name": "janeczku/calibre-web", "name": "janeczku/calibre-web",
"version": "0.6.24", "version": "0.6.24",

View File

@@ -12,7 +12,7 @@
"documentation": "https://github.com/wavelog/wavelog/wiki", "documentation": "https://github.com/wavelog/wavelog/wiki",
"website": "https://www.wavelog.org/", "website": "https://www.wavelog.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp",
"config_path": "", "config_path": "/opt/wavelog/application/config/config.php",
"description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.", "description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.",
"install_methods": [ "install_methods": [
{ {

View File

@@ -1,35 +1,35 @@
{ {
"name": "Wiki.js", "name": "Wiki.js",
"slug": "wikijs", "slug": "wikijs",
"categories": [ "categories": [
12 12
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://docs.requarks.io/",
"website": "https://js.wiki/", "website": "https://js.wiki/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp",
"config_path": "/opt/wikijs/config.yml", "config_path": "/opt/wikijs/config.yml",
"description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.", "description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/wikijs.sh", "script": "ct/wikijs.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 7, "hdd": 7,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -46,6 +46,10 @@
{ {
"text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`", "text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`",
"type": "info" "type": "info"
},
{
"text": "WGDashboard installation is optional.`",
"type": "info"
} }
] ]
} }

View File

@@ -9,7 +9,7 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": null, "documentation": "https://zipline.diced.sh/docs/get-started",
"website": "https://zipline.diced.sh/", "website": "https://zipline.diced.sh/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp",
"config_path": "/opt/zipline/.env", "config_path": "/opt/zipline/.env",

View File

@@ -1,35 +1,35 @@
{ {
"name": "Zoraxy", "name": "Zoraxy",
"slug": "zoraxy", "slug": "zoraxy",
"categories": [ "categories": [
4 4
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8000, "interface_port": 8000,
"documentation": null, "documentation": "https://github.com/tobychui/zoraxy/wiki",
"website": "https://zoraxy.aroz.org/", "website": "https://zoraxy.aroz.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp",
"config_path": "", "config_path": "",
"description": "Zoraxy is an all in one homelab network routing solution.", "description": "Zoraxy is an all in one homelab network routing solution.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/zoraxy.sh", "script": "ct/zoraxy.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 6, "hdd": 6,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

@@ -29,6 +29,7 @@ cd /opt/agentdvr/agent
curl -fsSL "$RELEASE" -o $(basename "$RELEASE") curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
$STD unzip Agent_Linux64*.zip $STD unzip Agent_Linux64*.zip
chmod +x ./Agent chmod +x ./Agent
echo $RELEASE > ~/.agentdvr
msg_ok "Installed AgentDVR" msg_ok "Installed AgentDVR"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -28,7 +28,7 @@ msg_info "Setting up database"
DB_NAME=glpi_db DB_NAME=glpi_db
DB_USER=glpi DB_USER=glpi
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;" $STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" $STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';" $STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"

View File

@@ -18,64 +18,13 @@ $STD apt-get install -y \
sqlite3 \ sqlite3 \
rclone \ rclone \
tzdata \ tzdata \
ca-certificates \ ca-certificates
build-essential \
git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_go fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
NODE_VERSION="22" setup_nodejs
msg_info "Setup ${APPLICATION} (Patience)" msg_info "Configuring ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
mv GoMFT-"${RELEASE}"/ /opt/gomft
cd /opt/gomft
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
cp /opt/gomft/components/file_metadata/search/file_metadata_search_content.templ{,.bak}
# dirty hack to fix templ
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
package search
import (
"context"
"github.com/starfleetcptn/gomft/components/file_metadata"
"github.com/starfleetcptn/gomft/components/file_metadata/list"
)
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
<!-- Search Results -->
<div id="search-results">
if len(data.Files) > 0 {
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
Files: data.Files,
Page: data.Page,
Limit: data.Limit,
TotalCount: data.TotalCount,
TotalPages: data.TotalPages,
Filter: data.Filter,
SortBy: data.SortBy,
SortDir: data.SortDir,
}, "/files/search/partial", "#search-results-container")
} else {
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
</svg>
<p>No files found matching your search criteria.</p>
</div>
}
</div>
}
EOF
$STD "$HOME"/go/bin/templ generate
$STD go build -o gomft main.go
chmod +x /opt/gomft/gomft
JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=') JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=')
cat <<EOF >/opt/gomft/.env cat <<EOF >/opt/gomft/.env
SERVER_ADDRESS=:8080 SERVER_ADDRESS=:8080
DATA_DIR=/opt/gomft/data/gomft DATA_DIR=/opt/gomft/data/gomft
@@ -95,9 +44,7 @@ EMAIL_REQUIRE_AUTH=true
EMAIL_USERNAME=smtp_username EMAIL_USERNAME=smtp_username
EMAIL_PASSWORD=smtp_password EMAIL_PASSWORD=smtp_password
EOF EOF
msg_ok "Configured ${APPLICATION}"
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gomft.service cat <<EOF >/etc/systemd/system/gomft.service
@@ -108,8 +55,9 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User=root User=root
EnvironmentFile=/opt/gomft/.env
WorkingDirectory=/opt/gomft WorkingDirectory=/opt/gomft
ExecStart=/opt/gomft/./gomft ExecStart=/opt/gomft/gomft
Restart=always Restart=always
[Install] [Install]
@@ -122,7 +70,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$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"

View File

@@ -115,7 +115,8 @@ NODE_VERSION="22" setup_nodejs
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
msg_info "Setting up Postgresql Database" msg_info "Setting up Postgresql Database"
VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" VCHORD_RELEASE="0.4.3"
# VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
curl -fsSL "https://github.com/tensorchord/VectorChord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb curl -fsSL "https://github.com/tensorchord/VectorChord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb
$STD apt install -y ./vchord.deb $STD apt install -y ./vchord.deb
rm vchord.deb rm vchord.deb
@@ -282,7 +283,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache} mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.137.3" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.138.0" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (more patience please)" msg_info "Installing ${APPLICATION} (more patience please)"
@@ -455,6 +456,8 @@ systemctl enable -q --now "$APPLICATION"-ml.service "$APPLICATION"-web.service
msg_ok "Created user, env file, scripts and services" msg_ok "Created user, env file, scripts and services"
sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
motd_ssh motd_ssh
customize customize

View File

@@ -25,7 +25,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
msg_ok "Configured PostgreSQL" msg_ok "Configured PostgreSQL"
fetch_and_deploy_gh_release "keycloak" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz" fetch_and_deploy_gh_release "keycloak_app" "keycloak/keycloak" "prebuild" "latest" "/opt/keycloak" "keycloak-*.tar.gz"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/keycloak.service cat <<EOF >/etc/systemd/system/keycloak.service

View File

@@ -54,11 +54,11 @@ sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.en
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env
$STD yarn install --frozen-lockfile
export NODE_OPTIONS="--max-old-space-size=3584" export NODE_OPTIONS="--max-old-space-size=3584"
$STD yarn build $STD yarn install --frozen-lockfile
sed -i 's/NODE_ENV=development/NODE_ENV=production/g' /opt/outline/.env
export NODE_ENV=production export NODE_ENV=production
sed -i 's/NODE_ENV=development/NODE_ENV=production/g' /opt/outline/.env
$STD yarn build
msg_ok "Configured Outline" msg_ok "Configured Outline"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -34,7 +34,7 @@ chown -R pulse:pulse /etc/pulse /opt/pulse
msg_ok "Installed Pulse" msg_ok "Installed Pulse"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pulse.service cat <<EOF >/etc/systemd/system/pulse-backend.service
[Unit] [Unit]
Description=Pulse Monitoring Server Description=Pulse Monitoring Server
After=network.target After=network.target
@@ -44,7 +44,7 @@ Type=simple
User=pulse User=pulse
Group=pulse Group=pulse
WorkingDirectory=/opt/pulse WorkingDirectory=/opt/pulse
ExecStart=/opt/pulse/pulse ExecStart=/opt/pulse/bin/pulse
Restart=always Restart=always
RestartSec=3 RestartSec=3
StandardOutput=journal StandardOutput=journal
@@ -55,7 +55,7 @@ Environment="PULSE_DATA_DIR=/etc/pulse"
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now pulse systemctl enable -q --now pulse-backend
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -13,34 +13,36 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies (Patience)" msg_info "Installing SearXNG dependencies"
echo "deb http://deb.debian.org/debian bookworm-backports main" > /etc/apt/sources.list.d/backports.list
$STD apt-get update
$STD apt-get install -y \ $STD apt-get install -y \
redis-server \ python3-dev python3-babel python3-venv python-is-python3 \
build-essential \ uwsgi uwsgi-plugin-python3 \
libffi-dev \ git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev sudo valkey
libssl-dev \ msg_ok "Installed dependencies"
git
msg_ok "Installed Dependencies"
msg_info "Setup Python3" msg_info "Creating user and preparing directories"
$STD apt-get install -y \ useradd --system --shell /bin/bash --home-dir "/usr/local/searxng" --comment 'Privacy-respecting metasearch engine' searxng || true
python3 \ mkdir -p /usr/local/searxng
python3-{pip,venv,yaml,dev} chown -R searxng:searxng /usr/local/searxng
$STD pip install --upgrade pip setuptools wheel msg_ok "User and directories ready"
$STD pip install pyyaml
msg_ok "Setup Python3"
msg_info "Setup SearXNG" msg_info "Cloning SearXNG source"
mkdir -p /usr/local/searxng /etc/searxng $STD sudo -H -u searxng git clone https://github.com/searxng/searxng /usr/local/searxng/searxng-src
useradd -d /etc/searxng searxng msg_ok "Cloned SearXNG"
chown searxng:searxng /usr/local/searxng /etc/searxng
$STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src msg_info "Creating Python virtual environment"
cd /usr/local/searxng/ sudo -H -u searxng bash -c "
sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv python3 -m venv /usr/local/searxng/searx-pyenv &&
source /usr/local/searxng/searx-pyenv/bin/activate . /usr/local/searxng/searx-pyenv/bin/activate &&
$STD pip install --upgrade pip setuptools wheel $STD pip install -U pip setuptools wheel pyyaml &&
$STD pip install pyyaml $STD pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src
$STD pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src "
msg_ok "Python environment ready"
msg_info "Configuring SearXNG settings"
mkdir -p /etc/searxng
SECRET_KEY=$(openssl rand -hex 32) SECRET_KEY=$(openssl rand -hex 32)
cat <<EOF >/etc/searxng/settings.yml cat <<EOF >/etc/searxng/settings.yml
# SearXNG settings # SearXNG settings
@@ -56,8 +58,8 @@ server:
secret_key: "${SECRET_KEY}" secret_key: "${SECRET_KEY}"
limiter: false limiter: false
image_proxy: true image_proxy: true
redis: valkey:
url: "redis://127.0.0.1:6379/0" url: "valkey://localhost:6379/0"
ui: ui:
static_use_hash: true static_use_hash: true
enabled_plugins: enabled_plugins:
@@ -78,16 +80,17 @@ engines:
shortcut: ddg shortcut: ddg
display_error_messages: true display_error_messages: true
EOF EOF
chown searxng:searxng /etc/searxng/settings.yml chown searxng:searxng /etc/searxng/settings.yml
chmod 640 /etc/searxng/settings.yml chmod 640 /etc/searxng/settings.yml
msg_ok "Setup SearXNG" msg_ok "Configured settings"
msg_info "Set up web services" msg_info "Set up web services"
cat <<EOF >/etc/systemd/system/searxng.service cat <<EOF >/etc/systemd/system/searxng.service
[Unit] [Unit]
Description=SearXNG service Description=SearXNG service
After=network.target redis-server.service After=network.target valkey-server.service
Wants=redis-server.service Wants=valkey-server.service
[Service] [Service]
Type=simple Type=simple

View File

@@ -43,17 +43,19 @@ echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Spoolman" msg_ok "Installed Spoolman"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/spoolman.service cat <<'EOF' >/etc/systemd/system/spoolman.service
[Unit] [Unit]
Description=Spoolman Description=Spoolman
After=network.target After=network.target
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/opt/spoolman WorkingDirectory=/opt/spoolman
EnvironmentFile=/opt/spoolman/.env EnvironmentFile=/opt/spoolman/.env
ExecStart=uvicorn spoolman.main:app --host 0.0.0.0 --port 7912 ExecStart=uvicorn spoolman.main:app --host "${SPOOLMAN_HOST}" --port "${SPOOLMAN_PORT}"
Restart=always Restart=always
User=root User=root
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF

View File

@@ -73,7 +73,7 @@ POSTGRES_USER=$DB_USER
POSTGRES_PASSWORD=$DB_PASS POSTGRES_PASSWORD=$DB_PASS
STATIC_URL=/staticfiles/ STATIC_URL=/staticfiles/
MEDIA_URL=/mediafiles/ MEDIA_URL=/media/
EOF EOF
TANDOOR_VERSION="$(curl -s https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r .tag_name)" TANDOOR_VERSION="$(curl -s https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r .tag_name)"
@@ -125,7 +125,7 @@ server {
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_pass http://unix:/opt/tandoor/tandoor.sock; proxy_pass http://unix:/opt/tandoor/tandoor.sock;
} }
} }

View File

@@ -13,19 +13,22 @@ setting_up_container
network_check network_check
update_os update_os
RELEASE=$(curl -fsSL https://api.github.com/repos/traccar/traccar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') fetch_and_deploy_gh_release "traccar" "traccar/traccar" "prebuild" "latest" "/opt/traccar" "traccar-linux-64*.zip"
msg_info "Installing Traccar v${RELEASE}"
curl -fsSL "https://github.com/traccar/traccar/releases/download/v${RELEASE}/traccar-linux-64-${RELEASE}.zip" -o "traccar-linux-64-${RELEASE}.zip" msg_info "Configuring Traccar"
$STD unzip traccar-linux-64-${RELEASE}.zip cd /opt/traccar
$STD ./traccar.run $STD ./traccar.run
msg_ok "Configured Traccar"
msg_info "Starting service"
systemctl enable -q --now traccar systemctl enable -q --now traccar
rm -rf README.txt traccar-linux-64-${RELEASE}.zip traccar.run msg_ok "Service started"
msg_ok "Installed Traccar v${RELEASE}"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
[ -f README.txt ] || [ -f traccar.run ] && rm -f README.txt traccar.run
$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"

View File

@@ -17,15 +17,8 @@ msg_info "Installing Dependencies"
$STD apt-get install -y apt-transport-https $STD apt-get install -y apt-transport-https
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
RELEASE=$(curl -fsSL https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1) fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
msg_info "Installing Traefik v${RELEASE}"
mkdir -p /etc/traefik/{conf.d,ssl} mkdir -p /etc/traefik/{conf.d,ssl}
curl -fsSL "https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz" -o "traefik_v${RELEASE}_linux_amd64.tar.gz"
tar -C /tmp -xzf traefik*.tar.gz
mv /tmp/traefik /usr/bin/
rm -rf traefik*.tar.gz
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Traefik v${RELEASE}"
msg_info "Creating Traefik configuration" msg_info "Creating Traefik configuration"
cat <<EOF >/etc/traefik/traefik.yaml cat <<EOF >/etc/traefik/traefik.yaml
@@ -84,7 +77,7 @@ EOF
msg_ok "Created Traefik configuration" msg_ok "Created Traefik configuration"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/traefik.service cat <<'EOF' >/etc/systemd/system/traefik.service
[Unit] [Unit]
Description=Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience Description=Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience
@@ -97,7 +90,6 @@ ExecReload=/bin/kill -USR1 \$MAINPID
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now traefik systemctl enable -q --now traefik
msg_ok "Created Service" msg_ok "Created Service"

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ), twingate-andrewb
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.twingate.com/docs/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
install -d -m 0700 /etc/twingate
access_token=""
refresh_token=""
network=""
while [[ -z "$access_token" ]]; do
read -rp "${TAB3}Please enter your access token: " access_token
done
while [[ -z "$refresh_token" ]]; do
read -rp "${TAB3}Please enter your refresh token: " refresh_token
done
while [[ -z "$network" ]]; do
read -rp "${TAB3}Please enter your network name: " network
done
msg_info "Setup Twingate Repository"
curl -fsSL "https://packages.twingate.com/apt/gpg.key" | gpg --dearmor -o /usr/share/keyrings/twingate-connector-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/twingate-connector-keyring.gpg] https://packages.twingate.com/apt/ /" > /etc/apt/sources.list.d/twingate.list
$STD apt-get update
msg_ok "Setup Twingate Repository"
msg_info "Setup Twingate Connector"
$STD apt-get install -y twingate-connector
msg_ok "Setup Twingate Connector"
msg_info "Configure Twingate-Connector"
{
echo "TWINGATE_NETWORK=${network}"
echo "TWINGATE_ACCESS_TOKEN=${access_token}"
echo "TWINGATE_REFRESH_TOKEN=${refresh_token}"
echo "TWINGATE_LABEL_HOSTNAME=$(hostname)"
echo "TWINGATE_LABEL_DEPLOYED_BY=proxmox"
} > /etc/twingate/connector.conf
chmod 600 /etc/twingate/connector.conf
msg_ok "Configured Twingate-Connector"
msg_info "Starting Service"
systemctl enable -q --now twingate-connector
msg_ok "Service started"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,12 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y git
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball"
msg_info "Setting up postgresql" msg_info "Setting up postgresql"
DB_NAME=umamidb DB_NAME=umamidb
@@ -39,17 +36,16 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
} >>~/umami.creds } >>~/umami.creds
msg_ok "Set up postgresql" msg_ok "Set up postgresql"
msg_info "Installing Umami (Patience)" msg_info "Configuring Umami"
git clone -q https://github.com/umami-software/umami.git /opt/umami
cd /opt/umami cd /opt/umami
$STD yarn install $STD yarn install
echo -e "DATABASE_URL=postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME" >>/opt/umami/.env echo -e "DATABASE_URL=postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME" >>/opt/umami/.env
$STD yarn run build $STD yarn run build
msg_ok "Installed Umami" msg_ok "Configured Umami"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/umami.service cat <<EOF >/etc/systemd/system/umami.service
echo "[Unit] [Unit]
Description=umami Description=umami
[Service] [Service]

View File

@@ -13,22 +13,18 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y git
$STD apt-get install -y ca-certificates
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "uptime-kuma" "louislam/uptime-kuma" "tarball"
msg_info "Installing Uptime Kuma" msg_info "Installing Uptime Kuma"
$STD git clone https://github.com/louislam/uptime-kuma.git
cd /opt/uptime-kuma cd /opt/uptime-kuma
$STD npm run setup $STD npm ci --omit dev
$STD npm run download-dist
msg_ok "Installed Uptime Kuma" msg_ok "Installed Uptime Kuma"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/uptime-kuma.service" cat <<EOF >/etc/systemd/system/uptime-kuma.service
echo "[Unit] [Unit]
Description=uptime-kuma Description=uptime-kuma
[Service] [Service]
@@ -39,8 +35,9 @@ WorkingDirectory=/opt/uptime-kuma
ExecStart=/usr/bin/npm start ExecStart=/usr/bin/npm start
[Install] [Install]
WantedBy=multi-user.target" >$service_path WantedBy=multi-user.target
$STD systemctl enable --now uptime-kuma EOF
systemctl enable -q --now uptime-kuma
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -14,19 +14,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="imagick,bz2,sqlite3" setup_php
$STD apt-get install -y \ fetch_and_deploy_gh_release "wallos" "ellite/Wallos" "tarball"
apache2 \
libapache2-mod-php \
php8.2-{mbstring,gd,curl,intl,imagick,bz2,sqlite3,zip,xml}
msg_ok "Installed Dependencies"
msg_info "Installing Wallos (Patience)" msg_info "Installing Wallos (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v${RELEASE}.zip
mv Wallos-${RELEASE} /opt/wallos
cd /opt/wallos cd /opt/wallos
mv /opt/wallos/db/wallos.empty.db /opt/wallos/db/wallos.db mv /opt/wallos/db/wallos.empty.db /opt/wallos/db/wallos.db
chown -R www-data:www-data /opt/wallos chown -R www-data:www-data /opt/wallos
@@ -73,7 +64,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$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"

View File

@@ -14,19 +14,14 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y gcc
gcc
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_go setup_go
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
msg_info "Setup Watcharr" msg_info "Setup Watcharr"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
mv Watcharr-${RELEASE}/ /opt/watcharr
cd /opt/watcharr cd /opt/watcharr
$STD npm i $STD npm i
$STD npm run build $STD npm run build
@@ -35,14 +30,6 @@ cd server
export CGO_ENABLED=1 GOOS=linux export CGO_ENABLED=1 GOOS=linux
go mod download go mod download
go build -o ./watcharr go build -o ./watcharr
cat <<EOF >/opt/start.sh
#! /bin/bash
source ~/.bashrc
cd /opt/watcharr/server
./watcharr
EOF
chmod +x /opt/start.sh
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup Watcharr" msg_ok "Setup Watcharr"
msg_info "Creating Service" msg_info "Creating Service"
@@ -53,7 +40,7 @@ After=network.target
[Service] [Service]
WorkingDirectory=/opt/watcharr/server WorkingDirectory=/opt/watcharr/server
ExecStart=/opt/start.sh ExecStart=/opt/watcharr/server/watcharr
Restart=always Restart=always
User=root User=root
@@ -67,7 +54,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$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"

View File

@@ -14,14 +14,15 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y {arp-scan,ieee-data,libwww-perl} $STD apt-get install -y \
arp-scan \
ieee-data \
libwww-perl
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing WatchYourLAN" fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4)
curl -fsSL "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb" -o "watchyourlan_${RELEASE}_linux_amd64.deb" msg_info "Configuring WatchYourLAN"
$STD dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb
rm watchyourlan_${RELEASE}_linux_amd64.deb
mkdir /data mkdir /data
cat <<EOF >/data/config.yaml cat <<EOF >/data/config.yaml
arp_timeout: "500" arp_timeout: "500"
@@ -41,7 +42,7 @@ shoutrrr_url: ""
theme: solar theme: solar
timeout: 60 timeout: 60
EOF EOF
msg_ok "Installed WatchYourLAN" msg_ok "Configured WatchYourLAN"
msg_info "Creating Service" msg_info "Creating Service"
sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service

View File

@@ -13,13 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PHP_VERSION="8.3" PHP_MODULE="mysql" PHP_APACHE="YES" PHP_MAX_EXECUTION_TIME="600" setup_php
$STD apt-get install -y \
libapache2-mod-php \
php8.2-{curl,mbstring,mysql,xml,zip,gd}
msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball"
msg_info "Setting up Database" msg_info "Setting up Database"
DB_NAME=wavelog DB_NAME=wavelog
@@ -36,22 +32,11 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/wavelog.creds } >>~/wavelog.creds
msg_ok "Set up database" msg_ok "Set up database"
msg_info "Setting up PHP" msg_info "Configuring Wavelog"
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.2/apache2/php.ini
sed -i '/memory_limit/s/= .*/= 256M/' /etc/php/8.2/apache2/php.ini
sed -i '/upload_max_filesize/s/= .*/= 8M/' /etc/php/8.2/apache2/php.ini
msg_ok "Set up PHP"
msg_info "Installing Wavelog"
RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
$STD unzip ${RELEASE}.zip
mv wavelog-${RELEASE}/ /opt/wavelog
chown -R www-data:www-data /opt/wavelog/ chown -R www-data:www-data /opt/wavelog/
find /opt/wavelog/ -type d -exec chmod 755 {} \; find /opt/wavelog/ -type d -exec chmod 755 {} \;
find /opt/wavelog/ -type f -exec chmod 664 {} \; find /opt/wavelog/ -type f -exec chmod 664 {} \;
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Configured Wavelog"
msg_ok "Installed Wavelog"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/wavelog.conf cat <<EOF >/etc/apache2/sites-available/wavelog.conf
@@ -78,7 +63,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f ${RELEASE}.zip
$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"

View File

@@ -20,6 +20,7 @@ msg_ok "Installed Dependencies"
NODE_VERSION="20" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs NODE_VERSION="20" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz"
msg_info "Set up PostgreSQL" msg_info "Set up PostgreSQL"
DB_NAME="wiki" DB_NAME="wiki"
@@ -39,17 +40,11 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
} >>~/wikijs.creds } >>~/wikijs.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Setup Wiki.js" msg_info "Configuring Wiki.js"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" -o ""$temp_file""
mkdir /opt/wikijs
tar -xzf "$temp_file" -C /opt/wikijs
mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml
sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured Wiki.js"
msg_ok "Installed Wiki.js"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/wikijs.service cat <<EOF >/etc/systemd/system/wikijs.service
@@ -75,7 +70,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$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"

View File

@@ -13,28 +13,27 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y git
msg_ok "Installed Dependencies"
msg_info "Installing WireGuard" msg_info "Installing WireGuard"
$STD apt-get install -y wireguard wireguard-tools net-tools iptables $STD apt-get install -y wireguard wireguard-tools net-tools iptables
DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install -y iptables-persistent &>/dev/null DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install -y iptables-persistent &>/dev/null
$STD netfilter-persistent reload $STD netfilter-persistent reload
msg_ok "Installed WireGuard" msg_ok "Installed WireGuard"
msg_info "Installing WGDashboard" read -r -p "${TAB3}Would you like to add WGDashboard? <y/N> " prompt
git clone -q https://github.com/donaldzou/WGDashboard.git /etc/wgdashboard if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
cd /etc/wgdashboard/src fetch_and_deploy_gh_release "wgdashboard" "donaldzou/WGDashboard" "tarball" "latest" "/etc/wgdashboard"
chmod u+x wgd.sh
$STD ./wgd.sh install
echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
$STD sysctl -p /etc/sysctl.conf
msg_ok "Installed WGDashboard"
msg_info "Create Example Config for WGDashboard" msg_info "Installing WGDashboard"
private_key=$(wg genkey) cd /etc/wgdashboard/src
cat <<EOF >/etc/wireguard/wg0.conf chmod u+x wgd.sh
$STD ./wgd.sh install
echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
$STD sysctl -p /etc/sysctl.conf
msg_ok "Installed WGDashboard"
msg_info "Create Example Config for WGDashboard"
private_key=$(wg genkey)
cat <<EOF >/etc/wireguard/wg0.conf
[Interface] [Interface]
PrivateKey = ${private_key} PrivateKey = ${private_key}
Address = 10.0.0.1/24 Address = 10.0.0.1/24
@@ -43,10 +42,10 @@ PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACC
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;
ListenPort = 51820 ListenPort = 51820
EOF EOF
msg_ok "Created Example Config for WGDashboard" msg_ok "Created Example Config for WGDashboard"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/wg-dashboard.service cat <<EOF >/etc/systemd/system/wg-dashboard.service
[Unit] [Unit]
After=syslog.target network-online.target After=syslog.target network-online.target
Wants=wg-quick.target Wants=wg-quick.target
@@ -66,8 +65,9 @@ Restart=always
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now wg-dashboard systemctl enable -q --now wg-dashboard
msg_ok "Created Service" msg_ok "Created Service"
fi
motd_ssh motd_ssh
customize customize

View File

@@ -13,13 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies (Patience)" PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,snmp,imap,mysql" PHP_APACHE="YES" setup_php
$STD apt-get install -y \
apache2 \
php8.2-{bcmath,common,cli,curl,fpm,gd,snmp,imap,mbstring,mysql,xml,zip} \
libapache2-mod-php
msg_ok "Installed Dependencies"
setup_mariadb setup_mariadb
msg_info "Setting up Database" msg_info "Setting up Database"

View File

@@ -17,17 +17,8 @@ msg_info "Installing Dependencies"
$STD apt-get install -y ffmpeg $STD apt-get install -y ffmpeg
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing ${APPLICATION}" fetch_and_deploy_gh_release "yt-dlp-webui" "marcopiovanello/yt-dlp-web-ui" "singlefile" "latest" "/usr/local/bin" "yt-dlp-webui_linux-amd64"
RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') fetch_and_deploy_gh_release "yt-dlp" "yt-dlp/yt-dlp" "singlefile" "latest" "/usr/local/bin" "yt-dlp"
curl -fsSL "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -o "/usr/local/bin/yt-dlp-webui"
chmod +x /usr/local/bin/yt-dlp-webui
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed ${APPLICATION}"
msg_info "Installing yt-dlp"
curl -fsSL "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp" -o "/usr/local/bin/yt-dlp"
chmod a+rx /usr/local/bin/yt-dlp
msg_ok "Installed yt-dlp"
msg_info "Setting up ${APPLICATION}" msg_info "Setting up ${APPLICATION}"
mkdir -p /opt/yt-dlp-webui mkdir -p /opt/yt-dlp-webui

View File

@@ -16,6 +16,7 @@ update_os
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
fetch_and_deploy_gh_release "zipline" "diced/zipline" "tarball"
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"
DB_NAME=ziplinedb DB_NAME=ziplinedb
@@ -37,11 +38,6 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing Zipline (Patience)" msg_info "Installing Zipline (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v"${RELEASE}".zip
mv zipline-"${RELEASE}" /opt/zipline
cd /opt/zipline cd /opt/zipline
cat <<EOF >/opt/zipline/.env cat <<EOF >/opt/zipline/.env
DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME
@@ -55,7 +51,6 @@ EOF
mkdir -p /opt/zipline-uploads mkdir -p /opt/zipline-uploads
$STD pnpm install $STD pnpm install
$STD pnpm build $STD pnpm build
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Zipline" msg_ok "Installed Zipline"
msg_info "Creating Service" msg_info "Creating Service"
@@ -77,8 +72,8 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f /opt/v${RELEASE}.zip
$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"

View File

@@ -17,7 +17,7 @@ msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y ca-certificates $STD apt-get install -y ca-certificates
msg_ok "Installed Dependecies" msg_ok "Installed Dependecies"
PG_VERSION="17" PG_MODULES="common" setup_postgresql PG_VERSION="17" setup_postgresql
msg_info "Installing Postgresql" msg_info "Installing Postgresql"
DB_NAME="zitadel" DB_NAME="zitadel"
@@ -39,11 +39,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
} >>~/zitadel.creds } >>~/zitadel.creds
msg_ok "Installed PostgreSQL" msg_ok "Installed PostgreSQL"
msg_info "Installing Zitadel" fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-amd64.tar.gz"
RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
mv zitadel-linux-amd64/zitadel /usr/local/bin
msg_ok "Installed Zitadel"
msg_info "Setting up Zitadel Environments" msg_info "Setting up Zitadel Environments"
mkdir -p /opt/zitadel mkdir -p /opt/zitadel
@@ -114,7 +110,7 @@ NoNewPrivileges=true
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q zitadel.service systemctl enable -q zitadel
msg_ok "Created Services" msg_ok "Created Services"
msg_info "Zitadel initial setup" msg_info "Zitadel initial setup"
@@ -122,7 +118,6 @@ zitadel start-from-init --masterkeyFile /opt/zitadel/.masterkey --config /opt/zi
sleep 60 sleep 60
kill $(lsof -i | awk '/zitadel/ {print $2}' | head -n1) kill $(lsof -i | awk '/zitadel/ {print $2}' | head -n1)
useradd zitadel useradd zitadel
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Zitadel initialized" msg_ok "Zitadel initialized"
msg_info "Set ExternalDomain to current IP and restart Zitadel" msg_info "Set ExternalDomain to current IP and restart Zitadel"
@@ -145,7 +140,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf ~/zitadel-linux-amd64
$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"

View File

@@ -13,15 +13,8 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Zoraxy (Patience)" fetch_and_deploy_gh_release "zoraxy" "tobychui/zoraxy" "singlefile" "latest" "/opt/zoraxy" "zoraxy_linux_amd64"
RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64" -o zoraxy_linux_amd64
mkdir -p /opt/zoraxy
mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy
chmod +x /opt/zoraxy/zoraxy
ln -s /opt/zoraxy/zoraxy /usr/local/bin/zoraxy ln -s /opt/zoraxy/zoraxy /usr/local/bin/zoraxy
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Zoraxy"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/zoraxy.service cat <<EOF >/etc/systemd/system/zoraxy.service

View File

@@ -17,11 +17,9 @@ msg_info "Installing Dependencies"
$STD apt-get install -y apache2-utils $STD apt-get install -y apache2-utils
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Zot Registry" fetch_and_deploy_gh_release "zot" "project-zot/zot" "singlefile" "latest" "/usr/bin" "zot-linux-amd64"
RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot msg_info "Configuring Zot Registry"
chmod +x /usr/bin/zot
chown root:root /usr/bin/zot
mkdir -p /etc/zot mkdir -p /etc/zot
curl -fsSL https://raw.githubusercontent.com/project-zot/zot/refs/heads/main/examples/config-ui.json -o /etc/zot/config.json curl -fsSL https://raw.githubusercontent.com/project-zot/zot/refs/heads/main/examples/config-ui.json -o /etc/zot/config.json
ZOTPASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) ZOTPASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
@@ -31,8 +29,7 @@ $STD htpasswd -b -B -c /etc/zot/htpasswd admin "$ZOTPASSWORD"
echo "Zot User: admin" echo "Zot User: admin"
echo "Zot Password: $ZOTPASSWORD" echo "Zot Password: $ZOTPASSWORD"
} >>~/zot.creds } >>~/zot.creds
echo "${RELEASE}" >~/.${APPLICATION} msg_ok "Configured Zot Registry"
msg_ok "Installed Zot Registry"
msg_info "Setup Service" msg_info "Setup Service"
cat <<EOF >/etc/systemd/system/zot.service cat <<EOF >/etc/systemd/system/zot.service

View File

@@ -13,19 +13,15 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Z-Wave JS UI" fetch_and_deploy_gh_release "zwave-js-ui" "zwave-js/zwave-js-ui" "prebuild" "latest" "/opt/zwave-js-ui" "zwave-js-ui*-linux.zip"
mkdir -p /opt/zwave-js-ui
msg_info "Configuring Z-Wave JS UI"
mkdir -p /opt/zwave_store mkdir -p /opt/zwave_store
cd /opt/zwave-js-ui
RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o "zwave-js-ui-${RELEASE}-linux.zip"
$STD unzip zwave-js-ui-${RELEASE}-linux.zip
cat <<EOF >/opt/.env cat <<EOF >/opt/.env
ZWAVEJS_EXTERNAL_CONFIG=/opt/zwave_store/.config-db ZWAVEJS_EXTERNAL_CONFIG=/opt/zwave_store/.config-db
STORE_DIR=/opt/zwave_store STORE_DIR=/opt/zwave_store
EOF EOF
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured Z-Wave JS UI"
msg_ok "Installed Z-Wave JS UI"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/zwave-js-ui.service cat <<EOF >/etc/systemd/system/zwave-js-ui.service
@@ -50,7 +46,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm zwave-js-ui-${RELEASE}-linux.zip
$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"

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="100%" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" width="100%" version="1.1" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
<desc>Proxmox VE Helper-Scripts</desc>
<title>ProxmoxVE</title>
<defs>
<bx:grid x="0" y="0" width="15" height="15"/>
</defs>
<g transform="matrix(0, -1.333333, 1.333333, 0, 7.499997, 52.499993)" style="transform-origin: 67.5px 22.5px;">
<g transform="matrix(1, 0, 0, 1, 0, 5.823999)">
<path d="M 75 -20.824 L 120 24.176 L 105 24.176 L 75 -5.824 L 45 24.176 L 30 24.176 L 75 -20.824 Z" style="fill: rgb(0, 128, 196);"/>
<path d="M 60 54.176 L 105 9.176 L 90 9.176 L 60 39.176 L 30 9.176 L 15 9.176 L 60 54.176 Z" style="stroke-width: 1; fill: rgb(140, 154, 154);"/>
<path d="M 75 -20.824 L 75 -5.824 L 45 24.176 L 30 24.176 L 75 -20.824 Z" style="fill: rgb(0, 128, 196);"/>
<path d="M 30 24.176 L 33.75 12.926 L 37.5 16.676 L 33.75 20.426 L 30 24.176 Z" style="fill: rgb(84, 91, 90);"/>
</g>
<path d="M 105 15 L 101.25 26.25 L 97.5 22.5 L 101.25 18.75 L 105 15 Z" style="fill: rgb(18, 85, 112);"/>
</g>
<text style="fill: rgb(140, 154, 154); font-family: Arial, sans-serif; font-size: 4.8px; white-space: pre; stroke-width: 1; transform-origin: 80.82px 79.594px;" transform="matrix(0.707107, -0.707107, 0.707107, 0.707107, -21.326438, -37.194571)" x="45.272" y="79.196">Helper-Scripts.com</text>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<svg height="100%" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" width="100%" version="1.1" viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
<desc>Proxmox VE Helper-Scripts</desc>
<title>ProxmoxVE</title>
<defs>
<bx:grid x="0" y="0" width="15" height="15"/>
</defs>
<g transform="matrix(0, -1.333333, 1.333333, 0, 7.499997, 52.499993)" style="transform-origin: 67.5px 22.5px;">
<g transform="matrix(1, 0, 0, 1, 0, 5.823999)">
<path d="M 75 -20.824 L 120 24.176 L 105 24.176 L 75 -5.824 L 45 24.176 L 30 24.176 L 75 -20.824 Z" style="fill: rgb(0, 128, 196);"/>
<path d="M 60 54.176 L 105 9.176 L 90 9.176 L 60 39.176 L 30 9.176 L 15 9.176 L 60 54.176 Z" style="stroke-width: 1; fill: rgb(140, 154, 154);"/>
<path d="M 75 -20.824 L 75 -5.824 L 45 24.176 L 30 24.176 L 75 -20.824 Z" style="fill: rgb(0, 128, 196);"/>
<path d="M 30 24.176 L 33.75 12.926 L 37.5 16.676 L 33.75 20.426 L 30 24.176 Z" style="fill: rgb(84, 91, 90);"/>
</g>
<path d="M 105 15 L 101.25 26.25 L 97.5 22.5 L 101.25 18.75 L 105 15 Z" style="fill: rgb(18, 85, 112);"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

248
tools/addon/copyparty.sh Normal file
View File

@@ -0,0 +1,248 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/9001/copyparty
function header_info() {
clear
cat <<"EOF"
______ ____ __
/ ____/___ ____ __ __/ __ \____ ______/ /___ __
/ / / __ \/ __ \/ / / / /_/ / __ `/ ___/ __/ / / /
/ /___/ /_/ / /_/ / /_/ / ____/ /_/ / / / /_/ /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/ \__/\__, /
/_/ /____/ /____/
EOF
}
YW=$(echo "\033[33m")
GN=$(echo "\033[1;92m")
RD=$(echo "\033[01;31m")
BL=$(echo "\033[36m")
CL=$(echo "\033[m")
CM="${GN}✔️${CL}"
CROSS="${RD}✖️${CL}"
INFO="${BL}${CL}"
APP="CopyParty"
BIN_PATH="/usr/local/bin/copyparty-sfx.py"
CONF_PATH="/etc/copyparty.conf"
LOG_PATH="/var/log/copyparty"
DATA_PATH="/var/lib/copyparty"
SERVICE_PATH_DEB="/etc/systemd/system/copyparty.service"
SERVICE_PATH_ALP="/etc/init.d/copyparty"
SVC_USER="copyparty"
SVC_GROUP="copyparty"
SRC_URL="https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py"
DEFAULT_PORT=3923
if [[ -f "/etc/alpine-release" ]]; then
OS="Alpine"
PKG_MANAGER="apk add --no-cache"
SERVICE_PATH="$SERVICE_PATH_ALP"
elif [[ -f "/etc/debian_version" ]]; then
OS="Debian"
PKG_MANAGER="apt-get install -y"
SERVICE_PATH="$SERVICE_PATH_DEB"
else
echo -e "${CROSS} Unsupported OS detected. Exiting."
exit 1
fi
header_info
function msg_info() { echo -e "${INFO} ${YW}$1...${CL}"; }
function msg_ok() { echo -e "${CM} ${GN}$1${CL}"; }
function msg_error() { echo -e "${CROSS} ${RD}$1${CL}"; }
function setup_user_and_dirs() {
msg_info "Creating $SVC_USER user and directories"
if ! id "$SVC_USER" &>/dev/null; then
if [[ "$OS" == "Debian" ]]; then
useradd -r -s /sbin/nologin -d "$DATA_PATH" "$SVC_USER"
else
addgroup -S "$SVC_GROUP" 2>/dev/null || true
adduser -S -D -H -G "$SVC_GROUP" -h "$DATA_PATH" -s /sbin/nologin "$SVC_USER" 2>/dev/null || true
fi
fi
mkdir -p "$DATA_PATH" "$LOG_PATH"
chown -R "$SVC_USER:$SVC_GROUP" "$DATA_PATH" "$LOG_PATH"
chmod 755 "$DATA_PATH" "$LOG_PATH"
msg_ok "User/Group/Dirs ready"
}
function uninstall_copyparty() {
msg_info "Uninstalling $APP"
if [[ "$OS" == "Debian" ]]; then
systemctl disable --now copyparty &>/dev/null
rm -f "$SERVICE_PATH_DEB"
else
rc-service copyparty stop &>/dev/null
rc-update del copyparty &>/dev/null
rm -f "$SERVICE_PATH_ALP"
fi
rm -f "$BIN_PATH" "$CONF_PATH"
msg_ok "$APP has been uninstalled."
exit 0
}
function update_copyparty() {
msg_info "Updating $APP"
curl -fsSL "$SRC_URL" -o "$BIN_PATH"
chmod +x "$BIN_PATH"
msg_ok "Updated $APP"
exit 0
}
if [[ -f "$BIN_PATH" ]]; then
echo -e "${YW}⚠️ $APP is already installed.${CL}"
echo -n "Uninstall $APP? (y/N): "
read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
uninstall_copyparty
fi
echo -n "Update $APP? (y/N): "
read -r update_prompt
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
update_copyparty
else
echo -e "${YW}⚠️ Update skipped. Exiting.${CL}"
exit 0
fi
fi
msg_info "Installing dependencies"
if [[ "$OS" == "Debian" ]]; then
$PKG_MANAGER python3 curl &>/dev/null
else
$PKG_MANAGER python3 curl &>/dev/null
fi
msg_ok "Dependencies installed"
setup_user_and_dirs
msg_info "Downloading $APP"
curl -fsSL "$SRC_URL" -o "$BIN_PATH"
chmod +x "$BIN_PATH"
chown "$SVC_USER:$SVC_GROUP" "$BIN_PATH"
msg_ok "Downloaded to $BIN_PATH"
echo -n "Enter port for $APP (default: $DEFAULT_PORT): "
read -r PORT
PORT=${PORT:-$DEFAULT_PORT}
echo -n "Set data directory (default: $DATA_PATH): "
read -r USER_DATA_PATH
USER_DATA_PATH=${USER_DATA_PATH:-$DATA_PATH}
mkdir -p "$USER_DATA_PATH"
chown "$SVC_USER:$SVC_GROUP" "$USER_DATA_PATH"
echo -n "Enable authentication? (Y/n): "
read -r auth_enable
if [[ "${auth_enable,,}" =~ ^(n|no)$ ]]; then
AUTH_LINE=""
msg_ok "Configured without authentication"
else
echo -n "Set admin username [default: admin]: "
read -r ADMIN_USER
ADMIN_USER=${ADMIN_USER:-admin}
echo -n "Set admin password [default: helper-scripts.com]: "
read -rs ADMIN_PASS
ADMIN_PASS=${ADMIN_PASS:-helper-scripts.com}
echo
AUTH_LINE="auth vhost=/:$ADMIN_USER:$ADMIN_PASS:admin,,"
msg_ok "Configured with admin user: $ADMIN_USER"
fi
msg_info "Writing config to $CONF_PATH"
msg_info "Writing config to $CONF_PATH"
{
echo "[global]"
echo " p: $PORT"
echo " ansi"
echo " e2dsa"
echo " e2ts"
echo " theme: 2"
echo " grid"
echo
if [[ -n "$ADMIN_USER" && -n "$ADMIN_PASS" ]]; then
echo "[accounts]"
echo " $ADMIN_USER: $ADMIN_PASS"
echo
fi
echo "[/]"
echo " $USER_DATA_PATH"
echo " accs:"
if [[ -n "$ADMIN_USER" ]]; then
echo " rw: *"
echo " rwmda: $ADMIN_USER"
else
echo " rw: *"
fi
} >"$CONF_PATH"
chmod 640 "$CONF_PATH"
chown "$SVC_USER:$SVC_GROUP" "$CONF_PATH"
msg_ok "Config written"
msg_info "Creating service"
if [[ "$OS" == "Debian" ]]; then
cat <<EOF >"$SERVICE_PATH_DEB"
[Unit]
Description=Copyparty file server
After=network.target
[Service]
User=$SVC_USER
Group=$SVC_GROUP
WorkingDirectory=$DATA_PATH
ExecStart=/usr/bin/python3 /usr/local/bin/copyparty-sfx.py -c /etc/copyparty.conf
Restart=always
StandardOutput=append:/var/log/copyparty/copyparty.log
StandardError=append:/var/log/copyparty/copyparty.err
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now copyparty
elif [[ "$OS" == "Alpine" ]]; then
cat <<'EOF' >"$SERVICE_PATH_ALP"
#!/sbin/openrc-run
name="copyparty"
description="Copyparty file server"
command="$(command -v python3)"
command_args="/usr/local/bin/copyparty-sfx.py -c /etc/copyparty.conf"
command_background=true
directory="/var/lib/copyparty"
pidfile="/run/copyparty.pid"
output_log="/var/log/copyparty/copyparty.log"
error_log="/var/log/copyparty/copyparty.err"
depend() {
need net
}
EOF
chmod +x "$SERVICE_PATH_ALP"
rc-update add copyparty default >/dev/null 2>&1
rc-service copyparty restart >/dev/null 2>&1
fi
msg_ok "Service created and started"
IFACE=$(ip -4 route | awk '/default/ {print $5; exit}')
IP=$(ip -4 addr show "$IFACE" | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1)
[[ -z "$IP" ]] && IP=$(hostname -I | awk '{print $1}')
[[ -z "$IP" ]] && IP="127.0.0.1"
echo -e "${CM} ${GN}$APP is running at: ${BL}http://$IP:$PORT${CL}"
echo -e "${INFO} Storage directory: ${YW}$USER_DATA_PATH${CL}"
if [[ -n "$AUTH_LINE" ]]; then
echo -e "${INFO} Login: ${GN}${ADMIN_USER}${CL} / ${GN}${ADMIN_PASS}${CL}"
fi

6
tools/headers/copyparty Normal file
View File

@@ -0,0 +1,6 @@
______ ____ __
/ ____/___ ____ __ __/ __ \____ ______/ /___ __
/ / / __ \/ __ \/ / / / /_/ / __ `/ ___/ __/ / / /
/ /___/ /_/ / /_/ / /_/ / ____/ /_/ / / / /_/ /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/ \__/\__, /
/_/ /____/ /____/