mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-02 10:52:22 +00:00
Merge pull request #490 from jcastro/docs/review-storage-share
docs: review storage sharing documentation in all seven translations
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
"meaningRich": "El endpoint del servicio iSCSI en el servidor del target — una IP (o hostname) más un puerto TCP. El puerto por defecto es <code>3260</code>; ProxMenux lo asume si no especificas uno."
|
||||
},
|
||||
{
|
||||
"term": "Target",
|
||||
"term": "Destino (target)",
|
||||
"meaningRich": "Un único \"servidor\" exportado dentro del portal, identificado por su IQN (<em>iSCSI Qualified Name</em>). Un portal puede alojar muchos targets."
|
||||
},
|
||||
{
|
||||
@@ -36,7 +36,7 @@
|
||||
"meaningRich": "Un dispositivo de bloque dentro de un target (Logical Unit Number). Un único target puede exponer varias LUNs; cada LUN aparece como su propio disco en Proxmox y puede convertirse en un disco de VM."
|
||||
},
|
||||
{
|
||||
"term": "Initiator",
|
||||
"term": "Iniciador",
|
||||
"meaningRich": "El cliente que conecta a un target — en este caso, tu host Proxmox. El initiator tiene su propio IQN guardado en <code>/etc/iscsi/initiatorname.iscsi</code>. Los targets normalmente solo aceptan sesiones de IQNs de initiator preautorizados."
|
||||
}
|
||||
]
|
||||
@@ -44,7 +44,7 @@
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Add iSCSI Target as Proxmox Storage</strong>. Verás este submenú con cuatro opciones:",
|
||||
"imageAlt": "Menú iSCSI Host Manager — Add / View / Remove / Test connectivity"
|
||||
"imageAlt": "Menú del gestor iSCSI del host — Añadir / Ver / Eliminar / Probar conectividad"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script (flujo Add)",
|
||||
@@ -74,7 +74,7 @@
|
||||
"remove": {
|
||||
"heading": "Eliminar almacenamiento iSCSI",
|
||||
"body": "Ejecuta <code>pvesm remove <storage-id></code> tras confirmar portal, target y contenido. Solo se elimina el registro en Proxmox — <strong>el propio target iSCSI no se toca</strong> y las sesiones existentes en el lado del kernel pueden persistir hasta el siguiente reinicio.",
|
||||
"warnTitle": "Discos de VM existentes en este iSCSI primero",
|
||||
"warnTitle": "Primero revisa los discos de VM existentes en este iSCSI",
|
||||
"warnBody": "Eliminar un almacenamiento iSCSI mientras las VMs todavía tienen discos en él deja a esas VMs apuntando a un almacén desaparecido. Proxmox marcará el error, pero los datos de la LUN siguen intactos en el target — puedes volver a registrar el almacenamiento después para recuperar los discos. Aun así, mueve o haz backup de las VMs primero por seguridad."
|
||||
},
|
||||
"test": {
|
||||
@@ -98,7 +98,7 @@
|
||||
"noLunTitle": "Las LUNs no aparecen en /dev/disk/by-path tras el registro",
|
||||
"noLunBody": "<code>pvesm add iscsi</code> tuvo éxito pero el kernel no ve dispositivos de bloque. Comprueba <code>iscsiadm --mode session</code> — si no hay sesión activa, inicia una manualmente con <code>iscsiadm --mode node --login</code>. Si hay sesión pero no aparecen LUNs, fuerza un rescan: <code>iscsiadm --mode session --rescan</code>. Si sigue sin haber nada, probablemente el target todavía no tiene LUNs asignadas a este IQN (configura el mapeo de LUN en el target).",
|
||||
"chapTitle": "Autenticación CHAP",
|
||||
"chapBody": "ProxMenux no expone los campos de usuario / contraseña CHAP en el flujo interactivo. Si tu target requiere CHAP, registra con ProxMenux primero (el descubrimiento con CHAP puede fallar, pero <code>pvesm add</code> escribirá la entrada igualmente), luego añade credenciales manualmente: <code>pvesm set <id> --username <chap-user></code> y edita <code>/etc/iscsi/iscsid.conf</code> con la contraseña, después <code>systemctl restart iscsid</code>. Es una carencia del script actual — documentada aquí para que sepas qué hacer."
|
||||
"chapBody": "ProxMenux no ofrece campos de usuario y contraseña CHAP en el flujo interactivo. Si falla el descubrimiento, el script se detiene antes de <code>pvesm add</code>; no registra el almacenamiento de todos modos. Configura por separado los requisitos CHAP del destino en <code>open-iscsi</code>, incluida la autenticación del descubrimiento si hace falta, y vuelve a intentarlo. Usa <code>iscsiadm</code> para comprobar la configuración y verifica las sesiones activas con <code>iscsiadm --mode session</code>."
|
||||
},
|
||||
"related": {
|
||||
"heading": "Relacionado",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: añadir disco local como almacenamiento de Proxmox | ProxMenux Documentation",
|
||||
"title": "Host: añadir disco local como almacenamiento de Proxmox | Documentación de ProxMenux",
|
||||
"description": "Formatea un disco local SATA / SAS / NVMe en un host Proxmox y regístralo como almacenamiento Proxmox directory o ZFS pool. Detección segura de discos, gate de confirmación para operaciones destructivas, fstab basado en UUID, creación de ZFS pool y pvesm add dir / zfspool por dentro.",
|
||||
"ogTitle": "Host: añadir disco local como almacenamiento de Proxmox | ProxMenux Documentation",
|
||||
"ogTitle": "Host: añadir disco local como almacenamiento de Proxmox | Documentación de ProxMenux",
|
||||
"ogDescription": "Formatea un disco local y regístralo como almacenamiento Proxmox directory o ZFS pool con un flujo guiado y filtrado por seguridad."
|
||||
},
|
||||
"header": {
|
||||
@@ -16,11 +16,11 @@
|
||||
},
|
||||
"destructive": {
|
||||
"title": "Herramienta destructiva para la ruta 'format'",
|
||||
"body": "La ruta <em>Format</em> <strong>borra cada partición y byte del disco seleccionado</strong>. ProxMenux muestra la lista de discos con un banner de advertencia, filtra los discos ya en uso y exige una confirmación explícita antes de ejecutar cualquier <code>wipefs</code> / <code>sgdisk</code> / <code>mkfs</code>. Aun así — lee la ruta del dispositivo en voz alta dos veces antes de escribir \"yes\"."
|
||||
"body": "La opción <em>Formatear</em> <strong>destruye las particiones y los datos existentes en el disco seleccionado</strong>. ProxMenux muestra una advertencia, filtra los discos en uso y exige confirmación antes de ejecutar <code>wipefs</code> / <code>sgdisk</code> / <code>mkfs</code>. No es una sobrescritura segura de cada byte. Comprueba dos veces la ruta del dispositivo antes de confirmar."
|
||||
},
|
||||
"compare": {
|
||||
"heading": "Directory vs ZFS pool — cuál elegir",
|
||||
"headerDir": "Directory (ext4 / xfs / btrfs)",
|
||||
"headerDir": "Directorio (ext4 / xfs / btrfs)",
|
||||
"headerZfs": "ZFS pool",
|
||||
"rows": [
|
||||
{
|
||||
@@ -34,12 +34,12 @@
|
||||
"zfs": "Dataset ZFS nativo (zvol) por disco"
|
||||
},
|
||||
{
|
||||
"label": "Snapshots",
|
||||
"label": "Instantáneas",
|
||||
"dir": "Snapshots qcow2; snapshots btrfs si fs=btrfs",
|
||||
"zfs": "Nativos, instantáneos, copy-on-write"
|
||||
},
|
||||
{
|
||||
"label": "Thin provisioning",
|
||||
"label": "Aprovisionamiento fino",
|
||||
"dir": "Sí (qcow2 por defecto)",
|
||||
"zfs": "Sí (ZFS por defecto)"
|
||||
},
|
||||
@@ -51,7 +51,7 @@
|
||||
{
|
||||
"label": "Content types soportados",
|
||||
"dir": "images, backup, iso, vztmpl, snippets, rootdir",
|
||||
"zfs": "images, rootdir solamente (almacenamiento de bloque)"
|
||||
"zfs": "solo images y rootdir (almacenamiento de bloques)"
|
||||
},
|
||||
{
|
||||
"label": "Mejor para",
|
||||
@@ -63,7 +63,7 @@
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Add Local Disk as Proxmox Storage</strong>. Verás este submenú con cuatro opciones:",
|
||||
"imageAlt": "Menú Local Disk Manager — Add / View / Remove / List available disks"
|
||||
"imageAlt": "Menú de discos locales — Añadir / Ver / Eliminar / Listar discos disponibles"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script (flujo Add)",
|
||||
@@ -78,7 +78,7 @@
|
||||
"Elige el sistema de archivos — mira la tabla de arriba para las contrapartidas.",
|
||||
"Storage ID (por defecto <code>disk-<device></code>), ruta de montaje, preset de content type.",
|
||||
"Confirma en el diálogo <strong>FINAL CONFIRMATION — DATA WILL BE ERASED</strong>.",
|
||||
"ProxMenux limpia la tabla de particiones, crea una partición que abarca el disco entero, ejecuta <code>mkfs.<fs></code> (o <code>zpool create</code>), la monta, la añade a <code>/etc/fstab</code> por UUID con <code>defaults,nofail</code> y la registra en Proxmox vía <code>pvesm add dir</code> o <code>pvesm add zfspool</code>."
|
||||
"ProxMenux limpia la tabla de particiones y crea una partición que abarca el disco. Ejecuta <code>mkfs.<fs></code> o <code>zpool create</code> y monta el resultado. Los sistemas de archivos normales reciben una entrada en <code>/etc/fstab</code> por UUID con <code>defaults,nofail</code>; ZFS usa la configuración de montaje del pool. Si <em>Como almacenamiento Proxmox</em> está marcado (siempre en ZFS), se registra con <code>pvesm add dir</code> o <code>pvesm add zfspool</code>; si no, queda solo como montaje del host."
|
||||
],
|
||||
"tipTitle": "Por qué UUID + nofail en /etc/fstab",
|
||||
"tipBody": "El script escribe <code>UUID=… /mnt/<id> <fs> defaults,nofail 0 2</code>. El UUID sobrevive a reordenaciones de dispositivos entre reinicios (así que <code>/dev/sdc</code> pasando a ser <code>/dev/sdd</code> no rompe el arranque). <code>nofail</code> significa que si el disco desaparece alguna vez (fallo de hardware, desconectado), Proxmox arranca igualmente — el almacenamiento simplemente se mostrará como inactive hasta que el disco vuelva."
|
||||
@@ -96,35 +96,35 @@
|
||||
"warnBody": "Si el disco ya contiene un pool ZFS, la ruta de <em>reuse</em> aquí simplemente intenta montarlo como un sistema de archivos normal — y falla. Para importar un pool ZFS existente usa <code>zpool import <name></code> en línea de comandos y después regístralo manualmente con <code>pvesm add zfspool</code>."
|
||||
},
|
||||
"presets": {
|
||||
"heading": "Presets de content type",
|
||||
"intro": "En vez de una larga lista de verificación, ProxMenux ofrece 4 presets más una opción custom. La cadena del preset se pasa a <code>pvesm add … --content <csv></code>:",
|
||||
"headerPreset": "Preset",
|
||||
"heading": "Preajustes de tipos de contenido",
|
||||
"intro": "ProxMenux ofrece tres preajustes y una opción personalizada. La cadena de contenido elegida se pasa a <code>pvesm add … --content <csv></code>:",
|
||||
"headerPreset": "Preajuste",
|
||||
"headerContent": "Cadena de contenido",
|
||||
"headerUse": "Caso de uso",
|
||||
"rows": [
|
||||
{
|
||||
"preset": "VM Storage",
|
||||
"preset": "Almacenamiento VM",
|
||||
"content": "images,backup",
|
||||
"use": "Un almacén de discos de VM dedicado que también guarda backups de esas VMs cerca."
|
||||
},
|
||||
{
|
||||
"preset": "Standard NAS",
|
||||
"preset": "NAS estándar",
|
||||
"content": "backup,iso,vztmpl",
|
||||
"use": "Un disco de archivo / media — backups, ISOs y templates LXC. Sin discos de VM en vivo aquí."
|
||||
},
|
||||
{
|
||||
"preset": "All types",
|
||||
"preset": "Todos los tipos",
|
||||
"content": "images,backup,iso,vztmpl,snippets",
|
||||
"use": "\"Que decida el host\" — permite todos los content types que Proxmox soporta en este almacenamiento."
|
||||
"use": "Este preajuste amplio habilita imágenes, backups, ISO, plantillas LXC y snippets. Si necesitas otros tipos compatibles, como rootdir, añádelos mediante Personalizado."
|
||||
},
|
||||
{
|
||||
"preset": "Custom",
|
||||
"preset": "Personalizado",
|
||||
"content": "(entrada libre)",
|
||||
"useRich": "Escribe el CSV exacto tú mismo, p. ej. <code>images</code> solo, o <code>rootdir,images</code>."
|
||||
}
|
||||
],
|
||||
"zfsTitle": "El contenido del ZFS pool es más limitado",
|
||||
"zfsBody": "Si elegiste <strong>zfs</strong> como sistema de archivos, Proxmox solo acepta <code>images</code> y <code>rootdir</code> como content types en un <code>zfspool</code> (es almacenamiento de bloque, no un sistema de archivos para ISOs). Los presets de arriba siguen funcionando pero Proxmox descarta silenciosamente los content types que no puede usar — comprueba <code>pvesm status</code> después."
|
||||
"zfsBody": "Si elegiste <strong>zfs</strong>, un <code>zfspool</code> solo admite <code>images</code> y <code>rootdir</code>, no archivos ISO ni backups. Usa Personalizado para introducir una lista compatible. El script la pasa sin modificar; los tipos no compatibles pueden hacer fallar el registro. Comprueba <code>pvesm status</code> después."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manual",
|
||||
@@ -147,7 +147,7 @@
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"noDisksTitle": "\"No available disks found\"",
|
||||
"noDisksTitle": "\"No se encontraron discos disponibles\"",
|
||||
"noDisksIntro": "El filtro de seguridad ocultó cada disco. Razones comunes:",
|
||||
"noDisksItems": [
|
||||
"Solo está presente el disco raíz.",
|
||||
@@ -168,7 +168,7 @@
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/disk-manager/format-disk",
|
||||
"label": "Disk Manager: Format / Wipe Physical Disk",
|
||||
"label": "Gestor de discos: Formatear / Borrar disco físico",
|
||||
"tail": " — alternativa de bajo nivel cuando solo quieres preparar un disco sin registrarlo como almacenamiento de Proxmox."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -36,9 +36,9 @@
|
||||
"headerWhy": "Por qué importa aquí",
|
||||
"rows": [
|
||||
{
|
||||
"bit": "1 (sticky)",
|
||||
"effect": "Solo el propietario del archivo puede borrar / renombrar un archivo.",
|
||||
"why": "Evita que el CT-A borre archivos creados por el CT-B en el mismo directorio."
|
||||
"bit": "1 (sticky bit)",
|
||||
"effect": "Solo pueden borrar o renombrar un archivo su propietario, el propietario del directorio o un proceso con privilegios suficientes.",
|
||||
"why": "Ayuda a impedir que usuarios con UID mapeados diferentes borren archivos ajenos. No aísla CT que comparten un UID mapeado o acceso root privilegiado."
|
||||
},
|
||||
{
|
||||
"bit": "777 (rwx-rwx-rwx)",
|
||||
@@ -46,9 +46,9 @@
|
||||
"why": "Los UIDs de CT unprivileged (100000+) aparecen como \"others\" desde el host, así que world-rwx les da acceso."
|
||||
},
|
||||
{
|
||||
"bit": "ACLs (default)",
|
||||
"bit": "ACL (predeterminadas)",
|
||||
"effect": "Heredado en cada archivo / subdir recién creado.",
|
||||
"why": "Los permisos se aplican para siempre — el contenido nuevo conserva el perfil abierto sin reejecutar el script."
|
||||
"why": "El contenido nuevo hereda las ACL predeterminadas sin volver a ejecutar el script. Las aplicaciones pueden solicitar modos restrictivos o cambiar los permisos después."
|
||||
}
|
||||
],
|
||||
"privTitle": "Los CTs privileged ven lo mismo, solo que sin el desplazamiento",
|
||||
@@ -90,7 +90,7 @@
|
||||
"items": [
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "LXC Mount Manager",
|
||||
"label": "Gestor de montajes LXC",
|
||||
"tail": " — el siguiente paso natural: hacer bind mount de este directorio en uno o más contenedores."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: montar share NFS en el host | ProxMenux Documentation",
|
||||
"title": "Host: montar recurso NFS en el host | Documentación de ProxMenux",
|
||||
"description": "Monta un export NFS externo en el host Proxmox — bien como almacenamiento de Proxmox (pvesm add nfs), bien como un montaje fstab del host normal (NO visible en Datacenter > Storage), o ambos. El método fstab es ideal para hacer bind mount del share en contenedores LXC sin exponerlo como almacenamiento de Proxmox.",
|
||||
"ogTitle": "Host: montar share NFS en el host | ProxMenux Documentation",
|
||||
"ogTitle": "Host: montar recurso NFS en el host | Documentación de ProxMenux",
|
||||
"ogDescription": "Monta un export NFS externo en el host Proxmox vía pvesm, fstab o ambos. La ruta fstab es ideal para bind mounts LXC."
|
||||
},
|
||||
"header": {
|
||||
@@ -17,7 +17,7 @@
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Mount NFS Share on Host</strong>. Verás este submenú con cuatro opciones:",
|
||||
"imageAlt": "Menú NFS Host Manager — Mount / View / Remove / Test connectivity"
|
||||
"imageAlt": "Menú NFS del host — Montar / Ver / Eliminar / Probar conectividad"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script",
|
||||
@@ -46,13 +46,13 @@
|
||||
},
|
||||
{
|
||||
"method": "<strong>Ambos</strong>",
|
||||
"mount": "Ambas rutas de arriba (dos conexiones NFS independientes al servidor)",
|
||||
"mount": "Ambas rutas anteriores (dos puntos de montaje del mismo export NFS)",
|
||||
"ui": "Sí",
|
||||
"useCase": "Quieres integración con la UI Y una ruta estable del lado del host con permisos abiertos para bind mounts LXC. El servidor ve dos conexiones desde el host."
|
||||
"useCase": "Integración con la interfaz y una ruta estable separada en el host con permisos abiertos para bind mounts LXC."
|
||||
}
|
||||
],
|
||||
"bothTitle": "\"Ambos\" crea dos montajes NFS independientes",
|
||||
"bothBody": "Marcar ambas opciones ejecuta cada método independientemente — pvesm monta en <code>/mnt/pve/<id></code>, fstab monta en <code>/mnt/<path></code>. El servidor ve dos conexiones TCP desde el host Proxmox. Esto es intencional: te permite mantener el almacenamiento pvesm limpio (opciones por defecto de Proxmox) mientras tienes un montaje separado del lado del host con permisos abiertos para bind mounts LXC."
|
||||
"bothBody": "Los dos métodos se ejecutan por separado: pvesm monta en <code>/mnt/pve/<id></code> y fstab en <code>/mnt/<path></code>. Así tienes un montaje gestionado por Proxmox con opciones predeterminadas y otro en el host para bind mounts LXC. Dos puntos de montaje no garantizan dos conexiones TCP: el cliente NFS puede reutilizarlas."
|
||||
},
|
||||
"pvesmBranch": {
|
||||
"heading": "Método A — Como almacenamiento de Proxmox (pvesm)",
|
||||
@@ -61,7 +61,7 @@
|
||||
"<strong>Storage ID</strong> — cómo llamará Proxmox a este almacenamiento. Por defecto es <code>nfs-<server-ip-with-dashes></code>. Solo se aceptan letras, dígitos, <code>-</code> y <code>_</code>.",
|
||||
"<strong>Content types</strong> — Proxmox vincula categorías de contenido a volúmenes de almacenamiento; elige qué se le permite a este NFS contener:"
|
||||
],
|
||||
"headerType": "Content type",
|
||||
"headerType": "Tipo de contenido",
|
||||
"headerAllows": "Qué permite",
|
||||
"rows": [
|
||||
{
|
||||
@@ -94,7 +94,7 @@
|
||||
}
|
||||
],
|
||||
"warnTitle": "images y rootdir en NFS",
|
||||
"warnBody": "Marcar <code>images</code> en un almacenamiento NFS deja a Proxmox colocar discos de VM en vivo ahí. Funciona, pero la latencia de NFS + su semántica de locks lo hacen notablemente más lento que el almacenamiento local (y un corte de red pausa cada VM respaldada por ese almacén). Marcar <code>rootdir</code> significa que alojarás sistemas de archivos raíz de LXC sobre NFS, lo que históricamente da problemas con contenedores unprivileged (interacciones overlay / chown). Es preferible mantener <code>images</code> / <code>rootdir</code> en almacenamiento local o iSCSI y usar NFS para <code>backup</code> / <code>iso</code> / <code>vztmpl</code>.",
|
||||
"warnBody": "Seleccionar <code>images</code> permite guardar discos de VM en NFS. El rendimiento depende de la red, el servidor y la carga; una caída puede bloquear la E/S que dependa del montaje. Seleccionar <code>rootdir</code> guarda sistemas de archivos raíz LXC en NFS, donde los contenedores sin privilegios pueden encontrar limitaciones de mapeo de UID, overlay y propiedad. Evalúa estos requisitos antes de colocar <code>images</code> / <code>rootdir</code> ahí; NFS también sirve para <code>backup</code> / <code>iso</code> / <code>vztmpl</code>.",
|
||||
"result": "El resultado es <code>pvesm add nfs <id> --server <srv> --export <path> --content <csv></code> y Proxmox automonta en <code>/mnt/pve/<id></code>."
|
||||
},
|
||||
"fstabBranch": {
|
||||
@@ -102,7 +102,7 @@
|
||||
"intro": "Si <em>Solo como montaje fstab del host</em> está marcado, ProxMenux pide una ruta de montaje del host y opciones persistentes, luego monta y escribe la entrada en <code>/etc/fstab</code>:",
|
||||
"items": [
|
||||
"<strong>Ruta de montaje del host</strong> — por defecto <code>/mnt/<export-basename></code>. Debe ser una ruta absoluta. Si algo ya está montado ahí, o existe una entrada fstab para la misma ruta, ProxMenux te avisa y ofrece reemplazarla.",
|
||||
"<strong>Mount options</strong> — elige <em>Read/Write</em> (por defecto con <code>rw,hard,nofail,_netdev,rsize=131072,wsize=131072,timeo=600,retrans=2</code>), <em>Read-only</em>, o <em>Custom</em> (escribe tu propia cadena de opciones)."
|
||||
"<strong>Opciones de montaje</strong> — <em>Lectura/escritura</em> (predeterminado: <code>rw,hard,nofail,_netdev,rsize=131072,wsize=131072,timeo=600,retrans=2</code>), <em>Solo lectura</em>, <em>Personalizado</em> (escribe tus propias opciones)."
|
||||
],
|
||||
"appliesIntro": "Una vez confirmes, el script:",
|
||||
"applies": [
|
||||
@@ -113,7 +113,7 @@
|
||||
"Intenta <code>chmod 1777</code> + <code>setfacl o::rwx</code> en el punto de montaje (best-effort silencioso — solo tiene éxito si el servidor NFS lo permite; muchos exports NAS ya sirven rutas world-writable)."
|
||||
],
|
||||
"lxcTitle": "Usar el montaje fstab desde un LXC",
|
||||
"lxcBody": "El script imprime el comando <code>pct set</code> exacto al final para hacer bind mount de la ruta en un contenedor, p. ej. <code>pct set <ctid> -mp0 /mnt/<path>,mp=/mnt/<ct-path>,shared=1,backup=0</code>. O usa el <mountLink>LXC Mount Manager</mountLink>, que detecta el montaje fstab automáticamente. <strong>No se hacen cambios dentro del contenedor</strong> — para que los LXCs unprivileged lean/escriban los datos NFS, el script depende de la semántica world-writable del export del lado del servidor (típica en defaults de Synology, TrueNAS, OMV). Si tu servidor NFS aplica squash a root o restringe permisos, mira Solución de problemas.",
|
||||
"lxcBody": "El script muestra un comando <code>pct set</code> para un bind mount, p. ej. <code>pct set <ctid> -mp0 /mnt/<path>,mp=/mnt/<ct-path>,shared=1,backup=0</code>. También puedes usar <mountLink>LXC Mount Manager</mountLink>, que detecta los montajes fstab. <strong>No se cambia nada dentro del contenedor</strong>. El acceso desde un CT sin privilegios depende de los permisos del servidor para sus UID/GID mapeados. El script solo intenta ajustar permisos desde el host; no garantiza exports escribibles ni ajustes predeterminados de fabricantes. Si falla, consulta Solución de problemas.",
|
||||
"noUiTitle": "El montaje fstab NO es un almacenamiento de Proxmox",
|
||||
"noUiBody": "El montaje fstab del host es invisible para la UI web de Proxmox — por diseño. No aparece en <em>Datacenter > Storage</em>, no puedes seleccionarlo en el creador de VM / CT, y los trabajos de backup de Proxmox no pueden apuntarlo. Es puramente una ruta del sistema de archivos del host. Si quieres también integración con la UI, marca <em>ambos</em> métodos en el selector."
|
||||
},
|
||||
@@ -138,16 +138,16 @@
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"noServersTitle": "\"No NFS servers found on the network\"",
|
||||
"noServersTitle": "\"No se encontraron servidores NFS en la red\"",
|
||||
"noServersBody": "El auto-descubrimiento usa <code>nmap -p 2049 --open <subnet>/24</code>. El servidor puede no responder si: está en una VLAN / subnet diferente, su firewall bloquea las sondas nmap (muchos lo hacen) o el puerto 2049 está intencionalmente cerrado en esa interfaz. Usa la opción <em>Manual</em> con la IP o hostname del servidor en su lugar.",
|
||||
"portTitle": "\"NFS port (2049) is not accessible\"",
|
||||
"portTitle": "«El puerto NFS (2049) no es accesible»",
|
||||
"portBody": "El ping tuvo éxito pero <code>nc -z -w 3 <server> 2049</code> falló. Comprueba que el servicio NFS está corriendo en el servidor (<code>systemctl status nfs-server</code> en Linux, Panel de Control → File Services en Synology, plugin NFS en OMV / TrueNAS) y que el firewall permite el 2049 desde el host Proxmox.",
|
||||
"showmountTitle": "\"Failed to connect\" desde showmount",
|
||||
"showmountBody": "El servidor rechazó la consulta de la lista de exports. Causas comunes: el servidor aplica ACLs de cliente estrictas (tu IP de Proxmox no está en la lista permitida), <code>rpcbind</code> no está corriendo en el servidor o el servidor expone solo NFSv4 con <code>showmount</code> deshabilitado. La ruta del export se puede añadir manualmente igualmente si la conoces.",
|
||||
"inactiveTitle": "El almacenamiento aparece como inactive en la UI de Proxmox",
|
||||
"inactiveBody": "Ejecuta <em>Test NFS Connectivity</em> primero — el 99 % de las veces esto marca el salto exacto que se rompe (DNS, puerto, permisos de montaje). Si la conectividad va bien pero Proxmox sigue marcando inactive, comprueba <code>journalctl -u pvestatd</code> en el nodo Proxmox; DNS intermitente o montajes NFS lentos al arrancar pueden dejar almacenamientos en estado inactive hasta que <code>pvesm set <id> --disable 0</code> se reaplica.",
|
||||
"inactiveBody": "Ejecuta primero <em>Probar la conectividad NFS</em>: comprueba que el servidor responde al ping, que el puerto 2049 está abierto y que la lista de exports (<code>showmount -e</code>) está disponible. Si la conectividad funciona pero sigue inactivo, consulta <code>journalctl -u pvestatd</code> y la configuración del servidor/export. Corrige primero la conectividad o los permisos. <code>pvesm set <id> --disable 0</code> habilita un almacenamiento deshabilitado; no repara fallos NFS en general.",
|
||||
"lxcNoWriteTitle": "El montaje fstab funciona pero un LXC unprivileged no puede escribir por un bind mount",
|
||||
"lxcNoWriteBody": "Los permisos NFS se aplican del lado del servidor, no del host. Las opciones fstab (<code>uid=</code>, <code>file_mode=</code>) que funcionan para CIFS <strong>no</strong> se aplican a NFS. Si tu LXC unprivileged (root dentro del CT = UID 100000 en el host, mapeado a NFS como \"others\") no puede escribir, el servidor NFS o bien aplica squash a root o bien tiene permisos restrictivos. Arregla en el servidor: cambia el export a <code>no_root_squash</code> si confías en el host, o pon el export world-writable (Synology, TrueNAS, OMV exponen esto en su UI). El script intenta <code>chmod 1777</code> en el montaje pero eso solo tiene éxito cuando el servidor lo permite.",
|
||||
"lxcNoWriteBody": "El acceso NFS depende de propiedad, ACL y squash en el servidor. Las opciones CIFS como <code>uid=</code> y <code>file_mode=</code> <strong>no</strong> se aplican a NFS. Con el mapeo LXC predeterminado, root del CT se convierte en UID 100000 del host, no en UID remoto 0. Da acceso al UID/GID mapeado real o a la identidad anónima del servidor. <code>no_root_squash</code> solo afecta al UID remoto 0, por lo que no resuelve todos los casos de UID 100000. El script intenta <code>chmod 1777</code>, pero no anula permisos del servidor.",
|
||||
"fstabBootTitle": "El montaje fstab no se levanta tras el reinicio",
|
||||
"fstabBootBody": "El script añade <code>nofail,_netdev</code> para que un share que falte al arranque no bloquee el inicio. Si el montaje nunca se levanta: confirma que la red es alcanzable (<code>ping <server></code>), comprueba <code>journalctl -u remote-fs.target</code> y verifica que la entrada es válida con <code>mount -fav | grep nfs</code>. <code>mount -a</code> después del arranque monta todo lo que falte actualmente."
|
||||
},
|
||||
@@ -161,7 +161,7 @@
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "LXC Mount Manager",
|
||||
"label": "Gestor de montajes LXC",
|
||||
"tailRich": " — hacer bind mount de la ruta solo en fstab <code>/mnt/<path></code> en uno o más contenedores."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Host: montar share Samba en el host | ProxMenux Documentation",
|
||||
"title": "Host: montar recurso Samba en el host | Documentación de ProxMenux",
|
||||
"description": "Monta un share Samba / CIFS externo en el host Proxmox — bien como almacenamiento de Proxmox (pvesm add cifs), bien como un montaje fstab del host normal con uid/gid/file_mode abiertos (NO visible en Datacenter > Storage), o ambos. El método fstab abre los permisos para que un LXC unprivileged que haga bind mount de la ruta pueda leer/escribir sin cambios dentro del contenedor.",
|
||||
"ogTitle": "Host: montar share Samba en el host | ProxMenux Documentation",
|
||||
"ogTitle": "Host: montar recurso Samba en el host | Documentación de ProxMenux",
|
||||
"ogDescription": "Monta un share Samba / CIFS externo en el host Proxmox vía pvesm, fstab con permisos abiertos (ideal para bind mounts LXC), o ambos."
|
||||
},
|
||||
"header": {
|
||||
@@ -12,12 +12,12 @@
|
||||
},
|
||||
"intro": {
|
||||
"title": "Qué hace",
|
||||
"body": "ProxMenux ofrece dos métodos de montaje para cualquier share Samba: <strong>(1) Almacenamiento de Proxmox</strong> vía <code>pvesm add cifs</code> — visible en Datacenter > Storage, montado en <code>/mnt/pve/<id></code>, credenciales guardadas cifradas en <code>/etc/pve/priv/storage/<id>.pw</code>; <strong>(2) Montaje fstab del host</strong> en una ruta que tú elijas — persistente vía <code>/etc/fstab</code>, montado con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> para que los bind mounts LXC unprivileged puedan escribir, credenciales guardadas en un archivo solo para root en <code>/etc/samba/credentials/</code> (la contraseña nunca aparece en <code>fstab</code>). Puedes ejecutar un método, el otro o ambos."
|
||||
"body": "ProxMenux ofrece dos métodos para montar un recurso Samba: <strong>(1) Almacenamiento de Proxmox</strong> mediante <code>pvesm add cifs</code>, visible en Datacenter > Storage y montado en <code>/mnt/pve/<id></code>. La contraseña se guarda en texto claro en <code>/etc/pve/priv/storage/<id>.pw</code>, protegida por el directorio privado accesible solo por root: es control de acceso, no cifrado. <strong>(2) Montaje fstab del host</strong> en una ruta elegida, persistente mediante <code>/etc/fstab</code> y montada con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> para permitir la escritura desde bind mounts de LXC sin privilegios. Sus credenciales se guardan en un archivo accesible solo por root dentro de <code>/etc/samba/credentials/</code>, nunca directamente en <code>fstab</code>. Puedes utilizar cualquiera de los métodos o ambos."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Mount Samba Share on Host</strong>. Verás este submenú con cuatro opciones:",
|
||||
"imageAlt": "Menú Samba Host Manager — Mount / View / Remove / Test connectivity"
|
||||
"imageAlt": "Menú Samba del host — Montar / Ver / Eliminar / Probar conectividad"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script",
|
||||
@@ -41,26 +41,26 @@
|
||||
"method": "<strong>Solo fstab del host</strong>",
|
||||
"mountRich": "<code>/mnt/<path></code> con uid/gid/file_mode abiertos",
|
||||
"ui": "No",
|
||||
"useCaseRich": "Hacer bind mount del share en uno o más LXCs <em>sin</em> exponerlo como almacenamiento de Proxmox. Los permisos abiertos garantizan que los CTs unprivileged puedan escribir a través del bind mount."
|
||||
"useCaseRich": "Haz bind mount del recurso en uno o más LXC <em>sin</em> registrarlo como almacenamiento Proxmox. Los permisos locales abiertos facilitan el acceso desde CT sin privilegios, pero escribir sigue requiriendo permiso del servidor SMB para el usuario autenticado."
|
||||
},
|
||||
{
|
||||
"method": "<strong>Ambos</strong>",
|
||||
"mount": "Ambas rutas de arriba (dos conexiones CIFS independientes al servidor)",
|
||||
"mount": "Ambas rutas anteriores (dos puntos de montaje del mismo export CIFS)",
|
||||
"ui": "Sí",
|
||||
"useCase": "Quieres integración con la UI Y una ruta estable del lado del host con permisos abiertos para bind mounts LXC. El montaje pvesm usa los valores por defecto de Proxmox; el montaje fstab aplica el uid/gid/file_mode abierto por separado."
|
||||
}
|
||||
],
|
||||
"bothTitle": "\"Ambos\" crea dos conexiones CIFS independientes",
|
||||
"bothBody": "pvesm y fstab montan el mismo share dos veces con opciones distintas. El montaje pvesm en <code>/mnt/pve/<id></code> usa los valores por defecto de Proxmox (sin uid/gid abiertos) — la UI de Proxmox está contenta. El montaje fstab en <code>/mnt/<path></code> usa <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> — los bind mounts LXC unprivileged a él pueden escribir. Dos conexiones TCP al servidor SMB desde el mismo host Proxmox."
|
||||
"bothTitle": "«Ambos» crea dos puntos de montaje CIFS",
|
||||
"bothBody": "pvesm monta en <code>/mnt/pve/<id></code> con las opciones de Proxmox. fstab monta en <code>/mnt/<path></code> con <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> para permitir acceso local mediante bind mounts LXC. El servidor SMB sigue aplicando los permisos del usuario del montaje. Son dos puntos de montaje; no garantizan dos conexiones TCP separadas."
|
||||
},
|
||||
"pvesmBranch": {
|
||||
"heading": "Método A — Como almacenamiento de Proxmox (pvesm)",
|
||||
"intro": "Si <em>Como almacenamiento de Proxmox</em> está marcado, ProxMenux ejecuta el flujo pvesm original:",
|
||||
"items": [
|
||||
"<strong>Storage ID</strong> — por defecto <code>cifs-<server-ip-with-dashes></code>. Solo letras, dígitos, <code>-</code> y <code>_</code>.",
|
||||
"<strong>Content types</strong> — CIFS expone <strong>6</strong> opciones (las mismas que NFS menos <code>rootdir</code>, que Proxmox no permite en CIFS porque la semántica de locking no puede sostener un rootfs LXC en vivo):"
|
||||
"<strong>Tipos de contenido</strong> — este selector de ProxMenux ofrece <strong>6</strong> opciones. Omite <code>rootdir</code> respecto al selector NFS; es una decisión del script, no significa que todas las versiones del backend CIFS de Proxmox prohíban sistemas de archivos raíz LXC:"
|
||||
],
|
||||
"headerType": "Content type",
|
||||
"headerType": "Tipo de contenido",
|
||||
"headerAllows": "Qué permite",
|
||||
"rows": [
|
||||
{
|
||||
@@ -89,16 +89,16 @@
|
||||
}
|
||||
],
|
||||
"warnTitle": "Discos de VM en vivo en CIFS",
|
||||
"warnBody": "Si marcas <code>images</code>, ProxMenux saca un aviso antes de continuar. CIFS usa un modelo de locking advisory que interactúa mal con las operaciones de disco de KVM (snapshots, migración en vivo, I/O bajo contención). Un almacén de backups o ISOs en CIFS es perfectamente correcto; un almacén de discos en vivo es buscarse problemas. Usa NFS (o almacenamiento local) para <code>images</code> cuando puedas.",
|
||||
"warnBody": "Seleccionar <code>images</code> muestra un aviso: CIFS/SMB puede causar problemas de bloqueo en operaciones con discos de VM. El script recomienda NFS para imágenes de VM, pero permite continuar. Backups e ISO son usos habituales de CIFS. Evalúa bloqueos, instantáneas, migración y carga antes de usar CIFS para <code>images</code>.",
|
||||
"credsTitle": "Dónde guarda pvesm las credenciales",
|
||||
"credsBody": "Cuando usas autenticación de usuario, la contraseña NO se escribe en <code>/etc/pve/storage.cfg</code>. Proxmox la guarda en <code>/etc/pve/priv/storage/<storage-id>.pw</code> — modo <code>0600</code>, propietario <code>root</code>, miembro del cluster sync. Si más adelante cambias la contraseña en el servidor Samba, usa <code>pvesm set <id> --password <new></code> o elimina y vuelve a añadir a través de ProxMenux."
|
||||
"credsBody": "La contraseña no se escribe en <code>/etc/pve/storage.cfg</code>. Proxmox guarda credenciales en texto plano en <code>/etc/pve/priv/storage/<storage-id>.pw</code>, dentro del área privada del sistema de archivos del clúster, que solo puede leer <code>root</code> (modo <code>0600</code>); están protegidas por permisos, no por cifrado. Tras cambiar la contraseña en el servidor, usa <code>pvesm set <id> --password <new></code> o elimina y vuelve a añadir desde ProxMenux."
|
||||
},
|
||||
"fstabBranch": {
|
||||
"heading": "Método B — Solo montaje fstab del host",
|
||||
"intro": "Si <em>Solo como montaje fstab del host</em> está marcado, ProxMenux pide una ruta de montaje del host y opciones persistentes, escribe un archivo de credenciales solo para root (modo User), luego monta y escribe la entrada en <code>/etc/fstab</code>:",
|
||||
"items": [
|
||||
"<strong>Ruta de montaje del host</strong> — por defecto <code>/mnt/<share-name></code>. Debe ser una ruta absoluta. Si algo ya está montado ahí, o existe una entrada fstab, ProxMenux ofrece reemplazarla.",
|
||||
"<strong>Mount options</strong> — elige <em>Read/Write</em> (por defecto con <code>rw,uid=0,gid=0,file_mode=0777,dir_mode=0777,iocharset=utf8,nofail,_netdev</code>), <em>Read-only</em> (variante de solo lectura con <code>file_mode=0555,dir_mode=0555</code>), o <em>Custom</em> (escribe tu propia cadena de opciones). El uid/gid/file_mode abiertos siempre se recomiendan para escrituras a través de bind mount LXC."
|
||||
"<strong>Opciones de montaje</strong> — <em>Lectura/escritura</em> (predeterminado: <code>rw,uid=0,gid=0,file_mode=0777,dir_mode=0777,iocharset=utf8,nofail,_netdev</code>), <em>Solo lectura</em> (<code>file_mode=0555,dir_mode=0555</code>), <em>Personalizado</em> (escribe tus opciones). El script recomienda uid/gid/file_mode abiertos para escrituras mediante bind mounts LXC."
|
||||
],
|
||||
"credsTitle": "Archivo de credenciales (modo User)",
|
||||
"credsBody": "Si te autenticaste con usuario + contraseña, ProxMenux escribe un archivo de credenciales solo para root en <code>/etc/samba/credentials/<server>_<share>.cred</code> (modo <code>0600</code>) con líneas <code>username=</code> y <code>password=</code>, y lo referencia en la entrada fstab vía la opción de montaje <code>credentials=</code>. El texto en claro nunca aterriza en <code>/etc/fstab</code>. Para el modo Guest, en su lugar se añade la opción <code>guest</code> y no se crea archivo de credenciales.",
|
||||
@@ -110,9 +110,9 @@
|
||||
"Ejecuta <code>systemctl daemon-reload</code> para que systemd recoja la nueva entrada fstab."
|
||||
],
|
||||
"lxcTitle": "Usar el montaje fstab desde un LXC unprivileged",
|
||||
"lxcBody": "Como el cliente CIFS aplica <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>, cada archivo en el montaje pertenece al UID 0 del host con modo 0777. Un LXC unprivileged que haga bind mount de la ruta ve permisos \"others\" en cada entrada (root del CT = UID 100000 del host = others en el sistema de archivos del host), así que las lecturas y escrituras tienen éxito. <strong>No se hacen cambios dentro del contenedor</strong> — sin <code>chown</code> en el CT, sin configuración de grupo, nada modificado en <code>/etc/lxc</code> más allá de la única línea <code>mp</code> de bind mount. El script imprime el comando <code>pct set</code> exacto al final, o usa el <mountLink>LXC Mount Manager</mountLink> para adjuntar la ruta.",
|
||||
"lxcBody": "Las opciones CIFS <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code> abren las comprobaciones locales de permisos para bind mounts LXC. Las ACL del servidor y la semántica Unix/POSIX negociada aún pueden afectar al acceso. <strong>No se cambia nada dentro del contenedor</strong>: ni <code>chown</code> en el CT, ni grupos, ni ediciones de <code>/etc/lxc</code>. La línea <code>mp</code> se gestiona en la configuración Proxmox del CT. Usa el comando <code>pct set</code> mostrado o <mountLink>LXC Mount Manager</mountLink>.",
|
||||
"noUiTitle": "El montaje fstab NO es un almacenamiento de Proxmox",
|
||||
"noUiBody": "El montaje fstab del host es invisible para la UI web de Proxmox — por diseño. No aparece en <em>Datacenter > Storage</em>, no puedes seleccionarlo en el creador de VM / CT y los trabajos de backup de Proxmox no pueden apuntarlo. Es puramente una ruta del sistema de archivos del host. Si quieres también integración con la UI, marca <em>ambos</em> métodos en el selector."
|
||||
"noUiBody": "El montaje fstab del host es invisible para la UI web de Proxmox — por diseño. No aparece en <em>Datacenter > Storage</em>, no puedes seleccionarlo en el creador de VM / CT, y los trabajos de backup de Proxmox no pueden apuntarlo. Es puramente una ruta del sistema de archivos del host. Si quieres también integración con la UI, marca <em>ambos</em> métodos en el selector."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manual",
|
||||
@@ -121,12 +121,12 @@
|
||||
"fstabGuestIntro": "Método B (fstab, auth guest) — sin archivo de credenciales:"
|
||||
},
|
||||
"view": {
|
||||
"heading": "Ver almacenamientos CIFS configurados",
|
||||
"body": "Lista cada entrada CIFS en Proxmox (<code>pvesm status | awk ''$2 == \"cifs\"''</code>) con servidor, share, content types, usuario (o <em>Guest</em>), ruta de montaje y estado en vivo. La contraseña <strong>nunca se imprime</strong>. <strong>Nota:</strong> esta vista solo muestra almacenamientos registrados con pvesm — los montajes solo en fstab no se listan. Compruébalos con <code>findmnt -t cifs</code> o <code>grep cifs /etc/fstab</code>."
|
||||
"heading": "Ver almacenamientos CIFS y montajes del host",
|
||||
"body": "Muestra almacenamientos CIFS registrados (<code>pvesm status | awk ''$2 == \"cifs\"''</code>) con servidor, recurso, contenido, usuario o <em>Invitado</em>, ruta y estado. Las contraseñas <strong>nunca se muestran</strong>. <strong>Nota:</strong> otra sección lista montajes fstab del host, sus opciones, ruta del archivo de credenciales y estado activo/inactivo. Para comprobarlo manualmente usa <code>findmnt -t cifs</code> o <code>grep cifs /etc/fstab</code>."
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Eliminar almacenamiento CIFS",
|
||||
"body": "Ejecuta <code>pvesm remove <storage-id></code> tras una confirmación que muestra servidor / share / contenido. Solo se elimina el registro del lado de Proxmox — <strong>el servidor Samba remoto no se toca</strong>. Proxmox también borra el archivo de credenciales emparejado. Para eliminar un montaje solo en fstab, edita <code>/etc/fstab</code> a mano, ejecuta <code>umount <path></code> y elimina el archivo de <code>/etc/samba/credentials/</code>.",
|
||||
"heading": "Eliminar almacenamiento CIFS o montaje del host",
|
||||
"body": "El selector ofrece almacenamientos pvesm y montajes fstab del host. Para pvesm ejecuta <code>pvesm remove <storage-id></code> y Proxmox borra las credenciales asociadas. Para fstab intenta <code>umount <path></code>, elimina la entrada de <code>/etc/fstab</code> y las credenciales de <code>/etc/samba/credentials/</code>, y elimina el directorio de montaje si está vacío. Si falla el desmontaje, debes hacerlo manualmente o reiniciar. <strong>No modifica el servidor Samba remoto ni sus archivos</strong>.",
|
||||
"warnTitle": "Haz backup de las dependencias primero",
|
||||
"warnBody": "Las VMs, CTs o trabajos de backup que referencien este almacenamiento por ID fallarán tras la eliminación. Mueve / elimina esas referencias antes de eliminar el almacenamiento."
|
||||
},
|
||||
@@ -136,16 +136,16 @@
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"noServersTitle": "\"No Samba servers found on the network\"",
|
||||
"noServersTitle": "\"No se encontraron servidores Samba en la red\"",
|
||||
"noServersBody": "El auto-descubrimiento usa <code>nmap -p 139,445</code>. El servidor puede estar en una subnet diferente, con firewall o solo alcanzable por hostname (mDNS / WINS). Usa la opción <em>Manual</em> con la IP o hostname en su lugar.",
|
||||
"noSharesTitle": "\"No accessible shares found\"",
|
||||
"noSharesTitle": "«No se encontraron recursos compartidos accesibles»",
|
||||
"noSharesBody": "<code>smbclient -L</code> no devolvió nada para estas credenciales. Causas: el usuario no tiene permiso para listar shares (prueba con credenciales de admin una vez, o escribe el nombre del share manualmente), el servidor tiene la visibilidad de shares deshabilitada o las credenciales son incorrectas. El script te permite escribir el nombre del share a mano en este caso.",
|
||||
"denyTitle": "El montaje de Proxmox falla con NT_STATUS_ACCESS_DENIED",
|
||||
"denyBody": "Las credenciales que pvesm guardó están desincronizadas con el servidor Samba (contraseña cambiada, cuenta deshabilitada, mismatch de domain / workgroup). Vuelve a introducir credenciales con <code>pvesm set <id> --username <u> --password <p></code> o elimina y vuelve a añadir desde ProxMenux. Si el servidor está en un dominio AD, añade <code>--domain <DOMAIN></code> a la llamada <code>pvesm set</code>.",
|
||||
"sleepTitle": "\"host is down\" o el estado del almacenamiento pasa a inactive por la noche",
|
||||
"sleepBody": "Algunos appliances NAS ponen SMB en suspensión agresivamente. <code>pvestatd</code> entonces ve el almacenamiento como inactive hasta que el primer acceso despierta al NAS. Si es cosmético, no hay nada roto. Si causa fallos de backup, deshabilita la desconexión por idle de SMB en el NAS o programa los backups fuera de la ventana de suspensión.",
|
||||
"lxcNoWriteTitle": "El bind mount LXC unprivileged no puede escribir en la ruta fstab",
|
||||
"lxcNoWriteBody": "Confirma que el montaje usa las opciones abiertas: <code>findmnt /mnt/<path></code> debería mostrar <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>. Si una cadena de opciones Custom omite esas, un LXC unprivileged tendrá permission denied (los UIDs del CT mapean a \"others\" del host, que sin file_mode abierto no tienen bit de escritura). Vuelve a montar con el preset RW por defecto o añade las cuatro opciones de vuelta a tu cadena custom.",
|
||||
"lxcNoWriteBody": "Comprueba en <code>findmnt /mnt/<path></code> las opciones previstas, como <code>uid=0,gid=0,file_mode=0777,dir_mode=0777</code>. La falta de permisos locales de escritura puede bloquear los UID mapeados de LXC. Reaplica el perfil RW o ajusta las opciones personalizadas. Verifica también que el usuario SMB pueda escribir en el servidor y si las extensiones Unix/POSIX proporcionan sus modos; los modos locales abiertos no anulan las ACL del servidor.",
|
||||
"fstabBootTitle": "El montaje fstab no se levanta tras el reinicio",
|
||||
"fstabBootBody": "El script añade <code>nofail,_netdev</code> para que un share que falte al arranque no bloquee el inicio. Si el montaje nunca se levanta: confirma que la red es alcanzable (<code>ping <server></code>), comprueba <code>journalctl -u remote-fs.target</code>, verifica que el archivo de credenciales sigue existiendo (<code>ls -l /etc/samba/credentials/</code>) y es legible, y prueba <code>mount -a</code> manualmente."
|
||||
},
|
||||
@@ -159,7 +159,7 @@
|
||||
},
|
||||
{
|
||||
"href": "/docs/storage-share/lxc-mount-points",
|
||||
"label": "LXC Mount Manager",
|
||||
"label": "Gestor de montajes LXC",
|
||||
"tailRich": " — hacer bind mount de la ruta solo en fstab <code>/mnt/<path></code> en uno o más contenedores."
|
||||
},
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"twitterDescription": "Añade NFS / Samba / iSCSI como almacenamiento de Proxmox y comparte carpetas entre el host y LXC."
|
||||
},
|
||||
"header": {
|
||||
"title": "Storage & Share Manager",
|
||||
"title": "Gestor de almacenamiento y recursos compartidos",
|
||||
"description": "Integra almacenamiento externo o local en Proxmox VE y comparte carpetas entre el host y los contenedores LXC. Tres bloques de herramientas: integración de almacenamiento en el host (registra almacenamiento en el propio Proxmox), el LXC Mount Manager (bind mounts con un manejo pragmático de permisos) y compartición por red en LXC (flujos de cliente y servidor NFS / Samba para casos de uso concretos).",
|
||||
"section": "Almacenamiento y compartición"
|
||||
},
|
||||
@@ -31,7 +31,7 @@
|
||||
"Disco local → almacenamiento Proxmox directory o ZFS",
|
||||
"Directorio local compartido (para bind mounts entre CTs)"
|
||||
],
|
||||
"lxcMountTitle": "LXC Mount Manager",
|
||||
"lxcMountTitle": "Gestor de montajes LXC",
|
||||
"lxcMountBody": "La herramienta principal de compartición LXC. Hace bind mount de directorios del host dentro de los contenedores vía <code>pct set -mpN</code> y gestiona las particularidades de permisos de los CTs unprivileged sin crear ningún grupo o usuario dentro del contenedor.",
|
||||
"lxcMountItems": [
|
||||
"Funciona con CTs privileged y unprivileged",
|
||||
@@ -82,7 +82,7 @@
|
||||
]
|
||||
},
|
||||
"lxcMount": {
|
||||
"heading": "LXC Mount Manager",
|
||||
"heading": "Gestor de montajes LXC",
|
||||
"intro": "La herramienta principal para compartir carpetas entre el host Proxmox y los contenedores LXC. Usa <code>pct set -mpN</code> para hacer bind mount de un directorio del host dentro del contenedor, y gestiona las particularidades de permisos de los CTs unprivileged en el lado del host (no se crea ningún grupo ni usuario dentro del contenedor).",
|
||||
"card": {
|
||||
"title": "Puntos de montaje LXC (host ↔ CT)",
|
||||
@@ -121,7 +121,7 @@
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Requisito de contenedor privileged",
|
||||
"body": "Los cuatro flujos de <strong>compartición por red en LXC</strong> de arriba requieren un contenedor <strong>privileged</strong> — los módulos de kernel (<code>nfs-kernel-server</code>, <code>smbd</code>, <code>mount.nfs</code>, <code>mount.cifs</code>) necesitan capabilities que los CTs unprivileged no exponen. Si solo necesitas compartir archivos entre el host y un CT unprivileged, usa el <mountLink>LXC Mount Manager</mountLink> en su lugar — hace bind mount desde el host y ajusta los permisos en el lado del host para que el contenedor pueda leer y escribir sin trucos de módulos de kernel."
|
||||
"body": "Los cuatro flujos de <strong>compartición por red en LXC</strong> anteriores requieren un contenedor <strong>privilegiado</strong>. Los scripts exigen este modo antes de configurar los servicios y herramientas de montaje (<code>nfs-kernel-server</code>, <code>smbd</code>, <code>mount.nfs</code>, <code>mount.cifs</code>). Si solo necesitas compartir archivos entre el host y un CT sin privilegios, usa el <mountLink>LXC Mount Manager</mountLink>: hace bind mount desde el host y ajusta allí los permisos para que el contenedor pueda leer y escribir sin configurar esos servicios o herramientas dentro de él."
|
||||
},
|
||||
"unprivExplain": {
|
||||
"title": "Cómo gestiona ProxMenux los permisos de CT unprivileged",
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Puntos de montaje LXC (host ↔ contenedor) | ProxMenux Documentation",
|
||||
"title": "Puntos de montaje LXC (host ↔ contenedor) | Documentación de ProxMenux",
|
||||
"description": "El LXC Mount Manager — bind mount de cualquier directorio del host en uno o más contenedores LXC vía pct set -mpN. Gestiona las particularidades de permisos de los contenedores unprivileged, repara montajes CIFS / NFS existentes en el lado del host y nunca modifica nada dentro del contenedor.",
|
||||
"ogTitle": "Puntos de montaje LXC (host ↔ contenedor) | ProxMenux Documentation",
|
||||
"ogTitle": "Puntos de montaje LXC (host ↔ contenedor) | Documentación de ProxMenux",
|
||||
"ogDescription": "Bind mount de directorios del host en contenedores LXC. Gestiona el mapeo de UIDs unprivileged de forma pragmática, repara el acceso CIFS / NFS en el lado del host."
|
||||
},
|
||||
"header": {
|
||||
@@ -24,7 +24,7 @@
|
||||
"arrowLabel": "bind mount",
|
||||
"outro": "La ruta del host a la izquierda y la ruta del contenedor a la derecha pueden ser diferentes — por ejemplo, <code>/mnt/nas-films</code> en el host puede convertirse en <code>/media/films</code> dentro del contenedor. El script añade la entrada a la config del contenedor (<code>/etc/pve/lxc/<ctid>.conf</code>) usando el siguiente índice <code>mpN</code> libre, con dos valores por defecto seguros incorporados:",
|
||||
"items": [
|
||||
"<code>shared=1</code> — le dice a Proxmox que los datos son almacenamiento compartido, así que no intenta migrar el disco al migrar el contenedor.",
|
||||
"<code>shared=1</code> — indica a Proxmox que el montaje usa datos compartidos, por lo que no los migra con el CT. Esta opción no replica datos: la misma ruta y los mismos datos deben estar disponibles en el nodo destino.",
|
||||
"<code>backup=0</code> — excluye el bind mount de los backups <code>vzdump</code> (los datos viven en el host, los respaldas por separado)."
|
||||
]
|
||||
},
|
||||
@@ -64,12 +64,12 @@
|
||||
"idmapChangesRich": "Mapeo personalizado de UID/GID en <code>/etc/pve/lxc/<CTID>.conf</code> más entradas correspondientes en <code>/etc/subuid</code> + <code>/etc/subgid</code> en el host. El CT debe reiniciarse en cada cambio.",
|
||||
"idmapWhenRich": "Necesitas que un UID <em>específico</em> dentro del CT mapee a un UID <em>específico</em> en el host (p. ej. <code>media:1000</code> en el CT debe poseer archivos como <code>media:1000</code> en el host para que NFS no aplique squash). Un setup más rígido, normalmente solo merece la pena para ese escenario exacto.",
|
||||
"idmapTipTitle": "Cuándo necesitas lxc.idmap de verdad",
|
||||
"idmapTipBody": "Si el LXC Mount Manager no cubre tu caso — típicamente porque necesitas que los archivos escritos desde dentro del CT aterricen en el host como un UID/GID específico (exports NFS con <code>all_squash</code>, shares Samba con propiedad estricta, compartir un directorio con un usuario del host que tiene el mismo nombre que alguien dentro del CT) — ese es el momento de añadir entradas <code>lxc.idmap</code> a mano. El Mount Manager no te peleará: la línea de bind mount que escribió es independiente de cualquier configuración idmap que añadas después."
|
||||
"idmapTipBody": "Usa mapeo manual de ID cuando los archivos escritos en el CT deban aparecer en el host con un UID/GID numérico concreto, por ejemplo para compartir propietario con un usuario del host. No anula <code>all_squash</code> de NFS: el servidor sigue decidiendo la identidad anónima y sus permisos. Añade entradas <code>lxc.idmap</code> a mano si hace falta. La línea de bind mount es independiente de esas entradas."
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Configure LXC Mount Points (Host ↔ Container)</strong>. Verás este submenú con tres opciones:",
|
||||
"imageAlt": "Menú LXC Mount Manager — Add / View / Remove"
|
||||
"imageAlt": "Menú LXC Mount Manager — Añadir / Ver / Eliminar"
|
||||
},
|
||||
"addFlow": {
|
||||
"heading": "Añadir un montaje — flujo completo",
|
||||
@@ -123,7 +123,7 @@
|
||||
},
|
||||
"remove": {
|
||||
"heading": "Eliminar un punto de montaje",
|
||||
"body": "Elige el contenedor, elige la entrada <code>mpN</code>, confirma. El script ejecuta <code>pct set --delete mpN</code> para quitar la entrada de la config del CT y ofrece reiniciar el contenedor si está corriendo. El directorio del host y su contenido <strong>no se tocan</strong> — puedes volver a añadir el montaje después (o adjuntar el mismo directorio a un CT distinto).",
|
||||
"body": "Elige el contenedor, elige la entrada <code>mpN</code>, confirma. El script ejecuta <code>pct set --delete mpN</code> para eliminar la entrada de la config del CT y ofrece reiniciar el contenedor si está corriendo. El directorio del host y su contenido <strong>no se tocan</strong> — puedes volver a añadir el montaje después (o adjuntar el mismo directorio a un CT distinto).",
|
||||
"warnTitle": "Los contenedores en ejecución necesitan un reinicio para que los cambios surtan efecto",
|
||||
"warnBody": "Tanto añadir como eliminar puntos de montaje solo se hacen visibles dentro del contenedor tras un reinicio. El script ofrece un <code>pct reboot</code> de un clic al final de cada operación; puedes declinar y reiniciar manualmente después."
|
||||
},
|
||||
@@ -133,7 +133,7 @@
|
||||
"noMountBody": "Los bind mounts solo se adjuntan cuando el contenedor arranca. Si añadiste el montaje mientras el CT estaba corriendo, reinícialo (<code>pct reboot <ctid></code>). Si ya está reiniciado y sigue faltando, comprueba <code>pct config <ctid></code> para confirmar que la entrada existe y que la ruta del host realmente contiene un directorio.",
|
||||
"noWriteTitle": "El contenedor puede ver el directorio pero no puede escribir",
|
||||
"noWriteBody": "Casi siempre un problema de permisos. Para contenedores unprivileged, ejecuta de nuevo el fix de permisos del script — las ACLs del directorio del host pueden haber sido reseteadas por otra herramienta (rsync, restore desde backup, <code>chmod</code> manual). Para CIFS, revisa las opciones de montaje en el host: <code>findmnt /mnt/pve/cifs-…</code>, busca valores <code>uid=</code> / <code>gid=</code> / <code>file_mode=</code>.",
|
||||
"alreadyTitle": "\"This path is already used as a mount point in this container\"",
|
||||
"alreadyTitle": "\"Esta ruta ya se utiliza como punto de montaje en este contenedor\"",
|
||||
"alreadyBody": "Elegiste la misma ruta del contenedor que ya está cableada a un directorio del host distinto. O elige una ruta del contenedor diferente, o elimina el punto de montaje existente primero.",
|
||||
"nfsTitle": "El acceso NFS sigue bloqueado tras aplicar el fix del host",
|
||||
"nfsIntro": "Tu servidor NFS está aplicando squash a root o a todas las conexiones. El script puede detectar esto (intenta escribir un archivo de prueba desde el host) y muestra guía del lado del servidor. Dos arreglos comunes del lado del servidor para el export:",
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"diagramServerDetail": "/export/data",
|
||||
"diagramHostLabel": "Host Proxmox",
|
||||
"diagramHostDetail": "(solo un\npuente de red)",
|
||||
"diagramCtLabel": "LXC (privileged)",
|
||||
"diagramCtLabel": "LXC (con privilegios)",
|
||||
"diagramCtDetail": "/mnt/data\nmount.nfs dentro del CT",
|
||||
"diagramArrow": "NFS",
|
||||
"twoWaysTitle": "Dos formas de dar acceso NFS a un CT — elige una",
|
||||
@@ -39,7 +39,7 @@
|
||||
"fstabFlags": {
|
||||
"heading": "Por qué esos flags de fstab",
|
||||
"intro": "Para montajes permanentes el script añade tres flags más allá de las opciones NFS estándar: <code>_netdev,x-systemd.automount,noauto</code>. Cada uno resuelve un problema real de boot:",
|
||||
"headerFlag": "Flag",
|
||||
"headerFlag": "Bandera",
|
||||
"headerEffect": "Qué hace",
|
||||
"rows": [
|
||||
{
|
||||
@@ -52,11 +52,11 @@
|
||||
},
|
||||
{
|
||||
"flag": "noauto",
|
||||
"effect": "Salta el montaje eager al arrancar. Combinado con la unit automount de arriba, el montaje se establece de forma lazy en el primer acceso."
|
||||
"effect": "Omite el montaje inmediato al arrancar. Con la unidad automount anterior, el montaje se realiza al primer acceso."
|
||||
}
|
||||
],
|
||||
"netEffectTitle": "Efecto neto",
|
||||
"netEffectBody": "Tu contenedor siempre arranca, incluso si el servidor NFS está offline. La primera vez que algo toca la ruta de montaje, systemd lo monta silenciosamente. Si el servidor sigue caído, ese único acceso falla con <em>resource temporarily unavailable</em> — pero nada más en el CT se ve afectado."
|
||||
"netEffectBody": "El sistema de archivos NFS se monta en el <em>primer acceso</em>, en lugar de hacerlo inmediatamente al arrancar. Si el servidor no está disponible, ese acceso puede esperar o fallar y afectar a los servicios que dependen de la ruta. Automount reduce la dependencia durante el arranque, pero no garantiza que todos los servicios del CT queden al margen del fallo."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manual",
|
||||
@@ -80,7 +80,7 @@
|
||||
"heading": "Solución de problemas",
|
||||
"privTitle": "Contenedor privileged requerido (el script aborta)",
|
||||
"privBody": "El CT seleccionado es unprivileged. El cliente NFS del kernel necesita la capability <code>SYS_ADMIN</code> que los CTs unprivileged no exponen. O bien convierte el CT a privileged (la conversión & Disk Manager está documentada en la página <importLink>Import Disk to LXC</importLink>) o usa la ruta alternativa descrita en el aviso al inicio de esta página.",
|
||||
"aptTitle": "apt-get install nfs-common falla",
|
||||
"aptTitle": "apt-get install nfs-common fails",
|
||||
"aptIntro": "El script asume un CT de la familia Debian (<code>apt-get</code>). Si el CT corre Alpine / Arch / Rocky / Alma, el paso de instalación falla silenciosamente. Instala el cliente NFS a mano para esa distro:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add nfs-utils</code>",
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
"heading": "La convención del grupo \"sharedfiles\"",
|
||||
"body": "Antes de exportar la carpeta, ProxMenux crea un grupo llamado <code>sharedfiles</code> con <strong>GID 101000</strong> dentro del contenedor, añade cada usuario regular a él, luego pone el directorio del export a <code>root:sharedfiles</code> con modo <code>2775</code>. El <code>2</code> al principio es el bit SGID — cada archivo o carpeta creada dentro hereda automáticamente el grupo <code>sharedfiles</code>.",
|
||||
"gidTitle": "Por qué GID 101000 específicamente",
|
||||
"gidBody": "Mapea al GID <strong>1000</strong> del host cuando un contenedor unprivileged lee el mismo archivo (el idmap por defecto de LXC desplaza todo en +100000). En el flujo actual de ProxMenux el propio servidor NFS corre en un CT <strong>privileged</strong> (sin desplazamiento de su lado), pero la convención mantiene el GID numéricamente consistente con CTs cliente unprivileged que puedan montar este share después. Dos CTs privileged usando ambos <code>sharedfiles</code> con GID 101000 pueden leer / escribir los archivos del otro limpiamente porque los números de GID coinciden de principio a fin.",
|
||||
"remapTitle": "El script también crea usuarios 'remap_*' — son vestigiales aquí",
|
||||
"remapBody": "Por cada usuario regular en el CT (y para UIDs comunes como 33 = www-data, 1000, 1001, 1002), el script crea un usuario paralelo <code>remap_<uid></code> con UID = <code><uid> + 100000</code>, todos miembros de <code>sharedfiles</code>. El desplazamiento <code>+100000</code> imita el idmap unprivileged de LXC, pero como este script impone un CT <strong>privileged</strong> (sin desplazamiento), esos usuarios <code>remap_*</code> son cuentas shadow sin contraparte real en el host. Son restos inofensivos de una intención de diseño más ambiciosa. Si no los ves en <code>getent passwd</code>, no se rompe nada."
|
||||
"gidBody": "Con el mapa de ID predeterminado de LXC (+100000), el GID 101000 del host aparece como GID <strong>1000</strong> dentro de un CT sin privilegios. Este flujo de servidor usa un CT <strong>con privilegios</strong>, donde no hay desplazamiento. Dos CT con privilegios que usen <code>sharedfiles</code> con GID 101000 comparten el mismo ID numérico de grupo.",
|
||||
"remapTitle": "La creación heredada de usuarios «remap_*» se omite en CT con privilegios",
|
||||
"remapBody": "La rama heredada para CT sin privilegios crearía usuarios <code>remap_<uid></code> con UID <code><uid> + 100000</code>, todos en <code>sharedfiles</code>, para usuarios normales y UID habituales (33, 1000, 1001, 1002). Este desplazamiento <code>+100000</code> no se aplica a los CT <strong>con privilegios</strong> exigidos por este flujo, por lo que el script omite esa rama. Es normal que no aparezcan cuentas <code>remap_*</code> en <code>getent passwd</code>; no indica un fallo."
|
||||
},
|
||||
"defaults": {
|
||||
"heading": "Opciones de export por defecto — léelo primero",
|
||||
@@ -39,7 +39,7 @@
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Configure NFS Server in LXC (only privileged)</strong>. ProxMenux te pide primero elegir el CT destino (y lo arranca si está parado); aborta si es unprivileged. Una vez seleccionado el CT ves este submenú con cinco opciones:",
|
||||
"imageAlt": "Menú NFS Server Manager — Create / View / Delete / Status / Uninstall"
|
||||
"imageAlt": "Menú del servidor NFS — Crear / Ver / Eliminar / Estado / Desinstalar"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script (flujo Create)"
|
||||
@@ -79,7 +79,7 @@
|
||||
},
|
||||
{
|
||||
"option": "sync",
|
||||
"effectRich": "Responder a las peticiones de escritura solo después de que los datos estén en disco. Más seguro que <code>async</code> a costa de throughput."
|
||||
"effectRich": "Responde a las peticiones de escritura solo cuando los datos están en disco. Más seguro que <code>async</code>, a costa del rendimiento."
|
||||
},
|
||||
{
|
||||
"option": "no_subtree_check",
|
||||
@@ -97,7 +97,7 @@
|
||||
},
|
||||
"view": {
|
||||
"heading": "Ver exports actuales",
|
||||
"body": "Cat de <code>/etc/exports</code> desde dentro del CT (saltando comentarios / blancos) e imprime cada export con su ACL de red y cadena de opciones. Útil para comprobar qué carpetas están expuestas antes de compartir la IP del CT con alguien."
|
||||
"body": "Muestra <code>/etc/exports</code> desde dentro del CT, omitiendo comentarios y líneas vacías, y presenta cada export con su ACL de red y opciones. Útil para comprobar qué carpetas están expuestas antes de compartir la IP del CT."
|
||||
},
|
||||
"delete": {
|
||||
"heading": "Eliminar un export",
|
||||
@@ -115,9 +115,9 @@
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"privTitle": "Contenedor privileged requerido (el script aborta)",
|
||||
"privTitle": "Se requiere un contenedor con privilegios (el script se detiene)",
|
||||
"privBody": "El CT seleccionado es unprivileged. <code>nfs-kernel-server</code> no puede arrancar ahí porque montar <code>/proc/fs/nfsd</code> necesita <code>CAP_SYS_ADMIN</code> en el namespace del kernel del host, y el módulo <code>nfsd</code> tampoco está expuesto al namespace del contenedor (<code>modprobe nfsd</code> desde dentro devuelve <code>FATAL: Module nfsd not found</code>). Si te saltas el gate, verás <code>rpc.nfsd: Unable to access /proc/fs/nfsd errno 2 (No such file or directory)</code> en el journal y ningún puerto NFS llegará a abrirse. Las únicas opciones viables son: convertir el CT a privileged, o mover el servidor NFS a una VM.",
|
||||
"aptTitle": "apt-get install falla",
|
||||
"aptTitle": "Falla apt-get install",
|
||||
"aptIntro": "El script asume un CT de la familia Debian. En Alpine / Arch / Rocky / Alma, instala los paquetes del servidor NFS a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add nfs-utils</code>",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
},
|
||||
"privReq": {
|
||||
"title": "Contenedor privileged requerido",
|
||||
"body": "El cliente <code>mount.cifs</code> del kernel necesita capabilities (<code>SYS_ADMIN</code> como mínimo) que los contenedores LXC unprivileged no exponen. El script lo impone — te pide elegir un CT y <strong>aborta si es unprivileged</strong>. Si necesitas el share dentro de un CT unprivileged, móntalo en el host Proxmox primero (con <hostSambaLink>Samba / CIFS como almacenamiento de Proxmox</hostSambaLink>) y hazle bind mount en el CT con el <mountLink>LXC Mount Manager</mountLink>."
|
||||
"body": "El cliente <code>mount.cifs</code> del kernel necesita capabilities (<code>SYS_ADMIN</code> como mínimo) que los contenedores LXC unprivileged no exponen. El script lo impone — te pide elegir un CT y <strong>aborta si es unprivileged</strong>. Si necesitas el share dentro de un CT unprivileged, móntalo en el host Proxmox primero (con <hostSambaLink>Share Samba / CIFS como almacenamiento de Proxmox</hostSambaLink>) y hazle bind mount en el CT con el <mountLink>LXC Mount Manager</mountLink>."
|
||||
},
|
||||
"what": {
|
||||
"heading": "Qué hace",
|
||||
@@ -21,7 +21,7 @@
|
||||
"diagramServerDetail": "//srv/share",
|
||||
"diagramHostLabel": "Host Proxmox",
|
||||
"diagramHostDetail": "(solo un\npuente de red)",
|
||||
"diagramCtLabel": "LXC (privileged)",
|
||||
"diagramCtLabel": "LXC (con privilegios)",
|
||||
"diagramCtDetail": "/mnt/share\nmount.cifs dentro del CT",
|
||||
"diagramArrow": "CIFS",
|
||||
"twoWaysTitle": "Dos formas de dar a un CT un share Samba — elige una",
|
||||
@@ -30,7 +30,7 @@
|
||||
},
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Configure Samba Client in LXC (only privileged)</strong>. ProxMenux te pide primero <strong>elegir el CT destino</strong> (y lo arranca si está parado); aborta si es unprivileged. Una vez seleccionado el CT ves este submenú:",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Configure Samba Client in LXC (only privileged)</strong>. ProxMenux te pide primero <strong>elegir el CT destino</strong> (y lo arranca si está parado); aborta si es unprivileged. Una vez seleccionado el CT, ves este submenú:",
|
||||
"imageAlt": "Menú Samba Client Manager — Mount / View / Unmount / Test connectivity"
|
||||
},
|
||||
"howRuns": {
|
||||
@@ -38,7 +38,7 @@
|
||||
},
|
||||
"creds": {
|
||||
"heading": "Dónde vive la contraseña",
|
||||
"body": "ProxMenux <strong>nunca guarda la contraseña en texto plano</strong> en el comando de montaje ni en <code>/etc/fstab</code>. En su lugar escribe un archivo de credenciales dentro del CT:",
|
||||
"body": "ProxMenux <strong>no incluye la contraseña en el comando de montaje</strong> ni en <code>/etc/fstab</code>. La guarda en un archivo de credenciales dentro del CT. Ese archivo contiene las credenciales en texto plano protegidas con permisos solo para root; no está cifrado:",
|
||||
"whyTitle": "Por qué un archivo separado en vez de fstab",
|
||||
"whyBody": "El módulo CIFS acepta opciones <code>username=</code> / <code>password=</code> en línea en fstab, pero cualquiera que pueda leer <code>/etc/fstab</code> ve la contraseña en claro. Poner las credenciales en un archivo solo para root y apuntar fstab a él (<code>credentials=</code>) mantiene la contraseña fuera de la config legible por todos."
|
||||
},
|
||||
@@ -81,11 +81,11 @@
|
||||
},
|
||||
{
|
||||
"option": "noauto",
|
||||
"effect": "Salta el montaje eager al arrancar. Combinado con la unit automount, el montaje se establece de forma lazy."
|
||||
"effect": "Omite el montaje inmediato al arrancar. Con la unidad automount, el montaje se realiza al primer acceso."
|
||||
}
|
||||
],
|
||||
"netEffectTitle": "Efecto neto de los flags fstab",
|
||||
"netEffectBody": "Tu contenedor siempre arranca, incluso si el servidor Samba está offline. La primera vez que algo toca la ruta de montaje, systemd lo monta silenciosamente. Si el servidor sigue caído, ese único acceso falla con <em>resource temporarily unavailable</em> — pero nada más en el CT se ve afectado."
|
||||
"netEffectBody": "El sistema de archivos CIFS se monta en el <em>primer acceso</em>, en lugar de hacerlo inmediatamente al arrancar. Si el servidor no está disponible, ese acceso puede esperar o fallar y afectar a los servicios que dependen de la ruta. Automount reduce la dependencia durante el arranque, pero no garantiza que todos los servicios del CT queden al margen del fallo."
|
||||
},
|
||||
"manual": {
|
||||
"heading": "Equivalente manual",
|
||||
@@ -110,7 +110,7 @@
|
||||
"heading": "Solución de problemas",
|
||||
"privTitle": "Contenedor privileged requerido (el script aborta)",
|
||||
"privBody": "El CT seleccionado es unprivileged. El cliente CIFS del kernel necesita la capability <code>SYS_ADMIN</code> que los CTs unprivileged no exponen. O bien convierte el CT a privileged, o usa la ruta alternativa descrita en el aviso al inicio de esta página.",
|
||||
"aptTitle": "apt-get install falla",
|
||||
"aptTitle": "apt-get install fails",
|
||||
"aptIntro": "El script asume un CT de la familia Debian (<code>apt-get</code>). En Alpine / Arch / Rocky / Alma, instala el cliente CIFS a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add cifs-utils samba-client</code>",
|
||||
@@ -118,7 +118,7 @@
|
||||
"Rocky / Alma: <code>dnf install cifs-utils samba-client</code>"
|
||||
],
|
||||
"aptOutro": "Después reejecuta el script de ProxMenux — el paso de instalación se salta cuando las herramientas ya están presentes.",
|
||||
"guestFallbackTitle": "\"The server connected you as guest instead of the specified user\"",
|
||||
"guestFallbackTitle": "\"El servidor te conectó como invitado en lugar de con el usuario indicado\"",
|
||||
"guestFallbackBody": "La validación activa del script detectó un problema real de auth. El servidor aceptó la conexión pero la degradó a guest porque las credenciales son incorrectas. Causas comunes: typo en el usuario / contraseña, el usuario no existe en el servidor, el usuario está bloqueado o el workgroup / dominio no coincide. Reejecuta el flujo y vuelve a introducir las credenciales con cuidado (la contraseña queda oculta en el diálogo).",
|
||||
"denyTitle": "\"NT_STATUS_ACCESS_DENIED\" al montar",
|
||||
"denyBody": "Las credenciales se validaron pero el share deniega el acceso. Comprueba en el lado del servidor si el usuario tiene permisos en ese share específico (la validación solo confirma el login, no las ACLs por share). Comprueba también si el servidor requiere una versión específica del protocolo SMB: añade <code>vers=3.0</code> (o <code>2.1</code>, <code>2.0</code>) a las opciones de montaje.",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "Servidor Samba en LXC | ProxMenux Documentation",
|
||||
"title": "Servidor Samba en LXC | Documentación de ProxMenux",
|
||||
"description": "Ejecuta un servidor Samba (SMB / CIFS) dentro de un contenedor LXC de Proxmox con ProxMenux. Auto-instala samba, gestiona /etc/samba/smb.conf, usuarios smbpasswd, grupo sharedfiles para carpetas bind-mounted. Requiere un contenedor privileged.",
|
||||
"ogTitle": "Servidor Samba en LXC | ProxMenux Documentation",
|
||||
"ogDescription": "Expón carpetas por SMB/CIFS desde dentro de un contenedor LXC privileged. Auto-instalación, usuario smbpasswd, permisos conscientes de bind mount."
|
||||
"ogTitle": "Servidor Samba en LXC | Documentación de ProxMenux",
|
||||
"ogDescription": "Expón carpetas por SMB/CIFS desde un contenedor LXC con privilegios. Instalación automática, usuario smbpasswd y permisos adaptados a bind mounts."
|
||||
},
|
||||
"header": {
|
||||
"title": "Servidor Samba en LXC",
|
||||
@@ -20,7 +20,7 @@
|
||||
"diagramServerLabel": "LXC (privileged) — servidor Samba",
|
||||
"diagramServerDetail": "/mnt/data\n(carpeta que expones)\n\nsmbd + nmbd corriendo\n\nUsuario: <username>\n(vía smbpasswd)\n\nForce group:\nsharedfiles",
|
||||
"diagramClientLabel": "Cualquier cliente en la red",
|
||||
"diagramClientDetail": "Windows: \\\\<ip>\\<share>\nmacOS: smb://<ip>/<share>\nLinux: mount.cifs",
|
||||
"diagramClientDetail": "Windows: \\\\<ip>\\<share>\nmacOS: smb://<ip>/<share>\nLinux: mount.cifs",
|
||||
"diagramArrow": "SMB / CIFS"
|
||||
},
|
||||
"perms": {
|
||||
@@ -40,19 +40,19 @@
|
||||
"opening": {
|
||||
"heading": "Abrir la herramienta",
|
||||
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage & Share Manager → Configure Samba Server in LXC (only privileged)</strong>. ProxMenux te pide primero elegir el CT destino (y lo arranca si está parado); aborta si es unprivileged. Una vez seleccionado el CT ves este submenú con cinco opciones:",
|
||||
"imageAlt": "Menú Samba Server Manager — Create / View / Delete / Status / Uninstall"
|
||||
"imageAlt": "Menú del servidor Samba — Crear / Ver / Eliminar / Estado / Desinstalar"
|
||||
},
|
||||
"howRuns": {
|
||||
"heading": "Cómo se ejecuta el script (flujo Create)"
|
||||
},
|
||||
"modes": {
|
||||
"heading": "Los tres modos de share",
|
||||
"intro": "Cada modo escribe una stanza diferente en <code>smb.conf</code>. Los tres incluyen <code>valid users = <username></code> (sin anónimo), <code>force group = sharedfiles</code> (para que los archivos nuevos pertenezcan al grupo compartido) y <code>veto files = /lost+found/</code> (lo oculta a los clientes).",
|
||||
"intro": "Cada modo escribe un bloque diferente en <code>smb.conf</code>. Los tres incluyen <code>valid users = <username></code> (sin anónimo), <code>force group = sharedfiles</code> (para que los archivos nuevos pertenezcan al grupo compartido) y <code>veto files = /lost+found/</code> (lo oculta a los clientes).",
|
||||
"headerMode": "Modo",
|
||||
"headerBlock": "Bloque escrito en smb.conf",
|
||||
"rwMode": "Read-Write",
|
||||
"roMode": "Read-Only",
|
||||
"customMode": "Custom",
|
||||
"rwMode": "Lectura y escritura",
|
||||
"roMode": "Solo lectura",
|
||||
"customMode": "Personalizado",
|
||||
"customBodyRich": "Tú escribes tus propias directivas en un cuadro de texto libre. ProxMenux igualmente las envuelve en un bloque <code>[share]</code> con los <code>path</code>, <code>valid users</code>, <code>force group</code> y <code>veto files</code> estándar."
|
||||
},
|
||||
"manual": {
|
||||
@@ -90,9 +90,9 @@
|
||||
},
|
||||
"troubleshoot": {
|
||||
"heading": "Solución de problemas",
|
||||
"privTitle": "Contenedor privileged requerido (el script aborta)",
|
||||
"privTitle": "Se requiere un contenedor con privilegios (el script se detiene)",
|
||||
"privBody": "El CT seleccionado es unprivileged y <code>smbd</code> no puede servir archivos ahí. Si te saltas el gate y configuras Samba a mano, <code>smbd</code> arranca y los puertos se abren, pero la primera conexión de cliente entra en pánico con <code>PANIC: sys_setgroups failed</code> en <code>/var/log/samba/log.<client></code> y el cliente ve <code>NT_STATUS_CONNECTION_DISCONNECTED</code>. La causa es que el namespace de usuario unprivileged tiene <code>setgroups=deny</code>, lo que bloquea la impersonación por conexión de Samba. Ni <code>features=keyctl=1</code> ni eliminar <code>force user</code> / <code>force group</code> cambian esto. Las únicas opciones viables son: convertir el CT a privileged, o mover Samba a una VM.",
|
||||
"aptTitle": "apt-get install falla",
|
||||
"aptTitle": "Falla apt-get install",
|
||||
"aptIntro": "El script asume un CT de la familia Debian. En Alpine / Arch / Rocky / Alma, instala Samba a mano:",
|
||||
"aptItems": [
|
||||
"Alpine: <code>apk add samba</code>",
|
||||
@@ -103,7 +103,7 @@
|
||||
"noShareTitle": "El cliente conecta pero no puede ver el share",
|
||||
"noShareBody": "Comprueba que <code>browseable = yes</code> está puesto en el bloque del share (por defecto para los modos rw / ro; puede faltar en custom). Comprueba también que el firewall del CT y el firewall del host Proxmox permiten TCP 445 (SMB) y 139 (NetBIOS). Algunos clientes Windows también requieren resolución de nombres — prueba la IP directamente primero.",
|
||||
"authTitle": "La autenticación falla (NT_STATUS_LOGON_FAILURE)",
|
||||
"authBody": "O bien la contraseña es incorrecta (las contraseñas Samba son <em>separadas</em> de las contraseñas de sistema — mira <code>pdbedit -L</code>) o el usuario no está en <code>valid users</code> para ese share. Resetea la contraseña con <code>smbpasswd <user></code> dentro del CT.",
|
||||
"authBody": "La contraseña es incorrecta (las contraseñas Samba son <em>independientes</em> de las del sistema; lista los usuarios Samba con <code>pdbedit -L</code>) o el usuario no figura en <code>valid users</code> para ese recurso. Restablece la contraseña con <code>smbpasswd <user></code> dentro del CT.",
|
||||
"groupTitle": "Los archivos escritos por el cliente aparecen con grupo incorrecto en el servidor",
|
||||
"groupBody": "El script pone <code>force group = sharedfiles</code> en el bloque del share, así que los archivos nuevos deberían ser del grupo <code>sharedfiles</code>. Si no lo son, el bit SGID en el directorio padre puede haberse perdido (alguien ejecutó <code>chmod</code> a mano). Reaplica: <code>chmod 2775 /mnt/<share></code>.",
|
||||
"bothTitle": "Compartir la misma carpeta por NFS y Samba",
|
||||
@@ -125,7 +125,7 @@
|
||||
{
|
||||
"href": "/docs/storage-share/host-samba",
|
||||
"label": "Samba / CIFS como almacenamiento de Proxmox",
|
||||
"tailRich": " — una vez que tu CT esté exponiendo, registra ese share en Proxmox para que aparezca bajo <em>Datacenter → Storage</em>."
|
||||
"tailRich": " — una vez que tu CT esté exportando, registra ese share Samba en Proxmox para que aparezca bajo <em>Datacenter → Storage</em>."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user