38 lines
1.8 KiB
Bash
38 lines
1.8 KiB
Bash
#!/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 Zugriff mit Kopfzeile (0600, Nutzer mc2);
|
|
# die Antwort ist 403, gewollt.
|
|
curl -s -o /dev/null -m 5 -H 'X-MC2-Ausfuehrer: erzeugen' http://127.0.0.1:9001/api/homelab/ausfuehrer/auftrag || true
|
|
echo "✅ Homelab-Teil läuft."
|