aethex.live/RAILWAY_DEPLOYMENT.md

211 lines
4.6 KiB
Markdown

# Deploying aethex.live to Railway
Railway is a great platform for hosting full-stack applications. Here's how to get your streaming platform running on Railway.
## Prerequisites
- Railway.app account (https://railway.app)
- GitHub repository connected to Railway
- Your streaming provider HLS URL
## Quick Deploy
### Option 1: Deploy from GitHub (Easiest)
1. Go to https://railway.app/dashboard
2. Click "New Project"
3. Select "Deploy from GitHub repo"
4. Choose your `aethex.live` repository
5. Configure:
- **Build Command**: `npm install && npm run build`
- **Start Command**: `npm start`
- **Port**: `3000`
### Option 2: Deploy with Railway CLI
```bash
# Install Railway CLI
npm install -g @railway/cli
# Login to Railway
railway login
# Initialize Railway in your project
railway init
# Deploy
railway up
```
## Environment Variables in Railway
1. Go to your Railway project dashboard
2. Click "Variables" tab
3. Add these environment variables:
```
NEXT_PUBLIC_STREAM_URL=your-hls-stream-url.m3u8
NODE_ENV=production
```
### Optional (if implementing backends):
```
# Firebase
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
# Database
DATABASE_URL=postgresql://...
# Chat
NEXT_PUBLIC_WEBSOCKET_URL=wss://your-railway-app.railway.app
# Authentication
NEXTAUTH_URL=https://your-railway-domain.railway.app
NEXTAUTH_SECRET=your-secret-key
```
## Database Setup (Optional)
If you want to use a database on Railway:
1. In your Railway project, click "Database"
2. Select **PostgreSQL**
3. Railway will automatically set `DATABASE_URL` environment variable
4. Connect your app to the database
## Custom Domain
1. Go to Railway project → Settings
2. Look for "Domains"
3. Add your custom domain: `aethex.live`
4. Update your DNS records to point to Railway's nameservers
Or use CNAME:
```
Name: aethex
Type: CNAME
Value: (provided by Railway)
```
## Monitoring & Logs
- **View Logs**: Railway Dashboard → Logs tab
- **Monitor Resources**: Railway Dashboard → Metrics tab
- **Configure Alerts**: Railway Dashboard → Settings → Alerts
## Troubleshooting
### Build fails
- Check build logs in Railway dashboard
- Verify `package.json` has all dependencies
- Ensure Node version is 20+ (Railway default is recent)
### Stream not loading
- Check `NEXT_PUBLIC_STREAM_URL` is set correctly
- Verify HLS URL is publicly accessible
- Check if CORS is enabled on your stream provider
### App crashes
- View logs in Railway for error messages
- Check if PORT is correctly set to 3000
- Ensure memory limit is sufficient (512MB+ recommended)
### Domain issues
- DNS changes can take 24-48 hours to propagate
- Verify CNAME/A record points to Railway
- Test with `nslookup aethex.live`
## Advanced Railway Configuration
Create a `railway.json` file for automatic deployments:
```json
{
"$schema": "https://railway.app/schema.json",
"build": {
"builder": "nixpacks"
},
"deploy": {
"startCommand": "npm start",
"restartPolicyType": "on_failure",
"restartPolicyMaxRetries": 3,
"numReplicas": 1,
"healthcheckPath": "/",
"healthcheckTimeout": 30
}
}
```
## Scaling
As your stream grows:
1. **Increase Memory**: Railway Dashboard → Settings → Instance Size
2. **Add More Instances**: Set `numReplicas` in railway.json
3. **Add CDN**: Use Cloudflare in front of Railway
4. **Database Optimization**: Add indexes, optimize queries
## Cost Optimization
Railway charges per hour for usage:
- **CPU**: $0.07/month per 1 CPU per hour active
- **Memory**: $0.07/month per 1GB per hour active
Estimate: ~$5-15/month for a small streaming app
Tips:
- Stop unused projects
- Use Railway's free tier ($5 credit/month)
- Monitor resource usage in Metrics tab
- Optimize build size: Use production builds
## CI/CD
Railway automatically deploys when you push to main:
1. Push code to GitHub
2. Railway detects changes
3. Auto-builds and deploys
4. Preview deployments for pull requests
Disable auto-deploy: Railway Dashboard → Settings → Auto Deploy
## Useful Railway Commands
```bash
# View project status
railway status
# View logs
railway logs
# Open dashboard
railway open
# Set environment variable
railway variables set NEXT_PUBLIC_STREAM_URL=your-url
# Deploy specific branch
railway deploy --branch staging
```
## Next Steps
1. ✅ Deploy to Railway
2. ✅ Add custom domain
3. Implement real chat backend (Firebase/WebSocket)
4. Add user authentication
5. Set up analytics
6. Monitor stream performance
## Support
- Railway Docs: https://docs.railway.app
- Next.js on Railway: https://docs.railway.app/guides/nextjs
- Community: https://discord.gg/railway
---
**Your stream is now on Railway! 🚀**