Zum Inhalt
nexlore

Selbst hosten

Ein Container und ein Ordner, mehr brauchst du nicht.

nexlore läuft als ein einziger Docker-Container und speichert alles in SQLite. Du brauchst keine Datenbank daneben, keinen Suchserver und keinen Dienst in der Cloud, und deine Notizen liegen als Dateien auf deiner eigenen Platte.

In fünf Minuten läuft nexlore

Das Abbild gibt es für amd64 und arm64. Es läuft also auf dem Mini-PC genauso wie auf dem Raspberry Pi oder deiner NAS.

docker-compose.yml
services:
  nexlore:
    image: ghcr.io/derkezorm/nexlore:latest
    container_name: nexlore
    restart: unless-stopped
    ports:
      - "8470:8000"
    volumes:
      - ./data:/data
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Europe/Berlin
  1. Datei anlegen

    Leg die Datei in einen leeren Ordner, zum Beispiel /opt/nexlore. Mit PUID und PGID bestimmst du, welchem Benutzer die Dateien gehören sollen.

  2. Starten
    Shell
    docker compose up -d
  3. Das erste Konto anlegen

    Öffne http://dein-server:8470 im Browser. Wer dort das erste Konto anlegt, wird Betreiber. Alle anderen kommen per Einladung dazu oder über deinen Anmeldedienst, wenn du das erlaubst.

Lore sagtBeim ersten Start legt nexlore einen Bereich „nexlore“ an. Darin steckt eine Anleitung zum Ausprobieren, auf Deutsch oder Englisch und mit Bildern. Du darfst sie ändern oder löschen, und der Betreiber kann sie jederzeit neu anlegen.

Deine Notizen in einem Ordner deiner Wahl

Wenn du nichts weiter angibst, liegen die Notizen in data/vault. Soll es ein Ordner sein, an dem auch ein anderes Programm oder Syncthing arbeitet, hängst du ihn in den Container ein und sagst nexlore Bescheid.

Jeder Ordner ganz oben wird ein Bereich

Aus /srv/notizen/Privat und /srv/notizen/Familie werden die Bereiche „Privat“ und „Familie“. Solange ein Bereich keine Mitglieder hat, gehört er dem Betreiber, und unter Einstellungen kann er andere dazu einladen.

Den Datenordner richtet der Container bei jedem Start für PUID und PGID ein. Bei einem eingehängten Tresorordner macht er das nicht, der muss für diesen Benutzer also schon beschreibbar sein.

docker-compose.yml, Ausschnitt
    volumes:
      - ./data:/data
      - /srv/notizen:/vault
    environment:
      NEXLORE_VAULT_DIR: /vault
      # Freigabe ohne Änderungsmeldungen:
      # NEXLORE_WATCH_POLLING: "true"

Sicher erreichbar mit HTTPS

Bevor du nexlore von woanders als von deinem Schreibtisch aus benutzt, gehört ein Reverse Proxy mit TLS davor. Aufs Handy installieren lässt sich nexlore ohnehin nur über HTTPS.

Caddyfile
notes.example.com {
	reverse_proxy 127.0.0.1:8470
}
nginx, im server-Block
client_max_body_size 1024m;
location / {
  proxy_pass http://127.0.0.1:8470;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
}

Die öffentliche Adresse

In NEXLORE_PUBLIC_URL steht die Adresse, unter der man nexlore erreicht. Daraus baut nexlore Einladungslinks, öffentliche Seiten und die Rücksprungadresse für OIDC.

Dem Proxy vertrauen

In NEXLORE_TRUSTED_PROXIES trägst du die Adressen deiner Proxys ein. Nur dann bremst nexlore beim Passwortraten den echten Absender und nicht deinen Proxy.

Sichere Cookies

Ab Werk erkennt nexlore selbst, ob HTTPS im Spiel ist, auch hinter dem Proxy über X-Forwarded-Proto. Wenn das nicht klappt, legst du es mit NEXLORE_COOKIE_SECURE fest.

Lore sagtclient_max_body_size sollte zur größten Datei passen, die nexlore annimmt. Ab Werk sind das 1024 MB, und der Betreiber kann das unter Einstellungen ändern.

Wo nexlore was ablegt

Alles außer den Notizen liegt in /data. Dieser Ordner gehört auf eine lokale Platte und nie auf eine SMB- oder NFS-Freigabe, weil die Sperren von SQLite über Netzlaufwerke nicht zuverlässig halten.

Im DatenordnerWas es ist
nexlore.dbDie Datenbank mit Index, Versionen, Papierkorb und Konten. Bis auf Versionen und Papierkorb lässt sich alles darin aus den Dateien neu aufbauen.
secret.keyDer Schlüssel für alles, was der Server selbst lesen muss, also das OIDC-Geheimnis, das Mail-Passwort und die Schlüssel der zweiten Faktoren.
vault/Deine Notizen, solange kein eigener Tresorordner eingehängt ist.
backups/Die Sicherungen als ZIP.
trash/Der Papierkorb, in dem Gelöschtes 30 Tage liegt.
logs/Das Log, in dem nie Notizinhalte, Passwörter oder Schlüssel stehen.
locales/Weitere Sprachen, je eine JSON-Datei.

Alle Umgebungsvariablen

Du brauchst keine davon. Das meiste stellt der Betreiber sowieso in der Oberfläche ein.

VariableAb WerkBedeutung
NEXLORE_DATA_DIR/dataOrdner für Datenbank, Log, Sicherungen, Papierkorb und Sprachen
NEXLORE_VAULT_DIR<data>/vaultOrdner mit den Notizen als Markdown-Dateien
NEXLORE_LOCALES_DIR<data>/localesOrdner für weitere Sprachen, je eine JSON-Datei
NEXLORE_SECRET_KEYbeim ersten Start erzeugtschützt die Geheimnisse auf dem Server und hat Vorrang vor secret.key, wenn du ihn setzt
NEXLORE_PUBLIC_URLaus der Anfragedie Adresse für Einladungen, öffentliche Seiten und OIDC; die Einstellung in der Oberfläche hat Vorrang
NEXLORE_TRUSTED_PROXIESkeineAdressen oder Netze deiner Reverse Proxys, deren X-Forwarded-For nexlore glaubt, mit Komma getrennt
NEXLORE_WATCH_POLLINGfalselässt nexlore regelmäßig nachfragen, für Freigaben, die keine Änderungen melden
NEXLORE_SCAN_INTERVAL300Sekunden zwischen zwei vollen Durchgängen über den Tresor; 0 schaltet sie ab
NEXLORE_SESSION_DAYS30nach so vielen Tagen endet eine Anmeldung im Browser
NEXLORE_LOG_LEVELEinstellungquiet, normal, detailed oder trace; hilft, wenn die App nicht mehr startet
NEXLORE_COOKIE_SECUREautoon, off oder auto, dann entscheidet die Anfrage oder X-Forwarded-Proto
NEXLORE_API_DOCSfalseliefert /api/docs und /api/openapi.json aus
NEXLORE_PORT8000der Port im Container, wichtig bei Host-Netzwerk
PUID, PGID1000wem die Dateien im Datenordner gehören

Updaten ohne Handarbeit

Du holst das neue Abbild und startest neu. Was der Datenbank fehlt, ergänzt nexlore beim Start selbst, und vorher sichert es sie.

Shell
docker compose pull
docker compose up -d

Von Hand musst du dabei nichts erledigen. Vor einem großen Versionssprung lohnt sich trotzdem eine eigene Sicherung, die du unter Einstellungen, Sicherung mit „Jetzt sichern“ anlegst.

Sichern und wiederherstellen, ohne etwas kaputtzumachen

Die Datenbank läuft weiter, während gesichert wird. Deshalb kopiert nexlore sie selbst, sauber und in einem Stück, und nie einfach als Datei im laufenden Betrieb.

Nach Zeitplan

Du kannst täglich oder wöchentlich sichern lassen, ab Werk ist das aus. Wie viele Sicherungen aufgehoben werden, stellst du selbst ein, ab Werk sind es sieben.

Erst ein Probelauf

Bevor du wiederherstellst, zeigt dir nexlore, was dazukäme, was sich ändern würde und was wegfiele.

Eine Kopie zum Mitnehmen

Jede Sicherung kannst du herunterladen. nexlore fragt dafür noch einmal nach dem Passwort des Betreibers.

Lore sagtEine Sicherung ist ein gewöhnliches ZIP mit der Datenbank, allen Notizen und Dateien und secret.key. Wer es hat, hat also alles. Heb es so sorgfältig auf wie den Datenordner selbst, und bitte nicht nur auf demselben Server.