Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse

Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example)
in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die
Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten
das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber
IWZ_ENV (Fallback bin/.env).

Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die
IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report.
GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach
/mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den
Installationsweg. Doku in doc/analyse.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
Michael Stangl committed 2026-08-28 16:44:56 +02:00
1 parent 025e68b3b9
commit 2379f4ac9f
21 files changed
+760 -59

No files matched your search

+34 -6
View File
@@ -14,14 +14,35 @@ Drei Ferienwohnungen in Kaufbeuren-Hirschzell / Allgäu.
- **Buchungskalender**: webplanner.de (externer Dienst, per Link eingebunden)
- **Git**: eigene Gitea-Instanz (kein GitHub/GitLab, kein CI/CD-Workflow)
- **Deploy**: manuell per `deploy.bat` oder `deploy.py` → `hugo --gc --minify` + Upload nach Bunny.net Storage Zone (per Bunny-API/FTP, analog zum Ansatz in `.github/workflows/deploy.yml`-Vorlage, aber lokal statt als GitHub Action)
- **Nutzungsanalyse**: Server-Log-Auswertung mit GoAccess (kein JS-Tracking, keine Cookies, kein Consent-Banner). Skript `analyze.bat` / `analyze.py` lädt die Access-Logs per SFTP und erzeugt einen HTML-Report. Siehe `doc/analyse.md`.
## Hosting-Roadmap (Stand aktuell)
- **Jetzt**: Deploy läuft auf **Bunny.net** – für das erste Ausrollen der Instanz zur Kontrolle und Absprache. Die vorhandene Bunny-Konfiguration (Storage Zone, Pull Zone, `.env`) ist in Ordnung und bleibt vorerst so. `deploy.bat` / `deploy.py` deployen weiterhin nach Bunny.
- **Später**: Die Instanz wird auf **IONOS-Webspace** ausgerollt (Deploy-Ziel wird dann umgestellt).
- **Nutzungsanalyse jetzt schon erprobbar**: Die Log-Analyse (`analyze.py`) wird bereits mit den **IONOS-Access-Logs** getestet (SFTP-Zugang zum IONOS `/logs`-Ordner), unabhängig davon, dass das Deploy-Ziel noch Bunny ist. Nach dem IONOS-Umzug bleibt der Analyse-Workflow gleich.
## Projektstruktur
```
iwz/
├── hugo.toml # Konfiguration: baseURL, Menü, Kontaktdaten (Params)
├── deploy.bat # Windows: hugo build + wrangler deploy
├── deploy.py # Python-Alternative zum deploy.bat
├── requirements.txt # Python-Abhängigkeiten (paramiko für analyze)
├── bin/ # Alle .bat-Skripte (Einstiegspunkte)
│ ├── setenv.bat # setzt IWZ, IWZ_BIN, IWZ_LIB, IWZ_ENV ... + PYTHONPATH
│ ├── install_py.bat # legt .venv an + pip install -r requirements.txt
│ ├── get_cmd.bat # öffnet Shell mit gesetzter Umgebung
│ ├── deploy.bat # → lib/deploy.py (Vollupload nach Bunny)
│ ├── deploy-lastdiff.bat# → lib/deploy_lastdiff.py (nur Änderungen)
│ ├── analyze.bat # → lib/analyze.py (IONOS-Logs + GoAccess)
│ ├── provide_previewlink.bat # → lib/preview_link.py
│ ├── .env # Secrets (NICHT im Git; von setenv als IWZ_ENV gesetzt)
│ └── .env.example # Vorlage zum Kopieren nach bin/.env
├── lib/ # Alle .py-Skripte (von den .bat aufgerufen)
│ ├── deploy.py # Hugo-Build + FTP-Upload nach Bunny Storage Zone
│ ├── deploy_lastdiff.py # nur geänderte Dateien (Hash-Manifest)
│ ├── analyze.py # SFTP-Download der Logs + GoAccess-Report
│ └── preview_link.py # signierter Bunny-Vorschau-Link
├── content/
│ ├── _index.md # Startseite
│ ├── preise.md # Preistabelle + Buchungsbedingungen
@@ -94,8 +115,15 @@ hugo --gc --minify
# danach: Upload von ./public zur Bunny.net Storage Zone
# (Storage Zone Name + API-Key/Storage-Passwort als Secrets/env, nicht im Git)
# Bei jeder Änderung:
deploy.bat
# oder:
python deploy.py
# Bei jeder Änderung (Skripte liegen jetzt in bin/, Python in lib/):
bin\deploy.bat # Vollupload
# oder nur geänderte Dateien:
bin\deploy-lastdiff.bat
# oder direkt:
python lib\deploy.py
```
Die `.bat`-Skripte in `bin/` rufen `setenv.bat` auf (setzt `IWZ_*` und
`PYTHONPATH`), wechseln ins Projekt-Root und starten das zugehörige Skript in
`lib/`. Die Secrets liegen in `bin/.env` (von `setenv.bat` als `IWZ_ENV`
gesetzt; die Python-Skripte lesen diesen Pfad, sonst Fallback auf `bin/.env`).