8.4 KiB
Пользовательский JSON конфиг
Пользовательский JSON — режим маршрутизации, позволяющий полностью обойти UCI-конфигурацию Re:HomeProxy и использовать «сырой» JSON-конфиг формата sing-box / hiddify-core напрямую. Предназначен для опытных пользователей, которым нужен тонкий контроль, недоступный через веб-интерфейс.
Чтобы включить режим: Re:HomeProxy → Клиент → Настройки маршрутизации → установить Режим маршрутизации в значение Пользовательский JSON.
Файл конфигурации размещается по пути /etc/homeproxy/hiddify-c.json.
Структура конфига
Конфиг hiddify-core — это JSON-объект. Основные секции верхнего уровня:
| Секция | Назначение |
|---|---|
log |
Уровень логирования и путь к файлу лога |
dns |
DNS-серверы, правила и стратегия разрешения |
inbounds |
Как трафик попадает в прокси (tproxy, tun, socks, http и др.) |
outbounds |
Куда трафик выходит (прямо, через прокси-серверы, цепочки) |
route |
Правила сопоставления входящего трафика с исходящими |
experimental |
Кэш, Clash API и другие экспериментальные возможности |
Минимальный рабочий конфиг требует как минимум одного inbound, двух outbound (proxy + direct) и правил маршрутизации.
Полная документация: Конфигурация sing-box
Отдельные разделы:
hiddify-core и sing-box
hiddify-core — форк sing-box, в целом совместимый по формату конфига. Ключевые отличия:
- Дополнительные протоколы — hiddify-core поддерживает протоколы, которых нет в upstream sing-box или которые появились в нём позже. Это AnyTLS, расширенные опции для некоторых существующих протоколов. Полный список — на странице Поддерживаемые протоколы.
- Расширения hiddify — некоторые дополнительные поля и опции специфичны для hiddify. Они задокументированы в руководстве HiddifyCli.
- Различия версий — hiddify-core может опережать или отставать от конкретного релиза sing-box. Если функция sing-box не работает — проверьте release notes hiddify-core.
При написании конфигов отталкивайтесь от документации sing-box, обращаясь к руководству hiddify-core там, где поведение отличается.
Пример скелета конфига
{
"log": {
"disabled": false,
"level": "warn",
"output": "/var/run/homeproxy/hiddify-c.log",
"timestamp": true
},
"dns": {
"servers": [
{ "tag": "remote", "address": "tls://1.1.1.1" },
{ "tag": "local", "address": "223.5.5.5", "detour": "direct" }
],
"rules": [
{ "geosite": "cn", "server": "local" }
]
},
"inbounds": [
{
"type": "tproxy",
"tag": "tproxy-in",
"listen": "::",
"listen_port": 5332,
"network": "udp",
"sniff": true
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "your.server.example",
"server_port": 443
},
{ "type": "direct", "tag": "direct" },
{ "type": "block", "tag": "block" },
{ "type": "dns", "tag": "dns-out" }
],
"route": {
"default_mark": 100,
"rules": [
{ "protocol": "dns", "outbound": "dns-out" },
{ "geosite": "cn", "outbound": "direct" },
{ "geoip": "cn", "outbound": "direct" }
],
"final": "proxy"
}
}
Это только иллюстрация — адаптируйте тип/порт inbound, настройки outbound и правила маршрутизации под свою конфигурацию.
Советы
-
Проверяйте перед сохранением. Некорректный JSON будет молча проигнорирован. Используйте JSON-валидатор перед вставкой — ошибки синтаксиса не отображаются в интерфейсе. После сохранения проверьте лог (см. ниже), чтобы убедиться, что конфиг загрузился корректно.
-
Логи. Если конфиг применился, но трафик не работает — проверьте лог ядра в Re:HomeProxy → Ядро и службы или через SSH:
tail -f /var/run/homeproxy/hiddify-c.log. -
Порты входящих соединений. Правила файрвола Re:HomeProxy ожидают конкретные порты. Если вы меняете порты inbound в пользовательском JSON, правила nftables перестанут совпадать и трафик не достигнет inbound. Стандартная конфигурация inbounds, используемая Re:HomeProxy:
"inbounds": [ { "type": "direct", "tag": "dns-in", "listen": "::", "listen_port": 5333 }, { "type": "mixed", "tag": "mixed-in", "listen": "::", "listen_port": 5330, "udp_timeout": "300s", "sniff": true, "sniff_override_destination": true, "set_system_proxy": false }, { "type": "redirect", "tag": "redirect-in", "listen": "::", "listen_port": 5331, "sniff": true, "sniff_override_destination": true }, { "type": "tproxy", "tag": "tproxy-in", "listen": "::", "listen_port": 5332, "network": "udp", "udp_timeout": "300s", "sniff": true, "sniff_override_destination": true } ]Если нужно изменить порты — обновите их и в пользовательском JSON, и в
/etc/config/homeproxy(опцииmixed_port,redirect_port,tproxy_port,dns_port), чтобы правила файрвола оставались согласованными. -
default_mark. Обязательное поле в секцииrouteдля предотвращения петель маршрутизации tproxy. Без него собственный исходящий трафик hiddify-core перехватывается правилами nftables и снова направляется в прокси. Значение должно совпадать сself_markв/etc/config/homeproxy(по умолчанию:100):"route": { "default_mark": 100, ... }Если вы меняете это значение — обновите
self_markв/etc/config/homeproxyсоответственно. -
Теги outbound. Правила маршрутизации ссылаются на outbound по имени тега — следите за их согласованностью.