mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-13 16:53:27 +01:00
Compare commits
2 Commits
feat/remov
...
fix/nginx-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3233b71a67 | ||
|
|
1094c0c57d |
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -28,10 +28,14 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": "admin",
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "On first visit, the setup wizard will guide you to create an admin account and configure ACME email.",
|
||||||
|
"type": "warning"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"text": "Nginx runs on ports 80/443, Nginx UI management interface on port 9000.",
|
"text": "Nginx runs on ports 80/443, Nginx UI management interface on port 9000.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
@@ -39,10 +43,6 @@
|
|||||||
{
|
{
|
||||||
"text": "SSL certificates can be managed automatically with Let's Encrypt integration.",
|
"text": "SSL certificates can be managed automatically with Let's Encrypt integration.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Initial Login data: `cat ~/nginx-ui.creds`",
|
|
||||||
"type": "info"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,29 +30,20 @@ msg_ok "Installed Nginx UI"
|
|||||||
msg_info "Configuring Nginx UI"
|
msg_info "Configuring Nginx UI"
|
||||||
mkdir -p /usr/local/etc/nginx-ui
|
mkdir -p /usr/local/etc/nginx-ui
|
||||||
cat <<EOF >/usr/local/etc/nginx-ui/app.ini
|
cat <<EOF >/usr/local/etc/nginx-ui/app.ini
|
||||||
[server]
|
|
||||||
HttpHost = 0.0.0.0
|
|
||||||
HttpPort = 9000
|
|
||||||
RunMode = release
|
|
||||||
JwtSecret = $(openssl rand -hex 32)
|
|
||||||
|
|
||||||
[nginx]
|
|
||||||
AccessLogPath = /var/log/nginx/access.log
|
|
||||||
ErrorLogPath = /var/log/nginx/error.log
|
|
||||||
ConfigDir = /etc/nginx
|
|
||||||
PIDPath = /run/nginx.pid
|
|
||||||
TestConfigCmd = nginx -t
|
|
||||||
ReloadCmd = nginx -s reload
|
|
||||||
RestartCmd = systemctl restart nginx
|
|
||||||
|
|
||||||
[app]
|
[app]
|
||||||
PageSize = 10
|
PageSize = 10
|
||||||
|
|
||||||
|
[server]
|
||||||
|
Host = 0.0.0.0
|
||||||
|
Port = 9000
|
||||||
|
RunMode = release
|
||||||
|
JwtSecret = $(openssl rand -hex 32)
|
||||||
|
|
||||||
[cert]
|
[cert]
|
||||||
Email =
|
HTTPChallengePort = 9180
|
||||||
CADir =
|
|
||||||
RenewalInterval = 7
|
[terminal]
|
||||||
RecursiveNameservers =
|
StartCmd = login
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Configured Nginx UI"
|
msg_ok "Configured Nginx UI"
|
||||||
|
|
||||||
@@ -78,17 +69,6 @@ EOF
|
|||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
msg_info "Creating Initial Admin User"
|
|
||||||
systemctl start nginx-ui
|
|
||||||
sleep 3
|
|
||||||
systemctl stop nginx-ui
|
|
||||||
sleep 1
|
|
||||||
/usr/local/bin/nginx-ui reset-password --config /usr/local/etc/nginx-ui/app.ini &>/tmp/nginx-ui-reset.log || true
|
|
||||||
ADMIN_PASS=$(grep -oP 'Password: \K\S+' /tmp/nginx-ui-reset.log || echo "admin")
|
|
||||||
echo -e "Nginx-UI Credentials\nUsername: admin\nPassword: $ADMIN_PASS" >~/nginx-ui.creds
|
|
||||||
rm -f /tmp/nginx-ui-reset.log
|
|
||||||
msg_ok "Created Initial Admin User"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl enable -q --now nginx-ui
|
systemctl enable -q --now nginx-ui
|
||||||
rm -rf /etc/nginx/sites-enabled/default
|
rm -rf /etc/nginx/sites-enabled/default
|
||||||
|
|||||||
@@ -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()
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -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