forked from templates/template-go-orm
Обновить Подключение ollama codex к серверу.md
This commit is contained in:
@@ -1,350 +1,173 @@
|
||||
cat << 'EOF' > README.md
|
||||
# Ollama Remote AI Server Setup
|
||||
# Как подключиться к серверу с моделями (Codex + Ollama)
|
||||
|
||||
Полная инструкция по настройке сервера для запуска локальных LLM через Ollama
|
||||
и подключению к нему с удалённого компьютера (ноутбука).
|
||||
|
||||
Сервер: Ubuntu-server 24.04
|
||||
API Ollama: порт 11434
|
||||
Это инструкция по подключению к серверу с моделями через Codex.
|
||||
Следуйте шагам **точно в указанном порядке**.
|
||||
|
||||
---
|
||||
|
||||
# Архитектура системы
|
||||
# Шаг 1. Включить сервер
|
||||
|
||||
Ноутбук используется для разработки и запуска инструментов (VS Code / Codex).
|
||||
Сервер выполняет вычисления модели.
|
||||
Сначала нужно включить сервер.
|
||||
|
||||
Ноутбук подключается к серверу через SSH туннель.
|
||||
Сервер находится в сети и имеет IP:
|
||||
10.111.111.40
|
||||
|
||||
Схема:
|
||||
|
||||
Laptop
|
||||
↓
|
||||
SSH tunnel
|
||||
↓
|
||||
Ollama Server
|
||||
↓
|
||||
LLM models
|
||||
Подождите примерно **30–60 секунд**, пока сервер полностью загрузится.
|
||||
|
||||
---
|
||||
|
||||
# 1. Установка драйверов GPU и CUDA
|
||||
# Шаг 2. Подключиться к серверу через SSH
|
||||
|
||||
На сервере были установлены:
|
||||
Откройте **терминал** на ноутбуке.
|
||||
|
||||
- драйверы видеокарты
|
||||
Введите команду:
|
||||
|
||||
Однако позже было принято решение временно использовать CPU,
|
||||
так как установленная видеокарта оказалась слишком слабой.
|
||||
|
||||
GPU можно будет вернуть позже.
|
||||
ssh user@10.111.111.40
|
||||
|
||||
|
||||
После этого система попросит пароль.
|
||||
|
||||
Введите пароль и нажмите **Enter**.
|
||||
|
||||
(Пароль будет выдан отдельно.)
|
||||
|
||||
Если всё прошло успешно, вы увидите примерно такое:
|
||||
|
||||
|
||||
user@neuro:~$
|
||||
|
||||
|
||||
Это означает, что вы подключились к серверу.
|
||||
|
||||
Этот терминал можно оставить открытым или закрыть — он нужен только для проверки.
|
||||
|
||||
---
|
||||
|
||||
# 2. Установка Ollama
|
||||
# Шаг 3. Создать SSH-туннель к серверу
|
||||
|
||||
Установка выполняется официальным install-script.
|
||||
Теперь нужно создать **туннель**, через который Codex будет обращаться к серверу.
|
||||
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
Откройте **новый терминал** на ноутбуке.
|
||||
|
||||
После установки бинарный файл появляется:
|
||||
Введите команду:
|
||||
|
||||
/usr/local/bin/ollama
|
||||
|
||||
---
|
||||
|
||||
# 3. Создание systemd сервиса
|
||||
|
||||
Чтобы Ollama работал как сервер и автоматически запускался,
|
||||
создаётся systemd сервис.
|
||||
|
||||
sudo nano /etc/systemd/system/ollama.service
|
||||
|
||||
Содержимое:
|
||||
|
||||
[Unit]
|
||||
Description=Ollama Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/ollama serve
|
||||
Restart=always
|
||||
User=ollama
|
||||
Group=ollama
|
||||
|
||||
Environment="OLLAMA_HOST=0.0.0.0"
|
||||
Environment="OLLAMA_FLASH_ATTENTION=1"
|
||||
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
---
|
||||
|
||||
# Разбор параметров
|
||||
|
||||
OLLAMA_HOST=0.0.0.0
|
||||
|
||||
Позволяет принимать подключения с других устройств.
|
||||
Если использовать 127.0.0.1 — сервер будет доступен только локально.
|
||||
|
||||
OLLAMA_FLASH_ATTENTION=1
|
||||
|
||||
Оптимизированная реализация attention для ускорения.
|
||||
|
||||
OLLAMA_KV_CACHE_TYPE=q8_0
|
||||
|
||||
Квантизированный KV cache для экономии памяти.
|
||||
|
||||
При данной видеокарте я также добавил в конфигурацию, что работа должна быть от CPU.
|
||||
|
||||
---
|
||||
|
||||
# 4. Создание пользователя сервиса
|
||||
|
||||
Сервис Ollama запускается не от root.
|
||||
|
||||
sudo useradd -r -s /bin/false ollama
|
||||
|
||||
Параметры:
|
||||
|
||||
-r системный пользователь
|
||||
-s запрет входа в shell
|
||||
|
||||
---
|
||||
|
||||
# 5. Запуск сервиса
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
sudo systemctl enable ollama
|
||||
|
||||
sudo systemctl start ollama
|
||||
|
||||
Проверка:
|
||||
|
||||
sudo systemctl status ollama
|
||||
|
||||
Если всё работает:
|
||||
|
||||
Active: active (running)
|
||||
|
||||
---
|
||||
|
||||
# 6. Проверка API Ollama
|
||||
|
||||
curl http://localhost:11434/api/tags
|
||||
|
||||
Если сервер работает — возвращается JSON.
|
||||
|
||||
---
|
||||
|
||||
# 7. Установка моделей
|
||||
|
||||
Пример установки:
|
||||
|
||||
ollama pull qwen2.5-coder:1.5b
|
||||
|
||||
Также была установлена:
|
||||
|
||||
gpt-oss:20b
|
||||
|
||||
Проверка:
|
||||
|
||||
ollama list
|
||||
|
||||
---
|
||||
|
||||
# 8. ПРОБЛЕМА: после reboot исчезли модели
|
||||
|
||||
После перезагрузки сервера:
|
||||
|
||||
sudo reboot
|
||||
|
||||
команда
|
||||
|
||||
ollama list
|
||||
|
||||
показывала:
|
||||
|
||||
NAME ID SIZE MODIFIED
|
||||
|
||||
то есть список моделей был пустым.
|
||||
|
||||
Хотя модели были скачаны ранее.
|
||||
|
||||
---
|
||||
|
||||
# 9. Причина проблемы
|
||||
|
||||
Модели были скачаны под пользователем:
|
||||
|
||||
user
|
||||
|
||||
и лежали в директории:
|
||||
|
||||
/home/user/.ollama
|
||||
|
||||
Но сервис Ollama работает под пользователем:
|
||||
|
||||
ollama
|
||||
|
||||
Поэтому он ищет модели в:
|
||||
|
||||
/usr/share/ollama/.ollama
|
||||
|
||||
Получилась ситуация:
|
||||
|
||||
модели существуют
|
||||
но Ollama их не видит
|
||||
|
||||
---
|
||||
|
||||
# 10. Диагностика
|
||||
|
||||
Проверяем пользователя процесса:
|
||||
|
||||
ps -o user= -p 1035
|
||||
|
||||
результат:
|
||||
|
||||
ollama
|
||||
|
||||
Проверяем пользователя:
|
||||
|
||||
getent passwd ollama
|
||||
|
||||
ollama:x:999:988::/usr/share/ollama:/bin/false
|
||||
|
||||
---
|
||||
|
||||
Проверяем папки:
|
||||
|
||||
sudo ls /usr/share/ollama/.ollama/models
|
||||
|
||||
Но модели лежали здесь:
|
||||
|
||||
/home/user/.ollama/models
|
||||
|
||||
---
|
||||
|
||||
# 11. Поиск manifests
|
||||
|
||||
sudo find / -type d -name "manifests" 2>/dev/null
|
||||
|
||||
результат:
|
||||
|
||||
/home/user/.ollama/models/manifests
|
||||
/usr/share/ollama/.ollama/models/manifests
|
||||
|
||||
Это подтвердило наличие двух разных директорий моделей.
|
||||
|
||||
---
|
||||
|
||||
# 12. Решение: перенос моделей
|
||||
|
||||
sudo mv /home/user/.ollama/models/* /usr/share/ollama/.ollama/models/
|
||||
|
||||
---
|
||||
|
||||
# 13. Исправление прав
|
||||
|
||||
sudo chown -R ollama:ollama /usr/share/ollama/.ollama
|
||||
|
||||
---
|
||||
|
||||
# 14. Перезапуск сервиса
|
||||
|
||||
sudo systemctl restart ollama
|
||||
|
||||
---
|
||||
|
||||
# 15. Проверка
|
||||
|
||||
ollama list
|
||||
|
||||
результат:
|
||||
|
||||
qwen2.5-coder:1.5b
|
||||
gpt-oss:20b
|
||||
|
||||
Модели снова доступны.
|
||||
|
||||
---
|
||||
|
||||
# 16. Удаление старой директории
|
||||
|
||||
sudo rm -rf /home/user/.ollama
|
||||
|
||||
Теперь существует только одна директория моделей.
|
||||
|
||||
---
|
||||
|
||||
# 17. Проверка порта Ollama
|
||||
|
||||
ss -ltnp | grep 11434
|
||||
|
||||
результат:
|
||||
|
||||
LISTEN *:11434
|
||||
|
||||
Это означает, что сервер принимает подключения из сети.
|
||||
|
||||
---
|
||||
|
||||
# 18. Просмотр файлов моделей
|
||||
|
||||
cd /usr/share/ollama/.ollama/models/blobs
|
||||
|
||||
ls -lhS --reverse
|
||||
|
||||
Самые большие файлы — сами модели.
|
||||
|
||||
---
|
||||
|
||||
# 19. Подключение с ноутбука
|
||||
|
||||
На ноутбуке в отдельном терминале открывается SSH туннель:
|
||||
|
||||
ssh -N -L 11434:localhost:11434 user@10.111.111.40
|
||||
|
||||
Это создаёт соединение:
|
||||
|
||||
localhost:11434 (ноутбук)
|
||||
↓
|
||||
10.111.111.40:11434 (сервер Ollama)
|
||||
После этого снова будет запрос пароля.
|
||||
|
||||
Теперь любые программы на ноутбуке могут использовать сервер.
|
||||
Введите пароль и нажмите **Enter**.
|
||||
|
||||
После ввода пароля терминал **ничего не покажет — это нормально**.
|
||||
|
||||
Он будет выглядеть примерно так:
|
||||
|
||||
|
||||
(пустой терминал)
|
||||
|
||||
|
||||
Это означает, что туннель работает.
|
||||
|
||||
⚠ **ВАЖНО**
|
||||
|
||||
Не закрывайте этот терминал.
|
||||
|
||||
Если его закрыть, туннель пропадёт и Codex перестанет видеть сервер.
|
||||
|
||||
---
|
||||
|
||||
# 20. Проверка подключения
|
||||
# Шаг 4. Запустить Codex
|
||||
|
||||
curl http://localhost:11434
|
||||
Теперь откройте **ещё один новый терминал**.
|
||||
|
||||
Ответ:
|
||||
Введите команду:
|
||||
|
||||
Ollama is running
|
||||
|
||||
---
|
||||
|
||||
# 21. Использование моделей
|
||||
|
||||
В отдельном терминале запускаем codex через ollama:
|
||||
|
||||
ollama launch codex
|
||||
|
||||
Выбираем нужную модель - всё!
|
||||
|
||||
# Итог
|
||||
|
||||
Сервер работает как удалённый backend для LLM.
|
||||
|
||||
Он:
|
||||
|
||||
- принимает подключения по сети
|
||||
- хранит модели централизованно
|
||||
- управляется через systemd
|
||||
- поддерживает CPU и GPU режим
|
||||
|
||||
---
|
||||
|
||||
# Шаг 5. Настройка Codex
|
||||
|
||||
При первом запуске Codex может предложить разные настройки.
|
||||
|
||||
Если появляется вопрос — выбирайте:
|
||||
|
||||
|
||||
skip
|
||||
|
||||
|
||||
---
|
||||
|
||||
# Шаг 6. Выбор модели
|
||||
|
||||
Codex предложит выбрать модель.
|
||||
|
||||
Рекомендуемые модели:
|
||||
|
||||
|
||||
qwen2.5-coder:0.5b
|
||||
|
||||
|
||||
или
|
||||
|
||||
|
||||
qwen2.5-coder:1.5b
|
||||
|
||||
|
||||
⚠ **Не выбирайте**
|
||||
|
||||
|
||||
gpt-oss
|
||||
|
||||
|
||||
У сервера недостаточно памяти для этой модели.
|
||||
|
||||
---
|
||||
|
||||
# Шаг 7. Работа
|
||||
|
||||
После выбора модели Codex начнёт работать.
|
||||
|
||||
Теперь можно:
|
||||
|
||||
- писать код
|
||||
- задавать вопросы
|
||||
- просить Codex редактировать файлы
|
||||
|
||||
Все запросы будут отправляться на сервер с моделями.
|
||||
|
||||
---
|
||||
|
||||
# Важное предупреждение
|
||||
|
||||
Во время работы должны быть открыты **два терминала**.
|
||||
|
||||
### Терминал №1 — SSH-туннель
|
||||
|
||||
|
||||
ssh -N -L 11434:localhost:11434 user@10.111.111.40
|
||||
|
||||
|
||||
### Терминал №2 — Codex
|
||||
|
||||
|
||||
ollama launch codex
|
||||
|
||||
|
||||
Если закрыть **терминал с туннелем**, Codex перестанет работать.
|
||||
|
||||
---
|
||||
|
||||
# Если Codex перестал отвечать
|
||||
|
||||
Проверьте:
|
||||
|
||||
1. открыт ли терминал с SSH-туннелем
|
||||
2. работает ли сервер
|
||||
3. работает ли интернет
|
||||
|
||||
После этого можно перезапустить Codex.
|
||||
Reference in New Issue
Block a user