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

Настройка ​

DashLit читает переменные окружения процесса и необязательный файл .env. Переменные процесса имеют приоритет. В контейнерной установке передавайте параметры через Compose или другое средство запуска контейнеров.

Основные параметры ​

Для большинства установок в контейнере достаточно безопасного JWT_SECRET. Внутренний адрес и пути к данным уже настроены в образе.

ПеременнаяПо умолчаниюНазначение
JWT_SECRETЗначение для разработкиСекрет для подписи сессий. Обязательно замените в production.
INITIAL_ADMIN_USERNAMEПустоИмя первого администратора для автоматического создания.
INITIAL_ADMIN_PASSWORDПустоПароль первого администратора для автоматического создания.
DEV_MODEfalseПодробная диагностика базы данных для разработки.
UPDATE_CHECK_ENABLEDtrueПроверяет GitHub Releases на наличие новой стабильной версии DashLit.

В релизную сборку встраиваются Git-тег и commit. Установленная версия отображается в футере, а при нативной установке её также можно проверить командой dashlit --version. DashLit обращается к GitHub только в сессии администратора и кеширует результат на 12 часов; обычные пользователи не получают информацию о доступном релизе. Ошибка проверки не влияет на запуск и работу DashLit. Установите UPDATE_CHECK_ENABLED=false, чтобы запретить этот внешний запрос.

Первый администратор ​

Для автоматического развёртывания до первого запуска задайте обе переменные:

dotenv
INITIAL_ADMIN_USERNAME=admin
INITIAL_ADMIN_PASSWORD=replace-with-a-secure-password

DashLit создаёт этого пользователя с ролью администратора, только пока таблица пользователей пуста. Пароль должен содержать не менее шести символов. Если на пустой базе указана только одна из двух переменных, приложение остановится с ошибкой конфигурации. После появления любого пользователя обе переменные полностью игнорируются: их изменение не переименует администратора и не сбросит его пароль. После создания аккаунта удалите их из Compose или .env, чтобы не хранить пароль открытым текстом.

Bootstrap не зависит от DISABLE_PASSWORD_REGISTRATION, поэтому в автоматически настроенной установке обычную регистрацию можно оставить отключённой.

Параметры аутентификации ​

ПеременнаяПо умолчаниюНазначение
OIDC_ISSUERПустоURL OIDC issuer. Пустое значение отключает OIDC.
OIDC_CLIENT_IDПустоClient ID, зарегистрированный у провайдера.
OIDC_CLIENT_SECRETПустоClient secret, если он требуется провайдером.
OIDC_REDIRECT_URLЛокальный callbackВнешний URL с окончанием /api/auth/oidc/callback.
OIDC_BUTTON_TITLESign in with OIDCТекст кнопки на странице входа.
OIDC_INSECURE_SKIP_TLS_VERIFYfalseОтключает проверку TLS-сертификата для всех OIDC-запросов. Небезопасно; используйте только для доверенного локального провайдера.
DISABLE_PASSWORD_REGISTRATIONfalseЗапрещает регистрацию новых парольных аккаунтов.
DISABLE_OIDC_REGISTRATIONfalseЗапрещает неизвестным OIDC-профилям создавать аккаунты.
DISABLE_OIDC_USER_MERGEfalseНе связывает совпадающие парольные и OIDC-профили.
DISABLE_PASSWORD_LOGINfalseОтключает вход по паролю после полной настройки OIDC.

OIDC_ISSUER и OIDC_CLIENT_ID должны быть либо оба заполнены, либо оба пусты. Пока OIDC настроен не полностью, DashLit сохраняет вход по паролю как способ восстановления даже при DISABLE_PASSWORD_LOGIN=true.

Пример production-окружения ​

dotenv
JWT_SECRET=use-a-long-random-value
DEV_MODE=false

OIDC_ISSUER=https://id.example.com
OIDC_CLIENT_ID=dashlit
OIDC_CLIENT_SECRET=provider-issued-secret
OIDC_REDIRECT_URL=https://dash.example.com/api/auth/oidc/callback
OIDC_BUTTON_TITLE=Войти через Pocket ID
OIDC_INSECURE_SKIP_TLS_VERIFY=false

DISABLE_PASSWORD_REGISTRATION=true
DISABLE_OIDC_REGISTRATION=false
DISABLE_OIDC_USER_MERGE=false
DISABLE_PASSWORD_LOGIN=true

Продвинутые настройки хранилища и сети ​

Эти параметры описывают внутреннее устройство приложения и обычно не нужны в стандартном контейнере:

ПеременнаяПо умолчаниюНазначение
ADDR:8080Адрес и порт, прослушиваемые процессом.
DATA_DIR./dataКаталог базы, загруженных иконок и кеша. Образ задаёт /data.
DATABASE_PATH$DATA_DIR/bookmarks.dbИзменяет расположение файла SQLite.

Меняйте их только для собственного runtime, нестандартной файловой структуры или запуска из исходников. Родительский каталог DATABASE_PATH должен быть доступен для записи. Legacy-миграция ищет dashboard.json именно рядом с этим файлом.

Права внутри контейнера ​

Готовый образ работает от непривилегированного пользователя с UID и GID 10001. Именованные Docker-тома инициализируются автоматически. Для bind mount проще всего разрешить запись всем:

bash
mkdir -p ./data
sudo chmod -R 777 ./data

Для более точечной настройки назначьте каталог числовому UID контейнера. Учтите, что после этого обычный пользователь хоста может потерять право записи:

bash
sudo chown -R 10001:10001 ./data
sudo chmod -R 750 ./data

Локальная проверка уведомления об обновлении ​

Следующие две переменные предназначены только для разработки и не нужны в production:

bash
DASHLIT_VERSION_OVERRIDE=v1.0.0 \
UPDATE_CHECK_LATEST_VERSION=v9.9.9 \
docker compose -f docker-compose-local.yml up --build

Локальное приложение будет считать установленной версию v1.0.0, а доступной — v9.9.9, не обращаясь к GitHub. На обычном дашборде уведомление появится в футере, а в clean mode — в виде чипа и пункта burger menu.

Распространяется по лицензии MIT.