Clash Verge — настольное приложение: без X или Wayland оно попросту не стартует. Само ядро при этом обычная консольная программа, и запуск его напрямую делает всё то же, что делает за вас настольная сборка.
Четыре шага до работающей службы
- Скачайте архив под свою архитектуру со страницы релиза mihomo (проверьте её командой
uname -m), распакуйте, дайте права на выполнение и положите в/usr/local/bin/mihomo. - Создайте рабочий каталог
/etc/mihomoи положите конфиг какconfig.yaml. Файл с настольной машины подходит как есть: специфичные для клиента поля ядро просто игнорирует. - Напишите юнит службы (ниже).
systemctl daemon-reload && systemctl enable --now mihomo.
[Unit]
Description=mihomo daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
Если нужен TUN, добавьте AmbientCapabilities=CAP_NET_ADMIN — это безопаснее, чем гонять всю службу от root.
Без окна лог — это всё
journalctl -u mihomo -f показывает лог в реальном времени. При ошибке в конфиге ядро завершается и печатает конкретную строку — это нагляднее, чем искать причину в графическом интерфейсе. Служба не стартует — смотрите сюда первым делом, обычно ответ в одну строку.
Нужны подробности — временно поставьте log-level в debug, а потом верните info. Отладочный вывод очень объёмный и на маленьком диске быстро всё заполнит.
Как этим пользоваться и управлять
Консольным утилитам на той же машине нужны переменные окружения — как в статье прокси для терминала:
export https_proxy=http://127.0.0.1:7897
export http_proxy=http://127.0.0.1:7897
Если хотите управлять из панели, не привязывайте external-controller к 0.0.0.0. Оставьте 127.0.0.1:9097 и пробрасывайте порт по SSH, когда он нужен:
ssh -L 9097:127.0.0.1:9097 user@your-server
Дальше локальная панель подключается к 127.0.0.1:9097. Что умеет этот API — в статье про внешний контроллер.
external-controller: 0.0.0.0:9097 со слабым secret выкладывает управление ядром в интернет. Сканеры находят такое за считаные часы.
Автообновление подписки
Клиента нет, значит расписание берёт на себя cron: скачать подписку поверх текущего конфига и перезапустить службу. Перезапуск рвёт все активные соединения, поэтому ставьте задачу на время, когда машиной никто не пользуется, — обычно это четыре утра.
Перед подменой проверьте файл: mihomo -t -d /etc/mihomo разбирает конфиг и сообщает об ошибках. Перезаписывайте и перезапускайте только после успешной проверки, иначе одна кривая подписка загонит службу в цикл перезапусков. Если удобнее сначала настроить конфиг на десктопе и перенести, начните с инструкции по установке в Linux.