Устранение неполадок
Типичные проблемы с headless Throne — от юнита, который не запускается, до конфликтов TUN и отклонённых запросов к API, — и что указать в отчёте об ошибке.
Начните с Throne --check и Throne --health, запущенных от имени пользователя Throne и с тем же --data-dir (см. Проверки состояния и логи), и прочитайте последние строки лога. Строка EXIT <code>: <reason> сообщает, почему Throne завершился; каждый код объясняется в разделе Коды завершения.
Типичные проблемы
| Симптом | Причина и решение |
|---|---|
Юнит сразу завершается с ошибкой, а в логе есть refusing to run as root with /var/lib/throne |
Другие пользователи могут записывать в каталог данных. Выполните sudo chmod go-w /var/lib/throne /var/lib/throne/config. |
Код завершения 3: … is in use by … |
Каталог данных занят другим Throne: приложением для компьютера, пользовательским юнитом или второй службой. Остановите другой экземпляр. |
Приложение для компьютера сообщает Throne is running in the background и завершается |
Headless Throne (обычно пользовательский юнит) использует каталог данных приложения для компьютера. Выполните systemctl --user stop throne или управляйте им через thronectl. См. Работа рядом с Throne для компьютера. |
degraded: api_unavailable, а в логе есть [API] Not listening on 127.0.0.1:9095 |
Порт 9095 занят другой программой. Throne пробует снова каждые 30 секунд. Другой порт можно выбрать с помощью --api-listen PORT. |
--print-connection: The API key is not in a file |
Настройки каталога данных включили API с собственным ключом, как это делает приложение для компьютера. Используйте этот ключ как THRONE_KEY (в приложении для компьютера: Integration Settings → Throne API → Copy for scripts) или запустите Throne с --api-key-file. |
--health или --print-connection: No headless Throne answered |
Запустите команду от имени пользователя Throne, с тем же --data-dir. Для системного юнита используйте sudo. |
Windows: [Instance] Not talking to … access denied |
Канал службы доступен только администраторам и SYSTEM. Выполните команду из командной строки с правами администратора, с --data-dir C:\ProgramData\Throne. |
thronectl: Throne closed the connection without a response |
Неверный ключ, или ваш адрес отклоняется на 60 секунд после 5 неудачных попыток, например из-за другого клиента со старым ключом. Проверьте THRONE_KEY_FILE и подождите минуту. |
thronectl: forbidden |
Административный запрос с другого устройства. Запустите Throne с --api-admin-lan или выполните команду на устройстве, где работает Throne. |
| thronectl: нет подключения | Throne не запущен, или THRONE_ADDR указывает на другой адрес. Проверьте systemctl status throne и Throne --print-connection. |
thronectl tun on: needs_privileges |
Throne не хватает прав для TUN. Выполните Throne --check и см. Права в Linux. |
thronectl proxy on: system_proxy_unsupported |
В headless Throne нет системного прокси. Направьте другие программы на смешанный порт или используйте TUN. |
tun_conflict: the Tun address 172.19.0.1 is already used by the network interface br-… |
Сеть Docker (или другая сеть) использует диапазон TUN Throne. Перенесите TUN в свободный диапазон командой thronectl settings set tun_ipv4_cidr=172.29.0.1/24 (подойдёт любой диапазон, который не использует ни один сетевой интерфейс на компьютере), затем снова выполните thronectl tun on. Или задайте этой сети Docker другую подсеть. |
tun_conflict: port 5533 on 127.0.0.1 (the core's DNS server, dns_in_port) is in use |
DNS-порт занят другой программой. Выполните thronectl settings set dns_in_port=PORT со свободным портом, затем снова thronectl tun on. |
tun_conflict с упоминанием другого Throne |
TUN использует другой Throne на компьютере, например Throne для компьютера. TUN может одновременно использовать только один Throne. |
Профили отклоняются: kill_switch_inactive |
Kill switch включён, но не может работать. Причину сообщают kill_switch_error в thronectl --json status и строка лога [Kill switch] Not active (<code>): privilege, unsupported, config или overridden. Выключить его можно командой thronectl settings set kill_switch=false. См. Kill Switch. |
degraded: resume_suppressed |
Возобновляемый профиль приводил к остановке Throne или его ядра при трёх запусках подряд. Исправьте профиль, затем запустите его командой thronectl connect <id>. |
degraded: core_gave_up |
Ядро постоянно падает. Throne остаётся запущенным и пробует снова каждые 5 минут. Строка лога о прекращении попыток заканчивается последней ошибкой ядра. |
degraded: vpn_challenge_pending или vpn_auth_failed |
VPN-профилю нужен вход, который headless Throne не может выполнить, или его сохранённые учётные данные отклонены. Добавьте профилю запись OTP для одноразовых кодов или исправьте учётные данные в Throne для компьютера и перенесите их с помощью резервной копии. |
previous_crash: true |
Последний запуск завершился некорректно. Его лог — config/logs/crashed-<time>.log в каталоге данных. |
| Docker: опубликованный порт 2080 не отвечает | Входящее подключение слушает 127.0.0.1. Выполните thronectl settings set inbound_address=0.0.0.0 и снова запустите профиль. |
Docker: контейнер снова запускается после thronectl shutdown |
restart: unless-stopped запускает его после каждого завершения. Остановите его командой docker compose stop. |
| macOS: Throne запускается каждые 10 секунд и завершается | Ошибка конфигурации, при которой launchd повторяет запуск. Прочитайте /Library/Logs/Throne/throne.log. |
| Windows: служба сразу останавливается | sc.exe query Throne показывает код завершения Throne как SERVICE_EXIT_CODE. Лог находится в C:\ProgramData\Throne\config\logs. Код 78 часто означает проблему с папкой данных. |
| Вы потеряли доступ из-за kill switch или TUN | Запустите Throne один раз с --no-resume --no-kill-switch. См. Восстановление доступа. |
Что указать в отчёте об ошибке
Если проблема не исчезает, сообщите об ошибке и укажите:
- вывод
Throne --check, - вывод
Throne --health, - как работает Throne: пакет или образ и его версию, а также менеджер служб,
- лог от запуска до появления проблемы, с
--debug, если можете воспроизвести проблему. При сбое также приложитеconfig/logs/crashed-<time>.log.
Удалите адреса серверов, URL подписок и ключи из того, что публикуете. Никогда не публикуйте api.key.