21 февраля 2019 г. Sentry Docker

Запуск 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 будет готов к запуску.

Запуск

Вы можете запустить с флагом "-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

Укажите нужный вам <USERNAME>.

Обновление

Если вы захотите обновить Sentry, то это сделать довольно просто:

cd onpremise
git pull
docker-compose build
docker-compose run --rm web upgrade

После чего перезапустите сервис, для systemd это делается так:

sudo systemctl restart docker-compose-sentry

Это всё, что я хотел рассказать, пишите свои вопросы в комментариях к этой статье.

Комментарии

Оставьте свой комментарий

Markdown