Skip to content

Five: Развертывание сервера Docker

В предыдущей серии статей мы рассказали, как использовать CLIProxyAPI на локальном компьютере. В этой статье мы пойдем дальше и объясним, как выполнить развертывание на сервере через Docker.

1. Подготовка окружения

Перед началом работы убедитесь, что у вас есть доступный VPS (Virtual Private Server). В этой статье в качестве примера для демонстрации будет использоваться система Debian 13.

Также убедитесь, что на вашем сервере уже установлены Git и Docker.

Если они еще не установлены, вы можете установить их с помощью следующих команд:

1. Установка Git

bash
apt update && apt install git -y

2. Установка Docker

Для установки вы можете использовать официальный скрипт автоматической установки:

bash
bash <(curl -fsSL [https://get.docker.com](https://get.docker.com))

2. Развертывание CLIProxyAPI

После завершения подготовки, пожалуйста, выполните следующие команды, чтобы клонировать проект и инициализировать конфигурацию.

bash
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
cp config.example.yaml config.yaml

Теперь вы можете открыть файл config.yaml для редактирования. В данном руководстве в качестве примера будет использоваться следующая минимальная конфигурация:

yaml
port: 8317

# Пожалуйста, укажите путь к папке в соответствии с вашим фактическим расположением
auth-dir: '~/.cli-proxy-api'

request-retry: 3

quota-exceeded:
  switch-project: true
  switch-preview-model: true

api-keys:
  # Пожалуйста, установите Key самостоятельно, он используется для доступа клиента к прокси
  - 'ABC-123456'

Обратите внимание: При развертывании с помощью Docker рекомендуется оставить значение auth-dir по умолчанию без изменений. После редактирования файла config.yaml выполните следующую команду для запуска скрипта сборки Docker-контейнера.

bash
bash docker-build.sh

Скрипт предложит два варианта:

  • Вариант 1: Запуск напрямую с использованием предварительно собранного образа на Docker Hub (docker compose up -d), что выполняется быстро.
  • Вариант 2: Компиляция образа локально на сервере с последующим запуском, что подходит для сценариев, требующих пользовательских изменений.

В данном руководстве мы выбираем Вариант 1 для быстрого запуска сервиса. Через некоторое время сервис будет успешно запущен.

3. Просмотр логов

Хотя скрипт предлагает использовать docker compose logs -f для просмотра логов, так как программа по умолчанию перенаправляет логи в файл, вам необходимо использовать следующую команду для просмотра логов в реальном времени:

bash
tail -f ./logs/main.log

4. Добавление OAuth-аутентификации

Теперь программа работает в обычном режиме. Если вам нужно добавить ключ ретрансляции (relay Key), вам достаточно отредактировать файл конфигурации, как описано в предыдущей статье. В этот раз мы сосредоточимся на том, как добавить файл авторизации и аутентификации через OAuth.

Шаг 1: Генерация ссылки для аутентификации на стороне сервера

В качестве примера добавим Codex, выполните следующую команду в корневом каталоге проекта:

bash
docker compose exec cli-proxy-api /CLIProxyAPI/CLIProxyAPI -no-browser --codex-login

Программа сгенерирует команду для создания SSH-туннеля. Пожалуйста, скопируйте всю команду, начинающуюся с ssh, на которую указывает стрелка.

Шаг 2: Установка SSH-туннеля локально

В терминале или командной строке вашего собственного компьютера вставьте только что скопированную команду.

Особое примечание: Вам необходимо заменить номер порта после параметра -p в команде ( 22 в примере) на фактический SSH-порт вашего VPS.

После нажатия Enter введите пароль для входа по SSH на сервер. После успешного подключения, пожалуйста, держите это окно терминала открытым, а затем вернитесь в терминал, в котором вы только что работали с сервером.

Шаг 3: Завершите авторизацию через браузер

Скопируйте ссылку, на которую указывает стрелка в терминале сервера

Откройте эту ссылку в браузере вашего локального компьютера, войдите в свой аккаунт ChatGPT и выполните авторизацию

После успешной авторизации вы увидите следующий экран:

В то же время в терминале сервера также отобразится сообщение о том, что файл аутентификации был успешно сохранен.

На данный момент аутентификация Codex полностью завершена. Для других сервисов, требующих OAuth авторизации, таких как Gemini-CLI и Claude, процесс выполнения точно такой же.

5. Обзор принципа работы

В заключение давайте резюмируем принцип этого процесса удаленной OAuth аутентификации:

OAuth аутентификация Gemini-CLI, Claude и Codex требует процесса «Callback» для получения токена авторизации. Из-за ограничений безопасности адрес обратного вызова провайдера услуг обычно принудительно устанавливается на localhost. Когда вы выполняете команду авторизации в контейнере Docker, в контейнере отсутствует браузерная среда, и вы должны открыть веб-страницу авторизации на локальном компьютере. Но после успешной авторизации браузер попытается обратиться к localhost, что приведет к доступу только к вашему собственному компьютеру и не позволит передать токен программе на удаленном сервере.

Роль SSH Tunnel заключается в создании моста: он перенаправляет все сетевые запросы с определенного порта вашего локального компьютера (например, 1455) на тот же порт сервера через зашифрованное SSH-соединение. Таким образом, когда браузер обращается к локальному http://localhost:1455, запрос фактически перенаправляется программе CLIProxyAPI, которая прослушивает порт 1455 на сервере, что позволяет изящно завершить удаленную аутентификацию. В качестве альтернативы SSH Tunnel вы также можете вручную заменить localhost на IP или доменное имя вашего сервера, когда браузер переходит по callback-ссылке localhost. Однако, пожалуйста, обратите внимание, что этот метод требует от вас правильной настройки файрвола сервера или reverse proxy, чтобы гарантировать корректное получение callback-запроса, иначе аутентификация может завершиться ошибкой.

6. Использование клиента

После завершения вышеуказанной конфигурации при использовании клиента вам нужно лишь указать адрес эндпоинта запроса на IP:port вашего сервера (например, http://YOUR_SERVER_IP:8317), а остальные операции будут точно такими же, как при локальном использовании.

На данный момент вы освоили полный процесс развертывания CLIProxyAPI на сервере через Docker. Наслаждайтесь удобством, которое дает AI!

Лицензия MIT.