Files
claude-code-router/docs/docs/server/deployment.md
musistudio bd55450b1d change doc
2025-12-28 13:43:25 +08:00

3.5 KiB

title
title
Server Deployment

Server Deployment

Claude Code Router Server supports multiple deployment methods, from local development to production environments.

Using Docker Hub Image

docker run -d \
  --name claude-code-router \
  -p 3456:3456 \
  -v ~/.claude-code-router:/app/.claude-code-router \
  musistudio/claude-code-router:latest

Using Docker Compose

Create docker-compose.yml:

version: '3.8'
services:
  claude-code-router:
    image: musistudio/claude-code-router:latest
    container_name: claude-code-router
    ports:
      - "3456:3456"
    volumes:
      - ./config:/app/.claude-code-router
    environment:
      - LOG_LEVEL=info
      - HOST=0.0.0.0
      - PORT=3456
    restart: unless-stopped

Start the service:

docker-compose up -d

Custom Build

Build Docker image from source:

git clone https://github.com/musistudio/claude-code-router.git
cd claude-code-router
docker build -t claude-code-router:latest .

Configuration File Mounting

Mount configuration file into container:

docker run -d \
  --name claude-code-router \
  -p 3456:3456 \
  -v $(pwd)/config.json:/app/.claude-code-router/config.json \
  musistudio/claude-code-router:latest

Configuration file example:

{
  // Server configuration
  "HOST": "0.0.0.0",
  "PORT": 3456,
  "APIKEY": "your-api-key-here",

  // Logging configuration
  "LOG": true,
  "LOG_LEVEL": "info",

  // LLM provider configuration
  "Providers": [
    {
      "name": "openai",
      "baseUrl": "https://api.openai.com/v1",
      "apiKey": "$OPENAI_API_KEY",
      "models": ["gpt-4", "gpt-3.5-turbo"]
    }
  ],

  // Routing configuration
  "Router": {
    "default": "openai,gpt-4"
  }
}

Environment Variables

Override configuration through environment variables:

Variable Description Default
HOST Listen address 127.0.0.1
PORT Listen port 3456
APIKEY API key -
LOG_LEVEL Log level debug
LOG Enable logging true

Production Recommendations

1. Use Reverse Proxy

Use Nginx as reverse proxy:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3456;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

2. Configure HTTPS

Use Let's Encrypt to obtain free certificate:

sudo certbot --nginx -d your-domain.com

3. Log Management

Configure log rotation and persistence:

version: '3.8'
services:
  claude-code-router:
    image: musistudio/claude-code-router:latest
    volumes:
      - ./logs:/app/.claude-code-router/logs
    environment:
      - LOG_LEVEL=warn

4. Health Check

Configure Docker health check:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:3456/api/config"]
  interval: 30s
  timeout: 10s
  retries: 3

Access Web UI

After deployment is complete, access the Web UI:

http://localhost:3456/ui/

Through the Web UI you can:

  • View and manage configuration
  • Monitor logs
  • Check service status

Secondary Development

If you need to develop based on CCR Server, please see API Reference.