Установка Sherpa AI Server#
Установка Sherpa AIServer#
Рекомендуемый способ: автоматическая установка через скрипты#
Рекомендуется для большинства пользователей. Скрипты автоматически выполняют все шаги установки и обновления.
Установка#
После распаковки архива запустите скрипт установки:
tar -xvzf "$(ls docker_aiserver_client_files_*.tgz | sort -V | tail -n 1)"
cd sh_scripts && chmod +x *.sh && cd ..
sudo ./sh_scripts/install.sh
Скрипт проведёт вас через все шаги: выбор модели ИИ, загрузку Docker-образов, настройку окружения и запуск сервисов.
Ручная установка. Если вы хотите установить систему вручную или вам нужен полный контроль над каждым шагом — следуйте инструкции ниже.
Распаковка клиентских файлов#
На этом этапе вы распакуете архив с клиентскими файлами и подготовите систему к установке.
Распаковка архива с клиентскими файлами#
# Найдите и распакуйте архив (автоматически выбирается самая свежая версия)
tar -xvzf "$(ls docker_aiserver_client_files_*.tgz | sort -V | tail -n 1)"
💡 Комментарии к распаковке архива
tar -xvzf "$(ls docker_aiserver_client_files_*.tgz | sort -V | tail -n 1)" - распаковывает архив клиентских файлов
tar -xvzf- распаковывает архив с подробным выводомls docker_aiserver_client_files_*.tgz- находит все файлы архивовsort -V- сортирует версии естественно (1.0 < 1.1 < 1.10)tail -n 1- выбирает самый свежий файл
Ожидаемый результат: Будет создана директория sh_scripts/ с исполняемыми скриптами и другие необходимые файлы.
Ожидаемый результат: Будет создана директория sh_scripts/ с исполняемыми скриптами и другие необходимые файлы.
Подготовка скриптов к выполнению#
# Перейдите в директорию со скриптами
# Сделайте все скрипты исполняемыми
# Вернитесь в корневую директорию проекта
cd sh_scripts/ && chmod +x *.sh && cd ..
💡 Комментарии к подготовке скриптов
cd sh_scripts/ - переходит в директорию со скриптами установки
*chmod +x .sh - устанавливает права исполнения для всех shell-скриптов
chmod +x- добавляет право исполнения*.sh- все файлы с расширением .sh
cd .. - возвращает в корневую директорию проекта
Что делают эти команды:
chmod +x *.sh- устанавливает права исполнения для всех shell-скриптов- Это необходимо для запуска скриптов в следующих этапах установки
Структура распакованного архива:#
После распаковки вы должны увидеть следующие файлы и директории:
sh_scripts/- директория с установочными скриптамиdownload_all_latest_docker_images.sh- скрипт для скачивания Docker-образовload_all_docker_images.sh- скрипт для загрузки образов в Dockerextract_models.sh- скрипт для распаковки моделей ИИextract_vllm.sh- скрипт для распаковки LLM-моделей
docker-compose.yml- конфигурация Docker Compose для клиентской установки.env- файл с переменными окружения для настройки системы
Проверка успешности распаковки:#
# Проверьте содержимое директории
ls -la
# Убедитесь, что скрипты исполняемые
ls -la sh_scripts/*.sh
💡 Комментарии к проверке распаковки
ls -la - показывает подробное содержимое директории
-l- длинный формат-a- показывает скрытые файлы
ls -la sh_scripts/*.sh - проверяет скрипты в директории sh_scripts
Выполнение скриптов для разархивации#
Загрузка Docker-образов#
# Запустите скрипт загрузки Docker-образов
sudo ./sh_scripts/load_all_docker_images.sh
💡 Комментарии к загрузке Docker-образов
sudo ./sh_scripts/load_all_docker_images.sh - запускает скрипт загрузки Docker-образов
Что делает скрипт:
- Загружает все Docker-образы из скачанных .tar.gz файлов
- Импортирует образы в локальный Docker registry
- Проверяет успешность загрузки
Распаковка моделей ИИ#
# Запустите скрипт распаковки основных моделей
sudo ./sh_scripts/extract_models.sh
💡 Комментарии к распаковке основных моделей
sudo ./sh_scripts/extract_models.sh - запускает скрипт распаковки моделей
Что делает скрипт:
- Распаковывает модель Whisper для распознавания речи
- Распаковывает модель BGE Reranker для улучшения поиска
- Распаковывает модели для генерации эмбеддингов
- Создает необходимые директории
- Проверяет успешность распаковки
# Запустите скрипт распаковки LLM моделей
sudo ./sh_scripts/extract_vllm.sh
💡 Комментарии к распаковке LLM модели
sudo ./sh_scripts/extract_vllm.sh - запускает скрипт распаковки LLM модели
Что делает скрипт:
- Распаковывает модели
- Помещает файлы непосредственно в директорию моделей
- Проверяет содержимое после распаковки
Структура директорий после распаковки(примерная):#
./whisper/
└── models/
├── base.pt
└── ...
./bge_reranker/
└── models/
└── bge-reranker-large/
├── config.json
├── model.bin
└── ...
./embed-server/app/
└── model-store/
└── sentence-transformers/
└── paraphrase-multilingual-MiniLM-L12-v2/
├── config.json
├── pytorch_model.bin
└── ...
./llm-server/models/
├── meta-llama/
│ └── Meta-Llama-3-8B-Instruct/
│ ├── config.json
│ ├── model-00001-of-00004.safetensors
│ ├── model-00002-of-00004.safetensors
│ └── ...
└── tokenizer.json
Настройка конфигурации системы#
Sherpa AIServer требует настройки переменных окружения в файле .env перед запуском.
Открытие файла конфигурации#
# Откройте файл .env в текстовом редакторе
nano ./.env
Или используйте любой текстовый редактор:
# Vim
vim ./.env
# VS Code (если установлен)
code ./.env
💡 Комментарии к открытию файла конфигурации
nano ./.env - открывает файл .env в редакторе nano
nano- простой текстовый редактор./.env- путь к файлу конфигурации
vim ./.env - открывает файл в редакторе Vim code ./.env - открывает файл в VS Code (если установлен)
Рекомендация: Используйте редактор, с которым вы знакомы
Основные параметры конфигурации#
Настройки основного сервера (aiserver):
# IP-адрес сервера (измените на ваш статический IP)
HOST_IP=127.0.0.1
# Доменное имя (измените на ваш домен)
NGINX_DOMAIN_NAME=aiserver.sherparpa.ru
# Максимальная длина сообщений (в токенах)
MAX_TOKENS_MESSAGE=32000
Настройки базы данных PostgreSQL:
# Пароль PostgreSQL (УСТАНОВИТЕ СВОЙ БЕЗОПАСНЫЙ ПАРОЛЬ)
POSTGRES_PASSWORD=password
Настройки LLM сервера:
Выбор модели ИИ: Выберите одну из доступных моделей, раскомментировав нужную строку и закомментировав остальные:
# === ВЫБОР МОДЕЛИ ИИ ===
# Раскомментируйте ТОЛЬКО ОДНУ из моделей ниже:
# Llama 3.1 модель (рекомендуется для общего использования)
LLM_COMPLETION_MODEL_NAME=/model-store/meta-llama/Meta-Llama-3-8B-Instruct
LLM_CHAT_TEMPLATE=/model-templates/tool_chat_template_llama3.1_json.jinja
LLM_TOOL_CALL_PARSER=llama3_json
# Qwen модель (альтернативная модель)
# LLM_COMPLETION_MODEL_NAME=/model-store/Qwen3-30B-A3B-AWQ
# LLM_COMPLETION_MODEL_NAME=/model-store/Qwen3.6-35B-A3B-AWQ
# LLM_CHAT_TEMPLATE=/model-templates/tool_chat_template_qwen3coder.jinja
# LLM_TOOL_CALL_PARSER=hermes
# OCR модель (специализированная для распознавания текста)
# LLM_COMPLETION_MODEL_NAME=/model-store/olmOCR-2-7B-1025-FP8
# === КОНЕЦ ВЫБОРА МОДЕЛИ ===
Безопасность и пароли#
Критически важно: Измените все пароли по умолчанию на надежные:
# Генерация надежных паролей
openssl rand -base64 32
# Или используйте pwgen, если установлен
pwgen -s 32 1
Рекомендации по паролям:
- Минимум 32 символа
- Используйте буквы, цифры и специальные символы
- Не используйте словарные слова
- Храните пароли в безопасном месте
Проверка конфигурации#
После редактирования файла .env проверьте корректность настроек:
# Проверьте синтаксис файла
cat .env | grep -v '^#' | grep '=' | wc -l
# Проверьте наличие обязательных переменных
grep -E "(POSTGRES_PASSWORD|HOST_IP|NGINX_DOMAIN_NAME)" .env
💡 Комментарии к проверке конфигурации
cat .env | grep -v '^#' | grep '=' | wc -l - подсчитывает количество переменных окружения
cat .env- выводит содержимое файлаgrep -v '^#'- исключает комментарии (строки начинающиеся с #)grep '='- оставляет только строки с переменнымиwc -l- подсчитывает количество строк
grep -E "(POSTGRES_PASSWORD|HOST_IP|NGINX_DOMAIN_NAME)" .env - проверяет наличие обязательных переменных
-E- расширенные регулярные выражения- Перечисляет обязательные переменные через |
Создание резервной копии#
# Создайте резервную копию настроек
cp .env .env.backup
💡 Комментарии к созданию резервной копии
cp .env .env.backup - создает резервную копию файла конфигурации
cp- copy (копирование).env- исходный файл.env.backup- файл резервной копии
Важно: Без правильной настройки .env файла система не запустится корректно.
Копирование SSL-сертификатов#
Для обеспечения безопасного HTTPS-соединения необходимо скопировать SSL-сертификаты в директорию ./nginx/config/certs/:
# Создайте директорию для nginx из default (если не существует)
cp -a ./nginx/config/default/. ./nginx/config/
# Скопируйте ваши SSL-сертификаты
# Замените на пути к вашим реальным сертификатам
cp /path/to/your/certificate.crt ./nginx/config/certs/aiserver.crt
cp /path/to/your/private.key ./nginx/config/certs/aiserver.key
# Или если у вас wildcard сертификат:
cp /path/to/your/wildcard.crt ./nginx/config/certs/aiserver.crt
cp /path/to/your/wildcard.key ./nginx/config/certs/aiserver.key
💡 Комментарии к копированию SSL-сертификатов
mkdir -p ./nginx/config/certs/ - создает директорию для сертификатов
-p- создает родительские директории если они не существуют
cp /path/to/your/certificate.crt ./nginx/config/certs/aiserver.crt - копирует сертификат cp /path/to/your/private.key ./nginx/config/certs/aiserver.key - копирует приватный ключ
Требования к сертификатам:
- Сертификат должен быть в формате
.crtили.pem - Приватный ключ должен быть в формате
.key - Имена файлов должны быть
aiserver.crtиaiserver.key
Важно: Убедитесь что сертификаты имеют правильные права доступа:
# Установите правильные права на сертификаты
chmod 644 ./nginx/config/certs/*.crt
chmod 600 ./nginx/config/certs/*.key
chown 101:101 ./nginx/config/certs/*.key
chown 101:101 ./nginx/config/certs/*.crt
ВНИМАНИЕ: получить сертификаты необходимо у администратора сети либо в вашем корпоративном центре сертификации, в случае отсутствия данных пунктов вы можете воспользоваться статьей получения сертификатов
Запуск системы#
После завершения всех подготовительных этапов можно запустить Sherpa AIServer. Система будет работать в фоновом режиме как набор Docker-контейнеров.
Важно: Клиент получает файл docker-compose.yml, который содержит конфигурацию всех сервисов. Убедитесь, что вы используете именно этот файл для запуска системы.
Запуск базовых сервисов#
Базовые сервисы запускаются без указания профиля:
docker compose up -d
💡 Базовые сервисы (всегда запускаются)
| Сервис | Порт | Описание |
|---|---|---|
aiserver |
— | Основной бэкенд |
aiserver-nginx |
80, 443 | Веб-сервер / reverse proxy |
aiserver-pg |
5432 | PostgreSQL |
aiserver-embed |
3004 | Сервер эмбеддингов |
aiserver-code-interpreter |
3001 | Интерпретатор кода |
aiserver-websocket |
— | WebSocket-сервер |
Профили запуска (LLM и дополнительные сервисы)#
Сервисы LLM и дополнительные компоненты запускаются только при явном указании профиля. Можно комбинировать несколько профилей через --profile.
LLM-серверы (выберите один в зависимости от оборудования):
| Профиль | Сервис | Порт | Описание |
|---|---|---|---|
gpu |
aiserver-llm-server |
3003 | Основной LLM-сервер на GPU (рекомендуется) |
gpu2 |
aiserver-llm-server2 |
3006 | Второй LLM-сервер на второй видеокарте (Qwen3) |
cpu |
aiserver-llm-server-cpu |
3007 | LLM-сервер на CPU (без GPU) |
Дополнительные сервисы:
| Профиль | Сервис | Порт | Описание |
|---|---|---|---|
whisper |
aiserver-whisper |
3005 | Распознавание речи (требует GPU) |
reranker |
aiserver-bge-reranker |
8001 | Переранжирование результатов поиска (требует GPU) |
full |
whisper + reranker | 3005, 8001 | Оба дополнительных сервиса сразу |
Примеры запуска
# GPU — основной LLM-сервер (наиболее распространённый вариант)
docker compose --profile gpu up -d
# GPU + распознавание речи Whisper
docker compose --profile gpu --profile whisper up -d
# GPU + переранжирование BGE Reranker
docker compose --profile gpu --profile reranker up -d
# GPU + все дополнительные сервисы
docker compose --profile gpu --profile full up -d
# Два LLM-сервера на разных GPU
docker compose --profile gpu --profile gpu2 up -d
# CPU-режим (без GPU)
docker compose --profile cpu up -d
# CPU + все дополнительные сервисы
docker compose --profile cpu --profile full up -d
Важно: Учитывайте объём доступной видеопамяти (VRAM). При запуске нескольких GPU-профилей убедитесь, что на сервере достаточно видеопамяти. При нехватке памяти система может работать нестабильно или не запуститься.
Проверка статуса контейнеров#
# Проверьте статус всех запущенных контейнеров
docker compose ps
# Или используйте docker ps для детальной информации
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
💡 Комментарии к проверке статуса
docker compose ps - показывает статус всех контейнеров Docker Compose
- Выводит имена, статус и порты контейнеров
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" - показывает детальную информацию о контейнерах
--format- задает пользовательский формат выводаtable- табличный формат{{.Names}}- имена контейнеров{{.Status}}- статус контейнеров{{.Ports}}- открытые порты
Ожидаемый вывод (зависит от выбранного profile):
Базовые сервисы (без профилей):
NAME STATUS PORTS
aiserver Up 2 minutes
aiserver-nginx Up 2 minutes 0.0.0.0:80->8080/tcp, 0.0.0.0:443->1443/tcp
aiserver-pg Up 2 minutes 0.0.0.0:5432->5432/tcp
aiserver-embed Up 2 minutes 0.0.0.0:3004->443/tcp
aiserver-code-interpreter Up 2 minutes 0.0.0.0:3001->3001/tcp
aiserver-websocket Up 2 minutes
С профилем gpu (основной LLM на GPU):
aiserver-llm-server Up 2 minutes 0.0.0.0:3003->8000/tcp
С профилем gpu2 (второй LLM на второй видеокарте):
aiserver-llm-server2 Up 2 minutes 0.0.0.0:3006->8000/tcp
С профилем cpu (LLM на CPU):
aiserver-llm-server-cpu Up 2 minutes 0.0.0.0:3007->8000/tcp
С профилем whisper (добавляется):
aiserver-whisper Up 2 minutes 0.0.0.0:3005->8000/tcp
С профилем reranker (добавляется):
aiserver-bge-reranker Up 2 minutes 0.0.0.0:8001->8000/tcp
Все запущенные контейнеры должны иметь статус "Up" и показывать открытые порты.
Проверка логов контейнеров#
# Посмотрите логи основного сервера
docker compose logs aiserver
# Посмотрите логи всех сервисов
docker compose logs
# Мониторинг логов в реальном времени
docker compose logs -f aiserver
💡 Комментарии к проверке логов
docker compose logs aiserver - показывает логи конкретного сервиса
aiserver- имя сервиса
docker compose logs - показывает логи всех сервисов
docker compose logs -f aiserver - следит за логами в реальном времени
-f- follow (следить за новыми сообщениями)
Проверка на ошибки:
- Ищите сообщения об ошибках подключения к базам данных
- Проверьте загрузку моделей ИИ
- Убедитесь в корректности SSL сертификатов
Проверка доступности сервисов#
Проверка основного веб-интерфейса:
# Проверьте HTTP доступность (замените на ваш домен)
curl -I http://aiserver.sherparpa.ru
# Проверьте HTTPS доступность (замените на ваш домен)
curl -I https://aiserver.sherparpa.ru
# Ожидаемый ответ: HTTP/2 200 или перенаправление на /login
💡 Комментарии к проверке веб-интерфейса
curl -I http://aiserver.sherparpa.ru - проверяет HTTP доступность
-I- показывает только заголовки ответаhttp://aiserver.sherparpa.ru- URL для проверки
curl -I https://aiserver.sherparpa.ru - проверяет HTTPS доступность
Ожидаемый ответ: HTTP/2 200 или перенаправление на /login
Проверка сервисов ИИ:
# Проверьте LLM сервер
curl -X POST "http://localhost:3003/v1/completions" \
-H "Content-Type: application/json" \
-d '{"model": "meta-llama/Meta-Llama-3-8B-Instruct", "prompt": "Hello", "max_tokens": 10}'
<details>
<summary>💡 Комментарии к проверке LLM сервера</summary>
**curl -X POST "http://localhost:3003/v1/completions"** - проверяет LLM сервер
- `-X POST` - HTTP метод POST
- `"http://localhost:3003/v1/completions"` - URL API endpoint
- `-H "Content-Type: application/json"` - заголовок Content-Type
- `-d '{"model": "...", "prompt": "Hello", "max_tokens": 10}'` - данные запроса в JSON формате
</details>
### Проверка подключения к базам данных
```bash
# Проверьте подключение к PostgreSQL
docker compose exec aiserver-pg psql -U postgres -d postgres -c "SELECT version();"
Тестирование основных функций#
Веб-интерфейс:
- Откройте браузер и перейдите на
https://aiserver.sherparpa.ru - Должна открыться страница входа в систему
- Проверьте возможность регистрации/входа
Управление системой#
Остановка системы:
# Остановите все сервисы (с учетом запущенных profiles)
docker compose down
Перезапуск сервисов:
# Перезапустите конкретный сервис
docker compose restart aiserver
# Перезапустите все запущенные сервисы
docker compose restart
# Перезапустите сервисы с определенным profile
docker compose --profile whisper restart aiserver-whisper
Просмотр ресурсов:
# Проверьте использование ресурсов
docker stats
# Проверьте использование GPU
nvidia-smi
💡 Комментарии к управлению системой
Остановка системы:
docker compose down- останавливает все сервисы и удаляет контейнерыdocker compose down -v- останавливает сервисы и удаляет volumes (данные будут потеряны!)
Перезапуск сервисов:
docker compose restart aiserver- перезапускает конкретный сервисdocker compose restart- перезапускает все сервисыdocker compose --profile whisper restart aiserver-whisper- перезапускает сервис с определенным profile
Просмотр ресурсов:
docker stats- показывает использование CPU, памяти, сети для контейнеровnvidia-smi- показывает использование GPU NVIDIA
Возможные проблемы при запуске:#
- Контейнеры не запускаются: Проверьте логи с
docker compose logs - Проблемы с SSL: Убедитесь в корректности сертификатов
- Ошибки подключения к БД: Проверьте переменные окружения в
.env - GPU проблемы: Проверьте настройки CUDA_VISIBLE_DEVICES
После успешного запуска и тестирования системы установка Sherpa AIServer завершена.