Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Open-Archiver Container einrichten klappt nicht wie gewünscht, was mache ich falsch?

Featured Replies

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_DB

Liege 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.

  • 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 geben

Beispiel:

postgresql://POSTGRES_USER:POSTGRES_PASSWORD@HOST:5432/POSTGRES_DB

postgresql://ichbineinuser:[email protected]:5432/meinedatenbank

Basic Format of a Connection String

The format of a PostgreSQL connection string is as follows:

postgresql://[user[:password]@][host][:port][/dbname][?param1=value1&param2=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 by dibux

  • 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 geben

Beispiel:

postgresql://POSTGRES_USER:POSTGRES_PASSWORD@HOST:5432/POSTGRES_DB

postgresql://ichbineinuser:[email protected]:5432/meinedatenbank

Basic Format of a Connection String

The format of a PostgreSQL connection string is as follows:

postgresql://[user[:password]@][host][:port][/dbname][?param1=value1&param2=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?

  • 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....

  • 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)

image.png

postgresql://ichbineinuser:[email protected]:5432/meinedatenbank

Edited by dibux

  • 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:

image.png

dort siehst du schonmal den Standardnamen der DB: "open_archive".

Vielleicht probierst du es mal damit...

  • 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:

image.png

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 by dibux

  • 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.. AUTSCH

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_Immich

Da hat man solche Probleme nicht....

  • 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_Immich

Da 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 by dibux

  • 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 by _alo_

  • 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_DB

Die 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 by Amr0d

  • 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.

  • 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.

  • 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!

  • 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 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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.