Files
Blitz-Proxy/README-DOCKER.md

272 lines
5.0 KiB
Markdown

# Blitz Panel - Docker Setup
## 📋 Prerequisites
- Docker Engine 20.10+
- Docker Compose 2.0+
- At least 2GB RAM
- Ports available: 8000 (API), 443 (Hysteria2), 80 (HTTP)
## 🚀 Quick Start
### 1. Prepare Your Files
Make sure your directory structure looks like this:
```
Blitz/
├── core/
│ └── scripts/
│ ├── auth/
│ ├── db/
│ ├── hysteria2/
│ └── ... (other script folders)
├── api.py
├── cli_api.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── .dockerignore
```
### 2. Build and Run
```bash
# Build and start containers
docker-compose up -d --build
# Check logs
docker-compose logs -f blitz-api
# Check if services are running
docker-compose ps
```
### 3. Test the API
```bash
# Health check
curl http://localhost:8000/health
# Get API docs (interactive)
open http://localhost:8000/docs
```
## 📚 API Endpoints
### User Management
```bash
# List all users
curl http://localhost:8000/api/v1/users
# Get specific user
curl http://localhost:8000/api/v1/users/john
# Create user
curl -X POST http://localhost:8000/api/v1/users \
-H "Content-Type: application/json" \
-d '{
"username": "john",
"traffic_limit": 100,
"expiration_days": 30,
"unlimited": false
}'
# Edit user
curl -X PUT http://localhost:8000/api/v1/users/john \
-H "Content-Type: application/json" \
-d '{
"new_traffic_limit": 200,
"renew_creation_date": true
}'
# Delete user
curl -X DELETE http://localhost:8000/api/v1/users/john
# Get user URI
curl http://localhost:8000/api/v1/users/john/uri?qrcode=false
```
### Hysteria2 Management
```bash
# Install Hysteria2
curl -X POST http://localhost:8000/api/v1/hysteria2/install \
-H "Content-Type: application/json" \
-d '{
"port": 443,
"sni": "example.com"
}'
# Restart Hysteria2
curl -X POST http://localhost:8000/api/v1/hysteria2/restart
# Get current port
curl http://localhost:8000/api/v1/hysteria2/config/port
# Change port
curl -X PUT http://localhost:8000/api/v1/hysteria2/config/port \
-H "Content-Type: application/json" \
-d '{"port": 8443}'
# Enable obfuscation
curl -X POST http://localhost:8000/api/v1/hysteria2/obfs/enable
```
### Traffic & Stats
```bash
# Get traffic status
curl http://localhost:8000/api/v1/traffic/status
# Get server info
curl http://localhost:8000/api/v1/info/server
# Get services status
curl http://localhost:8000/api/v1/info/services
```
## 🛠️ Development Mode
To run in development with auto-reload:
```bash
# Run API locally (not in Docker)
source /etc/hysteria/hysteria2_venv/bin/activate
cd /path/to/Blitz
uvicorn api:app --reload --host 0.0.0.0 --port 8000
```
## 🐛 Troubleshooting
### Container won't start
```bash
# Check logs
docker-compose logs blitz-api
# Check MongoDB
docker-compose logs mongodb
# Restart services
docker-compose restart
```
### Permission issues
```bash
# Fix permissions for scripts
docker-compose exec blitz-api bash
find /etc/hysteria/core/scripts -type f -name "*.sh" -exec chmod +x {} \;
find /etc/hysteria/core/scripts -type f -name "*.py" -exec chmod +x {} \;
```
### Network issues
```bash
# Check if ports are available
sudo netstat -tlnp | grep -E ':(8000|443|80)'
# If ports are in use, change them in docker-compose.yml
```
### Reset everything
```bash
# Stop and remove everything
docker-compose down -v
# Remove volumes (WARNING: deletes all data)
docker volume rm blitz_mongodb_data blitz_config blitz_certs
# Rebuild
docker-compose up -d --build
```
## 📊 Monitoring
```bash
# Watch logs in real-time
docker-compose logs -f
# Check resource usage
docker stats
# Execute commands in container
docker-compose exec blitz-api bash
```
## 🔒 Production Deployment
For production, modify `docker-compose.yml`:
1. **Add authentication** to the API (JWT, API keys)
2. **Use HTTPS** with proper SSL certificates
3. **Set up reverse proxy** (nginx/traefik)
4. **Configure firewall** rules
5. **Enable MongoDB authentication**
6. **Set resource limits**
Example production additions:
```yaml
# In docker-compose.yml
services:
blitz-api:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
environment:
- API_KEY=your-secret-key
```
## 📝 Notes
- Default API runs on port 8000
- MongoDB stores data in named volume `mongodb_data`
- Configs persist in `blitz_config` volume
- All scripts from `core/` are copied into container
- Health check runs every 30 seconds
## 🤝 Common Tasks
### Backup
```bash
# Backup MongoDB data
docker-compose exec mongodb mongodump --out /data/backup
# Copy backup out
docker cp blitz-mongodb:/data/backup ./backup
```
### Update
```bash
# Pull latest code
git pull
# Rebuild
docker-compose up -d --build
```
### Scale
To run multiple instances (load balancing):
```bash
docker-compose up -d --scale blitz-api=3
```
## 🆘 Support
- Check logs: `docker-compose logs -f`
- Interactive docs: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc