Files
Freundebuch/README.md

5.4 KiB
Raw Permalink Blame History

📖 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.
  • 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.
  • 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.
  • Ö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.
  • Freundesbuch-Ansicht: verspieltes Scrapbook-Layout mit schräg angeordneten Polaroid-Fotos, Washi-Tape-Optik usw. seitenweise durchblätterbar.
  • 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.
  • 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).

Setup

  1. Admin-Passwort festlegen Hash erzeugen:

    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:

    docker compose up -d --build
    

    Die Anwendung läuft danach auf http://<server>:3000.

  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.

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.
  • /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.
  • /book die verspielte Freundesbuch-Ansicht mit Blätterfunktion und PDF-Export (Button oben rechts).
  • 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.

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.