Документация

Установка через Docker

Версия v2.3.1 · Обновлено

Установка через Docker#

Docker Compose — самый быстрый способ запустить IncidentRelay для тестирования, демонстраций и простых self-hosted развёртываний.

Стандартная конфигурация Compose запускает:

incidentrelay             # HTTP API, UI, incoming webhooks
incidentrelay-scheduler   # reminders, escalations, periodic jobs

PostgreSQL опционален. SQLite подходит для небольших инсталляций и быстрого старта.

Архитектура по умолчанию#

Docker Compose
├── incidentrelay
│   └── Gunicorn + Flask application
├── incidentrelay-scheduler
│   └── standalone scheduler worker
└── incidentrelay-data
    └── SQLite database volume

Путь к SQLite по умолчанию внутри контейнера:

/var/lib/incidentrelay/incidentrelay.db

Путь к конфигурации по умолчанию внутри контейнера:

/etc/incidentrelay/incidentrelay.conf

Файл конфигурации выбирается через:

INCIDENTRELAY_CONFIG_FILE

Быстрый старт с SQLite#

docker compose up -d --build

Откройте UI:

http://SERVER_IP:8080/login

Показать логи:

docker compose logs -f incidentrelay
docker compose logs -f incidentrelay-scheduler

Запуск миграций#

Если миграции не запускаются автоматически точкой входа вашего контейнера, выполните:

docker compose exec incidentrelay python manage.py migrate

Создание первого пользователя-администратора#

docker compose exec incidentrelay \
  python manage.py create-admin \
    --username admin \
    --password 'change-me-123' \
    --email admin@example.com

Смените пароль и email перед использованием в продакшене.

Конфигурация SQLite по умолчанию#

Файл:

docker/incidentrelay.docker.conf

Пример:

[main]
log_level = INFO
log_file = /var/log/incidentrelay/incidentrelay.log

[server]
host = 0.0.0.0
port = 8080
public_base_url = http://localhost:8080

[database]
type = sqlite
path = /var/lib/incidentrelay/incidentrelay.db

[sqlite]
wal = true
busy_timeout = 5000

[voice]
provider = stub
providers_dir = /usr/local/lib/incidentrelay/voice_providers
callback_secret = change-me

Вариант с PostgreSQL#

Используйте PostgreSQL для:

  • более крупных команд;
  • высокого объёма алертов;
  • нескольких веб-воркеров;
  • долгосрочных продакшен-инсталляций.

Запускайте с PostgreSQL, если репозиторий предоставляет override для Compose с PostgreSQL:

docker compose \
  -f docker-compose.yml \
  -f docker-compose.postgres.yml \
  up -d

Пример конфигурации PostgreSQL:

[database]
type = postgresql
host = postgres
port = 5432
name = incidentrelay
user = incidentrelay
password = incidentrelay-change-me

Внешний доступ#

При таком отображении портов:

ports:
  - "8080:8080"

IncidentRelay доступен по адресу:

http://SERVER_IP:8080

если файрвол разрешает порт 8080.

Для продакшена лучше публиковать IncidentRelay через Nginx или HAProxy с HTTPS:

Internet -> Nginx/HAProxy :443 -> IncidentRelay :8080

Правильно задайте публичный URL:

[server]
public_base_url = https://incidentrelay.example.com

public_base_url используется для генерируемых ссылок и колбэков.

Пользовательские голосовые провайдеры#

Пользовательские голосовые провайдеры можно смонтировать в:

/usr/local/lib/incidentrelay/voice_providers

Пример монтирования в Compose:

volumes:
  - ./custom_voice_providers:/usr/local/lib/incidentrelay/voice_providers:ro

После изменения файлов провайдеров перезапустите контейнеры:

docker compose restart incidentrelay incidentrelay-scheduler