Files
Hellas-Wawi/README.md

167 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```bash
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
```bash
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:
```bash
cd /var/www/hellas/wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
```
3) 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
```
4) Aktivieren:
```bash
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:
```bash
sudo ln -s /etc/nginx/sites-available/hellas /etc/nginx/sites-enabled/hellas
sudo nginx -t
sudo systemctl reload nginx
```
## SSL (Lets 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
```
## FixPermissions Script (inkl. Uploads)
`/root/fix_wawi_permissions.sh` sollte auch das UploadVerzeichnis setzen:
```bash
#!/bin/sh
set -e
chown -R www-data:www-data /var/www/hellas/wawi
chmod 750 /var/www/hellas/wawi
chmod 640 /var/www/hellas/wawi/hellas.db
mkdir -p /var/www/hellas/wawi/static/uploads
chown -R www-data:www-data /var/www/hellas/wawi/static/uploads
systemctl restart hellas
```
## Backup (Beispiel)
```bash
sudo /root/fix_wawi_permissions.sh
```