Migración · Railway → Skiffly
De Railway a Skiffly en tres pasos.
Los conceptos se corresponden uno a uno: espacio de trabajo, proyecto, entorno, servicio, ${{Postgres.DATABASE_URL}}. La mayoría de documentos de la API corre sin cambios y los comandos de la CLI comparten nombre. Lo que cambia es a quién pagas y dónde viven tus datos.
Tres pasos
- 1
Exporta lo que Railway sabe
Variables por servicio con
railway variables --kv; unpg_dumpde cada base de datos. Quita las entradasRAILWAY_*: Skiffly provee los equivalentesSKIFFLY_*. - 2
Despliega en Skiffly
skiffly initen cada repositorio y luegoskiffly up. Define las variables, despliega la plantilla de Postgres, restaura el dump porskiffly connect. - 3
Mueve el dominio
Prueba en el dominio generado
*.skiffly.cloud, agrega el dominio propio, cambia el CNAME cuando se emita el certificado. Mantén Railway encendido hasta que el DNS se propague.
# 1. export
railway variables --kv > vars.env
pg_dump "$RAILWAY_DATABASE_URL" -Fc -f db.dump
# 2. deploy
skiffly init && skiffly up
skiffly deploy --template postgres
skiffly connect postgres --print # → pg_restore -d <url> db.dump
skiffly variables set --skip-deploys $(grep -v '^RAILWAY_' vars.env | xargs)
skiffly variables set 'DATABASE_URL=${{Postgres.DATABASE_URL}}'
skiffly redeploy
# 3. cut over
skiffly domain app.example.com # prints the CNAME + TXT recordsMismas herramientas, otro host
CLI
skiffly up, skiffly logs -f, skiffly variables set, skiffly domain, skiffly connect. Mismos nombres que la CLI de Railway donde la función existe.
Servidor MCP
Apunta Claude Code, Cursor o Codex al servidor MCP de Skiffly y deja que el agente haga la mudanza: skiffly mcp install claude. Los nombres de herramientas replican al servidor MCP de Railway.
API GraphQL
projects, deployments(input:), variables, serviceInstanceUpdate, templateDeployV2 y el resto de campos compatibles funcionan tal cual. Cambia el endpoint y el token.
Config as code
Un railway.ts de railway/iac se convierte en .skiffly/skiffly.ts con defineRailway → defineSkiffly. Todo lo demás conserva su nombre.
Antes de cambiar el DNS
Comparar con Railway- La app escucha en
$PORT(8080 por defecto si no lo defines). - Nada depende de
*.railway.internalni de red privada IPv6. - El SMTP saliente por el puerto 25 está bloqueado; usa 587 con autenticación.
- Límites de plan: Hobby 8 GB / 8 vCPU por servicio, Pro 32 GB / 32 vCPU.
- Las vistas previas de PR se activan por proyecto; los forks se ignoran.
Empieza la mudanza en el plan gratuito
Un servicio sin tarjeta para probar el build. Recarga cuando estés listo para cambiar el DNS.