mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-05 02:42:50 +00:00
Compare commits
174 Commits
2025-08-09
...
2025-08-19
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34582c4dc4 | ||
|
|
4495878c4f | ||
|
|
3c33e8b826 | ||
|
|
be6cc7ddbb | ||
|
|
615049ce5c | ||
|
|
f9e5c46b21 | ||
|
|
913102d66f | ||
|
|
07628f3b76 | ||
|
|
291d364158 | ||
|
|
98c4a2ccae | ||
|
|
c60098d8eb | ||
|
|
7df1dbaf17 | ||
|
|
304c90a1af | ||
|
|
01fe1b1f62 | ||
|
|
fd85e71fcf | ||
|
|
66c03ce1b4 | ||
|
|
067f9eb209 | ||
|
|
cd3dbc864f | ||
|
|
f42f06343d | ||
|
|
e46648ecdc | ||
|
|
206751f517 | ||
|
|
6a06afcbb9 | ||
|
|
bd3e93215b | ||
|
|
94b9aa4025 | ||
|
|
36523dfd33 | ||
|
|
618fa65bc2 | ||
|
|
1dd417fdaa | ||
|
|
4480a70ceb | ||
|
|
5d423888d9 | ||
|
|
81876d6992 | ||
|
|
b777d74dce | ||
|
|
c904da6b94 | ||
|
|
4591b58e66 | ||
|
|
8f7cd0bff9 | ||
|
|
60318fd77b | ||
|
|
50c41cec72 | ||
|
|
ef2e9803d0 | ||
|
|
e428a05b45 | ||
|
|
37e5f7272e | ||
|
|
5560c4eb12 | ||
|
|
be6e2e3cb1 | ||
|
|
7086a15321 | ||
|
|
23f29b14fe | ||
|
|
9aafb65a98 | ||
|
|
296f4577d0 | ||
|
|
1ea1429874 | ||
|
|
3f70f92fbb | ||
|
|
23c6994835 | ||
|
|
70cd362d3e | ||
|
|
aed25098e5 | ||
|
|
a79392149e | ||
|
|
f32647a3d3 | ||
|
|
bb3c77f1b6 | ||
|
|
66a582dd09 | ||
|
|
06eb76c5d9 | ||
|
|
a37f921aff | ||
|
|
5c7e221efa | ||
|
|
7e00889967 | ||
|
|
f1d855e331 | ||
|
|
a33bbd603d | ||
|
|
472ad02d44 | ||
|
|
aed2fbc4b1 | ||
|
|
dabb49d7eb | ||
|
|
61b7b96780 | ||
|
|
a72885b4c1 | ||
|
|
58fe2df6b4 | ||
|
|
5c8bd4b124 | ||
|
|
b6d7ad7c38 | ||
|
|
dd4d518052 | ||
|
|
a99650f969 | ||
|
|
842d73de82 | ||
|
|
65f731d88b | ||
|
|
363685d3d3 | ||
|
|
ff77960aa6 | ||
|
|
8d4a81d28e | ||
|
|
faf10a9d5b | ||
|
|
1b931becaa | ||
|
|
905198116d | ||
|
|
8d65b4624f | ||
|
|
4e17190721 | ||
|
|
9337e2de3c | ||
|
|
c7a7ea763b | ||
|
|
ce71992dd6 | ||
|
|
f68b80fe4a | ||
|
|
79adb4ef9b | ||
|
|
8dda5ac31f | ||
|
|
7d901bc594 | ||
|
|
b6dce8cff1 | ||
|
|
1b43202a79 | ||
|
|
66687c0d21 | ||
|
|
39b9cfcffc | ||
|
|
24f4d2f488 | ||
|
|
ee74400626 | ||
|
|
032709e107 | ||
|
|
65d60fbf1e | ||
|
|
c7b80448dc | ||
|
|
d7a60f6027 | ||
|
|
241ae98c0b | ||
|
|
63f24a8e61 | ||
|
|
1cb87c4087 | ||
|
|
5c22f9775e | ||
|
|
a403da9f47 | ||
|
|
4ce7335482 | ||
|
|
bc52b1a7d7 | ||
|
|
1c5ff8b26a | ||
|
|
967b2a313f | ||
|
|
50410acf8d | ||
|
|
ab07afb7bd | ||
|
|
eee083c7e0 | ||
|
|
31ef36d744 | ||
|
|
13afa93ddf | ||
|
|
7c631eec00 | ||
|
|
82d1a872c7 | ||
|
|
0c23782485 | ||
|
|
ef7c774a24 | ||
|
|
c12ec76181 | ||
|
|
a805e40b04 | ||
|
|
727b713893 | ||
|
|
5cedb8469e | ||
|
|
c612a4daa8 | ||
|
|
87b7166924 | ||
|
|
9b9faf7a53 | ||
|
|
51a1d3c0ef | ||
|
|
8b1c2d6e68 | ||
|
|
21c2ef2915 | ||
|
|
6796e609d0 | ||
|
|
723ac08abb | ||
|
|
35c4c363a0 | ||
|
|
32f99aee54 | ||
|
|
1803ea0323 | ||
|
|
fcf14a93c2 | ||
|
|
549e1ee01e | ||
|
|
c4b7966303 | ||
|
|
2ed4d91f3c | ||
|
|
6a5685505a | ||
|
|
7cc1eaa259 | ||
|
|
0db53c98e0 | ||
|
|
0faf32c4d0 | ||
|
|
5c564b4bd1 | ||
|
|
5b81fc1aaa | ||
|
|
047c7fe53c | ||
|
|
c759269f0a | ||
|
|
7540314f53 | ||
|
|
8d73af0106 | ||
|
|
f1cdef1f9b | ||
|
|
79f3662636 | ||
|
|
c43e5318ae | ||
|
|
7e32903f10 | ||
|
|
ba5c318276 | ||
|
|
634fcb5abb | ||
|
|
5d29a4f11c | ||
|
|
cf62139e07 | ||
|
|
716f1f05ec | ||
|
|
47d773d088 | ||
|
|
f9eb0cfa40 | ||
|
|
2b164f8281 | ||
|
|
6937ca1c67 | ||
|
|
af6c1ae680 | ||
|
|
75335f3362 | ||
|
|
d0dfe1f3a6 | ||
|
|
0ebc6b94ab | ||
|
|
bf110c1814 | ||
|
|
0d7de4f292 | ||
|
|
f7ca7b28df | ||
|
|
27b79a23b6 | ||
|
|
49fbe38981 | ||
|
|
0cd7985f8a | ||
|
|
428fae66c3 | ||
|
|
18c57600c6 | ||
|
|
68d2d3c52c | ||
|
|
76f9232c3a | ||
|
|
4258d44a7d | ||
|
|
c60f04e229 | ||
|
|
6b93869e52 |
179
CHANGELOG.md
179
CHANGELOG.md
@@ -10,8 +10,187 @@
|
|||||||
> [!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-20
|
||||||
|
|
||||||
|
## 2025-08-19
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Debian 13 VM [@MickLesk](https://github.com/MickLesk) ([#6970](https://github.com/community-scripts/ProxmoxVE/pull/6970))
|
||||||
|
- Swizzin ([#6962](https://github.com/community-scripts/ProxmoxVE/pull/6962))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- [core]: create_lxc - fix offline issue with alpine packages [@MickLesk](https://github.com/MickLesk) ([#6994](https://github.com/community-scripts/ProxmoxVE/pull/6994))
|
||||||
|
- OpenObserve: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6961](https://github.com/community-scripts/ProxmoxVE/pull/6961))
|
||||||
|
- Update hev-socks5-server-install.sh [@iAzamat2](https://github.com/iAzamat2) ([#6953](https://github.com/community-scripts/ProxmoxVE/pull/6953))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Glances (+ Feature Bump) [@MickLesk](https://github.com/MickLesk) ([#6976](https://github.com/community-scripts/ProxmoxVE/pull/6976))
|
||||||
|
- [core]: add new features to create_lxc [@MickLesk](https://github.com/MickLesk) ([#6979](https://github.com/community-scripts/ProxmoxVE/pull/6979))
|
||||||
|
- [core]: extend setup_uv to work with alpine [@MickLesk](https://github.com/MickLesk) ([#6978](https://github.com/community-scripts/ProxmoxVE/pull/6978))
|
||||||
|
- Immich: Bump version to 1.138.1 [@vhsdream](https://github.com/vhsdream) ([#6984](https://github.com/community-scripts/ProxmoxVE/pull/6984))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Tdarr [@MickLesk](https://github.com/MickLesk) ([#6969](https://github.com/community-scripts/ProxmoxVE/pull/6969))
|
||||||
|
- Refactor: The Lounge [@tremor021](https://github.com/tremor021) ([#6958](https://github.com/community-scripts/ProxmoxVE/pull/6958))
|
||||||
|
- Refactor: TeddyCloud [@tremor021](https://github.com/tremor021) ([#6963](https://github.com/community-scripts/ProxmoxVE/pull/6963))
|
||||||
|
- Refactor: Technitium DNS [@tremor021](https://github.com/tremor021) ([#6968](https://github.com/community-scripts/ProxmoxVE/pull/6968))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- [web]: update logos from reactive-resume & slskd [@MickLesk](https://github.com/MickLesk) ([#6990](https://github.com/community-scripts/ProxmoxVE/pull/6990))
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- emby: fix update output [@MickLesk](https://github.com/MickLesk) ([#6791](https://github.com/community-scripts/ProxmoxVE/pull/6791))
|
||||||
|
- archivebox: fix wrong formatted uv command [@MickLesk](https://github.com/MickLesk) ([#6794](https://github.com/community-scripts/ProxmoxVE/pull/6794))
|
||||||
|
- Outline: Fixes for install and update procedures [@tremor021](https://github.com/tremor021) ([#6806](https://github.com/community-scripts/ProxmoxVE/pull/6806))
|
||||||
|
- Palmr: fix release version parsing // increase RAM [@vhsdream](https://github.com/vhsdream) ([#6800](https://github.com/community-scripts/ProxmoxVE/pull/6800))
|
||||||
|
- myspeed: fix update process if no data exist [@MickLesk](https://github.com/MickLesk) ([#6795](https://github.com/community-scripts/ProxmoxVE/pull/6795))
|
||||||
|
- crafty-controller: fix update output [@MickLesk](https://github.com/MickLesk) ([#6793](https://github.com/community-scripts/ProxmoxVE/pull/6793))
|
||||||
|
- GLPI: Fix timezone command [@tremor021](https://github.com/tremor021) ([#6783](https://github.com/community-scripts/ProxmoxVE/pull/6783))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Docker LXC: Add Portainer info [@tremor021](https://github.com/tremor021) ([#6803](https://github.com/community-scripts/ProxmoxVE/pull/6803))
|
||||||
|
- AgentDVR: Added update function [@tremor021](https://github.com/tremor021) ([#6804](https://github.com/community-scripts/ProxmoxVE/pull/6804))
|
||||||
|
|
||||||
|
## 2025-08-12
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pulse: binary path changed AGAIN; other fixes [@vhsdream](https://github.com/vhsdream) ([#6770](https://github.com/community-scripts/ProxmoxVE/pull/6770))
|
||||||
|
- fix alpine syncthing config not being created [@GamerHun1238](https://github.com/GamerHun1238) ([#6773](https://github.com/community-scripts/ProxmoxVE/pull/6773))
|
||||||
|
- change owner of hortusfox directory [@snow2k9](https://github.com/snow2k9) ([#6763](https://github.com/community-scripts/ProxmoxVE/pull/6763))
|
||||||
|
|
||||||
|
## 2025-08-11
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Reactive Resume: use new release parsing; other fixes [@vhsdream](https://github.com/vhsdream) ([#6744](https://github.com/community-scripts/ProxmoxVE/pull/6744))
|
||||||
|
|
||||||
## 2025-08-10
|
## 2025-08-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix/thinpool detection as it allows to delete active thinpool with different name than "data" [@onethree7](https://github.com/onethree7) ([#6730](https://github.com/community-scripts/ProxmoxVE/pull/6730))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pulse: fix binary path [@vhsdream](https://github.com/vhsdream) ([#6740](https://github.com/community-scripts/ProxmoxVE/pull/6740))
|
||||||
|
- Karakeep: chromium fix [@vhsdream](https://github.com/vhsdream) ([#6729](https://github.com/community-scripts/ProxmoxVE/pull/6729))
|
||||||
|
|
||||||
## 2025-08-09
|
## 2025-08-09
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -68,10 +68,10 @@ function update_script() {
|
|||||||
msg_ok "Started Crafty-Controller"
|
msg_ok "Started Crafty-Controller"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
|
||||||
else
|
else
|
||||||
msg_ok "No update required. Crafty-Controller is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -90,3 +90,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
75
ct/gomft.sh
75
ct/gomft.sh
@@ -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
|
||||||
|
|||||||
6
ct/headers/swizzin
Normal file
6
ct/headers/swizzin
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
_____ _ _
|
||||||
|
/ ___/ __(_)_______ (_)___
|
||||||
|
\__ \ | /| / / /_ /_ / / / __ \
|
||||||
|
___/ / |/ |/ / / / /_/ /_/ / / / /
|
||||||
|
/____/|__/|__/_/ /___/___/_/_/ /_/
|
||||||
|
|
||||||
6
ct/headers/twingate-connector
Normal file
6
ct/headers/twingate-connector
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
______ _ __ ______ __
|
||||||
|
/_ __/ __(_)___ ____ _____ _/ /____ / ____/___ ____ ____ ___ _____/ /_____ _____
|
||||||
|
/ / | | /| / / / __ \/ __ `/ __ `/ __/ _ \______/ / / __ \/ __ \/ __ \/ _ \/ ___/ __/ __ \/ ___/
|
||||||
|
/ / | |/ |/ / / / / / /_/ / /_/ / /_/ __/_____/ /___/ /_/ / / / / / / / __/ /__/ /_/ /_/ / /
|
||||||
|
/_/ |__/|__/_/_/ /_/\__, /\__,_/\__/\___/ \____/\____/_/ /_/_/ /_/\___/\___/\__/\____/_/
|
||||||
|
/____/
|
||||||
@@ -47,6 +47,7 @@ function update_script() {
|
|||||||
$STD php asatru migrate --no-interaction
|
$STD php asatru migrate --no-interaction
|
||||||
$STD php asatru plants:attributes
|
$STD php asatru plants:attributes
|
||||||
$STD php asatru calendar:classes
|
$STD php asatru calendar:classes
|
||||||
|
chown -R www-data:www-data /opt/hortusfox
|
||||||
msg_ok "Updated HortusFox"
|
msg_ok "Updated HortusFox"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
|
|||||||
16
ct/immich.sh
16
ct/immich.sh
@@ -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.1"
|
||||||
#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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
systemctl stop openobserve
|
systemctl stop openobserve
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
LATEST=$(curl -fsSL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
tar zxvf <(curl -fsSL https://github.com/openobserve/openobserve/releases/download/$LATEST/openobserve-${LATEST}-linux-amd64.tar.gz) -C /opt/openobserve
|
$STD tar zxvf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/$LATEST/openobserve-$LATEST-linux-amd64.tar.gz) -C /opt/openobserve
|
||||||
systemctl start openobserve
|
systemctl start openobserve
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated $APP"
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
20
ct/pulse.sh
20
ct/pulse.sh
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: rcourtman
|
# Author: rcourtman & vhsdream
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/rcourtman/Pulse
|
# Source: https://github.com/rcourtman/Pulse
|
||||||
|
|
||||||
@@ -34,16 +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}"
|
||||||
|
|
||||||
|
if [[ -f /opt/pulse/pulse ]]; then
|
||||||
|
rm -f /opt/pulse/pulse
|
||||||
|
fi
|
||||||
|
|
||||||
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
|
||||||
|
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
|
||||||
|
if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
|
||||||
|
usermod -s /usr/sbin/nologin pulse
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start pulse
|
systemctl start pulse-backend
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Reactive-Resume"
|
APP="Reactive-Resume"
|
||||||
var_tags="${var_tags:-documents}"
|
var_tags="${var_tags:-documents}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
@@ -28,15 +28,16 @@ function update_script() {
|
|||||||
msg_error "No $APP Installation Found!"
|
msg_error "No $APP Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
||||||
if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
|
if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
|
||||||
msg_info "Stopping services"
|
msg_info "Stopping services"
|
||||||
systemctl stop Reactive-Resume
|
systemctl stop Reactive-Resume
|
||||||
msg_ok "Stopped services"
|
msg_ok "Stopped services"
|
||||||
|
|
||||||
cp /opt/"$APP"/.env /opt/rxresume.env
|
cp /opt/"$APP"/.env /opt/rxresume.env
|
||||||
rm -rf /opt/"$APP"
|
|
||||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" "tarball" "latest" "/opt/Reactive-Resume"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt/"$APP"
|
cd /opt/"$APP"
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
@@ -84,9 +85,9 @@ function update_script() {
|
|||||||
rm -f "$brwsr_tmp"
|
rm -f "$brwsr_tmp"
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. $APP is already at v{$RELEASE}"
|
msg_ok "No update required. $APP is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
43
ct/swizzin.sh
Normal file
43
ct/swizzin.sh
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/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: EEJoshua
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://swizzin.ltd/
|
||||||
|
|
||||||
|
APP="Swizzin"
|
||||||
|
var_tags="${var_tags:-seedbox}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if ! command -v sudo box >/dev/null 2>&1; then
|
||||||
|
msg_error "No ${APP} installation found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Running 'sudo box update' inside the container"
|
||||||
|
$STD sudo box update
|
||||||
|
msg_ok "Update finished"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}If installed panel, access through the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
36
ct/tdarr.sh
36
ct/tdarr.sh
@@ -20,18 +20,30 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/tdarr ]]; then
|
if [[ ! -d /opt/tdarr ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Updating $APP LXC"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP LXC"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
rm -rf /opt/tdarr/Tdarr_Updater
|
||||||
|
cd /opt/tdarr
|
||||||
|
RELEASE=$(curl -fsSL https://f000.backblazeb2.com/file/tdarrs/versions.json | grep -oP '(?<="Tdarr_Updater": ")[^"]+' | grep linux_x64 | head -n 1)
|
||||||
|
curl -fsSL "$RELEASE" -o Tdarr_Updater.zip
|
||||||
|
$STD unzip Tdarr_Updater.zip
|
||||||
|
chmod +x Tdarr_Updater
|
||||||
|
$STD ./Tdarr_Updater
|
||||||
|
msg_ok "Updated $APP LXC"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/tdarr/Tdarr_Updater.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "$APP has been successfully updated!"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@@ -41,4 +53,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}:8265${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8265${CL}"
|
||||||
|
|||||||
@@ -27,17 +27,20 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
|
||||||
|
|
||||||
if ! dpkg -s aspnetcore-runtime-8.0 >/dev/null 2>&1; then
|
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
||||||
curl -fsSL "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -o $(basename "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb")
|
if [[ ! -f ~/.technitium || "${VERSION}" != "$(cat ~/.technitium)" ]]; then
|
||||||
$STD dpkg -i packages-microsoft-prod.deb
|
msg_info "Updating ${APP}"
|
||||||
$STD apt-get update
|
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
||||||
$STD apt-get install -y aspnetcore-runtime-8.0
|
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
||||||
rm packages-microsoft-prod.deb
|
msg_ok "Updated Successfully"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -f /opt/DnsServerPortable.tar.gz
|
||||||
|
msg_ok "Cleaned up"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
fi
|
fi
|
||||||
$STD bash <(curl -fsSL https://download.technitium.com/dns/install.sh)
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,32 +26,34 @@ 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/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
|
RELEASE="$(curl -fsSL https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
|
||||||
VERSION="${RELEASE#tc_v}"
|
if [[ ! -f ~/.teddycloud || "${RELEASE}" != "$(cat ~/.teddycloud)" ]]; then
|
||||||
if [[ ! -f "/opt/${APP}_version.txt" || "${VERSION}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop teddycloud
|
systemctl stop teddycloud
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${VERSION}"
|
msg_info "Creating backup"
|
||||||
cd /opt
|
|
||||||
mv /opt/teddycloud /opt/teddycloud_bak
|
mv /opt/teddycloud /opt/teddycloud_bak
|
||||||
curl -fsSL "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" -o $(basename "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip")
|
msg_ok "Backup created"
|
||||||
$STD unzip -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
|
|
||||||
|
fetch_and_deploy_gh_release "teddycloud" "toniebox-reverse-engineering/teddycloud" "prebuild" "latest" "/opt/teddycloud" "teddycloud.amd64.release*.zip"
|
||||||
|
|
||||||
|
msg_info "Restoring data"
|
||||||
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
|
cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
|
||||||
echo "${VERSION}" >"/opt/${APP}_version.txt"
|
msg_ok "Data restored"
|
||||||
msg_ok "Updated ${APP} to v${VERSION}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start teddycloud
|
systemctl start teddycloud
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/teddycloud.amd64.release_v${VERSION}.zip
|
|
||||||
rm -rf /opt/teddycloud_bak
|
rm -rf /opt/teddycloud_bak
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
|
msg_ok "Updated successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${VERSION}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,33 +27,15 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! dpkg -l build-essential >/dev/null 2>&1; then
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y build-essential
|
|
||||||
fi
|
|
||||||
if ! npm list -g node-gyp >/dev/null 2>&1; then
|
|
||||||
$STD npm install -g node-gyp
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/thelounge/thelounge-deb/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 ~/.thelounge ]] || [[ "${RELEASE}" != "$(cat ~/.thelounge)" ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop thelounge
|
systemctl stop thelounge
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
fetch_and_deploy_gh_release "thelounge" "thelounge/thelounge-deb" "binary"
|
||||||
$STD apt-get install --only-upgrade nodejs
|
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb" -o $(basename "https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb")
|
|
||||||
dpkg -i ./thelounge_${RELEASE}_all.deb
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start thelounge
|
|
||||||
msg_ok "Started Service"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf "/opt/thelounge_${RELEASE}_all.deb"
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
|||||||
@@ -27,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}"
|
||||||
|
|||||||
@@ -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
44
ct/twingate-connector.sh
Normal 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"
|
||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
20
ct/wallos.sh
20
ct/wallos.sh
@@ -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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
13
ct/wikijs.sh
13
ct/wikijs.sh
@@ -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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
20
ct/zoraxy.sh
20
ct/zoraxy.sh
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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}."
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
40
frontend/public/json/copyparty.json
Normal file
40
frontend/public/json/copyparty.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
48
frontend/public/json/debian-13-vm.json
Normal file
48
frontend/public/json/debian-13-vm.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"name": "Debian 13",
|
||||||
|
"slug": "debian-13-vm",
|
||||||
|
"categories": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-19",
|
||||||
|
"type": "vm",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": null,
|
||||||
|
"website": "https://www.debian.org/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/debian.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "Debian 13 (Trixie) Linux is a distribution that emphasizes free software. It supports many hardware platforms",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "vm/debian-13-vm.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": null,
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "VM has no root password set. To login type in user `root` and just press enter",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "If you use Cloud-init, checkout after installation: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "addon",
|
"type": "addon",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 61208,
|
"interface_port": 61208,
|
||||||
"documentation": "https://glances.readthedocs.io/en/latest/",
|
"documentation": "https://glances.readthedocs.io/en/latest/",
|
||||||
@@ -33,12 +33,8 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Execute within an existing LXC Console",
|
"text": "Execute within an existing LXC Console (Debian / Ubuntu / Alpine supported)",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 5080,
|
"interface_port": 5080,
|
||||||
"documentation": null,
|
"documentation": "https://openobserve.ai/docs/",
|
||||||
"website": "https://openobserve.ai/",
|
"website": "https://openobserve.ai/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openobserve.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/openobserve.webp",
|
||||||
"config_path": "/opt/openobserve/data/.env",
|
"config_path": "/opt/openobserve/data/.env",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/rcourtman/Pulse",
|
"website": "https://github.com/rcourtman/Pulse",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pulse.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pulse.webp",
|
||||||
"config_path": "/opt/pulse/.env",
|
"config_path": "/etc/pulse",
|
||||||
"description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
|
"description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "proxmox",
|
||||||
"password": null
|
"password": "proxmox"
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": "https://docs.rxresume.org/",
|
"documentation": "https://docs.rxresume.org/",
|
||||||
"website": "https://rxresume.org",
|
"website": "https://rxresume.org",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/reactive-resume-light.png",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/reactive-resume.webp",
|
||||||
"config_path": "/opt/reactive-resume/.env",
|
"config_path": "/opt/reactive-resume/.env",
|
||||||
"description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.",
|
"description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/reactive-resume.sh",
|
"script": "ct/reactive-resume.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 3072,
|
"ram": 4096,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
@@ -33,4 +33,3 @@
|
|||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
"interface_port": 5030,
|
"interface_port": 5030,
|
||||||
"documentation": "https://github.com/slskd/slskd/tree/master/docs",
|
"documentation": "https://github.com/slskd/slskd/tree/master/docs",
|
||||||
"website": "https://github.com/slskd/slskd",
|
"website": "https://github.com/slskd/slskd",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/slskd.webp",
|
||||||
"config_path": "/opt/slskd/config/slskd.yml",
|
"config_path": "/opt/slskd/config/slskd.yml",
|
||||||
"description": "A modern client-server application for the Soulseek file sharing network. ",
|
"description": "A modern client-server application for the Soulseek file sharing network. ",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@@ -42,4 +42,3 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
52
frontend/public/json/swizzin.json
Normal file
52
frontend/public/json/swizzin.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"name": "Swizzin",
|
||||||
|
"slug": "swizzin",
|
||||||
|
"categories": [
|
||||||
|
15
|
||||||
|
],
|
||||||
|
"date_created": "2025-08-19",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://swizzin.ltd/getting-started",
|
||||||
|
"config_path": "/etc/swizzin/",
|
||||||
|
"website": "https://swizzin.ltd/",
|
||||||
|
"logo": "https://swizzin.ltd/img/logo-sm.png",
|
||||||
|
"description": "Swizzin is a light-weight, modular, and user-friendly seedbox solution for Debian-based servers. It allows for the easy installation and management of a wide variety of applications commonly used for torrenting and media management, such as rTorrent, Sonarr, Radarr, and Plex, all accessible through a command-line utility or a web-based dashboard.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/swizzin.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 4096,
|
||||||
|
"hdd": 20,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Installation might take a long time if choosing to install many apps. Be patient.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Swizzin is a management suite, not a single application. Use the 'box' command inside the container to install/manage individual apps like rTorrent, Sonarr, etc. A full list can be found in documentation.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "It is very recommended to install at least the 'panel' for web access, and 'nginx' for easy access to other apps.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
|
"type": "warning"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8265,
|
"interface_port": 8265,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
|
|||||||
@@ -31,10 +31,5 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": []
|
||||||
{
|
|
||||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
44
frontend/public/json/twingate-connector.json
Normal file
44
frontend/public/json/twingate-connector.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": []
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -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": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ update_os
|
|||||||
|
|
||||||
msg_info "Setup Syncthing"
|
msg_info "Setup Syncthing"
|
||||||
$STD apk add --no-cache syncthing
|
$STD apk add --no-cache syncthing
|
||||||
|
rc-service syncthing start
|
||||||
|
sleep 3
|
||||||
|
rc-service syncthing stop
|
||||||
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /var/lib/syncthing/.local/state/syncthing/config.xml
|
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /var/lib/syncthing/.local/state/syncthing/config.xml
|
||||||
msg_ok "Setup Syncthing"
|
msg_ok "Setup Syncthing"
|
||||||
|
|
||||||
|
|||||||
@@ -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';"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/d
|
|||||||
mv ${APPLICATION} /opt/${APPLICATION}
|
mv ${APPLICATION} /opt/${APPLICATION}
|
||||||
chmod +x /opt/${APPLICATION}
|
chmod +x /opt/${APPLICATION}
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/master/conf/main.yml"
|
curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/main/conf/main.yml"
|
||||||
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml
|
sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml
|
||||||
mkdir -p /etc/${APPLICATION}
|
mkdir -p /etc/${APPLICATION}
|
||||||
USERNAME="admin"
|
USERNAME="admin"
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ cat <<EOF >/etc/apache2/sites-available/hortusfox.conf
|
|||||||
CustomLog \${APACHE_LOG_DIR}/hortusfox_access.log combined
|
CustomLog \${APACHE_LOG_DIR}/hortusfox_access.log combined
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
EOF
|
EOF
|
||||||
|
chown -R www-data:www-data /opt/hortusfox
|
||||||
$STD a2dissite 000-default
|
$STD a2dissite 000-default
|
||||||
$STD a2ensite hortusfox
|
$STD a2ensite hortusfox
|
||||||
$STD a2enmod rewrite
|
$STD a2enmod rewrite
|
||||||
|
|||||||
@@ -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.1" "$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
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,8 @@ update_os
|
|||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
git \
|
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
chromium/stable \
|
chromium \
|
||||||
chromium-common/stable \
|
|
||||||
graphicsmagick \
|
graphicsmagick \
|
||||||
ghostscript
|
ghostscript
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: rcourtman
|
# Author: rcourtman & vhsdream
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/rcourtman/Pulse
|
# Source: https://github.com/rcourtman/Pulse
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Creating User"
|
msg_info "Creating User"
|
||||||
if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then
|
if useradd -r -m -d /opt/pulse-home -s /usr/sbin/nologin pulse; then
|
||||||
msg_ok "Created User"
|
msg_ok "Created User"
|
||||||
else
|
else
|
||||||
msg_error "User creation failed"
|
msg_error "User creation failed"
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio
|
|||||||
$STD dpkg -i minio.deb
|
$STD dpkg -i minio.deb
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PG_VERSION="16" PG_MODULES="common" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||||
|
|
||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
@@ -32,7 +32,6 @@ $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_
|
|||||||
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
msg_info "Installing $APPLICATION"
|
|
||||||
MINIO_PASS=$(openssl rand -base64 48)
|
MINIO_PASS=$(openssl rand -base64 48)
|
||||||
ACCESS_TOKEN=$(openssl rand -base64 48)
|
ACCESS_TOKEN=$(openssl rand -base64 48)
|
||||||
REFRESH_TOKEN=$(openssl rand -base64 48)
|
REFRESH_TOKEN=$(openssl rand -base64 48)
|
||||||
@@ -41,6 +40,8 @@ LOCAL_IP=$(hostname -I | awk '{print $1}')
|
|||||||
TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
|
TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
|
||||||
|
|
||||||
|
msg_info "Installing $APPLICATION"
|
||||||
cd /opt/"$APPLICATION"
|
cd /opt/"$APPLICATION"
|
||||||
export CI="true"
|
export CI="true"
|
||||||
export PUPPETEER_SKIP_DOWNLOAD="true"
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
@@ -48,7 +49,6 @@ export NODE_ENV="production"
|
|||||||
export NEXT_TELEMETRY_DISABLED=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm run build
|
$STD pnpm run build
|
||||||
$STD pnpm install --prod --frozen-lockfile
|
|
||||||
$STD pnpm run prisma:generate
|
$STD pnpm run prisma:generate
|
||||||
msg_ok "Installed $APPLICATION"
|
msg_ok "Installed $APPLICATION"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
34
install/swizzin-install.sh
Normal file
34
install/swizzin-install.sh
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: EEJoshua
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://swizzin.ltd/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_warn "WARNING: This script will run an external installer from a third-party source (https://swizzin.ltd/)."
|
||||||
|
msg_warn "The following code is NOT maintained or audited by our repository."
|
||||||
|
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
|
||||||
|
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://s5n.sh"
|
||||||
|
echo
|
||||||
|
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
|
||||||
|
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||||
|
msg_error "Aborted by user. No changes have been made."
|
||||||
|
exit 10
|
||||||
|
fi
|
||||||
|
bash <(curl -sL s5n.sh)
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y handbrake-cli
|
$STD apt-get install -y handbrake-cli
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Tdarr"
|
||||||
|
mkdir -p /opt/tdarr
|
||||||
|
cd /opt/tdarr
|
||||||
|
RELEASE=$(curl -fsSL https://f000.backblazeb2.com/file/tdarrs/versions.json | grep -oP '(?<="Tdarr_Updater": ")[^"]+' | grep linux_x64 | head -n 1)
|
||||||
|
curl -fsSL "$RELEASE" -o Tdarr_Updater.zip
|
||||||
|
$STD unzip Tdarr_Updater.zip
|
||||||
|
chmod +x Tdarr_Updater
|
||||||
|
$STD ./Tdarr_Updater
|
||||||
|
msg_ok "Installed Tdarr"
|
||||||
|
|
||||||
msg_info "Setting Up Hardware Acceleration"
|
msg_info "Setting Up Hardware Acceleration"
|
||||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
if [[ "$CTTYPE" == "0" ]]; then
|
||||||
@@ -25,29 +35,14 @@ if [[ "$CTTYPE" == "0" ]]; then
|
|||||||
chmod 660 /dev/dri/*
|
chmod 660 /dev/dri/*
|
||||||
$STD adduser $(id -u -n) video
|
$STD adduser $(id -u -n) video
|
||||||
$STD adduser $(id -u -n) render
|
$STD adduser $(id -u -n) render
|
||||||
fi
|
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
|
||||||
|
|
||||||
msg_info "Installing Tdarr"
|
|
||||||
mkdir -p /opt/tdarr
|
|
||||||
cd /opt/tdarr
|
|
||||||
RELEASE=$(curl -fsSL https://f000.backblazeb2.com/file/tdarrs/versions.json | grep -oP '(?<="Tdarr_Updater": ")[^"]+' | grep linux_x64 | head -n 1)
|
|
||||||
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
|
||||||
$STD unzip Tdarr_Updater.zip
|
|
||||||
rm -rf Tdarr_Updater.zip
|
|
||||||
chmod +x Tdarr_Updater
|
|
||||||
./Tdarr_Updater &>/dev/null
|
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
|
||||||
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
||||||
else
|
else
|
||||||
sed -i -e 's/^sgx:x:104:$/render:x:104:/' -e 's/^render:x:106:$/sgx:x:106:/' /etc/group
|
sed -i -e 's/^sgx:x:104:$/render:x:104:/' -e 's/^render:x:106:$/sgx:x:106:/' /etc/group
|
||||||
fi
|
fi
|
||||||
|
msg_ok "Set Up Hardware Acceleration"
|
||||||
|
|
||||||
msg_ok "Installed Tdarr"
|
cat <<EOF >/etc/systemd/system/tdarr-server.service
|
||||||
|
[Unit]
|
||||||
msg_info "Creating Service"
|
|
||||||
service_path="/etc/systemd/system/tdarr-server.service"
|
|
||||||
echo "[Unit]
|
|
||||||
Description=Tdarr Server Daemon
|
Description=Tdarr Server Daemon
|
||||||
After=network.target
|
After=network.target
|
||||||
# Enable if using ZFS, edit and enable if other FS mounting is required to access directory
|
# Enable if using ZFS, edit and enable if other FS mounting is required to access directory
|
||||||
@@ -56,20 +51,20 @@ After=network.target
|
|||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
|
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/tdarr/Tdarr_Server
|
WorkingDirectory=/opt/tdarr/Tdarr_Server
|
||||||
ExecStartPre=/opt/tdarr/Tdarr_Updater
|
ExecStartPre=/opt/tdarr/Tdarr_Updater
|
||||||
ExecStart=/opt/tdarr/Tdarr_Server/Tdarr_Server
|
ExecStart=/opt/tdarr/Tdarr_Server/Tdarr_Server
|
||||||
TimeoutStopSec=20
|
TimeoutStopSec=20
|
||||||
KillMode=process
|
KillMode=process
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
service_path="/etc/systemd/system/tdarr-node.service"
|
cat <<EOF >/etc/systemd/system/tdarr-node.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=Tdarr Node Daemon
|
Description=Tdarr Node Daemon
|
||||||
After=network.target
|
After=network.target
|
||||||
Requires=tdarr-server.service
|
Requires=tdarr-server.service
|
||||||
@@ -77,7 +72,6 @@ Requires=tdarr-server.service
|
|||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
|
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/tdarr/Tdarr_Node
|
WorkingDirectory=/opt/tdarr/Tdarr_Node
|
||||||
ExecStart=/opt/tdarr/Tdarr_Node/Tdarr_Node
|
ExecStart=/opt/tdarr/Tdarr_Node/Tdarr_Node
|
||||||
@@ -86,16 +80,16 @@ KillMode=process
|
|||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
systemctl enable --now -q tdarr-server.service
|
EOF
|
||||||
systemctl enable --now -q tdarr-node.service
|
systemctl enable --now -q tdarr-server tdarr-node
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf Tdarr_Updater.zip
|
rm -rf /opt/tdarr/Tdarr_Updater.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"
|
||||||
|
|||||||
@@ -21,14 +21,24 @@ $STD apt-get update
|
|||||||
$STD apt-get install -y aspnetcore-runtime-8.0
|
$STD apt-get install -y aspnetcore-runtime-8.0
|
||||||
msg_ok "Installed ASP.NET Core Runtime"
|
msg_ok "Installed ASP.NET Core Runtime"
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://technitium.com/dns/ | grep -oP 'Version \K[\d.]+')
|
||||||
msg_info "Installing Technitium DNS"
|
msg_info "Installing Technitium DNS"
|
||||||
$STD bash <(curl -fsSL https://download.technitium.com/dns/install.sh)
|
mkdir -p /opt/technitium/dns
|
||||||
|
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
|
||||||
|
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
|
||||||
|
echo "${RELEASE}" > ~/.technitium
|
||||||
msg_ok "Installed Technitium DNS"
|
msg_ok "Installed Technitium DNS"
|
||||||
|
|
||||||
|
msg_info "Creating service"
|
||||||
|
cp /opt/technitium/dns/systemd.service /etc/systemd/system/technitium.service
|
||||||
|
systemctl enable -q --now technitium
|
||||||
|
msg_ok "Service created"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -f /opt/DnsServerPortable.tar.gz
|
||||||
$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"
|
||||||
|
|||||||
@@ -20,15 +20,7 @@ $STD apt-get install -y \
|
|||||||
ca-certificates
|
ca-certificates
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing TeddyCloud"
|
fetch_and_deploy_gh_release "teddycloud" "toniebox-reverse-engineering/teddycloud" "prebuild" "latest" "/opt/teddycloud" "teddycloud.amd64.release*.zip"
|
||||||
RELEASE="$(curl -fsSL https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
|
|
||||||
VERSION="${RELEASE#tc_v}"
|
|
||||||
curl -fsSL "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" -o "teddycloud.amd64.release_v${VERSION}.zip"
|
|
||||||
$STD unzip -d "/opt/teddycloud-${VERSION}" "teddycloud.amd64.release_v${VERSION}.zip"
|
|
||||||
ln -fns "/opt/teddycloud-${VERSION}" /opt/teddycloud
|
|
||||||
rm -rf teddycloud.amd64.release_v${VERSION}.zip
|
|
||||||
echo "${VERSION}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed TeddyCloud"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/teddycloud.service
|
cat <<EOF >/etc/systemd/system/teddycloud.service
|
||||||
@@ -53,7 +45,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
$STD apt-get --yes autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get --yes autoclean
|
$STD apt-get -y autoclean
|
||||||
rm -rf "teddycloud.amd64.release_v${VERSION}.zip"
|
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -13,26 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
fetch_and_deploy_gh_release "thelounge" "thelounge/thelounge-deb" "binary"
|
||||||
$STD apt-get install -y \
|
|
||||||
build-essential
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest,node-gyp" setup_nodejs
|
|
||||||
|
|
||||||
msg_info "Installing The Lounge"
|
|
||||||
cd /opt
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb" -o "./thelounge_${RELEASE}_all.deb"
|
|
||||||
$STD dpkg -i ./thelounge_${RELEASE}_all.deb
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Installed The Lounge"
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/thelounge_${RELEASE}_all.deb
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
61
install/twingate-connector-install.sh
Normal file
61
install/twingate-connector-install.sh
Normal 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"
|
||||||
@@ -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]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -14,25 +14,14 @@ 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
|
||||||
chmod -R 755 /opt/wallos
|
chmod -R 755 /opt/wallos
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
|
|
||||||
cat <<EOF >/etc/apache2/sites-available/wallos.conf
|
cat <<EOF >/etc/apache2/sites-available/wallos.conf
|
||||||
<VirtualHost *:80>
|
<VirtualHost *:80>
|
||||||
ServerAdmin webmaster@localhost
|
ServerAdmin webmaster@localhost
|
||||||
@@ -73,7 +62,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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user