#!/usr/bin/env bash # einrichten.sh — läuft IM Container des Homelab-Teils als root (ausrollen.sh ruft es auf). # # Idempotent: Pakete, Dienst-Nutzer mc2, Ordner, Python-Umgebung, systemd-Units. Die Konfiguration # /etc/mc2/homelab.env (MC_PARTNER_URL …) bleibt, wenn es sie schon gibt. set -euo pipefail ZIEL=/opt/mc2 PARTNER="${1:-http://192.168.178.151:9001}" apt-get update -q DEBIAN_FRONTEND=noninteractive apt-get install -y -q python3 python3-venv curl ca-certificates id mc2 >/dev/null 2>&1 || useradd --system --home-dir /var/lib/mc2 --shell /usr/sbin/nologin mc2 install -d -o mc2 -g mc2 -m 750 /var/lib/mc2 install -d -o root -g mc2 -m 750 /etc/mc2 [ -f /etc/mc2/homelab.env ] || printf 'MC_PARTNER_URL=%s\nMC_PARTNER_NAME=Box-Wart\n' "$PARTNER" > /etc/mc2/homelab.env chown root:mc2 /etc/mc2/homelab.env && chmod 640 /etc/mc2/homelab.env python3 -m venv "$ZIEL/backend/.venv" "$ZIEL/backend/.venv/bin/pip" install -q --upgrade pip "$ZIEL/backend/.venv/bin/pip" install -q -r "$ZIEL/backend/requirements.txt" chown -R root:root "$ZIEL" install -m 644 "$ZIEL"/deploy/homelab/mc2-homelab*.service "$ZIEL"/deploy/homelab/mc2-homelab*.timer /etc/systemd/system/ systemctl daemon-reload systemctl enable --now mc2-homelab.service mc2-homelab-steward.service mc2-homelab-morgenmeldung.timer systemctl restart mc2-homelab.service mc2-homelab-steward.service for _ in $(seq 1 20); do curl -sf -m 3 http://127.0.0.1:9001/api/health >/dev/null && break sleep 1 done curl -sf -m 3 http://127.0.0.1:9001/api/health && echo # Das gemeinsame Geheimnis für den Ausführer entsteht beim ersten Abruf (0600, Nutzer mc2). curl -sf -m 5 http://127.0.0.1:9001/api/homelab/ausfuehrer >/dev/null || true echo "✅ Homelab-Teil läuft."