独家合作CubenceAI 中转平台立减 10%访问

快速开始

手动部署

手动部署让你完全控制运行环境,适合有特定基础设施需求或需要自定义部署环境的场景。

环境要求

在开始之前,你需要准备以下环境:

  • Bun 1.3+ 或 Node.js 20+
  • PostgreSQL 13+
  • Redis 6+

提示

如果你还没有安装 Bun,可以通过以下命令安装:

curl -fsSL https://bun.sh/install | bash

快速开始

1. 克隆项目

git clone https://github.com/ding113/claude-code-hub.git
cd claude-code-hub

2. 安装依赖

bun install

3. 配置环境变量

cp .env.example .env

编辑 .env 文件,至少配置以下必需变量:

# 管理员令牌(必须修改,不能保留默认值)
ADMIN_TOKEN=your-secure-token-here

# PostgreSQL 连接字符串
DSN=postgres://user:password@localhost:5432/claude_code_hub

# Redis 连接地址
REDIS_URL=redis://localhost:6379

4. 构建应用

CI=true bun run build

为什么需要 CI=true?

构建时设置 CI=true 会跳过数据库初始化检查。这是因为构建阶段不需要真实的数据库连接,DSN 和 REDIS_URL 可以使用占位符值。

5. 启动应用

bun run start

应用默认监听端口 23000。访问 http://localhost:23000 即可进入管理后台。

必需环境变量

变量名说明示例
ADMIN_TOKEN后台登录令牌,部署前必须修改your-secure-token
DSNPostgreSQL 连接字符串postgres://user:pass@host:5432/db
REDIS_URLRedis 连接地址redis://localhost:6379

重要可选配置

变量名默认值说明
AUTO_MIGRATEtrue启动时自动执行数据库迁移
PORT23000应用监听端口
NODE_ENVdevelopment运行环境,生产环境设为 production
DB_POOL_MAX20 (prod) / 10 (dev)PostgreSQL 连接池上限
ENABLE_RATE_LIMITtrue是否启用限流功能

生产环境建议

首次部署后建议将 AUTO_MIGRATE 设为 false,使用 Drizzle CLI 手动管理迁移,避免意外变更数据库结构。

数据库管理

生成迁移

当你修改了 src/drizzle/schema.ts 后,需要生成新的迁移文件:

bun run db:generate

手动执行迁移

bun run db:migrate

开发环境快速同步

bun run db:push

注意

db:push 仅适用于开发环境,它会直接修改数据库结构而不生成迁移文件。

打开 Drizzle Studio

bun run db:studio

生产部署

使用 systemd 管理服务

创建 /etc/systemd/system/claude-code-hub.service

[Unit]
Description=Claude Code Hub
After=network.target postgresql.service redis.service

[Service]
Type=simple
User=cch
WorkingDirectory=/opt/claude-code-hub
Environment=NODE_ENV=production
Environment=PORT=23000
Environment=ADMIN_TOKEN=your-secure-token
Environment=DSN=postgres://cch:password@localhost:5432/claude_code_hub
Environment=REDIS_URL=redis://localhost:6379
Environment=AUTO_MIGRATE=false
ExecStart=/usr/bin/bun run start
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl enable claude-code-hub
sudo systemctl start claude-code-hub

Nginx 反向代理配置

server {
    listen 80;
    server_name your-domain.com;
    
    location / {
        proxy_pass http://localhost:23000;
        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_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        proxy_read_timeout 86400;
    }
}

升级流程

# 1. 备份数据库
pg_dump -U postgres claude_code_hub > backup_$(date +%Y%m%d).sql

# 2. 拉取最新代码
git pull origin main

# 3. 安装依赖
bun install

# 4. 构建
CI=true bun run build

# 5. 执行迁移(如果 AUTO_MIGRATE=false)
bun run db:migrate

# 6. 重启服务
sudo systemctl restart claude-code-hub

故障排查

数据库连接失败

应用启动时会重试连接数据库,最多 30 次,每次间隔 2 秒。如果仍然失败,请检查:

  • DSN 格式是否正确
  • PostgreSQL 服务是否运行
  • 网络连接是否正常
  • 防火墙是否允许连接

Redis 不可用

平台采用 Fail-Open 策略:当 Redis 不可用时,限流和 Session 统计会自动降级,但核心代理功能不受影响。建议尽快恢复 Redis 服务。

健康检查

应用提供健康检查端点:

curl http://localhost:23000/api/actions/health

可用于负载均衡器的健康检查配置。

与 Docker 部署对比

特性手动部署Docker Compose
灵活性高,完全控制环境中,受容器限制
资源占用低,无容器开销中,有容器开销
环境一致性需自行保证高,容器隔离
调试便利性高,直接访问中,需进入容器
升级复杂度较高低,一键更新

选择手动部署的场景:

  • 已有成熟的基础设施
  • 需要与其他服务深度集成
  • 对性能有极致要求
  • 团队有运维经验

选择 Docker Compose 的场景:

  • 快速部署或测试
  • 环境隔离要求高
  • 团队运维经验有限
  • 需要快速扩缩容

下一步

Previous
Docker Compose 部署