Saltar al contenido

Sitios estáticos ​

Zenavo sirve los sitios estáticos con Caddy en el puerto 8080, compilados desde tu repositorio en cada despliegue.

HTML plano ​

Un repositorio con index.html y sin package.json se detecta como static: sus archivos se sirven tal cual.

Sitios compilados (Vite, React, Vue, Svelte, Astro) ​

Un proyecto Node.js cuyo framework genera archivos estáticos, como Vite, Create React App, Vue, SvelteKit con el adaptador static o Astro, se compila con su script build y se sirve la carpeta de salida. zbpack conoce la carpeta de cada framework (dist en Vite, build en Create React App); Build Plan Preview la muestra como outputDir. Para otra carpeta, indícala en Settings → Build → zbpack options:

sh
ZBPACK_OUTPUT_DIR=public

Aplicaciones de una sola página ​

Los enrutadores del lado del cliente (React Router, Vue Router) funcionan sin ajustes: una ruta sin extensión que no coincide con ningún archivo devuelve index.html, mientras que un recurso que falta, como /assets/app.js, sigue devolviendo 404.

Variables en sitios estáticos ​

Un sitio estático no tiene servidor, así que sus variables, como las VITE_* de Vite (import.meta.env.VITE_API_URL) o las REACT_APP_* de Create React App, deben existir al compilarlo. Las variables de la pestaña Variable solo llegan al servicio en ejecución, así que define estas en Settings → Build → Build arguments, por ejemplo:

sh
VITE_API_URL=https://api.example.com

Llegan a la compilación sin Dockerfile; consulta argumentos de compilación. Con tu propio Dockerfile, declara cada una con una línea ARG antes del comando de compilación. Todo lo que hay en el bundle es público: no pongas nunca secretos en estas variables.

Desplegar ​

  1. Add Service → GitHub, elige el repositorio y la rama.
  2. Haz clic en Next, comprueba que la vista previa muestra static o nodejs con tu framework y carpeta de salida, y haz clic en Deploy.
  3. Genera un dominio en la pestaña Networking, o asocia el tuyo.

Otros generadores ​

Para Hugo, Jekyll, MkDocs o un generador que zbpack no conozca, haz commit de la salida compilada y apunta ZBPACK_OUTPUT_DIR a ella, o añade un Dockerfile que compile el sitio y lo sirva:

dockerfile
FROM hugomods/hugo:exts AS build
WORKDIR /src
COPY . .
RUN hugo --minify

FROM caddy:2-alpine
COPY --from=build /src/public /usr/share/caddy
EXPOSE 80

Problemas habituales ​

SíntomaCausa
Recargar una página que no sea / devuelve 404Tu propio Dockerfile sirve el sitio con un servidor sin respaldo a index.html. Usa try_files {path} /index.html en Caddy, o la compilación generada.
El sitio sale en blanco y la consola muestra 404 en los recursosLa ruta base de la compilación no es /. Revisa base en vite.config u homepage en package.json.
Un valor VITE_* es undefinedSolo está en la pestaña Variable, que no llega a la compilación. Defínelo como argumento de compilación y vuelve a desplegar; con tu propio Dockerfile, declara también su ARG.

Sin relación con Zeabur.