3.5 KiB
3.5 KiB
MYP Frontend Produktions-Deployment
Übersicht
Das Frontend läuft jetzt auf Port 80/443 mit selbstsigniertem Zertifikat über Caddy als Reverse Proxy. Port 3000 wurde komplett entfernt.
Architektur
Internet/LAN → Caddy (Port 80/443) → Next.js Frontend (Port 80) → Backend API (raspberrypi:443)
Deployment
Schnellstart
cd frontend
./deploy-production.sh
Manuelles Deployment
cd frontend
# Container stoppen
docker-compose -f docker-compose.production.yml down
# Neu bauen und starten
docker-compose -f docker-compose.production.yml up --build -d
# Status prüfen
docker-compose -f docker-compose.production.yml ps
# Logs anzeigen
docker-compose -f docker-compose.production.yml logs -f
Konfiguration
SSL-Zertifikate
- Automatisch generiert: Caddy generiert automatisch selbstsignierte Zertifikate
- Speicherort:
./certs/(wird automatisch erstellt) - Konfiguration:
tls internalin der Caddyfile
Ports
- HTTP: Port 80
- HTTPS: Port 443
- Frontend intern: Port 80 (nicht nach außen exponiert)
Backend-Verbindung
- Backend URL:
https://raspberrypi:443 - API Prefix:
/api/*wird an Backend weitergeleitet - Health Check:
/healthwird an Backend weitergeleitet
Dateien
Wichtige Konfigurationsdateien
docker-compose.production.yml- Produktions-Docker-Konfigurationdocker/caddy/Caddyfile- Caddy Reverse Proxy KonfigurationDockerfile- Frontend Container (Port 80)next.config.js- Next.js Konfiguration (SSL entfernt)
Verzeichnisstruktur
frontend/
├── certs/ # SSL-Zertifikate (automatisch generiert)
├── docker/
│ └── caddy/
│ └── Caddyfile # Caddy Konfiguration
├── docker-compose.production.yml # Produktions-Deployment
├── deploy-production.sh # Deployment-Script
├── Dockerfile # Produktions-Container
└── next.config.js # Next.js Konfiguration
Troubleshooting
Container Status prüfen
docker-compose -f docker-compose.production.yml ps
Logs anzeigen
# Alle Logs
docker-compose -f docker-compose.production.yml logs -f
# Nur Frontend
docker-compose -f docker-compose.production.yml logs -f frontend
# Nur Caddy
docker-compose -f docker-compose.production.yml logs -f caddy
SSL-Zertifikate neu generieren
# Container stoppen
docker-compose -f docker-compose.production.yml down
# Caddy Daten löschen
docker volume rm frontend_caddy_data frontend_caddy_config
# Neu starten
docker-compose -f docker-compose.production.yml up --build -d
Container neu bauen
# Alles stoppen und entfernen
docker-compose -f docker-compose.production.yml down --volumes --remove-orphans
# Images entfernen
docker rmi frontend_frontend frontend_caddy
# Neu bauen
docker-compose -f docker-compose.production.yml up --build -d
Sicherheit
HTTPS-Header
Caddy setzt automatisch sichere HTTP-Header:
Strict-Transport-SecurityX-Content-Type-OptionsX-Frame-OptionsReferrer-Policy
Netzwerk-Isolation
- Frontend und Caddy laufen in eigenem Docker-Netzwerk
- Nur Ports 80 und 443 sind nach außen exponiert
- Backend-Verbindung über gesichertes HTTPS
Offline-Betrieb
Das Frontend ist für Offline-Betrieb konfiguriert:
- Keine externen Dependencies zur Laufzeit
- Alle Assets sind im Container enthalten
- Selbstsignierte Zertifikate benötigen keine externe CA