{ "meta": { "title": "NFS server v LXC | ProxMenux Dokumentácia", "description": "Zdieľajte priečinky cez NFS z kontajnera Proxmox LXC pomocou ProxMenux. Automaticky nainštaluje nfs-kernel-server a nastaví spoločnú skupinu sharedfiles, /etc/exports, sieťové ACL aj úplnú odinštaláciu. Vyžaduje privilegovaný kontajner.", "ogTitle": "NFS server v LXC | ProxMenux Dokumentácia", "ogDescription": "Spustite server NFS v privilegovanom LXC so spoločnou skupinou sharedfiles, sieťovými ACL a úplnou odinštaláciou." }, "header": { "title": "NFS server v LXC", "description": "Spustite server NFS jadra v kontajneri Proxmox LXC a sprístupnite priečinky iným počítačom v sieti. ProxMenux nainštaluje nfs-kernel-server, nastaví spoločnú skupinu sharedfiles na zdieľanie súborov medzi viacerými privilegovanými CT, spravuje /etc/exports a ponúka úplnú odinštaláciu.", "section": "Úložisko & Share · LXC" }, "privReq": { "title": "Požadovaný privilegovaný kontajner", "body": "nfs-kernel-server musí pripojiť súborový systém jadra nfsd do /proc/fs/nfsd. To vyžaduje CAP_SYS_ADMIN v mennom priestore jadra hostiteľa, nielen v používateľskom mennom priestore kontajnera. Neprivilegované LXC túto schopnosť nemajú: rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory); systemd označí nfs-server.service ako zlyhanú pre závislosť. Skript preto vyžaduje privilegovaný CT a pri neprivilegovanom CT sa ukončí. Alternatívou je server NFS vo VM." }, "what": { "heading": "Čo to robí?", "body": "Ide o opačný smer než na stránke klienta NFS: CT sa stane serverom NFS a sprístupní vlastný priečinok iným CT, hostiteľovi Proxmox, VM alebo fyzickým počítačom.", "diagramServerLabel": "LXC (privilegovaný) NFS server", "diagramServerDetail": "/mnt/data\n(sprístupnený priečinok)\n\nchown root:sharedfiles\nchmod 2775 (SGID)\n\nnfs-kernel-server\n+ rpcbind spustené", "diagramClientLabel": "Každý klient v sieti", "diagramClientDetail": "ďalší CT, hostiteľ,\nVM, fyzický stroj...", "diagramArrow": "Export NFS" }, "shared": { "heading": "Spoločná skupina „sharedfiles“", "body": "Skript vytvorí skupinu sharedfiles s GID 101000 a pridá do nej bežných používateľov. Exportovaný adresár nastaví na root:sharedfiles s režimom 2775. Úvodná číslica 2 zapína SGID: nové súbory a podadresáre zdedia skupinu sharedfiles.", "gidTitle": "Prečo konkrétne GID 101000", "gidBody": "Pri predvolenom mapovaní ID v LXC (+100000) sa GID 101000 hostiteľa zobrazí ako GID 1000 v neprivilegovanom CT. Tento serverový postup používa privilegovaný CT bez posunu ID. Dva privilegované CT so skupinou sharedfiles a GID 101000 preto používajú rovnaké číselné ID skupiny.", "remapTitle": "Staré vytváranie používateľov „remap_*“ sa pri privilegovaných CT preskočí", "remapBody": "Stará vetva pre neprivilegované CT by vytvorila používateľov remap_<uid> s UID <uid> + 100000 v skupine sharedfiles pre bežných používateľov a časté UID (33, 1000, 1001, 1002). Posun +100000 sa na požadované privilegované CT nevzťahuje, preto skript túto vetvu preskočí. Chýbajúce účty remap_* vo výstupe getent passwd sú očakávané a neznamenajú chybu." }, "defaults": { "heading": "Predvolené voľby exportu — prečítajte si najprv", "warnTitle": "Štandardné možnosti zahŕňajú no_root_squash", "warnBody": "ProxMenux predvolene používa rw,sync,no_subtree_check,'<'strong'>'no_root_squash'<'/strong'>'. Každý používateľ root na klientovi môže do exportu zapisovať ako root. Používajte to iba v dôveryhodnej domácej LAN. Ak je CT dostupný z nedôveryhodnej siete (VPS alebo nedôveryhodná VLAN), zmeňte voľbu na root_squash v dialógu vlastných volieb." }, "opening": { "heading": "Otvorenie nástroja", "body": "V hlavnej ponuke otvorte Storage & Share Manager → Configure NFS Server in LXC. Zobrazia sa iba privilegované CT. Vyberte cieľový CT; skript ho spustí, ak je zastavený, a neprivilegovaný CT odmietne. Ponuka má päť možností.", "imageAlt": "Ponuka servera NFS — Vytvoriť / Zobraziť / Odstrániť / Stav / Odinštalovať" }, "howRuns": { "heading": "Ako spustí skript (Create flow)" }, "network": { "heading": "Sieťové ACL — kto smie pripojiť export?", "intro": "/etc/exports určuje, ktorí klienti smú export pripojiť. Dialóg ponúka tri režimy:", "headerMode": "Režim", "headerValue": "Hodnota napísaná /etc/exports", "headerWhen": "Kedy si ju vybrať", "rows": [ { "mode": "Miestna sieť", "value": "192.168.0.0/16", "whenRich": "Pre bežné domáce a malé firemné siete. Zahŕňa všetky adresy 192.168.*.*." }, { "mode": "Vlastná podsieť", "value": "Váš CIDR (napr. 10.0.0.0/24)", "when": "Keď vaša LAN nie je v 192.168.x.x alebo chcete pevnejší rozsah." }, { "mode": "Jediný hostiteľ", "value": "IP (napr. 10.0.0.42)", "when": "Len jeden konkrétny stroj by sa mal pripojiť. Najviac obmedzujúce." } ] }, "options": { "heading": "Možnosti exportu vysvetlené", "headerOption": "Možnosť", "headerEffect": "Čo to robí?", "rows": [ { "option": "rw / ro", "effect": "Povolí pripojeným klientom čítanie a zápis alebo prístup iba na čítanie." }, { "option": "sync", "effectRich": "Odpovedať na žiadosti o zápis až potom, čo dáta sú na disku. Bezpečnejšie ako async za cenu priepustnosti." }, { "option": "no_subtree_check", "effect": "Pri každej požiadavke vynechá kontrolu, či je súbor stále v exportovanom podstrome. Je to rýchlejšie a predchádza problémom pri premenovaní súborov počas operácie." }, { "option": "no_root_squash", "effectRich": "Dôverovať používateľovi root na klientovi. Klient pripájajúci zdieľanie ako root zapisuje aj na serveri ako root. Hodí sa do dôveryhodnej LAN, napríklad ak zálohovací nástroj musí zachovať vlastníkov súborov. Ak úplne nedôverujete každému zariadeniu povolenému sieťovým ACL, použite namiesto toho root_squash." } ] }, "manual": { "heading": "Ručný ekvivalent", "body": "Celý postup môžete vykonať ručne. Každý príkaz sa spúšťa v CT cez pct exec <ctid> -- alebo pct enter <ctid>:" }, "view": { "heading": "Zobraziť aktuálne exporty", "body": "Zobrazí /etc/exports z CT bez komentárov a prázdnych riadkov a vypíše každý export so sieťovým ACL a voľbami. Pred zdieľaním IP adresy CT tak môžete overiť, ktoré priečinky sú sprístupnené." }, "delete": { "heading": "Odstrániť export", "body": "Zobrazí každý riadok v /etc/exports pre výber, odstráni vybraný (sed -i), spustí exportfs -ra a reštartuje nfs-kernel-server. Samotný priečinok a jeho obsah zostávajú neporušené." }, "status": { "heading": "Kontrola stavu NFS", "body": "Diagnostika overí, či sú nfs-kernel-server a rpcbind nainštalované a aktívne, vypíše výstup exportfs -v, aktívne relácie NFS (showmount -a) a aktuálne pripojenia klientov." }, "uninstall": { "heading": "Odinštalovať server NFS", "body": "Úplné čistenie po potvrdení: zastaví a vypne nfs-kernel-server a rpcbind, vyprázdni /etc/exports, odstráni balíky NFS pomocou apt-get purge, skupinu sharedfiles aj používateľov remap_* a ukončí zvyšné procesy. Exportované priečinky sa neodstránia; odstráni sa iba konfigurácia NFS a balíky.", "warnTitle": "Skript sa zastaví na exportnom riadku, nie na dátach", "warnBody": "Odstrániť export a Odinštalovať server NFS odstráni konfiguráciu exportu. Údaje o exportovanom priečinku sa zachovajú. Ak chcete odstrániť aj údaje, urobte to explicitne pomocou rm -rf po dokončení skriptu – a ak by ich ešte niekto mohol potrebovať, najprv si ich zálohujte." }, "troubleshoot": { "heading": "Riešenie problémov", "privTitle": "Vyžaduje sa privilegovaný kontajner (skript sa ukončí)", "privBody": "Vybraný CT je neprivilegovaný. nfs-kernel-server v ňom nemôže bežať, pretože pripojenie /proc/fs/nfsd vyžaduje CAP_SYS_ADMIN v mennom priestore jadra hostiteľa. Ani modul nfsd nie je sprístupnený v mennom priestore kontajnera: modprobe nfsd zvnútra vráti FATAL: Module nfsd not found. Ak obídete kontrolu, v denníku sa objaví rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory) a porty NFS sa neotvoria. Možnosti sú previesť CT na privilegovaný alebo presunúť server NFS do VM.", "aptTitle": "Príkaz apt-get install zlyhá", "aptIntro": "Skript predpokladá CT založený na Debiane. Na Alpine / Arch / Rocky / Alma nainštalujte balíky servera NFS ručne:", "aptItems": [ "Alpine: apk add nfs-utils", "Arch: pacman -S nfs-utils", "Rocky / Alma: dnf install nfs-utils" ], "aptOutro": "Potom znova spustite skript ProxMenux; ak sú nástroje už prítomné, inštalácia sa preskočí.", "aclTitle": "Klient sa nemôže pripojiť: 'prístup zamietnutý serverom'", "aclBody": "IP adresa klienta je mimo nakonfigurovaného sieťového ACL. Vytvorte export so širšou podsieťou alebo pridajte presnú IP klienta. Pozor: pri pripojení cez NAT sa môže zobraziť WAN IP smerovača namiesto LAN IP klienta. Overte to na serveri pomocou tcpdump -n port 2049.", "ownTitle": "Súbory napísané klientom sa objavujú s divným vlastníctvom na serveri", "ownIntro": "Dve možnosti:", "ownItems": [ "S no_root_squash (predvolené) používateľ root na klientovi zapisuje ako root na serveri. Súbory sú vlastnené root:sharedfiles vďaka SGID na priečinku.", "Používatelia klienta bez oprávnení root zapisujú pod vlastným UID/GID. Ak ich UID na serveri neexistuje, pri súboroch sa zobrazia iba čísla, napríklad 1234:1234. Použite aj na klientovi skupinu sharedfiles alebo zjednoťte UID v systémoch, ktoré zdieľajú súbory." ], "noShowTitle": "Server dosiahnuteľný, ale showmount nič nevráti", "noShowBody": "Po úprave /etc/exports obnovte tabuľku exportov pomocou exportfs -ra a reštartujte nfs-kernel-server. Skript robí oboje, ale po ručnej úprave to musíte spraviť sami. Overte tiež, že firewall CT aj hostiteľa Proxmox povoľuje TCP/UDP 2049 a port rpcbind (111)." }, "related": { "heading": "Súvisiace", "items": [ { "href": "/docs/storage-share/lxc-nfs-client", "label": "NFS klient v LXC", "tail": " — opačný smer: pripojenie externých zdieľaní NFS v CT." }, { "href": "/docs/storage-share/lxc-samba-server", "label": "Samba server v LXC", "tail": " — súvisiaca stránka s rovnakým postupom, ale SMB / CIFS namiesto NFS." }, { "href": "/docs/storage-share/host-nfs", "label": "Zdieľanie NFS ako úložisko Proxmox", "tailRich": " — keď CT sprístupňuje export, zaregistrujte zdieľanie NFS v Proxmoxe, aby sa zobrazilo v Datacenter → Storage." } ] } }