Buscar en la documentación

Despliegue y actualización

Cómo llega una versión de main al servidor, detrás del proxy de TLS que ya existe, sin tocar los otros proyectos que corren ahí.

Módulo operacion1 min de lecturaVer en GitHub

Trazo corre en un VPS con el mismo compose de siempre más docker-compose.prod.yml. En ese servidor hay otros proyectos y un proxy (Caddy) que ya tiene los puertos 80 y 443 y los certificados. Trazo no publica puertos: el proxy le pasa las peticiones de su dominio por una red de Docker compartida, trazo-proxy.

Diagrama5 carriles · 8 pasos · 2 salidas de error
SíNoSíNoSíNogit pull --ff-onlyen el servidor1¿Existe el.env?2Se detiene con"Falta el .env"up -d --build--wait3init migra ysiembra4¿Todo quedósano?5Revisa ps y logsdel servicio quefalló¿El proxy yaestá entrazo-proxy?6Lo conecta a la redsin reiniciarlo7Entra por HTTPS algateway de Trazo8
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. Operacióngit pull --ff-only en el servidor

    Solo avance rápido sobre main: si el historial no coincide, se detiene en lugar de mezclar.

  2. Servidor¿Existe el .env?

    Se crea una sola vez con scripts/deploy/new-env.sh: permisos 600 y secretos aleatorios generados en el servidor. El correo y las cuentas por rol se escriben a mano.

  3. Docker de Trazoup -d --build --wait

    Con -p trazo y los archivos base y de producción. Si falta un secreto obligatorio, Compose no arranca. --wait espera a que todo esté sano.

  4. Docker de Trazoinit migra y siembra

    Migraciones solo aditivas; los datos, las llaves y los respaldos viven en volúmenes y no se tocan.

  5. Docker de Trazo¿Todo quedó sano?
  6. Proxy de TLS¿El proxy ya está en trazo-proxy?

    El nombre del contenedor del proxy sale de TRAZO_PROXY_CONTAINER.

  7. Proxy de TLSLo conecta a la red sin reiniciarlo

    docker network connect: si alguien recreó el proxy desde su propio proyecto, perdió la red; conectarlo de nuevo es seguro y no corta nada.

  8. VisitanteEntra por HTTPS al gateway de Trazo

    El proxy termina TLS y pasa a trazo-gateway:8080. El gateway pone las cabeceras de seguridad (CSP y HSTS, porque el proxy avisa que llegó por HTTPS) y solo cree la IP del visitante si viene de trazo-proxy.

La IP real importa: los límites del ingreso y de la recuperación de contraseña cuentan por IP, y sin ella todas las personas compartirían la del proxy y se bloquearían entre sí.

Reglas de convivencia

  • Todo lo de Trazo se maneja con docker compose -p trazo ….
  • A los otros proyectos no se les reinicia ni recrea nada. Al proxy solo se le agrega una red y se le recarga la configuración, que no corta las conexiones abiertas.

Dónde está en el código