mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
- A local disk is registered in Proxmox only when As Proxmox storage is marked - Test NFS Connectivity checks ping, port 2049 and the export list - Proxmox keeps CIFS passwords with mode 0600, protected by access control
175 lines
14 KiB
JSON
175 lines
14 KiB
JSON
{
|
||
"meta": {
|
||
"title": "Host: Mount NFS share on Host | ProxMenux Documentation",
|
||
"description": "Mount an external NFS export on the Proxmox host — either as Proxmox storage (pvesm add nfs), as a plain host fstab mount (NOT visible in Datacenter > Storage), or both. The fstab method is ideal for bind-mounting the share into LXC containers without exposing it as a Proxmox storage.",
|
||
"ogTitle": "Host: Mount NFS share on Host | ProxMenux Documentation",
|
||
"ogDescription": "Mount an external NFS export on the Proxmox host via pvesm, fstab, or both. fstab path is ideal for LXC bind-mounts."
|
||
},
|
||
"header": {
|
||
"title": "Host: Mount NFS share on Host",
|
||
"description": "Mount an external NFS export (from a NAS, another server, a homelab share…) on the Proxmox host. Pick one or both methods: register it as Proxmox storage (visible in Datacenter > Storage) and/or add a plain /etc/fstab mount at a path you choose (useful for bind-mounting the share into LXC containers without exposing it as a Proxmox storage).",
|
||
"section": "Storage & Share · Host"
|
||
},
|
||
"intro": {
|
||
"title": "What this does",
|
||
"body": "ProxMenux offers two mount methods for any NFS export: <strong>(1) Proxmox storage</strong> via <code>pvesm add nfs</code> — the share shows up in Datacenter > Storage and Proxmox manages the mount at <code>/mnt/pve/<id></code>; <strong>(2) Host fstab mount</strong> at a path you pick — persistent via <code>/etc/fstab</code>, NOT visible as Proxmox storage, ideal for bind-mounting to LXC containers (Proxmox UI stays clean). You can run one method, the other, or both."
|
||
},
|
||
"opening": {
|
||
"heading": "Opening the tool",
|
||
"body": "From ProxMenux's main menu, open <strong>Storage & Share Manager → Mount NFS Share on Host</strong>. You will see this sub-menu with four options:",
|
||
"imageAlt": "NFS Host Manager menu — Mount / View / Remove / Test connectivity"
|
||
},
|
||
"howRuns": {
|
||
"heading": "How the script runs",
|
||
"body": "The flow has two phases with clear separation between \"discovering, validating and choosing\" and \"actually mounting / writing config\". After selecting an export, you pick mount method(s) via a checklist; the rest of the dialogs only ask for params for the methods you selected. Until the final confirmation, neither <code>/etc/pve/storage.cfg</code> nor <code>/etc/fstab</code> are touched."
|
||
},
|
||
"modes": {
|
||
"heading": "Mount method picker (two options, mark one or both)",
|
||
"intro": "After selecting and validating the export, ProxMenux shows a checklist with the two mount methods. You can mark either, or both. If you press OK without marking anything, the dialog re-appears until you choose at least one option or press Cancel to exit the flow.",
|
||
"imageAlt": "Mount method checklist with pvesm and fstab options",
|
||
"headerMethod": "Method",
|
||
"headerMount": "Mount path",
|
||
"headerUi": "Visible in Datacenter > Storage",
|
||
"headerUseCase": "Typical use case",
|
||
"rows": [
|
||
{
|
||
"method": "<strong>As Proxmox storage (pvesm)</strong>",
|
||
"mountRich": "<code>/mnt/pve/<storage-id></code> (managed by Proxmox)",
|
||
"ui": "Yes",
|
||
"useCase": "VM disk images, backups, ISOs, LXC templates — anything that needs to appear in the Proxmox UI."
|
||
},
|
||
{
|
||
"method": "<strong>Host fstab only</strong>",
|
||
"mountRich": "<code>/mnt/<path></code> (you pick the path)",
|
||
"ui": "No",
|
||
"useCaseRich": "Bind-mounting the share into one or more LXCs <em>without</em> exposing it as a Proxmox storage. Keeps the Datacenter UI clean."
|
||
},
|
||
{
|
||
"method": "<strong>Both</strong>",
|
||
"mount": "Both paths above (two mount points for the same NFS export)",
|
||
"ui": "Yes",
|
||
"useCase": "UI integration plus a separate stable host path with open permissions for LXC bind mounts."
|
||
}
|
||
],
|
||
"bothTitle": "\"Both\" creates two independent NFS mounts",
|
||
"bothBody": "Both methods run separately: pvesm mounts at <code>/mnt/pve/<id></code> and fstab at <code>/mnt/<path></code>. This provides a Proxmox-managed mount with default options and a separate host mount for LXC bind mounts. Two mount points do not guarantee two separate TCP connections; the NFS client may reuse transport connections."
|
||
},
|
||
"pvesmBranch": {
|
||
"heading": "Method A — As Proxmox storage (pvesm)",
|
||
"intro": "If <em>As Proxmox storage</em> is marked, ProxMenux runs the original pvesm flow:",
|
||
"items": [
|
||
"<strong>Storage ID</strong> — what Proxmox will call this storage. Default is <code>nfs-<server-ip-with-dashes></code>. Only letters, digits, <code>-</code> and <code>_</code> are accepted.",
|
||
"<strong>Content types</strong> — Proxmox ties content categories to storage volumes; pick what this NFS is allowed to hold:"
|
||
],
|
||
"headerType": "Content type",
|
||
"headerAllows": "What it allows",
|
||
"rows": [
|
||
{
|
||
"type": "import",
|
||
"allowsRich": "Disk image imports (selected by default). Needed for <em>Import Disk Image to VM</em>."
|
||
},
|
||
{
|
||
"type": "backup",
|
||
"allowsRich": "VM and CT backup files (<code>vzdump</code>)."
|
||
},
|
||
{
|
||
"type": "iso",
|
||
"allows": "Installation ISO images."
|
||
},
|
||
{
|
||
"type": "vztmpl",
|
||
"allows": "LXC templates."
|
||
},
|
||
{
|
||
"type": "images",
|
||
"allows": "Live VM disk images (this turns the NFS into a VM disk store)."
|
||
},
|
||
{
|
||
"type": "rootdir",
|
||
"allows": "LXC root filesystems (rare for NFS — read the note below)."
|
||
},
|
||
{
|
||
"type": "snippets",
|
||
"allows": "Hook scripts and cloud-init snippets."
|
||
}
|
||
],
|
||
"warnTitle": "images and rootdir on NFS",
|
||
"warnBody": "Selecting <code>images</code> lets Proxmox store VM disks on NFS. Performance depends on the network, server and workload; an outage can block I/O that depends on the mount. Selecting <code>rootdir</code> stores LXC root filesystems on NFS, where unprivileged containers can encounter UID mapping, overlay and ownership limitations. Assess these requirements before placing <code>images</code> / <code>rootdir</code> there; NFS is also useful for <code>backup</code> / <code>iso</code> / <code>vztmpl</code>.",
|
||
"result": "The result is <code>pvesm add nfs <id> --server <srv> --export <path> --content <csv></code> and Proxmox auto-mounts at <code>/mnt/pve/<id></code>."
|
||
},
|
||
"fstabBranch": {
|
||
"heading": "Method B — Host fstab mount only",
|
||
"intro": "If <em>As host fstab mount only</em> is marked, ProxMenux asks for a host mount path and persistent options, then mounts and writes the entry to <code>/etc/fstab</code>:",
|
||
"items": [
|
||
"<strong>Host mount path</strong> — default <code>/mnt/<export-basename></code>. Must be an absolute path. If something is already mounted there, or a fstab entry exists for the same path, ProxMenux warns you and offers to replace it.",
|
||
"<strong>Mount options</strong> — pick <em>Read/Write</em> (default with <code>rw,hard,nofail,_netdev,rsize=131072,wsize=131072,timeo=600,retrans=2</code>), <em>Read-only</em>, or <em>Custom</em> (type your own option string)."
|
||
],
|
||
"appliesIntro": "Once you confirm, the script:",
|
||
"applies": [
|
||
"<code>mkdir -p</code> the mount path.",
|
||
"<code>mount -t nfs -o <opts> <srv>:<export> <path></code>.",
|
||
"Writes a one-line entry to <code>/etc/fstab</code>: <code><srv>:<export> <path> nfs <opts> 0 0</code>.",
|
||
"Runs <code>systemctl daemon-reload</code> so systemd picks up the new fstab entry.",
|
||
"Attempts <code>chmod 1777</code> + <code>setfacl o::rwx</code> on the mount point (silent best-effort — only succeeds if the NFS server allows it; many NAS exports already serve world-writable paths)."
|
||
],
|
||
"lxcTitle": "Using the fstab mount from an LXC",
|
||
"lxcBody": "The script prints a <code>pct set</code> command for a bind mount, e.g. <code>pct set <ctid> -mp0 /mnt/<path>,mp=/mnt/<ct-path>,shared=1,backup=0</code>. Or use the <mountLink>LXC Mount Manager</mountLink>, which detects fstab mounts. <strong>No changes are made inside the container</strong>. Access from an unprivileged CT depends on server-side permissions for its mapped UIDs/GIDs. The script only attempts host-side permission changes; it cannot guarantee writable exports or manufacturer defaults. See Troubleshooting if access fails.",
|
||
"noUiTitle": "The fstab mount is NOT a Proxmox storage",
|
||
"noUiBody": "The host fstab mount is invisible to the Proxmox web UI — by design. It does not appear in <em>Datacenter > Storage</em>, you cannot select it in the VM / CT creator, and Proxmox backup jobs cannot target it. It is purely a host filesystem path. If you also want UI integration, mark <em>both</em> methods in the picker."
|
||
},
|
||
"manual": {
|
||
"heading": "Manual equivalent",
|
||
"pvesmIntro": "Method A (pvesm) maps to:",
|
||
"fstabIntro": "Method B (fstab) maps to:"
|
||
},
|
||
"view": {
|
||
"heading": "View configured NFS storages",
|
||
"body": "Lists every NFS entry in Proxmox (<code>pvesm status | awk ''$2 == \"nfs\"''</code>) with server, export, content types, mount path and live status. <strong>Note:</strong> this view only shows pvesm-registered storages — fstab-only mounts are not listed here. Check those with <code>findmnt -t nfs</code> or <code>grep nfs /etc/fstab</code>."
|
||
},
|
||
"remove": {
|
||
"heading": "Remove NFS storage",
|
||
"body": "Runs <code>pvesm remove <storage-id></code> after a confirmation that shows the server / export / content. Only the Proxmox-side registration is removed — <strong>the remote NFS server itself is never touched</strong>, no files are deleted. To remove a fstab-only mount, edit <code>/etc/fstab</code> by hand and run <code>umount <path></code>.",
|
||
"warnTitle": "Back up dependencies first",
|
||
"warnBody": "If VMs, CTs or backup jobs still reference this storage (by ID), removing it leaves them pointing at a disappeared store. Proxmox will flag the error but not clean up. Move or drop those references first, then remove the storage."
|
||
},
|
||
"test": {
|
||
"heading": "Test NFS connectivity",
|
||
"body": "Runs a diagnostic pass over every NFS storage registered in Proxmox: checks that <code>showmount</code> is available, that <code>rpcbind</code> is running, pings each server, probes port 2049, calls <code>showmount -e</code>, and finally reports Proxmox's own view (<code>pvesm status</code>). Good first stop when a storage shows as <em>inactive</em> in the Proxmox UI."
|
||
},
|
||
"troubleshoot": {
|
||
"heading": "Troubleshooting",
|
||
"noServersTitle": "\"No NFS servers found on the network\"",
|
||
"noServersBody": "Auto-discover uses <code>nmap -p 2049 --open <subnet>/24</code>. The server may not respond if: it is on a different VLAN / subnet, its firewall blocks nmap probes (many do) or port 2049 is intentionally closed on that interface. Use the <em>Manual</em> option with the server's IP or hostname instead.",
|
||
"portTitle": "\"NFS port (2049) is not accessible\"",
|
||
"portBody": "Ping succeeded but <code>nc -z -w 3 <server> 2049</code> failed. Check the NFS service is running on the server (<code>systemctl status nfs-server</code> on Linux, Control Panel → File Services on Synology, NFS plugin on OMV / TrueNAS), and that the firewall allows 2049 from the Proxmox host.",
|
||
"showmountTitle": "\"Failed to connect\" from showmount",
|
||
"showmountBody": "The server refused the export-list query. Common causes: the server enforces strict client ACLs (your Proxmox IP is not on the allowed list), <code>rpcbind</code> is not running on the server, or the server exposes only NFSv4 with <code>showmount</code> disabled. The export path can still be added manually if you know it.",
|
||
"inactiveTitle": "Storage shows as inactive in the Proxmox UI",
|
||
"inactiveBody": "Run <em>Test NFS Connectivity</em> first: it checks that the server answers ping, that port 2049 is open and that the export list (<code>showmount -e</code>) is available. If connectivity works but storage remains inactive, inspect <code>journalctl -u pvestatd</code> and the server/export configuration. Restore the underlying connectivity or permissions first. <code>pvesm set <id> --disable 0</code> enables a disabled storage; it is not a general repair for NFS failures.",
|
||
"lxcNoWriteTitle": "fstab mount works but unprivileged LXC can't write through a bind-mount",
|
||
"lxcNoWriteBody": "NFS access depends on server-side ownership, ACLs and squash settings. CIFS-style options such as <code>uid=</code> and <code>file_mode=</code> do <strong>not</strong> apply to NFS. With default LXC mapping, CT root becomes host UID 100000, not remote UID 0. Configure access for the actual mapped UID/GID or the server’s anonymous identity. <code>no_root_squash</code> only affects remote UID 0, so it is not a universal fix for UID 100000. The script attempts <code>chmod 1777</code> but cannot override the server’s permissions.",
|
||
"fstabBootTitle": "fstab mount does not come up after reboot",
|
||
"fstabBootBody": "The script adds <code>nofail,_netdev</code> so a missing share at boot does not block startup. If the mount never comes up: confirm the network is reachable (<code>ping <server></code>), check <code>journalctl -u remote-fs.target</code>, and verify the entry is valid with <code>mount -fav | grep nfs</code>. <code>mount -a</code> after boot mounts everything that is currently missing."
|
||
},
|
||
"related": {
|
||
"heading": "Related",
|
||
"items": [
|
||
{
|
||
"href": "/docs/storage-share/host-samba",
|
||
"label": "Samba / CIFS as Proxmox storage",
|
||
"tail": " — same flow pattern (Method A pvesm + Method B fstab) for SMB/CIFS shares."
|
||
},
|
||
{
|
||
"href": "/docs/storage-share/lxc-mount-points",
|
||
"label": "LXC Mount Manager",
|
||
"tailRich": " — bind-mount the fstab-only path <code>/mnt/<path></code> into one or more containers."
|
||
},
|
||
{
|
||
"href": "/docs/storage-share/lxc-nfs-client",
|
||
"label": "NFS client in LXC",
|
||
"tail": " — alternative: mount NFS directly from inside a privileged container (skips the host)."
|
||
}
|
||
]
|
||
}
|
||
}
|