Migrar desde Heroku
Esta guía te lleva a través de la migración de tu aplicación de Heroku a Zeabur. La mayoría de las apps de Heroku están basadas en Git y usan buildpacks de lenguaje estándar, haciendo la transición sencilla — Zeabur auto-detecta tu proyecto con cero configuración.
Antes de Empezar
- Una cuenta en Zeabur.
- El código fuente de tu aplicación en un repositorio Git.
- Acceso a tu dashboard de Heroku o CLI (
heroku).
Paso 1: Conecta tu Repositorio Git
La mayoría de las apps de Heroku ya están respaldadas por un repositorio Git:
- Inicia sesión en el dashboard de Zeabur.
- Crea un nuevo proyecto y selecciona un servidor dedicado (o compra uno nuevo).
- Haz clic en Add Service → Git y conecta tu cuenta de GitHub.
- Selecciona el repositorio de tu aplicación.
Zeabur detecta automáticamente Node.js, Python, Ruby, Go, Java, PHP y muchos otros lenguajes — no se requiere Procfile.
Si tu código solo existe en Heroku Git (no en GitHub), primero súbelo a un repositorio de GitHub:
heroku git:clone -a my-app
cd my-app
git remote add github https://github.com/your-username/my-app.git
git push github mainPaso 2: Transfiere Variables de Entorno
Heroku almacena la configuración en Config Vars. Expórtalas y añádelas a Zeabur:
-
Lista tus config vars de Heroku:
heroku config -a my-app -
En el dashboard de Zeabur, haz clic en tu servicio y ve a la pestaña Variables.
-
Añade cada variable. Puedes pegarlas una a una o usar la función Bulk Edit para pegar múltiples pares clave-valor a la vez.
No necesitas establecer PORT en Zeabur. Zeabur asigna e inyecta el puerto automáticamente. Si tu app lee PORT del entorno (como la mayoría de las apps de Heroku), funcionará de inmediato.
Paso 3: Migra tu Base de Datos
Si estás usando Heroku Postgres:
-
Crea un backup y descárgalo:
heroku pg:backups:capture -a my-app heroku pg:backups:download -a my-appDescarga un archivo
latest.dumpen formato Postgres personalizado. -
Crea una base de datos en Zeabur: haz clic en Add Service → Database → PostgreSQL.
-
Importa tus datos usando la cadena de conexión PostgreSQL de Zeabur:
pg_restore -d "your-zeabur-postgres-connection-string" --no-owner latest.dump -
Actualiza la URL de base de datos de tu app: establece
DATABASE_URLen la pestaña Variables de Zeabur. Puedes usar la referencia de variable de Zeabur${POSTGRES_URI}para inyectar automáticamente la cadena de conexión del servicio de base de datos.
Para Heroku Redis, usa redis-cli --rdb para exportar e importar en una instancia Redis de Zeabur.
Paso 4: Reemplaza los Add-ons de Heroku
Los add-ons de Heroku tienen equivalentes en Zeabur o pueden conectarse como servicios externos:
| Add-on de Heroku | Equivalente en Zeabur |
|---|---|
| Heroku Postgres | Database → PostgreSQL |
| Heroku Redis | Database → Redis |
| Heroku Scheduler | Usa cron del sistema o un servicio programado |
| Papertrail (logs) | Visor de logs integrado en el dashboard |
| SendGrid | Conectar vía variables de entorno |
| Cloudinary | Conectar vía variables de entorno |
Para los add-ons que son productos SaaS externos (SendGrid, Cloudinary, etc.), simplemente sigue usándolos — solo transfiere las claves API a la pestaña Variables de Zeabur.
Paso 5: Configura Dominios Personalizados
- En el dashboard de Zeabur, haz clic en tu servicio y ve a la pestaña Networking.
- Haz clic en Generate Domain para un subdominio
.zeabur.appgratuito, o en Custom Domain para añadir el tuyo. - Actualiza tus registros DNS:
- Elimina el antiguo destino DNS de Heroku (CNAME a
*.herokuapp.como endpoint SSL de Heroku). - Añade un registro CNAME apuntando al destino proporcionado por Zeabur.
- Elimina el antiguo destino DNS de Heroku (CNAME a
Paso 6: Verifica y Publica
- Haz un push de un commit para disparar un despliegue (o haz clic en Redeploy en el dashboard).
- Revisa la pestaña Logs en Zeabur para confirmar que tu app inicia correctamente.
- Prueba los flujos clave de tu aplicación (autenticación, lecturas/escrituras en base de datos, llamadas a API).
- Una vez confirmado, actualiza tu DNS de producción para apuntar a Zeabur.
Diferencias Clave: Heroku vs Zeabur
| Característica | Heroku | Zeabur |
|---|---|---|
| Configuración | Procfile + buildpacks | Auto-detección (cero config) |
| Despliegue | git push heroku main | Git push a GitHub (auto-despliegue) |
| Escalado | Tipos de Dyno (Basic, Standard, Performance) | Basado en uso, auto-escalado |
| Comportamiento de sleep | Eco dynos duermen tras 30 min de inactividad | Sin sleep — siempre activo |
| Límite de tamaño slug | 500 MB comprimido | Sin límite de tamaño slug |
| Bases de datos | Heroku Postgres (gestionado) | Servicios de base de datos (PostgreSQL, MySQL, MongoDB, Redis, etc.) |
| Add-ons | Marketplace de Add-ons de Heroku | Servicios precompilados de Zeabur + servicios externos |
| Precios | Precio mensual por dyno | Basado en uso |
El Procfile de Heroku no es necesario en Zeabur. Zeabur auto-detecta tu comando de inicio. Si necesitas personalizarlo, puedes configurarlo en los ajustes del servicio bajo Build & Deploy.
Listo. Tu aplicación de Heroku ahora está ejecutándose en Zeabur sin dynos, sin Procfiles y sin límites de tamaño slug. Si encuentras algún problema, contáctanos en nuestro foro de la comunidad.