Используемая модель (обязательно Image-text-to-text) https://huggingface.co/unsloth/gemma-3-12b-it-GGUF
При полной смене модели добавить папку в /ollama/:
- ollama/<new_model>/Dockerfile
- ollama/<new_model>/Modelfile
- ollama/<new_model>/entrypoint.sh (скрипт для "теплого" старта)
При смене готовой модели (/ollama/gemma_12b или /ollama/gemma3_27b) изменть:
- /.env - изменить MODEL_NAME на новое имя в ollama list (gemma3-12b или gemma3-27b)
- /.env - изменить MODEL_DIR на имя каталога в /ollama (gemma_12b или gemma_27b)
Подразумевается что докер уже есть, проверяется доступность видеокарты из докера
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smiПроверка доступных моделей:
docker exec -it ollama-server ollama listЛоги контейнера:
docker logs -f ollama-serverПроверка доступа по апи:
docker exec -it vkr-check-worker curl -i http://ollama-server:11434/healthТестовый запуск:
docker exec -it ollama-server ollama run gemma3-12b "Привет"cp ./backend/.env.example ./backend/.env.production
cp ./worker/.env.example ./worker/.env.production
cp .env.example .envПосле копирования шаблонов заполните каждый из созданных .env файлов (в нужных местах приведены комментарии)
Затем настраиваем окружение для фронтенда (frontend/src/environments/environment.prod.ts), следуя комментариям
docker compose up --build -ddocker exec -it vkr-check-backend alembic upgrade headАвторизуемся в админ панели (по дефолту будет http://localhost:8155)
-
В навбаре жмем
Manage realms->Create realm-> устанавливаемRealm nameтакой же как KC_REALM изbackend/.env.productionиfrontend/src/environments/environment.prod.ts->Create -
Переключаемся на созданный REALM
-
В навбаре
Clients->Create client-> указываемClient IDтакой же как вfrontend/src/environments/environment.prod.ts-> Authentication flow оставляем галочку только уImplicit flow-> PKCE method ставимS256-> Valid redirect URIs ставим RegExp на адрес фронтенда (например: http://123.123.123.123:4200*) ->Save -
В навбаре
Realm roles->Create role-> указываемRole nameтакой же как в массиве KC_ALLOWED_ROLES изbackend/.env.production->Save -
В навбаре
Users->Add user-> Заполняем нужные поля ->Create -
На странице созданного пользователя заходим в
Role mapping->Assign role->Realm roles-> Выдаем роль созданную в пункте 4 -
На странице пользователя заходим в
Credentials->Set password-> Указываем пароль и выключаем пункт Temporary
Далее авторизация в сервисе будет по Username и паролю созданного пользователя.
Для загрузки PDF в Google Drive воркер использует OAuth-клиент из файла oauth_client.json.
-
Создайте или выберите проект в Google Cloud Console.
-
В этом проекте включите
Google Drive API:Google Cloud Console -> APIs & Services -> Enabled APIs & services -> Enable APIs and Services -> Google Drive API. -
Настройте OAuth consent screen:
Google Cloud Console -> Google Auth platform -> Branding. Укажите название приложения,User support emailи контактный email(который мы создали на имя МИЭМ). -
Выберите аудиторию в
Google Auth platform -> Audience: выберитеExternal, а в режиме тестирования добавьте нужный аккаунт(почту) вTest users. -
Создайте OAuth client:
Google Cloud Console -> Google Auth platform -> Clients -> Create Client -> Desktop appВажно: нужен именно типDesktop app, потому что код авторизуется через локальный браузер (InstalledAppFlow). -
Скачайте созданный JSON-файл и сохраните его в директории
worker/под именемoauth_client.json. Если файл лежит в другом месте или называется иначе, обновите переменнуюOAUTH_CLIENT_FILEв.env. -
Убедитесь, что в
.envкорректно заполнены:SCOPES=https://www.googleapis.com/auth/driveOAUTH_CLIENT_FILE=oauth_client.jsonPARENT_FOLDER_ID=<id папки на Google Drive> -
Перейдите в папку
worker/и запустите скриптtoken_generate.sh:cd worker ./token_generate.shПотребует ввести пароль от ВМ Скрипт выполнит авторизацию через
oauth_client.json, создаст файлtoken.jsonв директорииworker/и отправит на ВМ.
Примечания:
- Аккаунт, под которым вы проходите OAuth-авторизацию, должен иметь доступ к папке, указанной в
PARENT_FOLDER_ID.(эта папка уже создана)
Конец.
Инструкция разработчика лежит в
DEVDOCS.md