// Tutorial · Docker · Notizen & Wissen

Trilium: Deine hierarchische Wissensdatenbank im Browser

📅 09.09.2026 ⏱ 10 Min. Lesezeit ✍️ Redaktion

Notizen, die wie ein Baum wachsen statt in unendlichen Ordnern zu versinken: Trilium organisiert dein Wissen in einer hierarchischen Struktur – mit Markdown, Code-Blöcken, Verknüpfungen, Skripten und optionaler Ende-zu-Ende-Verschlüsselung. In diesem Artikel richtest du Trilium als Docker-Container ein, schützt es per Reverse Proxy und bindest Backups aus der Debian-13-Serie ein.

Was ist Trilium? (TriliumNext)

Trilium ist eine Open-Source-Notiz-App, die Notizen nicht in flachen Listen, sondern in einem Baum aus beliebig verschachtelten Notizen organisiert. Das Original von zadam wird seit 2023 als TriliumNext aktiv weiterentwickelt – mit Sync-Verbesserungen, Mobile-Optimierung und neuen Features.

  • Hierarchie: Notizen frei verschachteln, klonen und über Relationen verknüpfen
  • Editor: Markdown, Code mit Syntax-Highlighting, Tabellen, Formeln, Diagramme (Mermaid)
  • Attribute & Skripte: Notizen mit Metadaten versehen und über eingebautes JavaScript automatisieren
  • Verschlüsselung: einzelne Notizen optional Ende-zu-Ende-verschlüsseln
  • Sync: mehrere Geräte über den eigenen Server synchronisieren
  • Web & Mobile: Bedienung komplett im Browser, PWA für unterwegs
Image-Hinweis: Deine Config nutzt das klassische Image zadam/trilium – es funktioniert weiterhin. Die aktive Entwicklung läuft aber bei TriliumNext. Deren Image heißt triliumnext/trilium (Docker Hub) bzw. ghcr.io/triliumnext/trilium, das Datenverzeichnis ist kompatibel. Ein Umstieg ist also jederzeit ohne Datenverlust möglich (vorher Backup machen).

Voraussetzungen

  • Debian-13-Server mit Docker & Compose (Teil 5)
  • Optional: Domain + Reverse Proxy (Nginx) für den Zugriff von unterwegs
  • Für Sync zwischen Geräten: zusätzliche Trilium-Instanzen bzw. Clients auf deinen Endgeräten

Installation mit Docker Compose

Verzeichnis anlegen und in den Stack wechseln:

mkdir -p /opt/stacks/trilium
cd /opt/stacks/trilium

Die docker-compose.yml:

services:
  trilium:
    container_name: trilium
    hostname: trilium
    image: zadam/trilium
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    network_mode: bridge
    ports:
      - 127.0.0.1:50548:8080
    volumes:
      - ./data:/home/node/trilium-data
    environment:
      - USER_UID=1000
      - USER_GID=1000
      TZ: Europe/Berlin

Starten und den Status prüfen:

docker compose up -d
docker compose ps

Danach öffnest du Trilium im Browser: http://127.0.0.1:50548 – auf dich wartet die leere Baumstruktur, die erste Notiz heißt „Hello Trilium“.

Was macht die Config?

BausteinBedeutung
./data:/home/node/trilium-dataAlle Notizen, Dokumente & Backups liegen hier – der wichtigste Ordner des Stacks.
USER_UID/USER_GIDDateien gehören dem Standard-Benutzer (1000) aus Teil 1 der Serie.
TZZeitzone für Zeitstempel (Europe/Berlin).
no-new-privilegesVerhindert, dass Prozesse im Container neue Privilegien erlangen – Standard-Härtung aus Teil 5.
127.0.0.1:50548:8080Nur localhost erreichbar – der Reverse Proxy stellt die Verbindung nach außen her.
Aufräum-Tipp: In deiner Vorlage sind ein Named Volume data und ein Netzwerk net deklariert, die aber gar nicht genutzt werden (Bind-Mount + network_mode: bridge). Du kannst beide Blöcke ersatzlos entfernen – Compose wird übersichtlicher.

Reverse Proxy: Trilium nach außen bringen

Trilium ist eine Web-App ohne eigenes Login (Standard) – der Zugangsschutz gehört also an den Proxy:

server {
    listen 443 ssl http2;
    server_name notes.deine-domain.de;

    ssl_certificate     /etc/letsencrypt/live/notes.deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/notes.deine-domain.de/privkey.pem;

    auth_basic "Trilium";
    auth_basic_user_file /etc/nginx/htpasswd-trilium;

    location / {
        proxy_pass http://127.0.0.1:50548;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600s;
    }
}
sudo htpasswd -c /etc/nginx/htpasswd-trilium admin
sudo nginx -t
sudo systemctl reload nginx
Deine Notizen sind Gold wert: Ohne Basic Auth oder VPN gehört eine Notiz-App mit allen Passwörtern, Ideen und Dokumenten nicht ins öffentliche Internet. Zusätzlich kannst du in Trilium die integrierte Benutzer-Authentifizierung aktivieren – für den Start reicht aber Basic Auth am Proxy.

Konfiguration & erste Schritte

Datenverzeichnis & automatische Backups

Trilium legt in ./data neben der Datenbank (document.db) automatisch tägliche Sicherungen unter ./data/backup an. Diese „internen“ Backups schützen dich vor versehentlichem Löschen – sie ersetzen aber kein externes Backup (dazu weiter unten).

Wichtige Umgebungsvariablen (optional)

VariableWirkung
TRILIUM_PORTInterner Port (Standard 8080, im Compose-Mapping schon berücksichtigt).
TRILIUM_DISABLE_TLSBei manchen Images nötig, wenn TLS im Container deaktiviert werden soll – Standard-Betrieb über Reverse Proxy braucht das nicht.
TRILIUM_STARTUP_SCRIPTPfad zu einem Skript, das beim Start ausgeführt wird (fortgeschritten).

Sync einrichten

Trilium synchronisiert mehrere Instanzen über deinen Server. Dazu erzeugst du in den Optionen einen Sync-Server-Token und trägst ihn auf deinen weiteren Geräten (Desktop-App, Mobile) ein. Wichtig: Vor der ersten Synchronisation unbedingt ein Backup der bestehenden Instanz anlegen.

Sicherheits-Check

  • localhost-Bindung: 127.0.0.1:50548 statt 0.0.0.0 – Firewall und UFW bleiben wirksam (Teil 3).
  • Basic Auth am Proxy – oder integrierte Authentifizierung aktivieren, wenn du mehrere Nutzer hast.
  • Sensible Notizen verschlüsseln: Rechtsklick auf die Notiz → „Schützen“. Der Schlüssel wird in deinem Browser gehalten.
  • Kein Root im Container: Trilium läuft als normaler User (node), no-new-privileges ist aktiv.
  • Zugriff prüfen: Wer Zugriff auf den Server hat, hat Zugriff auf alle Notizen – ./data also nie in Web-Ordnern teilen.

Betrieb, Updates & Backups

Updates

cd /opt/stacks/trilium
docker compose pull
docker compose up -d
Vor jedem Update: Ein kurzes Backup von ./data kostet Sekunden und macht Updates gefahrlos – gerade bei einem Wechsel von zadam/trilium auf triliumnext/trilium.

Backup mit Borg

Der komplette Stack-Zustand liegt in ./data – das Backup-Muster aus Teil 4/5 passt 1:1:

#!/bin/sh
cd /opt/stacks/trilium || exit 1
docker compose stop
trap 'docker compose start' EXIT
borg create /mnt/backup/borg-repo::trilium-$(date +%Y-%m-%d) /opt/stacks/trilium/data
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6

Restore: Stack stoppen, ./data aus dem Archiv zurückspielen, Stack starten. Fertig – inklusive aller Notizen, Attribute und Sync-Einstellungen.

Häufige Probleme (FAQ)

ProblemLösung
Seite ist nicht erreichbarStatus prüfen (docker compose ps) und Port testen: curl -I http://127.0.0.1:50548. Nach Config-Änderungen neu erstellen: docker compose up -d --force-recreate.
Wo liegen meine Daten?Im Bind-Mount ./data (= /home/node/trilium-data im Container). Achtung: Das deklarierte Named Volume data in der Vorlage ist ungenutzt – nicht verwechseln.
Login / Passwort gefragt?Trilium hat im Standard keinen Login. Erscheint trotzdem eine Abfrage, kommt sie vom Reverse Proxy (Basic Auth) – Zugangsdaten aus der htpasswd-Datei.
Sync funktioniert nichtToken prüfen, Server-URL mit https:// eintragen und sicherstellen, dass alle Instanzen dieselbe Trilium-Version nutzen. Vor dem ersten Sync unbedingt Backups anlegen.
Verschlüsselte Notiz nicht lesbarDer Schlüssel liegt nur im Browser, in dem die Notiz verschlüsselt wurde – nicht im Container. Passwort des Schutz-Schlüssels notieren, sonst ist die Notiz unwiederbringlich verloren.
Image-Frage: zadam oder TriliumNext?Beide nutzen dasselbe Datenformat. Aktive Entwicklung: TriliumNext (triliumnext/trilium). Vor dem Wechsel Backup machen und danach die Version prüfen.

Fazit

Trilium bringt Ordnung in Notizen, die sonst in zwanzig Markdown-Dateien und drei Cloud-Apps verstreut liegen. Die Merksätze:

  1. Ein Ordner, ein Backup: ./data enthält alles – externe Sicherung nie vergessen.
  2. Zugangsschutz am Proxy: Basic Auth oder integrierte Authentifizierung – Notizen gehören nicht ins offene Internet.
  3. Vor Updates und Sync-Ersteinrichtung Backups anlegen – das schützt vor Format- und Migrationsfehlern.
  4. Verschlüsselte Notizen haben ihren Schlüssel nur im Browser – Schlüssel-Passwort sicher verwahren.

Damit wächst dein Wissen ab sofort wie ein Baum statt wie ein Papierstapel.

📝
HuuuHosting-Redaktion

Open-Source-Tools für den eigenen Server – getestet, dokumentiert und in der Debian-13-Serie Schritt für Schritt erklärt.