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> @
6.7 KiB
6.7 KiB
Ferienwohnungen Wolframm – Projektkontext
Was ist das?
Hugo-basierte statische Website als WordPress-Ersatz für www.iwz-ferienwohnungen.de. Drei Ferienwohnungen in Kaufbeuren-Hirschzell / Allgäu.
Stack
- Static Site Generator: Hugo (keine externe Abhängigkeit, einzelne .exe)
- Hosting: Bunny.net (Bunny CDN / Storage Zone, kostenpflichtig nach Traffic)
- DNS: Bunny.net DNS oder weiterhin IONOS (siehe Umzug-Notizen, ggf. anzupassen)
- Domain-Registrar: IONOS (bleibt so)
- Buchungskalender: webplanner.de (externer Dienst, per Link eingebunden)
- Git: eigene Gitea-Instanz (kein GitHub/GitLab, kein CI/CD-Workflow)
- Deploy: manuell per
deploy.batoderdeploy.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.pylädt die Access-Logs per SFTP und erzeugt einen HTML-Report. Siehedoc/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.pydeployen 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)
├── 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
│ ├── ausflugsziele.md
│ ├── kontakt.md
│ ├── impressum.md # PLATZHALTER – echte Daten eintragen!
│ ├── datenschutz.md # PLATZHALTER – rechtskonform ersetzen!
│ └── ferienwohnungen/
│ ├── _index.md
│ ├── fewo1.md # 45 qm, bis 4 Pers., 60 €/Nacht
│ ├── fewo2.md # 40 qm, bis 3 Pers., 55 €/Nacht
│ └── fewo3.md # 56 qm, bis 5 Pers., 100 €/Nacht
├── layouts/ # Hugo-Templates (kein externes Theme!)
│ ├── index.html # Startseite: Hero, Highlights, FeWo-Karten
│ ├── _default/
│ │ ├── baseof.html # Basis-Template (nav + footer)
│ │ ├── single.html # Standard-Einzelseite
│ │ └── list.html # Listenansicht (Ferienwohnungen-Übersicht)
│ ├── ferienwohnungen/
│ │ └── single.html # FeWo-Detailseite: Galerie + Buchungsbutton
│ └── partials/
│ ├── head.html # <meta>, CSS-Link
│ ├── nav.html # Navigation (mobil-responsive)
│ └── footer.html # Footer mit Kontakt + Links
└── static/
├── css/style.css # Reines CSS, CSS Variables, Dark Mode
├── js/main.js # Nur mobiles Menü-Toggle
└── images/ # Fotos hier ablegen
Frontmatter der FeWo-Seiten
Jede fewoX.md hat folgende Felder:
groesse: "45 qm"
personen: 4
preis: 60
belegungsplan: "https://www.webplanner.de/XXXXXX/fewo1"
bilder:
- "/images/fewo1_wohnzimmer.jpg"
- "/images/fewo1_kueche.jpg"
Noch offen / TODO
- Echte webplanner.de-URLs in fewo1/2/3.md eintragen (
belegungsplan) - Fotos in
static/images/ablegen + in fewoX.md verlinken - Telefon, E-Mail, Adresse in
hugo.tomlunter[params]eintragen content/impressum.mdmit echten Pflichtangaben füllencontent/datenschutz.mddurch rechtskonforme Version ersetzen- Bunny.net-Account anlegen + Storage Zone für die Seite erstellen
- Bunny Storage-Passwort besorgen, sicher hinterlegen (
.env, nicht ins Git) deploy.bat/deploy.pyum Upload zur Bunny Storage Zone erweitern (FTP, Port 21, passiv)- Bunny Pull Zone / CDN vor die Storage Zone schalten (Auslieferung + HTTPS)
- Domain-Anbindung an Bunny klären (DNS bei IONOS auf Bunny zeigen lassen, oder DNS zu Bunny umziehen)
Lokaler Dev-Server
hugo server
# → http://localhost:1313
Deploy
Deploy läuft lokal per Skript (kein CI/CD, da Repo bei Gitea liegt). Referenz für den Bunny-Upload-Schritt ist die Vorlage .github/workflows/deploy.yml (GitHub-Actions-Syntax), deren Build- und Deploy-Logik 1:1 in deploy.bat/deploy.py nachgebaut wird:
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 (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).