Deploy de un proyecto en Django con Railway
Índice de contenido
- ¿Qué es Railway y por qué usarlo con Django?
- 1 Preparar tu proyecto Django para el deploy
- 2 Conectar tu repositorio de GitHub a Railway
- 3 Opcional, Configurar base de datos y variables de entorno
- 3.1 SQLite
- 4 Archivos estáticos y configuración de producción
- 5 Configurar dominio y revisar el deploy final
- 6 Servidor web
- Conclusión y consejos finales
- Preguntas frecuentes
Cómo hacer deploy de un proyecto Django en Railway (guía paso a paso)
Si alguna vez te preguntaste cómo desplegar un proyecto Django sin complicarte la vida con servidores o configuraciones eternas, déjame contarte mi experiencia con Railway, una plataforma que automatiza casi todo el proceso de deploy.
En esta guía te mostraré cómo subir un proyecto Django paso a paso a Railway, usando un repositorio de GitHub y unas pocas configuraciones clave. Es el mismo método que utilizo en mis cursos y proyectos personales, así que te aseguro que funciona.
¿Qué es Railway y por qué usarlo con Django?
Railway es una plataforma de hosting cloud que permite desplegar aplicaciones de distintos lenguajes con solo conectar tu repositorio. Lo mejor es que detecta automáticamente el tipo de proyecto (Python, Node, etc.) y configura el entorno por ti.
A diferencia de otras opciones como PythonAnywhere o Render, Railway destaca por su interfaz limpia y despliegue automatizado. Cuando lo probé por primera vez, me sorprendió lo rápido que detectó mi entorno de Django solo con el requirements.txt.
Además, ofrece un plan gratuito con $5 de crédito inicial, ideal para pruebas, demos o proyectos educativos.
1 Preparar tu proyecto Django para el deploy
Antes de conectar nada, tu proyecto debe estar bien configurado.
Crea o actualiza el archivo requirements.txt con todas las dependencias del entorno:
pip freeze > requirements.txt
Verifica settings.py:
DEBUG = False
ALLOWED_HOSTS = ["tu-dominio.railway.app"]
Crea el archivo Procfile (sin extensión) en la raíz del proyecto:
web: uvicorn nombre_del_proyecto.wsgi:application --host 0.0.0.0 --port 8000
Railway detecta automáticamente Django gracias al requirements.txt. Pero ojo: si el repo es privado, a veces no sincroniza correctamente. Te recomiendo hacerlo público al menos durante el deploy.
2 Conectar tu repositorio de GitHub a Railway
Una vez logueado en tu cuenta de Railway:
- Haz clic en New Project.
- Elige Deploy from GitHub Repo.
- Autoriza el acceso y selecciona el repositorio del proyecto.
- Railway detectará automáticamente Python y Django.

3 Opcional, Configurar base de datos y variables de entorno
Django usa SQLite por defecto, pero Railway permite añadir bases externas como PostgreSQL o MySQL con un clic, por lo tanto, si quieres emplear SQLite, puedes saltar este paso e ir al 3.1
- Desde el panel del proyecto, selecciona Database.
- Copia las variables que te da Railway (host, user, password, database URL).
- Pégalos en la sección Environment Variables o en tu settings.py.
En uno de mis proyectos usé SQLite y descubrí que Railway ignora el archivo db.sqlite3 por el .gitignore. Lo solucioné subiéndolo manualmente al repo, aunque no es lo ideal para producción. Perfecto para demos o pruebas.
3.1 SQLite
Si decides usar SQLite, elimina la línea correspondiente del .gitignore, pero recuerda que cada commit actualizará la base de datos.
Puedes usar la base de datos en SQLite pero con limitaciones importantes como que la misma será sobrescrita cada vez que hagas un nuevo deploy desde Railway; esto no es un problema si simplemente quieres usar la aplicación como una demo o para presentar a un cliente, si quieres emplearla, remueve del .gitignore la referencia a sqlite:
db.sqlite3
Y sincroniza la base de datos:
$ git add database/database.sqlite
$ git commit -m 'DB'
$ git push
4 Archivos estáticos y configuración de producción
El manejo de archivos estáticos suele dar dolores de cabeza en Django, pero con Railway es bastante sencillo.
Ejecuta:
$ python manage.py collectstatic
Asegúrate de tener en tu settings.py:
settings.py
#PRODUCTION-------
STATIC_ROOT = BASE_DIR / "staticfiles"
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "elements" / "static"]
#PRODUCTION-------
5 Configurar dominio y revisar el deploy final
Railway asigna automáticamente un dominio gratuito del tipo
https://nombre-app.up.railway.app.
- Entra a Settings del proyecto clonado de Github.
- Crea y copia el dominio y agrégalo a ALLOWED_HOSTS.
- Guarda cambios y Railway redeplegará tu app.

settings.py
ALLOWED_HOSTS = [
"***-production.up.railway.app",
]
6 Servidor web
Hasta ahora, hemos empleando un servidor de desarrollo, lo cual queda perfectamente claro al momento de ejecutar una aplicación en Django:
$ python manage.py runserver
***
WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
***
Debemos de instalar alguno para producción; para Python web, gunicorn es usualmente una excelente opción:
$ pip install gunicorn
Railway necesita un Procfile para saber cómo ejecutar tu app, este archivo indica a plataformas de despliegue como Tailway o Heroku por nombrar algunas, como desplegar la aplicación, es decir, como arrancar la app, en este caso, el comando del servidor web instalado:
Procfile
web: gunicorn myproject.wsgi
Cambia myproject por el nombre de tu carpeta de Django que contiene el archivo wsgi.py.
El archivo Procfile debe estar ubicado dentro de la carpeta del proyecto (al mismo nivel que el manage.py).
Conclusión y consejos finales
En resumen, estos son los pasos esenciales para hacer deploy de un proyecto Django en Railway:
- Prepara tu requirements.txt y Procfile.
- Configura settings.py y los ALLOWED_HOSTS.
- Conecta tu repo de GitHub (preferiblemente público).
- Configura base de datos y variables de entorno.
- Ajusta archivos estáticos y verifica el dominio.
- Instalar y configurar gunicorn.
Con eso tendrás tu app Django corriendo en Railway en pocos minutos.
Yo lo he probado en varios proyectos y sigue siendo una de las opciones más simples y eficientes para desplegar sin complicaciones.
Este es un proyecto usado para hacer el deploy en Railway:
https://github.com/libredesarrollo/coruse-book-django-store/
El proyecto:
https://course-book-django-store-production.up.railway.app/
Preguntas frecuentes
- ¿Railway es gratuito para Django?
Sí, tiene un plan gratuito con crédito inicial de $5. Luego tu app puede “dormir” si no recibe tráfico. - ¿Puedo usar SQLite?
Sí, pero no es ideal para producción. Railway ignora db.sqlite3 por defecto; puedes subirlo manualmente para pruebas. - ¿Qué pasa si mis archivos estáticos no cargan?
Verifica STATIC_URL, STATIC_ROOT y que hayas corrido collectstatic. Usa WhiteNoise para servirlos correctamente. - ¿Qué diferencia hay entre Railway y Render?
Railway es más automatizado y fácil de configurar; Render ofrece más control sobre entornos productivos.
Acepto recibir anuncios de interes sobre este Blog.
Te muestro los pasos que debes de seguir cuando vas a hacer el deploy de un proyecto en Django en Railway.