Files

95 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2026-09-07 12:21:53 +02:00
# 📖 Freundesbuch (digital)
Ein selbst gehostetes, digitales Freundschaftsbuch. Kein Benutzer-System nur ein
Admin-Passwort für dich, und pro Freund ein frei wählbares Freigabe-Passwort zum Teilen.
## Funktionen
- **Ein Passwort** für den Admin-Bereich (als SHA-256-Hash in `docker-compose.yml`, kein Klartext).
- Freunde anlegen jeder Freund ist ein eigener Ordner auf dem Server (`Name-zufallsID`).
- Jeder Freund hat ein **Profilbild** und einen **Steckbrief** (klassische Freundebuch-Felder).
- Beliebig viele **Blöcke** pro Freund: 🖼️ Bild, 📝 Text, 🎙️ Audio (MP3 o. ä.) alles wird
im jeweiligen Freundes-Ordner gespeichert.
2026-09-07 12:46:58 +02:00
- **Audio-Cover**: Beim Hochladen eines Liedes/einer Sprachnachricht kann optional ein eigenes
Cover-Bild mitgegeben werden. Wird keins hochgeladen, versucht die App automatisch ein in der
MP3 eingebettetes Cover (ID3-Tag) zu extrahieren und zu verwenden.
2026-09-07 12:21:53 +02:00
- **Freigabe-Link**: Für jeden Freund kannst du einen Link mit eigenem Passwort erzeugen.
Damit kann sich der Freund **nur** in seine eigene Seite einloggen und dort Inhalte
hinzufügen/bearbeiten. Die Freigabe kannst du jederzeit als Admin beenden.
2026-09-07 12:46:58 +02:00
- **Öffentliche URL für Freigabe-Links**: Läuft der Server hinter einem Reverse-Proxy, kannst
du im Admin-Bereich unter "Einstellungen" (oder per `PUBLIC_BASE_URL`-Env) eine öffentliche
Basis-URL hinterlegen. Freigabe-Links werden dann darauf basierend erzeugt statt auf der
lokalen Server-Adresse/IP.
- **Export & Import**: Einzelne Freunde oder das gesamte Freundesbuch lassen sich als ZIP
exportieren und wieder importieren (z. B. zum Umziehen auf einen anderen Server oder als
Backup). Der Import eines Freundes/Buchs legt dabei immer neue Einträge an; beim
Buch-Import kann optional vorher alles Bestehende gelöscht werden.
2026-09-07 12:21:53 +02:00
- **Freundesbuch-Ansicht**: verspieltes Scrapbook-Layout mit schräg angeordneten
Polaroid-Fotos, Washi-Tape-Optik usw. seitenweise durchblätterbar.
2026-09-07 13:00:59 +02:00
- **Automatisches Deckblatt**: Erste Seite im Viewer und im PDF, mit frei wählbarem Titel
(Admin → Einstellungen → "Titel des Freundesbuchs") und einer "sticker-gebombten" Foto-Collage
aus allen Profilbildern und Bild-Blöcken der Freunde.
- **Eigene Reihenfolge**: Im Admin-Bereich lässt sich die Reihenfolge der Freunde per Pfeil-Buttons
festlegen sie bestimmt die Seitenfolge im Freundesbuch (nach dem Deckblatt) sowie im PDF.
2026-09-07 13:32:35 +02:00
- **PDF-Export** des gesamten Freundesbuchs inkl. Deckblatt (serverseitig über Puppeteer/Chromium
gerendert; Fotos werden dabei automatisch verkleinert/komprimiert, damit auch viele/große
Bilder zuverlässig und schnell zu einem PDF werden).
2026-09-07 12:21:53 +02:00
## Setup
1. **Admin-Passwort festlegen** Hash erzeugen:
```bash
echo -n "DeinPasswort" | sha256sum
```
(macOS: `shasum -a 256`, Windows/PowerShell: `certutil -hashfile datei.txt SHA256` oder
ein Online-Tool deines Vertrauens wichtig ist nur SHA-256 in Kleinbuchstaben-Hex.)
Den Hash in `docker-compose.yml` bei `ADMIN_PASSWORD_HASH` eintragen.
⚠️ Der mitgelieferte Standard-Hash entspricht dem Passwort `aendern123`
bitte vor dem Livegang unbedingt ändern!
2. **Session-Secret ändern** `SESSION_SECRET` in `docker-compose.yml` durch eine lange,
zufällige Zeichenkette ersetzen (z. B. `openssl rand -hex 32`).
3. **Starten**:
```bash
docker compose up -d --build
```
Die Anwendung läuft danach auf `http://<server>:3000`.
2026-09-07 12:46:58 +02:00
4. **Reverse-Proxy / öffentliche URL (optional)**: Läuft der Server hinter einem Reverse-Proxy
(z. B. Nginx, Traefik, Caddy), trage entweder `PUBLIC_BASE_URL` in der `docker-compose.yml`
ein, oder setze die URL direkt im Admin-Bereich unter "Einstellungen" (`https://deine-domain.tld`,
ohne abschließenden Slash). Danach zeigen alle neu erzeugten Freigabe-Links auf diese Adresse
statt auf die lokale Server-IP.
5. Alle Daten (Freunde-Ordner, Fotos, Texte, Audios, Einstellungen) landen im lokalen Ordner
`./data`, der als Volume eingebunden ist so bleiben sie auch bei Container-Updates erhalten.
2026-09-07 12:21:53 +02:00
## Nutzung
- **/** Login mit dem Admin-Passwort.
- **/admin** Übersicht: Freunde anlegen, bearbeiten, Freigabe verwalten, löschen.
- **/friend/\<id\>** Freund bearbeiten (Profilbild, Steckbrief, Blöcke) für dich als Admin.
Ein "👀 Vorschau"-Button zeigt, wie die Seite später im Freundesbuch aussehen wird.
2026-09-07 12:21:53 +02:00
- **/share/\<id\>** der Link, den du deinem Freund gibst. Er meldet sich mit dem von dir
vergebenen Freigabe-Passwort an und kann **nur** dort etwas eintragen inklusive der
gleichen Vorschau-Funktion.
2026-09-07 12:21:53 +02:00
- **/book** die verspielte Freundesbuch-Ansicht mit Blätterfunktion und PDF-Export
(Button oben rechts).
2026-09-07 13:00:59 +02:00
- Im Admin-Bereich gibt es oben zwei Reiter: **Freunde** (`/admin`, Standardansicht) und
**Einstellungen & Sichern** (`/admin/settings`) mit dem Buch-Titel, der öffentlichen URL
sowie Export/Import für einzelne Freunde und das gesamte Buch.
2026-09-07 12:21:53 +02:00
## Hinweise
- Ordnerstruktur pro Freund: `data/friends/<name>-<zufalls-id>/`
mit `meta.json` (Steckbrief, Blöcke, Freigabe-Status) und Unterordner `uploads/`
für Fotos/Audios.
- Erlaubte Upload-Typen: Bilder (jpg, png, gif, webp) und Audio (mp3, wav, ogg, m4a),
maximal 40 MB pro Datei.
- Der PDF-Export rendert das Buch serverseitig mit Chromium (im Docker-Image enthalten)
dafür braucht der Container etwas RAM (mind. 512 MB empfohlen).
- Es gibt bewusst **keine** Benutzernamen oder E-Mail-Adressen nur Passwörter.