#!/bin/bash
# ============================================================
# Karch Objektservice – Einmalige Einrichtung (wie die anderen Apps)
# Als root auf dem Server ausführen:
#   cd /var/www/html/karch-objektservice && bash install.sh
# ============================================================
set -e
PORT=3030
APPDIR="$(cd "$(dirname "$0")" && pwd)"
SERVICE=karch-objektservice

if ! command -v node >/dev/null; then
  echo "Node.js fehlt – wird installiert …"
  apt-get update && apt-get install -y nodejs
fi
echo "Node-Version: $(node -v)"
echo "App-Verzeichnis: $APPDIR"

if ss -tlnp 2>/dev/null | grep -q ":$PORT "; then
  echo "ACHTUNG: Port $PORT ist schon belegt!"
  echo "In install.sh und der .service-Datei den Port ändern und erneut ausführen."
  exit 1
fi

# systemd-Dienst mit dem tatsächlichen Verzeichnis schreiben
cat > /etc/systemd/system/$SERVICE.service <<UNIT
[Unit]
Description=Karch Objektservice (QR-Zeiterfassung, Objekte, Leistungsnachweise – 3 Rollen)
After=network.target

[Service]
WorkingDirectory=$APPDIR
ExecStart=/usr/bin/env node server.js
Environment=PORT=$PORT
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
UNIT

systemctl daemon-reload
systemctl enable --now $SERVICE
sleep 2
systemctl status $SERVICE --no-pager -l | head -12

echo
echo "============================================================"
echo "Fertig! Der Objektservice läuft dauerhaft (auch nach Neustart)."
echo
echo "Aufruf im Browser:  http://dev2.karch-service.de:$PORT"
echo "  Admin/Büro:   http://dev2.karch-service.de:$PORT/login"
echo "  Mitarbeiter:  http://dev2.karch-service.de:$PORT/m"
echo "  (Kunden bekommen je Objekt einen eigenen Link)"
echo
echo "Erst-Login steht in der Dienst-Ausgabe:  journalctl -u $SERVICE | grep seed"
echo "Falls nicht erreichbar:  ufw allow $PORT  (bzw. Port beim Anbieter freigeben)"
echo "============================================================"
