NotariumDokumentation
Dokumentationsversion: latest
DE

Authentifizierung

Die Authentifizierung in Notarium ist eingebaut und läuft vollständig über die Metadaten-Datenbank — kein externer IdP, kein JWT, kein SMTP. Der Modus wird über die Variable AUTH_MODE gewählt und entscheidet, ob es überhaupt einen Login gibt.

Der password-Modus (Standard)

Standardmäßig sicher: vollwertige Mehrbenutzer-Authentifizierung.

  • Erster Start. Auf einer sauberen Instanz legt der erste Besucher über den Setup-Bildschirm beim ersten Start den Eigentümer an (Host-Admin und zugleich Eigentümer der konfigurierten Spaces). Ein voreingestelltes Passwort gibt es nicht; sobald dieses Konto registriert ist, schließt sich das Setup für immer.
  • Sessions. Ein Login erzeugt eine serverseitige Session — eine Zeile in der Datenbank, kein JWT. Sie lebt im HttpOnly-Cookie nt_session mit einer gleitenden TTL von 30 Tagen und dem Secure-Flag hinter HTTPS. Der Entzug erfolgt sofort: Wird ein Benutzer deaktiviert oder ein Passwort geändert, werden aktive Sessions umgehend beendet.
  • Eine Metadaten-Datenbank ist erforderlich. Sie ist standardmäßig vorhanden — SQLite unter DATA_DIR, ohne Konfigurationsaufwand. META_DB_URL fasst du nur an, um auf ein externes Postgres umzuziehen. Siehe Datenbank.

Der none-Modus

Ein einziger Principal mit Vollzugriff — der Betreiber aktiviert diesen Modus bewusst, für den Desktop, die lokale Entwicklung oder ein vertrauenswürdiges Intranet. Auth-Routen antworten mit 404, es gibt keine Login-Oberfläche, und für die Authentifizierung wird keine Metadaten-Datenbank benötigt.

Eine none-Instanz nicht ins Netz stellen

Im none-Modus erhält jeder, der den Port erreicht, vollen Zugriff auf alle Daten — einschließlich des MCP-Endpunkts der Agenten. Nutze ihn nur in einem isolierten oder vertrauenswürdigen Netz.

Rollen und Zugriff

Der Zugriff auf Daten wird über die Space-Mitgliedschaft gewährt, und es gibt drei Rollen:

RolleBerechtigungen
readerLiest alles im Space.
writerBearbeitet Notizen.
ownerVerwaltet die Mitgliedschaft.

Das Host-Admin-Flag gewährt Kontrolle über Benutzer und Spaces, doch um die Daten eines bestimmten Spaces zu lesen, brauchst du trotzdem eine Mitgliedschaft darin. Mehr zum Modell — Zugriffsmodell.

Einladungen und Passwort-Zurücksetzung

SMTP gibt es in Notarium nicht — die erstmalige Übergabe eines Kontos erfolgt über einen Einmal-Link, den der Administrator von Hand weiterreicht. Ein Mechanismus, zwei Zwecke:

  • Einladung — fügt einen Benutzer ohne Passwort hinzu; der Link ist 7 Tage gültig.
  • Passwort-Zurücksetzung — der Link ist 24 Stunden gültig; beim Einlösen werden alte Sessions beendet.

Das Token wird im URL-Fragment übertragen (/invite#<token>) und landet daher nie in den Zugriffsprotokollen. Pro Benutzer ist jeweils nur ein solcher Link aktiv, und der Administrator kennt niemals das Passwort eines anderen.

Tokens für Agenten

KI-Agenten authentifizieren sich mit einem Personal Access Token (PAT) der Form Authorization: Bearer ntp_…, mit dem Scope read oder write und optional auf bestimmte Spaces eingeschränkt. Das Geheimnis wird genau einmal angezeigt. Das Ausstellen von Tokens und andere Verwaltungsaktionen sind nur innerhalb einer Session möglich — ein geleaktes PAT kann keine Rechte ausweiten. Details — Agent verbinden und Sicherheit und Sichtbarkeit.

Zugriff wiederherstellen

Da nur der Administrator einen Reset-Link ausstellt, hätte ein verlorenes Passwort des einzigen Admins den Verlust des Zugriffs zur Folge. Der Ausweg ist die Admin-CLI, die direkt auf der Metadaten-Datenbank arbeitet. Sie ist einer der eingebauten Befehle des Images und lässt sich deshalb kurz und direkt im laufenden Container aufrufen:

docker compose exec notarium admin create-admin <user> --random

# für ein reines docker run:
docker exec -it notarium admin create-admin <user> --random

Den Server musst du dafür nicht anhalten: SQLite im WAL-Modus verträgt einen zweiten Schreiber, Postgres erst recht. Die Metadaten-Datenbank findet die CLI von allein — nach derselben Logik wie der Server (META_DB_URL oder das aus DATA_DIR abgeleitete Datenverzeichnis); bei einem falschen Pfad bricht sie mit einem Fehler ab, statt stillschweigend eine leere Datenbank anzulegen, in der es dann „keine Benutzer“ gibt.

Verfügbare Befehle:

BefehlAktion
listListet Benutzer auf.
passwd <user> [--password <pw> | --random]Ändert ein Passwort.
create-admin <user> [--random] [--display "Name"]Erstellt einen Administrator.
grant <user> <space> <owner|writer|reader>Gewährt eine Rolle in einem Space.

Ohne Flag wird das Passwort mit unterdrücktem Echo aus stdin gelesen, damit es nicht in die Befehlshistorie gerät. setPassword/createAdmin sind nur über die CLI verfügbar — einen HTTP-Weg gibt es dafür nicht: das ist die Betreibergrenze des Hosts. Die übrigen Befehle des Images findest du auf der Seite Image-CLI.