mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-05 10:52:49 +00:00
Compare commits
217 Commits
2025-06-01
...
2025-06-17
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
654508eb94 | ||
|
|
acfb9d6ea1 | ||
|
|
0d56db2d3d | ||
|
|
4a1ae51446 | ||
|
|
6520b7f4d4 | ||
|
|
48da94f77a | ||
|
|
2ea372f034 | ||
|
|
5773459a39 | ||
|
|
40f083ea40 | ||
|
|
219a7853e1 | ||
|
|
6d1d903345 | ||
|
|
ef9ca48477 | ||
|
|
8ac24981a6 | ||
|
|
7e046d830d | ||
|
|
1691fafcc1 | ||
|
|
4400cd2b97 | ||
|
|
795fe72768 | ||
|
|
6d7d15ce46 | ||
|
|
a648b9abc4 | ||
|
|
4057fadfe0 | ||
|
|
9b700195e4 | ||
|
|
906a0a0fbc | ||
|
|
8df55a03f4 | ||
|
|
8241ed932d | ||
|
|
0b3c645ffb | ||
|
|
0c17402efc | ||
|
|
ccad7a2cd8 | ||
|
|
15772d8802 | ||
|
|
c7e0faa33b | ||
|
|
13b1c684ee | ||
|
|
5e649d7cb1 | ||
|
|
ec8a8b1908 | ||
|
|
d850dde4ef | ||
|
|
fb4075ac12 | ||
|
|
8576463522 | ||
|
|
2a4353fa13 | ||
|
|
d21cbf1d40 | ||
|
|
e97c96d0bb | ||
|
|
04dab68e17 | ||
|
|
b001687f5c | ||
|
|
9f26e25126 | ||
|
|
5671d8e957 | ||
|
|
0bf641f02c | ||
|
|
7fc39a442b | ||
|
|
6e1ee7d16e | ||
|
|
5ee48aba1e | ||
|
|
e6c21811bb | ||
|
|
142fea21bd | ||
|
|
df43101b4e | ||
|
|
3044a774c2 | ||
|
|
65e4c027b8 | ||
|
|
dabfb57173 | ||
|
|
63dfc2bd7b | ||
|
|
89399ef421 | ||
|
|
d9474c3dd6 | ||
|
|
f5a5e4854c | ||
|
|
632e823749 | ||
|
|
a128f3c43d | ||
|
|
9c90699ca2 | ||
|
|
f6f6ca6bac | ||
|
|
b6d0b1ae6a | ||
|
|
93906db2d1 | ||
|
|
4ab71ccf00 | ||
|
|
e058badee6 | ||
|
|
74c6df5aa6 | ||
|
|
c2484b7c60 | ||
|
|
b064127323 | ||
|
|
138f90f09c | ||
|
|
84469e2b5b | ||
|
|
a164d259e0 | ||
|
|
34aa360920 | ||
|
|
f0dde5a42d | ||
|
|
e0ccc1a0af | ||
|
|
4fa7483d8b | ||
|
|
cd835c6791 | ||
|
|
abf233c94f | ||
|
|
edd4fb3cc2 | ||
|
|
d97620a390 | ||
|
|
c2c5159a2d | ||
|
|
46d9f85f5e | ||
|
|
ba7ec5aa68 | ||
|
|
dd4c556959 | ||
|
|
0e63437154 | ||
|
|
0769320146 | ||
|
|
d6da26c640 | ||
|
|
d9facc0e62 | ||
|
|
31e0b5fae3 | ||
|
|
b0bd2f4804 | ||
|
|
3aefe199f7 | ||
|
|
677008c779 | ||
|
|
b8ba409e5c | ||
|
|
7cf8300b47 | ||
|
|
77fb5ea516 | ||
|
|
e92dfe1b2b | ||
|
|
61bfa16645 | ||
|
|
84c295a10b | ||
|
|
ed834bf424 | ||
|
|
b1f8992933 | ||
|
|
201f7c4651 | ||
|
|
2574e41ee8 | ||
|
|
2aeb7cf79a | ||
|
|
98c277f471 | ||
|
|
78a2201a93 | ||
|
|
2de03f5734 | ||
|
|
c59f9f421c | ||
|
|
598acc2048 | ||
|
|
6e6b279b88 | ||
|
|
943a5f4d8f | ||
|
|
4efa882558 | ||
|
|
eff985ca02 | ||
|
|
ff239ff3cd | ||
|
|
45bb824101 | ||
|
|
1956c8740b | ||
|
|
f6638b095d | ||
|
|
6a1738c52a | ||
|
|
a9e3520df1 | ||
|
|
08230e9089 | ||
|
|
a5c6984087 | ||
|
|
99174cb9c2 | ||
|
|
336e70f059 | ||
|
|
ce8b9aa5b4 | ||
|
|
70d6815d91 | ||
|
|
75273e86b6 | ||
|
|
37a2f6a715 | ||
|
|
4b7c734b9a | ||
|
|
590db0d148 | ||
|
|
50ad6410d5 | ||
|
|
85b80bfb22 | ||
|
|
33e49b7556 | ||
|
|
0a6f7e6426 | ||
|
|
5fd5d78a2a | ||
|
|
ab32878b63 | ||
|
|
ee7090f271 | ||
|
|
df6bd2a68a | ||
|
|
e46e9a3372 | ||
|
|
6c08814cc5 | ||
|
|
4cca5062af | ||
|
|
dc2b585e6b | ||
|
|
cc4f5c4478 | ||
|
|
01ced07bff | ||
|
|
85e13c9ac5 | ||
|
|
1ac4b0c10f | ||
|
|
781471f37a | ||
|
|
e2790814b8 | ||
|
|
f5705621b2 | ||
|
|
a28a4fd752 | ||
|
|
b890fae808 | ||
|
|
8e88379c1b | ||
|
|
b2307f1bb9 | ||
|
|
db9ffe3105 | ||
|
|
2c1e101135 | ||
|
|
a991908a37 | ||
|
|
f0206a6252 | ||
|
|
e8061a9f6e | ||
|
|
64c47bd335 | ||
|
|
ec573be7e0 | ||
|
|
4e53abbd48 | ||
|
|
338d351c29 | ||
|
|
835893e589 | ||
|
|
1e81c11e74 | ||
|
|
27384ad89a | ||
|
|
27d3909df5 | ||
|
|
2e3f416242 | ||
|
|
b91cbbcbe9 | ||
|
|
3f43cd5575 | ||
|
|
1564d4d6d3 | ||
|
|
077db6c52f | ||
|
|
a0d2bece1d | ||
|
|
0178742308 | ||
|
|
d2482e5c82 | ||
|
|
2400f98f75 | ||
|
|
176946bd45 | ||
|
|
a25009bdb1 | ||
|
|
03eff3a2e1 | ||
|
|
ff12d802cc | ||
|
|
02b753eb12 | ||
|
|
c9eaaee0c0 | ||
|
|
f154249dde | ||
|
|
9ef7274199 | ||
|
|
e9477e7a07 | ||
|
|
1fcf9f9520 | ||
|
|
bbe226218c | ||
|
|
8d38c1d724 | ||
|
|
1cac2afc41 | ||
|
|
644a365c69 | ||
|
|
9bd4f5bb1b | ||
|
|
b2a80b6971 | ||
|
|
1e3d0e501b | ||
|
|
3aa1f05343 | ||
|
|
05c008241e | ||
|
|
91d8efcde0 | ||
|
|
16ac1adf75 | ||
|
|
805bbc5ee3 | ||
|
|
43697716ae | ||
|
|
623c8d993d | ||
|
|
bf2545ce40 | ||
|
|
dd9e285962 | ||
|
|
7f513afcf2 | ||
|
|
912c92d6f3 | ||
|
|
a4904fdd7e | ||
|
|
b4a58b907f | ||
|
|
824fd22aae | ||
|
|
feacacc368 | ||
|
|
a307f9086b | ||
|
|
d97ce713ac | ||
|
|
807870e739 | ||
|
|
53c40775ee | ||
|
|
bf9f5d62e2 | ||
|
|
6650e0bdd8 | ||
|
|
f2bf6c9a6f | ||
|
|
8d50a5d8a9 | ||
|
|
4e3286f11b | ||
|
|
e08a587439 | ||
|
|
6ee8349d28 | ||
|
|
87f6c9ebde | ||
|
|
6239075c2d | ||
|
|
04ee11aab7 |
259
CHANGELOG.md
259
CHANGELOG.md
@@ -14,8 +14,267 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
|
||||||
|
|
||||||
|
|
||||||
|
## 2025-06-18
|
||||||
|
|
||||||
|
## 2025-06-17
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- gitea-mirror: increase build ressources [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5235](https://github.com/community-scripts/ProxmoxVE/pull/5235))
|
||||||
|
- Immich: ensure in proper working dir when updating [@vhsdream](https://github.com/vhsdream) ([#5227](https://github.com/community-scripts/ProxmoxVE/pull/5227))
|
||||||
|
- Update IP-Tag [@DesertGamer](https://github.com/DesertGamer) ([#5226](https://github.com/community-scripts/ProxmoxVE/pull/5226))
|
||||||
|
- trilium: fix update function after db changes folder [@tjcomserv](https://github.com/tjcomserv) ([#5207](https://github.com/community-scripts/ProxmoxVE/pull/5207))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- LibreTranslate: Add .env for easier configuration [@tremor021](https://github.com/tremor021) ([#5216](https://github.com/community-scripts/ProxmoxVE/pull/5216))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- IPTag: Better explanation [@MickLesk](https://github.com/MickLesk) ([#5213](https://github.com/community-scripts/ProxmoxVE/pull/5213))
|
||||||
|
|
||||||
|
## 2025-06-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Intel NIC offload Fix by @rcastley [@MickLesk](https://github.com/MickLesk) ([#5155](https://github.com/community-scripts/ProxmoxVE/pull/5155))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- [core] Move install_php() from VED to main [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5182](https://github.com/community-scripts/ProxmoxVE/pull/5182))
|
||||||
|
- Firefly: Add Data Importer to LXC [@tremor021](https://github.com/tremor021) ([#5159](https://github.com/community-scripts/ProxmoxVE/pull/5159))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Wastebin: Fix missing dependencies [@tremor021](https://github.com/tremor021) ([#5185](https://github.com/community-scripts/ProxmoxVE/pull/5185))
|
||||||
|
- Kasm: Storing Creds Fix [@omiinaya](https://github.com/omiinaya) ([#5162](https://github.com/community-scripts/ProxmoxVE/pull/5162))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- add optional Cloud-init support to Debian VM script [@koendiender](https://github.com/koendiender) ([#5137](https://github.com/community-scripts/ProxmoxVE/pull/5137))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: 2FAuth [@tremor021](https://github.com/tremor021) ([#5184](https://github.com/community-scripts/ProxmoxVE/pull/5184))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Refactor layout and component styles for improved responsiveness [@BramSuurdje](https://github.com/BramSuurdje) ([#5195](https://github.com/community-scripts/ProxmoxVE/pull/5195))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Refactor ScriptItem and ConfigFile components to conditionally render config file location. Update ConfigFile to accept configPath prop instead of item. [@BramSuurdje](https://github.com/BramSuurdje) ([#5197](https://github.com/community-scripts/ProxmoxVE/pull/5197))
|
||||||
|
- Update default image asset in the public directory and update api route to only search for files that end with .json [@BramSuurdje](https://github.com/BramSuurdje) ([#5179](https://github.com/community-scripts/ProxmoxVE/pull/5179))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Update default image asset in the public directory [@BramSuurdje](https://github.com/BramSuurdje) ([#5189](https://github.com/community-scripts/ProxmoxVE/pull/5189))
|
||||||
|
|
||||||
|
## 2025-06-15
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- LibreTranslate ([#5154](https://github.com/community-scripts/ProxmoxVE/pull/5154))
|
||||||
|
|
||||||
|
## 2025-06-14
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- [core] Update install_mariadb func [@tremor021](https://github.com/tremor021) ([#5138](https://github.com/community-scripts/ProxmoxVE/pull/5138))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- flowiseai: set NodeJS to Version 20 [@MickLesk](https://github.com/MickLesk) ([#5130](https://github.com/community-scripts/ProxmoxVE/pull/5130))
|
||||||
|
- Update dolibarr-install.sh - Get largest version number [@tjcomserv](https://github.com/tjcomserv) ([#5127](https://github.com/community-scripts/ProxmoxVE/pull/5127))
|
||||||
|
|
||||||
|
## 2025-06-13
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Zigbee2MQTT: Fix missing directory [@tremor021](https://github.com/tremor021) ([#5120](https://github.com/community-scripts/ProxmoxVE/pull/5120))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Umbrel OS: Fix bad disk size shown on website [@tremor021](https://github.com/tremor021) ([#5125](https://github.com/community-scripts/ProxmoxVE/pull/5125))
|
||||||
|
|
||||||
|
## 2025-06-12
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Manage my Damn Life ([#5100](https://github.com/community-scripts/ProxmoxVE/pull/5100))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Kasm: Increase Ressources & Hint for Fuse / Swap [@MickLesk](https://github.com/MickLesk) ([#5112](https://github.com/community-scripts/ProxmoxVE/pull/5112))
|
||||||
|
|
||||||
|
## 2025-06-11
|
||||||
|
|
||||||
|
## 2025-06-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Element Synapse: switched from development to production mode and fixed update [@Frankmaaan](https://github.com/Frankmaaan) ([#5066](https://github.com/community-scripts/ProxmoxVE/pull/5066))
|
||||||
|
- Tinyauth: Fix creation of service file [@tremor021](https://github.com/tremor021) ([#5090](https://github.com/community-scripts/ProxmoxVE/pull/5090))
|
||||||
|
- Dolibarr: Fix typo in SQL command [@tremor021](https://github.com/tremor021) ([#5091](https://github.com/community-scripts/ProxmoxVE/pull/5091))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📡 API
|
||||||
|
|
||||||
|
- [core] Prevent API form sending Data when disabled [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5080](https://github.com/community-scripts/ProxmoxVE/pull/5080))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Immich: Update JSON [@vhsdream](https://github.com/vhsdream) ([#5085](https://github.com/community-scripts/ProxmoxVE/pull/5085))
|
||||||
|
|
||||||
|
## 2025-06-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Authelia: Fix the URL of the container [@tremor021](https://github.com/tremor021) ([#5064](https://github.com/community-scripts/ProxmoxVE/pull/5064))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- GoMFT: Remove from website temporarily [@tremor021](https://github.com/tremor021) ([#5065](https://github.com/community-scripts/ProxmoxVE/pull/5065))
|
||||||
|
|
||||||
|
## 2025-06-08
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Minarca ([#5058](https://github.com/community-scripts/ProxmoxVE/pull/5058))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- zot: fix missing var (Dev -> Main) [@MickLesk](https://github.com/MickLesk) ([#5056](https://github.com/community-scripts/ProxmoxVE/pull/5056))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- karakeep: Add more configuration defaults [@vhsdream](https://github.com/vhsdream) ([#5054](https://github.com/community-scripts/ProxmoxVE/pull/5054))
|
||||||
|
|
||||||
|
## 2025-06-07
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- alpine-it-tools fix update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5039](https://github.com/community-scripts/ProxmoxVE/pull/5039))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 💾 Core
|
||||||
|
|
||||||
|
- Fix typo in build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5041](https://github.com/community-scripts/ProxmoxVE/pull/5041))
|
||||||
|
|
||||||
|
## 2025-06-06
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Zot-Registry ([#5016](https://github.com/community-scripts/ProxmoxVE/pull/5016))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- zipline: fix old upload copy from v3 to v4 [@MickLesk](https://github.com/MickLesk) ([#5015](https://github.com/community-scripts/ProxmoxVE/pull/5015))
|
||||||
|
|
||||||
|
## 2025-06-05
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Lyrion Music Server ([#4992](https://github.com/community-scripts/ProxmoxVE/pull/4992))
|
||||||
|
- gitea-mirror ([#4967](https://github.com/community-scripts/ProxmoxVE/pull/4967))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Zipline: Fix PostgreSQL install [@tremor021](https://github.com/tremor021) ([#4989](https://github.com/community-scripts/ProxmoxVE/pull/4989))
|
||||||
|
- Homarr: add nodejs upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4974](https://github.com/community-scripts/ProxmoxVE/pull/4974))
|
||||||
|
- add FUSE to rclone [@Frankmaaan](https://github.com/Frankmaaan) ([#4972](https://github.com/community-scripts/ProxmoxVE/pull/4972))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Zitadel: Upgrade Install to PSQL 17 [@MickLesk](https://github.com/MickLesk) ([#5000](https://github.com/community-scripts/ProxmoxVE/pull/5000))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Fix clean-lxcs.sh type categorization [@bitspill](https://github.com/bitspill) ([#4980](https://github.com/community-scripts/ProxmoxVE/pull/4980))
|
||||||
|
|
||||||
|
## 2025-06-04
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Pulse: add polkit for sudoless web updates [@rcourtman](https://github.com/rcourtman) ([#4970](https://github.com/community-scripts/ProxmoxVE/pull/4970))
|
||||||
|
- Pulse: add correct Port for URL output [@rcourtman](https://github.com/rcourtman) ([#4951](https://github.com/community-scripts/ProxmoxVE/pull/4951))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- [refactor] Seelf [@tremor021](https://github.com/tremor021) ([#4954](https://github.com/community-scripts/ProxmoxVE/pull/4954))
|
||||||
|
|
||||||
|
## 2025-06-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Kasm: Swap fix [@omiinaya](https://github.com/omiinaya) ([#4937](https://github.com/community-scripts/ProxmoxVE/pull/4937))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- netbox: correct website URL [@theincrediblenoone](https://github.com/theincrediblenoone) ([#4952](https://github.com/community-scripts/ProxmoxVE/pull/4952))
|
||||||
|
|
||||||
## 2025-06-02
|
## 2025-06-02
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- PVE-Privilege-Converter [@MickLesk](https://github.com/MickLesk) ([#4906](https://github.com/community-scripts/ProxmoxVE/pull/4906))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(wastebin): use tar asset [@dbeg](https://github.com/dbeg) ([#4934](https://github.com/community-scripts/ProxmoxVE/pull/4934))
|
||||||
|
- MySQL/MariaDB: fix create user with password [@MickLesk](https://github.com/MickLesk) ([#4918](https://github.com/community-scripts/ProxmoxVE/pull/4918))
|
||||||
|
- Fix alpine-tinyauth env configuration parsing logic [@gokussjx](https://github.com/gokussjx) ([#4901](https://github.com/community-scripts/ProxmoxVE/pull/4901))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- make Pulse installation non-interactive [@rcourtman](https://github.com/rcourtman) ([#4848](https://github.com/community-scripts/ProxmoxVE/pull/4848))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 💾 Core
|
||||||
|
|
||||||
|
- [core] add hw-accelerated for immich, openwebui / remove scrypted [@MickLesk](https://github.com/MickLesk) ([#4927](https://github.com/community-scripts/ProxmoxVE/pull/4927))
|
||||||
|
- [core] tools.func: Bugfix old gpg key for mysql & little improvements [@MickLesk](https://github.com/MickLesk) ([#4916](https://github.com/community-scripts/ProxmoxVE/pull/4916))
|
||||||
|
- [core] Varius fixes to Config file feature [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4924](https://github.com/community-scripts/ProxmoxVE/pull/4924))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Display default password even if there isn't a default username [@0risc](https://github.com/0risc) ([#4900](https://github.com/community-scripts/ProxmoxVE/pull/4900))
|
||||||
|
|
||||||
## 2025-06-01
|
## 2025-06-01
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
25
ct/2fauth.sh
25
ct/2fauth.sh
@@ -24,21 +24,16 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
# Check if installation is present | -f for file, -d for folder
|
|
||||||
if [[ ! -d "/opt/2fauth" ]]; then
|
if [[ ! -d "/opt/2fauth" ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Crawling the new version and checking whether an update is required
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
|
|
||||||
# Creating Backup
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
mv "/opt/2fauth" "/opt/2fauth-backup"
|
mv "/opt/2fauth" "/opt/2fauth-backup"
|
||||||
if ! dpkg -l | grep -q 'php8.3'; then
|
if ! dpkg -l | grep -q 'php8.3'; then
|
||||||
@@ -46,37 +41,24 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_ok "Backup Created"
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
# Upgrade PHP
|
|
||||||
if ! dpkg -l | grep -q 'php8.3'; then
|
if ! dpkg -l | grep -q 'php8.3'; then
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
lsb-release \
|
lsb-release \
|
||||||
gpg
|
gnupg2
|
||||||
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
|
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,fpm,mysql,cli" install_php
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli,intl}
|
|
||||||
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
||||||
fi
|
fi
|
||||||
|
fetch_and_deploy_gh_release "Bubka/2FAuth"
|
||||||
# Execute Update
|
|
||||||
curl -fsSL -o "${RELEASE}.zip" "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
|
|
||||||
$STD unzip "${RELEASE}.zip"
|
|
||||||
mv "2FAuth-${RELEASE//v/}/" "/opt/2fauth"
|
|
||||||
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
||||||
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
||||||
cd "/opt/2fauth" || return
|
cd "/opt/2fauth" || return
|
||||||
|
|
||||||
chown -R www-data: "/opt/2fauth"
|
chown -R www-data: "/opt/2fauth"
|
||||||
chmod -R 755 "/opt/2fauth"
|
chmod -R 755 "/opt/2fauth"
|
||||||
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev --prefer-source
|
$STD composer install --no-dev --prefer-source
|
||||||
|
|
||||||
php artisan 2fauth:install
|
php artisan 2fauth:install
|
||||||
|
|
||||||
$STD systemctl restart nginx
|
$STD systemctl restart nginx
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf "v${RELEASE}.zip"
|
rm -rf "v${RELEASE}.zip"
|
||||||
if dpkg -l | grep -q 'php8.2'; then
|
if dpkg -l | grep -q 'php8.2'; then
|
||||||
@@ -86,7 +68,6 @@ function update_script() {
|
|||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
# Last Action
|
|
||||||
echo "${RELEASE}" >/opt/2fauth_version.txt
|
echo "${RELEASE}" >/opt/2fauth_version.txt
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ catch_errors
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [ ! -d /usr/share/nginx/html ]; then
|
if [ ! -d /usr/share/nginx/html ]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-1}"
|
|||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.21}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
@@ -21,9 +22,6 @@ catch_errors
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [ ! -d /opt/rclone ]; then
|
if [ ! -d /opt/rclone ]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -55,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}:9091${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://YOUR_AUTHELIA_URL${CL}"
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ function update_script() {
|
|||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
|
|
||||||
if [[ -f /systemd/system/synapse-admin.service ]]; then
|
if [[ -f /etc/systemd/system/synapse-admin.service ]]; then
|
||||||
msg_info "Updating Synapse-Admin"
|
msg_info "Updating Synapse-Admin"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/etkecc/synapse-admin/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/etkecc/synapse-admin/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 /opt/"${APP}"_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
@@ -58,7 +58,16 @@ function update_script() {
|
|||||||
curl -fsSL "https://github.com/etkecc/synapse-admin/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
curl -fsSL "https://github.com/etkecc/synapse-admin/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
|
tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
|
||||||
cd /opt/synapse-admin
|
cd /opt/synapse-admin
|
||||||
|
$STD yarn global add serve
|
||||||
$STD yarn install --ignore-engines
|
$STD yarn install --ignore-engines
|
||||||
|
$STD yarn build
|
||||||
|
mv ./dist ../ && \
|
||||||
|
rm -rf * && \
|
||||||
|
mv ../dist ./
|
||||||
|
if [[ -z $(grep "ExecStart=/usr/local/bin/serve" /etc/systemd/system/synapse-admin.service) ]]; then
|
||||||
|
sed -i 's|^ExecStart=.*|ExecStart=/usr/local/bin/serve -s dist -l 5173|' /etc/systemd/system/synapse-admin.service
|
||||||
|
systemctl reenable synapse-admin
|
||||||
|
fi
|
||||||
systemctl start synapse-admin
|
systemctl start synapse-admin
|
||||||
echo "${RELEASE}" >/opt/"${APP}"_version.txt
|
echo "${RELEASE}" >/opt/"${APP}"_version.txt
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
|
|||||||
@@ -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: quantumryuu
|
# Author: quantumryuu | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://firefly-iii.org/
|
# Source: https://firefly-iii.org/
|
||||||
|
|
||||||
|
|||||||
83
ct/gitea-mirror.sh
Normal file
83
ct/gitea-mirror.sh
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/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: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/arunavo4/gitea-mirror
|
||||||
|
|
||||||
|
APP="gitea-mirror"
|
||||||
|
var_tags="${var_tags:-mirror;gitea}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/gitea-mirror ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/arunavo4/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop gitea-mirror
|
||||||
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
msg_info "Backup Data"
|
||||||
|
mkdir -p /opt/gitea-mirror-backup/data
|
||||||
|
cp /opt/gitea-mirror/data/* /opt/gitea-mirror-backup/data/
|
||||||
|
msg_ok "Backup Data"
|
||||||
|
|
||||||
|
msg_info "Installing Bun"
|
||||||
|
export BUN_INSTALL=/opt/bun
|
||||||
|
curl -fsSL https://bun.sh/install | $STD bash
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bun
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
||||||
|
msg_ok "Installed Bun"
|
||||||
|
|
||||||
|
rm -rf /opt/gitea-mirror
|
||||||
|
fetch_and_deploy_gh_release "arunavo4/gitea-mirror"
|
||||||
|
|
||||||
|
msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
|
||||||
|
cd /opt/gitea-mirror
|
||||||
|
$STD bun run setup
|
||||||
|
$STD bun run build
|
||||||
|
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
|
||||||
|
sudo sed -i.bak "s|^Environment=npm_package_version=.*|Environment=npm_package_version=${APP_VERSION}|" /etc/systemd/system/gitea-mirror.service
|
||||||
|
msg_ok "Updated and rebuilt ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Restoring Data"
|
||||||
|
cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Restored Data"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl start gitea-mirror
|
||||||
|
msg_ok "Service Started"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4321${CL}"
|
||||||
6
ct/headers/gitea-mirror
Normal file
6
ct/headers/gitea-mirror
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
_ __ _
|
||||||
|
____ _(_) /____ ____ _ ____ ___ (_)_____________ _____
|
||||||
|
/ __ `/ / __/ _ \/ __ `/_____/ __ `__ \/ / ___/ ___/ __ \/ ___/
|
||||||
|
/ /_/ / / /_/ __/ /_/ /_____/ / / / / / / / / / / /_/ / /
|
||||||
|
\__, /_/\__/\___/\__,_/ /_/ /_/ /_/_/_/ /_/ \____/_/
|
||||||
|
/____/
|
||||||
6
ct/headers/libretranslate
Normal file
6
ct/headers/libretranslate
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ _ __ ______ __ __
|
||||||
|
/ / (_) /_ ________/_ __/________ _____ _____/ /___ _/ /____
|
||||||
|
/ / / / __ \/ ___/ _ \/ / / ___/ __ `/ __ \/ ___/ / __ `/ __/ _ \
|
||||||
|
/ /___/ / /_/ / / / __/ / / / / /_/ / / / (__ ) / /_/ / /_/ __/
|
||||||
|
/_____/_/_.___/_/ \___/_/ /_/ \__,_/_/ /_/____/_/\__,_/\__/\___/
|
||||||
|
|
||||||
6
ct/headers/lyrionmusicserver
Normal file
6
ct/headers/lyrionmusicserver
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ _ __ ___ _ _____
|
||||||
|
/ / __ _______(_)___ ____ / |/ /_ _______(_)____ / ___/___ ______ _____ _____
|
||||||
|
/ / / / / / ___/ / __ \/ __ \ / /|_/ / / / / ___/ / ___/ \__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||||
|
/ /___/ /_/ / / / / /_/ / / / / / / / / /_/ (__ ) / /__ ___/ / __/ / | |/ / __/ /
|
||||||
|
/_____/\__, /_/ /_/\____/_/ /_/ /_/ /_/\__,_/____/_/\___/ /____/\___/_/ |___/\___/_/
|
||||||
|
/____/
|
||||||
6
ct/headers/managemydamnlife
Normal file
6
ct/headers/managemydamnlife
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ ___ __ ___ ____ __ _ ____
|
||||||
|
/ |/ /___ _____ ____ _____ ____ / |/ /_ __ / __ \____ _____ ___ ____ / / (_) __/__
|
||||||
|
/ /|_/ / __ `/ __ \/ __ `/ __ `/ _ \ / /|_/ / / / / / / / / __ `/ __ `__ \/ __ \ / / / / /_/ _ \
|
||||||
|
/ / / / /_/ / / / / /_/ / /_/ / __/ / / / / /_/ / / /_/ / /_/ / / / / / / / / / / /___/ / __/ __/
|
||||||
|
/_/ /_/\__,_/_/ /_/\__,_/\__, /\___/ /_/ /_/\__, / /_____/\__,_/_/ /_/ /_/_/ /_/ /_____/_/_/ \___/
|
||||||
|
/____/ /____/
|
||||||
6
ct/headers/minarca
Normal file
6
ct/headers/minarca
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ ____
|
||||||
|
/ |/ (_)___ ____ _______________ _
|
||||||
|
/ /|_/ / / __ \/ __ `/ ___/ ___/ __ `/
|
||||||
|
/ / / / / / / / /_/ / / / /__/ /_/ /
|
||||||
|
/_/ /_/_/_/ /_/\__,_/_/ \___/\__,_/
|
||||||
|
|
||||||
6
ct/headers/zot-registry
Normal file
6
ct/headers/zot-registry
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
_____ __ ____ _ __
|
||||||
|
/__ / ____ / /_ / __ \___ ____ _(_)____/ /________ __
|
||||||
|
/ / / __ \/ __/_____/ /_/ / _ \/ __ `/ / ___/ __/ ___/ / / /
|
||||||
|
/ /__/ /_/ / /_/_____/ _, _/ __/ /_/ / (__ ) /_/ / / /_/ /
|
||||||
|
/____/\____/\__/ /_/ |_|\___/\__, /_/____/\__/_/ \__, /
|
||||||
|
/____/ /____/
|
||||||
19
ct/homarr.sh
19
ct/homarr.sh
@@ -92,6 +92,19 @@ EOF
|
|||||||
cp /opt/homarr/.env /opt/homarr-data-backup/.env
|
cp /opt/homarr/.env /opt/homarr-data-backup/.env
|
||||||
msg_ok "Backup Data"
|
msg_ok "Backup Data"
|
||||||
|
|
||||||
|
msg_info "Updating Nodejs"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade nodejs -y
|
||||||
|
msg_ok "Updated Nodejs"
|
||||||
|
|
||||||
|
$STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
|
||||||
|
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
|
||||||
|
NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
|
||||||
|
install_node_and_modules
|
||||||
|
|
||||||
|
rm -rf /opt/homarr
|
||||||
|
fetch_and_deploy_gh_release "homarr-labs/homarr"
|
||||||
|
|
||||||
msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
|
msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
|
||||||
rm /opt/run_homarr.sh
|
rm /opt/run_homarr.sh
|
||||||
cat <<'EOF' >/opt/run_homarr.sh
|
cat <<'EOF' >/opt/run_homarr.sh
|
||||||
@@ -117,12 +130,6 @@ node apps/nextjs/server.js & PID=$!
|
|||||||
wait $PID
|
wait $PID
|
||||||
EOF
|
EOF
|
||||||
chmod +x /opt/run_homarr.sh
|
chmod +x /opt/run_homarr.sh
|
||||||
$STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
|
|
||||||
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
|
|
||||||
NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
|
|
||||||
install_node_and_modules
|
|
||||||
rm -rf /opt/homarr
|
|
||||||
fetch_and_deploy_gh_release "homarr-labs/homarr"
|
|
||||||
mv /opt/homarr-data-backup/.env /opt/homarr/.env
|
mv /opt/homarr-data-backup/.env /opt/homarr/.env
|
||||||
cd /opt/homarr
|
cd /opt/homarr
|
||||||
$STD pnpm install --recursive --frozen-lockfile --shamefully-hoist
|
$STD pnpm install --recursive --frozen-lockfile --shamefully-hoist
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ function update_script() {
|
|||||||
STAGING_DIR=/opt/staging
|
STAGING_DIR=/opt/staging
|
||||||
BASE_DIR=${STAGING_DIR}/base-images
|
BASE_DIR=${STAGING_DIR}/base-images
|
||||||
SOURCE_DIR=${STAGING_DIR}/image-source
|
SOURCE_DIR=${STAGING_DIR}/image-source
|
||||||
|
cd /root
|
||||||
if [[ -f ~/.intel_version ]]; then
|
if [[ -f ~/.intel_version ]]; then
|
||||||
curl -fsSLO https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/machine-learning/Dockerfile
|
curl -fsSLO https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/machine-learning/Dockerfile
|
||||||
readarray -t INTEL_URLS < <(sed -n "/intel/p" ./Dockerfile | awk '{print $3}')
|
readarray -t INTEL_URLS < <(sed -n "/intel/p" ./Dockerfile | awk '{print $3}')
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Kasm"
|
APP="Kasm"
|
||||||
var_tags="${var_tags:-os}"
|
var_tags="${var_tags:-os}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-4192}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-30}"
|
var_disk="${var_disk:-30}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
var_fuse="${var_fuse:-yes}"
|
var_fuse="${var_fuse:-yes}"
|
||||||
var_tun="${var_tun:-yes}"
|
var_tun="${var_tun:-yes}"
|
||||||
|
|
||||||
|
|||||||
61
ct/libretranslate.sh
Normal file
61
ct/libretranslate.sh
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/LibreTranslate/LibreTranslate
|
||||||
|
|
||||||
|
APP="LibreTranslate"
|
||||||
|
var_tags="${var_tags:-Arr}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
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 [[ ! -d /opt/libretranslate ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/LibreTranslate/LibreTranslate/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat $HOME/.libretranslate)" ]] || [[ ! -f $HOME/.libretranslate ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop libretranslate
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
cd /opt/libretranslate
|
||||||
|
source .venv/bin/activate
|
||||||
|
$STD pip install -U libretranslate
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start libretranslate
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||||
61
ct/lyrionmusicserver.sh
Normal file
61
ct/lyrionmusicserver.sh
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/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: Omar Minaya
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://lyrion.org/getting-started/
|
||||||
|
|
||||||
|
APP="Lyrion Music Server"
|
||||||
|
var_tags="${var_tags:-media}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-3}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /lib/systemd/system/lyrionmusicserver.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEB_URL=$(curl -s 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
|
||||||
|
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
|
||||||
|
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
|
||||||
|
if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
|
||||||
|
$STD apt install "$DEB_FILE" -y
|
||||||
|
systemctl restart lyrion
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD rm -f "$DEB_FILE"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
else
|
||||||
|
msg_ok "$APP is already up to date (${RELEASE})"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access the web interface at:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
||||||
78
ct/managemydamnlife.sh
Normal file
78
ct/managemydamnlife.sh
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/intri-in/manage-my-damn-life-nextjs
|
||||||
|
|
||||||
|
APP="Manage My Damn Life"
|
||||||
|
var_tags="${var_tags:-calendar;tasks}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/mmdl ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/mmdl_version.txt)" ]] || [[ ! -f /opt/mmdl_version.txt ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop mmdl
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Creating Backup"
|
||||||
|
cp /opt/mmdl/.env /opt/mmdl.env
|
||||||
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
rm -r /opt/mmdl
|
||||||
|
unzip -q v"$RELEASE".zip
|
||||||
|
mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
|
||||||
|
mv /opt/mmdl.env /opt/mmdl/.env
|
||||||
|
cd /opt/mmdl
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run migrate
|
||||||
|
$STD npm run build
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start mmdl
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -f ~/v"$RELEASE".zip
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
# Last Action
|
||||||
|
echo "$RELEASE" >/opt/mmdl_version.txt
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
54
ct/minarca.sh
Normal file
54
ct/minarca.sh
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/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: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://minarca.org/en_CA
|
||||||
|
|
||||||
|
APP="Minarca"
|
||||||
|
var_tags="${var_tags:-backup}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-10}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/minarca-server ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop minarca-server
|
||||||
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get upgrade -y
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start minarca-server
|
||||||
|
msg_ok "Restarted ${APP}"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
35
ct/pulse.sh
35
ct/pulse.sh
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s 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
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
@@ -23,40 +23,37 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/pulse-proxmox ]]; then
|
if [[ -d /opt/pulse-monitor ]]; then
|
||||||
|
msg_error "An old installation was detected. Please recreate the LXC from scratch (https://github.com/community-scripts/ProxmoxVE/pull/4848)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -d /opt/pulse ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop pulse-monitor
|
systemctl stop pulse
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating Pulse"
|
msg_info "Updating Pulse"
|
||||||
if [[ -f /opt/pulse-proxmox/.env ]]; then
|
|
||||||
cp /opt/pulse-proxmox/.env /tmp/.env.backup.pulse
|
|
||||||
fi
|
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
mkdir -p /opt/pulse-proxmox
|
mkdir -p /opt/pulse
|
||||||
rm -rf /opt/pulse-proxmox/*
|
rm -rf /opt/pulse/*
|
||||||
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
|
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse-proxmox
|
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
|
||||||
if [[ -f /tmp/.env.backup.pulse ]]; then
|
|
||||||
mv /tmp/.env.backup.pulse /opt/pulse-proxmox/.env
|
|
||||||
fi
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated Pulse to ${RELEASE}"
|
msg_ok "Updated Pulse to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Setting permissions for /opt/pulse-proxmox..."
|
msg_info "Setting permissions for /opt/pulse..."
|
||||||
chown -R pulse:pulse "/opt/pulse-proxmox"
|
chown -R pulse:pulse "/opt/pulse"
|
||||||
find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
|
find "/opt/pulse" -type d -exec chmod 755 {} \;
|
||||||
find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
|
find "/opt/pulse" -type f -exec chmod 644 {} \;
|
||||||
chmod 600 /opt/pulse-proxmox/.env
|
|
||||||
msg_ok "Set permissions."
|
msg_ok "Set permissions."
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start pulse-monitor
|
systemctl start pulse
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
@@ -70,4 +67,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}(:your_port)${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7655${CL}"
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-2}"
|
|||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
|
|||||||
30
ct/seelf.sh
30
ct/seelf.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: tremor021
|
# Author: Slaviša Arežina (tremor021)
|
||||||
# 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/YuukanOO/seelf
|
# Source: https://github.com/YuukanOO/seelf
|
||||||
|
|
||||||
@@ -28,39 +28,21 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if fetch_and_deploy_gh_release "YuukanOO/seelf"; then
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_ok "$APP already at the latest version. No update required."
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
else
|
||||||
msg_info "Updating $APP"
|
|
||||||
|
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop seelf
|
systemctl stop seelf
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}. Patience"
|
msg_info "Updating $APP"
|
||||||
export PATH=$PATH:/usr/local/go/bin
|
|
||||||
source ~/.bashrc
|
|
||||||
curl -fsSL "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz")
|
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
|
||||||
cp -r seelf-${RELEASE}/ /opt/seelf
|
|
||||||
cd /opt/seelf
|
cd /opt/seelf
|
||||||
$STD make build
|
$STD make build
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start seelf
|
systemctl start seelf
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ~/*.tar.gz
|
|
||||||
rm -rf ~/seelf-${RELEASE}
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! command -v jq &>/dev/null; then
|
||||||
|
$STD apt-get install -y jq
|
||||||
|
fi
|
||||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
||||||
msg_info "Installing Node.js 22"
|
msg_info "Installing Node.js 22"
|
||||||
$STD apt-get purge -y nodejs
|
$STD apt-get purge -y nodejs
|
||||||
|
|||||||
@@ -29,7 +29,19 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "v${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "v${RELEASE}" != "$(cat /opt/${APP}_version.txt 2>/dev/null)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
|
||||||
|
if [[ -d /opt/trilium/db ]]; then
|
||||||
|
DB_PATH="/opt/trilium/db"
|
||||||
|
DB_RESTORE_PATH="/opt/trilium/db"
|
||||||
|
elif [[ -d /opt/trilium/assets/db ]]; then
|
||||||
|
DB_PATH="/opt/trilium/assets/db"
|
||||||
|
DB_RESTORE_PATH="/opt/trilium/assets/db"
|
||||||
|
else
|
||||||
|
msg_error "Database not found in either /opt/trilium/db or /opt/trilium/assets/db"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop trilium
|
systemctl stop trilium
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -37,18 +49,22 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating to ${RELEASE}"
|
msg_info "Updating to ${RELEASE}"
|
||||||
mkdir -p /opt/trilium_backup
|
mkdir -p /opt/trilium_backup
|
||||||
mv /opt/trilium/db /opt/trilium_backup/
|
cp -r "${DB_PATH}" /opt/trilium_backup/
|
||||||
rm -rf /opt/trilium
|
rm -rf /opt/trilium
|
||||||
cd /tmp
|
cd /tmp
|
||||||
curl -fsSL "https://github.com/TriliumNext/Notes/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz" -o $(basename "https://github.com/TriliumNext/Notes/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz")
|
curl -fsSL "https://github.com/TriliumNext/Notes/releases/download/v${RELEASE}/TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz" -o "TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz"
|
||||||
tar -xf TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz
|
tar -xf "TriliumNextNotes-Server-v${RELEASE}-linux-x64.tar.xz"
|
||||||
mv TriliumNextNotes-Server-$RELEASE-linux-x64 /opt/trilium
|
mv "TriliumNextNotes-Server-${RELEASE}-linux-x64" /opt/trilium
|
||||||
cp -r /opt/trilium_backup/db /opt/trilium/
|
|
||||||
|
# Restore database
|
||||||
|
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
|
||||||
|
cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}"
|
||||||
|
|
||||||
echo "v${RELEASE}" >/opt/${APP}_version.txt
|
echo "v${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated to ${RELEASE}"
|
msg_ok "Updated to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /tmp/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz
|
rm -rf "/tmp/TriliumNextNotes-Server-${RELEASE}-linux-x64.tar.xz"
|
||||||
rm -rf /opt/trilium_backup
|
rm -rf /opt/trilium_backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
@@ -57,10 +73,11 @@ function update_script() {
|
|||||||
sleep 1
|
sleep 1
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
exit
|
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ EOF
|
|||||||
|
|
||||||
msg_info "Updating Wastebin"
|
msg_info "Updating Wastebin"
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.zip" -o "$temp_file"
|
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst" -o "$temp_file"
|
||||||
$STD unzip -o $temp_file
|
tar -xf $temp_file
|
||||||
cp -f wastebin /opt/wastebin/
|
cp -f wastebin /opt/wastebin/
|
||||||
chmod +x /opt/wastebin/wastebin
|
chmod +x /opt/wastebin/wastebin
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
|||||||
@@ -41,7 +41,9 @@ function update_script() {
|
|||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cp /opt/zipline/.env /opt/
|
cp /opt/zipline/.env /opt/
|
||||||
mkdir -p /opt/zipline-upload
|
mkdir -p /opt/zipline-upload
|
||||||
|
if [ -d /opt/zipline/upload ] && [ "$(ls -A /opt/zipline/upload)" ]; then
|
||||||
cp -R /opt/zipline/upload/* /opt/zipline-upload/
|
cp -R /opt/zipline/upload/* /opt/zipline-upload/
|
||||||
|
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")
|
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")
|
||||||
$STD unzip v"${RELEASE}".zip
|
$STD unzip v"${RELEASE}".zip
|
||||||
rm -R /opt/zipline
|
rm -R /opt/zipline
|
||||||
|
|||||||
59
ct/zot-registry.sh
Normal file
59
ct/zot-registry.sh
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://zotregistry.dev/
|
||||||
|
|
||||||
|
APP="Zot-Registry"
|
||||||
|
var_tags="${var_tags:-registry;oci}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-5}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /usr/bin/zot ]]; then
|
||||||
|
msg_error "No ${APP} installation found!"
|
||||||
|
exit
|
||||||
|
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)}')
|
||||||
|
if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
|
||||||
|
msg_info "Stopping Zot service"
|
||||||
|
systemctl stop zot
|
||||||
|
msg_ok "Stopped Zot service"
|
||||||
|
|
||||||
|
msg_info "Updating Zot to ${RELEASE}"
|
||||||
|
curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot
|
||||||
|
chmod +x /usr/bin/zot
|
||||||
|
chown root:root /usr/bin/zot
|
||||||
|
echo "${RELEASE}" >~/.${APP}
|
||||||
|
systemctl restart zot
|
||||||
|
msg_ok "Updated Zot to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "Zot is already up to date (${RELEASE})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 120 KiB |
@@ -1,23 +1,23 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE LXC IP-Tag",
|
"name": "Proxmox VE LXC Tag",
|
||||||
"slug": "add-lxc-iptag",
|
"slug": "add-iptag",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
],
|
],
|
||||||
"date_created": "2024-12-16",
|
"date_created": "2025-06-16",
|
||||||
"type": "pve",
|
"type": "pve",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/proxmox.svg",
|
||||||
"config_path": "/opt/lxc-iptag/iptag.conf",
|
"config_path": "/opt/iptag/iptag.conf",
|
||||||
"description": "This script automatically adds IP address as tags to LXC containers using a Systemd service. The service also updates the tags if a LXC IP address is changed.",
|
"description": "This script automatically adds IP address as tags to LXC containers or VM's using a systemd service. The service also updates the tags if a LXC/VM IP address is changed.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "tools/pve/add-lxc-iptag.sh",
|
"script": "tools/pve/add-iptag.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": null,
|
"cpu": null,
|
||||||
"ram": null,
|
"ram": null,
|
||||||
@@ -36,6 +36,10 @@
|
|||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox shell",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag.service must be restarted after change.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
|
"text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 9091,
|
"interface_port": 443,
|
||||||
"documentation": "https://www.authelia.com/integration/deployment/bare-metal/",
|
"documentation": "https://www.authelia.com/integration/deployment/bare-metal/",
|
||||||
"website": "https://www.authelia.com/",
|
"website": "https://www.authelia.com/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/authelia.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/authelia.webp",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
1
|
1
|
||||||
],
|
],
|
||||||
"date_created": "2024-04-29",
|
"date_created": "2024-04-29",
|
||||||
"type": "addon",
|
"type": "pve",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": null,
|
"interface_port": null,
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
|
"text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/update-lxcs-cron.sh)\" -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8096,
|
"interface_port": 8096,
|
||||||
"documentation": "https://emby.media/support/articles/Home.html",
|
"documentation": "https://emby.media/support/articles/Home.html",
|
||||||
|
|||||||
@@ -32,6 +32,10 @@
|
|||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Data Importer is at `http://<LXC_IP>/dataimporter/`",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"text": "Database credentials: `cat ~/firefly.creds`",
|
"text": "Database credentials: `cat ~/firefly.creds`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
|||||||
35
frontend/public/json/gitea-mirror.json
Normal file
35
frontend/public/json/gitea-mirror.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Gitea-Mirror",
|
||||||
|
"slug": "gitea-mirror",
|
||||||
|
"categories": [
|
||||||
|
7
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-05",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 4321,
|
||||||
|
"documentation": "https://github.com/arunavo4/gitea-mirror/",
|
||||||
|
"config_path": "/etc/systemd/system/gitea-mirror.service",
|
||||||
|
"website": "https://github.com/arunavo4/gitea-mirror/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea-mirror.webp",
|
||||||
|
"description": "Gitea Mirror auto-syncs GitHub repos to your self-hosted Gitea, with a sleek Web UI and easy Docker deployment. ",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/gitea-mirror.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -33,15 +33,15 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "During installation, HW-accelerated machine-learning (with OpenVINO) is an available option. This also allows for HW-accelerated transcoding, but it must be enabled in Video Transcoding Settings",
|
"text": "During installation, you will be prompted with the option to install Intel OpenVINO for hardware-accelerated machine-learning. If you opt in, increase your LXC RAM after installation, as OpenVINO is memory-intensive",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "If using OpenVINO HW machine-learning, increase RAM because OpenVINO is memory-intensive",
|
"text": "HW-accelerated video transcoding is supported, but must be enabled in Immich Settings",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "To change upload location, edit 'IMMICH_MEDIA_LOCATION' in `/opt/immich/.env`",
|
"text": "To change upload location, edit 'IMMICH_MEDIA_LOCATION' in `/opt/immich/.env`, and create the symlink 'upload' in /opt/immich/app & /opt/immich/app/machine-learning to your new upload location",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/kasm.sh",
|
"script": "ct/kasm.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 4096,
|
"ram": 8192,
|
||||||
"hdd": 50,
|
"hdd": 50,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
@@ -36,6 +36,10 @@
|
|||||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"text": "Kasm needs swap (on Proxmox host) and activated FUSE to be installed successfully!",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"text": "Show password: `cat ~/kasm.creds`",
|
"text": "Show password: `cat ~/kasm.creds`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
|||||||
44
frontend/public/json/libretranslate.json
Normal file
44
frontend/public/json/libretranslate.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "LibreTranslate",
|
||||||
|
"slug": "libretranslate",
|
||||||
|
"categories": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-15",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 5000,
|
||||||
|
"documentation": "https://github.com/LibreTranslate/LibreTranslate?tab=readme-ov-file#settings--flags",
|
||||||
|
"website": "https://libretranslate.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/libretranslate.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source Argos Translate library.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/libretranslate.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 20,
|
||||||
|
"os": "debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "During the installation, application will download language models used for translation. Depending on how fast your internet/host is, this can take 5-10 minutes.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "At every boot of LXC, application will look for updates for language models installed. This can prolong the startup of the LXC.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
35
frontend/public/json/lyrionmusicserver.json
Normal file
35
frontend/public/json/lyrionmusicserver.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Lyrion Music Server",
|
||||||
|
"slug": "lyrionmusicserver",
|
||||||
|
"categories": [
|
||||||
|
13
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-05",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"config_path": "/etc/default/lyrionmusicserver",
|
||||||
|
"interface_port": 9000,
|
||||||
|
"documentation": "https://lyrion.org/",
|
||||||
|
"website": "https://lyrion.org/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/lyrion-media-server.webp",
|
||||||
|
"description": "Lyrion Music Server is an open-source server software to stream local music collections, internet radio, and music services to Squeezebox and compatible audio players.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/lyrionmusicserver.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 1024,
|
||||||
|
"hdd": 3,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
35
frontend/public/json/managemydamnlife.json
Normal file
35
frontend/public/json/managemydamnlife.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Manage My Damn Life",
|
||||||
|
"slug": "managemydamnlife",
|
||||||
|
"categories": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-12",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 3000,
|
||||||
|
"documentation": "https://manage-my-damn-life-nextjs.readthedocs.io/en/latest/",
|
||||||
|
"config_path": "/opt/mmdl/.env",
|
||||||
|
"website": "https://github.com/intri-in/manage-my-damn-life-nextjs",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/manage-my-damn-life.webp",
|
||||||
|
"description": "Manage My Damn Life (MMDL) is a self-hosted front end for managing your CalDAV tasks and calendars.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/managemydamnlife.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 6,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
35
frontend/public/json/minarca.json
Normal file
35
frontend/public/json/minarca.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Minarca",
|
||||||
|
"slug": "minarca",
|
||||||
|
"categories": [
|
||||||
|
7
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-08",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8080,
|
||||||
|
"documentation": "https://nexus.ikus-soft.com/repository/archive/minarca/6.0.3/doc/index.html",
|
||||||
|
"config_path": "/etc/minarca/minarca-server.conf",
|
||||||
|
"website": "https://minarca.org/en_CA",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/minarca.webp",
|
||||||
|
"description": "Minarca is a self-hosted open source data backup software that allows you to manage your computer and server backups for free from a direct online accessible centralized view of your data with easy retrieval.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/minarca.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 4096,
|
||||||
|
"hdd": 10,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "admin",
|
||||||
|
"password": "admin123"
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 443,
|
"interface_port": 443,
|
||||||
"documentation": "https://netboxlabs.com/docs/netbox/en/stable/",
|
"documentation": "https://netboxlabs.com/docs/netbox/en/stable/",
|
||||||
"website": "https://netboxlabs.com/",
|
"website": "https://netboxlabs.com/products/netbox/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/netbox.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/netbox.webp",
|
||||||
"config_path": "/opt/netbox/netbox/netbox/configuration.py",
|
"config_path": "/opt/netbox/netbox/netbox/configuration.py",
|
||||||
"description": "NetBox is the source of truth for everything on your network, from physical components like power systems and cabling to virtual assets like IP addresses and VLANs. Network automation and observability tools depend on NetBox’s authoritative data to roll out configurations, monitor changes, and accelerate operations across the enterprise",
|
"description": "NetBox is the source of truth for everything on your network, from physical components like power systems and cabling to virtual assets like IP addresses and VLANs. Network automation and observability tools depend on NetBox’s authoritative data to roll out configurations, monitor changes, and accelerate operations across the enterprise",
|
||||||
|
|||||||
40
frontend/public/json/nic-offloading-fix.json
Normal file
40
frontend/public/json/nic-offloading-fix.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "NIC Offloading Fix",
|
||||||
|
"slug": "nic-offloading-fix",
|
||||||
|
"categories": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"date_created": "2025-05-25",
|
||||||
|
"type": "pve",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": null,
|
||||||
|
"config_path": "",
|
||||||
|
"website": null,
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||||
|
"description": "This script automates the process of disabling network interface card (NIC) offloading features specifically for Intel e1000e network interfaces on Linux systems.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "tools/pve/nic-offloading-fix.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",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": "https://stonith404.github.io/pingvin-share/introduction",
|
"documentation": "https://stonith404.github.io/pingvin-share/introduction",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/rcourtman/Pulse",
|
"website": "https://github.com/rcourtman/Pulse",
|
||||||
"logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png",
|
"logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png",
|
||||||
"config_path": "/opt/pulse-proxmox/.env",
|
"config_path": "/opt/pulse/.env",
|
||||||
"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": [
|
||||||
{
|
{
|
||||||
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
|
"text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
|
||||||
"type": "Info"
|
"type": "Info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
|
||||||
|
"type": "Info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
48
frontend/public/json/pve-privilege-converter.json
Normal file
48
frontend/public/json/pve-privilege-converter.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"name": "PVE Privilege Converter",
|
||||||
|
"slug": "pve-privilege-converter",
|
||||||
|
"categories": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-02",
|
||||||
|
"type": "pve",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": "https://github.com/onethree7/proxmox-lxc-privilege-converter",
|
||||||
|
"website": null,
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "This script allows converting Proxmox LXC containers between privileged and unprivileged modes using vzdump backup and restore. It guides you through container selection, backup storage, ID assignment, and privilege flipping via automated restore. Useful for applying changes that require different LXC modes.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "tools/pve/pve-privilege-converter.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": null,
|
||||||
|
"ram": null,
|
||||||
|
"hdd": null,
|
||||||
|
"os": null,
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Execute this script inside the Proxmox shell as root.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Ensure that the backup and target storage have enough space.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "The container will be recreated with a new ID and desired privilege setting.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 20,
|
"hdd": 32,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Database credentials: `cat wavelog.creds`",
|
"text": "Database credentials: `cat ~/wavelog.creds`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
35
frontend/public/json/zot-registry.json
Normal file
35
frontend/public/json/zot-registry.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Zot Registry",
|
||||||
|
"slug": "zot",
|
||||||
|
"categories": [
|
||||||
|
13
|
||||||
|
],
|
||||||
|
"date_created": "2025-06-06",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8080,
|
||||||
|
"documentation": "https://zotregistry.dev/docs/intro/",
|
||||||
|
"website": "https://zotregistry.dev/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zot-registry.webp",
|
||||||
|
"config_path": "/etc/zot/config.json",
|
||||||
|
"description": "Zot is a cloud-native OCI image registry focused on extensibility, maintainability, and performance. It supports advanced features such as Web UI, security scanning, authentication via htpasswd and OIDC, and more.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/zot-registry.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 5,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -19,7 +19,11 @@ const getMetadata = async () => {
|
|||||||
|
|
||||||
const getScripts = async () => {
|
const getScripts = async () => {
|
||||||
const filePaths = (await fs.readdir(jsonDir))
|
const filePaths = (await fs.readdir(jsonDir))
|
||||||
.filter((fileName) => fileName !== metadataFileName && fileName !== versionFileName)
|
.filter((fileName) =>
|
||||||
|
fileName.endsWith(".json") &&
|
||||||
|
fileName !== metadataFileName &&
|
||||||
|
fileName !== versionFileName
|
||||||
|
)
|
||||||
.map((fileName) => path.resolve(jsonDir, fileName));
|
.map((fileName) => path.resolve(jsonDir, fileName));
|
||||||
|
|
||||||
const scripts = await Promise.all(
|
const scripts = await Promise.all(
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ export default function RootLayout({
|
|||||||
<Navbar />
|
<Navbar />
|
||||||
<div className="flex min-h-screen flex-col justify-center">
|
<div className="flex min-h-screen flex-col justify-center">
|
||||||
<div className="flex w-full justify-center">
|
<div className="flex w-full justify-center">
|
||||||
<div className="w-full max-w-7xl ">
|
<div className="w-full max-w-[1440px] ">
|
||||||
<QueryProvider>
|
<QueryProvider>
|
||||||
<NuqsAdapter>{children}</NuqsAdapter>
|
<NuqsAdapter>{children}</NuqsAdapter>
|
||||||
</QueryProvider>
|
</QueryProvider>
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export default function ScriptAccordion({
|
|||||||
value={expandedItem}
|
value={expandedItem}
|
||||||
onValueChange={handleAccordionChange}
|
onValueChange={handleAccordionChange}
|
||||||
collapsible
|
collapsible
|
||||||
className="overflow-y-scroll max-h-[calc(100vh-225px)] overflow-x-hidden mt-3 p-2"
|
className="overflow-y-scroll max-h-[calc(100vh-225px)] overflow-x-hidden p-2"
|
||||||
>
|
>
|
||||||
{items.map((category) => (
|
{items.map((category) => (
|
||||||
<AccordionItem
|
<AccordionItem
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ import { ResourceDisplay } from "./ResourceDisplay";
|
|||||||
import { getDisplayValueFromType } from "./ScriptInfoBlocks";
|
import { getDisplayValueFromType } from "./ScriptInfoBlocks";
|
||||||
import Alerts from "./ScriptItems/Alerts";
|
import Alerts from "./ScriptItems/Alerts";
|
||||||
import Buttons from "./ScriptItems/Buttons";
|
import Buttons from "./ScriptItems/Buttons";
|
||||||
|
import ConfigFile from "./ScriptItems/ConfigFile";
|
||||||
import DefaultPassword from "./ScriptItems/DefaultPassword";
|
import DefaultPassword from "./ScriptItems/DefaultPassword";
|
||||||
import Description from "./ScriptItems/Description";
|
import Description from "./ScriptItems/Description";
|
||||||
import InstallCommand from "./ScriptItems/InstallCommand";
|
import InstallCommand from "./ScriptItems/InstallCommand";
|
||||||
import InterFaces from "./ScriptItems/InterFaces";
|
import InterFaces from "./ScriptItems/InterFaces";
|
||||||
import Tooltips from "./ScriptItems/Tooltips";
|
import Tooltips from "./ScriptItems/Tooltips";
|
||||||
import ConfigFile from "./ScriptItems/ConfigFile";
|
|
||||||
|
|
||||||
interface ScriptItemProps {
|
interface ScriptItemProps {
|
||||||
item: Script;
|
item: Script;
|
||||||
@@ -120,7 +120,7 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full max-w-5xl mx-auto">
|
<div className="w-full mx-auto">
|
||||||
<div className="flex w-full flex-col">
|
<div className="flex w-full flex-col">
|
||||||
<div className="mb-3 flex items-center justify-between">
|
<div className="mb-3 flex items-center justify-between">
|
||||||
<h2 className="text-2xl font-semibold tracking-tight text-foreground/90">Selected Script</h2>
|
<h2 className="text-2xl font-semibold tracking-tight text-foreground/90">Selected Script</h2>
|
||||||
@@ -132,7 +132,7 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="rounded-xl border border-border/40 bg-gradient-to-b from-card/30 to-background/50 backdrop-blur-sm shadow-sm">
|
<div className="rounded-xl border border-border bg-gradient-to-b from-card/30 to-background/50 backdrop-blur-sm shadow-sm">
|
||||||
<div className="p-6 space-y-6">
|
<div className="p-6 space-y-6">
|
||||||
<Suspense fallback={<div className="animate-pulse h-32 bg-accent/20 rounded-xl" />}>
|
<Suspense fallback={<div className="animate-pulse h-32 bg-accent/20 rounded-xl" />}>
|
||||||
<ScriptHeader item={item} />
|
<ScriptHeader item={item} />
|
||||||
@@ -152,16 +152,18 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
|
|||||||
<div className="">
|
<div className="">
|
||||||
<InstallCommand item={item} />
|
<InstallCommand item={item} />
|
||||||
</div>
|
</div>
|
||||||
|
{item.config_path && (
|
||||||
|
<>
|
||||||
<Separator />
|
<Separator />
|
||||||
<div className="flex gap-3 px-4 py-2 bg-accent/25">
|
<div className="flex gap-3 px-4 py-2 bg-accent/25">
|
||||||
<h2 className="text-lg font-semibold">
|
<h2 className="text-lg font-semibold">Location of config file</h2>
|
||||||
Location of config file
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<Separator />
|
<Separator />
|
||||||
<div className="">
|
<div className="">
|
||||||
<ConfigFile item={item} />
|
<ConfigFile configPath={item.config_path} />
|
||||||
</div>
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<DefaultPassword item={item} />
|
<DefaultPassword item={item} />
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import ConfigCopyButton from "@/components/ui/config-copy-button";
|
import ConfigCopyButton from "@/components/ui/config-copy-button";
|
||||||
import { Script } from "@/lib/types";
|
|
||||||
|
|
||||||
export default function ConfigFile({ item }: { item: Script }) {
|
export default function ConfigFile({ configPath }: { configPath: string }) {
|
||||||
return (
|
return (
|
||||||
<div className="px-4 pb-4">
|
<div className="px-4 pb-4">
|
||||||
<ConfigCopyButton>{item.config_path ? item.config_path : "No config path set"}</ConfigCopyButton>
|
<ConfigCopyButton>{configPath}</ConfigCopyButton>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { Script } from "@/lib/types";
|
|||||||
|
|
||||||
export default function DefaultPassword({ item }: { item: Script }) {
|
export default function DefaultPassword({ item }: { item: Script }) {
|
||||||
const { username, password } = item.default_credentials;
|
const { username, password } = item.default_credentials;
|
||||||
const hasDefaultLogin = username && password;
|
const hasDefaultLogin = username || password;
|
||||||
|
|
||||||
if (!hasDefaultLogin) return null;
|
if (!hasDefaultLogin) return null;
|
||||||
|
|
||||||
@@ -23,14 +23,17 @@ export default function DefaultPassword({ item }: { item: Script }) {
|
|||||||
<p className="mb-2 text-sm">
|
<p className="mb-2 text-sm">
|
||||||
You can use the following credentials to login to the {item.name} {item.type}.
|
You can use the following credentials to login to the {item.name} {item.type}.
|
||||||
</p>
|
</p>
|
||||||
{["username", "password"].map((type) => (
|
{["username", "password"].map((type) => {
|
||||||
|
const value = item.default_credentials[type as "username" | "password"];
|
||||||
|
return value && value.trim() !== "" ? (
|
||||||
<div key={type} className="text-sm">
|
<div key={type} className="text-sm">
|
||||||
{type.charAt(0).toUpperCase() + type.slice(1)}:{" "}
|
{type.charAt(0).toUpperCase() + type.slice(1)}:{" "}
|
||||||
<Button variant="secondary" size="null" onClick={() => copyCredential(type as "username" | "password")}>
|
<Button variant="secondary" size="null" onClick={() => copyCredential(type as "username" | "password")}>
|
||||||
{item.default_credentials[type as "username" | "password"]}
|
{value}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
))}
|
) : null;
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const Sidebar = ({
|
|||||||
}, [] as Script[]);
|
}, [] as Script[]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex min-w-72 flex-col sm:max-w-72">
|
<div className="flex min-w-[350px] flex-col sm:max-w-[350px]">
|
||||||
<div className="flex items-end justify-between pb-4">
|
<div className="flex items-end justify-between pb-4">
|
||||||
<h1 className="text-xl font-bold">Categories</h1>
|
<h1 className="text-xl font-bold">Categories</h1>
|
||||||
<p className="text-xs italic text-muted-foreground">
|
<p className="text-xs italic text-muted-foreground">
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ function ScriptContent() {
|
|||||||
setSelectedScript={setSelectedScript}
|
setSelectedScript={setSelectedScript}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="mx-7 w-full sm:mx-0 sm:ml-7">
|
<div className="mx-4 w-full sm:mx-0 sm:ml-4">
|
||||||
{selectedScript && item ? (
|
{selectedScript && item ? (
|
||||||
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
|
<ScriptItem item={item} setSelectedScript={setSelectedScript} />
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function Navbar() {
|
|||||||
isScrolled ? "glass border-b bg-background/50" : ""
|
isScrolled ? "glass border-b bg-background/50" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex h-20 w-full max-w-7xl items-center justify-between sm:flex-row">
|
<div className="flex h-20 w-full max-w-[1440px] items-center justify-between sm:flex-row">
|
||||||
<Link
|
<Link
|
||||||
href={"/"}
|
href={"/"}
|
||||||
className="flex cursor-pointer w-full justify-center sm:justify-start flex-row-reverse items-center gap-2 font-semibold sm:flex-row"
|
className="flex cursor-pointer w-full justify-center sm:justify-start flex-row-reverse items-center gap-2 font-semibold sm:flex-row"
|
||||||
|
|||||||
@@ -15,17 +15,12 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
lsb-release
|
lsb-release \
|
||||||
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
|
nginx
|
||||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
|
|
||||||
$STD apt-get update
|
|
||||||
|
|
||||||
$STD apt-get install -y \
|
|
||||||
nginx \
|
|
||||||
composer \
|
|
||||||
php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,intl,mbstring,mysql,xml,cli}
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,fpm,mysql,cli" install_php
|
||||||
|
install_composer
|
||||||
install_mariadb
|
install_mariadb
|
||||||
|
|
||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
@@ -33,7 +28,7 @@ DB_NAME=2fauth_db
|
|||||||
DB_USER=2fauth
|
DB_USER=2fauth
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "2FAuth Credentials"
|
echo "2FAuth Credentials"
|
||||||
@@ -43,16 +38,12 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
|
|||||||
} >>~/2FAuth.creds
|
} >>~/2FAuth.creds
|
||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
msg_info "Setup 2FAuth"
|
fetch_and_deploy_gh_release "Bubka/2FAuth"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
|
|
||||||
$STD unzip "${RELEASE}.zip"
|
|
||||||
mv "2FAuth-${RELEASE//v/}/" /opt/2fauth
|
|
||||||
|
|
||||||
cd "/opt/2fauth" || return
|
msg_info "Setup 2FAuth"
|
||||||
|
cd /opt/2fauth
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
IPADDRESS=$(hostname -I | awk '{print $1}')
|
IPADDRESS=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
||||||
-e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \
|
-e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \
|
||||||
-e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \
|
-e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \
|
||||||
@@ -60,22 +51,16 @@ sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
|||||||
-e "s|^DB_PORT=$|DB_PORT=3306|" \
|
-e "s|^DB_PORT=$|DB_PORT=3306|" \
|
||||||
-e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \
|
-e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \
|
||||||
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
|
-e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env
|
||||||
|
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer update --no-plugins --no-scripts
|
$STD composer update --no-plugins --no-scripts
|
||||||
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
||||||
|
|
||||||
$STD php artisan key:generate --force
|
$STD php artisan key:generate --force
|
||||||
|
|
||||||
$STD php artisan migrate:refresh
|
$STD php artisan migrate:refresh
|
||||||
$STD php artisan passport:install -q -n
|
$STD php artisan passport:install -q -n
|
||||||
$STD php artisan storage:link
|
$STD php artisan storage:link
|
||||||
$STD php artisan config:cache
|
$STD php artisan config:cache
|
||||||
|
|
||||||
chown -R www-data: /opt/2fauth
|
chown -R www-data: /opt/2fauth
|
||||||
chmod -R 755 /opt/2fauth
|
chmod -R 755 /opt/2fauth
|
||||||
|
|
||||||
echo "${RELEASE}" >"/opt/2fauth_version.txt"
|
|
||||||
msg_ok "Setup 2fauth"
|
msg_ok "Setup 2fauth"
|
||||||
|
|
||||||
msg_info "Configure Service"
|
msg_info "Configure Service"
|
||||||
@@ -107,7 +92,6 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
systemctl reload nginx
|
systemctl reload nginx
|
||||||
msg_ok "Configured Service"
|
msg_ok "Configured Service"
|
||||||
|
|
||||||
@@ -115,7 +99,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f "/opt/v${RELEASE}.zip"
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ $STD apk add nextcloud-mysql mariadb mariadb-client
|
|||||||
$STD mariadb-install-db --user=mysql --datadir=/var/lib/mysql
|
$STD mariadb-install-db --user=mysql --datadir=/var/lib/mysql
|
||||||
$STD service mariadb start
|
$STD service mariadb start
|
||||||
$STD rc-update add mariadb
|
$STD rc-update add mariadb
|
||||||
mariadb -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
|
$STD mariadb -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
|
||||||
$STD apk del mariadb-client
|
$STD apk del mariadb-client
|
||||||
msg_ok "Installed MySQL Database"
|
msg_ok "Installed MySQL Database"
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing dependencies"
|
msg_info "Installing dependencies"
|
||||||
$STD apk add --no-cache \
|
$STD apk add --no-cache \
|
||||||
apache2-utils
|
apache2-utils fuse3
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Installing rclone"
|
msg_info "Installing rclone"
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ EOF
|
|||||||
|
|
||||||
sed -i -e 's/\$/\$\$/g' /opt/tinyauth/.env
|
sed -i -e 's/\$/\$\$/g' /opt/tinyauth/.env
|
||||||
|
|
||||||
cat <<EOF >/etc/init.d/tinyauth
|
cat <<'EOF' >/etc/init.d/tinyauth
|
||||||
#!/sbin/openrc-run
|
#!/sbin/openrc-run
|
||||||
description="Tinyauth Service"
|
description="Tinyauth Service"
|
||||||
|
|
||||||
@@ -61,7 +61,15 @@ pidfile="/var/run/tinyauth.pid"
|
|||||||
|
|
||||||
start_pre() {
|
start_pre() {
|
||||||
if [ -f "/opt/tinyauth/.env" ]; then
|
if [ -f "/opt/tinyauth/.env" ]; then
|
||||||
export \$(grep -v '^#' /opt/tinyauth/.env | xargs)
|
while IFS= read -r line || [ -n "$line" ]; do
|
||||||
|
[ -z "$line" ] && continue
|
||||||
|
case "$line" in
|
||||||
|
'#'*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
export "$line"
|
||||||
|
done < "/opt/tinyauth/.env"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Alpine-Zigbee2MQTT"
|
msg_info "Installing Alpine-Zigbee2MQTT"
|
||||||
|
mkdir -p /root/.z2m /etc/zigbee2mqtt
|
||||||
$STD apk add zigbee2mqtt
|
$STD apk add zigbee2mqtt
|
||||||
mkdir -p /root/.z2m
|
|
||||||
ln -s /etc/zigbee2mqtt/ /root/.z2m
|
ln -s /etc/zigbee2mqtt/ /root/.z2m
|
||||||
chown -R root:root /etc/zigbee2mqtt /root/.z2m
|
chown -R root:root /etc/zigbee2mqtt /root/.z2m
|
||||||
sed -i -e 's/#datadir="\/var\/lib\/zigbee2mqtt"/datadir="\/etc\/zigbee2mqtt"/' -e 's/#command_user="zigbee2mqtt"/command_user="root"/' /etc/conf.d/zigbee2mqtt
|
sed -i -e 's/#datadir="\/var\/lib\/zigbee2mqtt"/datadir="\/etc\/zigbee2mqtt"/' -e 's/#command_user="zigbee2mqtt"/command_user="root"/' /etc/conf.d/zigbee2mqtt
|
||||||
|
|||||||
@@ -76,9 +76,9 @@ msg_info "Setup Database"
|
|||||||
DB_NAME=guacamole_db
|
DB_NAME=guacamole_db
|
||||||
DB_USER=guacamole_user
|
DB_USER=guacamole_user
|
||||||
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)
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "Guacamole-Credentials"
|
echo "Guacamole-Credentials"
|
||||||
echo "Database User: $DB_USER"
|
echo "Database User: $DB_USER"
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ msg_info "Setting up Database"
|
|||||||
DB_NAME=bookstack
|
DB_NAME=bookstack
|
||||||
DB_USER=bookstack
|
DB_USER=bookstack
|
||||||
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)
|
||||||
$STD sudo mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD sudo mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD sudo mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "Bookstack-Credentials"
|
echo "Bookstack-Credentials"
|
||||||
echo "Bookstack Database User: $DB_USER"
|
echo "Bookstack Database User: $DB_USER"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ install_mariadb
|
|||||||
|
|
||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
$STD sudo mariadb -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$ROOT_PASS'); flush privileges;"
|
$STD mariadb -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASS'; flush privileges;"
|
||||||
{
|
{
|
||||||
echo "Dolibarr DB Credentials"
|
echo "Dolibarr DB Credentials"
|
||||||
echo "MariaDB Root Password: $ROOT_PASS"
|
echo "MariaDB Root Password: $ROOT_PASS"
|
||||||
@@ -32,7 +32,7 @@ msg_ok "Set up database"
|
|||||||
|
|
||||||
msg_info "Setup Dolibarr"
|
msg_info "Setup Dolibarr"
|
||||||
BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/"
|
BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/"
|
||||||
RELEASE=$(curl -fsSL "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)[^/"]+' | head -n1)
|
RELEASE=$(curl -fsSL "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)\d+(\.\d+)+(?=/)' | sort -V | tail -n1)
|
||||||
FILE=$(curl -fsSL "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1)
|
FILE=$(curl -fsSL "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1)
|
||||||
curl -fsSL "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -o ""$FILE""
|
curl -fsSL "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -o ""$FILE""
|
||||||
echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections
|
echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections
|
||||||
|
|||||||
@@ -54,7 +54,12 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/etkecc/synapse-admin/releases/
|
|||||||
curl -fsSL "https://github.com/etkecc/synapse-admin/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
curl -fsSL "https://github.com/etkecc/synapse-admin/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
|
tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
|
||||||
cd /opt/synapse-admin
|
cd /opt/synapse-admin
|
||||||
|
$STD yarn global add serve
|
||||||
$STD yarn install --ignore-engines
|
$STD yarn install --ignore-engines
|
||||||
|
$STD yarn build
|
||||||
|
mv ./dist ../ && \
|
||||||
|
rm -rf * && \
|
||||||
|
mv ../dist ./
|
||||||
msg_ok "Installed Element Synapse"
|
msg_ok "Installed Element Synapse"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -67,7 +72,7 @@ Requires=matrix-synapse.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/synapse-admin
|
WorkingDirectory=/opt/synapse-admin
|
||||||
ExecStart=/usr/bin/yarn start --host
|
ExecStart=/usr/local/bin/serve -s dist -l 5173
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|||||||
@@ -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: quantumryuu
|
# Author: quantumryuu | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://firefly-iii.org/
|
# Source: https://firefly-iii.org/
|
||||||
|
|
||||||
@@ -30,10 +30,9 @@ msg_info "Setting up database"
|
|||||||
DB_NAME=firefly
|
DB_NAME=firefly
|
||||||
DB_USER=firefly
|
DB_USER=firefly
|
||||||
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_VERSION=$(mariadb --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
|
||||||
{
|
{
|
||||||
echo "Firefly-Credentials"
|
echo "Firefly-Credentials"
|
||||||
echo "Firefly Database User: $DB_USER"
|
echo "Firefly Database User: $DB_USER"
|
||||||
@@ -43,6 +42,7 @@ mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVI
|
|||||||
msg_ok "Set up database"
|
msg_ok "Set up database"
|
||||||
|
|
||||||
msg_info "Installing Firefly III (Patience)"
|
msg_info "Installing Firefly III (Patience)"
|
||||||
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||||
cd /opt
|
cd /opt
|
||||||
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o "FireflyIII-v${RELEASE}.tar.gz"
|
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o "FireflyIII-v${RELEASE}.tar.gz"
|
||||||
@@ -61,6 +61,14 @@ $STD php artisan firefly:upgrade-database
|
|||||||
$STD php artisan firefly:correct-database
|
$STD php artisan firefly:correct-database
|
||||||
$STD php artisan firefly:report-integrity
|
$STD php artisan firefly:report-integrity
|
||||||
$STD php artisan firefly:laravel-passport-keys
|
$STD php artisan firefly:laravel-passport-keys
|
||||||
|
IMPORTER_RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/data-importer/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
|
||||||
|
mkdir -p /opt/firefly/dataimporter
|
||||||
|
cd /opt
|
||||||
|
curl -fsSL "https://github.com/firefly-iii/data-importer/releases/download/v${IMPORTER_RELEASE}/DataImporter-v${IMPORTER_RELEASE}.tar.gz" -o "DataImporter-v${IMPORTER_RELEASE}.tar.gz"
|
||||||
|
tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
|
||||||
|
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
|
||||||
|
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
|
||||||
|
chown -R www-data:www-data /opt/firefly
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed Firefly III"
|
msg_ok "Installed Firefly III"
|
||||||
|
|
||||||
@@ -76,6 +84,17 @@ cat <<EOF >/etc/apache2/sites-available/firefly.conf
|
|||||||
Require all granted
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
Alias /dataimporter/ /opt/firefly/dataimporter/public/
|
||||||
|
|
||||||
|
<Directory /opt/firefly/dataimporter/public/>
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
<FilesMatch \.php$>
|
||||||
|
SetHandler application/x-httpd-php
|
||||||
|
</FilesMatch>
|
||||||
|
|
||||||
ErrorLog /var/log/apache2/error.log
|
ErrorLog /var/log/apache2/error.log
|
||||||
CustomLog /var/log/apache2/access.log combined
|
CustomLog /var/log/apache2/access.log combined
|
||||||
|
|
||||||
@@ -93,7 +112,8 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
|
rm -rf "/opt/FireflyIII-v${RELEASE}.tar.gz"
|
||||||
|
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.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"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
NODE_VERSION="22" install_node_and_modules
|
NODE_VERSION="20" install_node_and_modules
|
||||||
|
|
||||||
msg_info "Installing FlowiseAI (Patience)"
|
msg_info "Installing FlowiseAI (Patience)"
|
||||||
$STD npm install -g flowise \
|
$STD npm install -g flowise \
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ msg_info "Configuring Database"
|
|||||||
DB_NAME=ghost
|
DB_NAME=ghost
|
||||||
DB_USER=ghostuser
|
DB_USER=ghostuser
|
||||||
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)
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
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';"
|
||||||
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "Ghost-Credentials"
|
echo "Ghost-Credentials"
|
||||||
|
|||||||
70
install/gitea-mirror-install.sh
Normal file
70
install/gitea-mirror-install.sh
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: CrazyWolf13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/arunavo4/gitea-mirror
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
openssl \
|
||||||
|
sqlite3 \
|
||||||
|
unzip
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Bun"
|
||||||
|
export BUN_INSTALL=/opt/bun
|
||||||
|
curl -fsSL https://bun.sh/install | $STD bash
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bun
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
||||||
|
msg_ok "Installed Bun"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "arunavo4/gitea-mirror"
|
||||||
|
|
||||||
|
msg_info "Installing gitea-mirror"
|
||||||
|
cd /opt/gitea-mirror
|
||||||
|
$STD bun run setup
|
||||||
|
$STD bun run build
|
||||||
|
msg_ok "Installed gitea-mirror"
|
||||||
|
|
||||||
|
msg_info "Creating Services"
|
||||||
|
JWT_SECRET=$(openssl rand -hex 32)
|
||||||
|
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
|
||||||
|
cat <<EOF >/etc/systemd/system/gitea-mirror.service
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea Mirror
|
||||||
|
After=network.target
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/gitea-mirror
|
||||||
|
ExecStart=/usr/local/bin/bun dist/server/entry.mjs
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=10
|
||||||
|
Environment=NODE_ENV=production
|
||||||
|
Environment=HOST=0.0.0.0
|
||||||
|
Environment=PORT=4321
|
||||||
|
Environment=DATABASE_URL=file:/opt/gitea-mirror/data/gitea-mirror.db
|
||||||
|
Environment=JWT_SECRET=${JWT_SECRET}
|
||||||
|
Environment=npm_package_version=${APP_VERSION}
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now gitea-mirror
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -29,10 +29,10 @@ 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
|
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
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';"
|
||||||
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';"
|
||||||
mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT SELECT ON \`mysql\`.\`time_zone_name\` TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "GLPI Database Credentials"
|
echo "GLPI Database Credentials"
|
||||||
echo "Database: $DB_NAME"
|
echo "Database: $DB_NAME"
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ msg_ok "Dependencies Installed"
|
|||||||
NODE_VERSION="22" install_node_and_modules
|
NODE_VERSION="22" install_node_and_modules
|
||||||
PG_VERSION="16" install_postgresql
|
PG_VERSION="16" install_postgresql
|
||||||
|
|
||||||
read -r -p "Install OpenVINO dependencies for Intel HW-accelerated machine-learning? " prompt
|
read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing OpenVINO dependencies"
|
msg_info "Installing OpenVINO dependencies"
|
||||||
touch ~/.openvino
|
touch ~/.openvino
|
||||||
|
|||||||
@@ -91,10 +91,26 @@ BROWSER_WEB_URL="http://127.0.0.1:9222"
|
|||||||
|
|
||||||
# If you're planning to use ollama for tagging, uncomment the following lines:
|
# If you're planning to use ollama for tagging, uncomment the following lines:
|
||||||
# OLLAMA_BASE_URL="<OLLAMA_ADDR>"
|
# OLLAMA_BASE_URL="<OLLAMA_ADDR>"
|
||||||
|
# OLLAMA_KEEP_ALIVE="5m"
|
||||||
|
|
||||||
# You can change the models used by uncommenting the following lines, and changing them according to your needs:
|
# You can change the models used by uncommenting the following lines, and changing them according to your needs:
|
||||||
# INFERENCE_TEXT_MODEL="gpt-4o-mini"
|
# INFERENCE_TEXT_MODEL="gpt-4o-mini"
|
||||||
# INFERENCE_IMAGE_MODEL="gpt-4o-mini"
|
# INFERENCE_IMAGE_MODEL="gpt-4o-mini"
|
||||||
|
|
||||||
|
# Additional inference defaults
|
||||||
|
# INFERENCE_CONTEXT_LENGTH="2048"
|
||||||
|
# INFERENCE_ENABLE_AUTO_TAGGING=true
|
||||||
|
# INFERENCE_ENABLE_AUTO_SUMMARIZATION=false
|
||||||
|
|
||||||
|
# Crawler defaults
|
||||||
|
# CRAWLER_NUM_WORKERS="1"
|
||||||
|
# CRAWLER_DOWNLOAD_BANNER_IMAGE=true
|
||||||
|
# CRAWLER_STORE_SCREENSHOT=true
|
||||||
|
# CRAWLER_FULL_PAGE_SCREENSHOT=false
|
||||||
|
# CRAWLER_FULL_PAGE_ARCHIVE=false
|
||||||
|
# CRAWLER_VIDEO_DOWNLOAD=false
|
||||||
|
# CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE="50"
|
||||||
|
# CRAWLER_ENABLE_ADBLOCKER=true
|
||||||
EOF
|
EOF
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed karakeep"
|
msg_ok "Installed karakeep"
|
||||||
|
|||||||
@@ -16,18 +16,25 @@ update_os
|
|||||||
msg_info "Installing Kasm Workspaces"
|
msg_info "Installing Kasm Workspaces"
|
||||||
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
|
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
|
||||||
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
|
|
||||||
cd /opt
|
cd /opt
|
||||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
chmod +x /opt/kasm_release/install.sh
|
chmod +x /opt/kasm_release/install.sh
|
||||||
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh | tee ~/kasm-install.output
|
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1
|
||||||
sed -n '/Kasm UI Login Credentials/,$p' ~/kasm-install.output >~/kasm.creds
|
cat ~/kasm-install.output | grep -A 20 -i "credentials\|login\|password\|admin" | sed '1i Kasm-Workspaces-Credentials' >~/kasm.creds
|
||||||
|
|
||||||
msg_ok "Installed Kasm Workspaces"
|
msg_ok "Installed Kasm Workspaces"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
|
msg_info "Displaying Kasm Credentials"
|
||||||
|
cat ~/kasm.creds
|
||||||
|
msg_ok "Kasm Credentials displayed"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
$STD rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
rm -f /opt/kasm_release_${KASM_VERSION}.tar.gz
|
||||||
|
rm -f ~/kasm-install.output
|
||||||
$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"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ $STD apt-get install -y \
|
|||||||
lsb-release
|
lsb-release
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
install_mariadb
|
install_mysql
|
||||||
|
|
||||||
msg_info "Adding PHP8.4 Repository"
|
msg_info "Adding PHP8.4 Repository"
|
||||||
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
|
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
|
||||||
@@ -44,10 +44,10 @@ msg_info "Setting up database"
|
|||||||
DB_NAME=kimai_db
|
DB_NAME=kimai_db
|
||||||
DB_USER=kimai
|
DB_USER=kimai
|
||||||
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_VERSION=$(mysql --version | grep -oP 'Distrib \K[0-9]+\.[0-9]+\.[0-9]+')
|
MYSQL_VERSION=$(mysql --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "Kimai-Credentials"
|
echo "Kimai-Credentials"
|
||||||
echo "Kimai Database User: $DB_USER"
|
echo "Kimai Database User: $DB_USER"
|
||||||
|
|||||||
81
install/libretranslate-install.sh
Normal file
81
install/libretranslate-install.sh
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/LibreTranslate/LibreTranslate
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y --no-install-recommends \
|
||||||
|
pkg-config \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
libicu-dev
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
|
msg_info "Setup Python3"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
python3-pip \
|
||||||
|
python3-dev \
|
||||||
|
python3-icu
|
||||||
|
msg_ok "Setup Python3"
|
||||||
|
|
||||||
|
setup_uv
|
||||||
|
fetch_and_deploy_gh_release "LibreTranslate/LibreTranslate"
|
||||||
|
|
||||||
|
msg_info "Setup LibreTranslate (Patience)"
|
||||||
|
cd /opt/libretranslate
|
||||||
|
$STD uv venv .venv
|
||||||
|
$STD source .venv/bin/activate
|
||||||
|
$STD uv pip install --upgrade pip setuptools
|
||||||
|
$STD uv pip install Babel==2.12.1
|
||||||
|
$STD .venv/bin/python scripts/compile_locales.py
|
||||||
|
$STD uv pip install torch==2.2.0 --extra-index-url https://download.pytorch.org/whl/cpu
|
||||||
|
$STD uv pip install "numpy<2"
|
||||||
|
$STD uv pip install .
|
||||||
|
$STD uv pip install libretranslate
|
||||||
|
$STD .venv/bin/python scripts/install_models.py
|
||||||
|
|
||||||
|
cat <<EOF >/opt/libretranslate/.env
|
||||||
|
LT_PORT=5000
|
||||||
|
EOF
|
||||||
|
msg_ok "Installed LibreTranslate"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/libretranslate.service
|
||||||
|
[Unit]
|
||||||
|
Description=LibreTranslate
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
Type=idle
|
||||||
|
Restart=always
|
||||||
|
Environment="PATH=/usr/local/lib/python3.11/dist-packages/libretranslate"
|
||||||
|
EnvironmentFile=/opt/libretranslate/.env
|
||||||
|
ExecStart=/opt/libretranslate/.venv/bin/python3 /opt/libretranslate/.venv/bin/libretranslate --host * --update-models
|
||||||
|
ExecReload=/bin/kill -s HUP
|
||||||
|
KillMode=mixed
|
||||||
|
TimeoutStopSec=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now libretranslate
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
32
install/lyrionmusicserver-install.sh
Normal file
32
install/lyrionmusicserver-install.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Omar Minaya
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://lyrion.org/getting-started/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Setup Lyrion Music Server"
|
||||||
|
DEB_URL=$(curl -fsSL 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
|
||||||
|
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
|
||||||
|
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
|
||||||
|
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
|
||||||
|
$STD apt install "$DEB_FILE" -y
|
||||||
|
echo "${RELEASE}" >"/opt/lyrion_version.txt"
|
||||||
|
msg_ok "Setup Lyrion Music Server v${RELEASE}"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD rm -f "$DEB_FILE"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
84
install/managemydamnlife-install.sh
Normal file
84
install/managemydamnlife-install.sh
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: vhsdream
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/intri-in/manage-my-damn-life-nextjs
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
NODE_VERSION="20" install_node_and_modules
|
||||||
|
MYSQL_VERSION="8.0" install_mysql
|
||||||
|
|
||||||
|
msg_info "Setting up Database"
|
||||||
|
DB_NAME="mmdl"
|
||||||
|
DB_USER="mmdl"
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
|
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED by '$DB_PASS';"
|
||||||
|
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
{
|
||||||
|
echo "Manage My Damn Life Credentials"
|
||||||
|
echo "Database User: $DB_USER"
|
||||||
|
echo "Database Password: $DB_PASS"
|
||||||
|
echo "Database Name: $DB_NAME"
|
||||||
|
} >>~/mmdl.creds
|
||||||
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
|
msg_info "Installing ${APPLICATION}"
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v"$RELEASE".zip
|
||||||
|
mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
|
||||||
|
cp /opt/mmdl/sample.env.local /opt/mmdl/.env
|
||||||
|
|
||||||
|
sed -i -e 's|db|localhost|' \
|
||||||
|
-e "s|myuser|${DB_USER}|" \
|
||||||
|
-e "s|mypassword|${DB_PASS}|" \
|
||||||
|
-e 's|5433|3306|' \
|
||||||
|
-e 's|DB_DIALECT=postgres|DB_DIALECT=mysql|' \
|
||||||
|
-e "s|sample_install_mmdm|${DB_NAME}|" \
|
||||||
|
-e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
|
||||||
|
/opt/mmdl/.env
|
||||||
|
|
||||||
|
cd /opt/mmdl
|
||||||
|
export NEXT_TELEMETRY_DISABLE=1
|
||||||
|
export CI="true"
|
||||||
|
$STD npm install
|
||||||
|
$STD npm run migrate
|
||||||
|
$STD npm run build
|
||||||
|
echo "${RELEASE}" >/opt/mmdl_version.txt
|
||||||
|
msg_ok "Installed ${APPLICATION}"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/mmdl.service
|
||||||
|
[Unit]
|
||||||
|
Description=${APPLICATION} Service
|
||||||
|
After=network.target mysql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
WorkingDirectory=/opt/mmdl
|
||||||
|
EnvironmentFile=/opt/mmdl/.env
|
||||||
|
ExecStart=/usr/bin/npm run start
|
||||||
|
Restart=on-abnormal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now mmdl
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -f ~/v${RELEASE}.zip
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -33,9 +33,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
php-json \
|
php-json \
|
||||||
php-curl
|
php-curl
|
||||||
|
|
||||||
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" -o "phpMyAdmin-5.2.1-all-languages.tar.gz"
|
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz" -o "phpMyAdmin-5.2.2-all-languages.tar.gz"
|
||||||
mkdir -p /var/www/html/phpMyAdmin
|
mkdir -p /var/www/html/phpMyAdmin
|
||||||
tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
|
tar xf phpMyAdmin-5.2.2-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
|
||||||
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
|
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
|
||||||
SECRET=$(openssl rand -base64 24)
|
SECRET=$(openssl rand -base64 24)
|
||||||
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
|
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
|
||||||
|
|||||||
36
install/minarca-install.sh
Normal file
36
install/minarca-install.sh
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://minarca.org/en_CA
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates \
|
||||||
|
lsb-release
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Minarca"
|
||||||
|
curl -fsSL https://www.ikus-soft.com/archive/minarca/public.key | gpg --dearmor >/usr/share/keyrings/minarca-keyring.gpg
|
||||||
|
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/minarca-keyring.gpg] https://nexus.ikus-soft.com/repository/apt-release-$(lsb_release -sc)/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/minarca.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y minarca-server
|
||||||
|
msg_ok "Installed Minarca"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -29,7 +29,7 @@ DB_NAME=monica
|
|||||||
DB_USER=monica
|
DB_USER=monica
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "monica-Credentials"
|
echo "monica-Credentials"
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
php-json \
|
php-json \
|
||||||
php-curl
|
php-curl
|
||||||
|
|
||||||
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz" -o "phpMyAdmin-5.2.1-all-languages.tar.gz"
|
curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz" -o "phpMyAdmin-5.2.2-all-languages.tar.gz"
|
||||||
mkdir -p /var/www/html/phpMyAdmin
|
mkdir -p /var/www/html/phpMyAdmin
|
||||||
tar xf phpMyAdmin-5.2.1-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
|
tar xf phpMyAdmin-5.2.2-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
|
||||||
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
|
cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
|
||||||
SECRET=$(openssl rand -base64 24)
|
SECRET=$(openssl rand -base64 24)
|
||||||
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
|
sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
|
||||||
|
|||||||
@@ -58,9 +58,9 @@ DB_NAME=paymenter
|
|||||||
DB_USER=paymenter
|
DB_USER=paymenter
|
||||||
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
|
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
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';"
|
||||||
mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
|
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
|
||||||
{
|
{
|
||||||
echo "Paymenter Database Credentials"
|
echo "Paymenter Database Credentials"
|
||||||
echo "Database: $DB_NAME"
|
echo "Database: $DB_NAME"
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ DB_NAME=panel
|
|||||||
DB_USER=pelican
|
DB_USER=pelican
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "Pelican Panel-Credentials"
|
echo "Pelican Panel-Credentials"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ DB_NAME=phpipam
|
|||||||
DB_USER=phpipam
|
DB_USER=phpipam
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "phpIPAM-Credentials"
|
echo "phpIPAM-Credentials"
|
||||||
@@ -43,7 +43,7 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/phpipam/phpipam/releases/lates
|
|||||||
cd /opt
|
cd /opt
|
||||||
curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o "phpipam-v${RELEASE}.zip"
|
curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o "phpipam-v${RELEASE}.zip"
|
||||||
$STD unzip "phpipam-v${RELEASE}.zip"
|
$STD unzip "phpipam-v${RELEASE}.zip"
|
||||||
mariadb -u root "${DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
$STD mariadb -u root "${DB_NAME}" </opt/phpipam/db/SCHEMA.sql
|
||||||
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
||||||
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
||||||
-e "s/\(\$db\['user'\] = \).*/\1'$DB_USER';/" \
|
-e "s/\(\$db\['user'\] = \).*/\1'$DB_USER';/" \
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ DB_NAME=plantit
|
|||||||
DB_USER=plantit_usr
|
DB_USER=plantit_usr
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "Plant-it Credentials"
|
echo "Plant-it Credentials"
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ DB_NAME=projectsend
|
|||||||
DB_USER=projectsend
|
DB_USER=projectsend
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "projectsend-Credentials"
|
echo "projectsend-Credentials"
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ DB_NAME=panel
|
|||||||
DB_USER=pterodactyl
|
DB_USER=pterodactyl
|
||||||
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)
|
||||||
$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 WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "pterodactyl Panel-Credentials"
|
echo "pterodactyl Panel-Credentials"
|
||||||
|
|||||||
@@ -16,8 +16,9 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
diffutils
|
diffutils \
|
||||||
msg_ok "Installed Core Dependencies"
|
policykit-1
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Creating dedicated user pulse..."
|
msg_info "Creating dedicated user pulse..."
|
||||||
if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then
|
if useradd -r -m -d /opt/pulse-home -s /bin/bash pulse; then
|
||||||
@@ -32,36 +33,23 @@ NODE_VERSION="20" install_node_and_modules
|
|||||||
msg_info "Setup Pulse"
|
msg_info "Setup Pulse"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
mkdir -p /opt/pulse-proxmox
|
mkdir -p /opt/pulse
|
||||||
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
|
curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse-proxmox
|
tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
|
||||||
|
touch /opt/pulse/.env
|
||||||
|
chown pulse:pulse /opt/pulse/.env
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed Pulse"
|
msg_ok "Installed Pulse"
|
||||||
|
|
||||||
read -rp "${TAB3}Proxmox Host (z. B. https://proxmox.example.com:8006): " PROXMOX_HOST
|
|
||||||
read -rp "${TAB3}Proxmox Token ID (z. B. user@pam!mytoken): " PROXMOX_TOKEN_ID
|
|
||||||
read -rp "${TAB3}Proxmox Token Secret: " PROXMOX_TOKEN_SECRET
|
|
||||||
read -rp "${TAB3}Port (default: 7655): " PORT
|
|
||||||
PORT="${PORT:-7655}"
|
|
||||||
|
|
||||||
msg_info "Creating .env file"
|
msg_info "Setting permissions for /opt/pulse..."
|
||||||
cat <<EOF >/opt/pulse-proxmox/.env
|
chown -R pulse:pulse "/opt/pulse"
|
||||||
PROXMOX_HOST=${PROXMOX_HOST}
|
find "/opt/pulse" -type d -exec chmod 755 {} \;
|
||||||
PROXMOX_TOKEN_ID=${PROXMOX_TOKEN_ID}
|
find "/opt/pulse" -type f -exec chmod 644 {} \;
|
||||||
PROXMOX_TOKEN_SECRET=${PROXMOX_TOKEN_SECRET}
|
|
||||||
PORT=${PORT}
|
|
||||||
EOF
|
|
||||||
msg_ok "Created .env file"
|
|
||||||
|
|
||||||
msg_info "Setting permissions for /opt/pulse-proxmox..."
|
|
||||||
chown -R pulse:pulse "/opt/pulse-proxmox"
|
|
||||||
find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
|
|
||||||
find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
|
|
||||||
chmod 600 /opt/pulse-proxmox/.env
|
|
||||||
msg_ok "Set permissions."
|
msg_ok "Set permissions."
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/pulse-monitor.service
|
cat <<EOF >/etc/systemd/system/pulse.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Pulse Monitoring Application
|
Description=Pulse Monitoring Application
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -70,8 +58,8 @@ After=network.target
|
|||||||
Type=simple
|
Type=simple
|
||||||
User=pulse
|
User=pulse
|
||||||
Group=pulse
|
Group=pulse
|
||||||
WorkingDirectory=/opt/pulse-proxmox
|
WorkingDirectory=/opt/pulse
|
||||||
EnvironmentFile=/opt/pulse-proxmox/.env
|
EnvironmentFile=/opt/pulse/.env
|
||||||
ExecStart=/usr/bin/npm run start
|
ExecStart=/usr/bin/npm run start
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
@@ -81,7 +69,7 @@ StandardError=journal
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now pulse-monitor
|
systemctl enable -q --now pulse
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y apache2-utils
|
$STD apt-get install -y apache2-utils fuse3
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing rclone"
|
msg_info "Installing rclone"
|
||||||
|
|||||||
@@ -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: tremor021
|
# Author: Slaviša Arežina (tremor021)
|
||||||
# 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/YuukanOO/seelf
|
# Source: https://github.com/YuukanOO/seelf
|
||||||
|
|
||||||
@@ -21,21 +21,17 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
install_go
|
install_go
|
||||||
NODE_VERSION="22" install_node_and_modules
|
NODE_VERSION="22" install_node_and_modules
|
||||||
|
fetch_and_deploy_gh_release "YuukanOO/seelf"
|
||||||
|
|
||||||
msg_info "Setting up seelf. Patience"
|
msg_info "Setting up seelf. Patience"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
|
|
||||||
tar -xzf v"${RELEASE}".tar.gz
|
|
||||||
mv seelf-"${RELEASE}"/ /opt/seelf
|
|
||||||
cd /opt/seelf
|
cd /opt/seelf
|
||||||
$STD make build
|
$STD make build
|
||||||
PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
mkdir -p /opt/seelf/data
|
||||||
{
|
{
|
||||||
echo "ADMIN_EMAIL=admin@example.com"
|
echo "ADMIN_EMAIL=admin@example.com"
|
||||||
echo "ADMIN_PASSWORD=$PASS"
|
echo "ADMIN_PASSWORD=$PASS"
|
||||||
} | tee .env ~/seelf.creds >/dev/null
|
} | tee .env ~/seelf.creds >/dev/null
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/seelf_version.txt
|
|
||||||
SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &>/dev/null &
|
SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &>/dev/null &
|
||||||
sleep 5
|
sleep 5
|
||||||
kill $!
|
kill $!
|
||||||
@@ -51,8 +47,10 @@ After=network.target
|
|||||||
Type=simple
|
Type=simple
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
|
EnvironmentFile=/opt/seelf/.env
|
||||||
|
Environment=DATA_PATH=/opt/seelf/data
|
||||||
WorkingDirectory=/opt/seelf
|
WorkingDirectory=/opt/seelf
|
||||||
ExecStart=/opt/seelf/./seelf serve
|
ExecStart=/opt/seelf/./seelf -c data/conf.yml serve
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@@ -64,13 +62,7 @@ msg_ok "Created Service"
|
|||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f ~/v"${RELEASE}".tar.gz
|
|
||||||
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"
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ sqlpass="root"
|
|||||||
echo "mariadb-server mariadb-server/root_password password $sqlpass" | debconf-set-selections
|
echo "mariadb-server mariadb-server/root_password password $sqlpass" | debconf-set-selections
|
||||||
echo "mariadb-server mariadb-server/root_password_again password $sqlpass" | debconf-set-selections
|
echo "mariadb-server mariadb-server/root_password_again password $sqlpass" | debconf-set-selections
|
||||||
service mysql start
|
service mysql start
|
||||||
mariadb -u "$sqluser" -p"$sqlpass" -e "source sql/user.sql" || true
|
$STD mariadb -u "$sqluser" -p"$sqlpass" -e "source sql/user.sql" || true
|
||||||
msg_ok "Installed Database"
|
msg_ok "Installed Database"
|
||||||
|
|
||||||
msg_info "Installing Shinobi"
|
msg_info "Installing Shinobi"
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ msg_info "Setting up database"
|
|||||||
DB_NAME=snipeit_db
|
DB_NAME=snipeit_db
|
||||||
DB_USER=snipeit
|
DB_USER=snipeit
|
||||||
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)
|
||||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "SnipeIT-Credentials"
|
echo "SnipeIT-Credentials"
|
||||||
echo "SnipeIT Database User: $DB_USER"
|
echo "SnipeIT Database User: $DB_USER"
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ $STD apt-get install -y \
|
|||||||
build-essential \
|
build-essential \
|
||||||
git \
|
git \
|
||||||
make \
|
make \
|
||||||
ca-certificates
|
ca-certificates \
|
||||||
|
jq
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" install_node_and_modules
|
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" install_node_and_modules
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user