This commit is contained in:
magdo
2025-11-25 20:53:34 +01:00
parent 5b7e361c21
commit 18e213bc31
357 changed files with 0 additions and 67989 deletions
+203
View File
@@ -0,0 +1,203 @@
# SerpentRace Production Deployment Guide
## Overview
This package contains everything needed to deploy SerpentRace in a production environment using pre-built Docker images.
## Package Contents
- `serpentRaceDocker.tar` - All Docker images packed for deployment
- `docker-compose.deploy.yml` - Production Docker Compose configuration
- `.env.server` - Environment variables template for production
- `load-images.bat` - Automated deployment script for Windows servers
- `README.md` - This deployment guide
## System Requirements
- Windows Server 2016+ or Windows 10/11
- Docker Desktop or Docker Engine
- Docker Compose
- Minimum 4GB RAM, 20GB free disk space
- Network ports: 80, 443, 3000, 5432, 6379, 9000, 9001
## Pre-Deployment Configuration
### 1. Environment Variables
Edit `.env.server` and update the following **REQUIRED** settings:
```bash
# Database - Use a strong password
POSTGRES_PASSWORD=your_strong_database_password
# JWT Security - Use a random 32+ character string
JWT_SECRET=your_super_secret_jwt_key_32_chars_minimum
# Redis Security
REDIS_PASSWORD=your_redis_password
# MinIO Storage
MINIO_ACCESS_KEY=your_minio_admin_user
MINIO_SECRET_KEY=your_minio_secret_key
# Email Configuration (for notifications)
EMAIL_HOST=smtp.yourmailprovider.com
EMAIL_USER=your_email@yourdomain.com
EMAIL_PASS=your_email_password
EMAIL_FROM="SerpentRace <noreply@yourdomain.com>"
# Application URL
APP_BASE_URL=http://your-domain.com
```
### 2. Security Checklist
- [ ] Changed all default passwords
- [ ] Generated strong JWT secret (32+ characters)
- [ ] Configured email settings
- [ ] Updated domain name in APP_BASE_URL
- [ ] Configured firewall rules
- [ ] Planned SSL certificate setup
## Deployment Steps
### Automatic Deployment (Recommended)
1. Extract all files to your server directory
2. Edit `.env.server` with your configuration
3. Run `load-images.bat`
4. Follow the prompts
### Manual Deployment
1. Load Docker images:
```cmd
docker load -i serpentRaceDocker.tar
```
2. Start services:
```cmd
docker-compose -f docker-compose.deploy.yml --env-file .env.server up -d
```
## Post-Deployment
### Verify Services
Check that all services are running:
```cmd
docker-compose -f docker-compose.deploy.yml ps
```
### Access Points
- **Frontend Application**: http://localhost (or your domain)
- **Backend API**: http://localhost:3000
- **MinIO Console**: http://localhost:9001
- **Database**: localhost:5432 (internal access only)
### Initial Setup
1. Access the frontend and verify it loads
2. Test user registration and login
3. Check backend API health: http://localhost:3000/health
4. Access MinIO console to verify storage
### Security Hardening
#### Firewall Configuration
Open only necessary ports:
- Port 80 (HTTP) - Public
- Port 443 (HTTPS) - Public (when SSL configured)
- Ports 3000, 5432, 6379, 9000, 9001 - Internal/VPN only
#### SSL/TLS Setup
1. Obtain SSL certificates (Let's Encrypt, commercial CA)
2. Configure nginx for HTTPS in the frontend container
3. Update APP_BASE_URL to use https://
#### Regular Maintenance
- Monitor logs: `docker-compose -f docker-compose.deploy.yml logs -f`
- Update images periodically
- Backup database and MinIO data
- Monitor disk space and performance
## Management Commands
### View Logs
```cmd
# All services
docker-compose -f docker-compose.deploy.yml logs -f
# Specific service
docker-compose -f docker-compose.deploy.yml logs -f backend
```
### Restart Services
```cmd
# Restart all
docker-compose -f docker-compose.deploy.yml restart
# Restart specific service
docker-compose -f docker-compose.deploy.yml restart backend
```
### Stop Services
```cmd
docker-compose -f docker-compose.deploy.yml down
```
### Update Deployment
1. Stop current services
2. Load new images
3. Start services with new configuration
## Backup Strategy
### Database Backup
```cmd
docker exec serpentrace-postgres pg_dump -U postgres serpentrace > backup_$(date +%Y%m%d).sql
```
### Complete Backup
```cmd
# Stop services
docker-compose -f docker-compose.deploy.yml down
# Backup volumes
docker run --rm -v postgres_data:/data -v %cd%:/backup ubuntu tar czf /backup/postgres_backup.tar.gz -C /data .
docker run --rm -v minio_data:/data -v %cd%:/backup ubuntu tar czf /backup/minio_backup.tar.gz -C /data .
# Restart services
docker-compose -f docker-compose.deploy.yml up -d
```
## Troubleshooting
### Common Issues
#### Services Not Starting
1. Check Docker is running
2. Verify port availability
3. Check environment variables
4. Review logs for specific errors
#### Database Connection Issues
1. Verify POSTGRES_PASSWORD matches in .env.server
2. Check database container is healthy
3. Ensure network connectivity
#### Frontend Not Loading
1. Check nginx container status
2. Verify backend API is responding
3. Check browser console for errors
#### Performance Issues
1. Monitor resource usage: `docker stats`
2. Check available disk space
3. Review application logs
4. Consider scaling if needed
### Getting Help
- Check application logs for specific error messages
- Verify all environment variables are set correctly
- Ensure all required ports are available
- Contact support with log files and configuration details
## Version Information
- SerpentRace Backend: Latest
- Frontend: Latest
- PostgreSQL: 15-alpine
- Redis: 7-alpine
- MinIO: Latest
- Nginx: Alpine