#!/bin/bash # SingleChat Systemd Service Installation für ypchat.net # Erstellt einen systemd Service für SingleChat set -e SERVICE_NAME="ypchat" SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" APP_DIR="/opt/ypchat" USER="www-data" GROUP="www-data" echo "==========================================" echo "SingleChat Systemd Service Installation" echo "==========================================" # Prüfe ob als root ausgeführt if [ "$EUID" -ne 0 ]; then echo "FEHLER: Dieses Skript muss als root ausgeführt werden!" echo "Bitte führe aus: sudo ./install-service-ypchat.sh" exit 1 fi # Prüfe ob App-Verzeichnis existiert if [ ! -d "$APP_DIR" ]; then echo "FEHLER: App-Verzeichnis $APP_DIR existiert nicht!" echo "Bitte kopiere die Anwendung nach $APP_DIR oder passe APP_DIR an." exit 1 fi # Prüfe ob .env Datei existiert if [ ! -f "$APP_DIR/.env" ]; then echo "WARNUNG: .env Datei nicht gefunden in $APP_DIR" echo "Erstelle .env Datei..." cat > "$APP_DIR/.env" << EOF NODE_ENV=production PORT=4000 SESSION_SECRET=$(openssl rand -hex 32) EOF chown $USER:$GROUP "$APP_DIR/.env" echo "✓ .env Datei erstellt" fi # Erstelle Service-Datei echo "Erstelle Service-Datei..." cat > "$SERVICE_FILE" << EOF [Unit] Description=SingleChat Node.js Application After=network.target [Service] Type=simple User=$USER Group=$GROUP WorkingDirectory=$APP_DIR Environment="NODE_ENV=production" Environment="PORT=4000" EnvironmentFile=$APP_DIR/.env ExecStart=/usr/bin/node server/index.js Restart=always RestartSec=10 StandardOutput=journal StandardError=journal SyslogIdentifier=ypchat [Install] WantedBy=multi-user.target EOF echo "✓ Service-Datei erstellt: $SERVICE_FILE" # Lade systemd neu echo "Lade systemd neu..." systemctl daemon-reload echo "✓ systemd neu geladen" # Stoppe alten Service falls vorhanden if systemctl is-active --quiet ypchat 2>/dev/null; then echo "Stoppe alten Service..." systemctl stop ypchat echo "✓ Alter Service gestoppt" fi # Aktiviere Service echo "Aktiviere Service..." systemctl enable $SERVICE_NAME echo "✓ Service aktiviert" echo "" echo "==========================================" echo "Service-Installation abgeschlossen!" echo "==========================================" echo "" echo "Verfügbare Befehle:" echo " Start: sudo systemctl start $SERVICE_NAME" echo " Stop: sudo systemctl stop $SERVICE_NAME" echo " Status: sudo systemctl status $SERVICE_NAME" echo " Logs: sudo journalctl -u $SERVICE_NAME -f" echo "" echo "WICHTIG: Starte den Service mit:" echo " sudo systemctl start $SERVICE_NAME" echo ""