Railway Deployment Guide
Deploy EngiVault API v2.0 to Railway with PostgreSQL in minutes
Prerequisites
Railway account
PostgreSQL database (Railway provides this)
Step 1: Connect to Railway
BASH
# Install Railway CLI npm install -g @railway/cli # Login to Railway railway login # Link your project railway link
Step 2: Add PostgreSQL Database
BASH
# Add PostgreSQL service to your Railway project railway add postgresql # This will automatically set the DATABASE_URL environment variable # You can verify it was set with: railway variables
Step 3: Set Required Environment Variables
BASH
# Set JWT secret (REQUIRED)
railway variables set JWT_SECRET=$(node -e "console.log(require('crypto').randomBytes(64).toString('hex'))")
# Set other environment variables
railway variables set NODE_ENV=production
railway variables set LOG_LEVEL=info
# Verify all variables are set
railway variablesStep 4: Deploy
BASH
# Deploy to Railway railway up
Step 5: Setup Database
BASH
# Generate Prisma client railway run npm run db:generate # Run database migrations railway run npm run db:migrate # Seed initial data (subscription plans) railway run npm run db:seed
Environment Variables
Required Variables
DATABASE_URL - Automatically set by Railway PostgreSQLJWT_SECRET - Your secret key for JWT tokensNODE_ENV - Set to productionOptional Variables
PORT - Server port (default: 3000)HOST - Server host (default: 0.0.0.0)LOG_LEVEL - Logging level (default: info)RATE_LIMIT_MAX - Rate limit per window (default: 100)RATE_LIMIT_TIME_WINDOW - Rate limit window in ms (default: 60000)Monitoring
Health Check
Endpoint:
https://your-app.railway.app/healthRailway Health Check: Automatically configured
API Documentation
Swagger UI:
https://your-app.railway.app/documentationOpenAPI JSON:
https://your-app.railway.app/documentation/jsonTroubleshooting
Database Connection Failed
Check if DATABASE_URL is set with railway variables
Build Failed
Check build logs with railway logs
Authentication Issues
Verify JWT secret is set with railway variables get JWT_SECRET