diff --git a/PROXY_SETUP.md b/PROXY_SETUP.md deleted file mode 100644 index b341d45..0000000 --- a/PROXY_SETUP.md +++ /dev/null @@ -1,289 +0,0 @@ -# Настройка прокси для Ollama - ---- - -## Зачем нужен прокси - -Без прокси Ollama приходится открывать в сеть напрямую (`OLLAMA_HOST=0.0.0.0`). Это значит, что любой человек в сети может отправлять запросы в Ollama без ограничений — нет ни логирования, ни контроля доступа. - -Прокси встаёт между клиентами и Ollama: -- Ollama остаётся на `localhost` — снаружи к ней не достучаться -- Все запросы идут через прокси — видно кто, что и когда запросил -- В будущем можно добавить авторизацию по API-ключам и rate limiting - ---- - -## Архитектура - -``` -Codex (ноутбук) - ↓ HTTP-запрос -http://:8080/v1 - ↓ -Go Proxy (сервер, порт 8080) ← единственная точка входа снаружи - ↓ пересылает запрос как есть -Ollama (сервер, localhost:11434) ← недоступна снаружи -``` - ---- - -## Настройка сервера - -### 1. Установить Go - -Go нужен для сборки прокси из исходного кода. После сборки Go можно удалить — прокси работает как самостоятельный бинарник. - -```bash -# Скачиваем архив с Go -wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz - -# Распаковываем в /usr/local (стандартное место для Go) -sudo tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz - -# Добавляем Go в PATH, чтобы команда go была доступна -echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc - -# Применяем изменения в текущей сессии (без перезахода в терминал) -source ~/.bashrc - -# Проверяем что Go установлен -go version -``` - ---- - -### 2. Скопировать проект и собрать - -```bash -git clone https://git.halfakop.ru/fedor_sukharev/Proxy_for_codex.git ~/Proxy_for_codex - -# Переходим в папку проекта (если копировали через scp или git clone) -cd ~/Proxy_for_codex - -# Скачиваем зависимости проекта (внешние библиотеки) -go mod download - -# Собираем бинарник — файл "service", который можно запускать без Go -go build -o service ./src -``` - -После этого в папке появится файл `service` — это и есть наш прокси. - ---- - -### 3. Настроить Ollama - -Если раньше у Ollama стояло `OLLAMA_HOST=0.0.0.0` (чтобы она была доступна по сети), то теперь это нужно **убрать**. Прокси сам принимает внешние подключения и пересылает их в Ollama. - -```bash -# Открываем override-конфиг Ollama -sudo systemctl edit ollama -``` - -Вставляем между комментариями: - -```ini -[Service] -Environment="OLLAMA_KEEP_ALIVE=30m" -Environment="OLLAMA_NUM_PARALLEL=2" -``` - -- `OLLAMA_KEEP_ALIVE=30m` — модель остаётся в памяти 30 минут после последнего запроса. Без этого Ollama выгружает модель сразу, и каждый новый запрос ждёт повторной загрузки (15-30 секунд). -- `OLLAMA_NUM_PARALLEL=2` — Ollama обрабатывает до 2 запросов одновременно. Если работают 2 человека — оба получают ответ параллельно, не ждут друг друга. - -> **Важно:** строки `OLLAMA_HOST=0.0.0.0` здесь быть **НЕ должно**. Если она есть — удалите. Ollama будет слушать только localhost, а наружу смотрит прокси. - -Применяем изменения: - -```bash -# Перечитываем конфигурацию systemd (без этого изменения не подхватятся) -sudo systemctl daemon-reload - -# Перезапускаем Ollama с новыми настройками -sudo systemctl restart ollama -``` - ---- - -### 4. Создать systemd-сервис для прокси - -systemd — это менеджер служб в Linux. Если создать сервис, то: -- прокси запустится автоматически при включении сервера -- если прокси упадёт — systemd перезапустит его сам -- не нужно держать открытый терминал - -```bash -# Создаём файл сервиса -sudo nano /etc/systemd/system/ollama-proxy.service -``` - -Вставляем: - -```ini -[Unit] -Description=Ollama Proxy -# After — запускать прокси только ПОСЛЕ того, как Ollama стартовала -After=ollama.service -# Wants — при старте прокси systemd попытается запустить Ollama, если она не запущена -Wants=ollama.service - -[Service] -# Путь к собранному бинарнику -ExecStart=/home//Proxy_for_codex/service - -# LISTEN_ADDR=:8080 — прокси слушает порт 8080 на всех интерфейсах (доступен из сети) -Environment=LISTEN_ADDR=:8080 - -# OLLAMA_BACKEND — куда прокси пересылает запросы (локальная Ollama) -Environment=OLLAMA_BACKEND=http://localhost:11434 - -# Рабочая директория — нужна чтобы прокси мог найти .env файл (если есть) -WorkingDirectory=/home//Proxy_for_codex - -# Запускать от имени обычного пользователя, не от root (безопаснее) -User= - -# Если прокси упадёт — перезапустить автоматически -Restart=always - -# Ждать 5 секунд перед перезапуском (чтобы не спамить перезапусками при проблеме) -RestartSec=5 - -[Install] -# Запускать прокси при каждом включении сервера -WantedBy=multi-user.target -``` - -> **Замените ``** на имя пользователя на сервере (то, что показывает команда `whoami`). - ---- - -### 5. Запустить прокси - -```bash -# Перечитываем конфигурацию systemd (чтобы он узнал о новом сервисе) -sudo systemctl daemon-reload - -# Включаем автозапуск при включении сервера -sudo systemctl enable ollama-proxy - -# Запускаем прокси прямо сейчас -sudo systemctl start ollama-proxy -``` - ---- - -### 6. Проверить что всё работает - -```bash -# Проверяем статус — должно быть "active (running)" -sudo systemctl status ollama-proxy - -# Проверяем что прокси отвечает — должен вернуть список моделей -curl http://localhost:8080/api/tags -``` - -Если `curl` вернул JSON со списком моделей — прокси работает и Ollama доступна через него. - ---- - -### 7. Файрвол (если включен) - -Файрвол — это защита, которая блокирует входящие подключения к серверу. На Ubuntu он называется `ufw`. Если он включен и порт 8080 не открыт — ноутбуки не смогут достучаться до прокси. - -Проверяем: - -```bash -sudo ufw status -``` - -- Если в ответе `Status: inactive` — файрвол выключен, **ничего делать не нужно**, все порты и так открыты. -- Если `Status: active` — нужно открыть порт: - -```bash -# Разрешаем входящие подключения на порт 8080 -sudo ufw allow 8080/tcp -``` - ---- - -### 8. Логирование - -Прокси логирует каждый запрос. При запуске: - -``` -INFO Прокси запущен addr=:8080 backend=http://localhost:11434 -``` - -При каждом запросе от клиента: - -``` -INFO запрос method=POST path=/v1/chat/completions status=200 duration=1.234s -INFO запрос method=GET path=/v1/models status=200 duration=12ms -``` - -Смотреть логи в реальном времени: - -```bash -# -u ollama-proxy — показать логи только нашего сервиса -# -f — следить за новыми записями (как tail -f) -sudo journalctl -u ollama-proxy -f -``` - -Посмотреть последние 50 строк: - -```bash -sudo journalctl -u ollama-proxy -n 50 -``` - ---- - -## Настройка клиента (ноутбук) - -На ноутбуке не нужно ничего устанавливать и запускать — только изменить конфиг Codex, чтобы он отправлял запросы на прокси вместо локальной Ollama. - -Открываем конфиг Codex: - -**Linux:** - -```bash -nano ~/.codex/config.toml -``` - -**Windows:** файл находится в: - -``` -C:\Users\\.codex\config.toml -``` - -Пишем: - -```toml -# Модель по умолчанию — будет использоваться при запуске codex без параметров -model = "qwen3:0.6b" - -# Имя провайдера — ссылка на секцию [model_providers.ollama_proxy] ниже -model_provider = "ollama_proxy" - -[model_providers.ollama_proxy] -name = "Ollama (через прокси)" - -# Адрес прокси на сервере. /v1 на конце обязателен — -# Codex использует OpenAI-совместимый формат API, где все пути начинаются с /v1 -base_url = "http://:8080/v1" - -# Формат общения с API -wire_api = "responses" -``` - -> **Замените ``** на реальный IP сервера (например `10.111.111.40`). - ---- - -## Запуск - -```bash -codex -``` - -Готово. Codex отправит запросы на прокси, прокси перешлёт в Ollama, ответ вернётся обратно. diff --git a/SETUP_WIN_SERVER.md b/SETUP_WIN_SERVER.md index 6665a30..73e2553 100644 --- a/SETUP_WIN_SERVER.md +++ b/SETUP_WIN_SERVER.md @@ -169,7 +169,19 @@ copy users.example.json users.json cp users.example.json users.json ``` -Открыть `users.json` и заполнить: +Открыть `users.json` для редактирования: + +**Windows** — открыть файл в любом текстовом редакторе (Блокнот, VS Code и т.д.). + +**Linux:** + +```bash +nano users.json +``` + +Сохранить: `Ctrl+O` → `Enter` → `Ctrl+X`. + +Заполнить: ```json { @@ -211,7 +223,17 @@ cp users.example.json users.json ### 6. Создать файл .env -Создать файл `.env` рядом с бинарником прокси: +**Windows** — создать файл `.env` в папке проекта в любом текстовом редакторе. + +**Linux:** + +```bash +nano .env +``` + +Сохранить: `Ctrl+O` → `Enter` → `Ctrl+X`. + +Содержимое файла: ``` # Адрес и порт, на котором прокси принимает входящие подключения.