Skip to content

Конфигурация платформы

Эта страница описывает конфигурацию самого SuperBotGo host: config.yaml, переменные окружения BOT_*, каналы, БД, Redis, S3, TSU и runtime-параметры.

Конфигурация WASM-плагинов описана отдельно: Конфигурация плагина.

Источники конфигурации

Host загружает параметры в таком порядке:

  1. config.yaml
  2. переменные окружения BOT_*

Если один и тот же параметр задан и в YAML, и через env, env-переменная имеет приоритет.

Runtime defaults vs example values

Таблицы ниже показывают значения по умолчанию из кода загрузчика.

Правило именования env-переменных

Все env-переменные начинаются с префикса BOT_.

  • переход между секциями (.) превращается в один _
  • символ _ внутри имени ключа превращается в __

Примеры:

YAML-ключEnv
database.hostBOT_DATABASE_HOST
user_auth.session_secretBOT_USER__AUTH_SESSION__SECRET
telegram.webhook_urlBOT_TELEGRAM_WEBHOOK__URL
admin.api_keyBOT_ADMIN_API__KEY
filestore.max_file_sizeBOT_FILESTORE_MAX__FILE__SIZE

Частая ошибка

Имена вроде BOT_TELEGRAM_WEBHOOK_URL, BOT_ADMIN_API_KEY и BOT_DISCORD_SHARD_ID не совпадают с текущим загрузчиком конфига. Для ключей с _ внутри имени нужны двойные подчёркивания: BOT_TELEGRAM_WEBHOOK__URL, BOT_ADMIN_API__KEY, BOT_DISCORD_SHARD__ID.

Минимум для запуска

Минимально рабочий host требует:

  • доступный PostgreSQL; database.host и database.dbname должны быть непустыми
  • доступный Redis; host подключается к redis.addr на старте
  • корректную S3-конфигурацию для filestore и admin.s3, если вы не используете dev-значения из config.example.yaml

Остальные секции условные:

  • telegram, discord, vk, mattermost нужны только для соответствующих каналов
  • tsu_accounts и user_auth нужны для browser login через TSU
  • spicedb нужна для полноценной внешней authorization graph интеграции
  • smtp нужна для email-сценариев админки
  • university_sync нужна только если включён фоновый sync

Условные требования и валидация

УсловиеТребование
telegram.mode=webhookобязателен telegram.webhook_url
vk.mode=callbackобязателен vk.callback_url
задан spicedb.endpoint или spicedb.tokenоба поля должны быть заданы вместе
задан tsu_accounts.application_id или tsu_accounts.secret_keyоба поля должны быть заданы вместе
задан admin.s3.access_key или admin.s3.secret_keyоба поля должны быть заданы вместе
задан filestore.s3.access_key или filestore.s3.secret_keyоба поля должны быть заданы вместе
задан mattermost.url или mattermost.tokenоба поля должны быть заданы вместе
задан mattermost.actions_url или mattermost.actions_secretоба поля должны быть заданы вместе
задан smtp.host или smtp.fromоба поля должны быть заданы вместе
discord.shard_idдолжен быть в диапазоне [0, shard_count)
vk.callback_pathдолжен начинаться с /
mattermost.actions_pathдолжен начинаться с /
admin.blob_storeсейчас допустимо только значение s3
wasm.events_backendдопустимо только memory или postgres

Host также отклоняет явные placeholder-значения вроде change-me, replace-me, YOUR_*, API_KEY, PASSWORD, SECRET, TOKEN.

Справочник параметров

Core

YAML-ключEnvПо умолчаниюКогда нуженОписание
default_localeBOT_DEFAULT__LOCALEenвсегдаЛокаль по умолчанию
database.hostBOT_DATABASE_HOSTпустовсегдаХост PostgreSQL
database.portBOT_DATABASE_PORT5432всегдаПорт PostgreSQL
database.userBOT_DATABASE_USERпустообычно всегдаПользователь PostgreSQL
database.passwordBOT_DATABASE_PASSWORDпустообычно всегдаПароль PostgreSQL
database.dbnameBOT_DATABASE_DBNAMEпустовсегдаИмя базы
database.sslmodeBOT_DATABASE_SSLMODEpreferвсегдаРежим SSL для PostgreSQL
redis.addrBOT_REDIS_ADDRlocalhost:6379всегдаАдрес Redis
redis.passwordBOT_REDIS_PASSWORDпустоесли нужен парольПароль Redis
redis.dbBOT_REDIS_DB0всегдаНомер Redis DB
admin.portBOT_ADMIN_PORT8080всегдаПорт Admin API
admin.modules_dirBOT_ADMIN_MODULES__DIR./wasm_modulesвсегдаДиректория локальных wasm-модулей
admin.blob_storeBOT_ADMIN_BLOB__STOREs3всегдаBackend хранилища wasm-бинарей
admin.api_keyBOT_ADMIN_API__KEYпустоесли нужен Bearer-доступ к Admin APIAPI-ключ админки
wasm.reconfigure_enabledBOT_WASM_RECONFIGURE__ENABLEDtrueопциональноПрименение config через OnReconfigure без полного reload
wasm.rpc_enabledBOT_WASM_RPC__ENABLEDfalseесли нужен inter-plugin RPCВключает вызовы между wasm-плагинами
wasm.events_backendBOT_WASM_EVENTS__BACKENDmemoryопциональноBackend event bus: memory или postgres
wasm.strict_migrateBOT_WASM_STRICT__MIGRATEtrueопциональноСтрогий режим plugin migrations
wasm.http_policy_enabledBOT_WASM_HTTP__POLICY__ENABLEDfalseесли нужны HTTP policy requirementsВключает enforcement HTTP policy config

Channels

YAML-ключEnvПо умолчаниюКогда нуженОписание
telegram.tokenBOT_TELEGRAM_TOKENпустоесли нужен TelegramТокен Telegram-бота
telegram.modeBOT_TELEGRAM_MODEpollingесли нужен Telegrampolling или webhook
telegram.webhook_urlBOT_TELEGRAM_WEBHOOK__URLпустопри telegram.mode=webhookПубличный webhook URL
telegram.webhook_secretBOT_TELEGRAM_WEBHOOK__SECRETпустоопциональноСекрет валидации Telegram webhook
telegram.webhook_listenBOT_TELEGRAM_WEBHOOK__LISTENпустопри webhook при необходимости отдельного bindЛокальный адрес HTTP listener
discord.tokenBOT_DISCORD_TOKENпустоесли нужен DiscordТокен Discord-бота
discord.shard_idBOT_DISCORD_SHARD__ID0при шардингеИндекс шарда
discord.shard_countBOT_DISCORD_SHARD__COUNT1при шардингеОбщее количество шардов
vk.tokenBOT_VK_TOKENпустоесли нужен VKТокен VK/community
vk.modeBOT_VK_MODElongpollесли нужен VKlongpoll или callback
vk.callback_urlBOT_VK_CALLBACK__URLпустопри vk.mode=callbackПубличный callback URL
vk.callback_pathBOT_VK_CALLBACK__PATH/vk/callbackпри callback или если нужен кастомный pathЛокальный HTTP path
mattermost.urlBOT_MATTERMOST_URLпустоесли нужен MattermostURL Mattermost instance
mattermost.tokenBOT_MATTERMOST_TOKENпустоесли нужен MattermostBot token Mattermost
mattermost.actions_urlBOT_MATTERMOST_ACTIONS__URLпустодля interactive actionsПубличный URL callbacks
mattermost.actions_pathBOT_MATTERMOST_ACTIONS__PATH/mattermost/actionsдля interactive actions или кастомного pathЛокальный HTTP path
mattermost.actions_secretBOT_MATTERMOST_ACTIONS__SECRETпустовместе с actions_urlСекрет валидации actions

Storage

YAML-ключEnvПо умолчаниюКогда нуженОписание
filestore.default_ttlBOT_FILESTORE_DEFAULT__TTL24hобычно всегдаTTL пользовательских файлов
filestore.max_file_sizeBOT_FILESTORE_MAX__FILE__SIZE52428800обычно всегдаМаксимальный размер файла в байтах
filestore.s3.bucketBOT_FILESTORE_S3_BUCKETпустовсегдаBucket для пользовательских файлов
filestore.s3.regionBOT_FILESTORE_S3_REGIONпустопочти всегдаS3 region
filestore.s3.endpointBOT_FILESTORE_S3_ENDPOINTпустодля MinIO/S3-compatibleКастомный endpoint
filestore.s3.access_keyBOT_FILESTORE_S3_ACCESS__KEYпустоесли используются явные static credentialsS3 access key
filestore.s3.secret_keyBOT_FILESTORE_S3_SECRET__KEYпустовместе с access_keyS3 secret key
filestore.s3.prefixBOT_FILESTORE_S3_PREFIXпустоопциональноПрефикс ключей файлов
admin.s3.bucketBOT_ADMIN_S3_BUCKETпустовсегдаBucket для wasm-модулей
admin.s3.regionBOT_ADMIN_S3_REGIONпустопочти всегдаS3 region
admin.s3.endpointBOT_ADMIN_S3_ENDPOINTпустодля MinIO/S3-compatibleКастомный endpoint
admin.s3.access_keyBOT_ADMIN_S3_ACCESS__KEYпустоесли используются явные static credentialsS3 access key
admin.s3.secret_keyBOT_ADMIN_S3_SECRET__KEYпустовместе с access_keyS3 secret key
admin.s3.prefixBOT_ADMIN_S3_PREFIXпустоопциональноПрефикс ключей wasm-артефактов

Auth, Integrations and Background Jobs

YAML-ключEnvПо умолчаниюКогда нуженОписание
user_auth.session_secretBOT_USER__AUTH_SESSION__SECRETпустодля production browser sessionsСекрет cookie-сессий frontend login
tsu_accounts.application_idBOT_TSU__ACCOUNTS_APPLICATION__IDпустодля TSU loginOAuth application ID
tsu_accounts.secret_keyBOT_TSU__ACCOUNTS_SECRET__KEYпустодля TSU loginOAuth secret
tsu_accounts.callback_urlBOT_TSU__ACCOUNTS_CALLBACK__URLпустодля публичного TSU login flowПубличный callback URL
tsu_accounts.base_urlBOT_TSU__ACCOUNTS_BASE__URLhttps://accounts.kreosoft.spaceопциональноBase URL сервиса TSU.Accounts
smtp.hostBOT_SMTP_HOSTпустодля отправки email из админкиSMTP host
smtp.portBOT_SMTP_PORT587для SMTPSMTP port
smtp.usernameBOT_SMTP_USERNAMEпустоесли нужен SMTP authSMTP username
smtp.passwordBOT_SMTP_PASSWORDпустоесли нужен SMTP authSMTP password
smtp.fromBOT_SMTP_FROMпустовместе с smtp.hostАдрес отправителя
spicedb.endpointBOT_SPICEDB_ENDPOINTпустодля внешней authz graph интеграцииgRPC endpoint SpiceDB
spicedb.tokenBOT_SPICEDB_TOKENпустовместе с endpointPreshared token SpiceDB
spicedb.insecureBOT_SPICEDB_INSECUREfalseесли нужен insecure transportОтключает TLS для dev/local
university_sync.enabledBOT_UNIVERSITY__SYNC_ENABLEDfalseдля фоновой синхронизацииВключает puller
university_sync.intervalBOT_UNIVERSITY__SYNC_INTERVALпустоесли включён syncИнтервал вида 1h, 30m
university_sync.base_urlBOT_UNIVERSITY__SYNC_BASE__URLпустоесли включён syncBase URL внешней университетской системы
university_sync.tokenBOT_UNIVERSITY__SYNC_TOKENпустоесли включён sync и нужна authТокен внешней системы

Пример env-only конфигурации

bash
BOT_DATABASE_HOST=postgres
BOT_DATABASE_PORT=5432
BOT_DATABASE_USER=superbot
BOT_DATABASE_PASSWORD=superbot_secret
BOT_DATABASE_DBNAME=superbot

BOT_REDIS_ADDR=redis:6379

BOT_FILESTORE_S3_BUCKET=user-files
BOT_FILESTORE_S3_REGION=us-east-1
BOT_FILESTORE_S3_ENDPOINT=http://minio:9000
BOT_FILESTORE_S3_ACCESS__KEY=minioadmin
BOT_FILESTORE_S3_SECRET__KEY=minioadmin

BOT_ADMIN_S3_BUCKET=wasm-plugins
BOT_ADMIN_S3_REGION=us-east-1
BOT_ADMIN_S3_ENDPOINT=http://minio:9000
BOT_ADMIN_S3_ACCESS__KEY=minioadmin
BOT_ADMIN_S3_SECRET__KEY=minioadmin

BOT_ADMIN_API__KEY=super-secret-admin-key
BOT_USER__AUTH_SESSION__SECRET=super-secret-session-key

BOT_TELEGRAM_TOKEN=123:ABC
BOT_TELEGRAM_MODE=polling