Files
Blitz-Proxy/README-DOCKER.md

5.0 KiB

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

# 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

# Health check
curl http://localhost:8000/health

# Get API docs (interactive)
open http://localhost:8000/docs

📚 API Endpoints

User Management

# 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

# 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

# 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:

# 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

# Check logs
docker-compose logs blitz-api

# Check MongoDB
docker-compose logs mongodb

# Restart services
docker-compose restart

Permission issues

# 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

# 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

# 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

# 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:

# 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

# Backup MongoDB data
docker-compose exec mongodb mongodump --out /data/backup

# Copy backup out
docker cp blitz-mongodb:/data/backup ./backup

Update

# Pull latest code
git pull

# Rebuild
docker-compose up -d --build

Scale

To run multiple instances (load balancing):

docker-compose up -d --scale blitz-api=3

🆘 Support