Конфигурация
Notifly можно конфигурировать через файл конфигурации и переменные окружения. При использовании Docker рекомендуется использовать переменные окружения.
Файл конфигурации
Заголовок раздела «Файл конфигурации»Notifly ищет файлы конфигурации в следующих путях
- ./config.yml
- /etc/notifly/config.yml
[!note] Когда строки содержат зарезервированные символы YAML, они должны быть экранированы. Список зарезервированных символов и способы их экранирования.
[!note] Файл конфигурации
/etc/notifly/config.ymlможет содержать конфиденциальные данные, такие как начальный пароль администратора. При его использовании необходимо удалить права на чтение/запись для пользователей, не являющихся владельцами файла:
$ sudo chmod go-rw /etc/notifly/config.ymlserver: 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.dbdefaultuser: # при создании базы данных 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Примечание: пример конфигурации содержит не только значения по умолчанию.
База данных
Заголовок раздела «База данных»| Диалект | Подключение |
|---|---|
| sqlite3 | path/to/database.db |
| mysql | notifly:secret@tcp(localhost:3306)/notiflydb?charset=utf8&parseTime=True&loc=Local |
| postgres | host=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=80NOTIFLY_SERVER_KEEPALIVEPERIODSECONDS=0NOTIFLY_SERVER_LISTENADDR=NOTIFLY_SERVER_SSL_ENABLED=falseNOTIFLY_SERVER_SSL_REDIRECTTOHTTPS=trueNOTIFLY_SERVER_SSL_LISTENADDR=NOTIFLY_SERVER_SSL_PORT=443NOTIFLY_SERVER_SSL_CERTFILE=NOTIFLY_SERVER_SSL_CERTKEY=NOTIFLY_SERVER_SSL_LETSENCRYPT_ENABLED=falseNOTIFLY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS=falseNOTIFLY_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=45NOTIFLY_DATABASE_DIALECT=sqlite3NOTIFLY_DATABASE_CONNECTION=data/notifly.dbNOTIFLY_DEFAULTUSER_NAME=adminNOTIFLY_DEFAULTUSER_PASS=adminNOTIFLY_PASSSTRENGTH=10NOTIFLY_UPLOADEDIMAGESDIR=data/imagesNOTIFLY_PLUGINSDIR=data/pluginsNOTIFLY_REGISTRATION=false