Files
ProxMenux/web/messages/es/docs/storage-share/lxc-mount-points.json
T
MacRimi 5ca3463bf6 complete i18n migration to /[locale]/ with EN+ES content
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.
2026-05-31 12:41:10 +02:00

175 lines
15 KiB
JSON

{
"meta": {
"title": "Puntos de montaje LXC (host ↔ contenedor) | ProxMenux Documentation",
"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",
"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": {
"title": "Puntos de montaje LXC (host ↔ contenedor)",
"description": "La herramienta principal para compartir carpetas entre el host Proxmox y los contenedores LXC. Bind mount de cualquier directorio del host en uno o más contenedores usando la sintaxis nativa pct set -mpN de Proxmox. La parte inteligente: resuelve los quebraderos de cabeza de permisos de los contenedores unprivileged en el lado del host — nunca modifica nada dentro del contenedor.",
"section": "Almacenamiento y compartición · LXC"
},
"intro": {
"title": "Qué hace",
"body": "Coge un directorio que vive en el host Proxmox (una carpeta local, un share NAS montado, un almacenamiento gestionado por Proxmox…) y haz que aparezca dentro de un contenedor LXC en una ruta que tú elijas, con permisos que funcionan incluso para contenedores unprivileged — sin tocar nada dentro del contenedor."
},
"bigPicture": {
"heading": "Cómo funciona (visión general)",
"intro": "Un bind mount es exactamente lo que el nombre dice: Proxmox le dice al kernel \"el directorio del host <code>X</code> también debería aparecer en la ruta <code>Y</code> dentro de este contenedor\". No hay copia, ni sync, ni red — ambos lados ven los <em>mismos archivos</em> a la vez.",
"sourceLabel": "Host Proxmox",
"sourceDetail": "/mnt/data\n(tu carpeta)",
"targetLabel": "Contenedor LXC",
"targetDetail": "/mnt/data\n(aparece aquí)",
"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/&lt;ctid&gt;.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>backup=0</code> — excluye el bind mount de los backups <code>vzdump</code> (los datos viven en el host, los respaldas por separado)."
]
},
"perms": {
"heading": "Gestión de permisos — la parte inteligente",
"intro": "Los bind mounts son fáciles en principio. La parte difícil son los permisos: un contenedor LXC <strong>unprivileged</strong> desplaza cada UID en <strong>+100000</strong>, así que un archivo creado dentro del contenedor por el usuario 1000 aparece en el host como UID 101000 — un UID que nadie en el host posee. Para que esto funcione sin alinear UIDs entre hosts y contenedores, ProxMenux aplica el truco adecuado de \"abrir permisos\" en el lado del <em>host</em>, dependiendo del tipo de directorio que elegiste:",
"headerType": "Tipo de directorio del host",
"headerAction": "Qué ofrece hacer el script",
"localType": "Carpeta local",
"localTypeSub": "p. ej. /mnt/data",
"localActionRich": "<code>chmod o+rwx</code> + <code>setfacl o::rwx</code> en el directorio del host. Solo se ofrece si el CT es unprivileged y los permisos actuales son insuficientes.",
"cifsType": "CIFS / SMB montado",
"cifsTypeSub": "p. ej. /mnt/pve/cifs-…",
"cifsActionRich": "Remontar con <code>uid=0, gid=0, file_mode=0777, dir_mode=0777</code> para que el CT (cualquier UID) pueda leer y escribir el share. <code>/etc/fstab</code> se actualiza.",
"nfsType": "NFS montado",
"nfsTypeSub": "p. ej. /mnt/pve/nfs-…",
"nfsActionRich": "<code>chmod 1777</code> + <code>setfacl o::rwx</code> en el montaje NFS. No puede anular el squash del lado del servidor — si ni siquiera el root del host puede escribir, se te guía a arreglar el export en el servidor NFS.",
"privTitle": "Los contenedores privileged no necesitan nada de esto",
"privBody": "Para contenedores privileged, el UID 0 en el CT es el UID 0 en el host — root dentro del CT puede leer y escribir el directorio del host directamente sin trucos de permisos. El script detecta esto y se salta el paso de \"abrir permisos\" por completo.",
"noCtTitle": "El script nunca modifica nada dentro del contenedor",
"noCtBody": "Todos los ajustes de permisos ocurren en el <strong>sistema de archivos del host</strong>. Sin chowns por <code>pct exec</code>, sin grupos creados en el CT, sin fstab dentro del contenedor. Si reutilizas el directorio bind-mounted en un CT distinto después, se aplican los mismos permisos automáticamente — sin setup por contenedor."
},
"writes": {
"heading": "Qué escribe ProxMenux — y qué no",
"intro": "Una confusión común al hacer bind mount en un CT unprivileged: la gente asume que ProxMenux debe estar escribiendo entradas <code>lxc.idmap</code> en <code>/etc/pve/lxc/&lt;CTID&gt;.conf</code>. <strong>No lo hace.</strong> Solo se añade una línea a ese archivo — el propio bind mount:",
"outro": "La línea de salida que ves al final de la ejecución, <em>\"Unprivileged container — UID offset: 100000\"</em>, es puramente informativa — solo te dice que el CT está usando el mapeo unprivileged por defecto de Proxmox (root en CT = UID 100000 en host). El script no configura nada a su alrededor.",
"twoWaysHeading": "Las dos formas de hacer que los permisos funcionen — y por qué ProxMenux elige una",
"headerApproach": "Enfoque",
"headerChanges": "Qué cambia",
"headerWhen": "Cuándo encaja",
"hostType": "Permisos del lado del host",
"hostTypeSub": "(lo que hace este script)",
"hostChangesRich": "<code>chmod o+rwx</code> + <code>setfacl o::rwx</code> en el directorio del host. Los UIDs mapeados del CT (100000+) caen en el cubo \"others\", así que abrir <em>others</em> es suficiente.",
"hostWhen": "Acceso genérico a carpeta compartida desde cualquier CT. Varios CTs compartiendo el mismo directorio del host. Sencillo y reutilizable.",
"idmapTypeRich": "<code>lxc.idmap</code>",
"idmapTypeSub": "(este script no lo usa)",
"idmapChangesRich": "Mapeo personalizado de UID/GID en <code>/etc/pve/lxc/&lt;CTID&gt;.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."
},
"opening": {
"heading": "Abrir la herramienta",
"body": "Desde el menú principal de ProxMenux, abre <strong>Storage &amp; Share Manager → Configure LXC Mount Points (Host ↔ Container)</strong>. Verás este submenú con tres opciones:",
"imageAlt": "Menú LXC Mount Manager — Add / View / Remove"
},
"addFlow": {
"heading": "Añadir un montaje — flujo completo",
"intro": "La vista técnica, para cuando quieras saber exactamente qué hace cada diálogo:"
},
"sources": {
"heading": "Qué puedes elegir como directorio del host",
"intro": "El selector de directorio del host es el más exhaustivo de la sección de Almacenamiento y compartición. Escanea cuatro fuentes y presenta una lista deduplicada:",
"headerSource": "Fuente",
"headerWhere": "De dónde viene",
"headerLabel": "Etiqueta en el menú",
"rows": [
{
"source": "Montajes de red activos",
"whereRich": "Shares CIFS / NFS montados actualmente, parseados de <code>/proc/mounts</code>.",
"labelRich": "<code>NFS [used/size]</code> o <code>CIFS/SMB [used/size]</code>"
},
{
"source": "Montajes fstab inactivos",
"whereRich": "Definidos en <code>/etc/fstab</code> pero no montados actualmente.",
"labelRich": "<code>fstab(off)-NFS</code> / <code>fstab(off)-CIFS/SMB</code>"
},
{
"source": "Directorios locales",
"whereRich": "Subdirectorios bajo <code>/mnt</code> que no son montajes de red.",
"labelRich": "<code>Local [size]</code>"
},
{
"source": "Almacenamientos Proxmox",
"whereRich": "Rutas de almacenamiento bajo <code>/mnt/pve/*</code> (NFS / CIFS registrados vía <code>pvesm</code>).",
"labelRich": "<code>PVE-NFS</code> / <code>PVE-CIFS/SMB</code> / <code>Proxmox-Storage</code>"
},
{
"source": "Entrada manual",
"where": "Cualquier otra cosa — escribe la ruta absoluta tú mismo.",
"labelRich": "<em>Introducir ruta manualmente</em>"
}
],
"tipTitle": "Las rutas internas de Proxmox quedan filtradas",
"tipBody": "El selector se salta explícitamente las rutas internas de Proxmox (<code>/mnt/pve/local</code>, <code>/mnt/pve/local-lvm</code>, <code>/mnt/pve/backup</code>, …) — están reservadas para internos de Proxmox y no deberías hacerles bind mount. Solo aparecen los almacenamientos añadidos por el usuario."
},
"manual": {
"heading": "Equivalente manual",
"privIntro": "Para un contenedor privileged — el caso más simple, sin trucos de permisos:",
"unprivLocalIntro": "Para un contenedor unprivileged con un directorio local del host — abre los permisos en el host primero:",
"unprivCifsIntro": "Para un contenedor unprivileged con un share CIFS ya montado en el host:"
},
"view": {
"heading": "Ver puntos de montaje",
"body": "Lista cada entrada <code>mpN</code> de cada contenedor en este host Proxmox, agrupado por id de CT y mostrando ruta del host → ruta del contenedor más cualquier opción extra. Solo lectura — útil como comprobación antes de añadir o eliminar nada."
},
"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).",
"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."
},
"troubleshoot": {
"heading": "Solución de problemas",
"noMountTitle": "El montaje aparece en la config del pct pero no dentro del contenedor",
"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 &lt;ctid&gt;</code>). Si ya está reiniciado y sigue faltando, comprueba <code>pct config &lt;ctid&gt;</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\"",
"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:",
"nfsItems": [
"<code>no_root_squash</code> — los CTs privileged pueden escribir directamente.",
"<code>all_squash,anonuid=65534,anongid=65534</code> — para CTs unprivileged."
],
"nfsOutro": "Estos cambios ocurren en el servidor NFS (TrueNAS, Synology, tu export personalizado, …), no en Proxmox.",
"fstabOffTitle": "Montar entradas \"fstab(off)\" no hace nada",
"fstabOffBody": "El selector muestra entradas <code>fstab(off)-</code> cuando un montaje de red está definido en fstab pero no está montado actualmente. El script te deja hacer bind mount de la ruta, pero el directorio estará vacío hasta que realmente montes el share (<code>mount &lt;path&gt;</code> en el host). Móntalo primero, luego bind en el CT."
},
"related": {
"heading": "Relacionado",
"items": [
{
"href": "/docs/storage-share/host-local-shared",
"label": "Añadir directorio compartido en el host",
"tailRich": " — primer paso típico: prepara un <code>/mnt/shared</code> en el host antes de hacerle bind mount en uno o más CTs aquí."
},
{
"href": "/docs/storage-share/host-nfs",
"label": "Añadir share NFS como almacenamiento de Proxmox",
"extraHref": "/docs/storage-share/host-samba",
"extraLabel": "Añadir share Samba como almacenamiento de Proxmox",
"joiner": " / ",
"tailRich": " — registra un share externo en Proxmox primero, luego haz bind mount de su ruta <code>/mnt/pve/&lt;id&gt;</code> en el CT aquí."
},
{
"href": "/docs/storage-share/lxc-nfs-client",
"label": "Cliente NFS en LXC",
"extraHref": "/docs/storage-share/lxc-samba-client",
"extraLabel": "Cliente Samba en LXC",
"joiner": " / ",
"tail": " — la alternativa cuando quieres que el propio CT monte el share (requiere un contenedor privileged)."
}
]
}
}