forked from templates/template-go-backend
219 lines
7.4 KiB
Markdown
219 lines
7.4 KiB
Markdown
# Подключение Codex к удалённой машине через Ollama
|
||
|
||
---
|
||
|
||
## 1. Узнаём IP сервера
|
||
|
||
Первым делом нужно узнать IP выбранного сервера.
|
||
|
||
**Linux:**
|
||
|
||
```bash
|
||
hostname -I
|
||
```
|
||
|
||
Первый адрес в выводе — это ваш IP.
|
||
|
||
**Windows:**
|
||
|
||
```cmd
|
||
ipconfig
|
||
```
|
||
|
||
Ищешь строку:
|
||
|
||
```
|
||
IPv4 Address: 192.168.x.x
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Устанавливаем Ollama
|
||
|
||
**Linux:**
|
||
|
||
```bash
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
```
|
||
|
||
**Windows:** самый удобный способ установки — через [официальный сайт](https://ollama.com) через установщик (.exe).
|
||
|
||
> **ВАЖНО:** Если у сервера недостаточно мощная GPU или её вообще нет, то отвечать модели будут очень долго.
|
||
|
||
---
|
||
|
||
## 3. Скачиваем модель
|
||
|
||
Заходим на сайт https://ollama.com/library и выбираем любую/любые модели для установки. Внимательно смотрите на её объём (он измеряется в миллиардах параметров) и на то, совместима ли она с Codex (это можно узнать, кликнув на модель и внизу под **Applications** будет написан `codex`, если совместима, и ничего если нет).
|
||
|
||
Копируем название модели (для примера я взял `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"
|
||
```
|
||
(ну и другие Environment если нужно)
|
||
|
||
Сохраняем и выходим: `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 сервера - http://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
|
||
```
|
||
|
||
И работаем с выбранной нами по умолчанию моделью.
|
||
|
||
Можно также выбрать другую модель, которую написали в доп поле как [profiles.]:
|
||
|
||
```bash
|
||
codex --profile small
|
||
```
|
||
|
||
Тогда будете работать с, как у меня в примере, `qwen2.5-coder:0.5b` или своей другой скачанной моделью.
|