- Dockerfile: python:3.12-slim, зависимости отдельным слоем
- docker-compose.yml: env из .env, volume для /app/data, LOG_DIR=/dev/null
- .dockerignore: .env, data, logs, кэш
- fix: loguru не было в requirements.txt (бот не стартовал бы) — добавлен
- logger.py: LOG_DIR переопределяется через env (в контейнере в /dev/null)
- /admin не принимает пароль аргументом команды (оставался в истории Telegram)
- пароль вводится отдельным сообщением через FSM-состояние waiting_password
- сообщение с паролем удаляется сразу после проверки (best-effort)
- добавлена защита от брутфорса: 5 неудачных попыток за 5 минут