-
Notifications
You must be signed in to change notification settings - Fork 0
Installation und Setup
Diese Seite beschreibt die Einrichtung von ConvoyPlan für lokale Entwicklung und Produktivbetrieb.
| Komponente | Version | Zweck |
|---|---|---|
| Git | aktuell | Repository klonen |
| Docker + Docker Compose Plugin | aktuell | Alle Dienste starten |
| Node.js + npm | 20+ | Frontend-Entwicklung (lokal) |
| Python | 3.12 | Backend-Entwicklung (lokal, optional) |
git clone https://github.com/RettTechSolutions/ConvoyPlan.git
cd ConvoyPlandocker compose up -d --buildBeim ersten Start lädt GraphHopper die konfigurierte OSM-PBF-Datei herunter und baut den Routing-Graphen. Der Standard ist Deutschland (~4 GB). Für lokale Tests empfiehlt sich eine kleinere Region:
# docker-compose.yml
OSM_DOWNLOAD_URL: https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
OSM_FILENAME: berlin-latest.osm.pbfLogs verfolgen:
docker compose logs -f graphhopperGesundheitschecks:
curl http://localhost:8000/health
curl http://localhost:8989/healthcd frontend
npm install
npm run dev| Dienst | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| Swagger UI | http://localhost:8000/docs |
| GraphHopper | http://localhost:8989 |
Beim ersten Start leitet die Anwendung automatisch auf /setup weiter. Der dreistufige Wizard führt durch:
- Superadmin-Account – E-Mail-Adresse und Passwort festlegen.
-
Domain und SSL – Serverdomain (FQDN) eingeben und TLS-Modus wählen:
- Let's Encrypt – automatisches öffentliches Zertifikat
- Eigenes Zertifikat – PEM-Datei hochladen
- Intern – selbstsigniertes Zertifikat für lokale Nutzung
- Abschluss – Caddy wird live neu geladen, danach direkt zur Anmeldung.
Für lokale Entwicklung ohne Caddy:
localhostals Domain undinternalals TLS-Modus wählen.
Eine vollständige Vorlage liegt in .env.example. Die wichtigsten Variablen:
| Variable | Beschreibung |
|---|---|
POSTGRES_USER |
Datenbankbenutzer |
POSTGRES_PASSWORD |
Datenbankpasswort – in Produktion zwingend ändern |
POSTGRES_DB |
Datenbankname |
| Variable | Standard | Beschreibung |
|---|---|---|
DATABASE_URL |
(aus POSTGRES_* zusammengesetzt) | PostgreSQL/PostGIS-Verbindung |
JWT_SECRET |
changeme-in-production |
Signaturschlüssel für JWTs – zwingend ersetzen |
JWT_ALGORITHM |
HS256 |
JWT-Algorithmus |
JWT_EXPIRE_MINUTES |
10080 |
Token-Ablaufzeit in Minuten (7 Tage) |
GRAPHHOPPER_URL |
http://graphhopper:8989 |
URL der Routing-Engine |
CORS_ORIGINS |
* |
Erlaubte CORS-Origins – in Produktion einschränken |
Sicheren JWT-Secret generieren:
openssl rand -hex 32| Variable | Beschreibung |
|---|---|
DOMAIN |
Serverdomain (z. B. convoy.example.com), Standard: localhost
|
ACME_EMAIL |
E-Mail für Let's Encrypt |
CADDY_TLS_CERT |
Pfad zum PEM-Zertifikat (optional, für eigene Zertifikate) |
CADDY_TLS_KEY |
Pfad zum PEM-Schlüssel (optional, für eigene Zertifikate) |
HTTP_PORT |
Externer HTTP-Port, Standard: 80
|
HTTPS_PORT |
Externer HTTPS-Port, Standard: 443
|
| Variable | Standard | Beschreibung |
|---|---|---|
OSM_DOWNLOAD_URL |
https://download.geofabrik.de/europe/germany-latest.osm.pbf |
Download-URL der OSM-PBF-Datei |
OSM_FILENAME |
germany-latest.osm.pbf |
Dateiname im persistenten OSM-Volume |
JAVA_OPTS |
-Xmx2g -Xms512m -XX:+UseG1GC |
JVM-Speicherkonfiguration |
Für große Regionen (Deutschland ~4 GB) mindestens
-Xmx4gempfohlen.
| Variable | Beschreibung |
|---|---|
HERE_TRAFFIC_API_KEY / TOMTOM_TRAFFIC_API_KEY
|
Optionale API-Keys für die Live-Verkehrslage (HERE bzw. TomTom, beide mit kostenlosem Kontingent). Ohne Key bleibt die Funktion inaktiv. Alternativ komfortabler im Admin-Bereich unter „Live-Verkehrslage" hinterlegbar. |
TRAFFIC_FLOW_PROVIDER |
Bevorzugter Anbieter, wenn beide Keys gesetzt sind (Standard: HERE). |
OPENDATA_TRAFFIC_ENABLED |
Offene Baustellenfeeds (MobiData BW, Berlin VIZ) aktivieren/deaktivieren (Standard: true). |
OPENDATA_TRAFFIC_FEEDS |
Kommaseparierte Liste format|url. Formate: mobidata_bw, berlin_viz (GeoJSON) und datex2 (DATEX II v2, z. B. mobilithek-Länderfeeds für bundesweite Abdeckung). |
OPENDATA_TRAFFIC_CLIENT_CERT / OPENDATA_TRAFFIC_CA_CERT
|
Client-Zertifikat bzw. private CA-Kette (PEM) für mTLS-geschützte DATEX-II-Feeds (z. B. mobilithek-Broker). |
📖 Ausführliche Schritt-für-Schritt-Anleitung (Live-Verkehrslage aktivieren, bundesweite mobilithek-Baustellen einrichten, Fehlerbehebung):
docs/verkehrsdaten.mdim Repository.
| Variable | Beschreibung |
|---|---|
UPDATE_CHANNEL |
Fallback-Kanal. stable (Standard) deployt nur veröffentlichte GitHub-Releases; beta verfolgt nummerierte Vorabversionen/Release-Kandidaten (vX.Y.Z-beta.N); nightly verfolgt jeden Commit auf main. Der Schalter im Admin-Bereich (Admin → Software-Update) überschreibt diesen Wert. |
# frontend/.env.local
VITE_WS_HOST=localhost:8000Nach einer Änderung der OSM-Region muss der Graph-Cache neu aufgebaut werden:
docker compose down
docker volume rm convoyplan_gh_graph
docker compose up -d --build# 1. Umgebungsvariablen anpassen
cp .env.example .env
# JWT_SECRET, POSTGRES_PASSWORD, DOMAIN, ACME_EMAIL setzen
# 2. Stack starten
docker compose -f docker-compose.yml up -d --build
# 3. Setup-Wizard aufrufen
open https://<DOMAIN>/setupEine fertige Stack-Konfiguration liegt in portainer-stack.yml. Images werden über Variablen gesetzt; der Setup-Wizard übernimmt die Erstkonfiguration.
-
JWT_SECRETmitopenssl rand -hex 32generieren – nicht in Git versionieren - Datenbankpasswort ändern
-
CORS_ORIGINSauf die produktive Domain einschränken - Persistente Volumes (
postgres_data,caddy_data,cert_uploads) regelmäßig sichern - Für Deutschland genug RAM einplanen (
JAVA_OPTS=-Xmx4g) - GraphHopper-Graph-Cache (
gh_graph) auf schnellem Speicher ablegen
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
uvicorn app.main:app --reloadPostgreSQL/PostGIS und GraphHopper müssen erreichbar sein – am einfachsten weiterhin über Docker Compose.
cd backend
pytestcd frontend
npm install
npm run check
npm run build# Aktuelle Migrationen ausführen
cd backend && alembic upgrade head
# Neue Migration erzeugen
cd backend && alembic revision --autogenerate -m "beschreibung"docker compose up -d --build # Stack starten
docker compose logs -f backend # Backend-Logs anzeigen
docker compose logs -f graphhopper # GraphHopper-Logs anzeigen
docker compose down # Services stoppen
docker compose down -v # Services stoppen inkl. persistenter DatenDas Frontend ist als Progressive Web App konfiguriert und kann im Browser installiert werden. Für native Apps ist Capacitor vorbereitet:
cd frontend
npm run build
npx cap add android # einmalig, alternativ: ios
npx cap sync
npx cap open androidFür iOS wird eine macOS-Umgebung mit Xcode benötigt.
CI-Checks (Backend-Tests, Frontend-Typecheck, Docker-Build) laufen automatisch auf Push und Pull Requests gegen main.
Für ein neues Release den Tag vX.Y.Z setzen – Docker-Images werden dann automatisch zu GHCR gebaut und gepusht und ein GitHub Release wird erstellt. Seit 2026.1.1 folgt die Versionsnummer dem kalenderbasierten Schema YYYY.MASTER.FIX (Jahr.Master-Release.Fix-Release) statt SemVer. Prerelease-Tags (vX.Y.Z-beta.N) bauen zusätzlich :beta-Images und ein GitHub-Prerelease, ohne :latest zu berühren; jeder Push auf main baut außerdem :nightly-Images.
- Der Standardwert
changeme-in-productionfürJWT_SECRETist nur für lokale Entwicklung gedacht. - Die Datenbankzugänge in
docker-compose.ymlsind Entwicklungs-Defaults – in Produktion ändern. - Die Caddy-Admin-API läuft auf Port
:2019und ist nur im Docker-Netzwerk intern erreichbar. - Öffentliche Share-Links sind ohne Login abrufbar – Tokens sollten wie vertrauliche Links behandelt werden.
- Live-Tracking verarbeitet Standortdaten – Zugriff, Aufbewahrung und Löschung organisatorisch regeln.
Start
Einrichtung & Referenz
Bedienung
- Erste Schritte
- Konvoi-Planung
- Fahrzeuge
- Live-Tracking
- Marschbefehl & Export
- Rollen & Berechtigungen
- Teilen
Betrieb & Sicherheit