Описание проблемы
В стандартном Clash/Mihomo-шаблоне 3x-ui-pro используется фиксированный путь для proxy-provider:
path: ./proxy_providers/base64.yml
Из-за этого разные подписки могут использовать один и тот же локальный файл кэша provider.
Проблема проявилась у меня при использовании нескольких независимых подписок 3x-ui-pro в Koala Clash.
Сама подписка переключается нормально, provider URL у каждой свой, но список серверов может остаться от другой подписки.
Пример
Подписка 1:
proxy-providers:
sub:
type: http
url: https://server-a.example/sub/user-a?provider=1
path: ./proxy_providers/base64.yml
interval: 3600
Подписка 2:
proxy-providers:
sub:
type: http
url: https://server-b.example/sub/user-b?provider=1
path: ./proxy_providers/base64.yml
interval: 3600
URL разные и каждый из них корректно возвращает свой набор серверов.
Но локальный путь provider в обоих конфигах одинаковый:
./proxy_providers/base64.yml
Как воспроизвести
- Добавить в Koala Clash две разные подписки
3x-ui-pro.
- В обеих подписках оставить стандартный:
path: ./proxy_providers/base64.yml
- Открыть первую подписку и проверить список серверов.
- Переключиться на вторую.
- Во второй подписке могут остаться серверы из первой.
При этом URL provider во второй подписке правильный и действительно отдаёт другой набор нод.
Причина
Похоже, проблема связана с тем, что все сгенерированные подписки используют один и тот же:
path: ./proxy_providers/base64.yml
Из-за этого разные профили могут обращаться к одному локальному кэшу provider.
Рабочее решение
После удаления строки:
path: ./proxy_providers/base64.yml
проблема полностью исчезла.
Было:
proxy-providers:
sub:
type: http
url: https://${DOMAIN}/${SUB_PATH}/${SUB_ID}?provider=1
path: ./proxy_providers/base64.yml
interval: 3600
Стало:
proxy-providers:
sub:
type: http
url: https://${DOMAIN}/${SUB_PATH}/${SUB_ID}?provider=1
interval: 3600
После этого Mihomo сам создаёт отдельный кэш для каждого provider URL, и подписки больше не пересекаются.
Ещё один вариант — делать путь уникальным:
path: ./proxy_providers/${SUB_ID}.yml
Но, судя по всему, проще вообще не задавать path.
Ожидаемое поведение
Разные подписки должны использовать разные provider-кэши и не показывать ноды друг друга.
Окружение
3x-ui + mozaroc/3x-ui-pro
- Koala Clash
- Mihomo
- Windows
Описание проблемы
В стандартном Clash/Mihomo-шаблоне
3x-ui-proиспользуется фиксированный путь дляproxy-provider:Из-за этого разные подписки могут использовать один и тот же локальный файл кэша provider.
Проблема проявилась у меня при использовании нескольких независимых подписок
3x-ui-proв Koala Clash.Сама подписка переключается нормально,
provider URLу каждой свой, но список серверов может остаться от другой подписки.Пример
Подписка 1:
Подписка 2:
URL разные и каждый из них корректно возвращает свой набор серверов.
Но локальный путь provider в обоих конфигах одинаковый:
Как воспроизвести
3x-ui-pro.При этом URL provider во второй подписке правильный и действительно отдаёт другой набор нод.
Причина
Похоже, проблема связана с тем, что все сгенерированные подписки используют один и тот же:
Из-за этого разные профили могут обращаться к одному локальному кэшу provider.
Рабочее решение
После удаления строки:
проблема полностью исчезла.
Было:
Стало:
После этого Mihomo сам создаёт отдельный кэш для каждого provider URL, и подписки больше не пересекаются.
Ещё один вариант — делать путь уникальным:
Но, судя по всему, проще вообще не задавать
path.Ожидаемое поведение
Разные подписки должны использовать разные provider-кэши и не показывать ноды друг друга.
Окружение
3x-ui+mozaroc/3x-ui-pro