diff --git a/WEB_README.md b/WEB_README.md index 02ef7ab..a721406 100644 --- a/WEB_README.md +++ b/WEB_README.md @@ -47,3 +47,84 @@ Empfohlen für Internet-Betrieb: - HTTPS aktivieren - Upload-Größenlimit setzen - Zugriff absichern (z. B. Basic Auth oder Login) + +## Öffentliches Deployment (HTTPS) + +Beispiel für Ubuntu-Server mit Domain `ics.example.de`. + +### 1) App als Service starten + +`/etc/systemd/system/pdf-to-ics-web.service` + +```ini +[Unit] +Description=PDF to ICS Web +After=network.target + +[Service] +User=www-data +WorkingDirectory=/opt/pdf_to_ics +ExecStart=/opt/pdf_to_ics/.venv/bin/python -m uvicorn web.app:app --host 127.0.0.1 --port 8000 +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target +``` + +Aktivieren: + +```bash +sudo systemctl daemon-reload +sudo systemctl enable --now pdf-to-ics-web +sudo systemctl status pdf-to-ics-web +``` + +### 2) Nginx als Reverse Proxy + +`/etc/nginx/sites-available/pdf-to-ics` + +```nginx +server { + listen 80; + server_name ics.example.de; + + client_max_body_size 10M; + + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +``` + +Aktivieren: + +```bash +sudo ln -s /etc/nginx/sites-available/pdf-to-ics /etc/nginx/sites-enabled/pdf-to-ics +sudo nginx -t +sudo systemctl reload nginx +``` + +### 3) HTTPS mit Let's Encrypt + +```bash +sudo apt-get update +sudo apt-get install -y certbot python3-certbot-nginx +sudo certbot --nginx -d ics.example.de +``` + +Test der Erneuerung: + +```bash +sudo certbot renew --dry-run +``` + +### 4) Mindest-Sicherheit + +- Zugriffe absichern (z. B. Basic Auth oder Login) +- Upload-Limit klein halten (`client_max_body_size`) +- Server und Pakete regelmäßig aktualisieren