Skip to main content

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:

VariableDescriptionDefault
HOSTListen address127.0.0.1
PORTListen port3456
APIKEYAPI key-
LOG_LEVELLog leveldebug
LOGEnable loggingtrue

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.