mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-13 08:43:25 +01:00
Compare commits
2 Commits
fix/koille
...
fix/nginx-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3233b71a67 | ||
|
|
1094c0c57d |
29
CHANGELOG.md
29
CHANGELOG.md
@@ -407,38 +407,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
- Umlautadaptarr: use release appsettings.json instead of hardcoded copy [@MickLesk](https://github.com/MickLesk) ([#11725](https://github.com/community-scripts/ProxmoxVE/pull/11725))
|
|
||||||
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
||||||
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
||||||
|
|
||||||
- #### ✨ New Features
|
|
||||||
|
|
||||||
- remove whiptail from update scripts for unattended update support [@MickLesk](https://github.com/MickLesk) ([#11712](https://github.com/community-scripts/ProxmoxVE/pull/11712))
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- Refactor: FileFlows [@tremor021](https://github.com/tremor021) ([#11108](https://github.com/community-scripts/ProxmoxVE/pull/11108))
|
|
||||||
- Refactor: wger [@MickLesk](https://github.com/MickLesk) ([#11722](https://github.com/community-scripts/ProxmoxVE/pull/11722))
|
|
||||||
- Nginx-UI: better User Handling | ACME [@MickLesk](https://github.com/MickLesk) ([#11715](https://github.com/community-scripts/ProxmoxVE/pull/11715))
|
|
||||||
- NginxProxymanager: use better-sqlite3 [@MickLesk](https://github.com/MickLesk) ([#11708](https://github.com/community-scripts/ProxmoxVE/pull/11708))
|
|
||||||
|
|
||||||
### 💾 Core
|
|
||||||
|
|
||||||
- #### 🔧 Refactor
|
|
||||||
|
|
||||||
- hwaccel: add libmfx-gen1.2 to Intel Arc setup for QSV support [@MickLesk](https://github.com/MickLesk) ([#11707](https://github.com/community-scripts/ProxmoxVE/pull/11707))
|
|
||||||
|
|
||||||
### 🧰 Tools
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- addons: ensure curl is installed before use [@MickLesk](https://github.com/MickLesk) ([#11718](https://github.com/community-scripts/ProxmoxVE/pull/11718))
|
|
||||||
- Netbird (addon): add systemd ordering to start after Docker [@MickLesk](https://github.com/MickLesk) ([#11716](https://github.com/community-scripts/ProxmoxVE/pull/11716))
|
|
||||||
|
|
||||||
### ❔ Uncategorized
|
|
||||||
|
|
||||||
- Bichon: Update website [@tremor021](https://github.com/tremor021) ([#11711](https://github.com/community-scripts/ProxmoxVE/pull/11711))
|
|
||||||
|
|
||||||
## 2026-02-08
|
## 2026-02-08
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -20,9 +20,28 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
$STD apk -U upgrade
|
apk add -q newt
|
||||||
msg_ok "Updated successfully!"
|
fi
|
||||||
|
while true; do
|
||||||
|
CHOICE=$(
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 1 \
|
||||||
|
"1" "Check for Docker Updates" 3>&2 2>&1 1>&3
|
||||||
|
)
|
||||||
|
exit_status=$?
|
||||||
|
if [ $exit_status == 1 ]; then
|
||||||
|
clear
|
||||||
|
exit-script
|
||||||
|
fi
|
||||||
|
header_info
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,32 +20,43 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
|
apk add -q newt
|
||||||
|
fi
|
||||||
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
while true; do
|
||||||
CHOICE=$(msg_menu "Grafana Update Options" \
|
CHOICE=$(
|
||||||
"1" "Check for Grafana Updates" \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"1" "Check for Grafana Updates" \
|
||||||
"3" "Allow only ${LXCIP} for listening")
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
|
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
||||||
case $CHOICE in
|
)
|
||||||
1)
|
exit_status=$?
|
||||||
$STD apk -U upgrade
|
if [ $exit_status == 1 ]; then
|
||||||
msg_ok "Updated successfully!"
|
clear
|
||||||
exit
|
exit-script
|
||||||
;;
|
fi
|
||||||
2)
|
header_info
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/grafana
|
case $CHOICE in
|
||||||
service grafana restart
|
1)
|
||||||
msg_ok "Allowed listening on all interfaces!"
|
$STD apk -U upgrade
|
||||||
exit
|
msg_ok "Updated successfully!"
|
||||||
;;
|
exit
|
||||||
3)
|
;;
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/grafana
|
2)
|
||||||
service grafana restart
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/grafana
|
||||||
msg_ok "Allowed listening only on ${LXCIP}!"
|
service grafana restart
|
||||||
exit
|
msg_ok "Allowed listening on all interfaces!"
|
||||||
;;
|
exit
|
||||||
esac
|
;;
|
||||||
|
3)
|
||||||
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/grafana
|
||||||
|
service grafana restart
|
||||||
|
msg_ok "Allowed listening only on ${LXCIP}!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,32 +20,43 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
|
apk add -q newt
|
||||||
|
fi
|
||||||
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
while true; do
|
||||||
CHOICE=$(msg_menu "Loki Update Options" \
|
CHOICE=$(
|
||||||
"1" "Check for Loki Updates" \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"1" "Check for Loki Updates" \
|
||||||
"3" "Allow only ${LXCIP} for listening")
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
|
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
||||||
case $CHOICE in
|
)
|
||||||
1)
|
exit_status=$?
|
||||||
$STD apk -U upgrade
|
if [ $exit_status == 1 ]; then
|
||||||
msg_ok "Updated successfully!"
|
clear
|
||||||
exit
|
exit-script
|
||||||
;;
|
fi
|
||||||
2)
|
header_info
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/loki
|
case $CHOICE in
|
||||||
service loki restart
|
1)
|
||||||
msg_ok "Allowed listening on all interfaces!"
|
$STD apk -U upgrade
|
||||||
exit
|
msg_ok "Updated successfully!"
|
||||||
;;
|
exit
|
||||||
3)
|
;;
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/loki
|
2)
|
||||||
service loki restart
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/loki
|
||||||
msg_ok "Allowed listening only on ${LXCIP}!"
|
service loki restart
|
||||||
exit
|
msg_ok "Allowed listening on all interfaces!"
|
||||||
;;
|
exit
|
||||||
esac
|
;;
|
||||||
|
3)
|
||||||
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/loki
|
||||||
|
service loki restart
|
||||||
|
msg_ok "Allowed listening only on ${LXCIP}!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,31 +24,33 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
CHOICE=$(msg_menu "Nextcloud Options" \
|
apk add -q newt
|
||||||
"1" "Update Alpine Packages" \
|
fi
|
||||||
"2" "Nextcloud Login Credentials" \
|
while true; do
|
||||||
"3" "Renew Self-signed Certificate")
|
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
||||||
|
"1" "Nextcloud Login Credentials" ON \
|
||||||
case $CHOICE in
|
"2" "Renew Self-signed Certificate" OFF \
|
||||||
1)
|
3>&1 1>&2 2>&3)
|
||||||
msg_info "Updating Alpine Packages"
|
exit_status=$?
|
||||||
$STD apk -U upgrade
|
if [ $exit_status == 1 ]; then
|
||||||
msg_ok "Updated Alpine Packages"
|
clear
|
||||||
msg_ok "Updated successfully!"
|
exit-script
|
||||||
exit
|
fi
|
||||||
;;
|
header_info
|
||||||
2)
|
case $CHOICE in
|
||||||
cat nextcloud.creds
|
1)
|
||||||
exit
|
cat nextcloud.creds
|
||||||
;;
|
exit
|
||||||
3)
|
;;
|
||||||
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt -subj "/C=US/O=Nextcloud/OU=Domain Control Validated/CN=nextcloud.local" >/dev/null 2>&1
|
2)
|
||||||
rc-service nginx restart
|
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nextcloud-selfsigned.key -out /etc/ssl/certs/nextcloud-selfsigned.crt -subj "/C=US/O=Nextcloud/OU=Domain Control Validated/CN=nextcloud.local" >/dev/null 2>&1
|
||||||
msg_ok "Renewed self-signed certificate"
|
rc-service nginx restart
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,36 +20,47 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
|
apk add -q newt
|
||||||
|
fi
|
||||||
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
while true; do
|
||||||
CHOICE=$(msg_menu "Redis Management" \
|
CHOICE=$(
|
||||||
"1" "Update Redis" \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Redis Management" --menu "Select option" 11 58 3 \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"1" "Update Redis" \
|
||||||
"3" "Allow only ${LXCIP} for listening")
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
|
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
||||||
case $CHOICE in
|
)
|
||||||
1)
|
exit_status=$?
|
||||||
msg_info "Updating Redis"
|
if [ $exit_status == 1 ]; then
|
||||||
apk update && apk upgrade redis
|
clear
|
||||||
rc-service redis restart
|
exit-script
|
||||||
msg_ok "Updated successfully!"
|
fi
|
||||||
exit
|
header_info
|
||||||
;;
|
case $CHOICE in
|
||||||
2)
|
1)
|
||||||
msg_info "Setting Redis to listen on all interfaces"
|
msg_info "Updating Redis"
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
|
apk update && apk upgrade redis
|
||||||
rc-service redis restart
|
rc-service redis restart
|
||||||
msg_ok "Redis now listens on all interfaces!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
3)
|
2)
|
||||||
msg_info "Setting Redis to listen only on ${LXCIP}"
|
msg_info "Setting Redis to listen on all interfaces"
|
||||||
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/redis.conf
|
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
|
||||||
rc-service redis restart
|
rc-service redis restart
|
||||||
msg_ok "Redis now listens only on ${LXCIP}!"
|
msg_ok "Redis now listens on all interfaces!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
3)
|
||||||
|
msg_info "Setting Redis to listen only on ${LXCIP}"
|
||||||
|
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/redis.conf
|
||||||
|
rc-service redis restart
|
||||||
|
msg_ok "Redis now listens only on ${LXCIP}!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,37 +20,48 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
|
apk add -q newt
|
||||||
|
fi
|
||||||
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
LXCIP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
while true; do
|
||||||
CHOICE=$(msg_menu "Valkey Management" \
|
CHOICE=$(
|
||||||
"1" "Update Valkey" \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Valkey Management" --menu "Select option" 11 58 3 \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"1" "Update Valkey" \
|
||||||
"3" "Allow only ${LXCIP} for listening")
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
|
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
||||||
case $CHOICE in
|
)
|
||||||
1)
|
exit_status=$?
|
||||||
msg_info "Updating Valkey"
|
if [ $exit_status == 1 ]; then
|
||||||
apk update && apk upgrade valkey
|
clear
|
||||||
rc-service valkey restart
|
exit-script
|
||||||
msg_ok "Updated Valkey"
|
fi
|
||||||
msg_ok "Updated successfully!"
|
header_info
|
||||||
exit
|
case $CHOICE in
|
||||||
;;
|
1)
|
||||||
2)
|
msg_info "Updating Valkey"
|
||||||
msg_info "Setting Valkey to listen on all interfaces"
|
apk update && apk upgrade valkey
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf
|
rc-service valkey restart
|
||||||
rc-service valkey restart
|
msg_ok "Updated Valkey"
|
||||||
msg_ok "Valkey now listens on all interfaces!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
3)
|
2)
|
||||||
msg_info "Setting Valkey to listen only on ${LXCIP}"
|
msg_info "Setting Valkey to listen on all interfaces"
|
||||||
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/valkey/valkey.conf
|
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf
|
||||||
rc-service valkey restart
|
rc-service valkey restart
|
||||||
msg_ok "Valkey now listens only on ${LXCIP}!"
|
msg_ok "Valkey now listens on all interfaces!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
3)
|
||||||
|
msg_info "Setting Valkey to listen only on ${LXCIP}"
|
||||||
|
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/valkey/valkey.conf
|
||||||
|
rc-service valkey restart
|
||||||
|
msg_ok "Valkey now listens only on ${LXCIP}!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,38 +20,45 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
CHOICE=$(msg_menu "Vaultwarden Update Options" \
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
"1" "Update Vaultwarden" \
|
apk add -q newt
|
||||||
"2" "Reset ADMIN_TOKEN")
|
fi
|
||||||
|
while true; do
|
||||||
case $CHOICE in
|
CHOICE=$(
|
||||||
1)
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 2 \
|
||||||
$STD apk -U upgrade
|
"1" "Update Vaultwarden" \
|
||||||
rc-service vaultwarden restart -q
|
"2" "Reset ADMIN_TOKEN" 3>&2 2>&1 1>&3
|
||||||
msg_ok "Updated successfully!"
|
)
|
||||||
exit
|
exit_status=$?
|
||||||
;;
|
if [ $exit_status == 1 ]; then
|
||||||
2)
|
clear
|
||||||
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
exit-script
|
||||||
msg_warn "Reset ADMIN_TOKEN requires interactive mode, skipping."
|
|
||||||
exit
|
|
||||||
fi
|
fi
|
||||||
read -r -s -p "Setup your ADMIN_TOKEN (make it strong): " NEWTOKEN
|
header_info
|
||||||
echo ""
|
case $CHOICE in
|
||||||
if [[ -n "$NEWTOKEN" ]]; then
|
1)
|
||||||
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
$STD apk -U upgrade
|
||||||
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
|
||||||
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
|
||||||
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
|
||||||
else
|
|
||||||
sed -i "s|\"admin_token\": .*|\"admin_token\": \"${TOKEN}\",|" /var/lib/vaultwarden/config.json
|
|
||||||
fi
|
|
||||||
rc-service vaultwarden restart -q
|
rc-service vaultwarden restart -q
|
||||||
msg_ok "Admin token updated"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
exit
|
||||||
exit
|
;;
|
||||||
;;
|
2)
|
||||||
esac
|
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
||||||
|
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
||||||
|
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
||||||
|
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||||
|
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
||||||
|
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
||||||
|
else
|
||||||
|
sed -i "s|\"admin_token\": .*|\"admin_token\": \"${TOKEN}\",|" /var/lib/vaultwarden/config.json
|
||||||
|
fi
|
||||||
|
rc-service vaultwarden restart -q
|
||||||
|
fi
|
||||||
|
clear
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,10 +20,28 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
if ! apk -e info newt >/dev/null 2>&1; then
|
||||||
$STD apk -U upgrade
|
apk add -q newt
|
||||||
msg_ok "Updated successfully!"
|
fi
|
||||||
exit 0
|
while true; do
|
||||||
|
CHOICE=$(
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 1 \
|
||||||
|
"1" "Check for Zigbee2MQTT Updates" 3>&2 2>&1 1>&3
|
||||||
|
)
|
||||||
|
exit_status=$?
|
||||||
|
if [ $exit_status == 1 ]; then
|
||||||
|
clear
|
||||||
|
exit-script
|
||||||
|
fi
|
||||||
|
header_info
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
14
ct/alpine.sh
14
ct/alpine.sh
@@ -20,10 +20,18 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
UPD=$(
|
||||||
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
|
||||||
|
"1" "Check for Alpine Updates" ON \
|
||||||
|
3>&1 1>&2 2>&3
|
||||||
|
)
|
||||||
|
|
||||||
header_info
|
header_info
|
||||||
$STD apk -U upgrade
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_ok "Updated successfully!"
|
$STD apk -U upgrade
|
||||||
exit 0
|
msg_ok "Updated successfully!"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -23,9 +23,10 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
UPD=$(msg_menu "Cronicle Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
|
||||||
"1" "Update ${APP}" \
|
"1" "Update ${APP}" ON \
|
||||||
"2" "Install ${APP} Worker")
|
"2" "Install ${APP} Worker" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
if [[ ! -d /opt/cronicle ]]; then
|
if [[ ! -d /opt/cronicle ]]; then
|
||||||
|
|||||||
@@ -37,12 +37,17 @@ function update_script() {
|
|||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
|
|
||||||
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
|
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
|
||||||
tar -czf "$backup_filename" -C /opt/fileflows Data
|
tar -czf "$backup_filename" -C /opt/fileflows Data
|
||||||
msg_ok "Backup Created"
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
|
msg_info "Updating $APP to latest version"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
||||||
|
$STD unzip -o -d /opt/fileflows "$temp_file"
|
||||||
|
rm -rf "$temp_file"
|
||||||
|
rm -rf "$backup_filename"
|
||||||
|
msg_ok "Updated $APP to latest version"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start fileflows
|
systemctl start fileflows
|
||||||
|
|||||||
@@ -31,27 +31,18 @@ function update_script() {
|
|||||||
|
|
||||||
APP_VERSION=$(grep -o '"version": *"[^"]*"' /opt/gitea-mirror/package.json | cut -d'"' -f4)
|
APP_VERSION=$(grep -o '"version": *"[^"]*"' /opt/gitea-mirror/package.json | cut -d'"' -f4)
|
||||||
if [[ $APP_VERSION =~ ^2\. ]]; then
|
if [[ $APP_VERSION =~ ^2\. ]]; then
|
||||||
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ VERSION 2.x DETECTED" --yesno \
|
||||||
msg_warn "Version $APP_VERSION detected. Major version upgrade requires interactive confirmation, skipping."
|
"WARNING: Version $APP_VERSION detected!\n\nUpdating from version 2.x will CLEAR ALL CONFIGURATION.\n\nThis includes:\n• API tokens\n• User settings\n• Repository configurations\n• All custom settings\n\nDo you want to continue with the update process?" 15 70 --defaultno; then
|
||||||
exit 75
|
|
||||||
fi
|
|
||||||
msg_warn "WARNING: Version $APP_VERSION detected!"
|
|
||||||
msg_warn "Updating from version 2.x will CLEAR ALL CONFIGURATION."
|
|
||||||
msg_warn "This includes: API tokens, User settings, Repository configurations, All custom settings"
|
|
||||||
echo ""
|
|
||||||
read -r -p "Do you want to continue? (y/N): " CONFIRM
|
|
||||||
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
msg_warn "FINAL WARNING: This update WILL clear all configuration!"
|
|
||||||
msg_warn "Please ensure you have backed up API tokens, custom configurations, and repository settings."
|
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ FINAL CONFIRMATION" --yesno \
|
||||||
echo ""
|
"FINAL WARNING: This update WILL clear all configuration!\n\nBEFORE PROCEEDING, please:\n\n• Copy API tokens to a safe location\n• Backup any custom configurations\n• Note down repository settings\n\nThis action CANNOT be undone!" 18 70 --defaultno; then
|
||||||
read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2
|
whiptail --backtitle "Gitea Mirror Update" --title "Update Cancelled" --msgbox "Update process cancelled. Please backup your configuration before proceeding." 8 60
|
||||||
if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then
|
|
||||||
msg_info "Update cancelled. Please backup your configuration before proceeding."
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
msg_info "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
|
whiptail --backtitle "Gitea Mirror Update" --title "Proceeding with Update" --msgbox \
|
||||||
|
"Proceeding with version $APP_VERSION update.\n\nAll configuration will be cleared as warned." 8 50
|
||||||
rm -rf /opt/gitea-mirror
|
rm -rf /opt/gitea-mirror
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,12 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(msg_menu "Home Assistant Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
||||||
"1" "Update ALL Containers" \
|
"1" "Update ALL Containers" ON \
|
||||||
"2" "Remove ALL Unused Images" \
|
"2" "Remove ALL Unused Images" OFF \
|
||||||
"3" "Install HACS" \
|
"3" "Install HACS" OFF \
|
||||||
"4" "Install FileBrowser")
|
"4" "Install FileBrowser" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_info "Updating All Containers"
|
msg_info "Updating All Containers"
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
PHP_VERSION="8.5" PHP_APACHE="YES" setup_php
|
||||||
setup_composer
|
|
||||||
|
|
||||||
msg_info "Creating a backup"
|
msg_info "Creating a backup"
|
||||||
mv /opt/koillection/ /opt/koillection-backup
|
mv /opt/koillection/ /opt/koillection-backup
|
||||||
msg_ok "Backup created"
|
msg_ok "Backup created"
|
||||||
|
|||||||
23
ct/loki.sh
23
ct/loki.sh
@@ -29,13 +29,21 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CHOICE=$(msg_menu "Loki Update Options" \
|
while true; do
|
||||||
"1" "Update Loki & Promtail" \
|
CHOICE=$(
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
||||||
"3" "Allow only ${LOCAL_IP} for listening")
|
"1" "Update Loki & Promtail" \
|
||||||
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
case $CHOICE in
|
"3" "Allow only ${LOCAL_IP} for listening" 3>&2 2>&1 1>&3
|
||||||
1)
|
)
|
||||||
|
exit_status=$?
|
||||||
|
if [ $exit_status == 1 ]; then
|
||||||
|
clear
|
||||||
|
exit-script
|
||||||
|
fi
|
||||||
|
header_info
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
msg_info "Stopping Loki"
|
msg_info "Stopping Loki"
|
||||||
systemctl stop loki
|
systemctl stop loki
|
||||||
if systemctl is-active --quiet promtail 2>/dev/null || dpkg -s promtail >/dev/null 2>&1; then
|
if systemctl is-active --quiet promtail 2>/dev/null || dpkg -s promtail >/dev/null 2>&1; then
|
||||||
@@ -77,6 +85,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,9 +24,21 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
setup_meilisearch
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
|
||||||
|
"1" "Update Meilisearch" ON \
|
||||||
|
"2" "Update Meilisearch-UI" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [[ -d /opt/meilisearch-ui ]]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
|
setup_meilisearch
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPD" == "2" ]; then
|
||||||
|
if [[ ! -d /opt/meilisearch-ui ]]; then
|
||||||
|
msg_error "No Meilisearch-UI Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
if check_for_gh_release "meilisearch-ui" "riccox/meilisearch-ui"; then
|
if check_for_gh_release "meilisearch-ui" "riccox/meilisearch-ui"; then
|
||||||
msg_info "Stopping Meilisearch-UI"
|
msg_info "Stopping Meilisearch-UI"
|
||||||
systemctl stop meilisearch-ui
|
systemctl stop meilisearch-ui
|
||||||
@@ -46,11 +58,10 @@ function update_script() {
|
|||||||
msg_info "Starting Meilisearch-UI"
|
msg_info "Starting Meilisearch-UI"
|
||||||
systemctl start meilisearch-ui
|
systemctl start meilisearch-ui
|
||||||
msg_ok "Started Meilisearch-UI"
|
msg_ok "Started Meilisearch-UI"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
msg_error "This script is currently disabled due to an external issue with the OpenResty APT repository."
|
||||||
|
msg_error "The repository's GPG key uses SHA-1 signatures, which are no longer accepted by Debian as of February 1, 2026."
|
||||||
|
msg_error "The issue is tracked in openresty/openresty#1097"
|
||||||
|
msg_error "For more details, see: https://github.com/community-scripts/ProxmoxVE/issues/11406"
|
||||||
|
exit 1
|
||||||
|
|
||||||
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
|
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
|
||||||
msg_error "Wrong Debian version detected!"
|
msg_error "Wrong Debian version detected!"
|
||||||
msg_error "Please create a snapshot first. You must upgrade your LXC to Debian Trixie before updating. Visit: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
|
msg_error "Please create a snapshot first. You must upgrade your LXC to Debian Trixie before updating. Visit: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
|
||||||
@@ -139,17 +145,15 @@ function update_script() {
|
|||||||
"database": {
|
"database": {
|
||||||
"engine": "knex-native",
|
"engine": "knex-native",
|
||||||
"knex": {
|
"knex": {
|
||||||
"client": "better-sqlite3",
|
"client": "sqlite3",
|
||||||
"connection": {
|
"connection": {
|
||||||
"filename": "/data/database.sqlite"
|
"filename": "/data/database.sqlite"
|
||||||
},
|
}
|
||||||
"useNullAsDefault": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
|
||||||
cd /app
|
cd /app
|
||||||
$STD yarn install --network-timeout 600000
|
$STD yarn install --network-timeout 600000
|
||||||
msg_ok "Initialized Backend"
|
msg_ok "Initialized Backend"
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(msg_menu "Node-Red Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
|
||||||
"1" "Update ${APP}" \
|
"1" "Update ${APP}" ON \
|
||||||
"2" "Install Themes")
|
"2" "Install Themes" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
@@ -48,31 +49,32 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "2" ]; then
|
if [ "$UPD" == "2" ]; then
|
||||||
THEME=$(msg_menu "Node-Red Themes" \
|
THEME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "NODE-RED THEMES" --radiolist --cancel-button Exit-Script "Choose Theme" 15 58 6 \
|
||||||
"midnight-red" "Midnight Red (default)" \
|
"aurora" "" OFF \
|
||||||
"aurora" "Aurora" \
|
"cobalt2" "" OFF \
|
||||||
"cobalt2" "Cobalt2" \
|
"dark" "" OFF \
|
||||||
"dark" "Dark" \
|
"dracula" "" OFF \
|
||||||
"dracula" "Dracula" \
|
"espresso-libre" "" OFF \
|
||||||
"espresso-libre" "Espresso Libre" \
|
"github-dark" "" OFF \
|
||||||
"github-dark" "GitHub Dark" \
|
"github-dark-default" "" OFF \
|
||||||
"github-dark-default" "GitHub Dark Default" \
|
"github-dark-dimmed" "" OFF \
|
||||||
"github-dark-dimmed" "GitHub Dark Dimmed" \
|
"midnight-red" "" ON \
|
||||||
"monoindustrial" "Monoindustrial" \
|
"monoindustrial" "" OFF \
|
||||||
"monokai" "Monokai" \
|
"monokai" "" OFF \
|
||||||
"monokai-dimmed" "Monokai Dimmed" \
|
"monokai-dimmed" "" OFF \
|
||||||
"noctis" "Noctis" \
|
"noctis" "" OFF \
|
||||||
"oceanic-next" "Oceanic Next" \
|
"oceanic-next" "" OFF \
|
||||||
"oled" "OLED" \
|
"oled" "" OFF \
|
||||||
"one-dark-pro" "One Dark Pro" \
|
"one-dark-pro" "" OFF \
|
||||||
"one-dark-pro-darker" "One Dark Pro Darker" \
|
"one-dark-pro-darker" "" OFF \
|
||||||
"solarized-dark" "Solarized Dark" \
|
"solarized-dark" "" OFF \
|
||||||
"solarized-light" "Solarized Light" \
|
"solarized-light" "" OFF \
|
||||||
"tokyo-night" "Tokyo Night" \
|
"tokyo-night" "" OFF \
|
||||||
"tokyo-night-light" "Tokyo Night Light" \
|
"tokyo-night-light" "" OFF \
|
||||||
"tokyo-night-storm" "Tokyo Night Storm" \
|
"tokyo-night-storm" "" OFF \
|
||||||
"totallyinformation" "TotallyInformation" \
|
"totallyinformation" "" OFF \
|
||||||
"zenburn" "Zenburn")
|
"zenburn" "" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
header_info
|
header_info
|
||||||
msg_info "Installing ${THEME} Theme"
|
msg_info "Installing ${THEME} Theme"
|
||||||
cd /root/.node-red
|
cd /root/.node-red
|
||||||
|
|||||||
@@ -20,21 +20,32 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE MODE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 14 60 2 \
|
||||||
|
"1" "Check for Alpine Updates" OFF \
|
||||||
|
"2" "Update NPMplus Docker Container" ON \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|
||||||
msg_info "Updating Alpine OS"
|
case "$UPD" in
|
||||||
$STD apk -U upgrade
|
"1")
|
||||||
msg_ok "System updated"
|
msg_info "Updating Alpine OS"
|
||||||
|
$STD apk -U upgrade
|
||||||
msg_info "Pulling latest NPMplus container image"
|
msg_ok "System updated"
|
||||||
cd /opt
|
exit
|
||||||
$STD docker compose pull
|
;;
|
||||||
msg_info "Recreating container"
|
"2")
|
||||||
$STD docker compose up -d
|
msg_info "Updating NPMplus Container"
|
||||||
msg_ok "Updated NPMplus container"
|
cd /opt
|
||||||
|
msg_info "Pulling latest container image"
|
||||||
msg_ok "Updated successfully!"
|
$STD docker compose pull
|
||||||
exit
|
msg_info "Recreating container"
|
||||||
|
$STD docker compose up -d
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(msg_menu "Plex Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select \nplexupdate info >> https://github.com/mrworf/plexupdate" 10 59 2 \
|
||||||
"1" "Update LXC" \
|
"1" "Update LXC" ON \
|
||||||
"2" "Install plexupdate")
|
"2" "Install plexupdate" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
$STD apt update
|
$STD apt update
|
||||||
|
|||||||
@@ -27,11 +27,12 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(msg_menu "Home Assistant Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
||||||
"1" "Update system and containers" \
|
"1" "Update system and containers" ON \
|
||||||
"2" "Install HACS" \
|
"2" "Install HACS" OFF \
|
||||||
"3" "Install FileBrowser" \
|
"3" "Install FileBrowser" OFF \
|
||||||
"4" "Remove ALL Unused Images")
|
"4" "Remove ALL Unused Images" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
|
|||||||
@@ -33,9 +33,7 @@ function update_script() {
|
|||||||
systemctl stop umlautadaptarr
|
systemctl stop umlautadaptarr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
cp /opt/UmlautAdaptarr/appsettings.json /opt/UmlautAdaptarr/appsettings.json.bak
|
|
||||||
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
||||||
cp /opt/UmlautAdaptarr/appsettings.json.bak /opt/UmlautAdaptarr/appsettings.json
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start umlautadaptarr
|
systemctl start umlautadaptarr
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ function update_script() {
|
|||||||
VAULT=$(get_latest_github_release "dani-garcia/vaultwarden")
|
VAULT=$(get_latest_github_release "dani-garcia/vaultwarden")
|
||||||
WVRELEASE=$(get_latest_github_release "dani-garcia/bw_web_builds")
|
WVRELEASE=$(get_latest_github_release "dani-garcia/bw_web_builds")
|
||||||
|
|
||||||
UPD=$(msg_menu "Vaultwarden Update Options" \
|
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
||||||
"1" "Update VaultWarden + Web-Vault" \
|
"1" "VaultWarden $VAULT" ON \
|
||||||
"2" "Set Admin Token")
|
"2" "Web-Vault $WVRELEASE" OFF \
|
||||||
|
"3" "Set Admin Token" OFF \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
if check_for_gh_release "vaultwarden" "dani-garcia/vaultwarden"; then
|
if check_for_gh_release "vaultwarden" "dani-garcia/vaultwarden"; then
|
||||||
@@ -57,10 +59,14 @@ function update_script() {
|
|||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start vaultwarden
|
systemctl start vaultwarden
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
else
|
else
|
||||||
msg_ok "VaultWarden is already up-to-date"
|
msg_ok "VaultWarden is already up-to-date"
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UPD" == "2" ]; then
|
||||||
if check_for_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds"; then
|
if check_for_gh_release "vaultwarden_webvault" "dani-garcia/bw_web_builds"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop vaultwarden
|
systemctl stop vaultwarden
|
||||||
@@ -78,22 +84,16 @@ function update_script() {
|
|||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start vaultwarden
|
systemctl start vaultwarden
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
else
|
else
|
||||||
msg_ok "Web-Vault is already up-to-date"
|
msg_ok "Web-Vault is already up-to-date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$UPD" == "2" ]; then
|
if [ "$UPD" == "3" ]; then
|
||||||
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
|
||||||
msg_warn "Set Admin Token requires interactive mode, skipping."
|
if [[ -z "$NEWTOKEN" ]]; then exit; fi
|
||||||
exit
|
|
||||||
fi
|
|
||||||
read -r -s -p "Set the ADMIN_TOKEN: " NEWTOKEN
|
|
||||||
echo ""
|
|
||||||
if [[ -n "$NEWTOKEN" ]]; then
|
|
||||||
ensure_dependencies argon2
|
ensure_dependencies argon2
|
||||||
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
|
||||||
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
|
||||||
|
|||||||
64
ct/wger.sh
64
ct/wger.sh
@@ -7,9 +7,9 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="wger"
|
APP="wger"
|
||||||
var_tags="${var_tags:-management;fitness}"
|
var_tags="${var_tags:-management;fitness}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@@ -23,44 +23,38 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
if [[ ! -d /home/wger ]]; then
|
||||||
if [[ ! -d /opt/wger ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/wger-project/wger/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||||
if check_for_gh_release "wger" "wger-project/wger"; then
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop redis-server nginx celery celery-beat wger
|
systemctl stop wger
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up Data"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cp -r /opt/wger/media /opt/wger_media_backup
|
temp_file=$(mktemp)
|
||||||
cp /opt/wger/.env /opt/wger_env_backup
|
curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.gz" -o "$temp_file"
|
||||||
msg_ok "Backed up Data"
|
tar xzf "$temp_file"
|
||||||
|
cp -rf wger-"$RELEASE"/* /home/wger/src
|
||||||
|
cd /home/wger/src
|
||||||
|
$STD pip install -r requirements_prod.txt --ignore-installed
|
||||||
|
$STD pip install -e .
|
||||||
|
$STD python3 manage.py migrate
|
||||||
|
$STD python3 manage.py collectstatic --no-input
|
||||||
|
$STD yarn install
|
||||||
|
$STD yarn build:css:sass
|
||||||
|
rm -rf "$temp_file"
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball"
|
msg_info "Starting Service"
|
||||||
|
systemctl start wger
|
||||||
msg_info "Restoring Data"
|
msg_ok "Started Service"
|
||||||
cp -r /opt/wger_media_backup/. /opt/wger/media
|
msg_ok "Updated successfully!"
|
||||||
cp /opt/wger_env_backup /opt/wger/.env
|
else
|
||||||
rm -rf /opt/wger_media_backup /opt/wger_env_backup
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
|
||||||
msg_ok "Restored Data"
|
|
||||||
|
|
||||||
msg_info "Updating wger"
|
|
||||||
cd /opt/wger
|
|
||||||
set -a && source /opt/wger/.env && set +a
|
|
||||||
export DJANGO_SETTINGS_MODULE=settings.main
|
|
||||||
$STD uv pip install .
|
|
||||||
$STD uv run python manage.py migrate
|
|
||||||
$STD uv run python manage.py collectstatic --no-input
|
|
||||||
msg_ok "Updated wger"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start redis-server nginx celery celery-beat wger
|
|
||||||
msg_ok "Started Services"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
@@ -69,7 +63,7 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@@ -35,10 +35,6 @@
|
|||||||
{
|
{
|
||||||
"text": "The Disk space initially allocated by the script is only a placeholder, as we can't know how much space you will ever need. You should increase it to match your workload.",
|
"text": "The Disk space initially allocated by the script is only a placeholder, as we can't know how much space you will ever need. You should increase it to match your workload.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Please copy your `BICHON_ENCRYPT_PASSWORD` from `/opt/bichon/bichon.env` to a safe place.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated": "2026-02-09T12:16:55Z",
|
"generated": "2026-02-09T06:27:10Z",
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"slug": "2fauth",
|
"slug": "2fauth",
|
||||||
@@ -109,9 +109,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "bentopdf",
|
"slug": "bentopdf",
|
||||||
"repo": "alam00000/bentopdf",
|
"repo": "alam00000/bentopdf",
|
||||||
"version": "v2.2.0",
|
"version": "v2.1.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T07:07:40Z"
|
"date": "2026-02-02T14:30:55Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "beszel",
|
"slug": "beszel",
|
||||||
@@ -284,9 +284,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "domain-monitor",
|
"slug": "domain-monitor",
|
||||||
"repo": "Hosteroid/domain-monitor",
|
"repo": "Hosteroid/domain-monitor",
|
||||||
"version": "v1.1.2",
|
"version": "v1.1.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T06:29:34Z"
|
"date": "2025-11-18T11:32:30Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "donetick",
|
"slug": "donetick",
|
||||||
@@ -1292,9 +1292,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "snowshare",
|
"slug": "snowshare",
|
||||||
"repo": "TuroYT/snowshare",
|
"repo": "TuroYT/snowshare",
|
||||||
"version": "v1.3.3",
|
"version": "v1.2.12",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T10:52:12Z"
|
"date": "2026-01-30T13:35:56Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "sonarr",
|
"slug": "sonarr",
|
||||||
@@ -1523,9 +1523,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "vikunja",
|
"slug": "vikunja",
|
||||||
"repo": "go-vikunja/vikunja",
|
"repo": "go-vikunja/vikunja",
|
||||||
"version": "v1.1.0",
|
"version": "v1.0.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T10:34:29Z"
|
"date": "2026-01-28T11:12:59Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "wallabag",
|
"slug": "wallabag",
|
||||||
|
|||||||
@@ -30,14 +30,10 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "admin@example.com",
|
||||||
"password": null
|
"password": "changeme"
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
|
||||||
"text": "On first launch, a setup wizard will guide you through creating an admin account. There are no default credentials.",
|
|
||||||
"type": "info"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"text": "You can install the specific one certbot you prefer, or you can Running /app/scripts/install-certbot-plugins within the Nginx Proxy Manager (NPM) LXC shell will install many common plugins. Important: This script does not install all Certbot plugins, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages.",
|
"text": "You can install the specific one certbot you prefer, or you can Running /app/scripts/install-certbot-plugins within the Nginx Proxy Manager (NPM) LXC shell will install many common plugins. Important: This script does not install all Certbot plugins, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/wger.sh",
|
"script": "ct/wger.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 1,
|
||||||
"ram": 2048,
|
"ram": 1024,
|
||||||
"hdd": 8,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "13"
|
"version": "13"
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "This LXC also runs Celery and Redis to synchronize workouts and ingredients",
|
"text": "Enable proxy support by uncommenting this line in `/home/wger/src/settings.py` and pointing it to your URL: `# CSRF_TRUSTED_ORIGINS = ['http://127.0.0.1', 'https://my.domain.example.com']`, then restart the service `systemctl restart wger`.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -15,30 +15,31 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt-get install -y \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
|
jq \
|
||||||
imagemagick
|
imagemagick
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_hwaccel
|
setup_hwaccel
|
||||||
|
|
||||||
msg_info "Installing ASP.NET Core Runtime"
|
msg_info "Installing ASP.NET Core Runtime"
|
||||||
setup_deb822_repo \
|
curl -fsSL https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
|
||||||
"microsoft" \
|
$STD dpkg -i packages-microsoft-prod.deb
|
||||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
rm -rf packages-microsoft-prod.deb
|
||||||
"https://packages.microsoft.com/debian/13/prod/" \
|
$STD apt-get update
|
||||||
"trixie"
|
$STD apt-get install -y aspnetcore-runtime-8.0
|
||||||
$STD apt install -y aspnetcore-runtime-8.0
|
|
||||||
msg_ok "Installed ASP.NET Core Runtime"
|
msg_ok "Installed ASP.NET Core Runtime"
|
||||||
|
|
||||||
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
|
|
||||||
|
|
||||||
msg_info "Setup FileFlows"
|
msg_info "Setup FileFlows"
|
||||||
$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
|
$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
|
||||||
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
|
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
|
||||||
cd /opt/fileflows/Server
|
temp_file=$(mktemp)
|
||||||
dotnet FileFlows.Server.dll --systemd install --root true
|
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
||||||
|
$STD unzip -d /opt/fileflows "$temp_file"
|
||||||
|
$STD bash -c "cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true"
|
||||||
systemctl enable -q --now fileflows
|
systemctl enable -q --now fileflows
|
||||||
|
rm -f "$temp_file"
|
||||||
msg_ok "Setup FileFlows"
|
msg_ok "Setup FileFlows"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ PageSize = 10
|
|||||||
Host = 0.0.0.0
|
Host = 0.0.0.0
|
||||||
Port = 9000
|
Port = 9000
|
||||||
RunMode = release
|
RunMode = release
|
||||||
|
JwtSecret = $(openssl rand -hex 32)
|
||||||
|
|
||||||
[cert]
|
[cert]
|
||||||
HTTPChallengePort = 9180
|
HTTPChallengePort = 9180
|
||||||
|
|||||||
@@ -130,11 +130,10 @@ if [ ! -f /app/config/production.json ]; then
|
|||||||
"database": {
|
"database": {
|
||||||
"engine": "knex-native",
|
"engine": "knex-native",
|
||||||
"knex": {
|
"knex": {
|
||||||
"client": "better-sqlite3",
|
"client": "sqlite3",
|
||||||
"connection": {
|
"connection": {
|
||||||
"filename": "/data/database.sqlite"
|
"filename": "/data/database.sqlite"
|
||||||
},
|
}
|
||||||
"useNullAsDefault": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,68 @@ msg_ok "Installed Dependencies"
|
|||||||
|
|
||||||
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
fetch_and_deploy_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr" "prebuild" "latest" "/opt/UmlautAdaptarr" "linux-x64.zip"
|
||||||
|
|
||||||
|
msg_info "Setting up UmlautAdaptarr"
|
||||||
|
cat <<EOF >/opt/UmlautAdaptarr/appsettings.json
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
},
|
||||||
|
"Console": {
|
||||||
|
"TimestampFormat": "yyyy-MM-dd HH:mm:ss::"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
|
"Kestrel": {
|
||||||
|
"Endpoints": {
|
||||||
|
"Http": {
|
||||||
|
"Url": "http://[::]:5005"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Settings": {
|
||||||
|
"UserAgent": "UmlautAdaptarr/1.0",
|
||||||
|
"UmlautAdaptarrApiHost": "https://umlautadaptarr.pcjones.de/api/v1",
|
||||||
|
"IndexerRequestsCacheDurationInMinutes": 12
|
||||||
|
},
|
||||||
|
"Sonarr": [
|
||||||
|
{
|
||||||
|
"Enabled": false,
|
||||||
|
"Name": "Sonarr",
|
||||||
|
"Host": "http://192.168.1.100:8989",
|
||||||
|
"ApiKey": "dein_sonarr_api_key"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Radarr": [
|
||||||
|
{
|
||||||
|
"Enabled": false,
|
||||||
|
"Name": "Radarr",
|
||||||
|
"Host": "http://192.168.1.101:7878",
|
||||||
|
"ApiKey": "dein_radarr_api_key"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Lidarr": [
|
||||||
|
{
|
||||||
|
"Enabled": false,
|
||||||
|
"Host": "http://192.168.1.102:8686",
|
||||||
|
"ApiKey": "dein_lidarr_api_key"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"Readarr": [
|
||||||
|
{
|
||||||
|
"Enabled": false,
|
||||||
|
"Host": "http://192.168.1.103:8787",
|
||||||
|
"ApiKey": "dein_readarr_api_key"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"IpLeakTest": {
|
||||||
|
"Enabled": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
msg_ok "Setup UmlautAdaptarr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/umlautadaptarr.service
|
cat <<EOF >/etc/systemd/system/umlautadaptarr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
|
|||||||
@@ -15,167 +15,92 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt install -y \
|
$STD apt install -y \
|
||||||
build-essential \
|
git \
|
||||||
nginx \
|
apache2 \
|
||||||
redis-server \
|
libapache2-mod-wsgi-py3
|
||||||
libpq-dev
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="sass" setup_nodejs
|
msg_info "Installing Python"
|
||||||
setup_uv
|
$STD apt install -y python3-pip
|
||||||
PG_VERSION="16" setup_postgresql
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
PG_DB_NAME="wger" PG_DB_USER="wger" setup_postgresql_db
|
msg_ok "Installed Python"
|
||||||
fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball"
|
|
||||||
|
NODE_VERSION="22" NODE_MODULE="yarn,sass" setup_nodejs
|
||||||
|
|
||||||
msg_info "Setting up wger"
|
msg_info "Setting up wger"
|
||||||
mkdir -p /opt/wger/{static,media}
|
$STD adduser wger --disabled-password --gecos ""
|
||||||
chmod o+w /opt/wger/media
|
mkdir /home/wger/db
|
||||||
cd /opt/wger
|
touch /home/wger/db/database.sqlite
|
||||||
$STD corepack enable
|
chown :www-data -R /home/wger/db
|
||||||
$STD npm install
|
chmod g+w /home/wger/db /home/wger/db/database.sqlite
|
||||||
$STD npm run build:css:sass
|
mkdir /home/wger/{static,media}
|
||||||
$STD uv venv
|
chmod o+w /home/wger/media
|
||||||
$STD uv pip install . --group docker
|
temp_dir=$(mktemp -d)
|
||||||
SECRET_KEY=$(openssl rand -base64 40)
|
cd "$temp_dir"
|
||||||
cat <<EOF >/opt/wger/.env
|
RELEASE=$(curl -fsSL https://api.github.com/repos/wger-project/wger/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
|
||||||
DJANGO_SETTINGS_MODULE=settings.main
|
curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.gz" -o "$RELEASE.tar.gz"
|
||||||
PYTHONPATH=/opt/wger
|
tar xzf "$RELEASE".tar.gz
|
||||||
|
mv wger-"$RELEASE" /home/wger/src
|
||||||
|
cd /home/wger/src
|
||||||
|
$STD pip install -r requirements_prod.txt --ignore-installed
|
||||||
|
$STD pip install -e .
|
||||||
|
$STD wger create-settings --database-path /home/wger/db/database.sqlite
|
||||||
|
sed -i "s#home/wger/src/media#home/wger/media#g" /home/wger/src/settings.py
|
||||||
|
sed -i "/MEDIA_ROOT = '\/home\/wger\/media'/a STATIC_ROOT = '/home/wger/static'" /home/wger/src/settings.py
|
||||||
|
$STD wger bootstrap
|
||||||
|
$STD python3 manage.py collectstatic
|
||||||
|
rm -rf "$temp_dir"
|
||||||
|
echo "${RELEASE}" >/opt/wger_version.txt
|
||||||
|
msg_ok "Finished setting up wger"
|
||||||
|
|
||||||
DJANGO_DB_ENGINE=django.db.backends.postgresql
|
msg_info "Creating Service"
|
||||||
DJANGO_DB_DATABASE=${PG_DB_NAME}
|
cat <<EOF >/etc/apache2/sites-available/wger.conf
|
||||||
DJANGO_DB_USER=${PG_DB_USER}
|
<Directory /home/wger/src>
|
||||||
DJANGO_DB_PASSWORD=${PG_DB_PASS}
|
<Files wsgi.py>
|
||||||
DJANGO_DB_HOST=localhost
|
Require all granted
|
||||||
DJANGO_DB_PORT=5432
|
</Files>
|
||||||
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
|
</Directory>
|
||||||
|
|
||||||
DJANGO_MEDIA_ROOT=/opt/wger/media
|
<VirtualHost *:80>
|
||||||
DJANGO_STATIC_ROOT=/opt/wger/static
|
WSGIApplicationGroup %{GLOBAL}
|
||||||
DJANGO_STATIC_URL=/static/
|
WSGIDaemonProcess wger python-path=/home/wger/src python-home=/home/wger
|
||||||
|
WSGIProcessGroup wger
|
||||||
|
WSGIScriptAlias / /home/wger/src/wger/wsgi.py
|
||||||
|
WSGIPassAuthorization On
|
||||||
|
|
||||||
ALLOWED_HOSTS=${LOCAL_IP},localhost,127.0.0.1
|
Alias /static/ /home/wger/static/
|
||||||
CSRF_TRUSTED_ORIGINS=http://${LOCAL_IP}:3000
|
<Directory /home/wger/static>
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
USE_X_FORWARDED_HOST=True
|
Alias /media/ /home/wger/media/
|
||||||
SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,http
|
<Directory /home/wger/media>
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache
|
ErrorLog /var/log/apache2/wger-error.log
|
||||||
DJANGO_CACHE_LOCATION=redis://127.0.0.1:6379/1
|
CustomLog /var/log/apache2/wger-access.log combined
|
||||||
DJANGO_CACHE_TIMEOUT=300
|
</VirtualHost>
|
||||||
DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient
|
|
||||||
AXES_CACHE_ALIAS=default
|
|
||||||
|
|
||||||
USE_CELERY=True
|
|
||||||
CELERY_BROKER=redis://127.0.0.1:6379/2
|
|
||||||
CELERY_BACKEND=redis://127.0.0.1:6379/2
|
|
||||||
|
|
||||||
SITE_URL=http://${LOCAL_IP}:3000
|
|
||||||
SECRET_KEY=${SECRET_KEY}
|
|
||||||
EOF
|
EOF
|
||||||
set -a && source /opt/wger/.env && set +a
|
$STD a2dissite 000-default.conf
|
||||||
$STD uv run wger bootstrap
|
$STD a2ensite wger
|
||||||
$STD uv run python manage.py collectstatic --no-input
|
systemctl restart apache2
|
||||||
cat <<EOF | uv run python manage.py shell
|
|
||||||
from django.contrib.auth import get_user_model
|
|
||||||
User = get_user_model()
|
|
||||||
|
|
||||||
user, created = User.objects.get_or_create(
|
|
||||||
username="admin",
|
|
||||||
defaults={"email": "admin@localhost"},
|
|
||||||
)
|
|
||||||
|
|
||||||
if created:
|
|
||||||
user.set_password("${PG_DB_PASS}")
|
|
||||||
user.is_superuser = True
|
|
||||||
user.is_staff = True
|
|
||||||
user.save()
|
|
||||||
EOF
|
|
||||||
msg_ok "Set up wger"
|
|
||||||
msg_info "Creating Config and Services"
|
|
||||||
cat <<EOF >/etc/systemd/system/wger.service
|
cat <<EOF >/etc/systemd/system/wger.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=wger Gunicorn
|
Description=wger Service
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Type=simple
|
||||||
User=root
|
User=root
|
||||||
WorkingDirectory=/opt/wger
|
ExecStart=/usr/local/bin/wger start -a 0.0.0.0 -p 3000
|
||||||
EnvironmentFile=/opt/wger/.env
|
|
||||||
ExecStart=/opt/wger/.venv/bin/gunicorn \
|
|
||||||
--bind 127.0.0.1:8000 \
|
|
||||||
--workers 3 \
|
|
||||||
--threads 2 \
|
|
||||||
--timeout 120 \
|
|
||||||
wger.wsgi:application
|
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >/etc/systemd/system/celery.service
|
systemctl enable -q --now wger
|
||||||
[Unit]
|
msg_ok "Created Service"
|
||||||
Description=wger Celery Worker
|
|
||||||
After=network.target redis-server.service
|
|
||||||
Requires=redis-server.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt/wger
|
|
||||||
EnvironmentFile=/opt/wger/.env
|
|
||||||
ExecStart=/opt/wger/.venv/bin/celery -A wger worker -l info
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
mkdir -p /var/lib/wger/celery
|
|
||||||
chmod 700 /var/lib/wger/celery
|
|
||||||
cat <<EOF >/etc/systemd/system/celery-beat.service
|
|
||||||
[Unit]
|
|
||||||
Description=wger Celery Beat
|
|
||||||
After=network.target redis-server.service
|
|
||||||
Requires=redis-server.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/opt/wger
|
|
||||||
EnvironmentFile=/opt/wger/.env
|
|
||||||
ExecStart=/opt/wger/.venv/bin/celery -A wger beat -l info \
|
|
||||||
--schedule /var/lib/wger/celery/celerybeat-schedule
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
cat <<'EOF' >/etc/nginx/sites-available/wger
|
|
||||||
server {
|
|
||||||
listen 3000;
|
|
||||||
server_name _;
|
|
||||||
|
|
||||||
client_max_body_size 20M;
|
|
||||||
|
|
||||||
location /static/ {
|
|
||||||
alias /opt/wger/static/;
|
|
||||||
expires 30d;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /media/ {
|
|
||||||
alias /opt/wger/media/;
|
|
||||||
}
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://127.0.0.1:8000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_redirect off;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
$STD rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD ln -sf /etc/nginx/sites-available/wger /etc/nginx/sites-enabled/wger
|
|
||||||
systemctl enable -q --now redis-server nginx wger celery celery-beat
|
|
||||||
systemctl restart nginx
|
|
||||||
msg_ok "Created Config and Services"
|
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -3318,68 +3318,6 @@ configure_ssh_settings() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# msg_menu()
|
|
||||||
#
|
|
||||||
# - Displays a numbered menu for update_script() functions
|
|
||||||
# - In silent mode (PHS_SILENT=1): auto-selects the default option
|
|
||||||
# - In interactive mode: shows menu via read with 10s timeout + default fallback
|
|
||||||
# - Usage: CHOICE=$(msg_menu "Title" "tag1" "Description 1" "tag2" "Desc 2" ...)
|
|
||||||
# - The first item is always the default
|
|
||||||
# - Returns the selected tag to stdout
|
|
||||||
# - If no valid selection or timeout, returns the default (first) tag
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
msg_menu() {
|
|
||||||
local title="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Parse items into parallel arrays: tags[] and descriptions[]
|
|
||||||
local -a tags=()
|
|
||||||
local -a descs=()
|
|
||||||
while [[ $# -ge 2 ]]; do
|
|
||||||
tags+=("$1")
|
|
||||||
descs+=("$2")
|
|
||||||
shift 2
|
|
||||||
done
|
|
||||||
|
|
||||||
local default_tag="${tags[0]}"
|
|
||||||
local count=${#tags[@]}
|
|
||||||
|
|
||||||
# Silent mode: return default immediately
|
|
||||||
if [[ -n "${PHS_SILENT+x}" ]] && [[ "${PHS_SILENT}" == "1" ]]; then
|
|
||||||
echo "$default_tag"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Display menu
|
|
||||||
echo ""
|
|
||||||
msg_custom "📋" "${BL}" "${title}"
|
|
||||||
echo ""
|
|
||||||
for i in "${!tags[@]}"; do
|
|
||||||
local marker=" "
|
|
||||||
[[ $i -eq 0 ]] && marker="* "
|
|
||||||
printf "${TAB3}${marker}%s) %s\n" "${tags[$i]}" "${descs[$i]}"
|
|
||||||
done
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
local selection=""
|
|
||||||
read -r -t 10 -p "${TAB3}Select [default=${default_tag}, timeout 10s]: " selection || true
|
|
||||||
|
|
||||||
# Validate selection
|
|
||||||
if [[ -n "$selection" ]]; then
|
|
||||||
for tag in "${tags[@]}"; do
|
|
||||||
if [[ "$selection" == "$tag" ]]; then
|
|
||||||
echo "$selection"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
msg_warn "Invalid selection '${selection}' - using default: ${default_tag}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$default_tag"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# start()
|
# start()
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -3595,7 +3595,6 @@ _setup_intel_arc() {
|
|||||||
$STD apt -y install \
|
$STD apt -y install \
|
||||||
intel-media-va-driver-non-free \
|
intel-media-va-driver-non-free \
|
||||||
intel-opencl-icd \
|
intel-opencl-icd \
|
||||||
libmfx-gen1.2 \
|
|
||||||
vainfo \
|
vainfo \
|
||||||
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
||||||
|
|
||||||
@@ -3622,7 +3621,6 @@ _setup_intel_arc() {
|
|||||||
intel-media-va-driver-non-free \
|
intel-media-va-driver-non-free \
|
||||||
ocl-icd-libopencl1 \
|
ocl-icd-libopencl1 \
|
||||||
libvpl2 \
|
libvpl2 \
|
||||||
libmfx-gen1.2 \
|
|
||||||
vainfo \
|
vainfo \
|
||||||
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -79,24 +79,11 @@ EOF
|
|||||||
header_info
|
header_info
|
||||||
msg "Installing NetBird..."
|
msg "Installing NetBird..."
|
||||||
pct exec "$CTID" -- bash -c '
|
pct exec "$CTID" -- bash -c '
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
apt-get update -qq
|
|
||||||
apt-get install -y curl >/dev/null
|
|
||||||
fi
|
|
||||||
apt install -y ca-certificates gpg &>/dev/null
|
apt install -y ca-certificates gpg &>/dev/null
|
||||||
curl -fsSL "https://pkgs.netbird.io/debian/public.key" | gpg --dearmor >/usr/share/keyrings/netbird-archive-keyring.gpg
|
curl -fsSL "https://pkgs.netbird.io/debian/public.key" | gpg --dearmor >/usr/share/keyrings/netbird-archive-keyring.gpg
|
||||||
echo "deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main" >/etc/apt/sources.list.d/netbird.list
|
echo "deb [signed-by=/usr/share/keyrings/netbird-archive-keyring.gpg] https://pkgs.netbird.io/debian stable main" >/etc/apt/sources.list.d/netbird.list
|
||||||
apt-get update &>/dev/null
|
apt-get update &>/dev/null
|
||||||
apt-get install -y netbird-ui &>/dev/null
|
apt-get install -y netbird-ui &>/dev/null
|
||||||
if systemctl list-unit-files docker.service &>/dev/null; then
|
|
||||||
mkdir -p /etc/systemd/system/netbird.service.d
|
|
||||||
cat <<OVERRIDE >/etc/systemd/system/netbird.service.d/after-docker.conf
|
|
||||||
[Unit]
|
|
||||||
After=docker.service
|
|
||||||
Wants=docker.service
|
|
||||||
OVERRIDE
|
|
||||||
systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
'
|
'
|
||||||
msg "\e[1;32m ✔ Installed NetBird.\e[0m"
|
msg "\e[1;32m ✔ Installed NetBird.\e[0m"
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|||||||
@@ -89,12 +89,6 @@ if ! dig +short pkgs.tailscale.com | grep -qvE "^127\.|^0\.0\.0\.0$"; then
|
|||||||
echo "nameserver 1.1.1.1" >"$ORIG_RESOLV"
|
echo "nameserver 1.1.1.1" >"$ORIG_RESOLV"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
echo "[INFO] curl not found, installing..."
|
|
||||||
apt-get update -qq
|
|
||||||
apt-get install -y curl >/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
curl -fsSL https://pkgs.tailscale.com/stable/${ID}/${VER}.noarmor.gpg \
|
curl -fsSL https://pkgs.tailscale.com/stable/${ID}/${VER}.noarmor.gpg \
|
||||||
| tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
|
| tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/bakito/adguardhome-sync
|
# Source: https://github.com/bakito/adguardhome-sync
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/9001/copyparty
|
# Source: https://github.com/9001/copyparty
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ if [[ -f "$INSTALL_PATH" ]]; then
|
|||||||
read -r update_prompt
|
read -r update_prompt
|
||||||
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
if ! command -v curl &>/dev/null; then $PKG_MANAGER curl &>/dev/null; fi
|
|
||||||
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$TMP_BIN"
|
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$TMP_BIN"
|
||||||
chmod +x "$TMP_BIN"
|
chmod +x "$TMP_BIN"
|
||||||
mv -f "$TMP_BIN" /usr/local/bin/filebrowser
|
mv -f "$TMP_BIN" /usr/local/bin/filebrowser
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ if [ -f "$INSTALL_PATH" ]; then
|
|||||||
read -r -p "Would you like to update ${APP}? (y/N): " update_prompt
|
read -r -p "Would you like to update ${APP}? (y/N): " update_prompt
|
||||||
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
if ! command -v curl &>/dev/null; then $PKG_MANAGER curl &>/dev/null; fi
|
|
||||||
curl -fsSL "https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz" | tar -xzv -C /usr/local/bin &>/dev/null
|
curl -fsSL "https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz" | tar -xzv -C /usr/local/bin &>/dev/null
|
||||||
chmod +x "$INSTALL_PATH"
|
chmod +x "$INSTALL_PATH"
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ IP=$(get_lxc_ip)
|
|||||||
install_glances_debian() {
|
install_glances_debian() {
|
||||||
msg_info "Installing dependencies"
|
msg_info "Installing dependencies"
|
||||||
apt-get update >/dev/null 2>&1
|
apt-get update >/dev/null 2>&1
|
||||||
apt-get install -y gcc lm-sensors wireless-tools curl >/dev/null 2>&1
|
apt-get install -y gcc lm-sensors wireless-tools >/dev/null 2>&1
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Python + uv"
|
msg_info "Setting up Python + uv"
|
||||||
@@ -114,7 +114,7 @@ install_glances_alpine() {
|
|||||||
apk update >/dev/null 2>&1
|
apk update >/dev/null 2>&1
|
||||||
$STD apk add --no-cache \
|
$STD apk add --no-cache \
|
||||||
gcc musl-dev linux-headers python3-dev \
|
gcc musl-dev linux-headers python3-dev \
|
||||||
python3 py3-pip py3-virtualenv lm-sensors wireless-tools curl >/dev/null 2>&1
|
python3 py3-pip py3-virtualenv lm-sensors wireless-tools >/dev/null 2>&1
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Setting up Python + uv"
|
msg_info "Setting up Python + uv"
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/alangrainger/immich-public-proxy
|
# Source: https://github.com/alangrainger/immich-public-proxy
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/CyferShepard/Jellystat
|
# Source: https://github.com/CyferShepard/Jellystat
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/xperimental/nextcloud-exporter
|
# Source: https://github.com/xperimental/nextcloud-exporter
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -51,10 +51,6 @@ function msg_ok() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg_info "Installing ${APP}"
|
msg_info "Installing ${APP}"
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
curl -fsSL "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb" -o $(basename "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb")
|
curl -fsSL "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb" -o $(basename "https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_amd64.deb")
|
||||||
dpkg -i OliveTin_linux_amd64.deb &>/dev/null
|
dpkg -i OliveTin_linux_amd64.deb &>/dev/null
|
||||||
systemctl enable --now OliveTin &>/dev/null
|
systemctl enable --now OliveTin &>/dev/null
|
||||||
|
|||||||
@@ -57,10 +57,6 @@ function msg_ok() { echo -e "${CM} ${GN}${1}${CL}"; }
|
|||||||
function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; }
|
function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; }
|
||||||
|
|
||||||
function check_internet() {
|
function check_internet() {
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
msg_info "Checking Internet connectivity to GitHub"
|
msg_info "Checking Internet connectivity to GitHub"
|
||||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://github.com)
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://github.com)
|
||||||
if [[ "$HTTP_CODE" -ge 200 && "$HTTP_CODE" -lt 400 ]]; then
|
if [[ "$HTTP_CODE" -ge 200 && "$HTTP_CODE" -lt 400 ]]; then
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/eko/pihole-exporter/
|
# Source: https://github.com/eko/pihole-exporter/
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -5,11 +5,6 @@
|
|||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/martabal/qbittorrent-exporter
|
# Source: https://github.com/martabal/qbittorrent-exporter
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
printf "\r\e[2K%b" '\033[93m Setup Source \033[m' >&2
|
|
||||||
apt-get update >/dev/null 2>&1
|
|
||||||
apt-get install -y curl >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ whiptail --backtitle "Proxmox VE Helper Scripts" --title "Webmin Installer" --ye
|
|||||||
|
|
||||||
msg_info "Installing Prerequisites"
|
msg_info "Installing Prerequisites"
|
||||||
apt update &>/dev/null
|
apt update &>/dev/null
|
||||||
apt-get -y install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl unzip shared-mime-info curl &>/dev/null
|
apt-get -y install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl unzip shared-mime-info &>/dev/null
|
||||||
msg_ok "Installed Prerequisites"
|
msg_ok "Installed Prerequisites"
|
||||||
|
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/webmin/webmin/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
LATEST=$(curl -fsSL https://api.github.com/repos/webmin/webmin/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
|
|||||||
@@ -421,8 +421,6 @@ for container in $CHOICE; do
|
|||||||
|
|
||||||
if [ $exit_code -eq 0 ]; then
|
if [ $exit_code -eq 0 ]; then
|
||||||
msg_ok "Updated container $container"
|
msg_ok "Updated container $container"
|
||||||
elif [ $exit_code -eq 75 ]; then
|
|
||||||
echo -e "${YW}[WARN]${CL} Container $container skipped (requires interactive mode)"
|
|
||||||
elif [ "$BACKUP_CHOICE" == "yes" ]; then
|
elif [ "$BACKUP_CHOICE" == "yes" ]; then
|
||||||
msg_info "Restoring LXC from backup"
|
msg_info "Restoring LXC from backup"
|
||||||
pct stop $container
|
pct stop $container
|
||||||
|
|||||||
Reference in New Issue
Block a user