Synology DSM7 und PostgreSQL ?

TZ_Adm_Fabian

Benutzer
Mitglied seit
25. Mai 2022
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Vielen Dank! Es läuft soweit! Ich hatte das mit dem Mountpoint nicht verstanden und vergeblich i.d. Postgres-Doku nach einer Variablen gesucht, die ich setzten muss. Jetzt scheint erst mal alles zu klappen!

Das mit pgdump klingt gut, das sehe ich mir mal an.

Und ja, ich gebe Euch Recht - das läuft mit docker schon schön a.d. Synology. Ich habe einen große und schnelle (Ryzen mit 4GB RAM).

pg4Admin war auch ein guter Tipp - auch wenn ich noch nicht viel verstanden habe. SQL ist mir eigentlich auch nicht fremd, ich habe nur die letzten Jahre wenig damit gemacht on noch nichts mit Postgres.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Das kannst du aus der Anleitung von Dockerhub auch entnehmen. Dort steht weiter unten:
$ docker run -d \
--name some-postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /custom/mount:/var/lib/postgresql/data \
postgres
das kannst du fast schon über die Aufgabe oder SSH installieren.
zur Erläuterung:
--name # ist der Name wie der Container nachher auf der Diskstation heißt
-e # sind die Variablen in dem Container, die Einstellungen welche unter Erweitert/Umgebung eingegeben wird (sollten schon übernommen sein)
-v # sind die gemappten Verzeichniss(e) alles was vor dem : steht ist dein lokales Verzeichnis/Port, nach dem : das Verzeichnis/Port im Docker
-p # für die Ports extern/intern
postgres # der Name des zu ladenden Image, oft auch mit Tag (latest oder Versionsnummer)

Das kann man aber noch mit Rechte, Ports oder Timezone erweitern, je nach dem was benötigt wird.

Um in deinem Fall Postgres via SSH oder Aufgabe zu installieren mit Ports sollte das Ganze ungefähr so aussehen:
docker run -d --name postgres \
-p 10000:5432 \
-e POSTGRES_PASSWORD=DeinSicheresPasswort \
-v /volume1/docker/postgres/data:/var/lib/postgresql/data \
--restart always \
postgres:latest

--restart always # ist die Option den Container neu zu starten bei Ausfall - auch per Haken in der GUI änderbar.

Alle Docker Container sind gleich aufgebaut und wenn man sich erst einmal bisschen eingefunden hat ist das auch nicht mehr schwer. Ich hoffe es bringt dir ein bisschen Licht ins Dunkel. Wenn du Watchtower installierst wird der Container automatisch upgedatet und das alte Image (nicht Datenbank) gelöscht. Alles automatisch per Aufgabe steuerbar.
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
-v /volume1/docker/postgres/data:/var/lib/postgresql/data
... wenn ich das richtig verstehe, schreibt postgres damit seine Daten nach "/volume1/docker/postgres/data/" - im Dateisystem des NAS, auserhalb des Containers, richtig?

Kann ich dafür IRGENDEIN Verzeichnis nehmen, oder muss das irgendwo unterhalb von */.../docker/postgres/" liegen? Welche Zugriffsrechte muss ich setzen, bzw unter welchem Benutzer läuft postgres in Docker?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Du kannst jeden Pfad auf deiner Synology nutzen. Die User ID unter der der Container laufen soll, kannst du mitgeben. Dann muss dieser User Zugriff haben. Den Default User den psql nutzt weiß ich gerade nicht, aber kannst es ja nachgucken
 
  • Like
Reaktionen: Nixnuzz

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Danke, und noch eine Frage hinterher:

Eine VM bekommt einen eigenen Rechnernamen und eine eigene IP - ich kann sie also auf einen anderes NAS umziehen - und Clients können sie unter derselben Adresse erreichen ... gibt es für Docker einen ähnlichen Mechanismus, ohne dass ich die Clients umkonfigurieren muss?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.191
Punkte für Reaktionen
73
Punkte
68
Ich nutze dafür den DNS Server und einen CNAME, der dann jeweils auf die richtige DS zeigt.
 
  • Like
Reaktionen: Nixnuzz

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Du kannst Docker Containern eine eigene IP mit MACVLAN geben, aber das macht in den meisten Fällen mehr Arbeit/Probleme als es nützt. Ich nutze auch alle Dienste über den Reverse Proxy. Ich muss es also nur an einer Stelle anpassen. Die Clients bekommen davon nichts mit.
 
  • Like
Reaktionen: Nixnuzz

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Hmmm ... DNS macht im Moment noch die Fritzbox. Natürlich muss da noch eine "richtige" Lösung her, spätestens wenn ein directory aufgesetzt wird ... aber das ist ein Thema für "später" 🙃

"Reverse Proxy" - im Prinzip kann ich mir vorstellen, was der macht - aber wo sitzt der, ist das eine Funktion der DS?

Sorry für die vielleicht dummen Fragen - auf Synology bin ich ein Noob, und meine IT-Basics kommen von Windows 3.11/95 und Samba unter Suse 5 irgendwas.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Die DS hat auch einen integriert. Bei mir läuft er in einer VM auf einem Proxmox Host.
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Also den Techno-Speak hast du echt drauf, ich muss jedes Wort googeln :ROFLMAO:
Aber trotzdem danke, damit habe ich wenigstens die Stichworte.

Also wenn ich eine Datenbank von NAS-A nach NAS-B umziehen will - weil ich NAS-A zerschossen hab, oder sich das organisatorisch als günstiger erweist - brauch ich ein drittes Gerät, was DNS macht, die Einträge bei Bedarf umbiegt, oder einen Reverse-Proxy bietet?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Genau... Du brauchst im Netz einfach einen Server/Gerät der dein DNS übernimmt. Der muss nichts mit den anderen Servern/Anwendungen zu tun haben. Das kann ein Raspi sein, eine VM, ein X-Beliebiges Gerät was Docker oder NGINX kann.
 
  • Like
Reaktionen: Nixnuzz

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
OK, danke. Auf die Dauer werde ich darum nicht herum kommen - die Datenbank ist nur einer von mehreren Diensten, die "nebenbei" auf irgendwelchen Arbeitsplätzen mitlaufen, und die aufs NAS umziehen sollen - und es ist noch nicht ganz klar, auf welcher auf welche.

... und weil für mich das Ganze noch ziemlich experimentell ist - und somit das Hauptrisiko (noch vor irgendwelchen Hardwareausfällen) eine Fehlkonfiguration meinerseits - sollten DNS-Server und/oder Reverse-Proxy nicht auf der DS selbst laufen. Langsam wird es klar, nochmal danke.
 
Zuletzt bearbeitet:

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
... ok, damit war ich schon ein bisschen offtopic - zurück zum Container mit postgres. Ist es möglich und sinnvoll, den Container im Stil von inetd zu starten - dh erst, wenn ein Client darauf zugreifen will?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Soweit ich weiß geht das nicht. Müsstest du dir selber scripten. Aber mir fällt kein Grund ein wieso man das machen sollte. Der Server läuft doch eh, dann kann er auch die DB laufen lassen.
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.191
Punkte für Reaktionen
73
Punkte
68
nein,macht keinen Sinn. Dauert viel zu lange bis der hochkommt und Du möchtest auch nicht die DS dafür ändern.

BTW: Es gibt auch ein Synology DNS Server Packet
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Aber mir fällt kein Grund ein wieso man das machen sollte. Der Server läuft doch eh, dann kann er auch die DB laufen lassen.
Ich weiss ja nicht, welche Last so ein Datenbank-Container erzeugt, wenn nicht darauf zugegriffen wird. Eine VM mit stark gestripptem Windows 10 erzeugt schon ohne jegliche Interaktion eine CPU-Last von 20-25% - da wäre ich ganz glücklich, wenn die erst auf Abruf startet ... dachte mir Ähnliches für den Container.

BTW: Es gibt auch ein Synology DNS Server Packet
Wie oben ausgeführt - meine Hauptbefürchtung ist, dass ich selbst die DS zerschiesse - und dann geht im Netz nix mehr - deshalb DNS auf anderes Gerät.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Hier mal die Statistiken von meinem PSQL Server. Da ist auch keine Last drauf.
1707041376576.png
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Ahh danke - das spricht eindeutig für die Container-Variante - die kann natürlich ohne Weiteres mitlaufen (y)
 

Nixnuzz

Benutzer
Mitglied seit
16. Jan 2024
Beiträge
217
Punkte für Reaktionen
68
Punkte
28
Hab ein bisschen mit einem mssql-Container rumgespielt ... der Container-Manager bietet keine Möglichkeit einen User-Parameter (-u) mitzugeben. Ohne schlägt die Initialisierung der Vezeichnisse und Datenstrukturen fehl. Und wenn man das auf der Kommandozeile macht, muss ausserdem der owner der gemappten Verzeichnisse (ausserhalb des Containers) entsprechend verbogen werden, an der User- und Reschteverwaltung der DS vorbei ...

- hab ich mit postgres (im Container) Ähnliches zu erwarten?
- würde es bei mssql reichen, den Container einmalig als root zu starten, damit die Verwaltungsstrukturen angelegt sind, und danach ohne explizit erzwungenen user laufen zu lassen?
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Das ist aber relativ normal, dass du einem Container entsprechende Infos PGID/PUID mitgibst, mit denen er dann in den Ordnern „hantiert“. Ich nutze Paperless-ngx und würde mal davon ausgehen, dass PostgreSQL die Rechte bekommt, die ich dem gesamten Stack mitgebe.
 


 

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