# EEG Portal - Deployment Guide ## Quick Start (Local Development) ```bash # 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 1. Hetzner Cloud Console öffnen 2. 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 ```bash # Auf Server verbinden ssh root@ # Server-Setup-Skript ausführen bash setup-server.sh ``` ### 3. Projekt deployen ```bash # Projekt klonen git clone cd eeg_portal # .env erstellen cp .env.example .env nano .env # Werte eintragen # Deploy starten bash deploy.sh ``` ### 4. SSL einrichten (optional) ```bash # 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 ```bash # 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 ```bash # Prüfen ob PostgreSQL läuft docker compose ps db # Logs anzeigen docker compose logs db ``` ### Backend startet nicht ```bash # Backend-Logs docker compose logs backend # Prüfen ob JWT_SECRET gesetzt ist docker compose exec backend env | grep JWT ``` ### SSL-Zertifikat abgelaufen ```bash # Zertifikat erneuern certbot renew docker compose restart frontend ```