Настройка
DashLit читает переменные окружения процесса и необязательный файл .env. Переменные процесса имеют приоритет. В контейнерной установке передавайте параметры через Compose или другое средство запуска контейнеров.
Основные параметры
Для большинства установок в контейнере достаточно безопасного JWT_SECRET. Внутренний адрес и пути к данным уже настроены в образе.
| Переменная | По умолчанию | Назначение |
|---|---|---|
JWT_SECRET | Значение для разработки | Секрет для подписи сессий. Обязательно замените в production. |
INITIAL_ADMIN_USERNAME | Пусто | Имя первого администратора для автоматического создания. |
INITIAL_ADMIN_PASSWORD | Пусто | Пароль первого администратора для автоматического создания. |
DEV_MODE | false | Подробная диагностика базы данных для разработки. |
UPDATE_CHECK_ENABLED | true | Проверяет GitHub Releases на наличие новой стабильной версии DashLit. |
В релизную сборку встраиваются Git-тег и commit. Установленная версия отображается в футере, а при нативной установке её также можно проверить командой dashlit --version. DashLit обращается к GitHub только в сессии администратора и кеширует результат на 12 часов; обычные пользователи не получают информацию о доступном релизе. Ошибка проверки не влияет на запуск и работу DashLit. Установите UPDATE_CHECK_ENABLED=false, чтобы запретить этот внешний запрос.
Первый администратор
Для автоматического развёртывания до первого запуска задайте обе переменные:
INITIAL_ADMIN_USERNAME=admin
INITIAL_ADMIN_PASSWORD=replace-with-a-secure-passwordDashLit создаёт этого пользователя с ролью администратора, только пока таблица пользователей пуста. Пароль должен содержать не менее шести символов. Если на пустой базе указана только одна из двух переменных, приложение остановится с ошибкой конфигурации. После появления любого пользователя обе переменные полностью игнорируются: их изменение не переименует администратора и не сбросит его пароль. После создания аккаунта удалите их из 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_TITLE | Sign in with OIDC | Текст кнопки на странице входа. |
OIDC_INSECURE_SKIP_TLS_VERIFY | false | Отключает проверку TLS-сертификата для всех OIDC-запросов. Небезопасно; используйте только для доверенного локального провайдера. |
DISABLE_PASSWORD_REGISTRATION | false | Запрещает регистрацию новых парольных аккаунтов. |
DISABLE_OIDC_REGISTRATION | false | Запрещает неизвестным OIDC-профилям создавать аккаунты. |
DISABLE_OIDC_USER_MERGE | false | Не связывает совпадающие парольные и OIDC-профили. |
DISABLE_PASSWORD_LOGIN | false | Отключает вход по паролю после полной настройки OIDC. |
OIDC_ISSUER и OIDC_CLIENT_ID должны быть либо оба заполнены, либо оба пусты. Пока OIDC настроен не полностью, DashLit сохраняет вход по паролю как способ восстановления даже при DISABLE_PASSWORD_LOGIN=true.
Пример production-окружения
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 проще всего разрешить запись всем:
mkdir -p ./data
sudo chmod -R 777 ./dataДля более точечной настройки назначьте каталог числовому UID контейнера. Учтите, что после этого обычный пользователь хоста может потерять право записи:
sudo chown -R 10001:10001 ./data
sudo chmod -R 750 ./dataЛокальная проверка уведомления об обновлении
Следующие две переменные предназначены только для разработки и не нужны в production:
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.