Files
pdf_to_ics/WEB_README.md

2.7 KiB
Raw Blame History

🌐 Web-Version (MVP)

Diese Variante stellt den PDF-zu-ICS-Konverter im Browser bereit, damit die Nutzung auch auf mobilen Geräten möglich ist.

Starten

Linux/macOS

./start_web.sh

Windows

Doppelklick auf start_web.cmd

Danach im Browser öffnen:

  • Lokal: http://localhost:8000
  • Im Netzwerk (z. B. Smartphone): http://<IP-des-Rechners>:8000

Funktionen

  • PDF-Datei hochladen
  • Optional Ruhetage ausschließen
  • Optional Urlaub ausschließen
  • ICS-Datei direkt herunterladen

Hinweise für mobile Nutzung

  • Smartphone und Server müssen im gleichen Netzwerk sein (lokaler Betrieb)
  • Bei Internet-Betrieb sollte HTTPS und ein Reverse Proxy (z. B. Nginx) genutzt werden
  • Hochgeladene Dateien werden nur temporär verarbeitet

Technischer Aufbau

  • web/app.py FastAPI-Backend + Upload/Download-Endpunkte
  • web/templates/index.html mobile Web-Oberfläche
  • web/requirements-web.txt Web-spezifische Abhängigkeiten

Produktion (Kurz)

Beispiel mit Uvicorn direkt:

.venv/bin/python -m uvicorn web.app:app --host 0.0.0.0 --port 8000

Empfohlen für Internet-Betrieb:

  • Uvicorn hinter Nginx
  • 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

[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:

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

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:

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

sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d ics.example.de

Test der Erneuerung:

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