mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-13 16:53:27 +01:00
Compare commits
7 Commits
fix/npm-be
...
feat/remov
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f676df1cb | ||
|
|
d6f9cc7b59 | ||
|
|
6fa49fa3d1 | ||
|
|
c0e212d89c | ||
|
|
aae3b8eefe | ||
|
|
aba32f42ee | ||
|
|
83a453a952 |
@@ -403,6 +403,13 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
## 2026-02-09
|
## 2026-02-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- 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))
|
||||||
|
|
||||||
## 2026-02-08
|
## 2026-02-08
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -20,28 +20,9 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
header_info
|
||||||
apk add -q newt
|
$STD apk -U upgrade
|
||||||
fi
|
msg_ok "Updated successfully!"
|
||||||
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,43 +20,32 @@ 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=$(
|
CHOICE=$(msg_menu "Grafana Update Options" \
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
"1" "Check for Grafana Updates" \
|
||||||
"1" "Check for Grafana Updates" \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"3" "Allow only ${LXCIP} for listening")
|
||||||
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
|
||||||
)
|
case $CHOICE in
|
||||||
exit_status=$?
|
1)
|
||||||
if [ $exit_status == 1 ]; then
|
$STD apk -U upgrade
|
||||||
clear
|
msg_ok "Updated successfully!"
|
||||||
exit-script
|
exit
|
||||||
fi
|
;;
|
||||||
header_info
|
2)
|
||||||
case $CHOICE in
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/grafana
|
||||||
1)
|
service grafana restart
|
||||||
$STD apk -U upgrade
|
msg_ok "Allowed listening on all interfaces!"
|
||||||
msg_ok "Updated successfully!"
|
exit
|
||||||
exit
|
;;
|
||||||
;;
|
3)
|
||||||
2)
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/grafana
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/grafana
|
service grafana restart
|
||||||
service grafana restart
|
msg_ok "Allowed listening only on ${LXCIP}!"
|
||||||
msg_ok "Allowed listening on all interfaces!"
|
exit
|
||||||
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,43 +20,32 @@ 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=$(
|
CHOICE=$(msg_menu "Loki Update Options" \
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
"1" "Check for Loki Updates" \
|
||||||
"1" "Check for Loki Updates" \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"3" "Allow only ${LXCIP} for listening")
|
||||||
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
|
||||||
)
|
case $CHOICE in
|
||||||
exit_status=$?
|
1)
|
||||||
if [ $exit_status == 1 ]; then
|
$STD apk -U upgrade
|
||||||
clear
|
msg_ok "Updated successfully!"
|
||||||
exit-script
|
exit
|
||||||
fi
|
;;
|
||||||
header_info
|
2)
|
||||||
case $CHOICE in
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/loki
|
||||||
1)
|
service loki restart
|
||||||
$STD apk -U upgrade
|
msg_ok "Allowed listening on all interfaces!"
|
||||||
msg_ok "Updated successfully!"
|
exit
|
||||||
exit
|
;;
|
||||||
;;
|
3)
|
||||||
2)
|
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=$LXCIP/g" /etc/conf.d/loki
|
||||||
sed -i -e "s/cfg:server.http_addr=.*/cfg:server.http_addr=0.0.0.0/g" /etc/conf.d/loki
|
service loki restart
|
||||||
service loki restart
|
msg_ok "Allowed listening only on ${LXCIP}!"
|
||||||
msg_ok "Allowed listening on all interfaces!"
|
exit
|
||||||
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,33 +24,31 @@ 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
|
|
||||||
apk add -q newt
|
CHOICE=$(msg_menu "Nextcloud Options" \
|
||||||
fi
|
"1" "Update Alpine Packages" \
|
||||||
while true; do
|
"2" "Nextcloud Login Credentials" \
|
||||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
"3" "Renew Self-signed Certificate")
|
||||||
"1" "Nextcloud Login Credentials" ON \
|
|
||||||
"2" "Renew Self-signed Certificate" OFF \
|
case $CHOICE in
|
||||||
3>&1 1>&2 2>&3)
|
1)
|
||||||
exit_status=$?
|
msg_info "Updating Alpine Packages"
|
||||||
if [ $exit_status == 1 ]; then
|
$STD apk -U upgrade
|
||||||
clear
|
msg_ok "Updated Alpine Packages"
|
||||||
exit-script
|
msg_ok "Updated successfully!"
|
||||||
fi
|
exit
|
||||||
header_info
|
;;
|
||||||
case $CHOICE in
|
2)
|
||||||
1)
|
cat nextcloud.creds
|
||||||
cat nextcloud.creds
|
exit
|
||||||
exit
|
;;
|
||||||
;;
|
3)
|
||||||
2)
|
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
|
||||||
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
|
rc-service nginx restart
|
||||||
rc-service nginx restart
|
msg_ok "Renewed self-signed certificate"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,47 +20,36 @@ 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=$(
|
CHOICE=$(msg_menu "Redis Management" \
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Redis Management" --menu "Select option" 11 58 3 \
|
"1" "Update Redis" \
|
||||||
"1" "Update Redis" \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"3" "Allow only ${LXCIP} for listening")
|
||||||
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
|
||||||
)
|
case $CHOICE in
|
||||||
exit_status=$?
|
1)
|
||||||
if [ $exit_status == 1 ]; then
|
msg_info "Updating Redis"
|
||||||
clear
|
apk update && apk upgrade redis
|
||||||
exit-script
|
rc-service redis restart
|
||||||
fi
|
msg_ok "Updated successfully!"
|
||||||
header_info
|
exit
|
||||||
case $CHOICE in
|
;;
|
||||||
1)
|
2)
|
||||||
msg_info "Updating Redis"
|
msg_info "Setting Redis to listen on all interfaces"
|
||||||
apk update && apk upgrade redis
|
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
|
||||||
rc-service redis restart
|
rc-service redis restart
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Redis now listens on all interfaces!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
3)
|
||||||
msg_info "Setting Redis to listen on all interfaces"
|
msg_info "Setting Redis to listen only on ${LXCIP}"
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
|
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/redis.conf
|
||||||
rc-service redis restart
|
rc-service redis restart
|
||||||
msg_ok "Redis now listens on all interfaces!"
|
msg_ok "Redis now listens only on ${LXCIP}!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
3)
|
esac
|
||||||
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,48 +20,37 @@ 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=$(
|
CHOICE=$(msg_menu "Valkey Management" \
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Valkey Management" --menu "Select option" 11 58 3 \
|
"1" "Update Valkey" \
|
||||||
"1" "Update Valkey" \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
"3" "Allow only ${LXCIP} for listening")
|
||||||
"3" "Allow only ${LXCIP} for listening" 3>&2 2>&1 1>&3
|
|
||||||
)
|
case $CHOICE in
|
||||||
exit_status=$?
|
1)
|
||||||
if [ $exit_status == 1 ]; then
|
msg_info "Updating Valkey"
|
||||||
clear
|
apk update && apk upgrade valkey
|
||||||
exit-script
|
rc-service valkey restart
|
||||||
fi
|
msg_ok "Updated Valkey"
|
||||||
header_info
|
msg_ok "Updated successfully!"
|
||||||
case $CHOICE in
|
exit
|
||||||
1)
|
;;
|
||||||
msg_info "Updating Valkey"
|
2)
|
||||||
apk update && apk upgrade valkey
|
msg_info "Setting Valkey to listen on all interfaces"
|
||||||
rc-service valkey restart
|
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf
|
||||||
msg_ok "Updated Valkey"
|
rc-service valkey restart
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Valkey now listens on all interfaces!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
3)
|
||||||
msg_info "Setting Valkey to listen on all interfaces"
|
msg_info "Setting Valkey to listen only on ${LXCIP}"
|
||||||
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf
|
sed -i "s/^bind .*/bind ${LXCIP}/" /etc/valkey/valkey.conf
|
||||||
rc-service valkey restart
|
rc-service valkey restart
|
||||||
msg_ok "Valkey now listens on all interfaces!"
|
msg_ok "Valkey now listens only on ${LXCIP}!"
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
3)
|
esac
|
||||||
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,45 +20,38 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
CHOICE=$(msg_menu "Vaultwarden Update Options" \
|
||||||
apk add -q newt
|
"1" "Update Vaultwarden" \
|
||||||
fi
|
"2" "Reset ADMIN_TOKEN")
|
||||||
while true; do
|
|
||||||
CHOICE=$(
|
case $CHOICE in
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 2 \
|
1)
|
||||||
"1" "Update Vaultwarden" \
|
$STD apk -U upgrade
|
||||||
"2" "Reset ADMIN_TOKEN" 3>&2 2>&1 1>&3
|
rc-service vaultwarden restart -q
|
||||||
)
|
msg_ok "Updated successfully!"
|
||||||
exit_status=$?
|
exit
|
||||||
if [ $exit_status == 1 ]; then
|
;;
|
||||||
clear
|
2)
|
||||||
exit-script
|
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||||
|
msg_warn "Reset ADMIN_TOKEN requires interactive mode, skipping."
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
header_info
|
read -r -s -p "Setup your ADMIN_TOKEN (make it strong): " NEWTOKEN
|
||||||
case $CHOICE in
|
echo ""
|
||||||
1)
|
if [[ -n "$NEWTOKEN" ]]; then
|
||||||
$STD apk -U upgrade
|
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
||||||
rc-service vaultwarden restart -q
|
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||||
msg_ok "Updated successfully!"
|
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
||||||
exit
|
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
||||||
;;
|
else
|
||||||
2)
|
sed -i "s|\"admin_token\": .*|\"admin_token\": \"${TOKEN}\",|" /var/lib/vaultwarden/config.json
|
||||||
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
|
fi
|
||||||
clear
|
rc-service vaultwarden restart -q
|
||||||
exit
|
msg_ok "Admin token updated"
|
||||||
;;
|
fi
|
||||||
esac
|
exit
|
||||||
done
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -20,28 +20,10 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
if ! apk -e info newt >/dev/null 2>&1; then
|
header_info
|
||||||
apk add -q newt
|
$STD apk -U upgrade
|
||||||
fi
|
msg_ok "Updated successfully!"
|
||||||
while true; do
|
exit 0
|
||||||
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,18 +20,10 @@ 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
|
||||||
if [ "$UPD" == "1" ]; then
|
$STD apk -U upgrade
|
||||||
$STD apk -U upgrade
|
msg_ok "Updated successfully!"
|
||||||
msg_ok "Updated successfully!"
|
exit 0
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -23,10 +23,9 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
|
UPD=$(msg_menu "Cronicle Update Options" \
|
||||||
"1" "Update ${APP}" ON \
|
"1" "Update ${APP}" \
|
||||||
"2" "Install ${APP} Worker" OFF \
|
"2" "Install ${APP} Worker")
|
||||||
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,18 +31,27 @@ 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 ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ VERSION 2.x DETECTED" --yesno \
|
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||||
"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
|
msg_warn "Version $APP_VERSION detected. Major version upgrade requires interactive confirmation, skipping."
|
||||||
|
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!"
|
||||||
if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️ FINAL CONFIRMATION" --yesno \
|
msg_warn "Please ensure you have backed up API tokens, custom configurations, and repository settings."
|
||||||
"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
|
echo ""
|
||||||
whiptail --backtitle "Gitea Mirror Update" --title "Update Cancelled" --msgbox "Update process cancelled. Please backup your configuration before proceeding." 8 60
|
read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2
|
||||||
|
if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then
|
||||||
|
msg_info "Update cancelled. Please backup your configuration before proceeding."
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
whiptail --backtitle "Gitea Mirror Update" --title "Proceeding with Update" --msgbox \
|
msg_info "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
|
||||||
"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,12 +27,11 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
UPD=$(msg_menu "Home Assistant Update Options" \
|
||||||
"1" "Update ALL Containers" ON \
|
"1" "Update ALL Containers" \
|
||||||
"2" "Remove ALL Unused Images" OFF \
|
"2" "Remove ALL Unused Images" \
|
||||||
"3" "Install HACS" OFF \
|
"3" "Install HACS" \
|
||||||
"4" "Install FileBrowser" OFF \
|
"4" "Install FileBrowser")
|
||||||
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,21 +29,13 @@ function update_script() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while true; do
|
CHOICE=$(msg_menu "Loki Update Options" \
|
||||||
CHOICE=$(
|
"1" "Update Loki & Promtail" \
|
||||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --menu "Select option" 11 58 3 \
|
"2" "Allow 0.0.0.0 for listening" \
|
||||||
"1" "Update Loki & Promtail" \
|
"3" "Allow only ${LOCAL_IP} for listening")
|
||||||
"2" "Allow 0.0.0.0 for listening" \
|
|
||||||
"3" "Allow only ${LOCAL_IP} for listening" 3>&2 2>&1 1>&3
|
case $CHOICE in
|
||||||
)
|
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
|
||||||
@@ -85,7 +77,6 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,21 +24,9 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
|
setup_meilisearch
|
||||||
"1" "Update Meilisearch" ON \
|
|
||||||
"2" "Update Meilisearch-UI" OFF \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [[ -d /opt/meilisearch-ui ]]; 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
|
||||||
@@ -58,10 +46,11 @@ 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,10 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
|
UPD=$(msg_menu "Node-Red Update Options" \
|
||||||
"1" "Update ${APP}" ON \
|
"1" "Update ${APP}" \
|
||||||
"2" "Install Themes" OFF \
|
"2" "Install Themes")
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
NODE_VERSION="22" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
@@ -49,32 +48,31 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if [ "$UPD" == "2" ]; then
|
if [ "$UPD" == "2" ]; then
|
||||||
THEME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "NODE-RED THEMES" --radiolist --cancel-button Exit-Script "Choose Theme" 15 58 6 \
|
THEME=$(msg_menu "Node-Red Themes" \
|
||||||
"aurora" "" OFF \
|
"midnight-red" "Midnight Red (default)" \
|
||||||
"cobalt2" "" OFF \
|
"aurora" "Aurora" \
|
||||||
"dark" "" OFF \
|
"cobalt2" "Cobalt2" \
|
||||||
"dracula" "" OFF \
|
"dark" "Dark" \
|
||||||
"espresso-libre" "" OFF \
|
"dracula" "Dracula" \
|
||||||
"github-dark" "" OFF \
|
"espresso-libre" "Espresso Libre" \
|
||||||
"github-dark-default" "" OFF \
|
"github-dark" "GitHub Dark" \
|
||||||
"github-dark-dimmed" "" OFF \
|
"github-dark-default" "GitHub Dark Default" \
|
||||||
"midnight-red" "" ON \
|
"github-dark-dimmed" "GitHub Dark Dimmed" \
|
||||||
"monoindustrial" "" OFF \
|
"monoindustrial" "Monoindustrial" \
|
||||||
"monokai" "" OFF \
|
"monokai" "Monokai" \
|
||||||
"monokai-dimmed" "" OFF \
|
"monokai-dimmed" "Monokai Dimmed" \
|
||||||
"noctis" "" OFF \
|
"noctis" "Noctis" \
|
||||||
"oceanic-next" "" OFF \
|
"oceanic-next" "Oceanic Next" \
|
||||||
"oled" "" OFF \
|
"oled" "OLED" \
|
||||||
"one-dark-pro" "" OFF \
|
"one-dark-pro" "One Dark Pro" \
|
||||||
"one-dark-pro-darker" "" OFF \
|
"one-dark-pro-darker" "One Dark Pro Darker" \
|
||||||
"solarized-dark" "" OFF \
|
"solarized-dark" "Solarized Dark" \
|
||||||
"solarized-light" "" OFF \
|
"solarized-light" "Solarized Light" \
|
||||||
"tokyo-night" "" OFF \
|
"tokyo-night" "Tokyo Night" \
|
||||||
"tokyo-night-light" "" OFF \
|
"tokyo-night-light" "Tokyo Night Light" \
|
||||||
"tokyo-night-storm" "" OFF \
|
"tokyo-night-storm" "Tokyo Night Storm" \
|
||||||
"totallyinformation" "" OFF \
|
"totallyinformation" "TotallyInformation" \
|
||||||
"zenburn" "" OFF \
|
"zenburn" "Zenburn")
|
||||||
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,32 +20,21 @@ 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"
|
||||||
|
|
||||||
case "$UPD" in
|
msg_info "Updating Alpine OS"
|
||||||
"1")
|
$STD apk -U upgrade
|
||||||
msg_info "Updating Alpine OS"
|
msg_ok "System updated"
|
||||||
$STD apk -U upgrade
|
|
||||||
msg_ok "System updated"
|
msg_info "Pulling latest NPMplus container image"
|
||||||
exit
|
cd /opt
|
||||||
;;
|
$STD docker compose pull
|
||||||
"2")
|
msg_info "Recreating container"
|
||||||
msg_info "Updating NPMplus Container"
|
$STD docker compose up -d
|
||||||
cd /opt
|
msg_ok "Updated NPMplus container"
|
||||||
msg_info "Pulling latest container image"
|
|
||||||
$STD docker compose pull
|
msg_ok "Updated successfully!"
|
||||||
msg_info "Recreating container"
|
exit
|
||||||
$STD docker compose up -d
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
10
ct/peanut.sh
10
ct/peanut.sh
@@ -30,30 +30,30 @@ function update_script() {
|
|||||||
|
|
||||||
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "peanut" "Brandawg93/PeaNUT"; then
|
if check_for_gh_release "PeaNUT" "Brandawg93/PeaNUT"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop peanut
|
systemctl stop peanut
|
||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PeaNUT" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
|
||||||
|
|
||||||
if ! grep -q '/opt/peanut/entrypoint.mjs' /etc/systemd/system/peanut.service; then
|
if ! grep -q '/opt/peanut/entrypoint.mjs' /etc/systemd/system/peanut.service; then
|
||||||
msg_info "Fixing entrypoint"
|
msg_info "Fixing entrypoint"
|
||||||
cd /opt/peanut
|
cd /opt/peanut
|
||||||
ln -sf .next/standalone/server.js server.js
|
|
||||||
sed -i 's|/opt/peanut/.next/standalone/server.js|/opt/peanut/entrypoint.mjs|' /etc/systemd/system/peanut.service
|
sed -i 's|/opt/peanut/.next/standalone/server.js|/opt/peanut/entrypoint.mjs|' /etc/systemd/system/peanut.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
msg_ok "Fixed entrypoint"
|
msg_ok "Fixed entrypoint"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Updating Peanut"
|
msg_info "Updating PeaNUT"
|
||||||
cd /opt/peanut
|
cd /opt/peanut
|
||||||
$STD pnpm i
|
$STD pnpm i
|
||||||
$STD pnpm run build:local
|
$STD pnpm run build:local
|
||||||
cp -r .next/static .next/standalone/.next/
|
cp -r .next/static .next/standalone/.next/
|
||||||
mkdir -p /opt/peanut/.next/standalone/config
|
mkdir -p /opt/peanut/.next/standalone/config
|
||||||
ln -sf /etc/peanut/settings.yml /opt/peanut/.next/standalone/config/settings.yml
|
ln -sf /etc/peanut/settings.yml /opt/peanut/.next/standalone/config/settings.yml
|
||||||
msg_ok "Updated Peanut"
|
ln -sf .next/standalone/server.js server.js
|
||||||
|
msg_ok "Updated PeaNUT"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start peanut
|
systemctl start peanut
|
||||||
|
|||||||
@@ -29,10 +29,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
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 \
|
UPD=$(msg_menu "Plex Update Options" \
|
||||||
"1" "Update LXC" ON \
|
"1" "Update LXC" \
|
||||||
"2" "Install plexupdate" OFF \
|
"2" "Install plexupdate")
|
||||||
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,12 +27,11 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
|
UPD=$(msg_menu "Home Assistant Update Options" \
|
||||||
"1" "Update system and containers" ON \
|
"1" "Update system and containers" \
|
||||||
"2" "Install HACS" OFF \
|
"2" "Install HACS" \
|
||||||
"3" "Install FileBrowser" OFF \
|
"3" "Install FileBrowser" \
|
||||||
"4" "Remove ALL Unused Images" OFF \
|
"4" "Remove ALL Unused Images")
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ EOF
|
|||||||
cp -rf pnpm-lock.yaml /opt/tracearr/
|
cp -rf pnpm-lock.yaml /opt/tracearr/
|
||||||
cp -rf apps/server/package.json /opt/tracearr/apps/server/
|
cp -rf apps/server/package.json /opt/tracearr/apps/server/
|
||||||
cp -rf apps/server/dist /opt/tracearr/apps/server/dist
|
cp -rf apps/server/dist /opt/tracearr/apps/server/dist
|
||||||
|
cp -rf apps/server/scripts /opt/tracearr/apps/server/scripts
|
||||||
cp -rf apps/web/dist /opt/tracearr/apps/web/dist
|
cp -rf apps/web/dist /opt/tracearr/apps/web/dist
|
||||||
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
|
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
|
||||||
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist
|
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist
|
||||||
|
|||||||
@@ -31,11 +31,9 @@ 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=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 3 \
|
UPD=$(msg_menu "Vaultwarden Update Options" \
|
||||||
"1" "VaultWarden $VAULT" ON \
|
"1" "Update VaultWarden + Web-Vault" \
|
||||||
"2" "Web-Vault $WVRELEASE" OFF \
|
"2" "Set Admin Token")
|
||||||
"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
|
||||||
@@ -59,14 +57,10 @@ 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
|
||||||
@@ -84,16 +78,22 @@ 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" == "3" ]; then
|
if [ "$UPD" == "2" ]; then
|
||||||
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
|
if [[ "${PHS_SILENT:-0}" == "1" ]]; then
|
||||||
if [[ -z "$NEWTOKEN" ]]; then exit; fi
|
msg_warn "Set Admin Token requires interactive mode, skipping."
|
||||||
|
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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ cp -rf pnpm-workspace.yaml /opt/tracearr/
|
|||||||
cp -rf pnpm-lock.yaml /opt/tracearr/
|
cp -rf pnpm-lock.yaml /opt/tracearr/
|
||||||
cp -rf apps/server/package.json /opt/tracearr/apps/server/
|
cp -rf apps/server/package.json /opt/tracearr/apps/server/
|
||||||
cp -rf apps/server/dist /opt/tracearr/apps/server/dist
|
cp -rf apps/server/dist /opt/tracearr/apps/server/dist
|
||||||
|
cp -rf apps/server/scripts /opt/tracearr/apps/server/scripts
|
||||||
cp -rf apps/web/dist /opt/tracearr/apps/web/dist
|
cp -rf apps/web/dist /opt/tracearr/apps/web/dist
|
||||||
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
|
cp -rf packages/shared/package.json /opt/tracearr/packages/shared/
|
||||||
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist
|
cp -rf packages/shared/dist /opt/tracearr/packages/shared/dist
|
||||||
|
|||||||
@@ -3318,6 +3318,68 @@ 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,6 +421,8 @@ 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