#!/usr/bin/env bash # TrainPulse – Installation mit Docker (z. B. in einem Debian-LXC auf Proxmox). Als root: # bash deploy/install.sh # Erneut ausführen = Update (Image neu bauen, Daten und Einstellungen bleiben). set -euo pipefail cd "$(dirname "$0")/.." [ "$(id -u)" = 0 ] || { echo "Bitte als root ausführen" >&2; exit 1; } command -v apt-get >/dev/null || { echo "Nur für Debian/Ubuntu (apt) gedacht" >&2; exit 1; } mem=$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo) disk=$(df -Pm . | awk 'NR==2 {print $4}') [ "$disk" -ge 25000 ] || echo "WARNUNG: nur ${disk} MB frei – empfohlen sind ~30 GB" >&2 [ "$mem" -ge 5500 ] || echo "WARNUNG: nur ${mem} MB RAM – für die Fahrplan-Aufbereitung werden ~6 GB empfohlen" >&2 if ! command -v docker >/dev/null || ! docker compose version >/dev/null 2>&1; then echo "==> Docker installieren (offizielles Skript von get.docker.com)" apt-get update -qq DEBIAN_FRONTEND=noninteractive apt-get install -y -qq curl ca-certificates >/dev/null curl -fsSL https://get.docker.com | sh fi if ! docker run --rm hello-world >/dev/null 2>&1; then cat >&2 <<'EOF' Docker ist installiert, kann aber keine Container starten. In einem Proxmox-LXC: Container herunterfahren, unter Optionen → Features "Nesting" und "keyctl" aktivieren, Container starten, Skript nochmals ausführen. EOF exit 1 fi [ -f .env ] || cp .env.example .env mkdir -p data echo "==> Image bauen und starten (das erste Mal dauert der Bau von pfaedle ein paar Minuten)" docker compose up -d --build ip=$(hostname -I | awk '{print $1}') cat <