Desplegar Laravel en Heroku: guía real 2026
Desplegar Laravel en Heroku en 2026 toma entre 15 y 20 minutos si seguís los pasos correctos. El proceso requiere crear un Procfile apuntando a tu directorio public/, configurar las variables de entorno como Config Vars, agregar un addon de base de datos, hacer push via Git y correr las migraciones con un dyno one-off. Tu app queda online. Ahora viene la parte que la mayoría de los tutoriales ignora.
En 30 segundos
- El Procfile es el archivo crítico: sin él (o con encoding incorrecto), obtenés error 403 inmediato.
- PostgreSQL es el addon incluido de Heroku y la opción más razonable para bases de datos. Las alternativas pagas como MySQL vía terceros requieren presupuesto adicional.
- Workers y scheduler requieren dynos separados: el costo real en producción arranca en USD 60-80/mes. Heroku eliminó su tier gratuito en noviembre de 2022.
- El filesystem en Heroku es efímero: todo lo que subas al storage de Laravel desaparece en cada deploy.
- Heroku entró en maintenance mode en febrero de 2026; hay alternativas como Laravel Cloud que cuestan 30% menos según casos documentados.
Requisitos previos antes de empezar
Heroku es una plataforma de PaaS (Platform as a Service) que te permite desplegar aplicaciones web sin gestionar infraestructura propia. Para Laravel, abstrae la configuración del servidor a cambio de algunas restricciones que van a impactar en cómo diseñás tu app.
Antes de abrir la terminal, asegurate de tener todo esto en orden:
- PHP 8.2 o superior instalado localmente con Composer
- Un proyecto Laravel 11 o 12 funcionando en localhost
- Cuenta en Heroku y Heroku CLI instalado (verificá con
heroku --version) - Git inicializado en la raíz del proyecto (
git initsi no lo hiciste)
Si el CLI no está instalado, el resto del proceso no arranca. Verificá antes de seguir.
Los 8 pasos para desplegar Laravel en Heroku
Paso 1: Crear el Procfile
El Procfile le dice a Heroku cómo iniciar tu aplicación. Para Laravel con Apache, el contenido es uno solo:
web: heroku-php-apache2 public/
El archivo va en la raíz del proyecto, NO en vendor/ ni en public/. El nombre es Procfile sin extensión, con P mayúscula, en UTF-8. Si lo creás en Windows con Bloc de Notas y queda con BOM, Heroku lo rechaza silenciosamente y obtenés 403. Usá VS Code o guardá explícitamente como UTF-8 sin BOM.
¿Qué pasa si falta el Procfile? Exacto: error 403 en cuanto la app intenta servir algo. Cubrimos ese tema en detalle en estrategias multiidioma para tu app.
Paso 2: Crear la app en Heroku y configurar variables
Desde la terminal:
heroku create nombre-de-tu-app
Después seteás las variables de entorno. El archivo .env NO se commitea a Git, así que tenés que migrar tus variables manualmente como Config Vars:
heroku config:set APP_KEY=base64:tu_clave_aqui APP_ENV=production APP_DEBUG=false REDIRECT_HTTPS=true
La APP_KEY la generás con php artisan key:generate --show en local y pegás el resultado. REDIRECT_HTTPS=true fuerza SSL, que en producción es obligatorio.
Paso 3: Base de datos
Heroku ofrece PostgreSQL como addon nativo. Para agregarlo:
heroku addons:create heroku-postgresql:mini
Heroku agrega automáticamente la variable DATABASE_URL. En el config/database.php de Laravel tenés que parsear esa URL para que funcione con PostgreSQL. Si necesitás MySQL por compatibilidad con tu schema, tenés opciones pagas como ClearDB (addon de terceros), pero la opción nativa de Heroku es PostgreSQL con el addon Mini a USD 5/mes.
Paso 4: Push a Heroku
git add . && git commit -m "deploy inicial" && git push heroku main
Heroku detecta PHP, instala dependencias via Composer y levanta el dyno. El primer deploy puede tardar 2-3 minutos.
Paso 5: Migraciones
Las migraciones no corren solas. Necesitás un dyno one-off:
heroku run php artisan migrate --force
El flag --force es necesario porque Laravel pide confirmación en entornos que no son “local” o “testing”. Sin él, el comando queda colgado esperando input que nunca llega. Ya lo cubrimos antes en infraestructura como código en producción.
Paso 6: Workers para colas
Si tu app usa jobs o queues, necesitás agregar una línea al Procfile:
worker: php artisan queue:work --sleep=3 --tries=3
Y escalar el proceso:
heroku ps:scale worker=1
El worker corre en un dyno separado. Eso tiene un costo mensual aparte.
Paso 7: Storage y uploads
El filesystem de Heroku es efímero: cada vez que deployan, todo lo que subiste a storage/app desaparece. No es un bug, es el diseño. Si tu app maneja uploads de usuarios, tenés que usar S3 o algún servicio de almacenamiento externo desde el día uno. Configurás Laravel para usar el driver s3 y apuntás a tu bucket.
Paso 8: Scheduler
El scheduler de Laravel espera correr php artisan schedule:run cada minuto. En Heroku, el Scheduler addon Standard cuesta USD 29/mes y permite ejecutar tareas programadas. Para granularidad a nivel de minuto, es la opción requerida en 2026 (el plan gratuito fue eliminado en 2022).
Los problemas de producción que ningún tutorial menciona
Ponele que seguís todos los pasos, la app levanta, abrís el dominio y funciona. Perfecto. Ahora empezá a sumar los detalles que aparecen después.
El filesystem efímero ya lo mencioné, pero lo repito porque es el que más sorprende: los archivos temporales, los logs en disco, los uploads sin S3, las sesiones en archivo, todo eso desaparece en cada deploy. Si estás usando el driver de sesiones file (que viene por default en Laravel), cada deploy desloguea a todos tus usuarios.
Los zero-downtime deploys no existen en los dynos básicos. Cuando deployas, hay un período donde la app no responde. Para tráfico real, eso importa.
Y después está el costo. Según el análisis detallado de Kuberns, sumar todo lo necesario para una app Laravel en producción da algo así:
| Componente | Plan | Costo/mes (USD) |
|---|---|---|
| Web dyno | Basic | $12 |
| Worker dyno | Basic | $7 |
| Scheduler | Standard | $29 |
| PostgreSQL | Mini | $5 |
| Almacenamiento (S3) | Pay-as-you-go | $5-15 |
| Total estimado | $58-68/mes |

No es un número prohibitivo, pero tampoco es el costo mínimo con el que arrancan algunos tutoriales. Y eso sin contar Redis para colas, que en Heroku es otro addon. Para más detalles técnicos, mirá confiabilidad en tus despliegues automáticos.
¿Heroku sigue siendo una buena opción en 2026?
La respuesta honesta es: depende de qué necesitás, pero el contexto cambió.
En febrero de 2026, Heroku entró oficialmente en maintenance mode. Salesforce (que compró Heroku en 2010) dejó de desarrollar nuevas funcionalidades de plataforma. El producto sigue operativo, pero no está evolucionando. Para proyectos nuevos, eso es un factor a considerar.
La competencia movió el piso. Superscript documentó que migrar de Heroku a Laravel Cloud les redujo los costos en un 30% en el primer mes, sin contar que Laravel Cloud está diseñado específicamente para el framework: colas, scheduler, storage y las variables de entorno de Laravel vienen configurados por default.
Render, Fly.io y DigitalOcean App Platform son alternativas que resuelven la mayoría de las limitaciones de Heroku con precios similares o menores. Si estás evaluando dónde alojar un proyecto nuevo, tiene sentido comparar antes de commitear a una plataforma. Para los que ya tienen apps corriendo en Heroku, migrar tiene su costo operativo, así que evaluá caso por caso.
Para apps Laravel en producción con hosting en Argentina, donweb.com tiene opciones de VPS donde podés correr Laravel sin las restricciones de un PaaS cerrado.
Qué está confirmado / Qué no
| Aspecto | Estado | Detalle |
|---|---|---|
| Soporte Laravel 11/12 en Heroku | Confirmado | PHP 8.2+ disponible en buildpacks |
| Heroku en maintenance mode | Confirmado | Anunciado febrero 2026 |
| Opciones de base de datos pagadas | Confirmado | PostgreSQL Mini a $5/mes o alternativas de terceros |
| Scheduler solo en plan pagado | Confirmado | Plan Scheduler Standard a USD 29/mes desde 2022 |
| Fecha de cierre de Heroku | No confirmado | Salesforce no anunció EOL |
| Paridad de features con Laravel Cloud | No confirmado | Laravel Cloud aún no cubre todos los casos de Heroku |
Errores comunes al desplegar Laravel en Heroku
Error 403 al abrir la app
El 90% de los casos: el Procfile falta, tiene encoding incorrecto o el nombre está mal escrito. Chequeá que existe en la raíz, que se llama Procfile con P mayúscula, sin extensión, y que la línea apunta a public/ (no a public sin barra).
Migraciones que se cuelgan sin respuesta
Si corré heroku run php artisan migrate sin --force y el comando no termina nunca, está esperando confirmación de consola. Siempre usá --force en entornos de producción.
Los uploads desaparecen
Cualquiera que haya configurado uploads en local y los deploye en Heroku sin S3 va a encontrarse con que los archivos desaparecen en el próximo deploy. El filesystem es efímero por diseño. Configurá el driver s3 en config/filesystems.php antes del primer deploy en producción.
APP_KEY no seteado
Si olvidás setear APP_KEY como Config Var, Laravel rompe el cifrado de sesiones y cookies. El error que ves generalmente es vago (500 o error de encriptación). Generá la clave en local con php artisan key:generate --show y seteála en Heroku antes de hacer push. Sobre eso hablamos en contenerizar aplicaciones Laravel con Docker.
Preguntas Frecuentes
¿Qué es el Procfile y por qué es obligatorio para Laravel en Heroku?
El Procfile es un archivo de texto en la raíz del proyecto que define cómo Heroku debe iniciar cada proceso de la aplicación. Para Laravel, la línea web: heroku-php-apache2 public/ le indica al servidor web que el punto de entrada es el directorio public/. Sin este archivo, Heroku no sabe dónde servir la aplicación y devuelve error 403.
¿Cómo configuro la base de datos de Laravel en Heroku?
La opción más directa es usar el addon de PostgreSQL nativo (heroku addons:create heroku-postgresql:mini). Heroku agrega la variable DATABASE_URL automáticamente. Si necesitás MySQL, el addon ClearDB o alternativas pagas de terceros requieren presupuesto adicional. Después de configurar la base de datos, corré las migraciones con heroku run php artisan migrate --force.
¿Por qué me sale error 403 al desplegar mi app Laravel en Heroku?
Las causas más frecuentes son: Procfile ausente, Procfile con nombre incorrecto (minúsculas, extensión .txt), encoding incorrecto (BOM en UTF-8), o la ruta apuntando a un directorio que no existe. Verificá que el archivo existe en la raíz del repo con ls -la y que el contenido sea exactamente web: heroku-php-apache2 public/.
¿Cuánto cuesta mantener una aplicación Laravel en Heroku en producción?
El costo real para una app con web dyno, worker, scheduler y base de datos arranca en USD 58-68 por mes. El web dyno Basic cuesta USD 12/mes, el worker USD 7/mes, el Scheduler Standard USD 29/mes, y PostgreSQL Mini USD 5/mes. Los planes gratuitos fueron eliminados en Heroku desde noviembre de 2022.
¿Qué alternativas a Heroku existen para Laravel en 2026?
Laravel Cloud es la opción más integrada: está diseñada específicamente para el framework, incluye configuración nativa de queues, scheduler y storage, y casos como Superscript reportan ahorros del 30% frente a Heroku. Render y Fly.io son alternativas más genéricas con mejor precio que Heroku para cargas similares. DigitalOcean App Platform también resuelve el problema del filesystem efímero con almacenamiento persistente incluido.
Conclusión
Desplegar Laravel en Heroku en 2026 funciona, pero hay que ir con los ojos abiertos. El proceso de 8 pasos es directo si tenés el Procfile correcto y las variables bien configuradas. El problema real aparece después: el filesystem efímero obliga a usar S3 desde el inicio, los workers necesitan su propio dyno, el scheduler requiere el plan Standard a USD 29/mes, y el costo total en producción está en el rango de USD 60-80/mes para una app completa.
Sumá que Heroku entró en maintenance mode en febrero de 2026, y el panorama cambia un poco. Para proyectos nuevos tiene sentido evaluar las alternativas antes de arrancar. Para los que ya están en Heroku y la app funciona, el costo de migración puede no justificarse hasta que haya una razón concreta.
Si lo que necesitás es arrancar rápido con un proyecto Laravel y no querés lidiar con administración de servidores, Heroku sigue siendo una opción válida. Solo que ahora sabés el precio real de esa comodidad.

![[FREE] I built a no-code RPG game engine plugin for WordPress. Here's a 30 minute build demo - ilustracion](https://donweb.news/wp-content/uploads/2026/04/plugin-rpg-wordpress-sin-codigo-hero-768x429.jpg)


![You can decompose models into a graph database [N] - ilustracion](https://donweb.news/wp-content/uploads/2026/04/descomponer-modelos-base-datos-grafos-hero-768x429.jpg)

