mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-06-04 06:04:42 +00:00
5ca3463bf6
Full rewrite of the docs site under app/[locale]/ with next-intl in localePrefix:"always" mode. Every page now exists at both /en/<path> and /es/<path>; the root / shows a meta-refresh + JS redirect to /<defaultLocale>/ so GitHub Pages serves something on the apex URL. Highlights: - 107 doc pages migrated to file-per-page JSON namespaces under messages/en/ and messages/es/. Spanish content is fully translated (no copy-of-English placeholders). - New documentation for the Active Suppressions section in the Settings tab and the per-event Dismiss dropdown in the Health Monitor modal. - New screenshots: dismiss-duration-dropdown.png and an updated health-suppression-settings.png. - Pagefind integrated for client-side search; index is built on every CI deploy (not committed). - RSS feeds: per-locale at /<locale>/rss.xml plus root /rss.xml for backward compat. - Removed the dead app/[locale]/guides/[slug]/ route — every guide now has its own static page and no markdown source remains. - Fixed orphan link /guides/nvidia -> /guides/nvidia-manual in docs/hardware/nvidia-host. - Removed obsolete components (footer2, calendar, drawer). Verified locally with `npm ci && npm run build`: 2804 files in out/, 231 pages indexed by pagefind, root redirect intact, both locale roots and the new Active Suppressions docs render OK.
120 lines
9.4 KiB
JSON
120 lines
9.4 KiB
JSON
{
|
|
"meta": {
|
|
"title": "Add a USB Drive to an LXC and Share it with Samba | ProxMenux Guides",
|
|
"description": "Attach a USB hard drive or memory stick to a privileged LXC container on Proxmox VE, install Samba inside the container, and share the contents over the network.",
|
|
"ogTitle": "Add a USB Drive to an LXC and Share it with Samba",
|
|
"ogDescription": "Attach a USB drive to a privileged LXC on Proxmox VE, install Samba inside the container, and share the contents over the LAN."
|
|
},
|
|
"header": {
|
|
"title": "Add a USB Drive or Memory to an LXC and Share it Over the Network with Samba",
|
|
"description": "Attach a USB hard drive or memory stick to a privileged LXC container on Proxmox VE, install Samba inside the container, and share the contents over the network.",
|
|
"section": "Guides"
|
|
},
|
|
"recommended": {
|
|
"calloutTitle": "Recommended",
|
|
"calloutIntro": "ProxMenux now exposes both halves of this workflow as guided menus:",
|
|
"items": [
|
|
"<strong>Disk Manager → Format / Wipe Physical Disk</strong> for the format step.",
|
|
"<strong>Storage & Share Manager → LXC network sharing → Samba server in LXC</strong> for the privileged-CT install + Samba config."
|
|
],
|
|
"calloutOutro": "The guided flows handle the unprivileged-CT permission quirks, share-mode presets (read-write / read-only / custom) and the sharedfiles group setup. This guide is the manual equivalent — useful if you want full visibility into each step or prefer to wire things by hand."
|
|
},
|
|
"intro": {
|
|
"body": "Sometimes it's useful to add a hard drive or USB memory stick to a Proxmox host, especially on a mini PC with limited internal expansion. This guide walks through:",
|
|
"stepsTitle": "What you'll do",
|
|
"steps": [
|
|
"Attaching the USB disk to a privileged LXC.",
|
|
"Installing Samba inside the container.",
|
|
"Sharing the disk contents over the LAN."
|
|
],
|
|
"useCasesTitle": "Use cases",
|
|
"useCases": [
|
|
"Hosting Torrent files and serving them on the network.",
|
|
"Backing a media server (Plex / Jellyfin / Emby).",
|
|
"Holding documents that get auto-scanned by Paperless.",
|
|
"Generic NAS-style storage for the home network."
|
|
],
|
|
"privilegedCalloutTitle": "Privileged container required",
|
|
"privilegedCalloutBody": "Direct device passthrough (<code>mp0</code> with a host path) needs a privileged LXC. Unprivileged CTs can't bind-mount block devices directly — for those you need bind mounts of host directories instead (see ProxMenux <strong>Storage & Share Manager → LXC Mount Points</strong>)."
|
|
},
|
|
"attach": {
|
|
"heading": "1. Attach the USB disk to the LXC",
|
|
"identifyHeading": "1.1 Identify the device",
|
|
"identifyBody": "Compare the disk list <strong>before</strong> and <strong>after</strong> plugging in the USB drive — the new device is your target.",
|
|
"beforeLabel": "Before:",
|
|
"afterLabel": "After:",
|
|
"imageBeforeAlt": "Disk list before adding USB drive",
|
|
"imageAfterAlt": "Disk list after adding USB drive",
|
|
"lsblkBody": "You can also use <code>lsblk -o NAME,SIZE,MODEL,SERIAL</code> to list every block device with model and serial.",
|
|
"stableCalloutTitle": "Important — use a stable identifier",
|
|
"stableCalloutBody": "<code>/dev/sdb1</code> can change between boots if you have multiple USB disks. Find the persistent identifier:",
|
|
"stableCalloutCode": "ls -l /dev/disk/by-id/ | grep -v part",
|
|
"stableCalloutAfter": "Use the <code>/dev/disk/by-id/usb-...</code> path in the LXC config below instead of <code>/dev/sdb1</code>. It survives reboots and re-plugging.",
|
|
"formatHeading": "1.2 Format the disk",
|
|
"formatBody": "ext4 is a sensible default for Linux-backed shares (case-sensitive, supports POSIX ACLs, no file-size limits). Run from the <strong>Proxmox host</strong>, not the container:",
|
|
"formatCode": "mkfs.ext4 /dev/sdb1",
|
|
"formatAfter": "Replace <code>/dev/sdb1</code> with the actual partition device — or with the persistent <code>/dev/disk/by-id/usb-...-part1</code> path.",
|
|
"mkdirHeading": "1.3 Create the mount point inside the LXC",
|
|
"mkdirBody": "Inside the LXC, create the directory where the disk will appear (any name works):",
|
|
"mkdirCode": "mkdir /mnt/lxc_USB",
|
|
"wireHeading": "1.4 Wire the device into the LXC",
|
|
"wireBody": "On the <strong>Proxmox host</strong> (not inside the CT), edit the container's config. Replace <code>'<'CTID'>'</code> with the container ID:",
|
|
"wireEditCode": "nano /etc/pve/lxc/'<'CTID'>'.conf",
|
|
"wireAddLine": "Add this line:",
|
|
"wireConfigCode": "mp0: /dev/disk/by-id/usb-VENDOR_MODEL_SERIAL-part1,mp=/mnt/lxc_USB,backup=0",
|
|
"wireShortForm": "(Or, if you accept the risk of the device path changing, the shorter form: <code>mp0: /dev/sdb1,mp=/mnt/lxc_USB,backup=0</code>.)",
|
|
"wireBackupNote": "The <code>backup=0</code> flag excludes this mount point from <code>vzdump</code> backups — usually the right call for large external drives that are the host's target storage rather than its data.",
|
|
"restartHeading": "1.5 Restart the LXC and set permissions",
|
|
"restartBody": "Restart the CT to apply the mount point:",
|
|
"restartCode": "pct restart '<'CTID'>'",
|
|
"permsBody": "Inside the LXC, give the directory permissions appropriate for the user that will own the share:",
|
|
"permsCode": "# Inside the container\nmkdir -p /mnt/lxc_USB\nchown -R proxmenux:proxmenux /mnt/lxc_USB\nchmod 770 /mnt/lxc_USB",
|
|
"permsNoteTitle": "Note",
|
|
"permsNote": "Replace <code>proxmenux</code> with the username you'll create in step 2.2 below. <code>770</code> gives full access to the user and group, no access to others — safer than the wide-open <code>chmod -R 777</code> while still letting the share work."
|
|
},
|
|
"samba": {
|
|
"heading": "2. Install Samba",
|
|
"installHeading": "2.1 Install the package inside the LXC",
|
|
"installCode": "apt-get update\napt-get install -y samba",
|
|
"confirmBody": "Confirm the service is running:",
|
|
"confirmCode": "systemctl status smbd.service",
|
|
"userHeading": "2.2 Create the share user",
|
|
"userBody": "Pick a username (here we use <code>proxmenux</code>; substitute your own). Create it as a system user with no shell:",
|
|
"userCode": "adduser proxmenux",
|
|
"passwordBody": "Set the Samba password (separate from the system password — Samba maintains its own credential store):",
|
|
"passwordCode": "smbpasswd -a proxmenux",
|
|
"aclHeading": "2.3 Set ownership / ACLs",
|
|
"aclBody": "If the simple <code>chown</code> from step 1.5 is enough for your case, you're done with permissions. For finer-grained control (multiple users sharing the same path with different rights), use ACLs:",
|
|
"aclCode": "apt-get install -y acl\nsetfacl -R -m \"u:proxmenux:rwx\" /mnt/lxc_USB\nsetfacl -d -R -m \"u:proxmenux:rwx\" /mnt/lxc_USB # default ACL — applies to new files"
|
|
},
|
|
"configure": {
|
|
"heading": "3. Configure the Samba share",
|
|
"editHeading": "3.1 Edit smb.conf",
|
|
"editCode": "nano /etc/samba/smb.conf",
|
|
"appendBody": "Append a share definition at the end:",
|
|
"shareCode": "[lxc_usb]\n comment = Shared USB storage\n path = /mnt/lxc_USB\n read only = no\n writable = yes\n browseable = yes\n guest ok = no\n valid users = proxmenux\n create mask = 0660\n directory mask = 0770",
|
|
"validUsersNoteTitle": "Note",
|
|
"validUsersNote": "The <code>valid users = proxmenux</code> line restricts access to that single Samba user. For group-based access, use <code>valid users = @samba_users</code> after adding the user(s) to a group named <code>samba_users</code>.",
|
|
"reloadHeading": "3.2 Reload Samba",
|
|
"reloadCode": "systemctl restart smbd"
|
|
},
|
|
"verify": {
|
|
"heading": "4. Verify access",
|
|
"body": "From any LAN client, browse to <code>\\\\'<'CT_IP'>'</code> (Windows) or <code>smb://'<'CT_IP'>'</code> (macOS / Linux file managers). Authenticate with the Samba user (<code>proxmenux</code>) and the password you set with <code>smbpasswd</code>.",
|
|
"image1Alt": "Samba server access from a client",
|
|
"image2Alt": "Samba authentication prompt",
|
|
"usageBody": "You can use the share both inside the container and across the network:",
|
|
"image3Alt": "Using the USB drive over the share"
|
|
},
|
|
"troubleshoot": {
|
|
"heading": "Troubleshooting",
|
|
"items": [
|
|
"<strong><code>pct restart</code> fails with \"device not found\":</strong> the device path in <code>mp0</code> doesn't exist on the host. Check with <code>ls -l /dev/disk/by-id/</code> and update the path.",
|
|
"<strong>CT starts but <code>/mnt/lxc_USB</code> is empty:</strong> the disk isn't mounted inside the CT. Check from the host: <code>pct exec '<'CTID'>' -- mount | grep lxc_USB</code>. If absent, the mount point in the config is wrong.",
|
|
"<strong>Samba authenticates but writes fail with \"Permission denied\":</strong> Linux permissions on the directory don't allow the Samba user to write. Re-check <code>chown</code> / <code>setfacl</code> in section 1.5 / 2.3.",
|
|
"<strong>Share doesn't appear in network browsers but <code>smb://'<'ip'>'/lxc_usb</code> works:</strong> browseability over the LAN depends on NetBIOS / WS-Discovery. Add <code>nmbd</code>: <code>apt-get install -y samba-common-bin</code> and ensure <code>nmbd</code> is enabled.",
|
|
"<strong>Want to add a second user to the same share:</strong> create the user with <code>adduser</code>, register with <code>smbpasswd -a</code>, add to the share's <code>valid users =</code> list comma-separated."
|
|
]
|
|
}
|
|
}
|