Please enable Javascript to view the contents

在服务器上使用 claude-code

 ·  ☕ 3 分钟

按照方式同样适用于桌面环境。

1. 准备 node.js 环境

  • 安装 nvm
1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
1
2
echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
1
source ~/.bashrc
  • 查看 nvm 版本
1
nvm --version
  • 安装 node.js
1
nvm install 20
  • 升级 npm
1
npm install -g npm

2. 安装 claude-code

  • 安装包
1
npm install -g @anthropic-ai/claude-code
  • 查看版本
1
claude --version
1
1.0.96 (Claude Code)

3. 安装 claude-code-router

claude-code 目前仅能调用 Claude 的 API。使用 claude-code-router 启动 claude-code 能够对接第三方 API。

  • 安装
1
npm install -g @musistudio/claude-code-router
  • 配置环境变量
1
2
export API_BASE_URL=https://xxx.com/v1/chat/completions
export API_KEY=sk-xxx
  • 生成配置文件
1
mkdir -p ~/.claude-code-router
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cat > ~/.claude-code-router/config.json <<EOF
{
  "LOG": true,
  "LOG_LEVEL": "trace",
  "HOST": "127.0.0.1",
  "PORT": 3456,
  "API_TIMEOUT_MS": "600000",
  "Providers": [
    {
      "name": "oneapi",
      "api_base_url": "${API_BASE_URL}",
      "api_key": "${API_KEY}",
      "models": [
        "deepseek-v3",
        "deepseek-r1"
      ],
      "transformer": {
        "use": [
          [
            "maxtoken",
            {
              "max_tokens": 16384
            }
          ]
        ]
      }
    }
  ],
  "Router": {
    "default": "oneapi,deepseek-v3",
    "think": "oneapi,deepseek-r1"
  }
}
EOF

重启生效

1
ccr restart

其他配置可以参考 https://github.com/musistudio/claude-code-router/blob/main/README_zh.md

4. 使用 claude code

claude-code-router 提供的 ccr code 命令与 claude-code 提供的 claude 命令是一样的使用方式。

4.1 交互式

1
ccr code

输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
   Enter to confirm · Esc to exit
╭───────────────────────────────────────────────────╮
│ ✻ Welcome to Claude Code!                         │
│                                                   │
│   /help for help, /status for your current setup  │
│                                                   │
│   cwd: /root                                      │
│                                                   │
│   ─────────────────────────────────────────────── │
│                                                   │
│   Overrides (via env):                            │
│                                                   │
│   • API timeout: 600000ms                         │
│   • API Base URL: http://127.0.0.1:3456           │
╰───────────────────────────────────────────────────╯

╭────────────────────────────────────────────────────────────────────────────────────────╮
│ >帮我检查当前节点上 GPU 卡的状态                                                           │
╰────────────────────────────────────────────────────────────────────────────────────────╯

4.2 无交互

1
ccr code -p "怎么样给k8s集群续证书"

输出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    Service not running, starting service...
    给Kubernetes集群续证书主要涉及以下几个步骤:

    1. 检查当前证书有效期:
    ```bash
    kubeadm alpha certs check-expiration
    ````

    2. 续订所有证书(控制平面):

    ```bash
    kubeadm alpha certs renew all
    ```

    3. 重启控制平面组件:

    ```bash
    docker restart $(docker ps | grep kube-apiserver | awk '{print $1}')
    docker restart $(docker ps | grep kube-controller-manager | awk '{print $1}')
    docker restart $(docker ps | grep kube-scheduler | awk '{print $1}')
    ```

    4. 更新 kubeconfig 文件:

    ```bash
    kubeadm alpha kubeconfig user --org system:masters --client-name kubernetes-admin
    ```

    5. 验证新证书:

    ```bash
    openssl x509 -noout -text -in /etc/kubernetes/pki/apiserver.crt | grep Not
    ```

    注意:

    - 这些操作需要在 master 节点上执行
    - 如果是高可用集群,需要在所有 master 节点上执行
    - 续订操作不会影响正在运行的 pod 和服务
    claude code router service has been successfully stopped.

如果需要在主机上执行命令,这种方式不太好使,因为需要人工确认而终止。如果是非 root 用户,可以加上 --permission-mode bypassPermissions 跳过权限检查。


微信公众号
作者
微信公众号