- Quellen fr (SNCF), nl (OVapi), be (GTFS.be), Kacheln für alle 5 Länder - Landesgrenzen für 5 Länder (borders.json), Gitter-Cache für die Prüfung - Echtzeit-Abgleich auch über Haltestellen-ID (FR, NL), über den Bahnhof bei Gleiswechsel - SNCF: Gattung aus der Trip-ID, Zugnummer aus dem Headsign; NL-Linien gekürzt - calendar.txt optional (SNCF hat nur calendar_dates) - OSM je Land zugeschnitten vor pfaedle; beim Zusammenführen je Objekt nur die neueste Version (time-filter) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X48pE4bzjHej8w9HyZXCjb
45 lines
1.9 KiB
Bash
45 lines
1.9 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)
|
||
disk=$(df -Pm . | awk 'NR==2 {print $4}')
|
||
[ "$disk" -ge 40000 ] || echo "WARNUNG: nur ${disk} MB frei – empfohlen sind ~50 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 <<EOF
|
||
|
||
Fertig. Die Karte läuft unter http://$ip:8080
|
||
Der Updater lädt jetzt Kartenkacheln (~9,4 GB), OpenStreetMap und die Fahrpläne von CH, DE, FR,
|
||
NL und BE und berechnet die Streckenverläufe. Beim ersten Start dauert das ca. 1–1,5 Stunden.
|
||
Fortschritt: docker compose logs -f updater
|
||
Echtzeit: API-Key in $(pwd)/.env eintragen, dann docker compose up -d
|
||
EOF
|