Files
tglock/docs/OPENWRT.md
T

4.5 KiB

CLI для ARM64 / OpenWrt

Цель сборки — aarch64-unknown-linux-musl: ARM64 Linux, статический бинарь без зависимости от glibc, OpenSSL или WebView. Это подходит для 64-битной прошивки NanoPi R4S и других ARM64-роутеров. MIPS и 32-битный ARM требуют другой сборки. Проверьте архитектуру прошивки командой uname -m: ожидается aarch64.

Workflow Static ARM64 CLI собирает и запускает тесты на ARM64 runner, проверяет ELF (нет INTERP и NEEDED), запуск CLI, завершение по SIGTERM и сохранение секрета между запусками. Артефакт содержит бинарь и SHA-256. Release workflow прикладывает такой же проверенный артефакт к будущим релизам. Наличие сборки в PR не означает, что уже опубликован новый релиз.

Это проверка ARM64 Linux, а не испытание конкретной прошивки OpenWrt или доступности Telegram через вашего провайдера.

Установка

Скачайте артефакт успешного запуска workflow нужного PR либо файл tglock-cli-aarch64-unknown-linux-musl из релиза, если он там опубликован. Сверьте SHA-256, скопируйте бинарь на роутер и выполните:

chmod 755 /usr/bin/tglock-cli
/usr/bin/tglock-cli --version
mkdir -p /etc/tglock
chmod 700 /etc/tglock

Создайте /etc/tglock/tglock.toml:

port = 1080
lan = true
secret_file = "/etc/tglock/secret"
# worker = ["your-name.workers.dev"]

lan = true нужен для телефонов и компьютеров в домашней сети. По умолчанию CLI слушает только loopback. Секрет создаётся при первом запуске и сохраняется в указанном файле; он не должен теряться при перезагрузке или обновлении.

chmod 600 /etc/tglock/tglock.toml
/usr/bin/tglock-cli --config /etc/tglock/tglock.toml

В Telegram выберите MTProto и используйте LAN-адрес роутера, порт 1080 и секрет из напечатанной ссылки. 127.0.0.1 на телефоне означает сам телефон. Разрешайте входящий TCP 1080 только из доверенной LAN; не публикуйте порт в WAN. Звонки через UDP эта сборка не реализует.

Сервис procd

После проверки ручного запуска сохраните /etc/init.d/tglock:

#!/bin/sh /etc/rc.common
START=95
STOP=10
USE_PROCD=1

start_service() {
    procd_open_instance
    procd_set_param command /usr/bin/tglock-cli --config /etc/tglock/tglock.toml
    procd_set_param respawn 3600 5 5
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}
chmod 755 /etc/init.d/tglock
/etc/init.d/tglock enable
/etc/init.d/tglock start
logread -e tglock

Обновление: остановите сервис, замените бинарь после проверки контрольной суммы, сохраните /etc/tglock, запустите сервис снова. Для отмены автозапуска используйте /etc/init.d/tglock stop и /etc/init.d/tglock disable.

TLS и маршруты

Встроенный набор доверенных корневых сертификатов webpki обновляется вместе с бинарём. Проверка сертификата и имени включена: при подключении к закреплённому IP имя Telegram по-прежнему используется для SNI и проверки сертификата. На роутере должно быть установлено правильное время.

Если все Telegram IP недоступны, нужен доступный маршрут через собственный Cloudflare Worker. Статическая сборка сама по себе не устраняет блокировку всех внешних маршрутов.