Joplin Server mit Docker Compose

Dieser Artikel beschreibt, wie man einen Joplin Server selbst hosten kann. Als Grundlage dienen Docker Compose und Caddy2.

Joplin Server mit Docker Compose
ℹ️
Die diesem Artikel zugrundeliegende Beschreibung zur Installation des Joplin Servers findet ihr hier.

Verzeichnis für Joplin

Erstellt ein Verzeichnis für die Docker Compose Konfiguration und wechselt in dieses Verzeichnis:

mkdir joplin
cd joplin

Verzeichnis erstellen und in das Verzeichnis wechseln.

Docker Compose Datei

Erstellt die Datei compose.yml, die die Docker Compose Konfiguration beschreibt. Die Konfiguration enthält zwei Dienste:

Dienst Beschreibung
db Postgres Datenbank Server
app Joplin Server

Beide Dienste werden über eine Umgebungsvariablen-Datei (.env) konfiguriert, die ihr im nächsten Schritt erstellt.

Der Joplin Server speichert sämtliche Notizen und deren Inhalte in der Datenbank. Für die Daten der Datenbank wird der lokale Pfad ./data/postgres definiert.

services:
  db:
    image: postgres:16-alpine
    container_name: joplin_db
    env_file: .env
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    restart: unless-stopped

  app:
    image: joplin/server:latest
    env_file: .env
    container_name: joplin_app
    depends_on:
      - db
    ports:
      - "127.0.0.1:22300:22300"
    restart: unless-stopped

compose.yml (Docker Compose Konfiguration)

Umgebungsvariablen-Datei

Erstellt die Datei .env, die die Umgebungsvariablen für die beiden Dienste enthält. Folgende Variablen müssen anpasst werden:

Variable Bedeutung
APP_BASE_URL öffentliche URL des Joplin Servers
POSTGRES_PASSWORD Passwort für die Datenbank
MAILER_HOST URL des SMTP Servers für den Versand von Mails
MAILER_PORT Portnummer des SMTP Servers
MAILER_SECURITY Sicherheitsprotokoll des SMTP Servers
MAILER_AUTH_USER Benutzername des SMTP Servers
MAILER_AUTH_PASSWORD Passwort für den SMTP Server
MAILER_NOREPLY_EMAIL Absenderadresse für gesendete Emails
TZ die Zeitzone des Joplin Servers

Die Konfiguration für den SMTP Server findet ihr üblicherweise auf der Homepage eures Email-Providers.

APP_BASE_URL=https://joplin.example.com  # Server URL
APP_PORT=22300
 
DB_CLIENT=pg
POSTGRES_PASSWORD=joplin_pass  # Datenbank Passwort
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_HOST=db

MAILER_ENABLED=1
MAILER_HOST=smtp.example.com  # SMTP Server
MAILER_PORT=587  # SMTP Portnummer
MAILER_SECURITY=starttls  # Optionen: none, ssl, starttls
MAILER_AUTH_USER=SMTP_Username  # SMTP Benutzername
MAILER_AUTH_PASSWORD=SMTP_Password  # SMTP Passwort
MAILER_NOREPLY_NAME=Joplin
MAILER_NOREPLY_EMAIL=noreply@example.com  # Absender Email Adresse

TZ=Europe/Berlin  # Zeitzone

.env (Umgebungsvariablen)

Docker Container starten

Die Docker Container startet ihr nun über folgendes Kommando.

docker compose up -d

Container starten

Reverse Proxy einrichten

Damit der Joplin Server über die oben definierte Subdomain erreichbar, benötigt ihr einen Reverse Proxy, der entsprechend konfiguriert werden muss. Die gezeigte Konfiguration ist ein Beispiel für den Reverse Proxy Caddy2. Ihr könnt aber auch Apache oder NGINX nutzen.

Folgende Zeilen müssen in die Datei Caddyfile eingefügt werden:

joplin.example.com {
        reverse_proxy localhost:22300
}

Caddyfile (Joplin Konfiguration)

Administrator einrichten

Jetzt ist der Joplin Server bereit und ihr könnt euch über die Adresse https://joplin.example.com einloggen. Dazu benutzt ihr den Admin Benutzername admin@localhost und das Passwort admin.

Als nächsten Schritt bitte zunächst den Benutzernamen und das Passwort für den Administrator ändern. Joplin sendet eine Bestätigungsmail an die angegebene Administrator Email-Adresse. Mit dem Link in dieser Email bestätigt ihr die Änderung der Email-Adresse.