Saltar al contenido
duxt

Desplegar un sitio

Dónde puede ejecutarse un sitio duxt, qué necesita allí y por qué el contenido no se refresca en ejecución.

Un sitio duxt es una aplicación Nuxt. Cualquier cosa que ejecute Nuxt lo ejecuta.

Pasos

  1. Prefiere estático. nuxt generate produce una carpeta de HTML — sin servidor, sin coste de ejecución, cada página cacheada en el borde. Es la opción correcta por defecto para documentación.
pnpm run generate

nuxt build produce un servidor Node, que solo necesitas si una página debe reaccionar a una petición.

  1. Dale a la compilación lo que necesita. Node 24 (la base de datos se lee mediante node:sqlite, así que no se instala ningún controlador nativo), acceso de red a cualquier fuente remota y un token para las privadas.
  2. Define el origen. NUXT_PUBLIC_I18N_BASE_URL, o i18n.baseUrl en la configuración. Sin él, hreflang, canonical, el sitemap y las tarjetas sociales recaen en salida relativa.
  3. Define un secreto de imagen OG si despliegas más de una instancia.NUXT_OG_IMAGE_SECRET, generado una vez. Sin él cada compilación firma las URL de imagen con un secreto propio, y una tarjeta firmada por una instancia es rechazada por la siguiente.
  4. Programa una recompilación. Un sitio que lee otro repositorio recoge sus cambios cuando compila, no cuando se publican.

Por qué no hay refresco en ejecución

Content descarga un repositorio remoto al compilar y lo compila en la base de datos que la compilación entrega. Refrescar eso en ejecución significaría reconstruir la base de datos dentro de un servidor vivo — Content no ofrece ninguna vía soportada para ello, y la única disponible es la misma base de datos de cliente que lee la búsqueda. Una recompilación programada, o disparada desde el repositorio de origen, mantiene el despliegue inmutable y el contenido reproducible.

Cuando una compilación dice database is locked

Content guarda su caché de análisis en .data/content/contents.sqlite, y una compilación que el kernel o un Ctrl-C dejó atrás puede seguir reteniéndola. Cada compilación posterior falla entonces con database is locked — un mensaje que no nombra ni el archivo ni el proceso.

duxt pone esa base de datos en modo WAL antes de que Content la abra, lo que permite que un lector y un escritor convivan y elimina por completo la versión cotidiana de esto. Lo que no puede eliminar es un segundo proceso todavía en marcha:

pgrep -af 'nuxt (build|dev|generate)'   # el proceso huérfano, si lo hay
kill <pid>

Si no aparece nada y el error persiste, borra .data/content/: es una caché, y la siguiente compilación la reconstruye desde las fuentes.

Qué sirve el sitio además de páginas

/llms.txt, /llms-full.txt, el código .md de cualquier página, /mcp, /sitemap.xml, /robots.txt y — una vez configurado — /rss.xml. La lista completa con sus salvedades está en la referencia de endpoints.

Lista de comprobación

  • nuxt generate termina sin error del validador
  • El origen está definido en el despliegue, no solo en local
  • /sitemap.xml lista URL absolutas en el dominio real
  • Hay una recompilación programada, o disparada desde cada repositorio de origen
  • NUXT_OG_IMAGE_SECRET está definido si más de una instancia sirve el sitio
¿Le ha resultado útil esta página?