This commit is contained in:
@@ -23,11 +23,12 @@ Browser ── HTTPS ──→ Caddy ── HTTP ──→ Hugo (live-reload)
|
||||
hugo_docker/
|
||||
├── docker-compose.yml # Hugo + Caddy Stack
|
||||
├── Caddyfile # TLS + Reverse-Proxy
|
||||
├── scp_copy.py # SCP-Transfer + SSH Docker-Restart mit Health-Check
|
||||
├── content/ # ← .md-Dateien hier ablegen (Host-Mount)
|
||||
├── crt/ # Self-signed Zertifikate
|
||||
├── site/ # Hugo-Config, Layouts, CSS
|
||||
│ ├── hugo.toml
|
||||
│ ├── entrypoint.sh # Auto-Frontmatter + Hugo-Server
|
||||
│ ├── entrypoint.sh # Auto-Frontmatter + Besitzer-Fix (chown) + Hugo-Server
|
||||
│ ├── assets/css/main.css # Modernes CSS (oklch, dark mode, grid)
|
||||
│ └── layouts/ # HTML-Templates
|
||||
├── ansible/
|
||||
@@ -73,6 +74,24 @@ EOF
|
||||
docker compose restart hugo # nur bei komplett neuen Dateien
|
||||
```
|
||||
|
||||
## SCP-Sync (`scp_copy.py`)
|
||||
|
||||
Skript zum Synchronisieren lokaler `.md`-Dateien auf den Ziel-Host und
|
||||
Neustarten des Hugo-Containers via SSH:
|
||||
|
||||
```bash
|
||||
cd hugo_docker
|
||||
python3 scp_copy.py
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. SCP kopiert alle `.md`-Dateien aus `scr/` nach `dest`
|
||||
2. `docker compose restart hugo` wird via SSH auf dem Ziel-Host ausgeführt
|
||||
3. Health-Check pollt `curl https://localhost:5443/` bis Hugo `200` antwortet (max 15 s)
|
||||
|
||||
**Alle Pfade sind dynamisch aus `dest` abgeleitet** — `compose_file` wird aus dem
|
||||
`content/`-Pfad berechnet (`content/` → `docker-compose.yml`). Keine hartkodierten Pfade.
|
||||
|
||||
## Frontmatter
|
||||
|
||||
Der Entrypoint (`site/entrypoint.sh`) fügt **automatisch** fehlendes YAML-Frontmatter
|
||||
@@ -90,6 +109,20 @@ date: "2026-09-08"
|
||||
|
||||
Mit dem Entrypoint kannst du **beliebige** .md-Dateien in `content/` werfen.
|
||||
|
||||
### Permission-Handling
|
||||
|
||||
Der Hugo-Container läuft als `root` (notwendig für den Build-Lock).
|
||||
Der Entrypoint gibt den Besitz modifizierter `.md`-Dateien per `chown` an den
|
||||
Host-User zurück — gesteuert über `HOST_UID`/`HOST_GID` in `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
HOST_UID: "1000"
|
||||
HOST_GID: "1000"
|
||||
```
|
||||
|
||||
Kein `sudo chown`-Gefrickel mehr — SCP-Overwrites klappen nach jedem Restart.
|
||||
|
||||
## Deployment (Ansible)
|
||||
|
||||
Auf entfernten Host ausrollen:
|
||||
@@ -166,4 +199,6 @@ Modernes Theme in `site/assets/css/main.css`:
|
||||
| Browser zeigt Zertifikatswarnung | CA in NSS-Store importieren (s.o.) |
|
||||
| Caddy startet nicht | `docker compose logs caddy` – TLS-Zertifikate prüfen unter `crt/` |
|
||||
| Zertifikatsfehler "no SAN" | Zertifikate mit `selfsign_ca.py` neu generieren (SAN ist jetzt enthalten) |
|
||||
| Molecule-Test schlägt fehl | `ansible_remote_tmp: /tmp/.ansible` in molecule.yml prüfen |
|
||||
| Molecule-Test schlägt fehl | `ansible_remote_tmp: /tmp/.ansible` in molecule.yml prüfen |
|
||||
| 502 Bad Gateway nach Deploy | `ssh <host> "docker compose -f ~/.docker/hugo/docker-compose.yml logs hugo"` |
|
||||
| Permission denied bei SCP | HOST_UID/HOST_GID in docker-compose.yml prüfen, ggf. `chown` manuell ausführen |
|
||||
Reference in New Issue
Block a user