Введение
Необходимо поставить систему мониторинга ошибок сайта Sentry. Рекомендуемый
разработчиками способ установки — использование Docker контейнера. Так и будем делать. Для удобства миграции и распределения нагрузки буду ставить на отдельную VM.
Параметры VM:
- HDD 32G
- Memmory 8G
- CPU 2cores
Базовая система
В качестве базовой системы я буду использовать Debian 10. Установка ничем не примечательна, выбираю минимальную конфигурацию.

После установки ставлю mc и qemu-guest-agent.
apt install mc qemu-guest-agentУстановка Docker
Добавляем GPG ключ
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascДобавляем репозиторий
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt updateСтавим Docker CE
sudo apt install docker-ceПробуем выполнить тестовый контейнер
sudo docker run hello-worldЕсли все нормально увидим следующий вывод:

Установка Sentry
Для всех контейнеров будем использовать официальные образы.
Поднимаем и запускаем redis контейнер
docker run -d --name sentry-redis redis
Проверяем результат
docker ps
Поднимаем и запускаем postgresql контейнер
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgresПроверяем

Генерируем ключ, который будет использоваться всеми Sentry контейнерами
docker run --rm sentry config generate-secret-key
Полученный ключ необходимо вставлять вместо <secret-key> во время следующих шагов.
Для инициализации базы в контейнере Sentry выполняем
docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
Процесс достаточно затяжной. В процессе предлагает создать аккаунт пользователя. Соглашаемся, вводим данные

Завершается инициализация

Запускаем контейнер с Sentry
docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentryНапоминаю, что вместо <secret-key> указываем сгенерированный ключ
Смотрим результат
docker ps
Теперь необходимо запустить Sentry cron и несколько worker контейнеров все с тем же ключом
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cronНу и пара-тройка воркеров с разными именами
docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-2 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-3 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run workerСмотрим что вышло
docker ps
Подключаемся браузером по адресу IP_VM:9000

Входим пользователем, созданным на этапе инициализации базы данных, в качестве логина необходимо ввести указанную почту.
В случае необходимости, можно добавить нового пользователя в командной строке
docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuserНа этом установка Sentry завершена.