Homeserver - Proxmox - Docker Grundsatzfagen

Tekras

Cadet 4th Year
Registriert
Aug. 2012
Beiträge
78
Moin,

ich bin relativ neu in dem Bereich Homeserver und habe anscheinend etwas grundsätzliches nicht verstanden, daher dieser Post.

Zur Zeit läuft mein Plex Server auf meinem Desktop PC, das soll nicht so bleiben, daher habe ich mich entschlossen, mir einen kleinen Home Server einzurichten.

Wenn der schon mal da ist, kann ich ja auch gleich ein paar weitere Dienste laufen lassen, momentan würde ich mir das so vorstellen:

  • Open Media Vault als NAS
  • Plex oder Jellyfin
  • Adguard
  • Vaultwarden

Ich habe nun ja mindestens diese Optionen:

1) Proxmox mit LXC Container für jeden Dienst oben
2) Ne Linux VM auf Proxmox mit Docker/Portainer und dann die Docker Container mit den Diensten oben
3) Einfach ne Linux Distro nativ auf den Server und dann die Applikationen (mit oder ohne Docker installieren)

Fragen:
  • Warum nicht einfach 3 machen? Welchen Vorteile habe ich durch 1 oder 2 gegenüber 3?
  • Wenn 3, warum noch Docker, wieso installiere ich die Apps nicht einfach nativ auf das Linux?

Wenn ihr das so aufsetzen würdet, für welche Variante entscheidet ihr euch und warum?

Danke und viele Grüße,
Lukas
 
Hängt sicher von den eigenen Skills ab.

Ich glaube - ohne Proxmox gesehen zu haben - das es so der 1 stop shop ist. Installieren und dann die Community Container installieren, done.

Step 2 & 3 ist ja fast das selbe und erfordert etwas mehr Linux Kenntnisse (mMn)
 
Tekras schrieb:
3) Einfach ne Linux Distro nativ auf den Server und dann die Applikationen (mit oder ohne Docker installieren)
  • Wenn 3, warum noch Docker, wieso installiere ich die Apps nicht einfach nativ auf das Linux?
Habe ich so am laufen.

Warumd ann noch Docker? Naja weil die Grundideen von docker dann immer noch gelten. Service X will nginx in Version A, aber Service Y in Version B. Du hast dann immer noch deine konfigs eindeutig in volumes definiert und der rest ist Stateless, etc.
 
Proxmox ist klasse und sehr mächtig.
Wenn du allerdings viele VMs nutzen willst, brauchst du auch ordentlich Power in der Hostmaschine.
Ich beschäftige mich aktuell lustigerweise ebenfalls mit dem gleichen Thema.
Ich habe bereits länger einen Proxmox Server am laufen. Hab dafür ne alte HP Z 420 Workstation mit 6C/12T Xeon und 64GB RAM. Dazu ein Raid 5 aus 1TB SSDs.
Ist sicherlich nicht die sparsamste Variante, war aber da.
Ich plane jetzt aber auch eine Änderung. Aktuell sind viele kleine VMs für einzelne Dienste installiert (Omada, Home Assistant,...).
Ich beschäftige mich daher jetzt mit Portainer auf einer Ubuntu 20 LTS Maschine und möchte verschiedene Dienste darin unterbringen. Dazu kommt ein Nginx Reverse Proxy.

Wenn du das Thema verstehen willst, kann ich dir den Youtube Kanal von Raspberry Pi Cloud empfehlen. Der hat auch tolle Erklärvideos zu Docker/Portainer.
 
proxmox ist interessant, wenn du wirklich virtuelle maschinen laufen lassen willst und nicht nur dienste, die sowieso schon unter linux laufen. wenn dein anwendungsfall wie oben beschrieben ist, brauchst du kein proxmox. option 2 wäre sogar das ungünstigste, da man für hw-transcoding in plex/jellyfin in der vm keinen zugriff auf die igpu hat bzw. eine dgpu durchreichen müsste.

also entweder option 1 mit zumindest lxc für plex/jellyfin und die option auf richtige vms oder kein proxmox.
 
  • Gefällt mir
Reaktionen: Brati23 und Bob.Dig
Ich würde definitiv Variante 1 nehmen. Mit Proxmox hast du heutzutage ein bequemes UI, mit welcher du innerhalb von Sekunden neue VMs oder Container erstellen kannst. Du kannst vorgefertige Images runterladen oder selber kreieren und somit für jeden neuen Anwendungszweck (oder neues Projekt ;)) einen neuen Container erstellen lassen.

Warum ist dies besser als Variante 2 oder 3?

Meiner Meinung nach ergibt Möglichkeit 2 wenig Sinn, da du innerhalb von deinem Hypervisor Proxmox bereits die Möglichkeit hast direkt einen LXC-Container zu erstellen. Du brauchst die gewünschte Anwendung oder Workload nicht nochmal dediziert in eine Linux VM zu packen. Das generiert nur unnötig Overhead.

Der Vorteil hierbei wäre allerdings, dass du vorgefertigte Docker-Images verwenden kannst, was du auf dem Proxmox-Host so nicht machen kannst (ausser du installierst Docker direkt auf dem Hypervisor).

Möglichkeit 3 halte ich für unvorteilhaft, da dein Host durch die Installation von allen Applikationen anfängt zu fragmentieren. Es mag von der Performance die beste Option sein, aber nicht aus Sicherheits- oder Wartungsgründen.
Mit Containern hast du den Vorteil, dass du jede Applikation isoliert in eine eigene Umgebung packen kannst.
Wenn du dich nach ein paar Wochen entscheidest, dass du eine bestimmte Applikation nicht mehr brauchst, dann kannst du den Container einfach löschen und es bleiben keinerlei Konfigurations- oder Datenreste übrig. Bei der Installation direkt auf dem Host, musst du möglicherweise nochmal manuell übrige Log-, Konfiguration- und Anwendungsdateien entfernen, um sicherzustellen, dass alles weg ist.

Wie schon gesagt: All deine Workloads sind bei Möglichkeit 1 isoliert voneinander. Wenn ein Dienst Probleme machen sollte, oder bei einem Update ein Fehler unterlaufen ist, dann werden deine restlichen Container (und somit deine restliche Infrastruktur) nicht davon berührt.

Du hast auch die Freiheit unterschiedliche Linux-Betriebssysteme innerhalb der Container zu verwenden. Du kannst es dir wie bei einer virtuellen Maschine vorstellen. Der Unterschied beim Container ist jedoch, dass sich alle Container den Host-Kernel (Proxmox) teilen. Die freie Auswahl der Linux-Distributionen innerhalb vom Container hast du dennoch.
 
Tekras schrieb:
Ich habe nun ja mindestens diese Optionen:

1) Proxmox mit LXC Container für jeden Dienst oben
2) Ne Linux VM auf Proxmox mit Docker/Portainer und dann die Docker Container mit den Diensten oben
3) Einfach ne Linux Distro nativ auf den Server und dann die Applikationen (mit oder ohne Docker installieren)

Fragen:
  • Warum nicht einfach 3 machen? Welchen Vorteile habe ich durch 1 oder 2 gegenüber 3?
  • Wenn 3, warum noch Docker, wieso installiere ich die Apps nicht einfach nativ auf das Linux?

Wenn ihr das so aufsetzen würdet, für welche Variante entscheidet ihr euch und warum?
Ich habe 24/7 Mini-Server mit Ubuntu Server 22.04 drauf. Einige Tools habe ich direkt darauf installiert und einige laufen im Docker. Beim Docker hast du den Vorteil, dass sich das Tool nicht ins System überall installiert. Wenn man es weg haben will, dann muss (kann man) alles bereinigen. D.h. auch die Configs, die woanders liegen. Mit Docker kann man Sachen auch schneller ausprobieren. Wenn man viele Docker Container im Einsatz hat und diese unter Umständen nicht anpasst, dann verschwendet man unnötig Ressourcen (RAM, CPU -> somit auch Strom).

Mir persönlich geht es eher um die optimale Ausnutzung meiner Hardware.

Code:
OS: Ubuntu 22.04.3 LTS x86_64
Host: NUC7PJYH J67992-406
Kernel: 6.2.0-37-generic
CPU: Intel Pentium Silver J5005 (4) @ 2.800GHz
GPU: Intel GeminiLake [UHD Graphics 605]
Memory: 8024MiB / 31704MiB

Und die habe ich ohne Proxmox. Vielleicht würde ich heute den Setup mit Proxmox machen. Das weiß ich noch nicht.

Letztendlich muss man sich Fragen:
  • Was kann ich?
  • Was muss/will ich noch lernen?
  • Wie viel Zeit möchte ich in den Setup/Pflege investieren? -> denn je "komplexer" das System, desto mehr Arbeit habe ich.
Und wenn du dir das beantwortest, dann weißt du, was du machen kannst.
Ergänzung ()

DJKno schrieb:
Wenn du das Thema verstehen willst, kann ich dir den Youtube Kanal von Raspberry Pi Cloud empfehlen. Der hat auch tolle Erklärvideos zu Docker/Portainer.
Der Kanal ist gut.

Wenn man Blut geleckt hat, dann will man mehr. ;)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mehmet_b_90 und Testa2014
Ich habe bei mir ProxMox laufen und für jeden Dienst den ich haben möchte einen eigenen LXC-Container mit eigener IP-Adresse, natürlich würde das auch mit Docker etc. gehen, nur ist mir das mit der Port-zurechtbiegerei zu nervig.
 
Tekras schrieb:
Wenn ihr das so aufsetzen würdet, für welche Variante entscheidet ihr euch und warum?
Das Beste ist, wenn man sich einen kleinen Mini-PC (~200€) zum Rumspielen anschafft und alle Punkte, die du aufgelistet hast, ausprobiert. So habe ich gemacht.
 
  • Gefällt mir
Reaktionen: Brati23
Theoretisch ist Punkt 3 ausreichend. Da dann OMV installieren und über OMV kannste per Plugin afaik auch Docker hinzufügen, dann haste alles zusammen.

Ich bin die Proxmox Route gegangen. OMV läuft dort in einer eigenen VM genau wie Docker und nochmal eine Debian VM die per Wine ein Winprogramm 24/7 am laufen hat. Jellyfin läuft über einen LXC Container wie noch paar andere Sachen.
Vorteil für mich ist, dass die einzelnen Services sauber voneinander getrennt werden können und ich beim rumprobieren einfach einen Snapshot/Backup erstellen kann und im Zweifelsfall zurückkehren kann bzw. einfach löschen und gut ist.

Hardwaretechnisch läuft das alles über nen N100 Mini-PC, dem bei weitem die Leistung für meine Zwecke ausreicht. Jellyfin nutze ich nix besonderes wie Tone Mapping oder massenhaft Streams.
Verbrauchstechnisch kA was der alleine braucht. Mit den anderen an der Steckdose angeschlossenen Geräten (8 Port-Gbit-Switch, Raspberry Pi 4, USB Docking-Gehäuse mit 2 HDDs im Spindown und Gaming-PC in Standby bin ich insgesamt bei 28-30 Watt. Während der täglichen Backup-Erstellung auf die HDDs werden kurzzeitig Spitzen von bis zu 70W (anlaufen der HDDs) gemessen.
 
Hey Leute,

erstmal danke für den ganzen Input. :)

Nachdem ich alles gelesen habe, finde ich den Weg über einzelne LXC Container mittels Proxmox am besten.

0x8100 schrieb:
option 2 wäre sogar das ungünstigste, da man für hw-transcoding in plex/jellyfin in der vm keinen zugriff auf die igpu hat bzw. eine dgpu durchreichen müsste.

Würde ich aber Docker in einem LXC Container laufen lassen, würde HW Transcoding gehen wenn ich dann Plex mittels Docker Container laufen ließe?


slrzo schrieb:
Theoretisch ist Punkt 3 ausreichend. Da dann OMV installieren und über OMV kannste per Plugin afaik auch Docker hinzufügen, dann haste alles zusammen.

Das habe ich gesehen, dass das gehen sollte. Das wäre ja auch ein wenig der Unraid Ansatz. Das gefällt mir irgendwie nicht, Docker als Plugin auf ein NAS OS. Wenn mit Docker, würde ich es lieber als einen eigenen LXC Container laufen lassen und OMV das machen lassen wofür es eigentlich gedacht ist. Schuster bleib bei deinen Leisten und so.
 
Tekras schrieb:
Würde ich aber Docker in einem LXC Container laufen lassen, würde HW Transcoding gehen wenn ich dann Plex mittels Docker Container laufen ließe?
Wäre für mich zu kompliziert. Ist vermutlich davon abhängig, ob du noch andere Sachen hast, die HW Transcoding benötigen. Plex wäre daher ein eigener LXC-Container und nicht über Docker. Der Plex-Container hätte dann als privilegierter Container Zugriff auf das HW-Transcoding.

Hier noch eine Zusammenstellung an Unterstützungsskripten für Proxmox, bei denen so ziemlich alles gängige mit dabei ist: https://tteck.github.io/Proxmox/
 
  • Gefällt mir
Reaktionen: Tekras
Ich habe nochmal ne Frage:

Macht es überhaupt Sinn, OMV zu installieren, dort einen Fileshare zu erstellen, den ich dann wiederum in einen Plex CLX Container mounte?

Ich bin tatsächlich in diesem Bereich relativ unerfahren und je mehr ich lese, desto mehr Fragen kommen auf.

Der Share für Plex soll aber schon im Heimnetzwerk verfügbar sein. Theoretisch könnte ich doch auch einfach die HDD von Proxmox in den Plex Container mounten und dort einen SMB share aufsetzen.
 
Ich nutze Proxmox als Unterbau, für den Fall dass ich mal ne vollwertige VM brauche.
Ansonsten läuft auf meinem Proxmox eine zugenagelter connection LXC für SSH und VPN sowie eine debian VM als Docker Host.
Falls ich doch mal auf OPNsense o.ä. umsteigen will ist alles möglich.
Wenn ich schnell ne saubere W10/W11 VM brauche um was zu testen ist die in 1 Minute gestartet, in 5 Min frisch aus dem Backup recovered oder in 20 Min. frisch installiert.

Das einzige was gegen zu tief verschachtelte Virtualisierung spricht, ist tatsächlich das hw-transcoding per GPU. Juckt mich aber nicht. Mein Plex Content läuft auch ohne wunderbar. Auch wieviel Strom die Kiste beim abspielen ziehen würde ist mir (halbwegs) egal, weil es aufs Jahr betrachtet vermutlich keine 100 Stunden sind und daher keinen großen Unterschied aus macht. Da sind mir niedrige Idle Werte wichtiger.

Tekras schrieb:
den ich dann wiederum in einen Plex CLX Container mounte?
Bei mir liegt der Plex-Content in einem Volume des Docker Hosts, welches im Plex Docker Container gemountet wird. Der Docker Host macht auch die SMB Freigabe.
Solche Sachen sind unter Docker meiner Meinung nach simpler als mit LXC.
Vorallem sind die Docker Container (meist) fertige und durchdachte Images und mit Portainer hast du eine gute Management-Oberfläche.

Das wird sich aber bei mir demnächst ändern, weil ich einen NAS-like Dienst nutzen möchte, der dann auch den Plex Content aufnimmt.

Tekras schrieb:
momentan würde ich mir das so vorstellen:
  • Vaultwarden

Du brauchst für Vaultwarden zwingend noch Zertifikate und einen Reverse-Proxy (vorzugsweise mit integriertem Zertifikatsmangement) wie nginx proxy manager oder traefik.
 
Zuletzt bearbeitet:
h00bi schrieb:
Du brauchst für Vaultwarden zwingend noch Zertifikate und einen Reverse-Proxy (vorzugsweise mit integriertem Zertifikatsmangement) wie nginx proxy manager oder traefik.
Oder caddy, mein favorit bei kleinen Systemen mit wenig Last.
 
slrzo schrieb:
Theoretisch ist Punkt 3 ausreichend. Da dann OMV installieren und über OMV kannste per Plugin afaik auch Docker hinzufügen, dann haste alles zusammen.

Ich bin die Proxmox Route gegangen. OMV läuft dort in einer eigenen VM genau wie Docker und nochmal eine Debian VM die per Wine ein Winprogramm 24/7 am laufen hat. Jellyfin läuft über einen LXC Container wie noch paar andere Sachen.
Vorteil für mich ist, dass die einzelnen Services sauber voneinander getrennt werden können und ich beim rumprobieren einfach einen Snapshot/Backup erstellen kann und im Zweifelsfall zurückkehren kann bzw. einfach löschen und gut ist.

Hardwaretechnisch läuft das alles über nen N100 Mini-PC, dem bei weitem die Leistung für meine Zwecke ausreicht. Jellyfin nutze ich nix besonderes wie Tone Mapping oder massenhaft Streams.
Verbrauchstechnisch kA was der alleine braucht. Mit den anderen an der Steckdose angeschlossenen Geräten (8 Port-Gbit-Switch, Raspberry Pi 4, USB Docking-Gehäuse mit 2 HDDs im Spindown und Gaming-PC in Standby bin ich insgesamt bei 28-30 Watt. Während der täglichen Backup-Erstellung auf die HDDs werden kurzzeitig Spitzen von bis zu 70W (anlaufen der HDDs) gemessen.

@slrzo
nutzt du für Jellyfin freigegebene Shares von OMV als Medien-Ablage? Wenn ja, wie hasst du das mounten realisiert? Ist Jellyfin ein privilegierter Container oder bist du über den Host gegangen und hasst Bind Mount Points benutzt?
 
Tekras schrieb:
nutzt du für Jellyfin freigegebene Shares von OMV als Medien-Ablage?
ja.

Jellyfin läuft als privilegierter LXC-Container (wg. HW-Transcoding). OMV stellt einen SMB-Share bereit, der für den Jellyfin-User nur mit Lesezugriff ist.
Der LXC-Container hat in Proxmox die Berechtigung für SMB/CIFS und kann daher den Share direkt mounten. Zusätzlich besitzt er auch noch die FUSE-Berechtigung da ich innerhalb des LXC-Containers den OMV-Share nochmals über rar2fs mounte. In Jellyfin landet letztendlich der rar2fs-mount. Das nutze ich deshalb so, damit Jellyfin auch mit gepackten Dateien umgehen kann, ohne dass ich diese manuell entpacken muss.
 
Danke für die schnelle Antwort. Wenn ich HW-Transcoding möchte, muss ich da noch was bestimmtes beachten wie GPU Passthrough o.ä.?
 
Wenn du in Proxmox einen privilegierten Container nutzt dann brauchst du kein GPU Passthrough da der Container bereits Zugriff auf die Devices erhält soweit ich weiß.
Möglicherweise muss man aber dem jellyfin user innerhalb des Containers noch Rechte zuordnen oder spezielle Pakete noch installieren. Jellyfin hat für HW-Beschleunigung recht ausführliche Anleitungen: https://jellyfin.org/docs/general/administration/hardware-acceleration/
 
Danke @slrzo

Ich habs hinbekommen, obwohl ich echt wenig Ahnung habe. Ich habe den LXC Container von TTeck installiert, da ist das meiste schon vorkonfiguriert für HW Encoding.

Aus irgendeinem weirden Grund war aber der Graka Render (renderD128) unter /dev/dri der Gruppe SSL-cert zugewiesen, das habe ich auf gruppe render umgestellt und dann gings.

Ggf. muss man etwas mit den Codecs in Jellyfin herumspielen, wenn man welche auswählt die von der Hardware nicht unterstützt werden, gibts Probleme beim Abspielen.

Der Performance Vorteil ist beträchtlich. Habe mal testweise ein 4k Video im Browser abgespielt, da komme ich auf 80% CPU Auslastung bei 6 zugewiesenen Kernen (ohne HW Encoding) und mit HW Encoding idled die CPU bei 5% vor sich hin.
 
  • Gefällt mir
Reaktionen: slrzo
Zurück
Oben