a7d058b57c4ac43ebb48ef8e72dbf42f95cb4fdb
Hellas – Bestand & WaWi
Überblick
Dieses Repository enthält:
- 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
wawi/app.py– Flask‑App (CRUD, Ausbuchen, Verkäufe, Benutzerverwaltung)wawi/templates/– HTML‑Templates der WaWi‑Appwawi/static/– Styles + Logowawi/hellas.db– SQLite‑Datenbank (wird automatisch erstellt)wawi/import_from_html.py– Import aushellas_bestand.htmlindex.html– Live‑Shop‑Ansicht (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
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.
Umgebungsvariablen (ENV)
Pflicht/Empfohlen für Produktion
SECRET_KEY– Session‑SecretAPP_USER/APP_PASSWORD– initialer Admin‑UserURL_PREFIX– z. B./wawi(wenn hinter Sub‑Pfad)
E‑Mail (Bestellungen)
SMTP_HOST– SMTP‑ServerSMTP_PORT– z. B.587SMTP_USER/SMTP_PASS– SMTP LoginSMTP_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)
- App nach
/var/www/hellas/wawikopieren - venv erstellen:
cd /var/www/hellas/wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
- Service‑Datei 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
- Aktivieren:
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:
sudo ln -s /etc/nginx/sites-available/hellas /etc/nginx/sites-enabled/hellas
sudo nginx -t
sudo systemctl reload nginx
SSL (Let’s 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
Languages
HTML
67.4%
Python
27.6%
CSS
5%