Migrar desde Railway
Un proyecto de Railway encaja muy bien en un proyecto de Zenavo: los servicios, la red privada, las variables compartidas y los volúmenes tienen equivalente.
Equivalencias entre Railway y Zenavo
| Railway | Zenavo |
|---|---|
| Proyecto y entorno | Un proyecto en un servidor; otro entorno es un proyecto clonado |
| Servicio desde GitHub | Un servicio desde GitHub, que se vuelve a desplegar con cada push |
| Compilación con Nixpacks o Railpack | zbpack, o tu Dockerfile |
Comando de arranque, ruta de healthcheck (railway.json) | Comando de arranque y una comprobación de salud HTTP |
Variables de referencia ${{Postgres.DATABASE_URL}} | Variables compartidas, como ${POSTGRESQL_CONNECTION_STRING} (Variables de entorno) |
<service>.railway.internal | <hostname>.zenavo.internal (Red privada) |
| Volúmenes | Volúmenes |
| Watch paths | Watch paths |
| Réplicas | Réplicas, en un servidor |
| Programación cron | Aún no hay tareas programadas: ejecuta un servicio worker con un planificador en la aplicación |
1. Vuelve a crear los servicios
- Añade un servidor y crea un proyecto.
- Añade primero las bases de datos (Bases de datos) y luego cada servicio de aplicación desde Add Service → GitHub, con el mismo directorio raíz.
- Copia el comando de arranque y la ruta de healthcheck de cada servicio desde los ajustes de Railway o
railway.jsona los Settings del servicio.
2. Copia las variables
El Raw Editor de las Variables de un servicio en Railway las muestra como líneas KEY=value; pégalas en Variable → Edit Raw Variables. Sustituye las variables de referencia por las compartidas de Zenavo: ${{Postgres.DATABASE_URL}} pasa a ser ${POSTGRESQL_CONNECTION_STRING}, y ${{api.RAILWAY_PRIVATE_DOMAIN}} pasa a ser api.zenavo.internal.
3. Traslada los datos
Para PostgreSQL, vuelca en SQL plano a través de la URL pública de la base de datos (DATABASE_PUBLIC_URL en Railway), con la misma versión principal en Zenavo:
pg_dump --no-owner --no-acl "$DATABASE_PUBLIC_URL" | gzip > railway.sql.gzSúbelo en la pestaña Backup & Restore de la nueva base de datos y restáuralo en la base de datos vacía (Subir una copia de seguridad). Para MySQL, usa mysqldump de la misma forma.
Para un volumen, saca sus archivos (por ejemplo con tar desde un shell en el servicio de Railway) y súbelos con la tarjeta Files del servicio, o restaura un .tar sin comprimir en un volumen vacío (Copia de seguridad y restauración).
4. Cambia el dominio
Asocia cada dominio en Networking y sustituye el CNAME de Railway por un registro A a la dirección IP del servidor (Dominios y HTTPS).