tu-repo/
├── Dockerfile
├── docker-entrypoint.sh
├── railway.toml
└── README.md ← este archivo
- Ve a railway.app e inicia sesión.
- Click New Project → Deploy from GitHub repo.
- Selecciona tu repositorio (el que contiene este
Dockerfile). - Railway detectará el
Dockerfileautomáticamente.
- En tu proyecto, click + Add Service → Database → PostgreSQL.
- Railway creará la DB y añadirá automáticamente
DATABASE_URLa tu servicio Pleroma.
⚠️ Importante:DATABASE_URLse inyecta automáticamente cuando ambos servicios están en el mismo proyecto. No necesitas copiarla manualmente.
Ve a tu servicio Pleroma → pestaña Variables → añade:
| Variable | Valor de ejemplo | Obligatoria |
|---|---|---|
PLEROMA_DOMAIN |
social.tudominio.com |
✅ Sí |
PLEROMA_INSTANCE_NAME |
Mi Instancia Pleroma |
✅ Sí |
PLEROMA_ADMIN_EMAIL |
admin@tudominio.com |
✅ Sí |
PLEROMA_NOTIFY_EMAIL |
notify@tudominio.com |
No (usa admin) |
DATABASE_URL |
(se llena sola desde el plugin PG) | ✅ Auto |
DB_ADMIN_USER |
postgres |
✅ Sí (para crear la DB) |
DB_ADMIN_PASS |
(cópiala del plugin Postgres) | ✅ Sí |
MIX_ENV |
prod |
✅ Sí |
SECRET_KEY_BASE |
(genera con mix phx.gen.secret) |
✅ Sí |
- Click en el servicio PostgreSQL en Railway.
- Pestaña Variables.
- Copia el valor de
POSTGRES_PASSWORD→ pégalo comoDB_ADMIN_PASSen Pleroma.
Si tienes Elixir instalado localmente:
mix phx.gen.secretSi no, puedes usar:
openssl rand -hex 64- Servicio Pleroma → Settings → Networking → Generate Domain.
- Copia el dominio generado (ej:
pleroma-production.up.railway.app). - Úsalo como valor de
PLEROMA_DOMAIN.
- Servicio Pleroma → Settings → Networking → Custom Domain.
- Ingresa tu dominio (ej:
social.tudominio.com). - Railway te dará un registro CNAME para apuntar en tu DNS.
- Usa ese mismo dominio en
PLEROMA_DOMAIN.
Railway gestiona el certificado SSL automáticamente (Let's Encrypt). No necesitas configurar nginx.
Sin volumen persistente, los archivos subidos se pierden al redeploy.
- Servicio Pleroma → Settings → Volumes.
- Click Add Volume.
- Mount path:
/var/lib/pleroma/uploads.
Railway hará deploy automáticamente al hacer push al branch configurado. El primer deploy tardará varios minutos (compila Elixir + descarga deps).
Puedes ver los logs en: Servicio Pleroma → Deployments → [último deploy] → Logs.
Una vez que el deploy esté Active:
# Instala Railway CLI si no lo tienes:
npm install -g @railway/cli
# Login
railway login
# Ejecutar en el contenedor desplegado:
railway run --service pleroma \
docker-entrypoint.sh create-admin tuusuario tu@email.com- Revisa los logs del deploy (suelen indicar exactamente qué faltó).
- Verifica que
DATABASE_URLesté disponible en las variables. - El primer arranque puede tardar 5-10 min.
- Asegúrate de que el servicio PostgreSQL está en el mismo proyecto.
- Verifica que
DB_ADMIN_PASScoincide conPOSTGRES_PASSWORDdel plugin.
- Configura el volumen en
/var/lib/pleroma/uploads(ver Paso 5).
# Obligatorias
PLEROMA_DOMAIN=social.tudominio.com
PLEROMA_INSTANCE_NAME=Mi Pleroma
PLEROMA_ADMIN_EMAIL=admin@tudominio.com
MIX_ENV=prod
SECRET_KEY_BASE=<genera con openssl rand -hex 64>
# Desde el plugin Postgres (automáticas)
DATABASE_URL=postgresql://...
# Para setup inicial de la DB
DB_ADMIN_USER=postgres
DB_ADMIN_PASS=<copia de POSTGRES_PASSWORD del plugin>