Ein Image (pfaedle + pmtiles + Python), zwei Container per compose: web (Port 8080) und updater (stündlich Fahrplan, beim ersten Start Kartenkacheln). install.sh installiert Docker und startet alles. systemd-Dienste entfernt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X48pE4bzjHej8w9HyZXCjb
43 lines
1.7 KiB
Bash
43 lines
1.7 KiB
Bash
#!/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)
|
||
[ "$mem" -ge 3500 ] || echo "WARNUNG: nur ${mem} MB RAM – für die Fahrplan-Aufbereitung werden ~4 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 <<EOF
|
||
|
||
Fertig. Die Karte läuft unter http://$ip:8080
|
||
Der Updater lädt jetzt Kartenkacheln (~1,2 GB) und den Fahrplan und berechnet die
|
||
Streckenverläufe. Bis die ersten Züge erscheinen, dauert es ca. 15 Minuten.
|
||
Fortschritt: docker compose logs -f updater
|
||
Echtzeit: API-Key in $(pwd)/.env eintragen, dann docker compose up -d
|
||
EOF
|