Логика запуска и Caddyfile переехали внутрь app

Файлы вне папки app обновление не доставляло: чтобы изменить порядок
запуска или конфигурацию Caddy, требовалась переустановка. Теперь .bat -
заглушка из трёх строк, вызывающая app/launcher.py, а Caddyfile создаётся
из настроек [https] в config.toml. Отредактированный вручную Caddyfile
не затирается: новая версия откладывается рядом как Caddyfile.new.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-16 17:23:47 +05:00
co-authored by Claude Opus 5
parent cd3acafa8a
commit febec7f124
5 changed files with 251 additions and 47 deletions
+6 -39
View File
@@ -107,7 +107,6 @@ def add_app(stage: Path) -> None:
write_bat(stage / "start.bat", START_BAT)
write_bat(stage / "download_models.bat", DOWNLOAD_BAT)
write_bat(stage / "start-https.bat", HTTPS_BAT)
(stage / "Caddyfile").write_text(CADDYFILE, encoding="utf-8", newline="\r\n")
(stage / "download_models.py").write_text(
(ROOT / "build" / "download_models.py").read_text(encoding="utf-8"), encoding="utf-8")
@@ -125,60 +124,28 @@ def write_bat(path: Path, text: str) -> None:
# chcp 65001 переводит консоль в UTF-8, и Python дальше пишет в той же кодировке.
# Без этой пары русский текст в выводе превращается в мусор.
# .bat - трёхстрочные заглушки: вся логика запуска живёт в app/launcher.py,
# который обновление доставляет штатно. Раньше логика была здесь, и чтобы
# изменить порядок запуска, требовалась переустановка.
# chcp 65001 переводит консоль в UTF-8, иначе русский текст станет мусором.
START_BAT = """@echo off
chcp 65001 >nul
cd /d "%~dp0"
set "TALKSCORE_ASR_HOME=%~dp0"
set "PYTHONPATH=%~dp0"
"%~dp0python\\python.exe" -m app.updater
"%~dp0python\\python.exe" -m app.main
"%~dp0python\\python.exe" -m app.launcher
pause
"""
# Caddy слушает 443 и проксирует на сервис, который при этом сидит на localhost.
HTTPS_BAT = """@echo off
chcp 65001 >nul
cd /d "%~dp0"
set "TALKSCORE_ASR_HOME=%~dp0"
set "PYTHONPATH=%~dp0"
start "caddy" /min "%~dp0bin\\caddy.exe" run --config "%~dp0Caddyfile"
"%~dp0python\\python.exe" -m app.updater
"%~dp0python\\python.exe" -m app.main
"%~dp0python\\python.exe" -m app.launcher https
pause
"""
CADDYFILE = """# Домены, на которых отвечает сервис. Caddy сам получит сертификаты
# Let's Encrypt и будет продлевать их без напоминаний.
# Требуется: порты 80 и 443 открыты снаружи, домены указывают на эту машину.
{
# Caddy очень подробно рассказывает про сертификаты и забивает консоль, из-за
# чего не видно сообщений самого сервиса. Уводим его вывод в файл: история
# сохраняется целиком, а на экране остаётся только talkscore-asr.
log {
output file logs/caddy.log {
roll_size 10MiB
roll_keep 5
}
format console
level INFO
}
}
asr.netranking.ru, asr.talkscore.ru {
reverse_proxy 127.0.0.1:8756 {
# Реальный адрес клиента - иначе список разрешённых адресов
# увидит вместо него localhost и пустит кого угодно.
header_up X-Forwarded-For {remote_host}
}
# Записи бывают большими, стандартного предела мало.
request_body {
max_size 500MB
}
}
"""
DOWNLOAD_BAT = """@echo off
chcp 65001 >nul
cd /d "%~dp0"