From 9bd43943b3546171ecc6ac87acb55e4d3518c3f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=91=D0=B4=D0=BE=D1=80?= Date: Thu, 19 Mar 2026 22:17:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 228 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 191 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index d28c11c..cf18210 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,218 @@ -# Ollama Proxy - -Прокси для подключения к серверу Ollama без SSH-туннелей. +# Подключение Codex к удалённой машине через Ollama --- -## Первый раз (один раз на ноутбуке) +## 1. Узнаём IP сервера -### 1. Клонировать репозиторий +Первым делом нужно узнать IP выбранного сервера. + +**Linux:** + +```bash +hostname -I +``` + +Первый адрес в выводе — это ваш IP. + +**Windows:** ```cmd -git clone <репозиторий> C:\ollama-proxy (диск C: как пример) -cd C:\ollama-proxy +ipconfig ``` -### 2. Собрать - -```cmd -go build -o proxy.exe ./src -``` - -### 3. Создать файл `.env` рядом с `proxy.exe` +Ищешь строку: ``` -LISTEN_ADDR=localhost:11434 -OLLAMA_BACKEND=http://10.111.111.40:8080 +IPv4 Address: 192.168.x.x ``` --- -## Перед работой +## 2. Устанавливаем Ollama -**Терминал 1** — запустить прокси: +**Linux:** -```cmd -cd C:\ollama-proxy -proxy.exe +```bash +curl -fsSL https://ollama.com/install.sh | sh ``` -Дождись строки: +**Windows:** самый удобный способ установки — через [официальный сайт](https://ollama.com) через установщик (.exe). -``` -Прокси запущен addr=localhost:11434 backend=http://10.111.111.40:8080 -``` - -**Терминал 2** — запустить Codex: - -```cmd -ollama launch codex -``` - -Работаешь. Закончил — закрыл оба терминала. +> **ВАЖНО:** Если у сервера недостаточно мощная GPU или её вообще нет, то отвечать модели будут очень долго. --- -## Проверка (если что-то не работает) +## 3. Скачиваем модель -Убедись что прокси запущен и сервер доступен: +Заходим на сайт https://ollama.com/library и выбираем любую/любые модели для установки. Внимательно смотрите на её объём (он измеряется в миллиардах параметров) и на то, совместима ли она с Codex (это можно узнать, кликнув на модель и внизу под **Applications** будет написан `codex`, если совместима, и ничего если нет). -```cmd +Копируем название модели (для примера я взял `qwen3:0.6b`). Теперь на сервере пишем: + +```bash +ollama pull qwen3:0.6b +``` + +Пойдёт установка модели на сервер. + +--- + +## 4. Настройка переменных окружения (самое важное) + +### Зачем это нужно + +По умолчанию Ollama: +- слушает только `localhost` (другие устройства не видят) +- может выгружать модель из памяти +- может обрабатывать несколько запросов и падать (на слабых устройствах) + +### Переменные + +| Переменная | Значение | Описание | +|---|---|---| +| `OLLAMA_HOST` | `0.0.0.0` | **ОБЯЗАТЕЛЕН.** Открывает доступ к серверу по сети. | +| `OLLAMA_KEEP_ALIVE` | `30m` или `-1` | **ОБЯЗАТЕЛЕН.** Держит модель в памяти. `30m` — выгрузит через 30 минут, `-1` — не выгружает вообще. Без этого модель будет постоянно перезагружаться. | +| `OLLAMA_NUM_PARALLEL` | `1`, `2`, `3` или `4` | Количество одновременных запросов. Можно не ставить, если не нужны параллельные запросы. | +| `OLLAMA_FLASH_ATTENTION` | `1` | Ускоряет инференс на GPU (если поддерживается). Полезен, если есть GPU. | +| `OLLAMA_KV_CACHE_TYPE` | `q8_0` / `f16` / `q4_0` | Кэш ключ-значение (KV cache), который модель использует для контекста. | + +**Типы KV-кэша:** + +| Значение | Память | Скорость | +|---|---|---| +| `f16` | много | быстрее | +| `q8_0` | средне | нормально | +| `q4_0` | мало | чуть медленнее | + +--- + +### Как задать переменные + +#### Linux + +```bash +sudo systemctl edit ollama +``` + +Появится панель в `nano` — что-то вроде такой: + +``` +### Editing /etc/systemd/system/ollama.service.d/override.conf +### Anything between here and the comment below will become the contents of the drop-in file + +### Edits below this comment will be discarded +### /etc/systemd/system/ollama.service +# [Unit] +# Description=Ollama Service +# ... +``` + +Необходимо **между** строками `Anything between here and the comment below...` и `Edits below this comment will be discarded` вставить: + +```ini +[Service] +Environment="OLLAMA_HOST=0.0.0.0" +Environment="OLLAMA_KEEP_ALIVE=30m" +``` +(ну и далее если нужно) + +Сохраняем и выходим: `Ctrl+O` → `Enter` → `Ctrl+X`. + +Далее перезагружаем Ollama, чтобы она запускалась как "сервер": + +```bash +sudo systemctl daemon-reload +sudo systemctl restart ollama +``` + +#### Windows + +PowerShell **(от имени администратора)**: + +```powershell +setx OLLAMA_HOST "0.0.0.0" /M +setx OLLAMA_KEEP_ALIVE "30m" /M +``` + +И в **новой** консоли запускаем: + +```bash +ollama serve +``` + +--- + +## 5. Проверка, что Ollama запущена + +На самом сервере: + +```bash curl http://localhost:11434/api/tags ``` -Если вернулся список моделей — всё работает. +И с другого ноутбука или ПК пишем в терминале: + +```bash +curl http://:11434/api/tags +``` + +Так мы узнаем, запущен ли сервер. + +--- + +## 6. Настройка Codex на клиентском устройстве + +Переходим к другому устройству. Предварительно необходимо установить [Node.js](https://nodejs.org) и Codex. + +После установки нужно изменить конфиг Codex'а, чтобы Codex отправлял запросы не к `openai.com`, а к нам на сервер. + +**Linux:** + +```bash +nano ~/.codex/config.toml +``` + +**Windows:** файл находится в директории: + +``` +C:\Users\\.codex\config.toml +``` + +Далее написан пример конфига с обязательными переменными для заполнения (но можете сами корректировать названия моделей): + +```toml +model = "qwen3:0.6b" # по умолчанию стоит auto, теперь при запуске будет запускаться наша установленная модель +model_provider = "ollama_direct" + +[model_providers.ollama_direct] +name = "Ollama" +base_url = "http://192.168.1.50:11434/v1" # указываем свой ip:11434/v1 +wire_api = "responses" + +# Поле для дополнительных моделей — чтобы можно было работать с множеством моделей. +# Название "small" можно заменить на какое угодно. +[profiles.small] +model = "qwen2.5-coder:0.5b" # или любая другая, главное — заранее установить на сервер (ollama pull) +model_provider = "ollama_direct" +``` + +> **ВАЖНО:** если в конфиге есть поле `OPENAI_API_KEY`, то удалите его. + +--- + +## 7. Запуск + +Всё, теперь пишем в терминале: + +```bash +codex +``` + +И работаем с выбранной нами по умолчанию моделью. + +Можно также выбрать другую модель: + +```bash +codex --profile small +``` + +Тогда будете работать с, как у меня в примере, `qwen2.5-coder:0.5b` или своей другой скачанной моделью.