# Server configuration [server] port = 8080 shutdown_timeout = 5 force_shutdown_timeout = 20 # Storage configuration # Единственный каталог данных: под ним лежат и база, и файлы записей. [storage] data_dir = "data" # Yandex Cloud Configuration [yandex] # ID папки в Yandex Cloud (получить в консоли Yandex Cloud) folder_id = "your_folder_id_here" # API ключ для доступа к Yandex SpeechKit (получить в консоли Yandex Cloud) speech_kit_api_key = "your_speech_kit_api_key_here" # Object Storage (S3) configuration # Access Key ID для доступа к Object Storage (получить в консоли Yandex Cloud) object_storage_access_key_id = "your_access_key_id" # Secret Access Key для доступа к Object Storage (получить в консоли Yandex Cloud) object_storage_secret_access_key = "your_secret_access_key" # Имя бакета в Object Storage object_storage_bucket_name = "your_bucket_name" # Регион Object Storage object_storage_region = "ru-central1" # Endpoint Object Storage object_storage_endpoint = "https://storage.yandexcloud.net/" # Вход через внешнего провайдера OIDC (Authelia). # Без заполненной секции сервис не поднимается: молча выключенный вход оставил бы # API открытым наружу. [auth] # Адрес, куда сервис уводит человека на вход auth_url = "https://auth.example.com/api/oidc/authorization" # Адрес, где код обменивается на токен token_url = "https://auth.example.com/api/oidc/token" # Адрес, откуда берутся сведения о вошедшем user_info_url = "https://auth.example.com/api/oidc/userinfo" # Идентификатор клиента, заведённого у провайдера client_id = "transcriber" # Секрет клиента; приходит из выкладки, в git не коммитится client_secret = "" # Адрес возврата; тот же, что записан клиенту у провайдера redirect_url = "https://transcriber.example.com/auth/callback" # Признак `Secure` у куки сессии. Умолчание true; false только для локального # запуска по http://localhost, где браузер такую куку не сохранит secure_cookie = true # Telegram Bot Configuration [telegram] # Нужен ли сервису вход Telegram. Ключ **обязателен**: умолчания у него нет, и # файл без него негоден — сервис выходит с ошибкой настройки, назвав недостающий # ключ. Умолчание было бы угаданным намерением, а признак заведён затем, чтобы # намерение объявляли: любое умолчание делает одну из двух ошибок тихой — либо # бот молча пропадает, либо файл без признака молча работает. # # false — сервис поднимается без Telegram и работает одним входом, по HTTP. Бот # не заводится, к Telegram не уходит ни одного обращения, записи из Telegram не # принимаются, а ответы на задачи, принятые оттуда прежде, не уходят — # недоставка видна записью журнала, расшифровка достаётся из панели и по HTTP. # О выключенном входе сервис говорит одной записью журнала «к сведению»: это # выбор владельца, а не отклонение. # # true — сервис поднимает бота. Пустой bot_token при этом роняет старт: бота по # пустому ключу не существует. Старт роняет и ответ Telegram «такого бота нет» — # это опечатка в ключе, ждать тут нечего. А вот недоступность Telegram (сеть, # DNS, авария Bot API) подъёму не мешает: сервис встаёт без бота и предупреждает # записью журнала, потому что основной вход у него другой. # # Локальный прогон идёт с false — боевым токеном запускаться запрещено: второй # процесс с тем же токеном перехватывает обновления у работающего. Выключенного # входа для подъёма мало: секции [auth] и [yandex] проверяются на старте и # роняют процесс на пустых ключах. Наружу при старте не ходит ни одна из них, # поэтому для локального прогона годятся выдуманные непустые значения — адреса # [auth] должны лишь разбираться как ссылки. Расшифровка при выдуманных ключах # не работает: её подменяют в коде. enabled = false # Токен Telegram бота (получить у @BotFather в Telegram). Только ключ доступа: # включением входа он больше не заведует, этим занят enabled выше. При # enabled = false не читается вовсе. bot_token = "" # Таймаут обновлений Telegram бота (в секундах) update_timeout = 10