Обновить README.md

This commit is contained in:
2026-03-19 22:17:28 +03:00
parent 442ac9273e
commit 9bd43943b3

228
README.md
View File

@@ -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://<IP_СЕРВЕРА>:11434/api/tags
```
Так мы узнаем, запущен ли сервер.
---
## 6. Настройка Codex на клиентском устройстве
Переходим к другому устройству. Предварительно необходимо установить [Node.js](https://nodejs.org) и Codex.
После установки нужно изменить конфиг Codex'а, чтобы Codex отправлял запросы не к `openai.com`, а к нам на сервер.
**Linux:**
```bash
nano ~/.codex/config.toml
```
**Windows:** файл находится в директории:
```
C:\Users\<user>\.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` или своей другой скачанной моделью.