forked from templates/template-go-backend
Обновить README.md
This commit is contained in:
228
README.md
228
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://<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` или своей другой скачанной моделью.
|
||||
|
||||
Reference in New Issue
Block a user