Запуск 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 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 } } server { listen 80; server_name sentry.example.org; return 301 }
Как получить бесплатные SSL-сертификаты от LetsEncypt читаем в статье.
Если у вас нет файла /etc/nginx/htpasswd, то сгенерируйте его:
echo "<USERNAME>:`openssl passwd -apr1`" > /etc/nginx/htpasswd
Укажите нужный вам <USERNAME>.
Обновление
Если вы захотите обновить 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 и разрешить доступ от "Ненадежных приложений":

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