Драйвер json-file по умолчанию копит stdout контейнера без ограничений между
пересозданиями — теперь 10 МБ x 3 файла (~30 МБ максимум). update.log больше
не дописывается на каждом обновлении (полный вывод сборки ~100-200 КБ за
раз), а перезаписывается: для диагностики нужен только последний прогон.
setup.sh now finds the next free port starting from 3000 instead of
hard-failing when it's taken (a leftover container from an earlier
attempt held it, live, twice this session) — docker-compose.yml's port
mapping and PORT in .env both follow whatever it picks.
/apikey now bundles the key into http://<ip>:<port>/?key=... (detecting
the public IP the same way setup.sh already does once at install time)
so clicking it logs straight into the web panel instead of just handing
over a bare key to paste manually. App.tsx reads ?key= on load, stores
it like a normal login, and strips it from the URL bar right away.
/version reports the running commit vs origin/main and, if behind, offers
Update/Later buttons; the bot also checks once a day at a randomized time
and proactively posts the same prompt. The container itself never touches
docker or the host — clicking Update just drops a marker file in the
already-mounted ./data volume. A host-side systemd timer (telemax-updater,
installed by setup.sh, survives reboots) polls for that marker every
minute and runs update.sh (git pull, rebuild with the new GIT_COMMIT
build-arg, restart) outside the container entirely, so a bug in message
parsing can never escalate into host/docker access.
GIT_COMMIT is threaded through docker-compose.yml's build args since the
runtime image ships without .git.
Two-way message/media bridge between MAX and Telegram forum topics, with
group management, polls, calls, forwarding, and admin commands (/help,
/reboot, /kill, /donate) from Telegram. Includes one-command install
(install.sh) and interactive first-run setup (setup.sh) for a bare Ubuntu
server.