From 1bcaad503a53ce3efc3db3df8886d05dcde30548 Mon Sep 17 00:00:00 2001 From: Bjoern Welker Date: Fri, 30 Jan 2026 08:58:52 +0100 Subject: [PATCH] Update README with deployment and env docs --- README.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 108 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9612e68..bce4aab 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ ## Überblick Dieses Repository enthält: -- **WaWi‑App** (Flask + SQLite) für Artikelverwaltung, Ausbuchen und Verkäufe. -- **Live‑Bestand Ansicht** (`index.html`) die den Bestand aus der WaWi‑API lädt. +- **WaWi‑App** (Flask + SQLite) für Artikelverwaltung, Ausbuchen, Verkäufe und Bestellungen. +- **Live‑Shop‑Ansicht** (`index.html`) lädt Daten aus der WaWi‑App. - **Import‑Script** für Daten aus der ursprünglichen `hellas_bestand.html`. ## Struktur @@ -12,14 +12,14 @@ Dieses Repository enthält: - `wawi/static/` – Styles + Logo - `wawi/hellas.db` – SQLite‑Datenbank (wird automatisch erstellt) - `wawi/import_from_html.py` – Import aus `hellas_bestand.html` -- `index.html` – Live‑Bestand Ansicht (ruft `/wawi/proxy/bestand`) +- `index.html` – Live‑Shop‑Ansicht (ruft `/wawi/proxy/bestand`) ## WaWi lokal starten ```bash cd wawi python3 -m venv .venv source .venv/bin/activate -pip install flask +pip install flask gunicorn python app.py ``` Standardzugriff: Login über Benutzerverwaltung (siehe unten). @@ -38,19 +38,115 @@ cd wawi python import_from_html.py /pfad/zu/hellas_bestand.html --truncate ``` -## Live‑Bestand Ansicht (index.html) +## Live‑Shop‑Ansicht (index.html) `index.html` lädt den Bestand aus der WaWi‑App: - API‑Proxy: `/wawi/proxy/bestand` Wenn du diese Datei auf einem Webserver auslieferst, stelle sicher, dass die WaWi‑App unter `/wawi` erreichbar ist. -## Deployment (Kurz) +## Umgebungsvariablen (ENV) +**Pflicht/Empfohlen für Produktion** +- `SECRET_KEY` – Session‑Secret +- `APP_USER` / `APP_PASSWORD` – initialer Admin‑User +- `URL_PREFIX` – z. B. `/wawi` (wenn hinter Sub‑Pfad) + +**E‑Mail (Bestellungen)** +- `SMTP_HOST` – SMTP‑Server +- `SMTP_PORT` – z. B. `587` +- `SMTP_USER` / `SMTP_PASS` – SMTP Login +- `SMTP_FROM` – Absender (z. B. `bestand@hellas.welker.me`) +- `ORDER_TO` – Empfänger, mehrere per Komma + +**Optional** +- `APP_API_KEY` – API‑Key für direkten Zugriff auf `/wawi/api/bestand` + +## Deployment (systemd + Gunicorn) 1) App nach `/var/www/hellas/wawi` kopieren -2) Gunicorn + systemd starten -3) Nginx Reverse‑Proxy auf `/wawi` +2) venv erstellen: +```bash +cd /var/www/hellas/wawi +python3 -m venv .venv +source .venv/bin/activate +pip install flask gunicorn +``` +3) Service‑Datei anlegen: `/etc/systemd/system/hellas.service` +``` +[Unit] +Description=Hellas WaWi +After=network.target -Für Produktion setze: -- `SECRET_KEY` (Session‑Cookie) -- `APP_USER`, `APP_PASSWORD` (Admin) -- optional `APP_API_KEY` (für direkten API‑Zugriff) +[Service] +User=www-data +Group=www-data +WorkingDirectory=/var/www/hellas/wawi +Environment="PATH=/var/www/hellas/wawi/.venv/bin" +Environment="URL_PREFIX=/wawi" +Environment="SECRET_KEY=DEIN_SECRET" +Environment="APP_USER=admin" +Environment="APP_PASSWORD=starkesPasswort" +Environment="SMTP_HOST=smtp.example.com" +Environment="SMTP_PORT=587" +Environment="SMTP_USER=dein_user" +Environment="SMTP_PASS=dein_pass" +Environment="SMTP_FROM=bestand@hellas.welker.me" +Environment="ORDER_TO=bjoern@welker.me, zweite@domain.de" +Environment="APP_API_KEY=api_f4b8e1c97a2d4e5b8c6a9d3e2f7b1a0c" +ExecStart=/var/www/hellas/wawi/.venv/bin/gunicorn -w 3 -b 127.0.0.1:8000 app:app +Restart=always +[Install] +WantedBy=multi-user.target +``` +4) Aktivieren: +```bash +sudo systemctl daemon-reload +sudo systemctl enable --now hellas +``` + +## Nginx (Reverse‑Proxy + Shop‑Seite) +Beispiel `/etc/nginx/sites-available/hellas`: +``` +server { + listen 80; + server_name hellas.welker.me; + + location = / { + root /var/www/hellas; + try_files /index.html =404; + } + + location /wawi/ { + 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/hellas /etc/nginx/sites-enabled/hellas +sudo nginx -t +sudo systemctl reload nginx +``` + +## SSL (Let’s Encrypt) +```bash +sudo apt install -y certbot python3-certbot-nginx +sudo certbot --nginx -d hellas.welker.me +``` + +## Dateirechte (SQLite + Uploads) +```bash +sudo chown -R www-data:www-data /var/www/hellas/wawi +sudo chmod 750 /var/www/hellas/wawi +sudo chmod 640 /var/www/hellas/wawi/hellas.db +sudo mkdir -p /var/www/hellas/wawi/static/uploads +sudo chown -R www-data:www-data /var/www/hellas/wawi/static/uploads +``` + +## Backup (Beispiel) +```bash +sudo /root/fix_wawi_permissions.sh +```