mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
102 Commits
2024-11-23
...
2024-12-04
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c3fe0e802 | ||
|
|
3ec3478b2d | ||
|
|
67524454d7 | ||
|
|
ec27e92833 | ||
|
|
fa20526525 | ||
|
|
4f5712097b | ||
|
|
3c388ef157 | ||
|
|
df99c30ab3 | ||
|
|
6d307f07a9 | ||
|
|
0d472640ff | ||
|
|
54dd0ba420 | ||
|
|
47ecc7a006 | ||
|
|
4bb5741707 | ||
|
|
d6ff28abf5 | ||
|
|
c188b54398 | ||
|
|
b8e2de30a5 | ||
|
|
f710b541e4 | ||
|
|
9c722be967 | ||
|
|
b9f889c6c3 | ||
|
|
baa29fb096 | ||
|
|
e74f6f8efe | ||
|
|
9c8223d64e | ||
|
|
336ea19b39 | ||
|
|
1ca99781ff | ||
|
|
342e145273 | ||
|
|
85b80393bd | ||
|
|
53807c9633 | ||
|
|
8301204cc0 | ||
|
|
70952b3db3 | ||
|
|
e9506e3c0c | ||
|
|
869ddc0d5e | ||
|
|
11d1f0f981 | ||
|
|
c75148ec51 | ||
|
|
8c7b72e71b | ||
|
|
3f1cde865e | ||
|
|
ddc867ea4e | ||
|
|
78948b08cf | ||
|
|
f0936500d3 | ||
|
|
fe4b8fed8a | ||
|
|
ec273ba221 | ||
|
|
d5d5a3d3a3 | ||
|
|
617b42dd8e | ||
|
|
274867dc11 | ||
|
|
17e5d69052 | ||
|
|
c9148547ef | ||
|
|
942ad74b73 | ||
|
|
6fb5512878 | ||
|
|
b191579f11 | ||
|
|
bc10a3fa17 | ||
|
|
dc49ad1133 | ||
|
|
b15a59315e | ||
|
|
b9fe3855b0 | ||
|
|
74b4b5150c | ||
|
|
689122b14a | ||
|
|
2fbd5f5068 | ||
|
|
40c70192af | ||
|
|
5f3985cd0a | ||
|
|
8901aa4d7f | ||
|
|
862b72ab39 | ||
|
|
b328eedc75 | ||
|
|
543142ebf1 | ||
|
|
e30c413ea5 | ||
|
|
d7102d1233 | ||
|
|
f7087e57f9 | ||
|
|
b17ede296c | ||
|
|
ae49d1d8d7 | ||
|
|
03be08be63 | ||
|
|
000f206d90 | ||
|
|
e9ebfffb57 | ||
|
|
11147e4482 | ||
|
|
e786b09199 | ||
|
|
0afeac4266 | ||
|
|
1558b0d875 | ||
|
|
1cb822b34c | ||
|
|
24cfb32c3d | ||
|
|
2599bff463 | ||
|
|
e40de17874 | ||
|
|
e8719df21b | ||
|
|
257bccad6c | ||
|
|
4e66916ebc | ||
|
|
1be91e9fad | ||
|
|
c098031a5a | ||
|
|
928a5cb9e5 | ||
|
|
9d72b5872a | ||
|
|
60b9103a34 | ||
|
|
a2ae582992 | ||
|
|
853c727167 | ||
|
|
9795d41d39 | ||
|
|
a4dd7f5449 | ||
|
|
a61c42ea4d | ||
|
|
99b130d186 | ||
|
|
df1c1ea873 | ||
|
|
f6047ee9fb | ||
|
|
ca819064f7 | ||
|
|
e5d39ab555 | ||
|
|
2e3d5f8b0c | ||
|
|
0864afbbf3 | ||
|
|
0cb071ce11 | ||
|
|
8e7a9f363a | ||
|
|
3c045b967c | ||
|
|
a0516b43a0 | ||
|
|
7ffd6cbef0 |
2
.github/workflows/github-release.yml
vendored
2
.github/workflows/github-release.yml
vendored
@@ -21,5 +21,5 @@ jobs:
|
|||||||
YESTERDAY_CHANGELOG_NOTES=$(awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md)
|
YESTERDAY_CHANGELOG_NOTES=$(awk '/^## '"$YESTERDAY"'/ {f=1; next} f && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {f=0} f && !/^## / {print}' CHANGELOG.md)
|
||||||
|
|
||||||
if [ -n "$YESTERDAY_CHANGELOG_NOTES" ]; then
|
if [ -n "$YESTERDAY_CHANGELOG_NOTES" ]; then
|
||||||
gh release create "$YESTERDAY" -n "$YESTERDAY_CHANGELOG_NOTES" --latest
|
gh release create "$YESTERDAY" -t "$YESTERDAY" -n "$YESTERDAY_CHANGELOG_NOTES" --latest
|
||||||
fi
|
fi
|
||||||
|
|||||||
148
CHANGELOG.md
148
CHANGELOG.md
@@ -16,6 +16,154 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
## 2024-12-04
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Update Spelling 'Environment' in nginxproxymanager [@MathijsG](https://github.com/MathijsG) ([#676](https://github.com/community-scripts/ProxmoxVE/pull/676))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Update homepage.json documentation and website links [@patchmonkey](https://github.com/patchmonkey) ([#668](https://github.com/community-scripts/ProxmoxVE/pull/668))
|
||||||
|
|
||||||
|
## 2024-12-03
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: Onedev [@quantumryuu](https://github.com/quantumryuu) ([#612](https://github.com/community-scripts/ProxmoxVE/pull/612))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Script Update: SnipeIT [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#641](https://github.com/community-scripts/ProxmoxVE/pull/641))
|
||||||
|
|
||||||
|
## 2024-12-02
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: Hoarder LXC [@vhsdream](https://github.com/vhsdream) ([#567](https://github.com/community-scripts/ProxmoxVE/pull/567))
|
||||||
|
- New script: SnipeIT LXC [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#538](https://github.com/community-scripts/ProxmoxVE/pull/538))
|
||||||
|
- New Script: Glance [@quantumryuu](https://github.com/quantumryuu) ([#595](https://github.com/community-scripts/ProxmoxVE/pull/595))
|
||||||
|
- New script: Unbound LXC [@wimb0](https://github.com/wimb0) ([#547](https://github.com/community-scripts/ProxmoxVE/pull/547))
|
||||||
|
- New script: Mylar3 LXC [@davalanche](https://github.com/davalanche) ([#554](https://github.com/community-scripts/ProxmoxVE/pull/554))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Stirling-PDF: replace dependency for v0.35.0 and add check and fix in stirling-pdf.sh [@vhsdream](https://github.com/vhsdream) ([#614](https://github.com/community-scripts/ProxmoxVE/pull/614))
|
||||||
|
- qbittorrent: do not override the configuration port in systemd [@zdraganov](https://github.com/zdraganov) ([#618](https://github.com/community-scripts/ProxmoxVE/pull/618))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- chore: Update unbound logo to have only the actual logo [@BramSuurdje](https://github.com/BramSuurdje) ([#648](https://github.com/community-scripts/ProxmoxVE/pull/648))
|
||||||
|
- fix: vaultwarden info mismatch [@BramSuurdje](https://github.com/BramSuurdje) ([#645](https://github.com/community-scripts/ProxmoxVE/pull/645))
|
||||||
|
- Wallos json fix [@quantumryuu](https://github.com/quantumryuu) ([#630](https://github.com/community-scripts/ProxmoxVE/pull/630))
|
||||||
|
|
||||||
|
## 2024-11-30
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Convert line endings in the-lounge.sh [@jamezpolley](https://github.com/jamezpolley) ([#599](https://github.com/community-scripts/ProxmoxVE/pull/599))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- add some Information for Monitor-All Script [@MickLesk](https://github.com/MickLesk) ([#605](https://github.com/community-scripts/ProxmoxVE/pull/605))
|
||||||
|
|
||||||
|
## 2024-11-29
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: The Lounge IRC [@quantumryuu](https://github.com/quantumryuu) ([#571](https://github.com/community-scripts/ProxmoxVE/pull/571))
|
||||||
|
- New Script: LubeLogger [@quantumryuu](https://github.com/quantumryuu) ([#574](https://github.com/community-scripts/ProxmoxVE/pull/574))
|
||||||
|
- New Script: Inspircd [@quantumryuu](https://github.com/quantumryuu) ([#576](https://github.com/community-scripts/ProxmoxVE/pull/576))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix msg_error on zwave-js-ui [@MickLesk](https://github.com/MickLesk) ([#585](https://github.com/community-scripts/ProxmoxVE/pull/585))
|
||||||
|
- Fix Kimai Apache2 Rights [@MickLesk](https://github.com/MickLesk) ([#577](https://github.com/community-scripts/ProxmoxVE/pull/577))
|
||||||
|
|
||||||
|
## 2024-11-28
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Add vitest, add json validation tests, fix broken json files [@havardthom](https://github.com/havardthom) ([#566](https://github.com/community-scripts/ProxmoxVE/pull/566))
|
||||||
|
- Add update script to Pocketbase [@dsiebel](https://github.com/dsiebel) ([#535](https://github.com/community-scripts/ProxmoxVE/pull/535))
|
||||||
|
- Fix MongoDB install in Unifi script [@havardthom](https://github.com/havardthom) ([#564](https://github.com/community-scripts/ProxmoxVE/pull/564))
|
||||||
|
- Remove changing DISK_REF for zfspool mikrotik-routeros.sh [@tjcomserv](https://github.com/tjcomserv) ([#529](https://github.com/community-scripts/ProxmoxVE/pull/529))
|
||||||
|
- Fix Z-Wave JS UI script [@MickLesk](https://github.com/MickLesk) ([#546](https://github.com/community-scripts/ProxmoxVE/pull/546))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Show Changelog on Mobile Devices [@MickLesk](https://github.com/MickLesk) ([#558](https://github.com/community-scripts/ProxmoxVE/pull/558))
|
||||||
|
|
||||||
|
## 2024-11-27
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Zabbix: Use Agent2 as Default | Update Script added | some other Improvements [@MickLesk](https://github.com/MickLesk) ([#527](https://github.com/community-scripts/ProxmoxVE/pull/527))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix: install mosquitto from mosquitto repo [@dsiebel](https://github.com/dsiebel) ([#534](https://github.com/community-scripts/ProxmoxVE/pull/534))
|
||||||
|
- Patch Netbird Script | Container Boot-Check | Debian/Ubuntu Only [@MickLesk](https://github.com/MickLesk) ([#528](https://github.com/community-scripts/ProxmoxVE/pull/528))
|
||||||
|
- Install MongoDB 4.2 for non-AVX CPUs in Unifi LXC [@ColinOppenheim](https://github.com/ColinOppenheim) ([#319](https://github.com/community-scripts/ProxmoxVE/pull/319))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Fix json error in zabbix.json [@havardthom](https://github.com/havardthom) ([#543](https://github.com/community-scripts/ProxmoxVE/pull/543))
|
||||||
|
- Fix another json error in add-netbird-lxc.json [@havardthom](https://github.com/havardthom) ([#545](https://github.com/community-scripts/ProxmoxVE/pull/545))
|
||||||
|
|
||||||
|
## 2024-11-26
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix Vikunja install script to prevent database deletion upon updating [@vhsdream](https://github.com/vhsdream) ([#524](https://github.com/community-scripts/ProxmoxVE/pull/524))
|
||||||
|
|
||||||
|
## 2024-11-25
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Remove Scrypted script [@MickLesk](https://github.com/MickLesk) ([#511](https://github.com/community-scripts/ProxmoxVE/pull/511))
|
||||||
|
- Because of request from Scrypted maintainer: [#494](https://github.com/community-scripts/ProxmoxVE/issues/494)
|
||||||
|
- Official Scrypted script can be used instead: https://docs.scrypted.app/installation.html#proxmox-ve
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix bugs in Calibre-Web update [@havardthom](https://github.com/havardthom) ([#517](https://github.com/community-scripts/ProxmoxVE/pull/517))
|
||||||
|
- Fix upload folder in listmonk LXC [@bvdberg01](https://github.com/bvdberg01) ([#515](https://github.com/community-scripts/ProxmoxVE/pull/515))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Fix website url in Zoraxy documentation [@miggi92](https://github.com/miggi92) ([#506](https://github.com/community-scripts/ProxmoxVE/pull/506))
|
||||||
|
|
||||||
|
## 2024-11-24
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New script: listmonk LXC [@bvdberg01](https://github.com/bvdberg01) ([#442](https://github.com/community-scripts/ProxmoxVE/pull/442))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- Add release title to github-release.yml [@havardthom](https://github.com/havardthom) ([#481](https://github.com/community-scripts/ProxmoxVE/pull/481))
|
||||||
|
|
||||||
## 2024-11-23
|
## 2024-11-23
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ echo -e "Loading..."
|
|||||||
APP="Aria2"
|
APP="Aria2"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
var_cpu="2"
|
var_cpu="2"
|
||||||
var_ram="1028"
|
var_ram="1024"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
variables
|
variables
|
||||||
|
|||||||
@@ -61,11 +61,14 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop cps
|
systemctl stop cps
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
cd /opt/kepubify
|
cd /opt/kepubify
|
||||||
rm kepubify-linux-64bit
|
rm -rf kepubify-linux-64bit
|
||||||
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit &>/dev/null
|
curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit
|
||||||
chmod +x kepubify-linux-64bit
|
chmod +x kepubify-linux-64bit
|
||||||
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \
|
||||||
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
"2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \
|
||||||
@@ -140,16 +143,19 @@ function update_script() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [ ! -z "$options" ] && [ ${#options[@]} -gt 0 ]; then
|
if [ ${#options[@]} -gt 0 ]; then
|
||||||
cps_options=$(IFS=, ; echo "${options[*]}")
|
cps_options=$(IFS=, ; echo "${options[*]}")
|
||||||
echo $cps_options > /opt/calibre-web/options.txt
|
echo $cps_options > /opt/calibre-web/options.txt
|
||||||
pip install --upgrade calibreweb[$cps_options]
|
pip install --upgrade calibreweb[$cps_options] &>/dev/null
|
||||||
else
|
else
|
||||||
rm /opt/calibre-web/options.txt 2> /dev/null
|
rm -rf /opt/calibre-web/options.txt
|
||||||
pip install --upgrade calibreweb
|
pip install --upgrade calibreweb &>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
systemctl start cps
|
systemctl start cps
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Started ${APP}"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
99
ct/glance.sh
Normal file
99
ct/glance.sh
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
________
|
||||||
|
/ ____/ /___ _____ ________
|
||||||
|
/ / __/ / __ `/ __ \/ ___/ _ \
|
||||||
|
/ /_/ / / /_/ / / / / /__/ __/
|
||||||
|
\____/_/\__,_/_/ /_/\___/\___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Glance"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/glance.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/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 Service"
|
||||||
|
systemctl stop glance
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz
|
||||||
|
rm -rf /opt/glance/glance
|
||||||
|
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start glance
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/glance-linux-amd64.tar.gz
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:8080${CL} \n"
|
||||||
106
ct/hoarder.sh
Normal file
106
ct/hoarder.sh
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 tteck
|
||||||
|
# Author: MickLesk (Canbiz) & vhsdream
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ __ __
|
||||||
|
/ / / /___ ____ __________/ /__ _____
|
||||||
|
/ /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/
|
||||||
|
/ __ / /_/ / /_/ / / / /_/ / __/ /
|
||||||
|
/_/ /_/\____/\__,_/_/ \__,_/\___/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Hoarder"
|
||||||
|
var_disk="8"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="4096"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/hoarder ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
PREV_RELEASE=$(cat /opt/${APP}_version.txt)
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop hoarder-web hoarder-workers hoarder-browser
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
mv /opt/hoarder/.env /opt/.env
|
||||||
|
rm -rf /opt/hoarder
|
||||||
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv hoarder-${RELEASE} /opt/hoarder
|
||||||
|
cd /opt/hoarder/apps/web
|
||||||
|
pnpm install --frozen-lockfile &>/dev/null
|
||||||
|
pnpm exec next build --experimental-build-mode compile &>/dev/null
|
||||||
|
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
|
||||||
|
cd /opt/hoarder/apps/workers
|
||||||
|
pnpm install --frozen-lockfile &>/dev/null
|
||||||
|
export DATA_DIR=/opt/hoarder_data
|
||||||
|
cd /opt/hoarder/packages/db
|
||||||
|
pnpm migrate &>/dev/null
|
||||||
|
mv /opt/.env /opt/hoarder/.env
|
||||||
|
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start hoarder-browser hoarder-workers hoarder-web
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -R /opt/v${RELEASE}.zip
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} Setup should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:3000${CL} \n"
|
||||||
97
ct/inspircd.sh
Normal file
97
ct/inspircd.sh
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ ________ ______ __
|
||||||
|
/ _/___ _________ / _/ __ \/ ____/___/ /
|
||||||
|
/ // __ \/ ___/ __ \ / // /_/ / / / __ /
|
||||||
|
_/ // / / (__ ) /_/ // // _, _/ /___/ /_/ /
|
||||||
|
/___/_/ /_/____/ .___/___/_/ |_|\____/\__,_/
|
||||||
|
/_/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="InspIRCd"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /lib/systemd/system/inspircd.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop inspircd
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
apt-get install "./inspircd_${RELEASE}.deb12u1_amd64.deb" -y &>/dev/nul
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start inspircd
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} server should be reachable by connecting to the following server.
|
||||||
|
${BL}Server Name:${IP} Port:6667${CL} \n"
|
||||||
101
ct/listmonk.sh
Normal file
101
ct/listmonk.sh
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: bvdberg01
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
___ __ __
|
||||||
|
/ (_)____/ /_____ ___ ____ ____ / /__
|
||||||
|
/ / / ___/ __/ __ `__ \/ __ \/ __ \/ //_/
|
||||||
|
/ / (__ ) /_/ / / / / / /_/ / / / / ,<
|
||||||
|
/_/_/____/\__/_/ /_/ /_/\____/_/ /_/_/|_|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="listmonk"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /etc/systemd/system/listmonk.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop listmonk
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
mv /opt/listmonk/ /opt/listmonk-backup
|
||||||
|
mkdir /opt/listmonk/
|
||||||
|
wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||||
|
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
|
||||||
|
mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml
|
||||||
|
mv /opt/listmonk-backup/uploads /opt/listmonk/uploads
|
||||||
|
/opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml &>/dev/null
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start listmonk
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||||
|
rm -rf /opt/listmonk-backup/
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:9000${CL} \n"
|
||||||
104
ct/lubelogger.sh
Normal file
104
ct/lubelogger.sh
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ __ __
|
||||||
|
/ / __ __/ /_ ___ / / ____ ____ _____ ____ _____
|
||||||
|
/ / / / / / __ \/ _ \/ / / __ \/ __ `/ __ `/ _ \/ ___/
|
||||||
|
/ /___/ /_/ / /_/ / __/ /___/ /_/ / /_/ / /_/ / __/ /
|
||||||
|
/_____/\__,_/_.___/\___/_____/\____/\__, /\__, /\___/_/
|
||||||
|
/____//____/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="LubeLogger"
|
||||||
|
var_disk="2"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/lubelogger.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop lubelogger
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
cp /opt/lubelogger/appsettings.json /opt/appsettings.json
|
||||||
|
rm -rf /opt/lubelogger
|
||||||
|
unzip -qq LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
|
||||||
|
chmod 700 /opt/lubelogger/CarCareTracker
|
||||||
|
mv -f /opt/appsettings.json /opt/lubelogger/appsettings.json
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start lubelogger
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:5000${CL} \n"
|
||||||
79
ct/mylar3.sh
Normal file
79
ct/mylar3.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: davalanche
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/mylar3/mylar3
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
__ ___ __ _____
|
||||||
|
/ |/ /_ __/ /___ _____|__ /
|
||||||
|
/ /|_/ / / / / / __ `/ ___//_ <
|
||||||
|
/ / / / /_/ / / /_/ / / ___/ /
|
||||||
|
/_/ /_/\__, /_/\__,_/_/ /____/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="Mylar3"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="512"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
if [[ ! -d /opt/mylar3 ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
rm -rf /opt/mylar3/* /opt/mylar3/.*
|
||||||
|
wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3
|
||||||
|
systemctl restart mylar3
|
||||||
|
echo "${RELEASE}" > /opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:8090${CL} \n"
|
||||||
99
ct/onedev.sh
Normal file
99
ct/onedev.sh
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ ____
|
||||||
|
/ __ \____ ___ / __ \___ _ __
|
||||||
|
/ / / / __ \/ _ \/ / / / _ \ | / /
|
||||||
|
/ /_/ / / / / __/ /_/ / __/ |/ /
|
||||||
|
\____/_/ /_/\___/_____/\___/|___/
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="OneDev"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /etc/systemd/system/onedev.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
GITHUB_RELEASE=$(curl -s https://api.github.com/repos/theonedev/onedev/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${GITHUB_RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop onedev
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${GITHUB_RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz
|
||||||
|
tar -xzf onedev-latest.tar.gz
|
||||||
|
/opt/onedev-latest/bin/upgrade.sh /opt/onedev >/dev/null
|
||||||
|
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start onedev
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/onedev-latest
|
||||||
|
rm -rf /opt/onedev-latest.tar.gz
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:6610${CL} \n"
|
||||||
@@ -52,6 +52,26 @@ function default_settings() {
|
|||||||
echo_default
|
echo_default
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /etc/systemd/system/pocketbase.service || ! -x /opt/pocketbase/pocketbase ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop pocketbase
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
/opt/pocketbase/pocketbase update
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start pocketbase
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|||||||
98
ct/snipeit.sh
Normal file
98
ct/snipeit.sh
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
|
||||||
|
#Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
_____ _ __________
|
||||||
|
/ ___/____ (_)___ ___ / _/_ __/
|
||||||
|
\__ \/ __ \/ / __ \/ _ \______ / / / /
|
||||||
|
___/ / / / / / /_/ / __/_____// / / /
|
||||||
|
/____/_/ /_/_/ .___/\___/ /___/ /_/
|
||||||
|
/_/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="SnipeIT"
|
||||||
|
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="no"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/snipe-it ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/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 "Updating ${APP} to v${RELEASE}"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get -y upgrade &>/dev/null
|
||||||
|
mv /opt/snipe-it /opt/snipe-it-backup
|
||||||
|
cd /opt
|
||||||
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" &>/dev/null
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
|
cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
|
||||||
|
cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
|
||||||
|
cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
|
||||||
|
cd /opt/snipe-it/
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
composer install --no-dev --prefer-source &>/dev/null
|
||||||
|
composer dump-autoload &>/dev/null
|
||||||
|
php artisan migrate --force &>/dev/null
|
||||||
|
php artisan config:clear &>/dev/null
|
||||||
|
php artisan route:clear &>/dev/null
|
||||||
|
php artisan cache:clear &>/dev/null
|
||||||
|
php artisan view:clear &>/dev/null
|
||||||
|
chown -R www-data: /opt/snipe-it
|
||||||
|
chmod -R 755 /opt/snipe-it
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
rm -rf /opt/snipe-it-backup
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
@@ -56,7 +56,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/Sonarr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /var/lib/sonarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating $APP v4"
|
msg_info "Updating $APP v4"
|
||||||
systemctl stop sonarr.service
|
systemctl stop sonarr.service
|
||||||
wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64'
|
wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64'
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ check_container_resources
|
|||||||
if [[ ! -d /opt/Stirling-PDF ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /opt/Stirling-PDF ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
systemctl stop stirlingpdf
|
systemctl stop stirlingpdf
|
||||||
|
if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then
|
||||||
|
apt-get remove -y ocrmypdf &>/dev/null
|
||||||
|
apt-get install -y qpdf &>/dev/null
|
||||||
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz
|
wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz
|
||||||
tar -xzf v$RELEASE.tar.gz
|
tar -xzf v$RELEASE.tar.gz
|
||||||
|
|||||||
93
ct/the-lounge.sh
Normal file
93
ct/the-lounge.sh
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
________ __
|
||||||
|
/_ __/ /_ ___ / / ____ __ ______ ____ ____
|
||||||
|
/ / / __ \/ _ \______/ / / __ \/ / / / __ \/ __ `/ _ \
|
||||||
|
/ / / / / / __/_____/ /___/ /_/ / /_/ / / / / /_/ / __/
|
||||||
|
/_/ /_/ /_/\___/ /_____/\____/\__,_/_/ /_/\__, /\___/
|
||||||
|
/____/
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
header_info
|
||||||
|
echo -e "Loading..."
|
||||||
|
APP="The-Lounge"
|
||||||
|
var_disk="4"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function default_settings() {
|
||||||
|
CT_TYPE="1"
|
||||||
|
PW=""
|
||||||
|
CT_ID=$NEXTID
|
||||||
|
HN=$NSAPP
|
||||||
|
DISK_SIZE="$var_disk"
|
||||||
|
CORE_COUNT="$var_cpu"
|
||||||
|
RAM_SIZE="$var_ram"
|
||||||
|
BRG="vmbr0"
|
||||||
|
NET="dhcp"
|
||||||
|
GATE=""
|
||||||
|
APT_CACHER=""
|
||||||
|
APT_CACHER_IP=""
|
||||||
|
DISABLEIP6="no"
|
||||||
|
MTU=""
|
||||||
|
SD=""
|
||||||
|
NS=""
|
||||||
|
MAC=""
|
||||||
|
VLAN=""
|
||||||
|
SSH="no"
|
||||||
|
VERB="yes"
|
||||||
|
echo_default
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /usr/lib/systemd/system/thelounge.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop thelounge
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
apt-get install --only-upgrade nodejs &>/dev/null
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb
|
||||||
|
dpkg -i ./thelounge_${RELEASE}_all.deb
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start thelounge
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf "/opt/thelounge_${RELEASE}_all.deb"
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
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 "${APP} Setup should be reachable by going to the following URL.
|
||||||
|
${BL}http://${IP}:9000${CL} \n"
|
||||||
@@ -1,28 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2024 tteck
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: wimb0
|
||||||
# License: MIT
|
# License: MIT
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
function header_info {
|
function header_info {
|
||||||
clear
|
clear
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
_____ __ __
|
__ __ __ __
|
||||||
/ ___/____________ ______ / /____ ____/ /
|
/ / / /___ / /_ ____ __ ______ ____/ /
|
||||||
\__ \/ ___/ ___/ / / / __ \/ __/ _ \/ __ /
|
/ / / / __ \/ __ \/ __ \/ / / / __ \/ __ /
|
||||||
___/ / /__/ / / /_/ / /_/ / /_/ __/ /_/ /
|
/ /_/ / / / / /_/ / /_/ / /_/ / / / / /_/ /
|
||||||
/____/\___/_/ \__, / .___/\__/\___/\__,_/
|
\____/_/ /_/_.___/\____/\__,_/_/ /_/\__,_/
|
||||||
/____/_/
|
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
header_info
|
header_info
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Scrypted"
|
APP="Unbound"
|
||||||
var_disk="8"
|
var_disk="2"
|
||||||
var_cpu="2"
|
var_cpu="1"
|
||||||
var_ram="2048"
|
var_ram="512"
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
var_version="12"
|
var_version="12"
|
||||||
variables
|
variables
|
||||||
@@ -57,11 +56,11 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/systemd/system/scrypted.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -d /etc/unbound ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating $APP LXC"
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get -y upgrade &>/dev/null
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated $APP LXC"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,5 +69,5 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be online.
|
||||||
${BL}https://${IP}:10443${CL} \n"
|
${BL} Set your DNS server to ${IP}:5335 ${CL} \n"
|
||||||
@@ -17,10 +17,6 @@ cat <<"EOF"
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
header_info
|
header_info
|
||||||
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
|
||||||
echo "AVX instruction set is not supported on this CPU."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
echo -e "Loading..."
|
echo -e "Loading..."
|
||||||
APP="Unifi"
|
APP="Unifi"
|
||||||
var_disk="8"
|
var_disk="8"
|
||||||
|
|||||||
27
ct/zabbix.sh
27
ct/zabbix.sh
@@ -57,11 +57,32 @@ header_info
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
|
||||||
|
msg_info "Stopping ${APP} Services"
|
||||||
|
systemctl stop zabbix-server zabbix-agent2
|
||||||
|
msg_ok "Stopped ${APP} Services"
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
msg_info "Updating $APP LXC"
|
||||||
|
mkdir -p /opt/zabbix-backup/
|
||||||
|
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
|
||||||
|
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
|
||||||
|
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
|
||||||
|
cp -R /usr/share/zabbix-* /opt/zabbix-backup/
|
||||||
|
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
||||||
|
cd /tmp
|
||||||
|
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
|
dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get -y upgrade &>/dev/null
|
apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null
|
||||||
systemctl restart zabbix-server
|
|
||||||
msg_ok "Updated $APP LXC"
|
msg_info "Starting ${APP} Services"
|
||||||
|
systemctl start zabbix-server zabbix-agent2
|
||||||
|
systemctl restart apache2
|
||||||
|
msg_ok "Started ${APP} Services"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,40 +57,35 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/zwave-js-ui ]]; then
|
if [[ ! -d /opt/zwave-js-ui ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!";
|
||||||
exit
|
exit;
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
msg_info "Stopping Z-wave JS UI"
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
systemctl stop zwave-js-ui.service
|
msg_info "Stopping Service"
|
||||||
msg_ok "Stopped Z-wave JS UI"
|
systemctl stop zwave-js-ui
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating Z-wave JS UI"
|
msg_info "Updating Z-Wave JS UI"
|
||||||
wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
|
rm -rf /opt/zwave-js-ui/*
|
||||||
unzip zwave-js-ui-${RELEASE}-linux.zip &>/dev/null
|
cd /opt/zwave-js-ui
|
||||||
\cp -R zwave-js-ui-linux /opt/zwave-js-ui
|
wget -q https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
unzip -q zwave-js-ui-${RELEASE}-linux.zip
|
||||||
echo "[Unit]
|
msg_ok "Updated Z-Wave JS UI"
|
||||||
Description=zwave-js-ui
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
WorkingDirectory=/opt/zwave-js-ui
|
|
||||||
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target" >$service_path
|
|
||||||
msg_ok "Updated Z-wave JS UI"
|
|
||||||
|
|
||||||
msg_info "Starting Z-wave JS UI"
|
msg_info "Starting Service"
|
||||||
systemctl enable --now zwave-js-ui.service
|
systemctl start zwave-js-ui
|
||||||
msg_ok "Started Z-wave JS UI"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleanup"
|
msg_info "Cleanup"
|
||||||
rm -rf zwave-js-ui-${RELEASE}-linux.zip zwave-js-ui-linux store
|
rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
|
rm -rf /opt/zwave-js-ui/store
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully!\n"
|
msg_ok "Updated Successfully!\n"
|
||||||
exit
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
2381
frontend/package-lock.json
generated
2381
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@
|
|||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
|
"test": "vitest",
|
||||||
"deploy": "next build && touch out/.nojekyll && git add out/ && git commit -m \"Deploy\" && git subtree push --prefix out origin gh-pages",
|
"deploy": "next build && touch out/.nojekyll && git add out/ && git commit -m \"Deploy\" && git subtree push --prefix out origin gh-pages",
|
||||||
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
||||||
"format:check": "prettier --check \"**/*.{ts,tsx,mdx}\" --cache",
|
"format:check": "prettier --check \"**/*.{ts,tsx,mdx}\" --cache",
|
||||||
@@ -59,20 +60,26 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@testing-library/dom": "^10.4.0",
|
||||||
|
"@testing-library/react": "^16.0.1",
|
||||||
"@types/node": "^22",
|
"@types/node": "^22",
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.1",
|
|
||||||
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
|
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
|
||||||
|
"@types/react": "npm:types-react@19.0.0-rc.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
"@typescript-eslint/eslint-plugin": "^8.8.1",
|
||||||
"@typescript-eslint/parser": "^8.8.1",
|
"@typescript-eslint/parser": "^8.8.1",
|
||||||
|
"@vitejs/plugin-react": "^4.3.4",
|
||||||
"eslint-config-next": "15.0.2",
|
"eslint-config-next": "15.0.2",
|
||||||
"postcss": "^8",
|
|
||||||
"eslint": "^9.13.0",
|
"eslint": "^9.13.0",
|
||||||
"prettier": "^3.2.5",
|
"jsdom": "^25.0.1",
|
||||||
|
"postcss": "^8",
|
||||||
"prettier-plugin-tailwindcss": "^0.6.5",
|
"prettier-plugin-tailwindcss": "^0.6.5",
|
||||||
"tailwindcss": "^3.4.9",
|
"prettier": "^3.2.5",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
"tailwindcss-animated": "^1.1.2",
|
"tailwindcss-animated": "^1.1.2",
|
||||||
"typescript": "^5"
|
"tailwindcss": "^3.4.9",
|
||||||
|
"typescript": "^5",
|
||||||
|
"vite-tsconfig-paths": "^5.1.3",
|
||||||
|
"vitest": "^2.1.6"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"@types/react": "npm:types-react@19.0.0-rc.1",
|
"@types/react": "npm:types-react@19.0.0-rc.1",
|
||||||
|
|||||||
11
frontend/src/__tests__/app/page.test.tsx
Normal file
11
frontend/src/__tests__/app/page.test.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { screen } from "@testing-library/dom";
|
||||||
|
import { render } from "@testing-library/react";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import Page from "@/app/page";
|
||||||
|
|
||||||
|
describe("Page", () => {
|
||||||
|
it("should show button to view scripts", () => {
|
||||||
|
render(<Page />);
|
||||||
|
expect(screen.getByRole("button", { name: "View Scripts" })).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
53
frontend/src/__tests__/public/validate-json.test.ts
Normal file
53
frontend/src/__tests__/public/validate-json.test.ts
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import { describe, it, assert, beforeAll } from "vitest";
|
||||||
|
import { promises as fs } from "fs";
|
||||||
|
import path from "path";
|
||||||
|
import { ScriptSchema, type Script } from "@/app/json-editor/_schemas/schemas";
|
||||||
|
import { Metadata } from "@/lib/types";
|
||||||
|
|
||||||
|
const jsonDir = "public/json";
|
||||||
|
const metadataFileName = "metadata.json";
|
||||||
|
const encoding = "utf-8";
|
||||||
|
|
||||||
|
const fileNames = (await fs.readdir(jsonDir))
|
||||||
|
.filter((fileName) => fileName !== metadataFileName)
|
||||||
|
|
||||||
|
describe.each(fileNames)("%s", async (fileName) => {
|
||||||
|
let script: Script;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const filePath = path.resolve(jsonDir, fileName);
|
||||||
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
|
script = JSON.parse(fileContent);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should have valid json according to script schema", () => {
|
||||||
|
ScriptSchema.parse(script);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should have a corresponding script file", () => {
|
||||||
|
script.install_methods.forEach((method) => {
|
||||||
|
const scriptPath = path.resolve("..", method.script)
|
||||||
|
assert(fs.stat(scriptPath), `Script file not found: ${scriptPath}`)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
describe(`${metadataFileName}`, async () => {
|
||||||
|
let metadata: Metadata;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const filePath = path.resolve(jsonDir, metadataFileName);
|
||||||
|
const fileContent = await fs.readFile(filePath, encoding)
|
||||||
|
metadata = JSON.parse(fileContent);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should have valid json according to metadata schema", () => {
|
||||||
|
// TODO: create zod schema for metadata. Move zod schemas to /lib/types.ts
|
||||||
|
assert(metadata.categories.length > 0);
|
||||||
|
metadata.categories.forEach((category) => {
|
||||||
|
assert.isString(category.name)
|
||||||
|
assert.isNumber(category.id)
|
||||||
|
assert.isNumber(category.sort_order)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
4
frontend/src/__tests__/setupTests.ts
Normal file
4
frontend/src/__tests__/setupTests.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import { vi } from "vitest";
|
||||||
|
|
||||||
|
// Mock canvas getContext
|
||||||
|
HTMLCanvasElement.prototype.getContext = vi.fn();
|
||||||
@@ -9,11 +9,9 @@ import {
|
|||||||
import { Category } from "@/lib/types";
|
import { Category } from "@/lib/types";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { ScriptSchema } from "../_schemas/schemas";
|
import { type Script } from "../_schemas/schemas";
|
||||||
import { memo } from "react";
|
import { memo } from "react";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type CategoryProps = {
|
type CategoryProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
setScript: (script: Script) => void;
|
setScript: (script: Script) => void;
|
||||||
|
|||||||
@@ -9,11 +9,9 @@ import {
|
|||||||
} from "@/components/ui/select";
|
} from "@/components/ui/select";
|
||||||
import { OperatingSystems } from "@/config/siteConfig";
|
import { OperatingSystems } from "@/config/siteConfig";
|
||||||
import { PlusCircle, Trash2 } from "lucide-react";
|
import { PlusCircle, Trash2 } from "lucide-react";
|
||||||
import { memo, useCallback, useEffect, useRef } from "react";
|
import { memo, useCallback, useRef } from "react";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { InstallMethodSchema, ScriptSchema } from "../_schemas/schemas";
|
import { InstallMethodSchema, ScriptSchema, type Script } from "../_schemas/schemas";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type InstallMethodProps = {
|
type InstallMethodProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
@@ -194,11 +192,11 @@ function InstallMethod({
|
|||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
<Select
|
<Select
|
||||||
value={method.resources.version ? String(method.resources.version) : undefined}
|
value={method.resources.version || undefined}
|
||||||
onValueChange={(value) =>
|
onValueChange={(value) =>
|
||||||
updateInstallMethod(index, "resources", {
|
updateInstallMethod(index, "resources", {
|
||||||
...method.resources,
|
...method.resources,
|
||||||
version: value ? Number(value) : null,
|
version: value || null,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
disabled={method.type === "alpine"}
|
disabled={method.type === "alpine"}
|
||||||
|
|||||||
@@ -11,11 +11,9 @@ import { AlertColors } from "@/config/siteConfig";
|
|||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { PlusCircle, Trash2 } from "lucide-react";
|
import { PlusCircle, Trash2 } from "lucide-react";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { ScriptSchema } from "../_schemas/schemas";
|
import { ScriptSchema, type Script } from "../_schemas/schemas";
|
||||||
import { memo, useCallback } from "react";
|
import { memo, useCallback } from "react";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
type NoteProps = {
|
type NoteProps = {
|
||||||
script: Script;
|
script: Script;
|
||||||
setScript: (script: Script) => void;
|
setScript: (script: Script) => void;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export const InstallMethodSchema = z.object({
|
|||||||
ram: z.number().nullable(),
|
ram: z.number().nullable(),
|
||||||
hdd: z.number().nullable(),
|
hdd: z.number().nullable(),
|
||||||
os: z.string().nullable(),
|
os: z.string().nullable(),
|
||||||
version: z.number().nullable(),
|
version: z.string().nullable(),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ export const ScriptSchema = z.object({
|
|||||||
slug: z.string().min(1, "Slug is required"),
|
slug: z.string().min(1, "Slug is required"),
|
||||||
categories: z.array(z.number()),
|
categories: z.array(z.number()),
|
||||||
date_created: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format").min(1, "Date is required"),
|
date_created: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format").min(1, "Date is required"),
|
||||||
type: z.enum(["vm", "ct", "misc"], {
|
type: z.enum(["vm", "ct", "misc", "turnkey"], {
|
||||||
errorMap: () => ({ message: "Type must be either 'vm', 'ct', or 'misc'" })
|
errorMap: () => ({ message: "Type must be either 'vm', 'ct', 'misc' or 'turnkey'" })
|
||||||
}),
|
}),
|
||||||
updateable: z.boolean(),
|
updateable: z.boolean(),
|
||||||
privileged: z.boolean(),
|
privileged: z.boolean(),
|
||||||
@@ -41,3 +41,5 @@ export const ScriptSchema = z.object({
|
|||||||
}),
|
}),
|
||||||
notes: z.array(NoteSchema),
|
notes: z.array(NoteSchema),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export type Script = z.infer<typeof ScriptSchema>;
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { Calendar } from "@/components/ui/calendar";
|
import { Calendar } from "@/components/ui/calendar";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Label } from "@/components/ui/label";
|
import { Label } from "@/components/ui/label";
|
||||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
import {
|
||||||
|
Popover,
|
||||||
|
PopoverContent,
|
||||||
|
PopoverTrigger,
|
||||||
|
} from "@/components/ui/popover";
|
||||||
import {
|
import {
|
||||||
Select,
|
Select,
|
||||||
SelectContent,
|
SelectContent,
|
||||||
@@ -26,9 +30,7 @@ import { z } from "zod";
|
|||||||
import Categories from "./_components/Categories";
|
import Categories from "./_components/Categories";
|
||||||
import InstallMethod from "./_components/InstallMethod";
|
import InstallMethod from "./_components/InstallMethod";
|
||||||
import Note from "./_components/Note";
|
import Note from "./_components/Note";
|
||||||
import { ScriptSchema } from "./_schemas/schemas";
|
import { ScriptSchema, type Script } from "./_schemas/schemas";
|
||||||
|
|
||||||
type Script = z.infer<typeof ScriptSchema>;
|
|
||||||
|
|
||||||
const initialScript: Script = {
|
const initialScript: Script = {
|
||||||
name: "",
|
name: "",
|
||||||
@@ -64,14 +66,16 @@ export default function JSONGenerator() {
|
|||||||
.catch((error) => console.error("Error fetching categories:", error));
|
.catch((error) => console.error("Error fetching categories:", error));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const updateScript = useCallback((key: keyof Script, value: Script[keyof Script]) => {
|
const updateScript = useCallback(
|
||||||
|
(key: keyof Script, value: Script[keyof Script]) => {
|
||||||
setScript((prev) => {
|
setScript((prev) => {
|
||||||
const updated = { ...prev, [key]: value };
|
const updated = { ...prev, [key]: value };
|
||||||
|
|
||||||
if (key === "type" || key === "slug") {
|
if (key === "type" || key === "slug") {
|
||||||
updated.install_methods = updated.install_methods.map((method) => ({
|
updated.install_methods = updated.install_methods.map((method) => ({
|
||||||
...method,
|
...method,
|
||||||
script: method.type === "alpine"
|
script:
|
||||||
|
method.type === "alpine"
|
||||||
? `/${updated.type}/alpine-${updated.slug}.sh`
|
? `/${updated.type}/alpine-${updated.slug}.sh`
|
||||||
: `/${updated.type}/${updated.slug}.sh`,
|
: `/${updated.type}/${updated.slug}.sh`,
|
||||||
}));
|
}));
|
||||||
@@ -82,7 +86,9 @@ export default function JSONGenerator() {
|
|||||||
setZodErrors(result.success ? null : result.error);
|
setZodErrors(result.success ? null : result.error);
|
||||||
return updated;
|
return updated;
|
||||||
});
|
});
|
||||||
}, []);
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const handleCopy = useCallback(() => {
|
const handleCopy = useCallback(() => {
|
||||||
navigator.clipboard.writeText(JSON.stringify(script, null, 2));
|
navigator.clipboard.writeText(JSON.stringify(script, null, 2));
|
||||||
@@ -91,20 +97,24 @@ export default function JSONGenerator() {
|
|||||||
toast.success("Copied metadata to clipboard");
|
toast.success("Copied metadata to clipboard");
|
||||||
}, [script]);
|
}, [script]);
|
||||||
|
|
||||||
const handleDateSelect = useCallback((date: Date | undefined) => {
|
const handleDateSelect = useCallback(
|
||||||
updateScript(
|
(date: Date | undefined) => {
|
||||||
"date_created",
|
updateScript("date_created", format(date || new Date(), "yyyy-MM-dd"));
|
||||||
format(date || new Date(), "yyyy-MM-dd")
|
},
|
||||||
|
[updateScript],
|
||||||
);
|
);
|
||||||
}, [updateScript]);
|
|
||||||
|
|
||||||
const formattedDate = useMemo(() =>
|
const formattedDate = useMemo(
|
||||||
|
() =>
|
||||||
script.date_created ? format(script.date_created, "PPP") : undefined,
|
script.date_created ? format(script.date_created, "PPP") : undefined,
|
||||||
[script.date_created]
|
[script.date_created],
|
||||||
);
|
);
|
||||||
|
|
||||||
const validationAlert = useMemo(() => (
|
const validationAlert = useMemo(
|
||||||
<Alert className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}>
|
() => (
|
||||||
|
<Alert
|
||||||
|
className={cn("text-black", isValid ? "bg-green-100" : "bg-red-100")}
|
||||||
|
>
|
||||||
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
<AlertTitle>{isValid ? "Valid JSON" : "Invalid JSON"}</AlertTitle>
|
||||||
<AlertDescription>
|
<AlertDescription>
|
||||||
{isValid
|
{isValid
|
||||||
@@ -121,7 +131,9 @@ export default function JSONGenerator() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</Alert>
|
</Alert>
|
||||||
), [isValid, zodErrors]);
|
),
|
||||||
|
[isValid, zodErrors],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex h-screen mt-20">
|
<div className="flex h-screen mt-20">
|
||||||
@@ -222,14 +234,18 @@ export default function JSONGenerator() {
|
|||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Switch
|
<Switch
|
||||||
checked={script.updateable}
|
checked={script.updateable}
|
||||||
onCheckedChange={(checked) => updateScript("updateable", checked)}
|
onCheckedChange={(checked) =>
|
||||||
|
updateScript("updateable", checked)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<label>Updateable</label>
|
<label>Updateable</label>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Switch
|
<Switch
|
||||||
checked={script.privileged}
|
checked={script.privileged}
|
||||||
onCheckedChange={(checked) => updateScript("privileged", checked)}
|
onCheckedChange={(checked) =>
|
||||||
|
updateScript("privileged", checked)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<label>Privileged</label>
|
<label>Privileged</label>
|
||||||
</div>
|
</div>
|
||||||
@@ -238,7 +254,12 @@ export default function JSONGenerator() {
|
|||||||
placeholder="Interface Port"
|
placeholder="Interface Port"
|
||||||
type="number"
|
type="number"
|
||||||
value={script.interface_port || ""}
|
value={script.interface_port || ""}
|
||||||
onChange={(e) => updateScript("interface_port", e.target.value ? Number(e.target.value) : null)}
|
onChange={(e) =>
|
||||||
|
updateScript(
|
||||||
|
"interface_port",
|
||||||
|
e.target.value ? Number(e.target.value) : null,
|
||||||
|
)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<Input
|
<Input
|
||||||
@@ -249,7 +270,9 @@ export default function JSONGenerator() {
|
|||||||
<Input
|
<Input
|
||||||
placeholder="Documentation URL"
|
placeholder="Documentation URL"
|
||||||
value={script.documentation || ""}
|
value={script.documentation || ""}
|
||||||
onChange={(e) => updateScript("documentation", e.target.value || null)}
|
onChange={(e) =>
|
||||||
|
updateScript("documentation", e.target.value || null)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<InstallMethod
|
<InstallMethod
|
||||||
@@ -262,18 +285,22 @@ export default function JSONGenerator() {
|
|||||||
<Input
|
<Input
|
||||||
placeholder="Username"
|
placeholder="Username"
|
||||||
value={script.default_credentials.username || ""}
|
value={script.default_credentials.username || ""}
|
||||||
onChange={(e) => updateScript("default_credentials", {
|
onChange={(e) =>
|
||||||
|
updateScript("default_credentials", {
|
||||||
...script.default_credentials,
|
...script.default_credentials,
|
||||||
username: e.target.value || null,
|
username: e.target.value || null,
|
||||||
})}
|
})
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<Input
|
<Input
|
||||||
placeholder="Password"
|
placeholder="Password"
|
||||||
value={script.default_credentials.password || ""}
|
value={script.default_credentials.password || ""}
|
||||||
onChange={(e) => updateScript("default_credentials", {
|
onChange={(e) =>
|
||||||
|
updateScript("default_credentials", {
|
||||||
...script.default_credentials,
|
...script.default_credentials,
|
||||||
password: e.target.value || null,
|
password: e.target.value || null,
|
||||||
})}
|
})
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<Note
|
<Note
|
||||||
script={script}
|
script={script}
|
||||||
|
|||||||
@@ -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-210px)] overflow-x-hidden mt-3 p-2"
|
className="overflow-y-scroll max-h-[calc(100vh-220px)] overflow-x-hidden mt-3 p-2"
|
||||||
>
|
>
|
||||||
{items.map((category) => (
|
{items.map((category) => (
|
||||||
<AccordionItem
|
<AccordionItem
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const navbarLinks = [
|
|||||||
{
|
{
|
||||||
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
|
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
|
||||||
event: "Change Log",
|
event: "Change Log",
|
||||||
icon: <Scroll className="h-4 w-4 hidden sm:block" />,
|
icon: <Scroll className="h-4 w-4" />,
|
||||||
text: "Change Log",
|
text: "Change Log",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export type Script = {
|
|||||||
ram: number | null;
|
ram: number | null;
|
||||||
hdd: number | null;
|
hdd: number | null;
|
||||||
os: string | null;
|
os: string | null;
|
||||||
version: number | null;
|
version: string | null;
|
||||||
};
|
};
|
||||||
}[];
|
}[];
|
||||||
default_credentials: {
|
default_credentials: {
|
||||||
|
|||||||
11
frontend/vitest.config.mjs
Normal file
11
frontend/vitest.config.mjs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { defineConfig } from 'vitest/config'
|
||||||
|
import react from '@vitejs/plugin-react'
|
||||||
|
import tsconfigPaths from 'vite-tsconfig-paths'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [tsconfigPaths(), react()],
|
||||||
|
test: {
|
||||||
|
environment: "jsdom",
|
||||||
|
setupFiles: ["src/__tests__/setupTests.ts"]
|
||||||
|
},
|
||||||
|
})
|
||||||
81
install/glance-install.sh
Normal file
81
install/glance-install.sh
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing Glance"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz
|
||||||
|
mkdir -p /opt/glance
|
||||||
|
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
|
||||||
|
cat <<EOF >/opt/glance/glance.yml
|
||||||
|
pages:
|
||||||
|
- name: Startpage
|
||||||
|
width: slim
|
||||||
|
hide-desktop-navigation: true
|
||||||
|
center-vertically: true
|
||||||
|
columns:
|
||||||
|
- size: full
|
||||||
|
widgets:
|
||||||
|
- type: search
|
||||||
|
autofocus: true
|
||||||
|
- type: bookmarks
|
||||||
|
groups:
|
||||||
|
- title: General
|
||||||
|
links:
|
||||||
|
- title: Google
|
||||||
|
url: https://www.google.com/
|
||||||
|
- title: Helper Scripts
|
||||||
|
url: https://github.com/community-scripts/ProxmoxVE
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed Glance"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
service_path="/etc/systemd/system/glance.service"
|
||||||
|
echo "[Unit]
|
||||||
|
Description=Glance Daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/glance
|
||||||
|
ExecStart=/opt/glance/glance --config /opt/glance/glance.yml
|
||||||
|
TimeoutStopSec=20
|
||||||
|
KillMode=process
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target" >$service_path
|
||||||
|
|
||||||
|
systemctl enable -q --now glance.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/glance-linux-amd64.tar.gz
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
180
install/hoarder-install.sh
Normal file
180
install/hoarder-install.sh
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 tteck
|
||||||
|
# Author: MickLesk (Canbiz) & vhsdream
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
g++ \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
sudo \
|
||||||
|
gnupg \
|
||||||
|
ca-certificates \
|
||||||
|
chromium \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Additional Tools"
|
||||||
|
wget -q https://github.com/Y2Z/monolith/releases/latest/download/monolith-gnu-linux-x86_64 -O /usr/bin/monolith
|
||||||
|
chmod +x /usr/bin/monolith
|
||||||
|
wget -q https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux -O /usr/bin/yt-dlp
|
||||||
|
chmod +x /usr/bin/yt-dlp
|
||||||
|
msg_ok "Installed Additional Tools"
|
||||||
|
|
||||||
|
msg_info "Installing Meilisearch"
|
||||||
|
cd /tmp
|
||||||
|
wget -q https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb
|
||||||
|
$STD dpkg -i meilisearch.deb
|
||||||
|
wget -q https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -O /etc/meilisearch.toml
|
||||||
|
MASTER_KEY=$(openssl rand -base64 12)
|
||||||
|
sed -i \
|
||||||
|
-e 's|^env =.*|env = "production"|' \
|
||||||
|
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
|
||||||
|
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
|
||||||
|
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
|
||||||
|
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
|
||||||
|
-e 's|^# no_analytics = true|no_analytics = true|' \
|
||||||
|
/etc/meilisearch.toml
|
||||||
|
msg_ok "Installed Meilisearch"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing Hoarder"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv hoarder-${RELEASE} /opt/hoarder
|
||||||
|
cd /opt/hoarder
|
||||||
|
corepack enable
|
||||||
|
export PUPPETEER_SKIP_DOWNLOAD="true"
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
export CI="true"
|
||||||
|
cd /opt/hoarder/apps/web
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
$STD pnpm exec next build --experimental-build-mode compile
|
||||||
|
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
|
||||||
|
cd /opt/hoarder/apps/workers
|
||||||
|
$STD pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
export DATA_DIR=/opt/hoarder_data
|
||||||
|
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
||||||
|
cat <<EOF >/opt/hoarder/.env
|
||||||
|
SERVER_VERSION=$RELEASE
|
||||||
|
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
||||||
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
|
DATA_DIR="$DATA_DIR"
|
||||||
|
MEILI_ADDR="http://127.0.0.1:7700"
|
||||||
|
MEILI_MASTER_KEY="$MASTER_KEY"
|
||||||
|
BROWSER_WEB_URL="http://127.0.0.1:9222"
|
||||||
|
|
||||||
|
# If you're planning to use OpenAI for tagging. Uncomment the following line:
|
||||||
|
# OPENAI_API_KEY="<API_KEY>"
|
||||||
|
|
||||||
|
# If you're planning to use ollama for tagging, uncomment the following lines:
|
||||||
|
# OLLAMA_BASE_URL="<OLLAMA_ADDR>"
|
||||||
|
|
||||||
|
# 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_IMAGE_MODEL="gpt-4o-mini"
|
||||||
|
EOF
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed Hoarder"
|
||||||
|
|
||||||
|
msg_info "Running Database Migration"
|
||||||
|
mkdir -p ${DATA_DIR}
|
||||||
|
cd /opt/hoarder/packages/db
|
||||||
|
$STD pnpm migrate
|
||||||
|
msg_ok "Database Migration Completed"
|
||||||
|
|
||||||
|
msg_info "Creating Services"
|
||||||
|
cat <<EOF >/etc/systemd/system/meilisearch.service
|
||||||
|
[Unit]
|
||||||
|
Description=Meilisearch
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-web.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Web
|
||||||
|
Wants=network.target hoarder-workers.service
|
||||||
|
After=network.target hoarder-workers.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=pnpm start
|
||||||
|
WorkingDirectory=/opt/hoarder/apps/web
|
||||||
|
EnvironmentFile=/opt/hoarder/.env
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-browser.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Headless Browser
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
ExecStart=/usr/bin/chromium --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=127.0.0.1 --remote-debugging-port=9222 --hide-scrollbars
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/hoarder-workers.service
|
||||||
|
[Unit]
|
||||||
|
Description=Hoarder Workers
|
||||||
|
Wants=network.target hoarder-browser.service meilisearch.service
|
||||||
|
After=network.target hoarder-browser.service meilisearch.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=pnpm start:prod
|
||||||
|
WorkingDirectory=/opt/hoarder/apps/workers
|
||||||
|
EnvironmentFile=/opt/hoarder/.env
|
||||||
|
Restart=always
|
||||||
|
TimeoutStopSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl -q enable --now meilisearch.service hoarder-browser.service hoarder-workers.service hoarder-web.service
|
||||||
|
msg_ok "Created Services"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/meilisearch.deb
|
||||||
|
rm -f /opt/v${RELEASE}.zip
|
||||||
|
$STD apt-get autoremove -y
|
||||||
|
$STD apt-get autoclean -y
|
||||||
|
msg_ok "Cleaned"
|
||||||
54
install/inspircd-install.sh
Normal file
54
install/inspircd-install.sh
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
mc \
|
||||||
|
sudo
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing InspIRCd"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
cd /opt
|
||||||
|
wget -q https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
$STD apt-get install "./inspircd_${RELEASE}.deb12u1_amd64.deb" -y &>/dev/null
|
||||||
|
cat <<EOF >/etc/inspircd/inspircd.conf
|
||||||
|
<define name="networkDomain" value="helper-scripts.com">
|
||||||
|
<define name="networkName" value="Proxmox VE Helper-Scripts">
|
||||||
|
|
||||||
|
<server
|
||||||
|
name="irc.&networkDomain;"
|
||||||
|
description="&networkName; IRC server"
|
||||||
|
network="&networkName;">
|
||||||
|
<admin
|
||||||
|
name="Admin"
|
||||||
|
description="Supreme Overlord"
|
||||||
|
email="irc@&networkDomain;">
|
||||||
|
<bind address="" port="6667" type="clients">
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed InspIRCd"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/inspircd_${RELEASE}.deb12u1_amd64.deb
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -56,9 +56,9 @@ $STD composer install --no-dev --optimize-autoloader --no-interaction
|
|||||||
cp .env.dist .env
|
cp .env.dist .env
|
||||||
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env
|
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env
|
||||||
$STD bin/console kimai:install -n
|
$STD bin/console kimai:install -n
|
||||||
chown -R :www-data .
|
chown -R :www-data /opt/kimai
|
||||||
chmod -R g+r .
|
chmod -R g+r /opt/kimai
|
||||||
chmod -R g+rw var/
|
chmod -R g+rw /opt/kimai
|
||||||
sudo chown -R www-data:www-data /opt/kimai
|
sudo chown -R www-data:www-data /opt/kimai
|
||||||
sudo chmod -R 755 /opt/kimai
|
sudo chmod -R 755 /opt/kimai
|
||||||
$STD expect <<EOF
|
$STD expect <<EOF
|
||||||
|
|||||||
80
install/listmonk-install.sh
Normal file
80
install/listmonk-install.sh
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: bvdberg01
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
mc \
|
||||||
|
postgresql
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up PostgreSQL"
|
||||||
|
DB_NAME=listmonk
|
||||||
|
DB_USER=listmonk
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
|
||||||
|
{
|
||||||
|
echo "listmonk-Credentials"
|
||||||
|
echo -e "listmonk Database User: \e[32m$DB_USER\e[0m"
|
||||||
|
echo -e "listmonk Database Password: \e[32m$DB_PASS\e[0m"
|
||||||
|
echo -e "listmonk Database Name: \e[32m$DB_NAME\e[0m"
|
||||||
|
} >> ~/listmonk.creds
|
||||||
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
|
msg_info "Installing listmonk"
|
||||||
|
cd /opt
|
||||||
|
mkdir /opt/listmonk
|
||||||
|
mkdir /opt/listmonk/uploads
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||||
|
tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk
|
||||||
|
|
||||||
|
$STD /opt/listmonk/listmonk --new-config --config /opt/listmonk/config.toml
|
||||||
|
sed -i -e 's/address = "localhost:9000"/address = "0.0.0.0:9000"/' -e 's/^password = ".*"/password = "'"$DB_PASS"'"/' /opt/listmonk/config.toml
|
||||||
|
$STD /opt/listmonk/listmonk --install --yes --config /opt/listmonk/config.toml
|
||||||
|
|
||||||
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
|
msg_ok "Installed listmonk"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/listmonk.service
|
||||||
|
[Unit]
|
||||||
|
Description=Listmonk Service
|
||||||
|
Wants=network.target
|
||||||
|
After=postgresql.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/opt/listmonk/listmonk --config /opt/listmonk/config.toml
|
||||||
|
Restart=always
|
||||||
|
RestartSec=3
|
||||||
|
WorkingDirectory=/opt/listmonk
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now listmonk
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
72
install/lubelogger-install.sh
Normal file
72
install/lubelogger-install.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
wget \
|
||||||
|
mc \
|
||||||
|
zip \
|
||||||
|
jq
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing LubeLogger"
|
||||||
|
cd /opt
|
||||||
|
mkdir -p /opt/lubelogger
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".")
|
||||||
|
cd /opt/lubelogger
|
||||||
|
wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
unzip -q LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
chmod 700 /opt/lubelogger/CarCareTracker
|
||||||
|
cp /opt/lubelogger/appsettings.json /opt/lubelogger/appsettings_bak.json
|
||||||
|
jq '.Kestrel = {"Endpoints": {"Http": {"Url": "http://0.0.0.0:5000"}}}' /opt/lubelogger/appsettings_bak.json > /opt/lubelogger/appsettings.json
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed LubeLogger"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/lubelogger.service
|
||||||
|
[Unit]
|
||||||
|
Description=LubeLogger Daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/lubelogger
|
||||||
|
ExecStart=/opt/lubelogger/CarCareTracker
|
||||||
|
TimeoutStopSec=20
|
||||||
|
KillMode=process
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl enable --now -q lubelogger.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/lubelogger/appsettings_bak.json
|
||||||
|
rm -rf /opt/lubelogger/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -21,6 +21,11 @@ $STD apt-get install -y gpg
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Mosquitto MQTT Broker"
|
msg_info "Installing Mosquitto MQTT Broker"
|
||||||
|
source /etc/os-release
|
||||||
|
curl -fsSL http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key >/usr/share/keyrings/mosquitto-repo.gpg.key
|
||||||
|
chmod go+r /usr/share/keyrings/mosquitto-repo.gpg.key
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mosquitto-repo.gpg.key] http://repo.mosquitto.org/debian ${VERSION_CODENAME} main" >/etc/apt/sources.list.d/mosquitto.list
|
||||||
|
$STD apt-get update
|
||||||
$STD apt-get -y install mosquitto
|
$STD apt-get -y install mosquitto
|
||||||
$STD apt-get -y install mosquitto-clients
|
$STD apt-get -y install mosquitto-clients
|
||||||
cat <<EOF >/etc/mosquitto/conf.d/default.conf
|
cat <<EOF >/etc/mosquitto/conf.d/default.conf
|
||||||
|
|||||||
68
install/mylar3-install.sh
Normal file
68
install/mylar3-install.sh
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: davalanche
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/mylar3/mylar3
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
sudo \
|
||||||
|
mc \
|
||||||
|
jq
|
||||||
|
echo "deb http://deb.debian.org/debian bookworm non-free non-free-firmware" > /etc/apt/sources.list.d/non-free.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y unrar
|
||||||
|
rm /etc/apt/sources.list.d/non-free.list
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Updating Python3"
|
||||||
|
$STD apt-get install -y python3-pip
|
||||||
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
|
$STD pip install -U --no-cache-dir pip
|
||||||
|
msg_ok "Updated Python3"
|
||||||
|
|
||||||
|
msg_info "Installing ${APPLICATION}"
|
||||||
|
mkdir -p /opt/mylar3
|
||||||
|
mkdir -p /opt/mylar3-data
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name')
|
||||||
|
wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3
|
||||||
|
$STD pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||||
|
echo "${RELEASE}" > /opt/${APPLICATION}_version.txt
|
||||||
|
msg_ok "Installed ${APPLICATION}"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/mylar3.service
|
||||||
|
[Unit]
|
||||||
|
Description=Mylar3 Service
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/python3 /opt/mylar3/Mylar.py --daemon --nolaunch --datadir=/opt/mylar3-data
|
||||||
|
GuessMainPID=no
|
||||||
|
Type=forking
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now mylar3.service
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -80,7 +80,7 @@ else
|
|||||||
cd ./nginx-proxy-manager-${RELEASE}
|
cd ./nginx-proxy-manager-${RELEASE}
|
||||||
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
msg_info "Setting up Enviroment"
|
msg_info "Setting up Environment"
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
|
|||||||
44
install/onedev-install.sh
Normal file
44
install/onedev-install.sh
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
mc \
|
||||||
|
sudo \
|
||||||
|
default-jdk \
|
||||||
|
git
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
msg_info "Installing OneDev"
|
||||||
|
cd /opt
|
||||||
|
wget -q https://code.onedev.io/onedev/server/~site/onedev-latest.tar.gz
|
||||||
|
tar -xzf onedev-latest.tar.gz
|
||||||
|
mv /opt/onedev-latest /opt/onedev
|
||||||
|
$STD /opt/onedev/bin/server.sh install
|
||||||
|
systemctl start onedev
|
||||||
|
RELEASE=$(cat /opt/onedev/release.properties | grep "version" | cut -d'=' -f2)
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed OneDev"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/onedev-latest.tar.gz
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -20,8 +20,8 @@ $STD apt-get install -y mc
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Pocketbase"
|
msg_info "Installing Pocketbase"
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE="$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')"
|
||||||
wget -q https://github.com/pocketbase/pocketbase/releases/download/v${RELEASE}/pocketbase_${RELEASE}_linux_amd64.zip -O /tmp/pocketbase.zip
|
wget -q "https://github.com/pocketbase/pocketbase/releases/download/v${RELEASE}/pocketbase_${RELEASE}_linux_amd64.zip" -O /tmp/pocketbase.zip
|
||||||
mkdir -p /opt/pocketbase/{pb_public,pb_migrations,pb_hooks}
|
mkdir -p /opt/pocketbase/{pb_public,pb_migrations,pb_hooks}
|
||||||
unzip -q -o /tmp/pocketbase.zip -d /opt/pocketbase
|
unzip -q -o /tmp/pocketbase.zip -d /opt/pocketbase
|
||||||
|
|
||||||
@@ -49,6 +49,7 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/pocketbase.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"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ cat <<EOF >/etc/systemd/system/qbittorrent-nox.service
|
|||||||
Description=qBittorrent client
|
Description=qBittorrent client
|
||||||
After=network.target
|
After=network.target
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/qbittorrent-nox --webui-port=8090
|
ExecStart=/usr/bin/qbittorrent-nox
|
||||||
Restart=always
|
Restart=always
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -1,136 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2024 tteck
|
|
||||||
# Author: tteck (tteckster)
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
|
||||||
$STD apt-get -y install software-properties-common apt-utils
|
|
||||||
$STD apt-get -y update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
$STD apt-get install -y avahi-daemon
|
|
||||||
$STD apt-get -y install \
|
|
||||||
build-essential \
|
|
||||||
gcc \
|
|
||||||
gir1.2-gtk-3.0 \
|
|
||||||
libcairo2-dev \
|
|
||||||
libgirepository1.0-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libjpeg-dev \
|
|
||||||
libgif-dev \
|
|
||||||
libopenjp2-7 \
|
|
||||||
libpango1.0-dev \
|
|
||||||
librsvg2-dev \
|
|
||||||
pkg-config \
|
|
||||||
curl \
|
|
||||||
sudo \
|
|
||||||
mc \
|
|
||||||
ca-certificates \
|
|
||||||
gpg
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting Up Hardware Acceleration"
|
|
||||||
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
|
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
|
||||||
chgrp video /dev/dri
|
|
||||||
chmod 755 /dev/dri
|
|
||||||
chmod 660 /dev/dri/*
|
|
||||||
$STD adduser $(id -u -n) video
|
|
||||||
$STD adduser $(id -u -n) render
|
|
||||||
fi
|
|
||||||
msg_ok "Set Up Hardware Acceleration"
|
|
||||||
|
|
||||||
msg_info "Installing GStreamer (Patience)"
|
|
||||||
$STD apt-get -y install \
|
|
||||||
gstreamer1.0-tools \
|
|
||||||
libgstreamer1.0-dev \
|
|
||||||
libgstreamer-plugins-base1.0-dev \
|
|
||||||
libgstreamer-plugins-bad1.0-dev \
|
|
||||||
gstreamer1.0-plugins-base \
|
|
||||||
gstreamer1.0-plugins-good \
|
|
||||||
gstreamer1.0-plugins-bad \
|
|
||||||
gstreamer1.0-plugins-ugly \
|
|
||||||
gstreamer1.0-libav \
|
|
||||||
gstreamer1.0-alsa
|
|
||||||
msg_ok "Installed GStreamer"
|
|
||||||
|
|
||||||
msg_info "Setting up Node.js Repository"
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
msg_ok "Set up Node.js Repository"
|
|
||||||
|
|
||||||
msg_info "Installing Node.js"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
msg_ok "Installed Node.js"
|
|
||||||
|
|
||||||
msg_info "Updating Python3"
|
|
||||||
$STD apt-get install -y \
|
|
||||||
python3 \
|
|
||||||
python3-dev \
|
|
||||||
python3-pip
|
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
||||||
msg_ok "Updated Python3"
|
|
||||||
|
|
||||||
msg_info "Installing Python3 Dependencies"
|
|
||||||
$STD apt-get -y install \
|
|
||||||
python3-gi \
|
|
||||||
python3-gst-1.0 \
|
|
||||||
python3-matplotlib \
|
|
||||||
python3-numpy \
|
|
||||||
python3-opencv \
|
|
||||||
python3-pil \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-skimage \
|
|
||||||
python3-wheel
|
|
||||||
$STD python3 -m pip install --upgrade pip
|
|
||||||
$STD python3 -m pip install aiofiles debugpy typing_extensions typing
|
|
||||||
msg_ok "Installed Python3 Dependencies"
|
|
||||||
|
|
||||||
msg_info "Installing Scrypted"
|
|
||||||
$STD npx -y scrypted@latest install-server
|
|
||||||
|
|
||||||
if [[ "$CTTYPE" == "0" ]]; then
|
|
||||||
sed -i -e 's/^sgx:x:104:$/render:x:104:root/' -e 's/^render:x:106:root$/sgx:x:106:/' /etc/group
|
|
||||||
else
|
|
||||||
sed -i -e 's/^sgx:x:104:$/render:x:104:/' -e 's/^render:x:106:$/sgx:x:106:/' /etc/group
|
|
||||||
fi
|
|
||||||
msg_ok "Installed Scrypted"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/scrypted.service
|
|
||||||
[Unit]
|
|
||||||
Description=Scrypted service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
Group=root
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/npx -y scrypted serve
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=3
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now scrypted.service
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
108
install/snipeit-install.sh
Normal file
108
install/snipeit-install.sh
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|
||||||
|
#Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: Michel Roegl-Brunner (michelroegl-brunner)
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
composer \
|
||||||
|
git \
|
||||||
|
sudo \
|
||||||
|
mc \
|
||||||
|
nginx \
|
||||||
|
php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} \
|
||||||
|
mariadb-server
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up database"
|
||||||
|
DB_NAME=snipeit_db
|
||||||
|
DB_USER=snipeit
|
||||||
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
|
mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
|
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
||||||
|
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
|
{
|
||||||
|
echo "SnipeIT-Credentials"
|
||||||
|
echo "SnipeIT Database User: $DB_USER"
|
||||||
|
echo "SnipeIT Database Password: $DB_PASS"
|
||||||
|
echo "SnipeIT Database Name: $DB_NAME"
|
||||||
|
} >> ~/snipeit.creds
|
||||||
|
msg_ok "Set up database"
|
||||||
|
|
||||||
|
msg_info "Installing Snipe-IT"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
||||||
|
unzip -q v${RELEASE}.zip
|
||||||
|
mv snipe-it-${RELEASE} /opt/snipe-it
|
||||||
|
|
||||||
|
cd /opt/snipe-it
|
||||||
|
cp .env.example .env
|
||||||
|
IPADDRESS=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
|
sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \
|
||||||
|
-e "s|^DB_DATABASE=.*|DB_DATABASE=$DB_NAME|" \
|
||||||
|
-e "s|^DB_USERNAME=.*|DB_USERNAME=$DB_USER|" \
|
||||||
|
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$DB_PASS|" .env
|
||||||
|
|
||||||
|
chown -R www-data: /opt/snipe-it
|
||||||
|
chmod -R 755 /opt/snipe-it
|
||||||
|
|
||||||
|
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
$STD composer update --no-plugins --no-scripts
|
||||||
|
$STD composer install --no-dev --prefer-source --no-plugins --no-scripts
|
||||||
|
|
||||||
|
$STD php artisan key:generate --force
|
||||||
|
msg_ok "Installed SnipeIT"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
|
||||||
|
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /opt/snipe-it/public;
|
||||||
|
server_name $IPADDRESS;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files \$uri \$uri/ /index.php?\$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php\$ {
|
||||||
|
include fastcgi.conf;
|
||||||
|
include snippets/fastcgi-php.conf;
|
||||||
|
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
|
||||||
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Configured Service"
|
||||||
|
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -28,7 +28,7 @@ $STD apt-get install -y \
|
|||||||
make \
|
make \
|
||||||
g++ \
|
g++ \
|
||||||
unpaper \
|
unpaper \
|
||||||
ocrmypdf \
|
qpdf \
|
||||||
poppler-utils
|
poppler-utils
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
|||||||
51
install/the-lounge-install.sh
Normal file
51
install/the-lounge-install.sh
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: kristocopani
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
curl \
|
||||||
|
gpg \
|
||||||
|
wget \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Setting up Node.js Repository"
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
||||||
|
msg_ok "Set up Node.js Repository"
|
||||||
|
|
||||||
|
msg_info "Installing Node.js"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
$STD npm install --global yarn
|
||||||
|
msg_ok "Installed Node.js"
|
||||||
|
|
||||||
|
msg_info "Installing The Lounge"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb
|
||||||
|
$STD dpkg -i ./thelounge_${RELEASE}_all.deb
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
|
msg_ok "Installed The Lounge"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /opt/thelounge_${RELEASE}_all.deb
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
94
install/unbound-install.sh
Normal file
94
install/unbound-install.sh
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2024 community-scripts ORG
|
||||||
|
# Author: wimb0
|
||||||
|
# License: MIT
|
||||||
|
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
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 \
|
||||||
|
sudo \
|
||||||
|
curl \
|
||||||
|
mc
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
msg_info "Installing Unbound"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
unbound \
|
||||||
|
unbound-host
|
||||||
|
msg_info "Installed Unbound"
|
||||||
|
|
||||||
|
cat <<EOF >/etc/unbound/unbound.conf.d/unbound.conf
|
||||||
|
server:
|
||||||
|
interface: 0.0.0.0
|
||||||
|
port: 5335
|
||||||
|
do-ip6: no
|
||||||
|
hide-identity: yes
|
||||||
|
hide-version: yes
|
||||||
|
harden-referral-path: yes
|
||||||
|
cache-min-ttl: 300
|
||||||
|
cache-max-ttl: 14400
|
||||||
|
serve-expired: yes
|
||||||
|
serve-expired-ttl: 3600
|
||||||
|
prefetch: yes
|
||||||
|
prefetch-key: yes
|
||||||
|
target-fetch-policy: "3 2 1 1 1"
|
||||||
|
unwanted-reply-threshold: 10000000
|
||||||
|
rrset-cache-size: 256m
|
||||||
|
msg-cache-size: 128m
|
||||||
|
so-rcvbuf: 1m
|
||||||
|
private-address: 192.168.0.0/16
|
||||||
|
private-address: 169.254.0.0/16
|
||||||
|
private-address: 172.16.0.0/12
|
||||||
|
private-address: 10.0.0.0/8
|
||||||
|
private-address: fd00::/8
|
||||||
|
private-address: fe80::/10
|
||||||
|
access-control: 192.168.0.0/16 allow
|
||||||
|
access-control: 172.16.0.0/12 allow
|
||||||
|
access-control: 10.0.0.0/8 allow
|
||||||
|
access-control: 127.0.0.1/32 allow
|
||||||
|
chroot: ""
|
||||||
|
logfile: /var/log/unbound.log
|
||||||
|
EOF
|
||||||
|
|
||||||
|
touch /var/log/unbound.log
|
||||||
|
chown unbound:unbound /var/log/unbound.log
|
||||||
|
|
||||||
|
systemctl restart unbound
|
||||||
|
msg_ok "Installed Unbound"
|
||||||
|
|
||||||
|
msg_ok "Configuring Logrotate"
|
||||||
|
cat <<EOF >/etc/logrotate.d/unbound
|
||||||
|
/var/log/unbound.log {
|
||||||
|
daily
|
||||||
|
rotate 7
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
sharedscripts
|
||||||
|
create 644
|
||||||
|
postrotate
|
||||||
|
/usr/sbin/unbound-control log_reopen
|
||||||
|
endscript
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl restart logrotate
|
||||||
|
msg_ok "Configured Logrotate"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -28,11 +28,25 @@ $STD apt-get update
|
|||||||
$STD apt-get install -y temurin-17-jre
|
$STD apt-get install -y temurin-17-jre
|
||||||
msg_ok "Installed Eclipse Temurin JRE"
|
msg_ok "Installed Eclipse Temurin JRE"
|
||||||
|
|
||||||
msg_info "Installing MongoDB"
|
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
|
||||||
wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg
|
msg_ok "No AVX Support Detected"
|
||||||
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
|
msg_info "Installing MongoDB 4.2"
|
||||||
$STD apt-get update
|
if ! dpkg -l | grep -q "libssl1.1"; then
|
||||||
$STD apt-get install -y mongodb-org
|
wget -q http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1n-0+deb10u6_amd64.deb
|
||||||
|
$STD dpkg -i libssl1.1_1.1.1n-0+deb10u6_amd64.deb
|
||||||
|
$STD apt-get install -f -y # Fix any broken dependencies
|
||||||
|
fi
|
||||||
|
wget -qO- https://www.mongodb.org/static/pgp/server-4.2.asc | gpg --dearmor > /usr/share/keyrings/mongodb-server-4.2.gpg
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/mongodb-server-4.2.gpg] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" >/etc/apt/sources.list.d/mongodb-org-4.2.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y mongodb-org=4.2.17
|
||||||
|
else
|
||||||
|
msg_info "Installing MongoDB 7.0"
|
||||||
|
wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg
|
||||||
|
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y mongodb-org
|
||||||
|
fi
|
||||||
msg_ok "Installed MongoDB"
|
msg_ok "Installed MongoDB"
|
||||||
|
|
||||||
msg_info "Installing UniFi Network Server"
|
msg_info "Installing UniFi Network Server"
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ cd /opt
|
|||||||
RELEASE=$(curl -s https://dl.vikunja.io/vikunja/ | grep -oP 'href="/vikunja/\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1)
|
RELEASE=$(curl -s https://dl.vikunja.io/vikunja/ | grep -oP 'href="/vikunja/\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1)
|
||||||
wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb"
|
wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb"
|
||||||
$STD dpkg -i vikunja-$RELEASE-amd64.deb
|
$STD dpkg -i vikunja-$RELEASE-amd64.deb
|
||||||
sudo sed -i 's/^ timezone: .*/ timezone: UTC/' /etc/vikunja/config.yml
|
sed -i 's|^ timezone: .*| timezone: UTC|' /etc/vikunja/config.yml
|
||||||
|
sed -i 's|"./vikunja.db"|"/etc/vikunja/vikunja.db"|' /etc/vikunja/config.yml
|
||||||
|
sed -i 's|./files|/etc/vikunja/files|' /etc/vikunja/config.yml
|
||||||
systemctl start vikunja.service
|
systemctl start vikunja.service
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
msg_ok "Installed Vikunja"
|
msg_ok "Installed Vikunja"
|
||||||
|
|||||||
@@ -14,17 +14,19 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
|
mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Zabbix"
|
msg_info "Installing Zabbix"
|
||||||
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
|
cd /tmp
|
||||||
$STD dpkg -i zabbix-release_7.0-1+debian12_all.deb
|
wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
|
||||||
rm zabbix-release_7.0-1+debian12_all.deb
|
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
|
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
|
||||||
|
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
|
||||||
msg_ok "Installed Zabbix"
|
msg_ok "Installed Zabbix"
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
@@ -50,14 +52,15 @@ echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
|
|||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl restart zabbix-server zabbix-agent apache2
|
systemctl restart zabbix-server zabbix-agent2 apache2
|
||||||
systemctl enable -q zabbix-server zabbix-agent apache2
|
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
|
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
@@ -14,33 +14,43 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y curl
|
$STD apt-get install -y \
|
||||||
$STD apt-get install -y sudo
|
curl \
|
||||||
$STD apt-get install -y mc
|
sudo \
|
||||||
|
mc
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Z-Wave JS UI"
|
msg_info "Installing Z-Wave JS UI"
|
||||||
mkdir /opt/zwave-js-ui
|
mkdir -p /opt/zwave-js-ui
|
||||||
|
mkdir -p /opt/zwave_store
|
||||||
cd /opt/zwave-js-ui
|
cd /opt/zwave-js-ui
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
$STD wget https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
wget -q https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip
|
||||||
$STD unzip zwave-js-ui-${RELEASE}-linux.zip
|
unzip -q zwave-js-ui-${RELEASE}-linux.zip
|
||||||
|
cat <<EOF >/opt/.env
|
||||||
|
ZWAVEJS_EXTERNAL_CONFIG=/opt/zwave_store/.config-db
|
||||||
|
STORE_DIR=/opt/zwave_store
|
||||||
|
EOF
|
||||||
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
msg_ok "Installed Z-Wave JS UI"
|
msg_ok "Installed Z-Wave JS UI"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
service_path="/etc/systemd/system/zwave-js-ui.service"
|
cat <<EOF > /etc/systemd/system/zwave-js-ui.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=zwave-js-ui
|
Description=zwave-js-ui
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=root
|
||||||
WorkingDirectory=/opt/zwave-js-ui
|
WorkingDirectory=/opt/zwave-js-ui
|
||||||
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
ExecStart=/opt/zwave-js-ui/zwave-js-ui-linux
|
||||||
|
EnvironmentFile=/opt/.env
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target" >$service_path
|
WantedBy=multi-user.target
|
||||||
systemctl start zwave-js-ui
|
EOF
|
||||||
$STD systemctl enable zwave-js-ui
|
systemctl enable -q --now zwave-js-ui
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5006",
|
"interface_port": 5006,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://actualbudget.org/",
|
"website": "https://actualbudget.org/",
|
||||||
"logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png",
|
"logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/actualbudget.sh",
|
"script": "ct/actualbudget.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,14 @@
|
|||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "After the script finishes, reboot the LXC then run `netbird up` in the LXC console",
|
"text": "After the script finishes, reboot the LXC then run `netbird up` in the LXC console",
|
||||||
"type": "warning"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Execute within the Proxmox shell",
|
"text": "Execute within the Proxmox main shell",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "The script only works in Debian/Ubuntu, not in Alpine!",
|
||||||
"type": "warning"
|
"type": "warning"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3000",
|
"interface_port": 3000,
|
||||||
"documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
|
"documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
|
||||||
"website": "https://adguard.com/en/adguard-home/overview.html",
|
"website": "https://adguard.com/en/adguard-home/overview.html",
|
||||||
"logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/adguard/icon.png",
|
"logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/adguard/icon.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/adguard.sh",
|
"script": "ct/adguard.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3000",
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://adventurelog.app/",
|
"website": "https://adventurelog.app/",
|
||||||
"logo": "https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/documentation/static/img/favicon.png",
|
"logo": "https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/documentation/static/img/favicon.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/adventurelog.sh",
|
"script": "ct/adventurelog.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "7",
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": "8090",
|
"interface_port": 8090,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.ispyconnect.com/",
|
"website": "https://www.ispyconnect.com/",
|
||||||
"logo": "https://ispycontent.azureedge.net/img/ispy2.png?raw=true",
|
"logo": "https://ispycontent.azureedge.net/img/ispy2.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/agentdvr.sh",
|
"script": "ct/agentdvr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "ubuntu",
|
"os": "ubuntu",
|
||||||
"version": "22.04"
|
"version": "22.04"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/alpine.sh",
|
"script": "ct/alpine.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "0.1",
|
"hdd": 0.1,
|
||||||
"os": "alpine",
|
"os": "alpine",
|
||||||
"version": "3.19"
|
"version": "3.19"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apache-cassandra.sh",
|
"script": "ct/apache-cassandra.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5984",
|
"interface_port": 5984,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://couchdb.apache.org/",
|
"website": "https://couchdb.apache.org/",
|
||||||
"logo": "https://couchdb.apache.org/image/couch@2x.png",
|
"logo": "https://couchdb.apache.org/image/couch@2x.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apache-couchdb.sh",
|
"script": "ct/apache-couchdb.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "4096",
|
"ram": 4096,
|
||||||
"hdd": "10",
|
"hdd": 10,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3142",
|
"interface_port": 3142,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
"website": "https://www.unix-ag.uni-kl.de/~bloch/acng/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/apt-cacher-ng.sh",
|
"script": "ct/apt-cacher-ng.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/archivebox.sh",
|
"script": "ct/archivebox.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "6880",
|
"interface_port": 6880,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://aria2.github.io/",
|
"website": "https://aria2.github.io/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/linux.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/aria2.sh",
|
"script": "ct/aria2.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1028",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "13378",
|
"interface_port": 13378,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.audiobookshelf.org/",
|
"website": "https://www.audiobookshelf.org/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/audiobookshelf.sh",
|
"script": "ct/audiobookshelf.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "7474",
|
"interface_port": 7474,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://autobrr.com/",
|
"website": "https://autobrr.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png",
|
"logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/autobrr.sh",
|
"script": "ct/autobrr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "6767",
|
"interface_port": 6767,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.bazarr.media/",
|
"website": "https://www.bazarr.media/",
|
||||||
"logo": "https://www.bazarr.media/assets/img/logo.png",
|
"logo": "https://www.bazarr.media/assets/img/logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bazarr.sh",
|
"script": "ct/bazarr.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "4000",
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://0xerr0r.github.io/blocky/",
|
"website": "https://0xerr0r.github.io/blocky/",
|
||||||
"logo": "https://raw.githubusercontent.com/0xERR0R/blocky/main/docs/blocky.svg",
|
"logo": "https://raw.githubusercontent.com/0xERR0R/blocky/main/docs/blocky.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/blocky.sh",
|
"script": "ct/blocky.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.bookstackapp.com/",
|
"website": "https://www.bookstackapp.com/",
|
||||||
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fassets.stickpng.com%2Fimages%2F6308b74c61b3e2a522f0145e.png&f=1&nofb=1&ipt=7ce7870e5081489216eb3294b735356d1c7ede678f97cadba4392bd96e032170&ipo=images",
|
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fassets.stickpng.com%2Fimages%2F6308b74c61b3e2a522f0145e.png&f=1&nofb=1&ipt=7ce7870e5081489216eb3294b735356d1c7ede678f97cadba4392bd96e032170&ipo=images",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bookstack.sh",
|
"script": "ct/bookstack.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/bunkerweb.sh",
|
"script": "ct/bunkerweb.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": "https://caddyserver.com/docs/",
|
"documentation": "https://caddyserver.com/docs/",
|
||||||
"website": "https://caddyserver.com/",
|
"website": "https://caddyserver.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/caddy.svg",
|
"logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/caddy.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/caddy.sh",
|
"script": "ct/caddy.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8083",
|
"interface_port": 8083,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/janeczku/calibre-web",
|
"website": "https://github.com/janeczku/calibre-web",
|
||||||
"logo": "https://sasquatters.com/media/2017/04/Calibre-web-banner-768x512.jpg",
|
"logo": "https://sasquatters.com/media/2017/04/Calibre-web-banner-768x512.jpg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/calibre-web.sh",
|
"script": "ct/calibre-web.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.casaos.io/",
|
"website": "https://www.casaos.io/",
|
||||||
"logo": "https://wiki.casaos.io/_assets/casaos-no-text.svg",
|
"logo": "https://wiki.casaos.io/_assets/casaos-no-text.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/casaos.sh",
|
"script": "ct/casaos.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5000",
|
"interface_port": 5000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://changedetection.io/",
|
"website": "https://changedetection.io/",
|
||||||
"logo": "https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true",
|
"logo": "https://github.com/dgtlmoon/changedetection.io/blob/master/changedetectionio/static/images/avatar-256x256.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/changedetection.sh",
|
"script": "ct/changedetection.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": "8089",
|
"interface_port": 8089,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://getchannels.com/dvr-server/",
|
"website": "https://getchannels.com/dvr-server/",
|
||||||
"logo": "https://getchannels.com/a/images/channels-logo.svg",
|
"logo": "https://getchannels.com/a/images/channels-logo.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/channels.sh",
|
"script": "ct/channels.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cloudflared.sh",
|
"script": "ct/cloudflared.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "9090",
|
"interface_port": 9090,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://cockpit-project.org/",
|
"website": "https://cockpit-project.org/",
|
||||||
"logo": "https://i0.wp.com/easycode.page/wp-content/uploads/2021/10/cockpit.png?fit=400%2C400&ssl=1",
|
"logo": "https://i0.wp.com/easycode.page/wp-content/uploads/2021/10/cockpit.png?fit=400%2C400&ssl=1",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cockpit.sh",
|
"script": "ct/cockpit.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "misc",
|
"type": "misc",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8680",
|
"interface_port": 8680,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://user-images.githubusercontent.com/674621/71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png",
|
"logo": "https://user-images.githubusercontent.com/674621/71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png",
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Collabora Online",
|
|
||||||
"slug": "collabora-online",
|
|
||||||
"categories": [],
|
|
||||||
"date_created": "2024-09-05",
|
|
||||||
"type": "LXC",
|
|
||||||
"updateable": 1,
|
|
||||||
"privileged": 0,
|
|
||||||
"interface_port": "9980",
|
|
||||||
"documentation": "",
|
|
||||||
"website": "https://www.collaboraonline.com/collabora-online/",
|
|
||||||
"logo": "https://wiki.calculate-linux.org/download_images/original/collabora-logo.png",
|
|
||||||
"description": "Collabora Online is a cloud-based office suite that enables real-time collaboration on documents, spreadsheets, and presentations. It supports multiple formats and integrates with platforms like Nextcloud and SharePoint",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/collabora-online.sh)\"",
|
|
||||||
"resources": {
|
|
||||||
"cpu": "",
|
|
||||||
"ram": "",
|
|
||||||
"hdd": "",
|
|
||||||
"os": "",
|
|
||||||
"version": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "admin",
|
|
||||||
"password": "admin"
|
|
||||||
},
|
|
||||||
"alerts": []
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Collabora Online",
|
|
||||||
"slug": "collabora-online",
|
|
||||||
"categories": [],
|
|
||||||
"date_created": "2024-09-05",
|
|
||||||
"type": "LXC",
|
|
||||||
"updateable": 1,
|
|
||||||
"privileged": 0,
|
|
||||||
"interface_port": "9980",
|
|
||||||
"documentation": "",
|
|
||||||
"website": "https://www.collaboraonline.com/collabora-online/",
|
|
||||||
"logo": "https://wiki.calculate-linux.org/download_images/original/collabora-logo.png",
|
|
||||||
"description": "Collabora Online is a cloud-based office suite that enables real-time collaboration on documents, spreadsheets, and presentations. It supports multiple formats and integrates with platforms like Nextcloud and SharePoint",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/collabora-online.sh)\"",
|
|
||||||
"resources": {
|
|
||||||
"cpu": "",
|
|
||||||
"ram": "",
|
|
||||||
"hdd": "",
|
|
||||||
"os": "",
|
|
||||||
"version": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": "admin",
|
|
||||||
"password": "admin"
|
|
||||||
},
|
|
||||||
"alerts": []
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8082",
|
"interface_port": 8082,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.commafeed.com/",
|
"website": "https://www.commafeed.com/",
|
||||||
"logo": "https://raw.githubusercontent.com/Athou/commafeed/master/commafeed-client/public/app-icon-144.png",
|
"logo": "https://raw.githubusercontent.com/Athou/commafeed/master/commafeed-client/public/app-icon-144.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/commafeed.sh",
|
"script": "ct/commafeed.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "3012",
|
"interface_port": 3012,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/jhuckaby/Cronicle",
|
"website": "https://github.com/jhuckaby/Cronicle",
|
||||||
"logo": "https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true",
|
"logo": "https://github.com/jhuckaby/Cronicle/blob/master/htdocs/images/logo-128.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/cronicle.sh",
|
"script": "ct/cronicle.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8084",
|
"interface_port": 8084,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1",
|
"logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/daemonsync.sh",
|
"script": "ct/daemonsync.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "4000",
|
"interface_port": 4000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://dashy.to/",
|
"website": "https://dashy.to/",
|
||||||
"logo": "https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png",
|
"logo": "https://github.com/Lissy93/dashy/raw/master/public/web-icons/dashy-logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/dashy.sh",
|
"script": "ct/dashy.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "6",
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "vm/debian-vm.sh",
|
"script": "vm/debian-vm.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": null,
|
"os": null,
|
||||||
"version": null
|
"version": null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/debian.sh",
|
"script": "ct/debian.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": true,
|
"privileged": true,
|
||||||
"interface_port": "80",
|
"interface_port": 80,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.phoscon.de/en/conbee2/software#deconz",
|
"website": "https://www.phoscon.de/en/conbee2/software#deconz",
|
||||||
"logo": "https://phoscon.de/img/phoscon-logo128x.svg",
|
"logo": "https://phoscon.de/img/phoscon-logo128x.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/deconz.sh",
|
"script": "ct/deconz.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8112",
|
"interface_port": 8112,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.deluge-torrent.org/",
|
"website": "https://www.deluge-torrent.org/",
|
||||||
"logo": "https://dev.deluge-torrent.org/chrome/common/deluge_logo.png",
|
"logo": "https://dev.deluge-torrent.org/chrome/common/deluge_logo.png",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/deluge.sh",
|
"script": "ct/deluge.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/docker.sh",
|
"script": "ct/docker.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
@@ -29,9 +29,9 @@
|
|||||||
"type": "alpine",
|
"type": "alpine",
|
||||||
"script": "ct/alpine-docker.sh",
|
"script": "ct/alpine-docker.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "2",
|
"hdd": 2,
|
||||||
"os": "alpine",
|
"os": "alpine",
|
||||||
"version": "3.19"
|
"version": "3.19"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5001",
|
"interface_port": 5001,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/louislam/dockge",
|
"website": "https://github.com/louislam/dockge",
|
||||||
"logo": "https://raw.githubusercontent.com/louislam/dockge/master/frontend/public/icon.svg",
|
"logo": "https://raw.githubusercontent.com/louislam/dockge/master/frontend/public/icon.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/dockge.sh",
|
"script": "ct/dockge.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "18",
|
"hdd": 18,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8096",
|
"interface_port": 8096,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://emby.media/",
|
"website": "https://emby.media/",
|
||||||
"logo": "https://github.com/home-assistant/brands/blob/master/core_integrations/emby/icon.png?raw=true",
|
"logo": "https://github.com/home-assistant/brands/blob/master/core_integrations/emby/icon.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/emby.sh",
|
"script": "ct/emby.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "ubuntu",
|
"os": "ubuntu",
|
||||||
"version": "22.04"
|
"version": "22.04"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "18083",
|
"interface_port": 18083,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://www.emqx.io/",
|
"website": "https://www.emqx.io/",
|
||||||
"logo": "https://github.com/hassio-addons/repository/blob/master/emqx/icon.png?raw=true",
|
"logo": "https://github.com/hassio-addons/repository/blob/master/emqx/icon.png?raw=true",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/emqx.sh",
|
"script": "ct/emqx.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8409",
|
"interface_port": 8409,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://ersatztv.org/",
|
"website": "https://ersatztv.org/",
|
||||||
"logo": "https://raw.githubusercontent.com/ErsatzTV/ErsatzTV/main/artwork/ersatztv-logo.svg",
|
"logo": "https://raw.githubusercontent.com/ErsatzTV/ErsatzTV/main/artwork/ersatztv-logo.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/ersatztv.sh",
|
"script": "ct/ersatztv.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "5",
|
"hdd": 5,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "6052",
|
"interface_port": 6052,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://esphome.io/",
|
"website": "https://esphome.io/",
|
||||||
"logo": "https://esphome.io/_static/favicon.ico",
|
"logo": "https://esphome.io/_static/favicon.ico",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/esphome.sh",
|
"script": "ct/esphome.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "7070",
|
"interface_port": 7070,
|
||||||
"documentation": "https://evcc.io/#devices",
|
"documentation": "https://evcc.io/#devices",
|
||||||
"website": "https://evcc.io/en/",
|
"website": "https://evcc.io/en/",
|
||||||
"logo": "https://docs.evcc.io/en/img/logo.svg",
|
"logo": "https://docs.evcc.io/en/img/logo.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/evcc.sh",
|
"script": "ct/evcc.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "1024",
|
"ram": 1024,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "5000",
|
"interface_port": 5000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/revenz/Fenrus",
|
"website": "https://github.com/revenz/Fenrus",
|
||||||
"logo": "https://raw.githubusercontent.com/revenz/Fenrus/master/wwwroot/fenrus.svg",
|
"logo": "https://raw.githubusercontent.com/revenz/Fenrus/master/wwwroot/fenrus.svg",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/fenrus.sh",
|
"script": "ct/fenrus.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "1",
|
"cpu": 1,
|
||||||
"ram": "512",
|
"ram": 512,
|
||||||
"hdd": "4",
|
"hdd": 4,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8083",
|
"interface_port": 8083,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://fhem.de/",
|
"website": "https://fhem.de/",
|
||||||
"logo": "https://avatars.githubusercontent.com/u/45183393?s=100&v=4",
|
"logo": "https://avatars.githubusercontent.com/u/45183393?s=100&v=4",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/fhem.sh",
|
"script": "ct/fhem.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "2",
|
"cpu": 2,
|
||||||
"ram": "2048",
|
"ram": 2048,
|
||||||
"hdd": "8",
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"type": "misc",
|
"type": "misc",
|
||||||
"updateable": false,
|
"updateable": false,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": "8080",
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://filebrowser.org/features",
|
"website": "https://filebrowser.org/features",
|
||||||
"logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/filebrowser.png?raw=true",
|
"logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/filebrowser.png?raw=true",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user