Как я перенаправил Claude Desktop и Claude Code на свой VPS с CLIProxyAPI. claude code.. claude code. claude desktop.. claude code. claude desktop. CLIProxyAPI.. claude code. claude desktop. CLIProxyAPI. DevOps.. claude code. claude desktop. CLIProxyAPI. DevOps. docker.. claude code. claude desktop. CLIProxyAPI. DevOps. docker. llm.. claude code. claude desktop. CLIProxyAPI. DevOps. docker. llm. vps.. claude code. claude desktop. CLIProxyAPI. DevOps. docker. llm. vps. бан Anthropic.. claude code. claude desktop. CLIProxyAPI. DevOps. docker. llm. vps. бан Anthropic. искусственный интеллект.. claude code. claude desktop. CLIProxyAPI. DevOps. docker. llm. vps. бан Anthropic. искусственный интеллект. Серверное администрирование.

За последние пару дней Anthropic забанило много аккаунтов. Точной причины компания не называет, апелляции, судя по постам в соц сетях, разбанивают крайне редко, и деньги за подписку не возвращают.

Моя предположение: под бан попадали аккаунты, на которых периодически светился российский IP, плюс часовой пояс ПК. Поэтому я сделал так, чтобы запросы к Claude всегда уходили с одного IP сервера в поддерживаемой стране. Да, IP дата‑центра тоже можно детектить, но компании же как‑то работают из облаков:)

Ниже рассказываю, как это настроить: сервер, вход в аккаунт, Claude Desktop и Claude Code. Для каждого шага два варианта: промпт для агента и ручная инструкция в спойлере.

Как это устроено

На VPS в Docker крутится CLIProxyAPI (дальше CPA): прокси, который хранит OAuth‑вход вашего аккаунта Claude и отдаёт совместимый API на 127.0.0.1:8317. Компьютер ходит к нему через SSH‑туннель, так что наружу сервера торчит только порт 22. Claude Desktop и Claude Code настраиваются на этот адрес как на собственный шлюз.

Плюсы и минусы

Плюсы

  • можно использовать без VPN;

  • можно подключить несколько аккаунтов (главное не борщить: в CPA есть отдельный прокси для каждого аккаунта);

  • меньше риска блокировки.

Минусы

  • нужен свой VPS: платить за него и следить за ним придётся самому;

  • показ usage в Claude Code надо настраивать отдельно;

  • с кастомным провайдером Claude Desktop работает только локально: нет SSH‑сессий, облачных окружений и Remote Control;

  • способ неофициальный, риск бана не исчезает, он только меньше.

0. Что нужно

Любой VPS в стране, где Claude работает официально, и SSH‑доступ под root. Порты открывать не нужно: CPA слушает только localhost сервера. Если не хочется держать туннель, можно открыть CPA по домену: подойдёт свой, бесплатный поддомен DuckDNS или адрес вида IP.sslip.io, который работает без регистрации. Тогда перед CPA нужен reverse proxy с HTTPS, а единственной защитой станет ваш API‑ключ, поэтому делайте его длинным.

1. Ставим CPA на сервер

Промпт для агента (подставьте IP):

У меня есть VPS на Ubuntu, доступ: ssh root@SERVER_IP. Поставь на него CLIProxyAPI в Docker:
1. Установи Docker, если его нет.
2. Создай /opt/cpa с config.yaml (host "", port 8317, auth-dir /root/.cli-proxy-api, один api-key вида sk-+48 hex-символов, сгенерируй через openssl) и docker-compose.yml: образ eceasy/cli-proxy-api:latest, порты ТОЛЬКО 127.0.0.1:8317 и 127.0.0.1:54545, тома ./config.yaml, ./auths, restart: unless-stopped.
3. Запусти docker compose up -d и проверь: curl с этим ключом на http://127.0.0.1:8317/v1/models должен вернуть 200.
4. Не открывай порты наружу и не трогай firewall.
5. Ключ в чат не печатай, скажи только, в каком файле он лежит. В конце коротко расскажи, что сделал. OAuth-вход я выполню сам.
Контейнер поднялся, /v1/models отвечает 200

Контейнер поднялся, /v1/models отвечает 200
Вручную

Нужен Docker. Если его нет: curl -fsSL https://get.docker.com | sh. Дальше на сервере:

mkdir -p /opt/cpa/auths && cd /opt/cpa
KEY="sk-$(openssl rand -hex 24)"; echo "$KEY"
cat > config.yaml <<EOF
host: ""
port: 8317
auth-dir: "/root/.cli-proxy-api"
api-keys:
  - "$KEY"
EOF
cat > docker-compose.yml <<EOF
services:
  cli-proxy-api:
    image: eceasy/cli-proxy-api:latest
    container_name: cli-proxy-api
    ports:
      - "127.0.0.1:8317:8317"
      - "127.0.0.1:54545:54545"
    volumes:
      - ./config.yaml:/CLIProxyAPI/config.yaml
      - ./auths:/root/.cli-proxy-api
    restart: unless-stopped
EOF
docker compose up -d

Ключ, который напечатала команда (он же лежит в /opt/cpa/config.yaml), сохраните: он нужен в шагах 3 и 4. Автозапуск после перезагрузки обеспечивает restart: unless-stopped.

2. Туннель и вход в аккаунт через OAuth

Промпт для агента (на своём компьютере):

Добавь в мой ~/.ssh/config хост cpa: HostName SERVER_IP, User root, LocalForward 8317 127.0.0.1:8317 и 54545 127.0.0.1:54545, ServerAliveInterval 30. Подними туннель (ssh -N cpa, в фоне) и проверь, что curl http://127.0.0.1:8317/v1/models с моим ключом из /opt/cpa/config.yaml отдаёт 200. Потом на сервере выполни: cd /opt/cpa && docker compose exec cli-proxy-api ./CLIProxyAPI -claude-login -no-browser. Покажи мне ссылку claude.ai/oauth/authorize из вывода и жди. Я открою её в своём браузере и войду сам, ничего вводить за меня не нужно. Когда в выводе появится сообщение об успехе, скажи мне. Ключ в чат не печатай и никуда не коммить.
Вывод команды: ссылка для входа и подсказка про туннель

Вывод команды: ссылка для входа и подсказка про туннель

Откройте ссылку, войдите и разрешите доступ. Браузер вернётся на localhost:54545, туннель донесёт ответ до сервера, в терминале появится сообщение об успехе. Желательно входить под IP самого VPS (можно поднять браузер на сервере через noVNC либо использовать VPN).

Вручную

На своём компьютере откройте туннель и оставьте окно открытым:

ssh -L 8317:127.0.0.1:8317 -L 54545:127.0.0.1:54545 root@SERVER_IP

В этом же окне, на сервере:

cd /opt/cpa && docker compose exec cli-proxy-api ./CLIProxyAPI -claude-login -no-browser

Чтобы не набирать туннель каждый раз, добавьте в ~/.ssh/config (Windows: %USERPROFILE%.sshconfig):

Host cpa
  HostName SERVER_IP
  User root
  LocalForward 8317 127.0.0.1:8317
  LocalForward 54545 127.0.0.1:54545
  ServerAliveInterval 30

Дальше туннель открывается командой ssh -N cpa. Чтобы он поднимался сам при старте компьютера, поставьте autossh или добавьте команду в автозагрузку.

3. Claude Desktop

Этот шаг делаете сами. Конфиг ниже у меня уже работает, настроен так:

  • включён tool search, как в оригинальном Claude: без него контекст слишком сильно засорялся;

  • включён встроенный браузер;

  • отключена телеметрия;

  • отключён авто‑режим: с ним лимиты уходили быстрее, потому что запросы дублировались.

Сохраните конфиг в файл claude-desktop-cpa.json, вместо КЛЮЧ подставьте ключ из шага 1:

{
  "inferenceProvider": "gateway",
  "inferenceCredentialKind": "static",
  "inferenceGatewayBaseUrl": "http://127.0.0.1:8317",
  "inferenceGatewayApiKey": "КЛЮЧ",
  "inferenceModelPricingEnabled": true,
  "disableEssentialTelemetry": true,
  "disableNonessentialTelemetry": true,
  "disableNonessentialServices": true,
  "autoModeEnabled": false,
  "toolSearchEnabled": true,
  "builtinBrowserEnabled": true
}

В самом Desktop: Help → Troubleshooting → Enable Developer Mode (приложение перезапустится), затем Developer → Configure Third‑Party Inference…

Включаем режим разработчика

Включаем режим разработчика
Открываем настройки провайдера

Открываем настройки провайдера

В окне откройте меню Default → Import configuration… и выберите сохранённый файл.

Default → Import configuration…

Default → Import configuration…

Нажмите Apply Changes и выберите модель в чате. Кнопка Test connection проверит адрес и ключ. Туннель из шага 2 должен быть запущен.

Вручную и что означают настройки

Без импорта всё сводится к четырём полям: Gateway, Static API key, base URL http://127.0.0.1:8317 и ключ из шага 1, схема bearer.

Поля шлюза: base URL и ключ

Поля шлюза: base URL и ключ
Телеметрия

Телеметрия
Auto mode

Auto mode
Tool search

Tool search
Встроенный браузер

Встроенный браузер

4. Claude Code

Промпт для агента:

Настрой Claude Code на мой прокси CLIProxyAPI. В ~/.claude/settings.json (не в проектный .claude/settings.json) добавь в блок env, не трогая остальные настройки: ANTHROPIC_BASE_URL=http://127.0.0.1:8317, ANTHROPIC_AUTH_TOKEN=<мой ключ из /opt/cpa/config.yaml>, ENABLE_TOOL_SEARCH=true, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1. Затем проверь запросом POST /v1/messages с этим ключом, что прокси отвечает. Ключ не печатай в чат и не коммить.

Запустите claude и выполните /status: должна появиться строка Anthropic base URL с вашим адресом.

Вручную

Добавьте в ~/.claude/settings.json (Windows: %USERPROFILE%.claudesettings.json):

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
    "ANTHROPIC_AUTH_TOKEN": "ВАШ_КЛЮЧ",
    "ENABLE_TOOL_SEARCH": "true",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}
  • ENABLE_TOOL_SEARCH: за собственным base URL tool search по умолчанию выключен, переменная его включает. С CPA работает.

  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: отключает фоновый трафик, проверки версий и автообновления, поэтому обновляйте Claude Code вручную.

Если нужна панель

К CPA можно поставить CPA Manager Plus: запросы и токены по аккаунтам и моделям, оценка стоимости, квоты, ошибки. У меня она стоит на том же VPS. Ставится по тому же принципу: отдайте агенту ссылку на репозиторий.

Панель: запросы, успешность, стоимость

Панель: запросы, успешность, стоимость
Еще статистика

Еще статистика

Проверка

Если всё сделано правильно, в Claude Desktop рядом с вашим именем появится пометка Gateway: запросы идут через ваш сервер, а не напрямую.

Рядом с именем в Desktop стоит Gateway

Рядом с именем в Desktop стоит Gateway

Если что‑то не сходится, отдайте агенту текст ошибки вместе с шагом, на котором она появилась: у него есть доступ и к серверу, и к вашим конфигам.

Мой Telegram‑канал, там я пишу интересное про AI: Pixel by Pixel

Автор: Qwinty

Источник