{ "meta": { "title": "NFS Server in LXC | ProxMenux Dokumentation", "description": "Ordner über NFS aus einem Proxmox-LXC-Container mit ProxMenux freigeben. Installiert nfs-kernel-server automatisch, richtet die gemeinsame Gruppe sharedfiles und /etc/exports ein und bietet Netzwerk-ACLs sowie vollständige Deinstallation. Erfordert einen privilegierten Container.", "ogTitle": "NFS Server in LXC | ProxMenux Dokumentation", "ogDescription": "Führen Sie einen NFS-Server in einem privilegierten LXC-Container aus. Universelle Sharedfiles-Gruppe, Netzwerk-ACL und vollständige Deinstallation." }, "header": { "title": "NFS Server in LXC", "description": "Betreiben Sie einen NFS-Kernel-Server in einem Proxmox-LXC-Container und geben Sie Ordner für andere Rechner im Netzwerk frei. ProxMenux installiert nfs-kernel-server, richtet die gemeinsame Gruppe sharedfiles ein, damit mehrere privilegierte CTs Dateien gemeinsam nutzen können, verwaltet /etc/exports und bietet eine vollständige Deinstallation.", "section": "Speicher und Freigaben · LXC" }, "privReq": { "title": "Privilegierter Container erforderlich", "body": "nfs-kernel-server muss das Kernel-Dateisystem nfsd unter /proc/fs/nfsd einhängen. Dafür benötigt es CAP_SYS_ADMIN im Namensraum des Host-Kernels, nicht nur im Benutzer-Namensraum des Containers. Unprivilegierte LXC-Container besitzen diese Fähigkeit nicht: rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory); systemd markiert nfs-server.service mit einem Abhängigkeitsfehler. Das Skript verlangt daher einen privilegierten CT und bricht bei unprivilegierten CTs ab. Alternativ kann der NFS-Server in einer VM laufen." }, "what": { "heading": "Was das macht", "body": "Dies ist die umgekehrte Richtung zur NFS-Client-Seite: Der CT wird zum NFS-Server und stellt einen eigenen Ordner anderen CTs, dem Proxmox-Host, VMs oder physischen Rechnern bereit.", "diagramServerLabel": "LXC (privilegiert) — NFS-Server", "diagramServerDetail": "/mnt/data\n(freigegebener Ordner)\n\nchown root:sharedfiles\nchmod 2775 (SGID)\n\nnfs-kernel-server\n+ rpcbind läuft", "diagramClientLabel": "Jeder Client im Netzwerk", "diagramClientDetail": "einem anderen CT, dem Host,\nVM, eine physische Maschine...", "diagramArrow": "NFS-Export" }, "shared": { "heading": "Die \"sharedfiles\" Gruppenkonvention", "body": "Vor dem Exportieren des Ordners erstellt ProxMenux eine Gruppe namens sharedfiles mit GID 101000 im Container, fügt jeden regulären Benutzer hinzu und setzt dann das Exportverzeichnis mit dem Modus 2775 auf root:sharedfiles. Das 2 an der Vorderseite ist das SGID-Bit - jede Datei oder jeder Ordner, der im Inneren erstellt wird, erbt automatisch die sharedfiles-Gruppe.", "gidTitle": "Warum GID 101000 speziell", "gidBody": "Mit der standardmäßigen LXC-ID-Zuordnung (+100000) erscheint Host-GID 101000 als GID 1000 in einem unprivilegierten CT. Dieser Serverablauf verwendet einen privilegierten CT ohne Verschiebung. Zwei privilegierte CTs mit sharedfiles bei GID 101000 verwenden daher dieselbe numerische Gruppen-ID.", "remapTitle": "Die alte Erstellung von „remap_*“-Benutzern wird bei privilegierten CTs übersprungen", "remapBody": "Der alte Zweig für unprivilegierte CTs würde remap_<uid>-Benutzer mit UID <uid> + 100000 in sharedfiles für normale Benutzer und übliche UIDs (33, 1000, 1001, 1002) anlegen. Diese +100000-Verschiebung gilt nicht für die hier vorgeschriebenen privilegierten CTs; deshalb überspringt das Skript diesen Zweig. Fehlende remap_*-Konten in getent passwd sind zu erwarten und kein Fehler." }, "defaults": { "heading": "Standard-Exportoptionen - lesen Sie dies zuerst", "warnTitle": "Standardoptionen umfassen no_root_squash", "warnBody": "ProxMenux verwendet standardmäßig rw,sync,no_subtree_check,'<'strong'>'no_root_squash'<'/strong'>'. Jeder Client-Benutzer root kann auf dem Export als root schreiben. Verwenden Sie dies nur in einem vertrauenswürdigen Heimnetz. Ist der CT aus einem nicht vertrauenswürdigen Netzwerk erreichbar (VPS oder fremdes VLAN), ersetzen Sie die Exportoption im Dialog für eigene Optionen durch root_squash." }, "opening": { "heading": "Öffnen des Tools", "body": "Öffnen Sie im Hauptmenü von ProxMenux Storage & Share Manager → NFS-Server in LXC (nur privilegiert) konfigurieren. ProxMenux fordert Sie zuerst auf, das Ziel CT auszuwählen (und startet es, wenn es gestoppt wird); abbricht, wenn es nicht privilegiert ist. Sobald das CT ausgewählt ist, sehen Sie dieses sub-Menü mit fünf Optionen:", "imageAlt": "NFS Server-Manager-Menü – Erstellen / Ansicht / Löschen / Status / Deinstallieren" }, "howRuns": { "heading": "Wie das Skript läuft (Create flow)" }, "network": { "heading": "Netzwerk-ACL — wer darf einhängen?", "intro": "/etc/exports filtert, welche Clients den Export einhängen dürfen. Der Dialog bietet drei Möglichkeiten:", "headerMode": "Modus", "headerValue": "Wert geschrieben an /etc/exports", "headerWhen": "Wann man es wählt", "rows": [ { "mode": "Lokales Netz", "value": "192.168.0.0/16", "whenRich": "Für übliche Heim- und SOHO-Netzwerke. Deckt alle Adressen unter 192.168.*.* ab." }, { "mode": "Eigenes Subnetz", "value": "Ein beliebiges CIDR-Subnetz (z. B. 10.0.0.0/24)", "when": "Wenn sich Ihr LAN nicht in 192.168.x.x befindet oder Sie einen engeren Umfang wünschen." }, { "mode": "Einzelner Host", "value": "Die IP-Adresse eines einzelnen Clients (z. B. 192.168.1.50)", "when": "Nur eine bestimmte Maschine sollte montieren. Am restriktivsten." } ] }, "options": { "heading": "Exportoptionen", "headerOption": "Option", "headerEffect": "Was es tut", "rows": [ { "option": "rw / ro", "effect": "Ermöglichen Sie Lese-Schreib- oder Lesezugriff für Verbindungsclients." }, { "option": "sync", "effectRich": "Bestätigt Schreibanforderungen erst, wenn die Daten auf dem Datenträger liegen. Sicherer als async, aber mit geringerem Durchsatz." }, { "option": "no_subtree_check", "effect": "Überspringt die Prüfung bei jeder Anfrage, ob die Datei noch im exportierten Teilbaum liegt. Das ist schneller und vermeidet Probleme, wenn Dateien während des Zugriffs umbenannt werden." }, { "option": "no_root_squash", "effectRich": "Root auf dem Client vertrauen. Ein als root zugreifender Client schreibt auf dem Server als root. Geeignet für vertrauenswürdige LANs, etwa wenn Sicherungswerkzeuge die Eigentümer erhalten müssen. Ersetzen Sie dies durch root_squash, wenn Sie nicht jedem Rechner in der Netzwerk-ACL vollständig vertrauen." } ] }, "manual": { "heading": "Manuelles Äquivalent", "body": "Führen Sie den gesamten Ablauf von Hand aus. Jeder Befehl läuft innerhalb des CTs über pct exec <ctid> -- oder pct enter <ctid>:" }, "view": { "heading": "Aktuelle Exporte ansehen", "body": "Zeigt /etc/exports aus dem CT ohne Kommentare und Leerzeilen an. Jeder Export wird mit Netzwerk-ACL und Optionen ausgegeben. Damit lässt sich vor der Weitergabe der CT-IP prüfen, welche Ordner freigegeben sind." }, "delete": { "heading": "Einen Export löschen", "body": "Listet jede Zeile in /etc/exports zur Auswahl auf, entfernt die ausgewählte (sed -i), führt exportfs -ra aus und startet nfs-kernel-server neu. Der Ordner selbst und sein Inhalt bleiben intakt." }, "status": { "heading": "NFS-Status überprüfen", "body": "Diagnosepass: bestätigt, dass nfs-kernel-server und rpcbind installiert und aktiv sind, druckt exportfs -v-Ausgabe, listet aktive NFS-Sitzungen (showmount -a) und aktuelle Clientverbindungen auf." }, "uninstall": { "heading": "NFS-Server deinstallieren", "body": "Vollständige Bereinigung nach Bestätigung: stoppt und deaktiviert nfs-kernel-server und rpcbind, leert /etc/exports, entfernt die NFS-Pakete mit apt-get purge, löscht die Gruppe sharedfiles und die Benutzer remap_* und beendet verbleibende Prozesse. Die exportierten Ordner selbst bleiben erhalten; entfernt werden nur NFS-Konfiguration und Pakete.", "warnTitle": "Das Skript stoppt an der Exportlinie, nicht an den Daten", "warnBody": "Sowohl Export löschen als auch NFS-Server deinstallieren entfernen die Exportkonfiguration. Die Daten im freigegebenen Ordner bleiben erhalten. Löschen Sie Daten bei Bedarf nach Abschluss des Skripts ausdrücklich mit rm -rf; sichern Sie sie vorher, falls jemand sie noch benötigen könnte." }, "troubleshoot": { "heading": "Fehlerbehebung", "privTitle": "Privilegierter Container erforderlich (Skript bricht ab)", "privBody": "Der ausgewählte CT ist unprivilegiert. nfs-kernel-server kann dort nicht starten, da die Einhängen von /proc/fs/nfsd CAP_SYS_ADMIN im Host-Kernel-Namespace benötigt und das nfsd-Modul auch nicht dem Namespace des Containers ausgesetzt ist (modprobe nfsd von innen gibt FATAL: Module nfsd not found). Wenn Sie das Gate umgehen, sehen Sie rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory) im Journal und keine NFS-Ports werden jemals geöffnet. Die einzigen praktikablen Optionen sind: Wandeln Sie den CT in einen privilegierten CT um oder verschieben Sie den NFS-Server in eine VM.", "aptTitle": "apt-get install schlägt fehl", "aptIntro": "Das Skript nimmt eine Debian-Familie CT an. Auf Alpine / Arch / Rocky / Alma installieren Sie die NFS-Serverpakete von Hand:", "aptItems": [ "Alpine: apk add nfs-utils", "Arch: pacman -S nfs-utils", "Rocky / Alma: dnf install nfs-utils" ], "aptOutro": "Führen Sie danach das ProxMenux-Skript erneut aus; sind die Werkzeuge schon vorhanden, wird die Installation übersprungen.", "aclTitle": "Client kann nicht mounten: \"Zugriff verweigert durch Server\"", "aclBody": "Die Client-IP liegt außerhalb der konfigurierten Netzwerk-ACL. Erstellen Sie den Export mit einem größeren Subnetz neu oder fügen Sie die genaue Client-IP hinzu. Häufige Ursache: Hinter Router-NAT kann der Client mit der WAN-IP des Routers statt seiner LAN-IP erscheinen. Prüfen Sie dies auf dem Server mit tcpdump -n port 2049.", "ownTitle": "Vom Client geschriebene Dateien erscheinen mit seltsamem Besitz auf dem Server", "ownIntro": "Zwei Möglichkeiten:", "ownItems": [ "Mit no_root_squash (Standard) schreibt Client root als root auf den Server. Dateien gehören root:sharedfiles dank der SGID im Ordner.", "Nicht-Root-Client-Benutzer schreiben als ihre eigene UID / GID. Wenn ihre UID nicht auf dem Server existiert, erscheinen Dateien mit Rohnummern (z.B. 1234:1234). Verwenden Sie die sharedfiles-Gruppe auch auf dem Client oder richten Sie UIDs auf den Systemen aus, die Dateien gemeinsam nutzen." ], "noShowTitle": "Server erreichbar, aber showmount gibt nichts zurück", "noShowBody": "Nach dem Bearbeiten von /etc/exports müssen Sie die Exporttabelle mit exportfs -ra neu laden und nfs-kernel-server neu starten – das Skript macht beides, aber wenn Sie die Datei von Hand bearbeitet haben, tun Sie es selbst. Bestätigen Sie auch, dass die Firewall auf dem CT (und auf dem Proxmox-Host) TCP/UDP 2049 und den rpcbind-Port (111) ermöglicht." }, "related": { "heading": "Verwandte Themen", "items": [ { "href": "/docs/storage-share/lxc-nfs-client", "label": "NFS-Client in LXC", "tail": " — umgekehrte Richtung: externe NFS-Freigaben im CT einhängen." }, { "href": "/docs/storage-share/lxc-samba-server", "label": "Samba-Server in LXC", "tail": "— Geschwisterseite, gleiches Muster mit SMB / CIFS anstelle von NFS." }, { "href": "/docs/storage-share/host-nfs", "label": "NFS-Freigabe als Proxmox-Speicher", "tailRich": " — Sobald der CT Ordner über NFS freigibt, registrieren Sie die NFS-Freigabe in Proxmox, damit sie unter Datacenter → Storage erscheint." } ] } }