mirror of
https://github.com/hotheadhacker/seedbox-lite.git
synced 2025-09-02 00:51:36 +03:00
306 lines
6.8 KiB
Markdown
306 lines
6.8 KiB
Markdown
# SeedBox Lite - Docker Deployment Guide
|
|
|
|
This guide covers deploying SeedBox Lite using Docker Compose for different environments.
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Development Environment
|
|
```bash
|
|
# Clone the repository
|
|
git clone <your-repo-url> seedbox-lite
|
|
cd seedbox-lite
|
|
|
|
# Start development environment with hot reload
|
|
docker-compose up --build
|
|
```
|
|
|
|
### Production Environment
|
|
```bash
|
|
# Start production environment with nginx proxy
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml --profile production up --build -d
|
|
```
|
|
|
|
## 📁 File Structure
|
|
|
|
```
|
|
seedbox-lite/
|
|
├── docker-compose.yml # Main compose file
|
|
├── docker-compose.override.yml # Development overrides
|
|
├── docker-compose.prod.yml # Production overrides
|
|
├── nginx/
|
|
│ └── nginx.conf # Production nginx config
|
|
├── server/
|
|
│ ├── Dockerfile # Backend production image
|
|
│ ├── .dockerignore # Backend ignore patterns
|
|
│ └── .env.docker # Backend docker env vars
|
|
└── client/
|
|
├── Dockerfile # Frontend production image
|
|
├── Dockerfile.dev # Frontend development image
|
|
├── nginx.conf # Frontend nginx config
|
|
├── .dockerignore # Frontend ignore patterns
|
|
└── .env.production # Frontend production env vars
|
|
```
|
|
|
|
## 🛠 Configuration
|
|
|
|
### Environment Variables
|
|
|
|
#### Backend (.env.docker)
|
|
```bash
|
|
NODE_ENV=production
|
|
SERVER_PORT=3001
|
|
SERVER_HOST=0.0.0.0
|
|
FRONTEND_URL=https://<domain>
|
|
ACCESS_PASSWORD=test123456
|
|
```
|
|
|
|
#### Frontend (.env.production)
|
|
```bash
|
|
VITE_API_BASE_URL=https://seedbox-api.<domain>
|
|
```
|
|
|
|
### Custom Configuration
|
|
1. Update domain names in environment files
|
|
2. Modify `ACCESS_PASSWORD` for security
|
|
3. Configure SSL certificates for HTTPS (see nginx config)
|
|
|
|
## 🌐 Deployment Scenarios
|
|
|
|
### 1. Local Development
|
|
```bash
|
|
# Start with hot reload and file watching
|
|
docker-compose up --build
|
|
|
|
# Access:
|
|
# Frontend: http://localhost:5174
|
|
# Backend: http://localhost:3001
|
|
```
|
|
|
|
### 2. Production without Reverse Proxy
|
|
```bash
|
|
# Start frontend and backend only
|
|
docker-compose up --build -d seedbox-frontend seedbox-backend
|
|
|
|
# Access:
|
|
# Frontend: http://localhost:5174
|
|
# Backend: http://localhost:3001
|
|
```
|
|
|
|
### 3. Production with Nginx Reverse Proxy
|
|
```bash
|
|
# Start all services including nginx
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml --profile production up --build -d
|
|
|
|
# Access:
|
|
# Application: http://localhost
|
|
# All API calls proxied through nginx
|
|
```
|
|
|
|
### 4. Custom Ports
|
|
```bash
|
|
# Override ports in docker-compose.override.yml or use environment variables
|
|
FRONTEND_PORT=8080 BACKEND_PORT=8081 docker-compose up
|
|
```
|
|
|
|
## 🔧 Container Details
|
|
|
|
### Backend Container (seedbox-backend)
|
|
- **Base Image**: node:18-alpine
|
|
- **Port**: 3001
|
|
- **Volumes**:
|
|
- `seedbox_data:/app/data` (torrent data)
|
|
- `seedbox_cache:/app/cache` (cache storage)
|
|
- `./server/logs:/app/logs` (application logs)
|
|
- **Health Check**: GET /api/health
|
|
|
|
### Frontend Container (seedbox-frontend)
|
|
- **Base Image**: nginx:alpine (production) / node:18-alpine (development)
|
|
- **Port**: 80 (production) / 5174 (development)
|
|
- **Features**:
|
|
- Gzip compression
|
|
- Static file caching
|
|
- Security headers
|
|
- React Router support
|
|
|
|
### Nginx Proxy Container (nginx)
|
|
- **Base Image**: nginx:alpine
|
|
- **Ports**: 80, 443
|
|
- **Features**:
|
|
- Rate limiting
|
|
- SSL termination (when configured)
|
|
- API and frontend routing
|
|
- CORS handling
|
|
|
|
## 📊 Monitoring & Logs
|
|
|
|
### View Logs
|
|
```bash
|
|
# All services
|
|
docker-compose logs -f
|
|
|
|
# Specific service
|
|
docker-compose logs -f seedbox-backend
|
|
docker-compose logs -f seedbox-frontend
|
|
```
|
|
|
|
### Health Checks
|
|
```bash
|
|
# Check container health
|
|
docker-compose ps
|
|
|
|
# Manual health check
|
|
curl http://localhost:3001/api/health # Backend
|
|
curl http://localhost:5174/health # Frontend
|
|
```
|
|
|
|
### Volume Management
|
|
```bash
|
|
# List volumes
|
|
docker volume ls
|
|
|
|
# Inspect volume
|
|
docker volume inspect seedbox-lite_seedbox_data
|
|
|
|
# Backup volume
|
|
docker run --rm -v seedbox-lite_seedbox_data:/data -v $(pwd):/backup alpine tar czf /backup/seedbox_data_backup.tar.gz -C /data .
|
|
```
|
|
|
|
## 🔒 Security Features
|
|
|
|
### Container Security
|
|
- Non-root user execution
|
|
- Minimal base images (Alpine Linux)
|
|
- Security headers configured
|
|
- Rate limiting enabled
|
|
|
|
### Network Security
|
|
- Isolated Docker network
|
|
- CORS properly configured
|
|
- SSL support ready (certificates needed)
|
|
|
|
### Data Security
|
|
- Named volumes for persistent data
|
|
- Proper file permissions
|
|
- Log rotation configured
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### 1. Port Conflicts
|
|
```bash
|
|
# Check if ports are in use
|
|
lsof -i :3001
|
|
lsof -i :5174
|
|
|
|
# Use different ports
|
|
FRONTEND_PORT=8080 BACKEND_PORT=8081 docker-compose up
|
|
```
|
|
|
|
#### 2. Permission Issues
|
|
```bash
|
|
# Fix volume permissions
|
|
docker-compose exec seedbox-backend chown -R nodejs:nodejs /app/data /app/cache
|
|
```
|
|
|
|
#### 3. Build Failures
|
|
```bash
|
|
# Clean rebuild
|
|
docker-compose down --volumes
|
|
docker system prune -f
|
|
docker-compose build --no-cache
|
|
```
|
|
|
|
#### 4. Network Issues
|
|
```bash
|
|
# Recreate network
|
|
docker-compose down
|
|
docker network prune
|
|
docker-compose up
|
|
```
|
|
|
|
### Debug Mode
|
|
```bash
|
|
# Run with debug output
|
|
DEBUG=* docker-compose up
|
|
|
|
# Shell into container
|
|
docker-compose exec seedbox-backend sh
|
|
docker-compose exec seedbox-frontend sh
|
|
```
|
|
|
|
## 🔄 Updates & Maintenance
|
|
|
|
### Update Application
|
|
```bash
|
|
# Pull latest code
|
|
git pull
|
|
|
|
# Rebuild and restart
|
|
docker-compose down
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Cleanup
|
|
```bash
|
|
# Remove stopped containers
|
|
docker-compose down --remove-orphans
|
|
|
|
# Clean unused images
|
|
docker image prune -f
|
|
|
|
# Full cleanup (caution: removes volumes)
|
|
docker-compose down --volumes
|
|
docker system prune -a -f
|
|
```
|
|
|
|
## 📝 Production Checklist
|
|
|
|
- [ ] Update domain names in environment files
|
|
- [ ] Change default passwords
|
|
- [ ] Configure SSL certificates
|
|
- [ ] Set up log rotation
|
|
- [ ] Configure monitoring
|
|
- [ ] Test backup and restore procedures
|
|
- [ ] Configure firewall rules
|
|
- [ ] Set up automated updates
|
|
|
|
## 🌍 Scaling & Performance
|
|
|
|
### Horizontal Scaling
|
|
```bash
|
|
# Scale backend instances
|
|
docker-compose up --scale seedbox-backend=3
|
|
|
|
# Use nginx load balancing (update nginx.conf)
|
|
upstream backend {
|
|
server seedbox-backend_1:3001;
|
|
server seedbox-backend_2:3001;
|
|
server seedbox-backend_3:3001;
|
|
}
|
|
```
|
|
|
|
### Resource Limits
|
|
Add to docker-compose.yml:
|
|
```yaml
|
|
services:
|
|
seedbox-backend:
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '1.0'
|
|
memory: 1G
|
|
reservations:
|
|
cpus: '0.5'
|
|
memory: 512M
|
|
```
|
|
|
|
## 🤝 Support
|
|
|
|
For issues and questions:
|
|
1. Check the troubleshooting section
|
|
2. Review container logs
|
|
3. Ensure all environment variables are set correctly
|
|
4. Verify network connectivity between containers
|