La forma más sencilla de desplegar tu app sin pelearte con servidores
No es perfecta, pero es la que uso cuando quiero lanzar algo rápido sin meterme en líos de cloud.
Si trabajas en una gran empresa, seguramente usas AWS, Google Cloud o Azure. Y con razón: necesitas cumplir normativas, tener redundancia, soporte, seguridad, y toda esa lista interminable de checks que piden los de compliance.
Pero si estás montando una app personal, un side project o una demo para un cliente...
No necesitas una nave espacial para ir al supermercado.
Lo que necesitas es algo que funcione, que sea barato, y que no te pida pelearte con iptables
.
La semana pasada conté cómo, creando proyectos de IA para empresas, he ingresado más de 20 000 € en sólo seis meses de 2025. Este tutorial de despliegue de modelos —y todo el contenido práctico que lo acompaña— es justo lo que me permitió alcanzar esa cifra. Si quieres que convierta este tipo de guías en una formación completa, dedica 2 min a rellenar este formulario y ayúdame a darle forma.
¿Por qué no uso EC2 para todo?
Sí, EC2 tiene su tier gratuito. Y reconozco que durante años fue mi recurso comodín. Pero ser gratis no significa que sea fácil.
Esto es lo que EC2 no hace por ti:
Configurar el dominio
Instalar el certificado SSL
Montar
nginx
o un proxyAbrir puertos y tocar reglas de seguridad
Monitorizar el estado de tu app
Hacer autodeploy al hacer push a GitHub
Y todo eso, aunque lo sepas hacer, lleva tiempo.
Tiempo que no siempre tenemos.
Tiempo que podrías dedicar a mejorar tu app… o simplemente a vivir.
(También tengo proyectos desplegados en EC2, con sus acciones en github para desplegar automáticamente. Si te interesa, déjame un comentario)
Mi alternativa: DigitalOcean App Platform
Después de probar muchas opciones, encontré DigitalOcean App Platform.
Y para mí, fue amor a primer deploy.
Esto es lo que ofrece:
Puedes subir tu propio Dockerfile (sin que te obliguen a usar su stack)
HTTPS automático, sin necesidad de Let's Encrypt ni configuración
Escalado con clics, no con scripts
Auto-deploy conectado con GitHub
Logs, métricas y consola desde el panel
Dominio personalizado en 3 minutos
Y todo por 5$/mes (obvio tienes versiones más premium, pero para desplegar una API de FastAPI nos sobra)
Además, si te registras con su enlace de referidos, te dan 200$ en créditos. Suficiente para tener tu app corriendo gratis durante dos meses mientras decides si te convence.
Aquí te dejo el mio.
Paso a paso: Cómo desplegué una app en minutos
Antes de empezar, te dejo en enlace a un miniproyecto de “Task Manager” para que puedas hacer tu primera prueba.
En mi caso, quería lanzar una API hecha con FastAPI para convertir tickets de supermercado en JSON.
Esto fue lo que hice:
1. Crear el Dockerfile
Un Dockerfile
básico para FastAPI, nada raro:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
2. Añadir un .dockerignore
(muy importante)
__pycache__/
*.pyc
*.pyo
*.pyd
.env
Esto evita subir archivos innecesarios que podrían hacer más lento el build o exponer secrets.
3. Subir el repo a GitHub
git add Dockerfile .dockerignore
git commit -m "Add Docker support"
git push
4. Conectar con DigitalOcean
Crear nueva app desde el dashboard
Accede a tu cuenta de DigitalOcean (si no tienes, puedes crearla en 2 minutos).
Una vez dentro, en el menú lateral, haz clic en “Apps” y luego en el botón azul de “Create App”.
Esto te lleva al asistente de despliegue, que es lo más parecido que hay a un “siguiente, siguiente, terminar” en el mundo del cloud.
Seleccionar GitHub como fuente
Te va a preguntar de dónde sacar el código. Elige GitHub como fuente.
Si es la primera vez, tendrás que conectar tu cuenta de GitHub con DigitalOcean. Solo necesitas autorizar el acceso (y puedes limitarlo a ciertos repos si prefieres).
Una vez conectado, verás una lista de todos tus repositorios disponibles.
Elegir el repositorio y la rama (main
)
Busca el repositorio donde tienes tu app con el Dockerfile
.
Elige la rama que quieres desplegar (normalmente main
, pero puedes elegir dev
, feature/x
, lo que uses en tu flujo).
💡 Consejo: si vas a hacer cambios frecuentes, es buena idea usar una rama estable para producción y otra para pruebas.
DigitalOcean detecta automáticamente que hay un Dockerfile
Aquí viene la magia: si tu repo tiene un Dockerfile
en la raíz (o en el directorio raíz del servicio), DigitalOcean lo detecta automáticamente y te dice que puede desplegar la app como contenedor personalizado.
No necesitas configurar nada más: ni lenguaje, ni entorno, ni dependencias. El Dockerfile
ya le está diciendo todo lo que necesita.
Indicar el puerto
Tienes que asegurarte de que el puerto expuesto sea el 8080.
DigitalOcean lo suele detectar automáticamente, pero si no, puedes indicarlo tú manualmente en el apartado de configuración del servicio. También puedes cambiar en la configuración de Digital Ocean.
Elegir el plan de 5$/mes (o usar créditos gratis)
Después de configurar el servicio, toca elegir el plan.
Para la mayoría de proyectos personales, el plan más básico de 5$/mes es más que suficiente.
Y si es tu primera vez en DigitalOcean, probablemente tengas disponibles 200$ en créditos gratuitos, lo que significa que puedes probar todo esto durante dos meses sin gastar un euro.
Selecciona la región más cercana a tus usuarios (por ejemplo, Frankfurt o Ámsterdam si estás en Europa) para reducir latencia.
Hacer clic en “Create Resources”
Ya está todo configurado.
Solo tienes que revisar los detalles y hacer clic en el botón final: “Create Resources”.
En ese momento, DigitalOcean empieza a:
Clonar tu repo
Construir el contenedor con tu
Dockerfile
Desplegarlo en su infraestructura
Asignarle un dominio HTTPS público
Y dejarlo funcionando en cuestión de minutos
Sí, literalmente minutos.
Listo. Sin servidores. Sin firewalls. Sin trauma.
¿Y después del deploy?
Vale, ya le diste a “Create Resources” y… sorpresa:
tu app ya está en internet.
Sin configurar servidores, sin abrir puertos, sin montar un Nginx a las tres de la mañana.
Y lo mejor: con HTTPS y dominio incluido por defecto.
Tienes una URL pública lista para usar
DigitalOcean te asigna automáticamente un subdominio del tipo:
https://nombre-de-tu-app-xyz.ondigitalocean.app
Puedes compartir ese enlace con quien quieras desde el primer minuto.
Ya está servido con HTTPS, por lo que no tendrás que preocuparte de certificados, renovaciones ni configuraciones manuales. Lo hace todo por ti.
Tienes documentación Swagger en /docs
Si estás usando FastAPI, este punto te va a encantar.
La propia librería genera una interfaz interactiva en la ruta /docs
, donde puedes probar todos los endpoints de tu API con un clic.
Perfecto para validar que todo funciona o enseñar tu trabajo a un cliente, equipo o inversores sin necesidad de Postman.
https://nombre-de-tu-app-xyz.ondigitalocean.app/docs
Puedes añadir tu propio dominio personalizado
¿Quieres que tu app esté en miappchula.com
en lugar del subdominio de DigitalOcean?
Sin problema.
Desde el panel de tu app, ve a Settings → Domains, añade tu dominio y sigue los pasos que te indican para actualizar los registros DNS.
En menos de 10 minutos lo tienes vinculado, con HTTPS automático incluido.
Y sin pelearte con certificados, zonas DNS ni paneles complicados.
Puedes conectar una base de datos gestionada
Si tu app necesita guardar información (usuarios, tareas, pedidos, lo que sea), puedes añadir una base de datos en dos clics.
Desde el dashboard de DigitalOcean, haz clic en "Create → Databases", elige el motor (por ejemplo PostgreSQL o MySQL), y luego vincúlala a tu app desde el mismo panel.
DigitalOcean te da las credenciales seguras y variables de entorno preconfiguradas para que tu app la use sin tener que escribir una sola línea de docker-compose
.
Puedes activar auto-deploy al hacer push
¿Quieres que tu app se actualice automáticamente cada vez que haces un push a GitHub?
Activa la opción "Autodeploy on Git Push" desde la configuración de la app, y listo.
Cada vez que hagas git push
a la rama que configuraste (normalmente main
), DigitalOcean:
Vuelve a construir el contenedor
Despliega la nueva versión
Y lo hace todo sin que muevas un dedo
Ideal para no tener que entrar al panel cada vez que haces un cambio.
Puedes ver logs, estado y estadísticas en tiempo real
En el panel de la app tienes acceso a:
Logs de sistema y de aplicación
Estado de cada despliegue
Estadísticas de uso (RAM, CPU, tráfico)
Histórico de builds y releases
Todo en una sola interfaz, sin conectarte por SSH, ni instalar htop
, ni usar journalctl
.
Si algo falla, lo verás claro desde ahí.
Y si algo se rompe, puedes revertir con un clic
¿Subiste un cambio que rompió todo? No pasa nada.
DigitalOcean guarda el historial de versiones de tu app.
Puedes volver a una versión anterior con un solo clic, sin tener que hacer rollback manual ni clonar nada.
Es como tener un botón de “deshacer” para tus despliegues.
Reflexión final: no hay una solución perfecta (y está bien)
Si estás buscando la mejor forma de desplegar tu app,
siento decirte que no existe.
Cada opción tiene sus ventajas, sus limitaciones y sus rincones oscuros.
Ni AWS, ni DigitalOcean, ni Render, ni Railway te van a librar de todo.
Pero algunas te lo ponen más fácil que otras.
Y para los que no somos expertos en cloud, para los que venimos a construir y no a configurar firewalls, herramientas como esta nos permiten ahorrar tiempo, energía y frustración.
No es perfecta.
Pero funciona. Y a veces, con eso basta.
¿Tú dónde estás desplegando tus apps?
¿También usas DigitalOcean, Render, Railway… o sigues en la cueva de EC2?
¿Quieres probarlo tú?
Todo lo que te he contado en este post lo puedes replicar en menos de una hora.
Aquí tienes los enlaces para no complicarte:
🔗 Repositorio con el código de ejemplo (FastAPI + Docker):
https://github.com/iamdgarcia/fastapi-task-manager
🚀 Registro en DigitalOcean con 200$ gratis en créditos:
Link de registro
(Sí, es un link de referido. Tú recibes 200$ en créditos para desplegar gratis durante dos meses. Y si por algún milagro del destino acabas dejándote un dineral en servidores… a mí me invitan a un café. Literalmente. Uno.)
Pruébalo, copia el proyecto, modifícalo, rómpelo sin miedo y vuelve a subirlo.
Esto no va de hacer las cosas perfectas.
Va de sacarlas, ver qué pasa y aprender en el proceso.
Muy interesante Daniel, muchas gracias por compartirlo! 🤓