153 lines
4.3 KiB
Markdown
153 lines
4.3 KiB
Markdown
# 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‑App
|
||
- `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‑Shop‑Ansicht (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
|
||
```
|
||
|
||
## 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‑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) 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
|
||
|
||
[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
|
||
```
|