У серверов, маршрутизаторов и NAS нет рабочего стола, так что ставить туда Clash Verge бессмысленно. Запускайте ядро Mihomo — это один консольный бинарник.
Ниже весь процесс на Linux amd64.
1. Скачать и установить
Мы раздаём архив .gz, внутри которого один исполняемый файл:
# распаковать
gunzip mihomo-linux-amd64-v1.19.29.gz
# сделать исполняемым
chmod +x mihomo-linux-amd64-v1.19.29
# положить в PATH под коротким именем
sudo mv mihomo-linux-amd64-v1.19.29 /usr/local/bin/mihomo
# проверить
mihomo -vВы должны увидеть строку версии и информацию о сборке.
2. Подготовьте рабочий каталог
Mihomo нужно место для конфигурации и файлов данных:
sudo mkdir -p /etc/mihomo
cd /etc/mihomoПоложите туда свой config.yaml. Если у вас есть ссылка подписки, скачайте её:
sudo curl -L -o /etc/mihomo/config.yaml \
-A "clash.meta" \
"адрес-вашей-подписки"Как минимум для работы в конфигурации нужно:
mixed-port: 7890 # объединённый порт HTTP + SOCKS5
allow-lan: true # разрешить подключения из локальной сети
bind-address: "*"
mode: rule
log-level: info
external-controller: 0.0.0.0:9090 # управляющий API
secret: "задайте свой пароль" # пароль API, обязателен, если порт доступен3. Сначала запустите на переднем плане
mihomo -d /etc/mihomo-d задаёт рабочий каталог. Здоровый старт выглядит так:
INFO[0000] Start initial configuration in progress
INFO[0000] Geodata Loader mode: memconservative
INFO[0000] HTTP proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: [::]:9090Увидели listening at — значит, поднялось.
Убедитесь, что работает, остановите Ctrl+C, затем оформляйте службой.
4. Unit для systemd
Создайте /etc/systemd/system/mihomo.service:
[Unit]
Description=Mihomo Daemon
Documentation=https://wiki.metacubex.one
After=network.target nss-lookup.target
[Service]
Type=simple
User=root
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
Restart=always
RestartSec=5
ExecStartPre=/usr/local/bin/mihomo -t -d /etc/mihomo
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
[Install]
WantedBy=multi-user.targetСтрока ExecStartPre запускает проверку конфигурации (-t — test). Сломанная конфигурация тогда валит проверку, а не работающую службу — мелочь, экономящая массу нервов.
sudo systemctl daemon-reload
sudo systemctl enable mihomo # запуск при загрузке
sudo systemctl start mihomo # запустить сейчас
sudo systemctl status mihomo # проверитьactive (running) — готово.
Повседневные команды
sudo systemctl restart mihomo # после изменения конфигурации
sudo systemctl stop mihomo
journalctl -u mihomo -f # следить за логом
journalctl -u mihomo -n 100 # последние 100 строк5. Как дать пользоваться другим устройствам
allow-lan: true уже разрешает доступ из локальной сети. Другие устройства просто указывают прокси на IP и порт этой машины:
На клиентских устройствах:
- Windows: Параметры → Сеть и Интернет → Прокси → Вручную → введите
192.168.1.10и7890 - Телефон (Wi-Fi): долгое нажатие на текущую сеть → Изменить → Дополнительно → Прокси: Вручную → тот же адрес и порт
- На уровне маршрутизатора: если сам маршрутизатор является шлюзом, это можно совместить с TUN/TProxy для прозрачного проксирования, и тогда все устройства покрыты автоматически (более сложная настройка, здесь не рассматривается)
6. Управляющий API и веб-панель
external-controller: 0.0.0.0:9090 открывает RESTful API для переключения узлов, просмотра соединений и перезагрузки конфигурации.
Быстрая проверка:
curl -H "Authorization: Bearer ваш-secret" http://127.0.0.1:9090/versionПолезные эндпойнты:
| Эндпойнт | Назначение |
|---|---|
GET /proxies | Список всех узлов и групп политик |
PUT /proxies/{group} | Переключить выбранный узел в группе |
GET /connections | Текущие соединения |
DELETE /connections | Закрыть все соединения |
GET /logs | Живой поток логов |
PUT /configs?force=true | Перезагрузить конфигурацию |
В паре с веб-панелью получается нечто близкое к графическому клиенту. Положите файлы панели в локальный каталог и укажите на него external-ui:
external-ui: /etc/mihomo/ui
external-ui-name: metacubexdЗатем откройте в браузере http://ip-сервера:9090/ui.
7. Обновление подписки
У headless-развёртывания нет клиента, который обновит подписку, так что берём cron:
sudo crontab -eДобавьте строку (обновление в 4 утра и перезапуск):
0 4 * * * curl -L -A "clash.meta" -o /etc/mihomo/config.yaml "адрес-вашей-подписки" && systemctl restart mihomoБолее безопасный вариант скачивает во временный файл, проверяет его и только потом заменяет рабочую конфигурацию:
#!/bin/bash
TMP=$(mktemp)
curl -fsSL -A "clash.meta" -o "$TMP" "адрес-вашей-подписки" || exit 1
# минимальная проверка вменяемости: должен быть раздел proxies
grep -q "^proxies:" "$TMP" || { rm -f "$TMP"; exit 1; }
mv "$TMP" /etc/mihomo/config.yaml
systemctl restart mihomoСохраните как /usr/local/bin/update-mihomo.sh, сделайте chmod +x и вызывайте из cron. Тогда временно сломавшийся эндпойнт подписки не сможет перезаписать хорошую конфигурацию страницей с ошибкой.
Частые проблемы
Не стартует с unmarshal error YAML невалиден или использует поле, неизвестное этой версии ядра. Выполните mihomo -t -d /etc/mihomo для проверки конфигурации.
Порт уже занят sudo ss -tlnp | grep 7890 покажет, кем. Смените порт в конфигурации или остановите тот процесс.
Не скачивается база GeoIP Заберите geoip.metadb и geosite.dat вручную в рабочий каталог либо отключите автообновление:
geo-auto-update: falseКоротко
Четыре шага: положить бинарник, положить рядом конфигурацию, оформить службой systemd и закрыть порт брандмауэром.
После запуска это фоновая служба, практически не требующая обслуживания — заметно меньше работы, чем ставить клиент на каждое устройство.
Смотрите также: раздача прокси по локальной сети и установка Clash Verge на Linux.