2026-01-30 12:12:40 +01:00
2026-01-30 08:55:14 +01:00
2026-01-30 08:55:14 +01:00
2026-01-30 08:55:14 +01:00
2026-01-30 12:10:10 +01:00
2026-01-30 08:55:14 +01:00
2026-01-30 12:12:40 +01:00

Hellas Bestand & WaWi

Überblick

Dieses Repository enthält:

  • WaWiApp (Flask + SQLite) für Artikelverwaltung, Ausbuchen, Verkäufe und Bestellungen.
  • LiveShopAnsicht (index.html) lädt Daten aus der WaWiApp.
  • ImportScript für Daten aus der ursprünglichen hellas_bestand.html.

Struktur

  • wawi/app.py FlaskApp (CRUD, Ausbuchen, Verkäufe, Benutzerverwaltung)
  • wawi/templates/ HTMLTemplates der WaWiApp
  • wawi/static/ Styles + Logo
  • wawi/hellas.db SQLiteDatenbank (wird automatisch erstellt)
  • wawi/import_from_html.py Import aus hellas_bestand.html
  • index.html LiveShopAnsicht (ruft /wawi/proxy/bestand)

WaWi lokal starten

cd wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
python app.py

Standardzugriff: Login über Benutzerverwaltung (siehe unten).

Benutzerverwaltung

Beim ersten Start wird ein Admin aus ENV erzeugt:

  • APP_USER (default: admin)
  • APP_PASSWORD (default: admin)

Passwörter werden gehasht gespeichert.
Über /users können weitere Benutzer angelegt und Passwörter zurückgesetzt werden.

Import aus hellas_bestand.html

cd wawi
python import_from_html.py /pfad/zu/hellas_bestand.html --truncate

LiveShopAnsicht (index.html)

index.html lädt den Bestand aus der WaWiApp:

  • APIProxy: /wawi/proxy/bestand

Wenn du diese Datei auf einem Webserver auslieferst, stelle sicher, dass die WaWiApp unter /wawi erreichbar ist.

Umgebungsvariablen (ENV)

Pflicht/Empfohlen für Produktion

  • SECRET_KEY SessionSecret
  • APP_USER / APP_PASSWORD initialer AdminUser
  • URL_PREFIX z. B. /wawi (wenn hinter SubPfad)

EMail (Bestellungen)

  • SMTP_HOST SMTPServer
  • 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 gemeinsamer APIKey für /wawi/api/bestand und /wawi/order
  • COOKIE_SECURE 1 (default) setzt SecureCookie, 0 deaktiviert für http

Deployment (systemd + Gunicorn)

  1. App nach /var/www/hellas/wawi kopieren
  2. venv erstellen:
cd /var/www/hellas/wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
  1. ServiceDatei anlegen: /etc/systemd/system/hellas.service
[Unit]
Description=Hellas WaWi
After=network.target

[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
  1. Aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable --now hellas

Nginx (ReverseProxy + ShopSeite)

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:

sudo ln -s /etc/nginx/sites-available/hellas /etc/nginx/sites-enabled/hellas
sudo nginx -t
sudo systemctl reload nginx

SSL (Lets Encrypt)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d hellas.welker.me

Dateirechte (SQLite + Uploads)

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)

sudo /root/fix_wawi_permissions.sh
Description
No description provided
Readme 226 KiB
Languages
HTML 67.4%
Python 27.6%
CSS 5%