在ubuntu中从零开始配置claude Code
最后,在日常使用中只要用这三个指令即可终端 1:该指令是启动LiteLLMllmup终端 2:该指令是在指定目录下启动claude Codecd /你的项目目录ccup。
使用的环境和工具:VMware上的ubuntu22.04
内存:8GB
CPU:4 核
虚拟磁盘:至少 50GB,最好 60GB+
Ubuntu 根分区 /:至少40GB
注: 下列内容需按步骤进行,若不存在分区太小的情况,可以直接从第二部分开始
本文主要实现内容:
在ubuntu系统中以npm+LiteLLM+国产大模型,实现claude Code的安装和配置
如果磁盘分区太小可以先在VMware中修改磁盘大小,如下图所示
然后再进行下述操作
Claude Code 官方当前支持原生安装和 npm 安装;npm 安装需要 Node.js 18+。本文采用的是 npm 安装。
1. 根分区扩容
扩容部分的适用场景
- Ubuntu 22.04
- VMware 虚拟机
- 磁盘已经在 VMware 里扩到较大,比如 40G、60G、72G
- 但 Ubuntu 根分区仍然很小,比如 10G
注: 如果读者根分区充足可以忽略第一部分从第二部分开始看
先执行下面这组命令,适用于 VMware 磁盘已经变大,但 Ubuntu 根分区没跟着变大 的情况。
lsblk
sudo fdisk -l
sudo pvs
sudo vgs
sudo lvs
如果你看到类似:
/dev/sda已经是 40G、60G、72G/dev/sda3是 LVM 分区- 根卷是
/dev/mapper/ubuntu--vg-ubuntu--lv
就继续执行。
1.1 安装扩分区工具
sudo apt update
sudo apt install -y cloud-guest-utils gdisk lvm2
1.2 修正 GPT 并扩第 3 分区
sudo sgdisk -e /dev/sda
sudo reboot
重启回来后执行:
sudo TMPDIR=/dev/shm growpart /dev/sda 3
如果看到 CHANGED: partition=3 ...,说明分区已经扩成功。
1.3 如果根分区已满,先释放一点空间
sudo rm -rf /var/lib/apt/lists/*
sudo rm -rf /var/cache/apt/archives/*.deb
sudo rm -rf /var/cache/apt/archives/partial/*
sudo rm -f /var/log/*.gz
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
sudo truncate -s 0 /var/log/auth.log
rm -rf ~/.cache/*
df -h /
1.4 扩 LVM
如果 pvs 里还能看到旧大小,继续:
sudo mkdir -p /etc/lvm/archive
sudo mkdir -p /etc/lvm/backup
sudo pvresize /dev/sda3
sudo lvextend -l +100%FREE -r /dev/mapper/ubuntu--vg-ubuntu--lv
检查结果:
df -h
lsblk
sudo pvs
sudo vgs
sudo lvs
如果成功,你的 / 应该已经从 10G 变成几十 G。
2.配置网络环境
此处需要科学上网才能下载(仅安装时,连接US地区的网络)
该部分内容仅限于虚拟机的网络配置
# 打开bashrc文件
nano ~/.bashrc
# 修改全局配置连接网络
# 这里的 IP 应该是你 Windows 宿主机在虚拟机网络中的网关 IP,通常是 192.168.x.1 或者你设置的 NAT IP
# 假设 Windows IP 是 192.168.108.1,代理端口是7890(可以在科学上网工具中查看)
export http_proxy="http://192.168.108.1:10090"
export https_proxy="http://192.168.108.1:10090"
# 使bashrc修改部分生效
source ~/.bashrc
补充
claude Code官方推荐的安装方式(可以在网络配置后执行)
curl -fsSL https://claude.ai/install.sh | bash
安装后检查:
claude --version
- 上述内容如果安装成功可以执行下述语句,然后直接跳到第6部分继续执行
sudo apt update
sudo apt install python3 python3-venv python3-pip
- 如果安装失败就按顺序往下执行
3. 安装系统依赖
sudo apt update
sudo apt install -y curl git jq python3 python3-venv python3-pip ca-certificates gnupg
4. 安装 Node 20
Claude Code 的 npm 安装要求 Node.js 18 或更高。
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
nvm alias default 20
node -v
npm -v
which node
which npm
5. 安装 Claude Code
下面的安装过程有点长请耐心等待,作者自己安装时花了20多分钟,由于网络原因读者自行斟酌时间
npm cache clean --force
npm install -g @anthropic-ai/claude-code
出现如下图情况,就代表安装好了
验证:
which claude
claude --version
claude doctor
若配置成功,则如下图所示
6. 安装 LiteLLM
LiteLLM 官方支持通过 litellm --config ... 启动代理。
mkdir -p "$HOME/ai-gateway"
python3 -m venv "$HOME/litellm_env"
source "$HOME/litellm_env/bin/activate"
python -m pip install --upgrade pip
pip install "litellm[proxy]" "httpx[socks]"
7. 写入环境变量
把下面这段直接执行,但先把两个占位值替换成自己的。
grep -q 'export MODEL_SQUARE_API_BASE=' ~/.bashrc || echo 'export MODEL_SQUARE_API_BASE="自己的_API_BASE"' >> ~/.bashrc
grep -q 'export MODEL_SQUARE_API_KEY=' ~/.bashrc || echo 'export MODEL_SQUARE_API_KEY="自己的API_KEY"' >> ~/.bashrc
grep -q 'export LITELLM_MASTER_KEY=' ~/.bashrc || echo 'export LITELLM_MASTER_KEY="sk-litellm-local"' >> ~/.bashrc
grep -q 'export NO_PROXY=' ~/.bashrc || echo 'export NO_PROXY="127.0.0.1,localhost"' >> ~/.bashrc
grep -q 'export no_proxy=' ~/.bashrc || echo 'export no_proxy="127.0.0.1,localhost"' >> ~/.bashrc
grep -q 'export PATH="$HOME/bin:$PATH"' ~/.bashrc || echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
检查:
echo "$MODEL_SQUARE_API_BASE"
echo "$MODEL_SQUARE_API_KEY"
echo "$LITELLM_MASTER_KEY"
8. config.yaml设置
LiteLLM 官方支持在 config.yaml 里设置 model_list、general_settings.master_key 和 litellm_settings.drop_params。
此处我的是按“统一模型广场 base/key”的方式写的,读者若有多个base/key可以分开写。
cat > "$HOME/ai-gateway/config.yaml" <<'EOF'
model_list:
- model_name: gpt-4-qwen
litellm_params:
model: dashscope/qwen3.6-plus
api_base: os.environ/MODEL_SQUARE_API_BASE
api_key: os.environ/MODEL_SQUARE_API_KEY
- model_name: gpt-4-glm
litellm_params:
model: openai/glm-5.1
api_base: os.environ/MODEL_SQUARE_API_BASE
api_key: os.environ/MODEL_SQUARE_API_KEY
- model_name: gpt-4-kimi
litellm_params:
model: openai/kimi-k2.5
api_base: os.environ/MODEL_SQUARE_API_BASE
api_key: os.environ/MODEL_SQUARE_API_KEY
litellm_settings:
drop_params: true
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
EOF
查看确认:
cat "$HOME/ai-gateway/config.yaml"
9. 清理 Claude Code 本地旧配置
确保Claude Code 的本地 settings 和环境变量不会影响最终行为;
mkdir -p "$HOME/.claude/backup"
cp "$HOME/.claude/settings.json" "$HOME/.claude/backup/settings.json.bak" 2>/dev/null || true
printf '{}\n' > "$HOME/.claude/settings.json"
rm -f .claude/settings.json
rm -f .claude/settings.local.json
**注:**若上述内容你都已经成功配置完成,下述内容一般来说不会有错误出现,只需要复制执行即可
10. 创建启动脚本
10.1 ~/bin/start-litellm.sh
mkdir -p "$HOME/bin"
cat > "$HOME/bin/start-litellm.sh" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source "$HOME/.bashrc"
VENV_PATH="$HOME/litellm_env"
CONFIG_FILE="$HOME/ai-gateway/config.yaml"
if [[ ! -f "$VENV_PATH/bin/activate" ]]; then
echo "错误: 找不到虚拟环境: $VENV_PATH"
exit 1
fi
if [[ ! -f "$CONFIG_FILE" ]]; then
echo "错误: 找不到配置文件: $CONFIG_FILE"
exit 1
fi
if [[ -z "${MODEL_SQUARE_API_KEY:-}" ]]; then
echo "错误: MODEL_SQUARE_API_KEY 未设置"
exit 1
fi
if [[ -z "${LITELLM_MASTER_KEY:-}" ]]; then
echo "错误: LITELLM_MASTER_KEY 未设置"
exit 1
fi
source "$VENV_PATH/bin/activate"
if ! command -v litellm >/dev/null 2>&1; then
echo "错误: litellm 未安装"
exit 1
fi
if curl --noproxy "*" -fsS \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
http://127.0.0.1:4000/v1/models >/dev/null 2>&1; then
echo "LiteLLM 已经在运行: http://127.0.0.1:4000"
exit 0
fi
echo "启动 LiteLLM..."
exec litellm --config "$CONFIG_FILE"
EOF
chmod +x "$HOME/bin/start-litellm.sh"
10.2 ~/bin/check-litellm.sh
cat > "$HOME/bin/check-litellm.sh" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source "$HOME/.bashrc"
if [[ -z "${LITELLM_MASTER_KEY:-}" ]]; then
echo "错误: LITELLM_MASTER_KEY 未设置"
exit 1
fi
if ! curl --noproxy "*" -fsS \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
http://127.0.0.1:4000/v1/models >/dev/null 2>&1; then
echo "LiteLLM 当前不可用或认证失败: http://127.0.0.1:4000"
exit 1
fi
echo "[OK] /v1/models 可访问"
curl --noproxy "*" -s \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
http://127.0.0.1:4000/v1/models | head -c 500
echo
echo
echo "[OK] 测试 /v1/messages"
curl --noproxy "*" -s -X POST http://127.0.0.1:4000/v1/messages \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "gpt-4-qwen",
"max_tokens": 64,
"messages": [{"role": "user", "content": "你好"}]
}' | head -c 800
echo
EOF
chmod +x "$HOME/bin/check-litellm.sh"
10.3 ~/bin/start-claude-code.sh
cat > "$HOME/bin/start-claude-code.sh" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source "$HOME/.bashrc"
if [[ -z "${LITELLM_MASTER_KEY:-}" ]]; then
echo "错误: LITELLM_MASTER_KEY 未设置"
exit 1
fi
export ANTHROPIC_BASE_URL="http://127.0.0.1:4000"
export ANTHROPIC_AUTH_TOKEN="${LITELLM_MASTER_KEY}"
export ANTHROPIC_DEFAULT_SONNET_MODEL="gpt-4-qwen"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="gpt-4-qwen"
export ANTHROPIC_DEFAULT_OPUS_MODEL="gpt-4-qwen"
export NO_PROXY="127.0.0.1,localhost"
export no_proxy="127.0.0.1,localhost"
unset ANTHROPIC_API_KEY
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
unset http_proxy https_proxy all_proxy
if [[ $# -ge 1 ]]; then
PROJECT_DIR="$1"
else
PROJECT_DIR="$(pwd)"
fi
if [[ ! -d "$PROJECT_DIR" ]]; then
echo "错误: 项目目录不存在: $PROJECT_DIR"
exit 1
fi
if ! curl --noproxy "*" -fsS \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
http://127.0.0.1:4000/v1/models >/dev/null 2>&1; then
echo "LiteLLM 未启动、不可访问,或者认证失败: http://127.0.0.1:4000"
echo "请先在另一个终端执行: llmup"
exit 1
fi
cd "$PROJECT_DIR"
exec claude --model gpt-4-qwen
EOF
chmod +x "$HOME/bin/start-claude-code.sh"
10.4 写别名
grep -q "alias llmup=" ~/.bashrc || echo "alias llmup='$HOME/bin/start-litellm.sh'" >> ~/.bashrc
grep -q "alias llmcheck=" ~/.bashrc || echo "alias llmcheck='$HOME/bin/check-litellm.sh'" >> ~/.bashrc
grep -q "alias ccup=" ~/.bashrc || echo "alias ccup='$HOME/bin/start-claude-code.sh'" >> ~/.bashrc
grep -q "alias cchere=" ~/.bashrc || echo "alias cchere='$HOME/bin/start-claude-code.sh .'" >> ~/.bashrc
source ~/.bashrc
11. 第一次正式联调
终端 1:启动 LiteLLM
llmup
终端 2:检查 LiteLLM
llmcheck
如果输出里有:
[OK] /v1/models 可访问[OK] 测试 /v1/messages
说明 LiteLLM 网关正常。
终端 2:启动 Claude Code
cd /你的项目目录
ccup
12. 第一次在 Claude Code 中验证
输入:
你好
再输入:
请先阅读当前项目结构,告诉我主要目录和入口文件。
如果 LiteLLM 窗口里看到:
POST /v1/messages?beta=true ... 200 OK
就说明整套链路已经跑通。
13. 切换模型
现在这套配置可以在 Claude Code 里直接切:
/model gpt-4-qwen
/model gpt-4-glm
/model gpt-4-kimi
前提是你的模型广场对这几个底层模型名都支持。
到此如果你的配置都没问题,那么恭喜你!你已经配置完成。
完成后的效果图如下

14. 常见问题和修正方法
14.1 根分区满
表现:
No space left on deviceapt update失败growpart在/tmp建临时目录失败pvresize无法写/etc/lvm/archive
修法:按本清单第 2 节扩容。
14.2 Node 版本过低
如果 node -v 还是 12,重新:
source ~/.bashrc
nvm use 20
14.3 Claude Code 安装卡住
npm 安装时超过 5 分钟没动静,通常是异常。可先:
npm cache clean --force
如果出现残留目录冲突,再清理:
rm -rf ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/claude-code
rm -rf ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/.claude-code-*
npm install -g @anthropic-ai/claude-code
14.4 /v1/models 401
这是因为你启用了 master_key,访问 LiteLLM 时必须带:
Authorization: Bearer $LITELLM_MASTER_KEY
14.5 Claude Code 提示 auth conflict
说明同时设了:
ANTHROPIC_AUTH_TOKENANTHROPIC_API_KEY
当前方案只保留前者。
14.6 上游不支持某些 Anthropic 参数
保留:
litellm_settings:
drop_params: true
否则容易报 400。([liteLLM][2])
总结
最后,在日常使用中只要用这三个指令即可
终端 1:
该指令是启动LiteLLM
llmup
终端 2:
该指令是在指定目录下启动claude Code
cd /你的项目目录
ccup
检查
该指令是用来检验网络连接是否成功
llmcheck
https://github.com/0voice
更多推荐
所有评论(0)