Joplin Server per Docker für eigene Notizen einrichten¶
Veröffentlicht am 22. August 2026 · Geschätzte Lesezeit: 4 Minuten
Joplin Server synchronisiert Notizen zwischen Joplin-Apps auf Computer, Smartphone und Tablet. Die Apps sprechen dabei mit deinem eigenen Server, der die Inhalte in PostgreSQL speichert. Für die Einrichtung im Heimnetz solltest du etwa 30 Minuten einplanen.
Voraussetzungen
- Ein Linux-Server mit Docker und Docker Compose
- Eine feste IP-Adresse für den Server
- Der Port 22300 ist im Heimnetz frei
- Mindestens eine installierte Joplin-App zum Funktionstest
1. Arbeitsordner und Datenordner anlegen¶
Führe den Befehl auf dem Docker-Server aus. PostgreSQL speichert seine Daten später unter
~/docker/joplin-server/data/postgres:
2. Umgebungsdatei anlegen¶
Erzeuge zunächst ein zufälliges Datenbankpasswort in der Datei .env:
Ergänze in derselben Datei diese Werte:
Ersetze <server-ip> durch die feste IP-Adresse deines Servers, zum Beispiel
192.168.1.20. Schütze anschließend die Datei:
Basis-URL später nicht beliebig ändern
Die Adresse muss genau zu der URL passen, die Apps und Browser verwenden. Für Zugriff aus dem Internet ist eine öffentliche HTTPS-Adresse statt der lokalen IP nötig.
3. Compose-Datei anlegen¶
Lege im Projektordner eine Datei compose.yaml an:
services:
db:
image: postgres:16
container_name: joplin-db
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DATABASE}
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DATABASE}"]
interval: 10s
timeout: 5s
retries: 5
app:
image: joplin/server:latest
container_name: joplin-server
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "22300:22300"
environment:
APP_PORT: 22300
APP_BASE_URL: ${APP_BASE_URL}
DB_CLIENT: pg
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DATABASE: ${POSTGRES_DATABASE}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PORT: 5432
POSTGRES_HOST: db
TRANSCRIBE_ENABLED: "false"
Die Datenbank erhält absichtlich keine Portfreigabe. Nur Joplin Server kann sie im internen Compose-Netz erreichen. Die optionale Transkriptionsfunktion bleibt für diesen einfachen Aufbau ausgeschaltet.
4. Konfiguration prüfen und starten¶
Prüfe zuerst die Compose-Datei:
Starte Datenbank und Server:
Prüfe anschließend beide Container:
Falls ein Dienst nicht startet, lies die letzten Protokollzeilen:
5. Standard-Anmeldung sofort ändern¶
Öffne http://<server-ip>:22300 und melde dich einmal mit den von Joplin dokumentierten
Startdaten an:
Öffne oben rechts Profile und ersetze sofort E-Mail-Adresse und Passwort.
Standardpasswort nicht weiterverwenden
Solange admin gilt, kann jeder mit Netzwerkzugriff die Verwaltung übernehmen. Leite
Port 22300 außerdem nicht direkt im Router weiter. Nutze für externen Zugriff HTTPS
über einen Reverse Proxy oder ein privates VPN.
6. Benutzer für die Synchronisation anlegen¶
Öffne in der Verwaltungsoberfläche Users und lege einen normalen Benutzer an. Verwende dieses Konto später in den Joplin-Apps; das Administratorkonto bleibt der Verwaltung vorbehalten.
Aktiviere für wichtige Konten zusätzlich die Mehrfaktor-Authentifizierung im jeweiligen Profil und bewahre die Wiederherstellungscodes sicher auf.
7. Joplin-App verbinden¶
Öffne in der Desktop- oder Mobil-App die Synchronisationseinstellungen. Wähle als Ziel Joplin Server und trage diese Server-URL ein:
Ersetze <server-ip> wieder durch die feste Server-IP. Trage die Daten des normalen
Benutzers ein und klicke auf Synchronisationskonfiguration prüfen. Erstelle danach eine
Testnotiz und starte die Synchronisation.
Ende-zu-Ende-Verschlüsselung
Wenn Notizen trotz HTTPS auch auf dem Server nur verschlüsselt liegen sollen, aktiviere die Ende-zu-Ende-Verschlüsselung in einer Joplin-App und übernimm den Hauptschlüssel auf den weiteren Geräten. Bewahre das Verschlüsselungspasswort getrennt vom Server auf.
8. Datenbank sichern¶
Lege auf dem Docker-Server einen Backup-Ordner an:
Dieser Befehl erzeugt eine datierte, komprimierte PostgreSQL-Sicherung. Er wird im Projektordner ausgeführt und enthält kein Passwort im Befehl:
Sichere zusätzlich .env und compose.yaml an einem geschützten Ort. Prüfe die Dump-Datei:
Ersetze <datum> durch das Datum im Dateinamen.
9. Wiederherstellung vorbereiten¶
Eine Rücksicherung überschreibt den Datenbankbestand. Stoppe deshalb zuerst den gesamten Stack und bewahre den aktuellen Datenordner als zusätzliche Kopie auf:
Restore nur mit geprüftem Backup
Führe eine Datenbank-Wiederherstellung nur durch, wenn das Backup mit pg_restore -l
lesbar ist. Bei einem Fehler kannst du den Stack stoppen und auf die kopierte
postgres-vor-restore-<datum>-Struktur zurückgehen.
10. Aktualisieren¶
Erstelle vor dem Update einen Datenbank-Dump. Lade dann neue freigegebene Images:
Prüfe nach dem Update Anmeldung und Synchronisation. Bei Problemen kannst du in
compose.yaml vorübergehend den zuvor verwendeten Versions-Tag aus den offiziellen
Joplin-Server-Tags einsetzen und erneut starten.
11. Typische Fehler¶
- Invalid URL:
APP_BASE_URLstimmt nicht exakt mit der im Browser verwendeten Adresse überein. - Datenbank bleibt unhealthy: Prüfe freien Speicherplatz, Rechte unter
data/postgresunddocker compose logs db. - Anmeldung klappt, Synchronisation nicht: Prüfe in der App Ziel, Server-URL und das normale Benutzerkonto.
- Port 22300 belegt: Finde den Dienst mit
sudo ss -ltnp | grep ':22300'oder ändere nur die linke Portnummer und passeAPP_BASE_URLan.
12. Quellen und Videos¶
- Offizielles Joplin-Server-Image und Installationshinweise
- Offizielle Joplin-Compose-Vorlage
- Offizielle Anleitung zur Mehrfaktor-Authentifizierung
- Video: Joplin Server mit Docker Compose
- Video: Joplin Server in einem Proxmox-Container
Fertig¶
Joplin Server speichert und synchronisiert deine Notizen nun im Heimnetz. Erstelle auf einem Gerät eine Testnotiz, synchronisiere und kontrolliere auf einem zweiten Gerät, ob sie erscheint. Prüfe abschließend, dass das Standardpasswort nicht mehr funktioniert.