Перейти к содержимому

Конфигурация

Notifly можно конфигурировать через файл конфигурации и переменные окружения. При использовании Docker рекомендуется использовать переменные окружения.

Notifly ищет файлы конфигурации в следующих путях

  • ./config.yml
  • /etc/notifly/config.yml

[!note] Когда строки содержат зарезервированные символы YAML, они должны быть экранированы. Список зарезервированных символов и способы их экранирования.

[!note] Файл конфигурации /etc/notifly/config.yml может содержать конфиденциальные данные, такие как начальный пароль администратора. При его использовании необходимо удалить права на чтение/запись для пользователей, не являющихся владельцами файла:

Окно терминала
$ sudo chmod go-rw /etc/notifly/config.yml
server:
keepaliveperiodseconds: 0 # 0 = использовать значение по умолчанию Go (15s); -1 = отключить keepalive; установите интервал отправки пакетов keepalive. Изменяйте это значение только если вы знаете, что делаете.
listenaddr: '' # адрес для связывания, оставьте пусто для связывания со всеми адресами. Добавьте префикс "unix:" для создания Unix-сокета. Пример: "unix:/tmp/notifly.sock".
port: 80 # порт, на котором будет слушать HTTP-сервер
ssl:
enabled: false # если должен быть включен HTTPS
redirecttohttps: true # перенаправить на https если сайт открывается по HTTP
listenaddr: '' # адрес для связывания, оставьте пусто для связывания со всеми адресами. Добавьте префикс "unix:" для создания Unix-сокета. Пример: "unix:/tmp/notifly.sock".
port: 443 # порт HTTPS
certfile: # файл сертификата (оставьте пусто при использовании letsencrypt)
certkey: # ключ сертификата (оставьте пусто при использовании letsencrypt)
letsencrypt:
enabled: false # если сертификат должен быть запрошен у letsencrypt
accepttos: false # если вы согласны с условиями обслуживания letsencrypt
cache: data/certs # каталог кэша letsencrypt
hosts: # хосты, для которых letsencrypt должен запросить сертификаты
# - mydomain.tld
# - myotherdomain.tld
responseheaders: # заголовки ответа добавляются к каждому ответу (по умолчанию: нет)
# X-Custom-Header: "custom value"
trustedproxies: # IP-адреса или диапазоны IP доверенных прокси. Используется для получения удалённого IP через заголовок X-Forwarded-For. (настройте 127.0.0.1 для доверия сокетам)
# - 127.0.0.1
# - 192.168.178.0/24
# - ::1
cors: # Устанавливает заголовки cors только когда необходимо и обеспечивает поддержку нескольких разрешённых origin. Переопределяет заголовки Access-Control-* в ответе.
alloworigins:
# - ".+.example.com"
# - "otherdomain.com"
allowmethods:
# - "GET"
# - "POST"
allowheaders:
# - "Authorization"
# - "content-type"
stream:
pingperiodseconds: 45 # интервал отправки ping WebSocket. Изменяйте это значение только если вы знаете, что делаете.
allowedorigins: # разрешённые origin для подключений WebSocket (собственный origin всегда разрешён, по умолчанию только собственный origin)
# - ".+.example.com"
# - "otherdomain.com"
database: # см. ниже
dialect: sqlite3
connection: data/notifly.db
defaultuser: # при создании базы данных notifly создаёт пользователя-администратора (эти значения используются только при первом запуске, если вы хотите изменить пользователя после первого запуска, используйте WebUI)
name: admin # имя пользователя администратора по умолчанию
pass: admin # пароль администратора по умолчанию
passstrength: 10 # сила пароля bcrypt (больше = лучше, но также медленнее)
uploadedimagesdir: data/images # каталог для сохранения загруженных изображений
pluginsdir: data/plugins # каталог, где находятся плагины (оставьте пусто для отключения плагинов)
registration: false # включить регистрацию

Вы можете скачать пример конфигурации следующим образом:

Окно терминала
$ wget -O config.yml https://raw.githubusercontent.com/Notifly/master/config.example.yml

Примечание: пример конфигурации содержит не только значения по умолчанию.

ДиалектПодключение
sqlite3path/to/database.db
mysqlnotifly:secret@tcp(localhost:3306)/notiflydb?charset=utf8&parseTime=True&loc=Local
postgreshost=localhost port=5432 user=notifly dbname=notiflydb password=secret

При использовании postgres без SSL необходимо добавить sslmode=disable в строку подключения. См. #90.

Для mysql и postgres: убедитесь, что определённая база данных существует и пользователь имеет достаточные разрешения.

Строки в параметрах списка или карты окружения (например NOTIFLY_SERVER_RESPONSEHEADERS и NOTIFLY_SERVER_SSL_LETSENCRYPT_HOSTS) должны быть экранированы. Список зарезервированных символов и способы их экранирования.

См. документацию конфигурации YAML.

Окно терминала
NOTIFLY_SERVER_PORT=80
NOTIFLY_SERVER_KEEPALIVEPERIODSECONDS=0
NOTIFLY_SERVER_LISTENADDR=
NOTIFLY_SERVER_SSL_ENABLED=false
NOTIFLY_SERVER_SSL_REDIRECTTOHTTPS=true
NOTIFLY_SERVER_SSL_LISTENADDR=
NOTIFLY_SERVER_SSL_PORT=443
NOTIFLY_SERVER_SSL_CERTFILE=
NOTIFLY_SERVER_SSL_CERTKEY=
NOTIFLY_SERVER_SSL_LETSENCRYPT_ENABLED=false
NOTIFLY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS=false
NOTIFLY_SERVER_SSL_LETSENCRYPT_CACHE=certs
# NOTIFLY_SERVER_SSL_LETSENCRYPT_HOSTS=[mydomain.tld, myotherdomain.tld]
# NOTIFLY_SERVER_RESPONSEHEADERS={X-Custom-Header: "custom value", x-other: value}
# NOTIFLY_SERVER_TRUSTEDPROXIES=[127.0.0.1,192.168.178.2/24]
# NOTIFLY_SERVER_CORS_ALLOWORIGINS=[.+\.example\.com, otherdomain\.com]
# NOTIFLY_SERVER_CORS_ALLOWMETHODS=[GET, POST]
# NOTIFLY_SERVER_CORS_ALLOWHEADERS=[X-Notifly-Key, Authorization]
# NOTIFLY_SERVER_STREAM_ALLOWEDORIGINS=[.+.example\.com, otherdomain\.com]
NOTIFLY_SERVER_STREAM_PINGPERIODSECONDS=45
NOTIFLY_DATABASE_DIALECT=sqlite3
NOTIFLY_DATABASE_CONNECTION=data/notifly.db
NOTIFLY_DEFAULTUSER_NAME=admin
NOTIFLY_DEFAULTUSER_PASS=admin
NOTIFLY_PASSSTRENGTH=10
NOTIFLY_UPLOADEDIMAGESDIR=data/images
NOTIFLY_PLUGINSDIR=data/plugins
NOTIFLY_REGISTRATION=false