Платформа «Сократ». Инструкция по установке экземпляра

Публичный документ (сайт правообладателя, заявка в реестр российского ПО). Описывает развёртывание серверной части и установку мобильного приложения. Веб-модуль на базе LearnHouse в состав ПО не входит и данной инструкцией не устанавливается.

1. Требования к окружению

Платформенная виртуальная машина (одна на инсталляцию)

Ресурс Минимум
ОС Linux x86-64 (Ubuntu 22.04 LTS или совместимая)
CPU / RAM / диск 2 vCPU / 4 ГБ / 40 ГБ
ПО Docker + Docker Compose
Сервисы Keycloak (сервер идентификации, общий для всех школ), сервер доставки push-уведомлений

Виртуальная машина школы (одна на школу-тенант)

Ресурс Минимум
ОС Linux x86-64 (Ubuntu 22.04 LTS или совместимая)
CPU / RAM / диск 4 vCPU / 8 ГБ / 80 ГБ
Сервисы (разворачиваются автоматически) серверная часть платформы, PostgreSQL 16, Redis, Zulip, Nginx с TLS-сертификатами
Дополнительно S3-совместимое объектное хранилище (внешний сервис или MinIO)

Рабочее место администратора установки

Linux/WSL2 с Ansible ≥ 2.15; SSH-доступ к виртуальным машинам; DNS-записи api.<домен> и chat.<домен> школы, указывающие на IP машины школы.

2. Состав дистрибутива

  • Docker-образы серверной части (из реестра образов правообладателя).
  • Комплект автоматизированного развёртывания (Ansible-плейбуки и роли, шаблоны Docker Compose) — репозиторий platform-infra.
  • Мобильное приложение — RuStore (Android), App Store (iOS).

3. Установка платформенной ВМ (однократно)

  1. Развернуть Keycloak по комплекту docker/keycloak/ (Keycloak + PostgreSQL + HTTPS-прокси), создать администратора.
  2. Развернуть сервер доставки push-уведомлений: ansible-playbook playbooks/platform.yml -i inventory/platform/hosts.yml.

4. Онбординг школы (одна команда)

Заполнить инвентарь школы по образцу inventory/tenants/shkola-peremen.yml (домены, образы, секреты в ansible-vault; deploy_learnhouse оставить выключенным — веб-модуль не входит в состав ПО) и выполнить:

ansible-playbook playbooks/tenant.yml -i inventory/tenants/<slug>.yml \
  -e "tenant_slug=<slug> tenant_name='<Название школы>'"

Плейбук идемпотентен и выполняет по порядку: подготовку ОС и Docker → создание realm и клиентов в Keycloak → серверную часть платформы (API + PostgreSQL + Redis) → сервер обмена сообщениями → Nginx с выпуском TLS-сертификатов → регистрацию push → смоук-проверки (/v1/health и API сообщений отвечают 200).

5. Первичная настройка школы

  1. Войти администратором в мобильное приложение.
  2. Создать учебный год, сгенерировать календарь учебных периодов, инициализировать классы и предметы, активировать год.
  3. Завести сотрудников и учеников (учётные записи создаются с автоматическим заведением во всех подсистемах и временным паролем).

6. Установка мобильного приложения

Установить приложение из RuStore / App Store, ввести логин и пароль, выданные школой. Минимальные версии ОС: Android 9.0, iOS 16.0.

7. Обновление

Обновление серверной части: обновить версии образов в инвентаре и повторно выполнить плейбук школы (раздел 4) — процедура идемпотентна, данные сохраняются. Обновление мобильного приложения — через магазины приложений.

8. Проверка работоспособности

  • https://api.<домен школы>/v1/health → HTTP 200;
  • https://chat.<домен школы>/api/v1/server_settings → HTTP 200;
  • вход в мобильное приложение учётной записью школы выполняется успешно.