Nextcloud-Integration: Dynamische Galerie + Auto-Thumbnails

- Galerie laedt Bilder dynamisch per JavaScript statt Jekyll-Loop
- nginx autoindex liefert JSON-Bilderliste
- Nextcloud-Ordner (Websitebilder) wird als Volume gemountet
- ImageMagick generiert automatisch 512px Thumbnails
- Hintergrund-Check alle 60s fuer neue Bilder
- Neuer entrypoint.sh fuer Thumbnail-Generierung + nginx Start

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kroonk
2026-04-12 14:03:43 +02:00
parent c885d22346
commit ab6b2bb8fe
7 changed files with 217 additions and 141 deletions

View File

@@ -59,13 +59,21 @@ Photography/
└── CNAME # Custom Domain Config
```
## Wie die Galerie funktioniert
## Wie die Galerie funktioniert (Dynamisch)
1. Jekyll scannt `images/fulls/` nach statischen Dateien
2. `index.html` iteriert mit `{% for image in site.static_files %}` ueber alle Bilder
3. Fuer jedes Bild wird ein `<article class="thumb">` erstellt
4. Klick oeffnet Poptrox-Lightbox mit Vollbild + EXIF-Daten
5. EXIF-Daten werden clientseitig via `exif.js` aus dem Bild gelesen
1. **Bilder hochladen**: Fotos in Nextcloud-Ordner `Websitebilder` ablegen
2. **Volume-Mount**: Docker mountet den Nextcloud-Ordner als `/images/fulls/` (read-only)
3. **Thumbnails**: `entrypoint.sh` generiert automatisch 512px Thumbnails via ImageMagick
4. **Thumbnail-Check**: Alle 60 Sekunden prueft der Container auf neue Bilder
5. **nginx autoindex**: Liefert JSON-Liste aller Dateien in `/images/fulls/`
6. **JavaScript (main.js)**: Fetcht die JSON-Liste und baut dynamisch `<article class="thumb">` Elemente
7. **Poptrox-Lightbox**: Klick oeffnet Vollbild + EXIF-Daten (clientseitig via exif.js)
### Nextcloud-Integration
- **Nextcloud-Pfad**: `/volume1/nextcloud/data/Tom/files/Websitebilder`
- **Mount im Container**: `/usr/share/nginx/html/images/fulls:ro`
- **Thumbnails-Volume**: Docker-Volume `thumbs` (persistent)
- **Workflow**: Bild in Nextcloud hochladen -> max. 60s warten -> Seite neu laden -> fertig
## Wichtige Konfiguration (_config.yml)
@@ -97,7 +105,8 @@ Photography/
### Docker-Dateien
- `Dockerfile` - Multi-Stage: Ruby/Jekyll baut Site -> nginx serviert statische Dateien
- `docker-compose.yml` - Container-Definition, Port 8080:80, auto-restart
- `docker-compose.yml` - Container-Definition, Port 8080:80, Nextcloud-Volume, auto-restart
- `entrypoint.sh` - Thumbnail-Generierung + periodischer Check (alle 60s)
- `nginx.conf` - Webserver-Config mit Caching und Sicherheit
- `.dockerignore` - Haelt Build-Context klein (kein .git, node_modules etc.)
@@ -123,7 +132,9 @@ Photography/
- [x] Kontaktformular auf tom@mischlabs.de konfiguriert
- [x] Google Analytics vom Originalautor entfernt
- [x] Custom Domain: tom.mischlabs.de eingetragen
- [ ] Eigene Bilder einpflegen
- [x] Nextcloud-Integration (Bilder aus Websitebilder-Ordner)
- [x] Dynamische Galerie (JS statt Jekyll-Loop)
- [x] Automatische Thumbnail-Generierung
- [ ] Footer Bio-Text schreiben (optional)
- [ ] Farbschema/Design anpassen
- [ ] Eigene Kategorien/Alben erstellen (Feature-Erweiterung)