Запуск Sentry On-Premise в Docker

Я давно пользуюсь Sentry. Продолжительное время использовал sentry.io, но стал упираться в лимиты и решил вернуться на On-Premise (Standalone) версию. Сегодня я вам расскажу как быстро запустить Sentry на своём сервере, само собой под Docker, так как это уже стандарт де-факто в современном мире.
Установка
Если у вас ещё не установлен Docker, то прежде всего сделайте это:
sudo apt update
sudo apt install docker.io docker-compose
Склонируйте репозиторий OnPremise на свой сервер, где будет запущен Sentry:
git clone https://github.com/getsentry/onpremise.git
cd onpremise
Настройка
Объявите файл окружения, в нём будут храниться ваши настройки:
mv .env.example .env
Создайте Volume для вашего контейнера, что бы между перезапусками контейнера ваши данные не потерялись (там будут храниться файлы от Sentry и файлы БД от Postgres).
docker volume create --name=sentry-data
docker volume create --name=sentry-postgres
Сгенерируйте секретный ключ:
docker-compose run --rm web config generate-secret-key
В самом конце вывода команды вы увидите ключ, сохраните его в файл .env в качестве значения для SENTRY_SECRET_KEY.
Если вам необходимо использовать сторонний SMTP-сервер, то откройте на редактирование файл
config.ymlи заполните настройки. Например для Gmail это выглядит так:mail.host: 'smtp.gmail.com' mail.port: 587 mail.username: 'example@gmail.com' mail.password: 'my_password' mail.use-tls: true
Теперь проинициализируйте базу данных:
docker-compose run --rm web upgrade
В процессе вас попросят создать первый аккаунт, заполните данные, чтобы попасть в веб-интерфейс. Когда все миграции пройдут, Sentry будет готов к запуску.
Если вы будете вносить изменения в
config.ymlпозже, тогда вам придётся пересобрать контейнеры:docker-compose up --build -d
Запуск
Вы можете запустить с флагом “-d” (detach, запуск в фоне):
docker-compose up -d
Но лично я доверяю больше systemd, поэтому предлагаю добавить конфиг (указанный ниже) и запустить полноценный сервис с внешним супервайзором:
Создайте файл /etc/systemd/system/docker-sentry-onpremise.service:
[Unit]
Description=Sentry OnPremise: Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=</path/to/dir/onpremise>
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
[Install]
WantedBy=multi-user.target
Где “</path/to/dir/onpremise>” это путь до каталога onpremise, который вы создали в самом начале.
Теперь активируем и запустим наш сервис:
sudo systemctl enable docker-sentry-onpremise
sudo systemctl start docker-sentry-onpremise
Настройка Nginx
По-умолчанию веб-сервер Sentry запустится на 9000 порту, я подготовил Nginx-конфиг для проксирования на этот порт:
server {
listen 443 ssl;
server_name sentry.example.org;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
auth_basic "closed site";
auth_basic_user_file htpasswd;
location / {
proxy_pass http://localhost:9000;
}
}
server {
listen 80;
server_name sentry.example.org;
return 301 https://$host$request_uri;
}
Как получить бесплатные SSL-сертификаты от LetsEncypt читаем в статье.
Если у вас нет файла /etc/nginx/htpasswd, то сгенерируйте его:
echo "<USERNAME>:`openssl passwd -apr1`" > /etc/nginx/htpasswd
Укажите нужный вам .
Обновление
Если вы захотите обновить Sentry, то это сделать довольно просто:
cd onpremise
git pull
docker-compose build
docker-compose run --rm web upgrade
После чего перезапустите сервис, для systemd это делается так:
sudo systemctl restart docker-sentry-onpremise
Это всё, что я хотел рассказать, пишите свои вопросы в комментариях к этой статье.
Если вы используете Gmail
В случае, если вы используете Gmail как SMTP сервер, то можете столкнуться с проблемой блокировки вашего сервиса Sentry серверами Google.
Для решения проблемы необходимо перейти в раздел “Настройки Безопасности” вашей учетной записи Gmail https://myaccount.google.com/security и разрешить доступ от “Ненадежных приложений”:

Комментарии 3
Архив обсуждения. Новые комментарии закрыты.
День добрый, а если после
веб-интерфейс не открывается? При этом, если оставить 9000 порт, то ругается что порт уже используется, видимо из-за отладчика в IDE, а если выбрать другой порт, то всё запускается, но в браузере ошибка? Оно логи куда-нибудь пишет, поискать что не так?
@Egor Petrov, попробуйте без флага “-d”, ошибки будут видны в stdout
proxy_pass http://localhost:9000; - в nginx необходимо порт на ваш заменить