install_newt.sh aktualisiert

This commit is contained in:
2025-08-05 23:11:22 +02:00
parent 563e892cec
commit 038e2d2213

View File

@@ -10,17 +10,21 @@ REPO="fosrl/newt"
INSTALL_DIR="/opt/newt" INSTALL_DIR="/opt/newt"
SERVICE_NAME="PVE-MGNT" SERVICE_NAME="PVE-MGNT"
SYMLINK="${INSTALL_DIR}/newt_latest" SYMLINK="${INSTALL_DIR}/newt_latest"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
info() { echo -e "${GREEN}[INFO]${NC} $1"; } info() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1"; }
FORCE=0 MODE="auto"
for arg in "$@"; do for arg in "$@"; do
if [[ "$arg" == "--force" ]]; then case "$arg" in
FORCE=1 --install) MODE="install" ;;
fi --update) MODE="update" ;;
--reinstall|--force) MODE="reinstall" ;;
*) error "Unbekannter Parameter: $arg" && exit 1 ;;
esac
done done
get_latest_version() { get_latest_version() {
@@ -67,26 +71,12 @@ cleanup_old_versions() {
} }
setup_systemd_service() { setup_systemd_service() {
svc="/etc/systemd/system/${SERVICE_NAME}.service" info "🛠️ Erstelle systemd-Dienst ${SERVICE_NAME} ..."
if [ -f "$svc" ] && [ $FORCE -eq 0 ]; then
info "systemd-Dienst ${SERVICE_NAME} existiert bereits. Überspringe Neuanlage."
sudo systemctl restart "$SERVICE_NAME"
info "Dienst ${SERVICE_NAME} neu gestartet."
fi
if [ -f "$svc" ] && [ $FORCE -eq 1 ]; then
info "systemd-Dienst ${SERVICE_NAME} wird wegen --force neu erstellt."
# Dienst noch NICHT stoppen hier!
sudo rm -f "$svc"
fi
# Eingabe erst hier, bevor Dienst gestoppt wird
read -rp "🆔 Bitte gib die Pangolin-ID ein: " PANGOLIN_ID read -rp "🆔 Bitte gib die Pangolin-ID ein: " PANGOLIN_ID
read -rp "🔑 Bitte gib das Secret ein: " PANGOLIN_SECRET read -rp "🔑 Bitte gib das Secret ein: " PANGOLIN_SECRET
read -rp "🌐 Bitte gib den Endpoint (z.B. https://pangolin.domain.de) ein: " PANGOLIN_ENDPOINT read -rp "🌐 Bitte gib den Endpoint (z.B. https://pangolin.domain.de) ein: " PANGOLIN_ENDPOINT
cat <<EOF | sudo tee "$svc" > /dev/null cat <<EOF | sudo tee "$SERVICE_FILE" > /dev/null
[Unit] [Unit]
Description=Newt Client - ${SERVICE_NAME} Description=Newt Client - ${SERVICE_NAME}
After=network.target After=network.target
@@ -100,43 +90,73 @@ RestartSec=5
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
# Dienst jetzt stoppen und neu starten (nur wenn force)
if [ $FORCE -eq 1 ]; then
sudo systemctl stop "$SERVICE_NAME" || true
fi
sudo systemctl daemon-reexec sudo systemctl daemon-reexec
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable "$SERVICE_NAME" sudo systemctl enable "$SERVICE_NAME"
sudo systemctl start "$SERVICE_NAME" sudo systemctl start "$SERVICE_NAME"
info "✅ systemd-Dienst ${SERVICE_NAME} wurde eingerichtet und gestartet."
info "🛠️ systemd-Dienst ${SERVICE_NAME} eingerichtet und gestartet."
} }
main() { perform_install() {
info "🔧 Starte Installation/Update von newt ..." if [ -f "$SERVICE_FILE" ]; then
warn "Dienst ${SERVICE_NAME} existiert bereits. Nutze --reinstall für Neuinstallation."
exit 0
fi
version=$(get_latest_version) version=$(get_latest_version)
version=${version#v} version=${version#v}
info "📦 Neueste Version: ${version}"
download_newt "$version"
cleanup_old_versions
setup_systemd_service
info "🚀 Installation abgeschlossen!"
}
perform_update() {
if [ ! -f "$SERVICE_FILE" ]; then
error "Dienst ${SERVICE_NAME} nicht installiert. Nutze --install oder --reinstall."
exit 1
fi
version=$(get_latest_version)
version=${version#v}
info "📦 Neueste Version: ${version}" info "📦 Neueste Version: ${version}"
if [ -f "${INSTALL_DIR}/newt_${version}" ] && [ $FORCE -eq 0 ]; then if [ -f "${INSTALL_DIR}/newt_${version}" ]; then
info "✅ Version ${version} ist bereits installiert. Kein Update nötig." info "✅ Version ${version} ist bereits installiert. Kein Update nötig."
else else
download_newt "$version" download_newt "$version"
cleanup_old_versions
sudo systemctl restart "$SERVICE_NAME"
info "🔄 Dienst ${SERVICE_NAME} wurde neu gestartet."
fi fi
info "🚀 Update abgeschlossen!"
cleanup_old_versions
setup_systemd_service
info "🔄 Versuche Dienst ${SERVICE_NAME} neu zu starten..."
if sudo systemctl restart "$SERVICE_NAME"; then
info "✅ Dienst ${SERVICE_NAME} erfolgreich neu gestartet."
else
error "❌ Dienst ${SERVICE_NAME} konnte nicht neu gestartet werden!"
fi
info "🚀 Fertig! newt läuft als systemd-Dienst (${SERVICE_NAME})"
} }
main "$@" perform_reinstall() {
version=$(get_latest_version)
version=${version#v}
info "📦 Neueste Version: ${version}"
download_newt "$version"
cleanup_old_versions
sudo systemctl stop "$SERVICE_NAME" || true
sudo rm -f "$SERVICE_FILE" || true
setup_systemd_service
info "🚀 Reinstallation abgeschlossen!"
}
main() {
case "$MODE" in
install) perform_install ;;
update) perform_update ;;
reinstall) perform_reinstall ;;
auto)
if [ -f "$SERVICE_FILE" ]; then
MODE="update"
else
MODE="install"
fi
main # rekursiver Aufruf mit gesetztem MODE
;;
esac
}
main "$@"