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

Переменные окружения

Задаются в docker-compose.yml. Обязательны только первые две — остальное обычно настраивается в мастере и менять не нужно.

Переменная Обяз. Значение по умолчанию Описание
BOT_TOKEN токен бота от @BotFather
ADMIN_TELEGRAM_ID ваш Telegram ID (число) — доступ в админку
DATA_DIR /data каталог данных в контейнере (том bot-data)
DB_KIND sqlite / postgres; обычно задаёт мастер
DATABASE_URL DSN Postgres, если подключаете свою БД вручную
SECRET_KEY авто ключ шифрования настроек; если пуст — генерируется в /data/secret.key
PREMIUM_EMOJI карта премиум-эмодзи в формате ключ=id,ключ=id
CUSTOM_STATIC_DIR /custom папка с кастомной статикой мини-аппа/кабинета (см. «Свой дизайн» ниже)
CADDY_AUTH_API_TOKEN X-Api-Key аддона «Caddy with security», если панель закрыта им. Бот добавит этот заголовок ко всем запросам к панели — вдобавок к её собственному API-token. Если переменная задана, мастер про ключ не спрашивает, и её значение главнее сохранённого в БД
COMPOSE_FILE_PATH /compose/docker-compose.yml путь к compose-файлу для самоменеджмента
COMPOSE_PROJECT remnachillbot имя docker-compose проекта
COMPOSE_HOST_DIR /opt/remnachillbot путь к папке бота на хосте
PANEL_CONTAINER remnawave имя контейнера панели (для режима «Локально»)
PANEL_NETWORK remnawave-network docker-сеть панели (фолбэк, если контейнер не успел подняться). Официалка и eGames используют это имя — менять обычно не нужно
SELF_CONTAINER remnabot имя контейнера самого бота

SECRET_KEY критичен: без него не прочитать зашифрованные настройки. Не теряйте файл secret.key из тома bot-data.

Стандартный интерфейс (index.html) вшит в бинарь, но его можно полностью заменить своим — смонтируйте папку с файлами в контейнер (в docker-compose.yml есть готовая закомментированная строка):

volumes:
- /opt/remnachillbot/custom:/custom:ro

Правила простые:

  • любой файл из папки перекрывает одноимённый вшитый (index.html, qrcode.min.js), а новые файлы (css, js, картинки) просто становятся доступны рядом — на них можно ссылаться относительными путями;
  • miniapp.html (если положить) отдаётся только Mini App, cabinet.html — только веб-кабинету; без них оба используют ваш index.html, а если и его нет — вшитый;
  • файлы читаются с диска на каждый запрос: правки видны сразу, перезапуск не нужен;
  • серверные подстановки кабинета (заголовок, описание, favicon, anti-fingerprint из админки) применяются и к вашему HTML.

⚠️ Вся логика (авторизация, покупка, оплата) живёт в JS внутри index.html и ходит в /api/miniapp/* и /api/cabinet/*. Поэтому начинайте с копии стандартного файла (internal/web/miniapp_static/index.html) и меняйте в нём стили/вёрстку — полностью самописная страница потребует реализовать работу с API самостоятельно. После обновлений бота сверяйте свой файл с новой версией стандартного: API может дополняться.