← Вся документация

Привязка, повторная привязка и общий доступ к машине

У каждой машины с Terminull есть постоянная идентичность — идентификатор beacon и открытый ключ, — и она показывает QR-код terminull://pair, который их содержит. QR-кодов два разных, и результат сканирования зависит от того, какой это QR и кто его сканирует. Весь этот раздел — про это различие: один QR передаёт машину, другой даёт ею воспользоваться.

Привязка — первое подключение машины

В macOS мастер настройки показывает QR на последней странице, а в строке меню он всегда доступен через «Добавить устройство по QR». На Linux-сервере без графики служба terminull выводит ссылку привязки текстом (QR в терминале нечитаем через SSH) — её можно вставить в приложение или перетащить в окно на Mac.

В Windows установщик показывает QR на последнем шаге, а иконка в трее всегда открывает его через Pair a phone (QR) — или выполните terminull qr в любом терминале.

Сканирование в приложении привязывает машину к вашей учётной записи — вы становитесь её владельцем. Приложение регистрирует идентификатор beacon и открытый ключ, после чего машина один раз запрашивает свой постоянный токен и выходит в сеть. В QR входят только идентификатор beacon, открытый ключ машины, временный ключ обмена, адрес её релея и одноразовый код привязки — но никогда ваш код, сессии или учётные данные.

Как получить QR на машине без графики

Только что установленная служба печатает QR привязки в собственный вывод при первом запуске, пока она не привязана, и перестаёт это делать, как только устройство её привязало. Чтобы получить QR в любой момент позже, запросите его у работающей службы:

terminull-admin qr        # print a QR (needs the service running)
terminull-admin qr --url  # just the pairing link, on stdout

QR рисуется в выводе службы, а не в терминале, где вы набрали команду, — в ваш терминал возвращается ссылка. При systemd этот вывод попадает в журнал, поэтому смотрите его там:

journalctl --user -u terminull --no-pager -o cat -n 40

-o cat — не опция «на всякий случай». Без неё journald добавляет в начало каждой строки метку времени и имя юнита, из-за чего каждая строка кода сдвигается вбок: он не отсканируется, как бы правдоподобно ни выглядел.

По SSH ссылка обычно удобнее картинки. terminull-admin qr --url печатает чистый URL, который можно вставить в приложение, или передать своему генератору, полностью минуя журнал: terminull-admin qr --url | qrencode -t ANSI.

Два типичных затруднения. Установщик кладёт команду в окружение самой службы, поэтому, если оболочка её не находит, используйте полный путь ~/.local/share/terminull/venv/bin/terminull-admin. И команда общается с работающей службой через локальный сокет, так что «terminull is not running» означает ровно это: запустите её командой systemctl --user start terminull и повторите. Всё, что она напечатает, считайте QR владельца — со всеми предосторожностями, описанными выше.

Повторная привязка — сканирование той же учётной записью

Сканировать QR владельца ещё раз учётной записью, которой машина уже принадлежит, — это повторная привязка, и её можно безопасно повторять. Она обновляет сохранённые открытый ключ и имя и заново открывает окно выдачи токена. Ничего не теряется: сессии живут на самой машине, а не на телефоне, поэтому после этого они все на месте.

Привязывайте повторно, когда добавляете второе своё устройство (iPad рядом с iPhone), переустанавливаете приложение или сбрасываете идентичность машины полным удалением — в последнем случае ключ создаётся заново, и повторная привязка записывает именно его.

QR владельца — это секрет. Если его отсканирует другая учётная запись, это не присоединение, а передача владения. Сервер запишет её как ожидающую, и она вступит в силу при следующем опросе со стороны машины — машина уйдёт из вашей учётной записи. Наличие кода привязки подтверждает физический доступ к машине, поэтому он и считается правом на неё. Чтобы пустить кого-то без передачи владения, используйте QR общего доступа ниже.

Общий доступ — дать другому человеку пользоваться вашей машиной

В приложении откройте «Учётная запись», найдите машину и нажмите значок QR рядом с ней. Машина создаёт новый код, действующий две минуты, регистрирует его на сервере и показывает QR общего доступа с обратным отсчётом. (Для машин в режиме «только LAN» общий доступ недоступен — за ними нет учётной записи.)

Когда его сканирует другая учётная запись, она присоединяется как участник: машина появляется в её списке, приходят пуш-уведомления, можно запускать на ней сессии. Владелец не меняется, токен машины остаётся прежним. Уже присоединившиеся участники могут сканировать снова в любой момент — открывать новое окно не нужно.

Срок действия не просто показывается, а проверяется сервером. Сканирование без подходящего кода отклоняется с сообщением «эта машина сейчас не в общем доступе», а просроченное — «код общего доступа истёк, попросите у владельца новый QR». Поэтому скриншот старого QR бесполезен, и в этом весь смысл: общий доступ — осознанное и краткое действие, а не постоянное разрешение.

Какой QR передо мной?

QR владельцаQR общего доступа
Где найтиМастер настройки или строка меню → «Добавить устройство по QR»Приложение → «Учётная запись» → значок QR рядом с машиной
Сколько действуетПока идентичность машины не сброшенаДве минуты, с обратным отсчётом
Сканирует ваша учётная записьПовторная привязка — можно повторятьНичего нового: машина уже у вас
Сканирует чужая учётная записьЗабирает владение машинойПрисоединяется как участник, вы остаётесь владельцем
Можно скриншотить?Нет — обращайтесь с ним как с паролемБезвреден, как только истекут две минуты

Привязка только по локальной сети

Машина с настройкой pairing_mode = "lan" привязывается полностью в вашей локальной сети: её QR помечен как «только LAN», приложение пропускает привязку к учётной записи, и сервер не участвует ни на одном шаге. После этого машина доступна только из той же сети, а пуш-уведомления и облачные ИИ-помощники недоступны. Поделиться ею тоже нельзя: общий доступ работает через сервер, а в этом режиме сервера нет.

Ядро Terminull Service задумано открытым. Структура исходного кода, полный справочник блоков и дизайн передачи управления находятся рядом, в docs/ репозитория. Вопросы: hello@terminull.dev.