Установка и обновление через Docker
Каждый релиз — это самодостаточный архив, который включает docker-compose.yml и все необходимые Docker-образы с сервисами Moodrec. Для запуска требуются только Docker и Docker Compose. Параметры сервисов (порты, пароли, домен и т.д.) задаются через единый файл .env, который создаётся автоматически при первом запуске. Все компоненты работают в изолированной Docker-сети — наружу открыты только порты веб-интерфейса (по умолчанию 80 и 443).
Требования
Перед началом убедитесь, что на сервере установлены:
- Docker версии 20.10 или выше
- Docker Compose версии 2.0 или выше (плагин
docker compose)
Если Docker ещё не установлен, воспользуйтесь официальной инструкцией.
Быстрый старт
1. Скачайте релиз
Загрузите архив нужной версии и создайте директорию для установки:
curl -L -o release-1.0.0.tar.gz https://moodrec-download.example/release-1.0.0.tar.gz
2. Распакуйте архив
Распакуйте архив в директорию новой версии:
mkdir -p /opt/moodrec/releases/1.0.0
tar -xf release-1.0.0.tar.gz -C /opt/moodrec/releases/1.0.0 --strip-components=1
3. Запустите установку
Запустите установку при помощи команд:
cd /opt/moodrec/releases/1.0.0
./moodrec.sh deploy
При первом запуске Moodrec автоматически:
- создаст файл конфигурации
/opt/moodrec/shared/.envна основе шаблона, - сгенерирует безопасные пароли для всех сервисов,
- загрузит Docker-образы и запустит все компоненты.
4. Проверьте запуск
Проверьте, какие сервисы были запущены:
docker compose -p moodrec ps --format "table {{.Name}}\t{{.Image}}\t{{.Command}}\t{{.Service}}\t{{.Ports}}"
Пример вывода:
NAME IMAGE COMMAND SERVICE PORTS <no value>
moodrec-audience moodrec/audience:1.0.0-5997570 "/opt/moodrec/bin/au…" audience
moodrec-auth moodrec/auth:1.0.0-5997570 "/opt/moodrec/bin/au…" auth
moodrec-catboss moodrec/catboss:1.0.0-5997570 "/opt/moodrec/bin/ca…" catboss
moodrec-clickhouse clickhouse/clickhouse-server:25.8 "/entrypoint.sh" clickhouse 8123/tcp, 9000/tcp, 9009/tcp healthy
moodrec-events moodrec/events:1.0.0-5997570 "/opt/moodrec/bin/ev…" events
moodrec-gateway moodrec/gateway:1.0.0-5997570 "/opt/moodrec/bin/ga…" gateway
moodrec-kafka confluentinc/cp-kafka:7.7.7 "/etc/confluent/dock…" kafka 9092/tcp healthy
moodrec-kvrocks apache/kvrocks:latest "kvrocks -c /var/lib…" kvrocks 6666/tcp healthy
moodrec-mongo mongo:8.0.17 "docker-entrypoint.s…" mongo 27017/tcp healthy
moodrec-offers moodrec/offers:1.0.0-5997570 "/opt/moodrec/bin/of…" offers
moodrec-tasks moodrec/tasks:1.0.0-5997570 "/opt/moodrec/bin/ta…" tasks
moodrec-trans moodrec/trans:1.0.0-5997570 "/opt/moodrec/bin/tr…" trans
moodrec-ui moodrec/ui:1.0.0-5997570 "/docker-entrypoint.…" ui 127.0.0.1:80->80/tcp, 127.0.0.1:443->443/tcp
moodrec-vectors moodrec/vectors:1.0.0-5997570 "/opt/moodrec/bin/ve…" vectors
Проверьте, какие тома были созданы:
docker volume ls --filter name=moodrec
Пример вывода:
DRIVER VOLUME NAME
local moodrec_clickhouse-data
local moodrec_kafka-data
local moodrec_kafka-secrets
local moodrec_kvrocks_data
local moodrec_mongodb-configdb
local moodrec_mongodb-data
local moodrec_nginx-acme-state
local moodrec_vectors-index
Откройте файл /opt/moodrec/shared/.env и проверьте настройки. Здесь хранятся все параметры окружения — адреса, порты, ключи интеграций и прочее. Значения по умолчанию подходят для большинства случаев, но вы можете изменить их под свои нужды.
Структура на сервере
После установки на сервере появится следующая структура:
/opt/moodrec/
├── current → releases/1.0.0 # симлинк на активную версию
├── releases/
│ ├── 1.0.0/ # файлы текущей версии
│ └── ... # предыдущие версии
└── shared/
└── .env # конфигурация (общая для всех версий)
Каждая версия хранится в отдельной папке. Конфигурация — общая и не удаляется при обновлении.
Обновление
Процесс обновления почти не отличается от первой установки.
Сперва необходимо скачать архив с новой версией:
curl -L -o release-1.1.0.tar.gz https://releases.example.com/moodrec/release-1.1.0.tar.gz
Затем распакуйте архив в новую директорию:
mkdir -p /opt/moodrec/releases/1.1.0
tar -xf release-1.1.0.tar.gz -C /opt/moodrec/releases/1.1.0 --strip-components=1
Запустите деплой:
cd /opt/moodrec/releases/1.1.0
./moodrec.sh deploy
При обновлении ваш файл /opt/moodrec/shared/.env сохраняется. Если в новой версии появились новые параметры, они будут добавлены автоматически со значениями по умолчанию.
Откат на предыдущую версию
Если что-то пошло не так, вы можете быстро вернуться на любую предыдущую версию:
cd /opt/moodrec/releases/1.0.0
./moodrec.sh deploy
Конфигурация останется прежней — переключатся только сервисы и Docker-образы.
Откат не отменяет миграции базы данных. Если новая версия изменила схему БД, может потребоваться ручное восстановление данных.
Управление сервисами
Все команды выполняются из директории активной версии:
cd /opt/moodrec/current
./moodrec.sh status # посмотреть состояние сервисов
./moodrec.sh logs # логи всех сервисов
./moodrec.sh logs gateway # логи конкретного сервиса
./moodrec.sh restart # перезапустить всё
./moodrec.sh stop # остановить
./moodrec.sh start # запустить
Или напрямую через Docker Compose:
docker compose -p moodrec ps
Часто возникающие проблемы
Сервис не запускается
Проверьте логи:
./moodrec.sh logs gateway
Как загрузить образы вручную?
cd /opt/moodrec/current
gunzip -c images.tar.gz | docker load
Полный сброс
Сброс удалит все данные и конфигурацию:
docker compose -p moodrec down -v
rm -f /opt/moodrec/shared/.env