{ "meta": { "title": "Añadir una unidad USB a un LXC y compartirla con Samba | Guías ProxMenux", "description": "Conecta un disco duro USB o una memoria USB a un contenedor LXC privilegiado en Proxmox VE, instala Samba dentro del contenedor y comparte el contenido por la red.", "ogTitle": "Añadir una unidad USB a un LXC y compartirla con Samba", "ogDescription": "Conecta una unidad USB a un LXC privilegiado en Proxmox VE, instala Samba dentro del contenedor y comparte el contenido por la LAN." }, "header": { "title": "Añadir una unidad USB o memoria a un LXC y compartirla por la red con Samba", "description": "Conecta un disco duro USB o una memoria USB a un contenedor LXC privilegiado en Proxmox VE, instala Samba dentro del contenedor y comparte el contenido por la red.", "section": "Guías" }, "recommended": { "calloutTitle": "Recomendado", "calloutIntro": "ProxMenux ahora expone las dos mitades de este flujo como menús guiados:", "items": [ "Disk Manager → Format / Wipe Physical Disk para el paso de formateo.", "Storage & Share Manager → LXC network sharing → Samba server in LXC para la instalación del CT privilegiado y la configuración de Samba." ], "calloutOutro": "Los flujos guiados se encargan de las peculiaridades de permisos de los CT unprivileged, de los presets de modo de share (lectura-escritura / solo lectura / personalizado) y de la configuración del grupo sharedfiles. Esta guía es el equivalente manual — útil si quieres visibilidad total sobre cada paso o si prefieres cablearlo todo a mano." }, "intro": { "body": "A veces resulta útil añadir un disco duro o una memoria USB a un host Proxmox, sobre todo en un mini PC con expansión interna limitada. Esta guía cubre:", "stepsTitle": "Qué vas a hacer", "steps": [ "Conectar el disco USB a un LXC privilegiado.", "Instalar Samba dentro del contenedor.", "Compartir el contenido del disco por la LAN." ], "useCasesTitle": "Casos de uso", "useCases": [ "Alojar ficheros Torrent y servirlos en la red.", "Dar soporte a un media server (Plex / Jellyfin / Emby).", "Guardar documentos que escanea automáticamente Paperless.", "Almacenamiento tipo NAS genérico para la red doméstica." ], "privilegedCalloutTitle": "Se requiere un contenedor privilegiado", "privilegedCalloutBody": "El passthrough directo de dispositivos (mp0 con una ruta del host) necesita un LXC privilegiado. Los CT unprivileged no pueden hacer bind-mount directo de dispositivos de bloque — para esos necesitas bind mounts de directorios del host (consulta ProxMenux Storage & Share Manager → LXC Mount Points)." }, "attach": { "heading": "1. Conectar el disco USB al LXC", "identifyHeading": "1.1 Identificar el dispositivo", "identifyBody": "Compara la lista de discos antes y después de conectar la unidad USB — el dispositivo nuevo es tu objetivo.", "beforeLabel": "Antes:", "afterLabel": "Después:", "imageBeforeAlt": "Lista de discos antes de añadir la unidad USB", "imageAfterAlt": "Lista de discos después de añadir la unidad USB", "lsblkBody": "También puedes usar lsblk -o NAME,SIZE,MODEL,SERIAL para listar cada dispositivo de bloque con su modelo y número de serie.", "stableCalloutTitle": "Importante — usa un identificador estable", "stableCalloutBody": "/dev/sdb1 puede cambiar entre arranques si tienes varios discos USB. Busca el identificador persistente:", "stableCalloutCode": "ls -l /dev/disk/by-id/ | grep -v part", "stableCalloutAfter": "Usa la ruta /dev/disk/by-id/usb-... en la config del LXC en lugar de /dev/sdb1. Sobrevive a reinicios y a desconexiones.", "formatHeading": "1.2 Formatear el disco", "formatBody": "ext4 es un valor por defecto razonable para shares basados en Linux (sensible a mayúsculas, soporta ACLs POSIX, sin límites de tamaño de fichero). Ejecútalo desde el host Proxmox, no desde el contenedor:", "formatCode": "mkfs.ext4 /dev/sdb1", "formatAfter": "Reemplaza /dev/sdb1 por el dispositivo de partición real — o por la ruta persistente /dev/disk/by-id/usb-...-part1.", "mkdirHeading": "1.3 Crear el punto de montaje dentro del LXC", "mkdirBody": "Dentro del LXC, crea el directorio donde aparecerá el disco (cualquier nombre vale):", "mkdirCode": "mkdir /mnt/lxc_USB", "wireHeading": "1.4 Cablear el dispositivo al LXC", "wireBody": "En el host Proxmox (no dentro del CT), edita la config del contenedor. Reemplaza '<'CTID'>' por el ID del contenedor:", "wireEditCode": "nano /etc/pve/lxc/'<'CTID'>'.conf", "wireAddLine": "Añade esta línea:", "wireConfigCode": "mp0: /dev/disk/by-id/usb-VENDOR_MODEL_SERIAL-part1,mp=/mnt/lxc_USB,backup=0", "wireShortForm": "(O, si aceptas el riesgo de que la ruta del dispositivo cambie, la forma corta: mp0: /dev/sdb1,mp=/mnt/lxc_USB,backup=0.)", "wireBackupNote": "El flag backup=0 excluye este punto de montaje de los backups de vzdump — normalmente la elección correcta para discos externos grandes que son el almacenamiento de destino del host y no sus datos.", "restartHeading": "1.5 Reiniciar el LXC y ajustar permisos", "restartBody": "Reinicia el CT para aplicar el punto de montaje:", "restartCode": "pct restart '<'CTID'>'", "permsBody": "Dentro del LXC, dale al directorio los permisos apropiados para el usuario que será dueño del share:", "permsCode": "# Dentro del contenedor\nmkdir -p /mnt/lxc_USB\nchown -R proxmenux:proxmenux /mnt/lxc_USB\nchmod 770 /mnt/lxc_USB", "permsNoteTitle": "Nota", "permsNote": "Reemplaza proxmenux por el nombre de usuario que crearás en el paso 2.2 más abajo. 770 da acceso total al usuario y al grupo, sin acceso para el resto — más seguro que el chmod -R 777 abierto a todos y aun así suficiente para que el share funcione." }, "samba": { "heading": "2. Instalar Samba", "installHeading": "2.1 Instalar el paquete dentro del LXC", "installCode": "apt-get update\napt-get install -y samba", "confirmBody": "Confirma que el servicio está corriendo:", "confirmCode": "systemctl status smbd.service", "userHeading": "2.2 Crear el usuario del share", "userBody": "Escoge un nombre de usuario (aquí usamos proxmenux; sustitúyelo por el tuyo). Créalo como usuario del sistema sin shell:", "userCode": "adduser proxmenux", "passwordBody": "Establece la contraseña de Samba (independiente de la contraseña del sistema — Samba mantiene su propio almacén de credenciales):", "passwordCode": "smbpasswd -a proxmenux", "aclHeading": "2.3 Configurar la propiedad / ACLs", "aclBody": "Si el simple chown del paso 1.5 te basta, los permisos ya están listos. Para un control más fino (varios usuarios compartiendo la misma ruta con permisos distintos), usa 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 # ACL por defecto — se aplica a los ficheros nuevos" }, "configure": { "heading": "3. Configurar el share de Samba", "editHeading": "3.1 Editar smb.conf", "editCode": "nano /etc/samba/smb.conf", "appendBody": "Añade una definición de share al final:", "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": "Nota", "validUsersNote": "La línea valid users = proxmenux restringe el acceso a ese único usuario Samba. Para acceso por grupo, usa valid users = @samba_users tras añadir el usuario o usuarios a un grupo llamado samba_users.", "reloadHeading": "3.2 Recargar Samba", "reloadCode": "systemctl restart smbd" }, "verify": { "heading": "4. Verificar el acceso", "body": "Desde cualquier cliente de la LAN, navega a \\\\'<'CT_IP'>' (Windows) o smb://'<'CT_IP'>' (gestores de ficheros de macOS / Linux). Autentícate con el usuario Samba (proxmenux) y la contraseña que pusiste con smbpasswd.", "image1Alt": "Acceso al servidor Samba desde un cliente", "image2Alt": "Prompt de autenticación de Samba", "usageBody": "Puedes usar el share tanto dentro del contenedor como por la red:", "image3Alt": "Uso de la unidad USB a través del share" }, "troubleshoot": { "heading": "Solución de problemas", "items": [ "pct restart falla con \"device not found\": la ruta del dispositivo en mp0 no existe en el host. Comprueba con ls -l /dev/disk/by-id/ y actualiza la ruta.", "El CT arranca pero /mnt/lxc_USB está vacío: el disco no está montado dentro del CT. Comprueba desde el host: pct exec '<'CTID'>' -- mount | grep lxc_USB. Si no aparece, el punto de montaje en la config está mal.", "Samba autentica pero las escrituras fallan con \"Permission denied\": los permisos Linux del directorio no permiten al usuario de Samba escribir. Revisa chown / setfacl en la sección 1.5 / 2.3.", "El share no aparece en los navegadores de red pero smb://'<'ip'>'/lxc_usb sí funciona: la visibilidad por LAN depende de NetBIOS / WS-Discovery. Añade nmbd: apt-get install -y samba-common-bin y asegúrate de que nmbd esté habilitado.", "Quieres añadir un segundo usuario al mismo share: crea el usuario con adduser, regístralo con smbpasswd -a y añádelo a la lista valid users = del share separado por comas." ] } }