Momente - App

Das Handbuch: Android-App, Alben & Zusammenarbeit, Adminbereich und Drucken — mit allen Screens

Diese Anleitung als PDF herunterladen

ÜBERBLICKSo hängt alles zusammen

Momente - App ist dein selbst gehostetes Foto-Logbuch: Auf dem FreeBSD-Server läuft eine schlanke Flask-Anwendung hinter nginx und Gunicorn, alle Daten — die SQLite-Datenbank und sämtliche Fotos — liegen unter /var/db/momente und verlassen deinen Server nie. Zwei Wege führen hinein: die Web-Oberfläche im Browser (voller Funktionsumfang inklusive Mitglieder, Adminbereich und Druckpaket) und die native Android-App (Kotlin, Jetpack Compose), die über eine JSON-API mit Bearer-Token spricht. Beide arbeiten auf denselben Daten; du kannst also am Handy einen Moment festhalten und ihn am Rechner weiterbearbeiten.

Inhaltlich ist alles in Alben organisiert. Jedes Album gehört genau einem Konto, und die Besitzerin oder der Besitzer entscheidet pro Album, wer mitarbeitet — per Benutzername oder über einen einmaligen Einladungslink, der sogar die Registrierung ganz ohne bestehendes Konto erlaubt. Beim Anmelden tauscht die App dein Passwort gegen ein Geräte-Token; das Passwort selbst wird nie auf dem Handy gespeichert, und jedes Gerät lässt sich serverseitig einzeln wieder aussperren.

ROLLENWer darf was

Innerhalb eines Albums gibt es drei Rollen — Besitzer:in, Mitarbeit und nur Lesen — dazu den Admin der Installation. Admin-Rechte wirken bewusst nur auf Konten — in fremde Alben schauen Admins nicht hinein, sie sehen in der Übersicht nur Metadaten wie Name, Besitzer:in und Anzahl der Einträge. Die Rolle nur Lesen eignet sich z. B. für Großeltern: ansehen, reagieren und kommentieren ja, eigene Momente anlegen nein.

Aktionnur LesenMitarbeitBesitzer:inAdmin
Album ansehen, suchen, Fotobuch/Druckpaket erzeugennur eigene
Reagieren und kommentieren
Momente festhalten, eigene bearbeiten und löschennur eigene
Fremde Einträge im Album bearbeiten oder löschen
Mitglieder/Rollen verwalten, Einladungen, Papierkorb
Album umbenennen oder mitsamt Fotos löschen
Konten anlegen, deaktivieren, Passwörter zurücksetzen

NEU IN v5Mehr Fotos, Reaktionen, Suche & mehr

Diese Funktionen sind in der aktuellen Version dazugekommen — auf dem Server, in der Web-Oberfläche und (Anzeige & Interaktion) in der Android-App:

Als App ohne Store: Die Web-Oberfläche ist installierbar. Im Browser „Zum Startbildschirm hinzufügen" (Android: Chrome-Menü; iOS: Teilen → Zum Home-Bildschirm) — Momente startet dann im Vollbild. Für iPhones ist das der einfachste Weg zu einer App-Kachel.

SCHRITT 1Server vorbereiten oder aktualisieren

Frische Installationen folgen einfach dem README. Läuft dein Server schon mit einer älteren Version, sichere zuerst die Daten — eine Zeile genügt, weil alles in einem Verzeichnis liegt — und spiele dann die neuen Dateien ein:

# 1) Sicherung (Datenbank + Fotos in einem Rutsch)
tar -czf /root/momente-backup-$(date +%F).tgz -C /var/db momente

# 2) Neue Version einspielen
cp app.py /usr/local/www/momente/
cp -R templates static /usr/local/www/momente/

# 3) Neu starten und prüfen
service momente restart        # erwartete Ausgabe: "Waiting for PIDS: ..."
curl -s https://momente.example.org/api/health
# {"app": "Momente - App", "ok": true}

Beim ersten Start nach dem Update migriert sich die Datenbank von selbst: Das älteste Konto bekommt Admin-Rechte, und falls es schon Einträge gibt, wandern sie gesammelt in ein gemeinsames Album namens „Unser Logbuch“, in dem alle bisherigen Konten Mitglied sind — es geht also nichts verloren und niemand verliert Zugriff. Startet der Dienst nicht, steht der Grund in /var/log/momente/error.log; die typischen rc.d-Stolpersteine sind im README beschrieben.

SCHRITT 2Android-App in Android Studio bauen

Du brauchst nur Android Studio (Koala oder neuer — ein passendes JDK bringt es mit) und beim ersten Mal eine Internetverbindung für Gradle und die Bibliotheken. Ein Google-Konto ist nicht nötig, die App kommt per USB oder als APK-Datei aufs Handy.

  1. Projekt öffnen: In Android Studio File → Open und den Ordner android/ aus diesem Paket wählen.
  2. Gradle-Sync abwarten: Studio lädt Gradle 8.7, das Android-SDK (API 34) und die Abhängigkeiten (Compose, Coil, OkHttp). Fehlt gradlew, einmal gradle wrapper --gradle-version 8.7 im Projektordner ausführen oder in den Studio-Einstellungen eine lokale Gradle-Version wählen.
  3. Direkt aufs Handy: Am Telefon die Entwickleroptionen und USB-Debugging aktivieren, Gerät anschließen, oben auswählen und auf Run ▶ klicken — die App installiert und startet sich.
  4. Oder als APK weitergeben: Build → Build App Bundle(s)/APK(s) → Build APK(s). Die Datei liegt danach unter app/build/outputs/apk/debug/app-debug.apk und lässt sich z. B. per Dateifreigabe auf weitere Geräte kopieren („Unbekannte Apps installieren“ einmalig erlauben).
  5. Optional, für den Dauerbetrieb: eine signierte Release-APK über Build → Generate Signed App Bundle / APK → APK erstellen; beim ersten Mal legt der Assistent einen Keystore an. Bewahre die Keystore-Datei auf — nur damit lassen sich später Updates über dieselbe App installieren.
Ehrlicher Hinweis: Das Projekt ist gegen die festgepinnten Versionen geschrieben (AGP 8.5, Kotlin 2.0, Compose-BOM 2024.06, minSdk 26 — also Android 8.0 oder neuer), konnte in dieser Umgebung aber nicht kompiliert werden, weil hier kein Android-SDK existiert. Der erste Gradle-Sync in Android Studio ist deshalb der Praxistest; sollte er etwas anmeckern, zeigt Studio die Stelle direkt an.

DIE APPScreen für Screen durch die Android-App

Die folgenden Abbildungen sind Design-Mockups, die der umgesetzten Oberfläche eins zu eins entsprechen — echte Screenshots entstehen erst auf deinem Gerät. Der Ablauf in der App: anmelden, Album wählen, Momente festhalten, bei Bedarf das Fotobuch exportieren.

Momente - App Dein Logbuch auf deinem eigenen Server. Server-Adresse https://momente.example.org Benutzername katja Passwort •••••••• Anmelden Das erste Konto legst du einmalig im Browser unter /setup an.
1 · Anmelden — Server, Name, Passwort; das Passwort wird gegen ein Geräte-Token getauscht.
Meine Alben Abmelden L Linas erstes Jahr 23 Momente · dein Album S Sommer am See 8 Momente · von Jonas U Unser Logbuch 112 Momente · dein Album Neue Alben, Mitglieder und Einladungen verwaltest du in der Web-Oberfläche.
2 · Meine Alben — Startbildschirm nach dem Anmelden; antippen öffnet das Logbuch.
Momente - App Fotobuch · Abmelden Juni 2026 11 Erster Schnee im Garten Lina hat zum ersten Mal eine Schneeflocke gefangen. Katja Bearbeiten · Löschen 8 Sonntagsfrühstück Jonas +
3 · Logbuch — Timeline des Albums, nach Monaten gruppiert, mit der goldenen Tagesmünze.
Moment festhalten Datum: 2026-06-11 Überschrift (optional) Erster Schnee im Garten Was war heute golden? Lina hat zum ersten Mal eine Schneeflocke gefangen … Foto aufnehmen Aus Galerie Speichern
4 · Moment festhalten — Datum, Text und Foto aus Kamera oder Galerie.
Fotobuch erstellen Wähle einen Zeitraum — daraus wird ein PDF mit Deckblatt und einer Seite pro Moment, fertig für den Druckdienst. Titel des Buchs Unsere Momente Von: 2026-01-01 Bis: 2026-06-11 PDF erzeugen Unsere Momente 1. Januar – 11. Juni 2026
5 · Fotobuch — Zeitraum wählen, PDF erzeugen, Speicherort selbst bestimmen.

Anmelden

Trage die Adresse deines Servers ein (mit https://), dazu Benutzername und Passwort. Die App ruft /api/login auf und erhält ein Token, das zusammen mit dem Gerätenamen auf dem Server hinterlegt wird — so siehst du in der Datenbank jederzeit, welche Geräte Zugriff haben. Auf dem Handy landet nur das Token (in den App-Einstellungen), nie das Passwort. Das allererste Konto der Installation entsteht einmalig im Browser unter /setup; weitere Konten legt der Admin an oder sie entstehen über Einladungslinks. Schlägt die Anmeldung fehl, unterscheidet die Meldung nicht zwischen falschem Namen, falschem Passwort und deaktiviertem Konto — das ist Absicht, damit sich Benutzernamen nicht erraten lassen.

Meine Alben

Nach dem Anmelden landest du auf deiner Albenliste: jedes Album mit goldener Initial-Münze, der Anzahl der Momente und deiner Rolle („dein Album“ oder „von Katja“). Antippen öffnet die Timeline; „Abmelden“ oben rechts entwertet das Token auch auf dem Server, nicht nur lokal. Die Liste lädt bei jedem Öffnen frisch — wirst du also gerade in ein neues Album eingeladen, taucht es beim nächsten Wechsel auf diese Ansicht auf. Neue Alben anlegen sowie Mitglieder und Einladungen verwalten bleibt bewusst der Web-Oberfläche vorbehalten: Diese selteneren Verwaltungsaufgaben sind dort mit Tastatur und großen Formularen besser aufgehoben, und die App bleibt schlank.

Logbuch (Timeline)

Die Timeline zeigt alle Momente des gewählten Albums, neueste zuerst und nach Monaten gruppiert; die goldene Tagesmünze trägt den Kalendertag. Jede Karte zeigt Foto, Überschrift, Text und wer den Moment festgehalten hat. „Bearbeiten“ und „Löschen“ erscheinen nur dort, wo du sie auch benutzen darfst — als Mitglied an deinen eigenen Einträgen, als Besitzer:in an allen. Löschen fragt sicherheitshalber nach und entfernt den Eintrag endgültig, samt Foto und Vorschaubild auf dem Server. Der goldene +-Knopf unten rechts startet einen neuen Moment, „Fotobuch“ oben rechts den PDF-Export, und „Alben“ links führt zurück zur Übersicht.

Moment festhalten

Das Datum steht auf heute, lässt sich über den Knopf aber beliebig zurückdatieren — praktisch, wenn du einen Tag nachträgst; die Timeline sortiert nach diesem Datum, nicht nach dem Zeitpunkt des Eintippens. Überschrift und Text sind optional, schon ein Satz genügt. „Foto aufnehmen“ öffnet direkt die Kamera (die Aufnahme wird nur kurz im App-Cache zwischengelagert), „Aus Galerie“ den Android-Fotopicker — beides ohne zusätzliche Berechtigungen. Beim Speichern lädt die App alles per Multipart hoch; der Server richtet das Bild anhand der EXIF-Drehung korrekt aus, verkleinert es auf maximal 2400 Pixel Kantenlänge, wirft Metadaten weg und erzeugt ein Vorschaubild für die Timeline. Beim Bearbeiten eines Eintrags ersetzt ein neu gewähltes Foto das alte; ohne Auswahl bleibt das vorhandene erhalten.

Fotobuch (PDF)

Wähle Titel sowie Von- und Bis-Datum — vorbelegt mit Albumname, Jahresanfang und heute. Der Server setzt daraus ein A4-PDF: ein Deckblatt mit Titel und Zeitraum, dann pro Moment eine Seite mit groß eingepasstem Foto, goldener Trennlinie, Datum, Autor:in, Überschrift und Text. Nach dem Erzeugen öffnet sich der Android-Speicherdialog, du bestimmst also selbst, ob die Datei in „Downloads“, auf der SD-Karte oder direkt in einem Cloud-Ordner landet. Bei sehr großen Zeiträumen mit hunderten Fotos darf der Export ruhig eine Weile dauern — die App wartet bis zu zwei Minuten, nginx ist im Beispiel auf 120 Sekunden eingestellt.

WEBAlben anlegen, Mitglieder einladen, zusammenarbeiten

Die Web-Oberfläche unter deiner Server-Adresse ist das Zuhause der Verwaltung. Auf der Startseite „Meine Alben“ legst du mit einem Namen ein neues Album an — du wirst automatisch Besitzer:in. In der Timeline eines eigenen Albums findest du unter „Album verwalten“ außerdem Umbenennen und das endgültige Löschen (mit Rückfrage; dabei verschwinden alle Einträge und Fotos des Albums vom Server). Mitglieder, die ein Album nicht mehr begleiten möchten, verlassen es selbst über den Link in der Timeline — ihre bereits festgehaltenen Momente bleiben dem Album erhalten.

https://momente.example.org Momente - App Meine Alben · Admin · Abmelden (Katja) Mitglieder & Einladungen Album: Linas erstes Jahr · nur du als Besitzer:in siehst diese Seite Wer arbeitet mit Jonas (jonas) · entfernen Sarah (sarah) · entfernen Bestehendes Konto einladen benutzername Hinzufügen Einladungslink erstellen Für Personen ohne Konto — gilt für genau eine Person. Neuen Einladungslink erzeugen Einladungslink erstellt — er gilt für genau eine Person: https://momente.example.org/einladung/k7QbX2vKp9… Offene Einladungen (Links erscheinen nur einmal direkt nach dem Erstellen): Erstellt am 2026-06-12 · zurückziehen
Mitglieder & Einladungen — nur für Besitzer:innen sichtbar: Mitarbeitende verwalten, per Benutzername einladen oder einen einmaligen Link erzeugen.

„Mitglieder & Einladungen“ in der Timeline (nur als Besitzer:in sichtbar) bündelt die Zusammenarbeit. Hat die Person schon ein Konto auf deinem Server, genügt ihr Benutzername — sie ist sofort Mitglied und sieht das Album beim nächsten Laden ihrer Albenliste. Für alle anderen erzeugst du einen Einladungslink: Er gilt für genau eine Person, wird aus Sicherheitsgründen nur ein einziges Mal direkt nach dem Erstellen angezeigt (auf dem Server liegt nur ein Hash) und lässt sich jederzeit zurückziehen, solange er nicht eingelöst wurde. Verschicke ihn per Messenger oder Mail.

https://momente.example.org Einladung Katja lädt dich ein, am Album „Linas erstes Jahr“ mitzuarbeiten. Anzeigename Sarah Benutzername sarah Passwort (mindestens 8 Zeichen) •••••••• Konto anlegen & beitreten
Einladung einlösen — wer den Link öffnet, legt sich direkt ein Konto an (oder tritt mit bestehendem Konto bei) und landet im Album.

Öffnet die eingeladene Person den Link, sieht sie, wer sie wohin einlädt. Ohne Konto füllt sie Anzeigename, Benutzername und Passwort aus und ist mit einem Klick registriert, angemeldet und Mitglied des Albums; mit bestehendem Konto meldet sie sich erst an und öffnet den Link danach erneut — dann genügt „Beitreten“. In beiden Fällen wird der Link dabei entwertet. Möchtest du jemanden wieder ausladen, entfernst du das Mitglied auf derselben Seite; die Person verliert sofort den Zugriff, ihre bisherigen Einträge bleiben bestehen und tragen weiterhin ihren Namen.

ADMINDer Adminbereich

https://momente.example.org Momente - App Meine Alben · Admin · Abmelden (Katja) Adminbereich Konten Name Benutzername Alben Einträge Geräte Status Aktionen Katja Admin katja 2 23 1 aktiv deaktivieren · Admin · löschen Jonas jonas 1 9 2 aktiv deaktivieren · Admin · löschen Oma Inge inge 0 0 0 deaktiviert deaktivieren · Admin · löschen Neues Konto anlegen Anzeigename Benutzername Passwort (min. 8) Anlegen mit Admin-Rechten Alben-Übersicht Aus Respekt vor der Privatsphäre nur Metadaten — Inhalte fremder Alben bleiben den Mitgliedern vorbehalten. Album Besitzer:in Mitglieder Einträge Seit Linas erstes Jahr Katja 2 23 2026-03-01 Sommer am See Jonas 1 8 2026-05-14
Adminbereich — Konten verwalten mit Schutzregeln; von fremden Alben sind nur Metadaten sichtbar.

Das erste Konto aus /setup ist automatisch Admin und sieht im Kopfbereich den Link „Admin“. Die Kontentabelle zeigt zu jedem Konto die Zahl eigener Alben, Einträge und angemeldeter App-Geräte. Vier Aktionen stehen bereit: Anlegen (mit optionalen Admin-Rechten, etwa für eine zweite Vertrauensperson), Deaktivieren — das Konto kann sich nicht mehr anmelden, laufende Browser-Sitzungen enden und alle App-Tokens werden entwertet, die Daten bleiben aber vollständig erhalten und ein erneutes Aktivieren stellt alles wieder her —, Passwort setzen (entwertet ebenfalls alle App-Tokens, danach meldet sich die Person überall neu an) und Löschen.

Drei Schutzregeln verhindern Unfälle: Der letzte aktive Admin kann sich weder deaktivieren noch die Admin-Rechte entziehen noch löschen — so sperrst du dich nie selbst aus. Konten, die Alben besitzen oder Einträge geschrieben haben, lassen sich nicht löschen, sondern nur deaktivieren, damit keine Erinnerungen verschwinden. Und in fremde Alben schauen Admins grundsätzlich nicht hinein: Die Alben-Übersicht zeigt bewusst nur Name, Besitzer:in, Mitglieder- und Eintragszahl.

DRUCKENVom Album zum gedruckten Fotobuch

https://momente.example.org Momente - App Meine Alben · Admin · Abmelden (Katja) Album drucken lassen Album: Linas erstes Jahr CEWE und Pixum bieten keine öffentliche Bestell-Schnittstelle — gestaltet wird in der Fotowelt-Software, die lokale Ordner als Fotoquelle einliest. Das Druckpaket enthält alles dafür. Von 2026-01-01 Bis 2026-06-12 Druckpaket (ZIP) herunterladen druckpaket_Linas_erstes_Jahr.zip fotos/001_2026-03-01_Erstes_Lachen.jpg fotos/002_2026-03-04_Spaziergang.jpg fotos/… (chronologisch nummeriert) bildunterschriften.csv fotobuch.pdf LIESMICH.txt 1 Paket entpacken. 2 Fotowelt-Software: Ordner „fotos“ als Fotoquelle wählen. 3 Assistent verteilt die Bilder bereits in der richtigen Reihenfolge. 4 Texte aus bildunterschriften.csv übernehmen und bestellen.
Drucken lassen — das Druckpaket bündelt Fotos, Texte und PDF für CEWE Fotowelt und Pixum Fotowelt.

Weder CEWE noch Pixum bieten eine öffentliche Bestell-Schnittstelle, über die man ein fertiges Buch direkt hochladen könnte — gestaltet und bestellt wird dort in der jeweiligen Fotowelt-Software (Pixum nutzt dieselbe Software-Familie wie CEWE). Genau dafür ist „Drucken lassen“ in der Timeline gebaut: Es erzeugt ein Druckpaket als ZIP, optional auf einen Zeitraum eingegrenzt, mit allem, was die Gestaltungssoftware braucht:

  1. fotos/ — alle Fotos in Druckauflösung, chronologisch nummeriert nach dem Muster 001_2026-03-01_Erstes_Lachen.jpg. Die Nummerierung sorgt dafür, dass jede Software die richtige Reihenfolge übernimmt.
  2. bildunterschriften.csv — Nummer, Datum, Autor:in, Überschrift, Text und Dateiname zu jedem Moment, als Semikolon-Tabelle mit BOM, damit Excel und LibreOffice Umlaute korrekt anzeigen. Daraus kopierst du die Texte in die Textfelder des Buchs.
  3. fotobuch.pdf — das fertig gesetzte Buch als Vorlage fürs Layout oder direkt für Druckdienste, die PDFs annehmen.
  4. LIESMICH.txt — dieselben Schritte noch einmal zum Nachlesen, direkt im Paket.

Der Weg zum bestellten Buch: Paket entpacken, die CEWE Fotowelt oder Pixum Fotowelt Software öffnen und ein Fotobuch beginnen, dann unter den Fotoquellen den entpackten Ordner fotos hinzufügen — in der CEWE Fotowelt z. B. über Optionen → Einstellungen → Fotoquellen oder direkt links im Gestaltungsbereich unter „Fotos & Videos“. Der Gestaltungsassistent verteilt die Bilder automatisch in der vorgegebenen Reihenfolge; zum Schluss übernimmst du die Texte aus der CSV und bestellst. Über die Umgebungsvariable MOMENTE_PRINT_URL kannst du auf der Drucken-Seite zusätzlich einen Link zu deinem bevorzugten Druckdienst einblenden; im Code ist die Anbieterliste als kleine Adapter-Struktur angelegt, sodass sich eine echte Bestell-API später ergänzen lässt, sollte ein Anbieter eine veröffentlichen.

VERZEICHNISAnmeldung über FreeIPA / LDAP

Wenn du zuhause oder im Verein schon ein FreeIPA oder einen anderen LDAP-Server betreibst, melden sich alle einfach mit ihrem gewohnten Konto an — ganz ohne zweites Passwort. Sobald MOMENTE_LDAP_URL in der .env gesetzt ist, prüft der Server unbekannte Anmeldungen gegen das Verzeichnis: Beim ersten Erfolg entsteht das Konto automatisch (mit dem Anzeigenamen aus dem Verzeichnis), bei jedem weiteren Login werden Name und Rechte frisch übernommen. Das gilt für Web und Android-App gleichermaßen, denn beide nutzen denselben Anmeldeweg. Lokale Konten — etwa dein Setup-Admin — funktionieren parallel weiter und dienen als Rettungsanker, falls das Verzeichnis einmal nicht erreichbar ist.

Die Gruppenzuordnung läuft über das memberOf-Attribut: MOMENTE_LDAP_ALLOW_GROUPS bestimmt, wer sich überhaupt anmelden darf (z. B. die FreeIPA-Gruppe momente-users; leer bedeutet: alle authentifizierten Konten), und Mitglieder der Gruppen aus MOMENTE_LDAP_ADMIN_GROUPS werden automatisch Admin — nimmst du jemanden aus der Gruppe, verschwinden die Rechte mit der nächsten Anmeldung. Drei Leitplanken sorgen für Ruhe: Eine lokale Deaktivierung im Adminbereich sperrt ein Konto immer, auch bei gültigen Verzeichnis-Zugangsdaten; der Gruppen-Sync degradiert nie den letzten aktiven Admin; und Passwörter von LDAP-Konten verwaltet allein das Verzeichnis — der Reset-Knopf im Adminbereich ist für sie gesperrt, solche Konten tragen dort ein graues LDAP-Abzeichen.

Für FreeIPA genügt der Direkt-Bind über eine DN-Vorlage: MOMENTE_LDAP_USER_DN="uid={username},cn=users,cn=accounts,dc=familie,dc=lan". Alternativ gibt es den Suchmodus mit Dienstkonto (MOMENTE_LDAP_BIND_DN, …_BASE_DN, …_USER_FILTER), mit dem auch Active Directory funktioniert, etwa über (sAMAccountName={username}). Verbinde dich per LDAPS oder StartTLS; bei eigener PKI zeigt MOMENTE_LDAP_CA_CERT auf das CA-Zertifikat (FreeIPA: /etc/ipa/ca.crt). Verbinde möglichst über den Hostnamen; bei Verbindung per IP-Adresse trägst du den Namen aus dem Zertifikat in MOMENTE_LDAP_VALID_NAMES ein — "*" akzeptiert jeden Namen, prüft die Kette gegen die CA aber weiterhin. Alle Variablen stehen kommentiert in deploy/momente.env.example; technisch braucht der Server nur das reine Python-Paket ldap3.

DIAGRAMMEProzessansichten in Lucidchart importieren

Die Datei momente-prozesse-drawio.xml bildet alle Funktionen als Flussdiagramme ab — zehn Seiten: Systemarchitektur, Erststart und Anmeldung, Moment festhalten, Logbuch anzeigen, Bearbeiten/Löschen, Fotobuch-Export, Mitglieder und Abmelden, Benutzerverwaltung mit Einladungen, die Druckanbindung an CEWE und Pixum sowie die Anmeldung über FreeIPA/LDAP. Sie liegt im draw.io-Format vor, das Lucidchart offiziell importiert:

  1. In Lucidchart ein Dokument öffnen und Datei → Importieren wählen (bzw. auf der Startseite Import → Draw.io).
  2. momente-prozesse-drawio.xml auswählen — jede der zehn Prozessansichten erscheint als eigene Seite.
  3. Lucidchart priorisiert beim Import Funktion vor Optik; Farben oder Abstände lassen sich danach frei anpassen. Das Bearbeiten importierter Diagramme setzt einen bezahlten Lucid-Tarif voraus.

Dieselbe Datei öffnet auch draw.io/diagrams.net direkt, falls du dort arbeiten möchtest.

SICHERHEITEmpfehlungen für den Betrieb

Nur über HTTPS: Das Zertifikat richtest du wie im README per certbot ein. Das Android-Manifest erlaubt momentan auch unverschlüsseltes HTTP (usesCleartextTraffic="true"), damit Tests im Heimnetz ohne Zertifikat funktionieren — für den Dauerbetrieb stelle den Wert auf false und baue die App neu. Geräte im Blick: Jede App-Anmeldung legt ein eigenes Token mit Gerätenamen an. Geht ein Handy verloren, genügt „Abmelden“ auf einem anderen Weg nicht — entferne stattdessen die Zeile des Geräts direkt auf dem Server, danach ist der Zugang sofort tot, ohne dass jemand das Passwort ändern muss:

sqlite3 /var/db/momente/momente.sqlite3 \
  "SELECT id, device, created_at FROM tokens;"
sqlite3 /var/db/momente/momente.sqlite3 "DELETE FROM tokens WHERE id = 3;"

Alternativ erledigt das der Admin bequemer über „Passwort setzen“ oder „Deaktivieren“ — beides entwertet alle Tokens des Kontos. Sicherungen: Alles Wichtige liegt in /var/db/momente; ein nächtliches tar -czf … -C /var/db momente per Cron auf eine andere Platte genügt als vollständiges Backup. Geheimnisse: Setze in der .env einen festen MOMENTE_SECRET_KEY, sonst verlieren Browser-Sitzungen bei jedem Neustart ihre Gültigkeit.

APIKurzreferenz für Bastler

Die App nutzt eine kleine JSON-API; mit demselben Token kannst du auch eigene Skripte anbinden. Alle Aufrufe außer Login und Health erwarten den Header Authorization: Bearer <token>:

AufrufZweck
POST /api/loginToken holen — JSON mit username, password, optional device.
POST /api/logoutEigenes Token entwerten.
GET /api/albumsEigene Alben mit Rolle und Eintragszahl.
GET /api/albums/<id>/entriesAlle Momente eines Albums, neueste zuerst — je Moment photos, reaction_count, reacted, comment_count, can_edit.
POST /api/albums/<id>/entriesMoment anlegen — Multipart mit entry_date, title, body, mehrfach photos (Feld mehrfach senden). Nur Mitarbeit/Besitzer:in, sonst HTTP 403.
POST /api/entries/<id> · DELETE /api/entries/<id> Ändern (weitere photos anhängen, remove_photo=ID entfernen) bzw. in den Papierkorb verschieben (Soft-Delete).
GET /api/albums/<id>/search?q=…Volltextsuche; liefert Momente wie /entries.
GET /api/albums/<id>/onthisdayMomente vom heutigen Kalendertag aus früheren Jahren.
POST /api/entries/<id>/reactionReaktion umschalten; liefert reacted und reaction_count.
GET · POST /api/entries/<id>/commentsKommentare lesen bzw. anlegen ({"body": "…"}).
GET /api/photo/<name>Foto oder Vorschaubild (…_thumb.jpg) abrufen.
POST /api/albums/<id>/exportFotobuch-PDF — JSON mit start, end, title.

HILFEWenn etwas hakt

SymptomUrsache und Lösung
„Verbindung fehlgeschlagen“ beim Anmelden Server-Adresse prüfen (inkl. https://), dann /api/health im Handy-Browser öffnen. Kommt dort nichts an, liegt es an DNS, Firewall oder nginx — nicht an der App. Bei http:// im Heimnetz: Cleartext muss im Manifest erlaubt sein (Standard im Testbetrieb).
„Nicht angemeldet“ mitten in der Nutzung Das Token wurde serverseitig entwertet — durch Abmelden anderswo, Passwort-Reset oder Deaktivierung. Einfach neu anmelden.
„Anmeldung fehlgeschlagen“ trotz richtigem Passwort Vermutlich wurde das Konto im Adminbereich deaktiviert — ein Admin kann es dort wieder aktivieren.
403 „Du gehörst nicht zu diesem Album“ Kein Fehler, sondern das Rechtemodell: Du bist (noch) kein Mitglied, oder du wurdest entfernt bzw. hast das Album verlassen. Die Besitzerin oder der Besitzer kann dich erneut einladen.
Einladungslink zeigt „nicht gefunden“ Links gelten für genau eine Person: Er wurde schon eingelöst oder zurückgezogen. Einfach einen neuen Link erzeugen lassen.
Foto-Upload schlägt fehl Meist das Größenlimit: client_max_body_size in nginx und MOMENTE_MAX_UPLOAD in der .env müssen zur Fotogröße passen (Vorgabe: 20–25 MB).
PDF-Export oder Druckpaket bricht bei großen Alben ab proxy_read_timeout in nginx erhöhen (Vorgabe hier: 120 s); die App wartet bis zu zwei Minuten.
Dienst startet nach dem Update nicht service momente restart ausführen und die Ausgabe lesen; Details stehen in /var/log/momente/error.log. Die typischen rc.d-Fallstricke sind im README dokumentiert.
LDAP-Anmeldung schlägt fehl, Zugangsdaten stimmen aber Drei Kandidaten: Das Konto ist in keiner Gruppe aus MOMENTE_LDAP_ALLOW_GROUPS; es wurde im Adminbereich lokal deaktiviert (Sperre gewinnt immer); oder die TLS-Prüfung scheitert — dann hilft MOMENTE_LDAP_CA_CERT auf die richtige CA; verbindest du per IP-Adresse, zusätzlich MOMENTE_LDAP_VALID_NAMES mit dem Namen aus dem Zertifikat. Den genauen Grund nennt /var/log/momente/error.log, nach außen bleibt die Meldung bewusst allgemein.
Nach dem Update fehlen Einträge scheinbar Sie liegen jetzt im automatisch angelegten Album „Unser Logbuch“ auf der Startseite — die Migration verschiebt Bestandsdaten dorthin, gelöscht wird nichts.