Postgres stoppt bei Start von Joplin

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Ulrich0815

Benutzer
Registriert
12. Feb. 2026
Beiträge
11
Reaktionspunkte
1
Punkte
3
Moin,
ich bekomme Joplin nicht zum laufen.
Joplin-DB wird immer sofort wieder mit folgender Fehlermeldung beendet:
"initdb: error: directory "/var/lib/postgresql/data" exists but is not empty"
"initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data"."
Das im dem Pfad schon Daten sind ist klar, da schon andere Container installiert sind die auch Postgres nutzen.
Ich habe den Pfad in der yaml für das Setuo dann um eine Verzeichnis ergänzt, bringt aber gar nix.
Als Frischling will ich auch nicht gleich zu mutig händisch in die Tiefe gehen, da geht Erfahrungsgemäß mehr kaput als heile...

Danke & Gruß
Ulrich
 
Wenn du schon PostgreSQL laufen hast, wieso hast du dann einen Joplin DB Container? Der ist doch nicht mehr nötig. Du greifst da nur noch auf den anderen Container zu....
Oder hast du jeweils pro Service einen eigen DB Container und diese greifen auf die selben Daten auf der Platte zu? Dann hättest du eventuell ein größeres Problem. Wenn die PostgreSQL Versionen sich unterscheiden kommt genau die Meldung.
 
Meine Gedanke ist "pro App ein Container".
Ich wüsste nicht wie ich Joplin dazu bringen könnte auf eine bestehende Datenbank Datenbank zuzugreifen. Die Container-Instalation legt automatisch einen App-Container und einen DB Container an.
Der App-Container wird auch grün angezeitgt, aber via IP darauf zugreifen kann ich nicht, ohne DB Anbindung startet die App also wohl nicht durch um da was in der GUI anpassen zu können.
 
Du schreibst aber ....
Das im dem Pfad schon Daten sind ist klar, da schon andere Container installiert sind die auch Postgres nutzen.
Das heißt für mich, dass du den selben Ordner verwendest.
Ich wüsste nicht wie ich Joplin dazu bringen könnte auf eine bestehende Datenbank Datenbank zuzugreifen. Die Container-Instalation legt automatisch einen App-Container und einen DB Container an.
Hast du dir die Doku durchgelesen oder dich damit befasst? Du musst dafür nur die Variablen setzen:
Code:
DB_CLIENT=pg
POSTGRES_PASSWORD=password
POSTGRES_DATABASE=dbname
POSTGRES_USER=dbuser
POSTGRES_PORT=dbport
POSTGRES_HOST=dbip

Meine Gedanke ist "pro App ein Container".
Ja schon richtig, dann aber auch separate Mounts und nicht 5 DB Container auf einen Ordner.... Das wird mit der Zeit bestimmt zu großen Problemen führen.

Edit: siehe https://hub.docker.com/r/joplin/server
 
Nach meinem Verstädnnis wird eine eigene DB angelegt:
DB_CLIENT: pg
POSTGRES_PASSWORD: 'SICHERES_DB_PASSWORT_HIER'
POSTGRES_DATABASE: joplin
POSTGRES_USER: joplinuser
POSTGRES_PORT: 5432
POSTGRES_HOST: db
Wobei der Pfad ja wohl der allgemiene ist:
- /volume1/docker/joplin:/var/lib/postgresql/data:rw
 
services:
db:
image: postgres:17
container_name: Joplin-DB
hostname: joplin-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "joplin", "-U", "joplinuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/joplin:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: joplin
POSTGRES_USER: joplinuser
POSTGRES_PASSWORD: 12345
restart: on-failure:3

joplin:
image: joplin/server:latest
container_name: Joplin
depends_on:
- db
ports:
- 22300:22300
environment:
APP_PORT: 22300
APP_BASE_URL: http://192.168.178.138:22300
DB_CLIENT: pg
POSTGRES_PASSWORD: 12345
POSTGRES_DATABASE: joplin
POSTGRES_USER: joplinuser
POSTGRES_PORT: 5432
POSTGRES_HOST: db
MAX_TIME_DRIFT: 0
restart: on-failure:3
 
Ok.... Also nicht so wie du es geschrieben hast....
Das im dem Pfad schon Daten sind ist klar, da schon andere Container installiert sind die auch Postgres nutzen.
Der Ordner müsste leer sein. Vor dem ersten Start sollte da nichts drin sein. Außer du hast schon eine bestehende DB. Hast du mal die Daten gelöscht? Nicht, dass es überbleibsel sind von deinen Versuchen....
 
Mein Linux Wissen ist überschaubar, daher die Frage, wie komme ich an den Pfad?
Im Terminal sehe ich den Docker Pfad ohen weitere Unterverzeichnisse.
Bildschirmfoto 2026-02-14 um 11.27.09.png
 
Dann geht bei dir aber was gewaltig schief.... Probier doch mal die Compose / env von meinem Link. Da steht ja wie du es einrichtest.... Ansonsten lösch die Container und mach alles neu und kopiere dann mal die Logs.
 
Anbei die beiden Logs.
Auch nach Neuinstalltion, nicht die Erste, das gleiche Problem.
Danke & Gruß Ulrich
 

Anhänge

Bitte die Logs als Codeblock oder ähnliches anhängen. Ich lade keine zip Dateien runter.
 
Code:
Joplin-DB
date,stream,content
2026/02/15 12:27:07,stdout,

2026/02/15 12:27:07,stdout,Data page checksums are disabled.

2026/02/15 12:27:07,stderr,"initdb: hint: If you want to create a new database system, either remove or empty the directory \"/var/lib/postgresql/data\" or run initdb with an argument other than \"/var/lib/postgresql/data\".
"
2026/02/15 12:27:07,stderr,initdb: error: directory "/var/lib/postgresql/data" exists but is not empty

2026/02/15 12:27:07,stdout,

2026/02/15 12:27:07,stdout,The default text search configuration will be set to "english".

2026/02/15 12:27:07,stdout,The default database encoding has accordingly been set to "UTF8".

2026/02/15 12:27:07,stdout,The database cluster will be initialized with locale "en_US.utf8".

2026/02/15 12:27:07,stdout,

2026/02/15 12:27:07,stdout,This user must also own the server process.

2026/02/15 12:27:07,stdout,The files belonging to this database system will be owned by user "postgres".

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stdout,Data page checksums are disabled.

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stderr,"initdb: hint: If you want to create a new database system, either remove or empty the directory \"/var/lib/postgresql/data\" or run initdb with an argument other than \"/var/lib/postgresql/data\".
"
2026/02/15 12:27:06,stderr,initdb: error: directory "/var/lib/postgresql/data" exists but is not empty

2026/02/15 12:27:06,stdout,The default text search configuration will be set to "english".

2026/02/15 12:27:06,stdout,The default database encoding has accordingly been set to "UTF8".

2026/02/15 12:27:06,stdout,The database cluster will be initialized with locale "en_US.utf8".

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stdout,This user must also own the server process.

2026/02/15 12:27:06,stdout,The files belonging to this database system will be owned by user "postgres".

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stdout,Data page checksums are disabled.

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stderr,"initdb: hint: If you want to create a new database system, either remove or empty the directory \"/var/lib/postgresql/data\" or run initdb with an argument other than \"/var/lib/postgresql/data\".
"
2026/02/15 12:27:06,stderr,initdb: error: directory "/var/lib/postgresql/data" exists but is not empty

2026/02/15 12:27:06,stdout,The default text search configuration will be set to "english".

2026/02/15 12:27:06,stdout,The default database encoding has accordingly been set to "UTF8".

2026/02/15 12:27:06,stdout,The database cluster will be initialized with locale "en_US.utf8".

2026/02/15 12:27:06,stdout,

2026/02/15 12:27:06,stdout,This user must also own the server process.

2026/02/15 12:27:06,stdout,The files belonging to this database system will be owned by user "postgres".

2026/02/15 12:27:05,stderr,"initdb: hint: If you want to create a new database system, either remove or empty the directory \"/var/lib/postgresql/data\" or run initdb with an argument other than \"/var/lib/postgresql/data\".
"
2026/02/15 12:27:05,stderr,initdb: error: directory "/var/lib/postgresql/data" exists but is not empty

2026/02/15 12:27:05,stdout,

2026/02/15 12:27:05,stdout,Data page checksums are disabled.

2026/02/15 12:27:05,stdout,

2026/02/15 12:27:05,stdout,The default text search configuration will be set to "english".

2026/02/15 12:27:05,stdout,The default database encoding has accordingly been set to "UTF8".

2026/02/15 12:27:05,stdout,The database cluster will be initialized with locale "en_US.utf8".

2026/02/15 12:27:05,stdout,

2026/02/15 12:27:05,stdout,This user must also own the server process.

2026/02/15 12:27:05,stdout,The files belonging to this database system will be owned by user "postgres".
 
Sind da vielleicht versteckte Dateien drin? ls -la eingeben und gucken was da drin ist.
 
Ich gebs auf, hier steht Aufwand und Nutzen in keinem Verhältnis.
Ich schaue mir bei Gelegenheit mal andere Lösungen an die mich weniger Zeit kosten.
 
Das Problem ist, dass dir die Grundkenntnisse von Docker fehlen. Das ist eigentlich kein Aufwand, wenn man auch weiß wofür die Sachen in der compose genau sind.
 
eigentlich ist das doch recht easy, soweit ich verstehe, sind das deine ersten Schritte mit joplin, also können wir auch erstmal löschen

- lösche mal das Projekt "joplin" vollständig, mittels Aktion/Bereinigen
- dann über den FileManager in das /docker Verzeichnis und dort joplin ebenfalls löschen
- lege ein neues Verzeichnis "joplin" direkt in dem Verzeichnis "docker" an
- unter "joplin" noch ein Verzeichnis "db"
- dann rüber zum Container Manager und neues Projekt anlegen
- setze den Pfad auf "volume1/docker/joplin"
- wähle docker-compose.yml erstellen
- füge dann nachfolgendes ein. So läuft das bei mir problemlos. viel Glück!
- "EIN_GEHEIMES_PASSWORD_NUTZEN" ersetzen mit eins deiner Wahl. Ich habe an beiden Stellen das selbe.


YAML:
version: "3.8"

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: joplin
      POSTGRES_USER: joplin
      POSTGRES_PASSWORD: "EIN_GEHEIMES_PASSWORD_NUTZEN"
    volumes:
      - /volume1/docker/joplin/db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U joplin -d joplin"]
      interval: 10s
      timeout: 5s
      retries: 10

  joplin:
    image: joplin/server:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "22300:22300"
    environment:
      # Server
      APP_PORT: "22300"
      APP_BASE_URL: "http://<IP-Deiner-SYNOLOGY>:22300"

      # Database
      DB_CLIENT: "pg"
      POSTGRES_HOST: "db"
      POSTGRES_PORT: "5432"
      POSTGRES_DATABASE: "joplin"
      POSTGRES_USER: "joplin"
      POSTGRES_PASSWORD: "EIN_GEHEIMES_PASSWORD_NUTZEN"

      # Optional: Logs etwas gesittet
      # LOG_LEVEL: "info"


ich hoffe damit läuft es.
 
  • Like
Reaktionen: JohneDoe
Jetzt geht es tatsächlich!
Es wurde jetzt Postgres 16 statt 17 installiert.
Und ich hatte im Joplin Verzeichnis keinen Ordner db angelegt, kann natürlch sein das schon da das Script drüber gestolpert ist.

Vielen Dank!
Gruß Ulrich
 
  • Like
Reaktionen: nexxus
Der Ordner muss nur leer sein. Auch keine versteckten Dateien wie z.b die @eadir Ordner von Synology.
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat