Расширенная конфигурация
Databasus из коробки работает с разумными настройками по умолчанию — стандартной установке в один контейнер конфигурация не нужна вовсе. Каждая переменная на этой странице необязательна и не требуется в 99% продакшен-установок
OAuth
По умолчанию в Databasus вход по email и паролю. Дополнительно можно разрешить вход через аккаунт Google или GitHub. Кнопка провайдера появляется, как только задан его client ID, но вход срабатывает, только когда заданы оба значения: и client ID, и client secret.
При регистрации OAuth-приложения укажите redirect-адрес (callback) https://<your-domain>/auth/callback. Из-за этого редиректа для входа через OAuth ваш инстанс должен быть доступен по HTTPS на публичном домене — см. заметку ниже.
Для входа и почты нужен HTTPS. И OAuth-вход, и почта требуют, чтобы инстанс был доступен по HTTPS на публичном домене: OAuth-провайдеры возвращают браузер на https://<your-domain>/auth/callback, а ссылки в письмах должны открываться у получателей. Инстанс только на localhost или на голом HTTP этими функциями пользоваться не сможет. Проще всего получить HTTPS через reverse proxy Caddy.
Создайте OAuth-клиент в Google Cloud Console (APIs & Services → Credentials → Create credentials → OAuth client ID, тип приложения Web application) и добавьте https://<your-domain>/auth/callback как разрешенный redirect URI.
| Переменная | Описание |
|---|---|
GOOGLE_CLIENT_ID | Client ID вашего OAuth-клиента Google. Если задан, появляется кнопка "Sign in with Google". |
GOOGLE_CLIENT_SECRET | Client secret вашего OAuth-клиента Google. Чтобы вход работал, нужен вместе с ID. |
GitHub
Создайте OAuth-приложение в настройках разработчика GitHub (Settings → Developer settings → OAuth Apps → New OAuth App) и укажите authorization callback URL https://<your-domain>/auth/callback.
| Переменная | Описание |
|---|---|
GITHUB_CLIENT_ID | Client ID вашего OAuth-приложения GitHub. Если задан, появляется кнопка "Sign in with GitHub". |
GITHUB_CLIENT_SECRET | Client secret вашего OAuth-приложения GitHub. Чтобы вход работал, нужен вместе с ID. |
Почта (SMTP)
Подключите почтовый сервер, чтобы Databasus мог отправлять приглашения в рабочие пространства, коды сброса пароля и коды входа. Почтовый сервер считается настроенным, как только задан SMTP_HOST. Без него экран настроек показывает, что почтовый сервер не настроен, а на экране входа нет ссылки для сброса пароля.
Это почтовый сервер инстанса. У каналов уведомлений по email, которые сообщают о бекапах, свои настройки SMTP в форме каждого канала. Поэтому если письма от канала уведомлений доходят, это ничего не говорит о почтовом сервере инстанса. Чтобы проверить его, откройте Databasus settings → Mail server и нажмите Send test email. Письмо придет на ваш адрес, а если доставка не удалась, вы увидите ответ почтового сервера.
Если ваш релей не поддерживает STARTTLS, задайте SMTP_SECURITY=none до обновления. На любом порту, кроме 465, по умолчанию действует режим starttls, а он не продолжает работу без шифрования, так что такой релей не получит ни одного письма, пока переменная не задана. Если инстанс требует код входа по почте, то пока письма не доходят, по паролю не войдет никто. Чтобы вернуть доступ, выключите второй фактор командой docker exec -it databasus ./main --disable-2fa (подробнее — в разделе Перестать запрашивать код при входе).
| Переменная | Описание |
|---|---|
SMTP_HOST | Хост почтового сервера (например, smtp.gmail.com). Если переменная задана, почта инстанса включена. |
SMTP_PORT | Порт почтового сервера (например, 587). Должен быть положительным целым числом, если задан SMTP_HOST. |
SMTP_SECURITY | Защита соединения: tls, starttls или none, подробнее — ниже. По умолчанию tls на порту 465 и starttls на всех остальных. С любым другим значением инстанс не запустится. |
SMTP_USER | Имя пользователя для аутентификации на SMTP. |
SMTP_PASSWORD | Пароль для аутентификации на SMTP. Для Gmail используйте App Password, а не пароль аккаунта. |
SMTP_FROM | Адрес отправителя: просто адрес (noreply@example.com) или адрес с именем (Acme Backups <noreply@example.com>). Если имени нет, получатели видят Databasus. Если переменная не задана, используется SMTP_USER, когда это адрес почты, а иначе noreply@ и SMTP_HOST, так что логин вроде apikey никогда не станет отправителем. Если значение нельзя разобрать как адрес, инстанс не запустится. |
SMTP_HELO_NAME | Имя, которым инстанс представляется почтовому серверу. По умолчанию берется хост из DATABASUS_URL, а если его нет — имя машины. Должно быть именем хоста или адресным литералом вроде [192.0.2.1] или [IPv6:2001:db8::1], иначе инстанс не запустится. |
SMTP_INSECURE_SKIP_VERIFY | Установите true, чтобы пропускать проверку TLS-сертификата в режимах tls и starttls. По умолчанию false. Используйте только для серверов с самоподписанным сертификатом в доверенной сети: эта настройка отключает защиту от атак «человек посередине». |
DATABASUS_URL | Публичный базовый URL инстанса (например, https://backup.example.com). Необязателен: добавляет ссылку в письма-приглашения и задает имя в приветствии по умолчанию. Почта работает и без него. |
SMTP_SECURITY выбирает один из трех режимов. У каналов уведомлений по email такой же выбор есть в разделе Advanced settings.
| Режим | Что происходит |
|---|---|
tls | Соединение зашифровано с первого байта. Обычно порт 465. |
starttls | Соединение начинается без шифрования и переводится в зашифрованное до отправки пароля и писем. Если сервер этого не поддерживает, доставка завершается ошибкой, а не продолжается без шифрования. Обычно порт 587. |
none | Соединение никогда не шифруется. Подходит для релея без STARTTLS, например локального Postfix на порту 25. |
В режиме none пароль SMTP и все письма передаются без шифрования, и их может прочитать любой, кто находится между Databasus и релеем. Выбирайте его только для релея на том же хосте или в доверенной частной сети.
Капча при регистрации (Cloudflare Turnstile)
Если ваш инстанс доступен из публичного интернета, на формы регистрации и входа можно поставить проверку Cloudflare Turnstile, чтобы отсечь ботов. Оба ключа берутся в панели Turnstile, а проверка включается, только когда заданы оба.
Если нужно вообще закрыть регистрацию, а не просто прикрыть ее капчей, капча не понадобится — откройте в интерфейсе Databasus settings → Allow sign up и выключите эту опцию. Форма регистрации исчезнет совсем.
| Переменная | Описание |
|---|---|
CLOUDFLARE_TURNSTILE_SITE_KEY | Публичный site key Turnstile — им рендерится виджет в браузере. |
CLOUDFLARE_TURNSTILE_SECRET_KEY | Секретный ключ Turnstile — им бэкенд проверяет ответы на капчу. |
Права Docker-хранилища
Обычно Databasus берет числовые ID пользователя и группы у существующего каталога pgdata, затем проверяет mount с бекапами и корневой каталог данных. Если подходящего владельца нет, используется 999. Задавайте PUID или PGID, только когда автоматический выбор не подходит для вашего bind mount, CIFS или NFS. Допустимы десятичные значения от 1 до 4294967294.
| Переменная | Автоматическое значение | Учетная запись |
|---|---|---|
PUID | Владелец mount или 999 | Пользователь databasus |
PGID | Группа mount или 999 | Основная группа databasus |
Databasus и PostgreSQL работают под одной учетной записью ОС без прав root с именем databasus.
Entrypoint запускается с правами root внутри контейнера, выбирает ID и пробует выполнить chown и chmod. После этого он проверяет полный цикл работы с файлами от имени databasus. Mount может работать, даже если файловая система запрещает менять владельца или режим. Произвольное значение Docker user: не поддерживается.
ERROR: Databasus cannot write to local storage paths /databasus-data/temp and /databasus-data/backups as UID 999 and GID 999.
Required operation: save a file through local storage.
Set PUID and PGID or fix the mounted directory permissions: https://databasus.com/advanced-config/#docker-storage-permissions
Details: permission deniedЧетыре прежние переменные для отдельных сервисов удалены сознательно. При обновлении уберите их из конфигурации. Если автоматически выбранным ID не хватает прав, контейнер остановится и укажет неудавшуюся операцию вместе со ссылкой на эту инструкцию.
Телеметрия
По умолчанию Databasus отправляет анонимную телеметрию использования. Она не содержит персональных данных и помогает нам понять, как используется проект. Что именно собирается, написано в политике конфиденциальности, и телеметрию можно полностью выключить.
| Переменная | По умолчанию | Описание |
|---|---|---|
IS_DISABLE_ANONYMOUS_TELEMETRY | false | Установите true, чтобы отключить анонимную телеметрию использования. |
Логирование
Databasus пишет логи в stdout и дублирует их в формате JSON в файл databasus.log на томе с данными. Если задать OPEN_TELEMETRY_URL, он также экспортирует их по OpenTelemetry в бэкенд вроде VictoriaLogs, Graylog, SigNoz, Grafana Loki, Datadog или Honeycomb, либо в OpenTelemetry Collector, который сам является OTLP-приемником.
- Транспорт определяется схемой.
http://иhttps://отправляют OTLP/HTTP и используют URL как есть, включая путь;grpc://иgrpcs://отправляют OTLP/gRPC и используют только хост и порт. - Аутентификация задается в
OPEN_TELEMETRY_HEADERSили прямо в URL в видеuser:password@host. - Секреты (пароли, токены, учетные данные) в URL вычищаются до того, как запись покидает процесс.
- Записи аудита уходят вместе с логами приложения с меткой
log_type=auditи игнорируютLOG_LEVEL, поэтому повышение уровня никогда не обрежет аудиторский след.
| Переменная | По умолчанию | Описание |
|---|---|---|
OPEN_TELEMETRY_URL | — | Полный URL OTLP-эндпоинта, включая путь. Не задавайте, чтобы логи оставались в контейнере. Query-строка, отсутствующий хост или неизвестная схема останавливают контейнер при старте, вместо того чтобы экспортировать в никуда. |
OPEN_TELEMETRY_HEADERS | — | Пары key=value через запятую, отправляемые с каждым экспортом, обычно API-ключ. Значения percent-декодируются, как в стандартном формате OTEL_EXPORTER_OTLP_HEADERS. |
LOG_LEVEL | info | Одно из debug, info, warn или error. Нераспознанное значение откатывается к info. |
LOG_FILE_IS_ENABLED | true | Пишет databasus.log рядом с остальными данными, с ротацией на 5 МБ и хранением 3 старых файлов. Установите false, если ваша платформа уже собирает stdout. |
Значения для популярных бэкендов, каждое с заголовком аутентификации. Замените хосты, регионы и ключи на свои:
| Бэкенд | OPEN_TELEMETRY_URL | OPEN_TELEMETRY_HEADERS |
|---|---|---|
| VictoriaLogs | http://victoria-logs:9428/insert/opentelemetry/v1/logs | Authorization=Basic%20dXNlcjpwYXNzd29yZA== — учетные данные, которые ждет ваш vmauth или reverse proxy: у самого VictoriaLogs на пути приема аутентификации нет. |
| OpenTelemetry Collector | grpc://otel-collector:4317 | Authorization=Bearer%20your-token — соответствует расширению bearertokenauth или basicauth на приемнике. Collector, доступный только внутри вашей сети, обычно не требует ничего. |
| Graylog 6.2+ | grpc://graylog:4317 | Authorization=Bearer%20your-token — токен, заданный на входе OpenTelemetry (gRPC). Вход также принимает mTLS вместо токена. |
| SigNoz Cloud | grpcs://ingest.eu.signoz.cloud:443 | signoz-ingestion-key=your-ingestion-key |
| Grafana Cloud | https://otlp-gateway-prod-eu-west-0.grafana.net/otlp/v1/logs | Authorization=Basic%20<base64> — base64 от instance-id:api-token |
| Honeycomb | https://api.honeycomb.io/v1/logs | x-honeycomb-team=your-api-key |
| Datadog Agent | grpc://datadog-agent:4317 | Не нужны — API-ключ хранит сам Agent и пересылает все от вашего имени. |
Значения заголовков percent-декодируются, поэтому пробел после Basic или Bearer записывается как %20, а запятая внутри значения — как %2C. Basic-аутентификацию можно указать и прямо в URL в виде https://user:password@host/path — Databasus превратит ее в тот же заголовок и не пустит в логи. Через http:// и grpc:// ключи и пароли идут открытым текстом, так что вне доверенной сети используйте https:// или grpcs://.
Скрипт аналитики
Databasus может встроить в приложение ваш собственный скрипт аналитики или трекинга — Google Analytics, Plausible, Umami и похожие. Когда задан ANALYTICS_SCRIPT, его значение вставляется в <head> страницы при старте.
Предупреждение о безопасности: значение вставляется как есть, как сырой HTML и JavaScript, и получает полный доступ к интерфейсу Databasus в браузере каждого посетителя. Задавайте только тот сниппет, который вы полностью контролируете и которому доверяете.
| Переменная | Описание |
|---|---|
ANALYTICS_SCRIPT | Свой <script>, вставляемый перед закрывающим тегом </head>. Не задавайте, чтобы аналитики не было. |