Telemax — показал проект на Хабре и получил бан на GitHub

15 августа я показал здесь Telemax — мост, который приносит переписку из MAX в Telegram. Пост прочитали 14 тысяч раз, под ним набралось 48 комментариев.
Каждый чат MAX — отдельная тема в группе Telegram. Здесь геолокация ушла в MAX, а в ответ пришёл видео кружок.

А на следующий день ссылка на GitHub из поста начала отдавать 404. Не репозиторий удалён, не аккаунт заблокирован — просто для всех, кто не вошёл под моим именем, меня и моего кода больше не существовало. Читатели шли по ссылке и упирались в пустую страницу, а те, кто уже поставил мост, потеряли обновления.
Разбанили меня только через месяц. Эта статья — о том, как прошёл этот месяц, как проект пережил его без GitHub и что из ваших комментариев за это время стало обновлениями.
Что произошло
Никакого письма, баннера или предупреждения не было. Сам я видел свой аккаунт как обычно, и заметил проблему, только когда открыл репозиторий в режиме инкогнито. Дальше всё по переписке с поддержкой:
19 августа. Пишу в поддержку: аккаунт и все репозитории для посторонних отдают 404. В тот же день отвечают: активность отметила автоматическая система поиска нарушений, расскажите, как собираетесь пользоваться GitHub.
Тот же день. Подробно объясняю: я разработчик, а это отдельный аккаунт под один проект. Проект бесплатный, с открытым кодом, каждый ставит его на свой сервер. Всплеск активности — это запуск и частые релизы. Заодно включаю двухфакторную аутентификацию и подтверждаю телефон.
27 августа. Восемь дней тишины. Вежливо напоминаю: пока репозиторий скрыт, пользователи не могут получить обновления, в том числе с исправлениями безопасности.
Около 10 сентября. Три недели без ответа. Напоминаю ещё раз и открываю отдельное обращение с основного аккаунта.
18 сентября. Ответ: извините за задержку, сейчас много обращений. Иногда система отмечает аккаунты для ручной проверки — ограничения сняты.
Итого месяц, один вопрос от поддержки и ни слова о том, что именно их смутило. Бывалые говорят, что под автоматическую проверку просто так не попадают и часто за такой формулировкой стоит чья‑то жалоба. Проверить это нельзя, так что оставлю как есть.
Как жить без GitHub
Ждать месяц сложа руки я не стал. За пару дней поднял собственное зеркало проекта на своём сервере, с HTTPS. В пост добавил команду установки с него, и дальше все релизы выходили туда.
Запасной путь стал постоянным. Установщик, кнопка «Обновить» и проверка новых версий сначала идут на GitHub, а если тот недоступен — сами переключаются на зеркало. Пользователю ничего делать не нужно.

Проверка версии в боте выглядит одинаково, откуда бы ни пришло обновление.
У зеркала есть очевидный вопрос: почему ему должны доверять? Ответ — подпись. В разгар бана, 22 августа, я включил обязательную подпись релизов: каждую версию я подписываю своим ключом, а мост перед установкой проверяет подпись. Неподписанное или подменённое обновление он просто не ставит. Так всё равно, откуда пришёл код, — с GitHub или с зеркала: зеркало только транспорт.
Когда аккаунт вернули, я в тот же день выложил на GitHub всё накопившееся, и зеркало и GitHub снова совпали до коммита. Зеркало никуда не делось и работает до сих пор.
Месяц ожидания — месяц работы
Пока поддержка молчала, вышло больше 30 релизов. Заметная часть — ответы на вопросы из комментариев к первому посту. Спасибо всем, кто спрашивал, ставил и ругался.
“Можно ли два аккаунта MAX?” (@UrsusMaritimus). Тогда ответ был «поднимайте второй контейнер вручную». Теперь второй мост ставится той же командой в соседний каталог, а автообновление обслуживает все мосты на сервере.
«Можно ли SOCKS5-прокси для Telegram?» (тот же автор). Да: прокси задаётся при установке или потом в меню настроек, и мост проверяет связь через него до того, как сохранить. MAX при этом идёт напрямую. Спецсимволы в пароле прокси тоже больше ничего не ломают.
“Поставил — не работает, где взять API‑ключ?” (@denaturat, спасибо за первый живой отзыв). Веб‑панели и API‑ключа больше нет совсем — у сервера не осталось открытых портов. Вход в MAX теперь в личке бота: номер, код из SMS и, если есть, пароль — проскочить его уже не получится. Установщик сам проверяет токен, группу и права бота и показывает чек‑лист: что в порядке, чего не хватает и куда нажать. А бот после запуска пишет в группу «✅ Telemax подключён», чтобы было видно, что он жив.

Так группа выглядит сразу после установки: бот ставит аватарку, пишет, что подключён, и закрепляет пульт с кнопкой входа в MAX.
“Заработает на российском VPS?” (@ribkash). Да, если с сервера есть связь с Telegram — напрямую или через тот самый прокси.
“Как долго проживёт?” (@JTNeXuS). Тридцать релизов за месяц бана — наверное, лучший ответ. Мои рабочие чаты тоже там, так что мост чинится быстро.
И ещё за этот месяц:
в групповых чатах видно, кто написал, есть список участников, и любому можно написать в личку одним нажатием;
правки из MAX помечаются со временем правки;
в пульте появился «Статус», а контакт из Telegram можно просто переслать в группу — мост найдёт человека в MAX по номеру;
код открыт под лицензией AGPL-3.0;
установщик предлагает поставить Fail2ban от подбора паролей SSH и спокойно переживает свежие VPS с их сюрпризами;
неудачное обновление откатывается на прежнюю версию.

«Статус» в пульте: связь, последние сообщения, диск и память сервера — без захода на сервер.
После разбана
За три недели после возвращения на GitHub мост добрался до версии 1.2.
Боты MAX — прямо из Telegram
Боты в MAX живут на кнопках, а раньше вместо них в Telegram приходила заглушка «[вложение: INLINE_KEYBOARD]» — её видно и на снимке в первом посте. Теперь кнопки приходят настоящими: ссылки открываются, «Скопировать код» копирует, а нажатие кнопки с действием уходит боту от вашего имени.

Кнопка «Завершить все сессии» от службы безопасности MAX нажимается прямо в Telegram.

GigaChat отвечает в теме, а «Новый ответ» и «Подсказки» работают так же, как в MAX.
Нового бота можно найти из пульта по нику или ссылке max.ru/… и начать с ним чат одной кнопкой.
Пульт и несколько мостов

Пульт закреплён в группе, номер в нём закрыт маской. Кнопки срабатывают только у администраторов.
Команда установки на сервере, где мост уже стоит, теперь открывает меню: обновить, перенастроить, поставить ещё один мост или удалить лишний. Перед удалением настройки сохраняются в резервную копию.
Надёжнее в мелочах
длинное сообщение из Telegram доходит в MAX целиком, альбом удаляется без «хвостов», mp3 доходит файлом;
если что‑то передать нельзя (кубик, история), мост пишет об этом в тему, а не молчит;
пропущенное, пока мост был недоступен, догружается и не теряется;
сбои связи больше не сбрасывают вход в MAX;
если обновление сорвалось, мне уходит анонимный отчёт без текста переписки, названий чатов и номера. Отключается одной строкой TELEMETRY=off.
Бесценный опыт )))
Площадка может исчезнуть в любой день — без предупреждения и объяснения причин. Если проектом пользуются каждый день, запасной путь нужен заранее, а не после.
Подпись важнее площадки. Когда каждый релиз подписан, его можно раздавать откуда угодно, и никому не нужно верить зеркалу на слово.
Комментарии — лучший план. Половина того, что сделано за этот месяц, выросла из вопросов под первым постом и сообщений пользователей.
Как поставить
Нужен сервер на Ubuntu 22.04+ или Debian 12+ — хватит и VPS с менее чем 1 ГБ памяти и 3 ГБ свободного диска. Бот создаётся в @BotFather, в группе включаются темы, бот добавляется администратором с правом «Управление темами». Дальше одна команда от root:
curl -fsSL https://raw.githubusercontent.com/Trollobot/Telemax/main/install.sh | bashЕсли GitHub с сервера недоступен — та же установка с зеркала:
curl -fsSL https://zergont-gate.duckdns.org/install.sh | bashПотом /login в личке бота — и чаты MAX начнут появляться в группе. Тем, кто ставил мост после первого поста, достаточно нажать «Обновить».
Честно об ограничениях
Проект неофициальный и работает с вашим аккаунтом MAX на ваш страх и риск.
Это не сквозное шифрование: переписка проходит через ваш сервер, и его стоит защищать.
Любой участник группы в Telegram видит все ваши чаты MAX.
Звонки — только уведомления, мини‑приложения ботов открываются только в MAX.
Разработчик один: баги бывают, зато чинятся быстро.
Обратная связь
Нашли баг или есть идея — пишите боту @TelemaxSvv_bot или в Issues на GitHub — теперь он снова открывается.
Весь функционал бесплатный. Если пригодился — можно подогреть мотивацию разработчика: команда /donate прямо в боте.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.