За последние пару дней 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-вход я выполню сам.

Вручную
Нужен 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%\.ssh\config):
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… и выберите сохранённый файл.

Нажмите Apply Changes и выберите модель в чате. Кнопка Test connection проверит адрес и ключ. Туннель из шага 2 должен быть запущен.
Вручную и что означают настройки
Без импорта всё сводится к четырём полям: Gateway, Static API key, base URL http://127.0.0.1:8317 и ключ из шага 1, схема bearer.





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%\.claude\settings.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: запросы идут через ваш сервер, а не напрямую.

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

