March 8Mar 8 Guten Morgen liebe Community,ich versuche seit gestern den Open-Archiver Container von janmer einzurichten und habe mir dafür auch die zusätzlichen Container runtergeladen die im CA drinstehen: Valkey, Meilisearch und Postgresql17. Letztere laufen auch laut den Logs ohne Probleme.Ich habe im Template des open-archiver containers auch alle Daten eingetragen, aber starten will er nicht. Das liegt daran, dass ich nicht weiß was ich im Feld DATABASE_URL eingeben muss bzw. es falsch eingegeben habe, denn der Log zeigt einen Invalid Database URL Fehler an. Der Standardwert für dieses Feld lautet postgresql://POSTGRES_USER:POSTGRES_PASSWORD@postgres:5432/POSTGRES_DBLiege ich damit richtig wenn ich die Werte durch die Angaben aus meinem Postgresql17 Container ersetzen muss?Im Log steht dann folgendes: Invalid DATABASE_URL, please check your .env file. TypeError: Invalid URL at new URL (node:internal/url:827:25) at encodeDatabaseUrl (/app/packages/backend/dist/helpers/db.js:6:21) at runMigrate (/app/packages/backend/dist/database/migrate.js:16:57) at Object.<anonymous> (/app/packages/backend/dist/database/migrate.js:24:1) at Module._compile (node:internal/modules/cjs/loader:1706:14) at Object..js (node:internal/modules/cjs/loader:1839:10) at Module.load (node:internal/modules/cjs/loader:1441:32) at Function._load (node:internal/modules/cjs/loader:1263:12) at TracingChannel.traceSync (node:diagnostics_channel:328:14) at wrapModuleLoad (node:internal/modules/cjs/loader:237:24) { code: 'ERR_INVALID_URL', input: 'postgresql://postgres-open-archiver:passwort123@postgresql17:5432/open-archiver-db' } Migration failed! Error: Invalid DATABASE_URL at encodeDatabaseUrl (/app/packages/backend/dist/helpers/db.js:14:15) at runMigrate (/app/packages/backend/dist/database/migrate.js:16:57) at Object.<anonymous> (/app/packages/backend/dist/database/migrate.js:24:1) at Module._compile (node:internal/modules/cjs/loader:1706:14) at Object..js (node:internal/modules/cjs/loader:1839:10) at Module.load (node:internal/modules/cjs/loader:1441:32) at Function._load (node:internal/modules/cjs/loader:1263:12) at TracingChannel.traceSync (node:diagnostics_channel:328:14) at wrapModuleLoad (node:internal/modules/cjs/loader:237:24) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5) Scope: all 5 workspace projects Lockfile is up to date, resolution step is skipped Progress: resolved 1, reused 0, downloaded 0, added 0 Packages: +630 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Progress: resolved 630, reused 0, downloaded 83, added 63 Progress: resolved 630, reused 0, downloaded 169, added 103 Progress: resolved 630, reused 0, downloaded 196, added 110 Progress: resolved 630, reused 0, downloaded 218, added 118 Progress: resolved 630, reused 0, downloaded 286, added 271 Progress: resolved 630, reused 0, downloaded 466, added 466 Progress: resolved 630, reused 0, downloaded 547, added 466 Progress: resolved 630, reused 0, downloaded 554, added 466 Progress: resolved 630, reused 0, downloaded 554, added 467 Progress: resolved 630, reused 0, downloaded 625, added 625 Progress: resolved 630, reused 0, downloaded 628, added 626 Progress: resolved 630, reused 0, downloaded 629, added 628 Progress: resolved 630, reused 0, downloaded 629, added 629 Progress: resolved 630, reused 0, downloaded 630, added 629 Progress: resolved 630, reused 0, downloaded 630, added 630, done .../[email protected]/node_modules/esbuild postinstall$ node install.js .../[email protected]/node_modules/esbuild postinstall$ node install.js .../[email protected]/node_modules/esbuild postinstall: Done .../[email protected]/node_modules/esbuild postinstall: Done dependencies: + concurrently 9.2.0 + dotenv-cli 8.0.0 devDependencies: skipped ╭ Warning ─────────────────────────────────────────────────────────────────────╮ │ │ │ Ignored build scripts: msgpackr-extract, sqlite3. │ │ Run "pnpm approve-builds" to pick which dependencies should be allowed │ │ to run scripts. │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ packages/frontend prepare$ svelte-kit sync || echo '' packages/frontend prepare: Missing Svelte config file in /app/packages/frontend — skipping packages/frontend prepare: Done Done in 24s using pnpm v10.13.1 > [email protected] db:migrate /app > dotenv -- pnpm --filter @open-archiver/backend db:migrate > @open-archiver/[email protected] db:migrate /app/packages/backend > node dist/database/migrate.js [[email protected]] injecting env (0) from .env (tip: prevent committing .env to code: https://dotenvx.com/precommit) /app/packages/backend: ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL @open-archiver/[email protected] db:migrate: `node dist/database/migrate.js` Exit status 1 ELIFECYCLE Command failed with exit code 1.Ich habe es auch ausprobiert mit dem Standardwert, ebenfalls ohne Erfolg. Was mache ich falsch? Ich sehe meinen Fehler nicht und wäre euch wirklich dankbar wenn ihr mich in die richtige Richtung schubsen könntet. Die Zugangsdaten sind übrigens nicht die echten, ich habe sie nur für das Beispiel angepasst.
March 9Mar 9 Community Expert ->Liege ich damit richtig wenn ich die Werte durch die Angaben aus meinem Postgresql17 Container ersetzen muss?Ja und möglichst einen eigenen User dafür anlegen und ihm nur Rechte auf seine DB/Tabellen gebenBeispiel:postgresql://POSTGRES_USER:POSTGRES_PASSWORD@HOST:5432/POSTGRES_DBpostgresql://ichbineinuser:[email protected]:5432/meinedatenbankBasic Format of a Connection StringThe format of a PostgreSQL connection string is as follows:postgresql://[user[:password]@][host][:port][/dbname][?param1=value1¶m2=value2]Explanation:postgresql://: This prefix identifies the protocol.user: The username for the database.password: (Optional) Password for the user.host: The address of the PostgreSQL server (e.g., localhost or an IP address).port: (Optional) The port where PostgreSQL is listening. Default is 5432.dbname: The name of the database you want to connect to.Parameters: Additional connection options can be passed as URL parameters. Edited March 9Mar 9 by dibux
March 9Mar 9 Author 2 hours ago, dibux said:->Liege ich damit richtig wenn ich die Werte durch die Angaben aus meinem Postgresql17 Container ersetzen muss?Ja und möglichst einen eigenen User dafür anlegen und ihm nur Rechte auf seine DB/Tabellen gebenBeispiel:postgresql://POSTGRES_USER:POSTGRES_PASSWORD@HOST:5432/POSTGRES_DBpostgresql://ichbineinuser:[email protected]:5432/meinedatenbankBasic Format of a Connection StringThe format of a PostgreSQL connection string is as follows:postgresql://[user[:password]@][host][:port][/dbname][?param1=value1¶m2=value2]Explanation:postgresql://: This prefix identifies the protocol.user: The username for the database.password: (Optional) Password for the user.host: The address of the PostgreSQL server (e.g., localhost or an IP address).port: (Optional) The port where PostgreSQL is listening. Default is 5432.dbname: The name of the database you want to connect to.Parameters: Additional connection options can be passed as URL parameters.Dann habe ich ja alles erstmal richtig gemacht. Woran kann es dann liegen, dass ich einen "Invalid DATABASE_URL" Fehler bekomme?
March 9Mar 9 Community Expert 21 minutes ago, Amr0d said:Woran kann es dann liegen, dass ich einen "Invalid DATABASE_URL" Fehler bekomme?Wenn User/Passwort passen und host-ip:port, passt auch der Datenbank-Name? Mehr steht in der URL ja nicht drin 😉Du scheinst ein blankes postgres installiert zu haben, dann gibt es bestimmt irgendwo ein Skript, was die passende Datenbank inkl. User dort anlegt, oder?Oder sollte Dein Open-Archiver Container das beim ersten Start machen? Ich kenne den nicht...sollte aber in der Dokumentation stehen....
March 9Mar 9 Community Expert 1 hour ago, _alo_ said:Wenn User/Passwort passen und host-ip:port, passt auch der Datenbank-Name? Mehr steht in der URL ja nicht drin 😉Du scheinst ein blankes postgres installiert zu haben, dann gibt es bestimmt irgendwo ein Skript, was die passende Datenbank inkl. User dort anlegt, oder?Oder sollte Dein Open-Archiver Container das beim ersten Start machen? Ich kenne den nicht...sollte aber in der Dokumentation stehen....Der Docker (wenn er Zugriff hat) sollte eigentlich die Tabellen in der Datenbank beim initialen Start anlegen. Hat denn deine Postg. die passenden Datenbank mit dem passenden User? Du musst schon die Datenbank anlegen und den passenden User und den auf diese Datenbank zulassen (grant und alles was geht mit Rechten) "ALSO PER HAND" mit dem passenden Tool (z.B. HeidiSQL). Hast du denn Zugriff mit z.B. HeidiSQL? bei mir z.B. MariaDB: jedes Datenbank/Tablespace hat seinen eigenen User (nur root darf auf alles)postgresql://ichbineinuser:[email protected]:5432/meinedatenbank Edited March 9Mar 9 by dibux
March 9Mar 9 Community Expert ja eben die Tabellen in der Datenbank wird er wohl anlegen wollen, dafür muss aber doch die DB vorhanden sein und eben auch der User - wer legt das an? Muss man das vorher?Ich hab mal auf die Schnelle im github hierzu geschaut, im compose-file ist das so angegeben:dort siehst du schonmal den Standardnamen der DB: "open_archive".Vielleicht probierst du es mal damit...
March 9Mar 9 Community Expert 3 minutes ago, _alo_ said:ja eben die Tabellen in der Datenbank wird er wohl anlegen wollen, dafür muss aber doch die DB vorhanden sein und eben auch der User - wer legt das an? Muss man das vorher?Ich hab mal auf die Schnelle im github hierzu geschaut, im compose-file ist das so angegeben:dort siehst du schonmal den Standardnamen der DB: "open_archive".Vielleicht probierst du es mal damit...Cool, aber die Datenbank in PostG und den User muss man als root/admin in PostG anlegen sonst kann der Docker seine Tabellen nicht anlegen ;-) oder man lässt den Docker per admin auf die Datenbank.. AUTSCH -> Ausser man hat eine eigene Docker Datenbank exklusiv für open_archiv (was mir irgendwie komisch vorkommt, da eine "Datenbank" ja dafür ausgerichtet ist viele Anwendungen zu bedienen). Ich habe auf meiner MariaDB viel Anwendungen und auf meinem redis auch und es läuft wie geschnitten Brot (mit Butter) Edited March 9Mar 9 by dibux
March 9Mar 9 Community Expert 2 minutes ago, dibux said:Cool, aber die Datenbank in PostG und den User muss man als root/admin in PostG anlegen sonst kann der Docker seine Tabellen nicht anlegen ;-) oder man lässt den Docker per admin auf die Datenbank.. AUTSCHJa und eben dazu hab ich eben hier (GitHub - LogicLabs-OU/OpenArchiver: An open-source platform for legally compliant email archiving. · GitHub) nichts gefunden, da steht nur man soll das .env anpassen und nach dem compose up läuft angeblich alles. Sehe ich nicht so.Die nicht unwesentliche Info, dass man das eben noch manuell anlegen muss, fehlt hier m.M.n..Gerade deswegen gibt es ja bei vielen Diensten auch so vorgefertigte Datenbank-dockers, die das alles schon richtig eingestellt haben, um perfekt zusammen zu arbeiten, wie z.B. PostgreSQL_ImmichDa hat man solche Probleme nicht....
March 9Mar 9 Community Expert 5 minutes ago, _alo_ said:Ja und eben dazu hab ich eben hier (GitHub - LogicLabs-OU/OpenArchiver: An open-source platform for legally compliant email archiving. · GitHub) nichts gefunden, da steht nur man soll das .env anpassen und nach dem compose up läuft angeblich alles. Sehe ich nicht so.Die nicht unwesentliche Info, dass man das eben noch manuell anlegen muss, fehlt hier m.M.n..Gerade deswegen gibt es ja bei vielen Diensten auch so vorgefertigte Datenbank-dockers, die das alles schon richtig eingestellt haben, um perfekt zusammen zu arbeiten, wie z.B. PostgreSQL_ImmichDa hat man solche Probleme nicht....Gebe ich dir etwas Recht. Aber für jeden Docker dann einen weitern Docker für die Datenbank anzulegen ist für mich eher suboptimal. Immich Docker + Datenbank Docker = 2, MagMich Docker + Datenbank Docker = 2 (Also dann schon 4 Docker und die Datenbankdocker langweilen sich und verbrauchen Ressourcen und dann haben wir 5 oder mehr PostG Docker?) WARUM? PostG. MariaDB, MySQL, MikkisoftSQL sind gebaut für große Instanzen und können locker hunderte Anwendungen verwalten mit einem Docker. Mal abgesehen von der Übersicht und Wartung ;-) Edited March 9Mar 9 by dibux
March 9Mar 9 Community Expert Just now, dibux said:Gebe ich dir etwas Recht. Aber für jeden Docker dann einen weitern Docker für die Datenbank anzulegen ist für mich eher suboptimal. Immich Docker + Datenbank Docker = 2, MagMich Docker + Datenbank Docker = 2 (Also dann schon 4 Docker und die Datenbankdocker langweilen sich und verbrauchen Ressourcen) WARUM? PostG. MariaDB, MySQL, MikkisoftSQL sind gebaut für große Instanzen und können locker hunderte Anwendungen verwalten mit einem Docker. Mal abgesehen von der Übersicht und Wartung ;-)Ja natürlich, das war auch nur ein Beispiel!WENN man schon den standard Datenbank Container empfiehlt bzw. über compose mitinstalliert, DANN erwarte ich aber auch entsprechende Infos in der Doku, wie ich dort die DB und den User anlege (nicht jeder User kennt sich ausreichend mit postgres aus).Eine alternative wäre eben ein angepasster DB-docker.DAS ist meine Kritik an dieser Seite (GitHub - LogicLabs-OU/OpenArchiver: An open-source platform for legally compliant email archiving. · GitHub) mehr nicht. Edited March 9Mar 9 by _alo_
March 9Mar 9 Author Thema Datenbank: Ich habe mir den Postgresql 17 Container aus dem CA runtergeladen und dort folgende Variablen entsprechend ausgefüllt POSTGRES_PASSWORD, POSTGRES_USER, POSTGRES_DBDie Angaben habe ich dann per copy/paste in der Variable DATABASE_URL vom open-archiver Container entsprechend ersetzt. Da beide Docker im selben custom Netzwerk sind habe ich anstelle der IP einfach den Dockernamen inkl. Port angegeben.Bisher hatte ich den Eindruck, dass man da nicht viel falsch machen kann, aber scheinbar liege ich da falsch. Funktioniert hat diese Methode ja auch bei immich, Nextcloud und ähnlichem.Thema mehrere Datenbanken oder lieber einzelne Docker pro App? Das Thema hatte ich im Unraid Discord angesprochen und dort hat man mir dazu geraten lieber für jede App einen eigenen Datenbank Container anzulegen. Das wäre professioneller. Daran habe ich mich erstmal gehalten. Lieber wäre es mir aber schon wenn das alles unter einem Hut wäre. Ist glaube ich auch viel übersichtlicher. Aber das kann ich ja immer noch machen. Laufen sollte das erstmal. Edited March 9Mar 9 by Amr0d
March 9Mar 9 Community Expert 1 hour ago, Amr0d said:Da beide Docker im selben custom Netzwerk sind habe ich anstelle der IP einfach den Dockernamen inkl. Port angegeben.…und Docker erledigt dann die namensauflösung des Dockernamens ?Keine Ahnung ob das geht, ich würde hier immer eher einen richtigen DNS Namen oder um noch mehr fehlerpotential aus dem Weg zu gehen die ip Adresse nehmen.
March 9Mar 9 Author 18 minutes ago, _alo_ said:…und Docker erledigt dann die namensauflösung des Dockernamens ?Keine Ahnung ob das geht, ich würde hier immer eher einen richtigen DNS Namen oder um noch mehr fehlerpotential aus dem Weg zu gehen die ip Adresse nehmen.Hat zumindest in der Vergangenheit super funktioniert. Aus dem Grund packt man die Container ja in das selbe custom Netzwerk, dann nimmst du anstelle der IP einfach den Namen des Containers. Unabhängig davon funktioniert es aber mit der IP ebenfalls nicht. Da bekomme ich den gleichen Fehler.
March 10Mar 10 Community Expert Ich frage nochmal: kommst du denn mit z.B. HeidiSQL auf die Datenbank?(Es gibt keinen "professionellen" Vorteil für jede Anwendung einen eigenen Datenbankcontainer aufzumachen) Ein Docker mit Postg oder MariaDB kann unzählige Datenbanken beherrschen, man muss nur die User und die Rechte richtig setzen!
March 10Mar 10 Author 1 hour ago, dibux said:Ich frage nochmal: kommst du denn mit z.B. HeidiSQL auf die Datenbank?(Es gibt keinen "professionellen" Vorteil für jede Anwendung einen eigenen Datenbankcontainer aufzumachen) Ein Docker mit Postg oder MariaDB kann unzählige Datenbanken beherrschen, man muss nur die User und die Rechte richtig setzen!Ich nutze Adminer dafür, sollte ja keinen Unterschied machen?! Aber ja, ich komme auf die Datenbank mit den Zugangsdaten.Ja, das dachte ich mir schon. Dann werde ich das in Zukunft über einen Docker laufen lassen. Edited March 10Mar 10 by Amr0d
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.