EEG Portal - Deployment Guide
Quick Start (Local Development)
# Start with H2 database (default)
docker compose up -d
# Or with PostgreSQL
docker compose --profile postgres up -d
Production Deployment on Hetzner Cloud
1. Server erstellen
- Hetzner Cloud Console öffnen
- Neuen Server erstellen:
- Image: Debian 12
- Größe: CX22 (2 vCPU, 4 GB RAM) - ~€4,59/Monat
- Standort: Falkenstein oder Nürnberg
- SSH-Key: Hochladen (empfohlen)
2. Server vorbereiten
# Auf Server verbinden
ssh root@<server-ip>
# Server-Setup-Skript ausführen
bash setup-server.sh
3. Projekt deployen
# Projekt klonen
git clone <your-repo-url>
cd eeg_portal
# .env erstellen
cp .env.example .env
nano .env # Werte eintragen
# Deploy starten
bash deploy.sh
4. SSL einrichten (optional)
# DNS muss auf Server-IP zeigen
bash setup-ssl.sh your-domain.at
Environment Variables
| Variable |
Beschreibung |
Beispiel |
JWT_SECRET |
JWT-Schlüssel (required) |
super-secret-key-123 |
APP_FRONTEND_URL |
Frontend-URL (required) |
https://eeg-portal.at |
APP_BACKEND_URL |
Backend-URL (required) |
https://eeg-portal.at |
CORS_ORIGINS |
Erlaubte Origins (required) |
https://eeg-portal.at |
POSTGRES_DB |
Datenbank-Name |
eegportal |
POSTGRES_USER |
Datenbank-User |
eeg |
POSTGRES_PASSWORD |
Datenbank-Passwort (required) |
starkes-passwort |
MAIL_HOST |
SMTP-Server |
smtp.gmail.com |
MAIL_PORT |
SMTP-Port |
587 |
MAIL_USERNAME |
SMTP-User |
admin@eeg-portal.at |
MAIL_PASSWORD |
SMTP-Passwort |
app-passwort |
Services
| Service |
Port |
Beschreibung |
| Frontend |
80/443 |
Nginx + Angular |
| Backend |
8080 |
Spring Boot API |
| Database |
5432 |
PostgreSQL 16 |
Nützliche Befehle
# Logs anzeigen
docker compose logs -f
# Nur Backend-Logs
docker compose logs -f backend
# Neustart
docker compose restart
# Update
git pull
docker compose up -d --build
# Backup
docker compose exec db pg_dump -U eeg eegportal > backup.sql
# Restore
docker compose exec -T db psql -U eeg eegportal < backup.sql
Troubleshooting
Datenbank-Verbindung fehlgeschlagen
# Prüfen ob PostgreSQL läuft
docker compose ps db
# Logs anzeigen
docker compose logs db
Backend startet nicht
# Backend-Logs
docker compose logs backend
# Prüfen ob JWT_SECRET gesetzt ist
docker compose exec backend env | grep JWT
SSL-Zertifikat abgelaufen
# Zertifikat erneuern
certbot renew
docker compose restart frontend