op-packages/homeproxy-hiddify/wiki/Custom-JSON-Config-ru.md
github-actions[bot] ae7b9f4d28 🎁 Sync 2026-07-31 00:21:49
2026-07-31 00:21:49 +08:00

8.4 KiB
Raw Blame History

🇬🇧 English | 🇷🇺 Русский

Пользовательский 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 по имени тега — следите за их согласованностью.