Перейти к содержимому

Управление клиентами

meridian client add alice

Это даёт “alice” её собственный ключ и выводит две вещи для обмена:

  • Ссылка на страницу подключения с QR кодом — самый простой способ отправить
  • URL подписки для прямого импорта в приложение Xray/V2Ray

Добавьте нескольких человек сразу:

meridian client add alice bob charlie

Клиенты принадлежат всем вашим серверам, а не одному серверу. Каждый выход и промежуточный сервер, который у вас есть, показывается в их подписке.

Страница подключения построена из подлинной подписки человека, поэтому она перечисляет ровно то, что получают его приложения: прямые выходы, промежуточные серверы и все включённые способы. На ней есть:

  • Два шага: установить приложение, рекомендованное для платформы человека (сначала Happ, затем FlClashX и Clash Mi, а на компьютере ещё Throne), и добавить подключение одним касанием
  • QR-код подписки; на компьютере он показан рядом с шагами, чтобы человек мог настроить телефон
  • Каждое отдельное подключение с кнопками «Открыть», «Копировать» и QR, свёрнутое, пока не понадобится
  • Раздел «Не подключается?» с советами и проверкой «Проверить подключение», которая копирует отчёт без ссылок, чтобы его можно было отправить вам

В приложении записи названы по стране выхода и способу: «🇩🇪 DE · Reality · Chrome», «🇩🇪 DE · XHTTP · Chrome», «🇩🇪 DE · WebSocket · CDN», «🇩🇪 DE · Hysteria2 · UDP»; у записей через промежуточный сервер добавляется «via relay». Если два выхода находятся в одной стране, после флага показываются их имена («🇩🇪 main»); у выхода с неизвестной страной показывается его имя, когда выходов несколько. Reality и XHTTP приходят также копиями «· Firefox» с другим отпечатком TLS — на случай, если один отпечаток заблокируют. Приложения с автопереключением (приложения на Xray JSON, такие как Happ, а также Mihomo и sing-box) сами выбирают рабочую запись, но не переключаются между отпечатками; для этого Happ показывает отдельную запись «Automatic · Firefox».

Отправьте ссылку через любой мессенджер. Получатель открывает её, устанавливает приложение, нажимает «Добавить в …» (или сканирует QR-код с другого устройства) и подключается. Подключение проводит человека через эти шаги и подсказывает, что делать, когда подключение перестаёт работать; отправьте ему и эту страницу.

Чтобы снова поделиться ссылками клиента:

meridian client show alice

Это выводит страницу подключения и URL подписки, плюс статус, трафик и когда клиент был последний раз виден. Если страница отсутствует (например, загрузка не удалась), переопубликуйте её:

meridian client show alice --repair-page
meridian client list

Показывает каждого клиента со статусом, трафиком, временем создания и последним видением.

meridian client disable alice
meridian client enable alice

disable отключает клиента немедленно; enable позволяет им вернуться с теми же ссылками.

Отключение действует до client enable: apply, переразвёртывания и изменения набора серверов его не затрагивают.

Если ссылка или страница подключения клиента попала не к тому человеку, замените её:

meridian client reissue alice

Remnawave выдаёт клиенту новый идентификатор подписки и новые ключи. Старый URL подписки и старая страница подключения отвечают 404, а серверы отклоняют старые ключи. Meridian удаляет старую страницу, публикует новую и выводит новую страницу и URL подписки, которые нужно отправить клиенту. Новую ссылку импортируют один раз: приложения не могут обновить подписку, URL которой больше не существует. Всё остальное, что панель хранит о клиенте, сохраняется: статус, лимит и расход трафика, срок действия, описание и лимит устройств HWID.

Лимит устройств HWID хранится в панели, а не в ссылке. Уже зарегистрированные устройства остаются в списке HWID клиента после перевыпуска и продолжают занимать места, хотя их старая ссылка больше не подключается. Откройте клиента в панели и удалите незнакомые устройства, чтобы лимит учитывал только устройства самого клиента. Собственных билетов или привязки к устройству Meridian не добавляет.

С --json передайте --yes. Новые ссылки появляются только в выводе этой команды.

meridian client remove NAME удаляет клиента окончательно: его ссылки перестанут работать и его страница подключения будет удалена. Всегда остаётся минимум один клиент. Не удаляйте пользователей в панели Remnawave напрямую — Meridian воссоздаёт любого клиента, который остался в топологии, при следующем применении.

URL подписки выглядят как https://198.51.100.10/<page-path>/sub/<id>. Они находятся под путём страницы подключения; админ-панель Remnawave остаётся на отдельном секретном пути, который общие ссылки никогда не раскрывают.

Каждая подписка просит приложения обновлять её каждые 6 часов (заголовок profile-update-interval, которому следуют такие приложения, как Happ и Clash Verge), поэтому когда вы добавляете выход или промежуточный сервер, клиенты подхватывают его в течение нескольких часов без новой ссылки. Приложения, игнорирующие заголовок, обновляют подписку по собственному расписанию; ручное обновление в приложении подхватывает изменения сразу.

Кнопка поддержки в приложении открывает страницу подключения этого человека с подсказками «Не подключается?». Чтобы вести людей в другое место, задайте свой заголовок support-url в настройках подписки в панели; Meridian его сохранит.

Один URL подписки отдаёт каждому приложению тот формат, который оно читает. Каждое изменение Meridian запускает многоузловую тестовую лабораторию: она получает каждый формат от настоящей панели Remnawave и проверяет его движком, на котором построены эти приложения:

ФорматПриложенияПроверенный движокЧто проверяет лаборатория
Xray JSONHapp, v2rayNG, v2rayN, Streisand, V2BoxXray 26.7.28Трафик проходит через каждую точку входа и через автоматическое переключение при сбое; неверный ключ отклоняется
MihomoFlClashX, Clash MiMihomo 1.19.32mihomo -t загружает профиль, его правила и резервную группу
sing-boxsing-box (SFA, SFI), Karingsing-box 1.14.3sing-box check загружает профиль, а его автоматическая группа является маршрутом по умолчанию
Base64 ссылкидругие приложения Xray/V2Ray (v2RayTun, Shadowrocket)—Каждая ссылка разбирается и указывает те же серверы и ключ, что и другие форматы

Приложения сами выпускают обновления движков, поэтому приложение может использовать чуть более старый или более новый движок, чем проверенный.

Учётные записи клиентов (ключи, статус, трафик) живут в базе данных панели Remnawave на сервере контроль-плана. Список клиентов, которыми управляет Meridian, является частью вашей топологии в ~/.config/meridian/cluster.yml. Команды client используют API панели и не требуют SSH; публикация страницы подключения использует SSH к серверу контроль-плана.

Remnawave админ-панель показывает трафик, пользователей и узлы в браузере, и вы добро пожаловать использовать её. meridian panel выводит её URL и имя администратора; meridian panel --show-password также выводит пароль.

Meridian и панель разделяют работу поэтому ваши правки не переписываются:

Meridian управляет (следующее применение восстанавливает его версию)Ваши для изменения (apply никогда не касается этих)
Узлы, профили конфигурации, inbounds, опубликованные Hosts, отрядыСтатус каждого клиента: включить/отключить, лимиты трафика, истечение, HWID лимиты, описание
Шаблоны подписки и параметры которые Meridian устанавливает (название, интервал обновления, Xray JSON для приложений, которые его читают, ссылка поддержки, если вы не задали свою)Пользователи которых вы создали сами в панели
Какие клиенты существуют, их имена и их отрядыОповещения, плагины, IP контроль и другие параметры панели

meridian plan показывает любую разницу в том что Meridian управляет перед что-либо изменится. Пользователи которых вы добавили в панель никогда не перечисляются, не изменяются или не удаляются Meridian; чтобы дать кому-то управляемую Meridian ссылку и страницу подключения, используйте meridian client add вместо этого.

Плагины узлов Remnawave (Ingress Filter, Egress Filter, Torrent Blocker, Connection Drop) необязательны и находятся в панели. Чтобы использовать один из них, откройте Node Plugins в интерфейсе администратора, создайте конфигурацию плагинов, включите нужные плагины и привяжите конфигурацию к своим узлам. Meridian уже запускает каждый узел с разрешением NET_ADMIN, которое нужно плагинам, и никогда не изменяет и не удаляет ваши конфигурации плагинов.

Плагины записывают правила nftables на хосте, поэтому upstream также требует ядро Linux 5.7 или новее; на более старом они молча ничего не делают. meridian check сообщает об этом как о Node plugin readiness на каждом выходе и шлюзе и предупреждает о старом ядре (перейдите на Ubuntu 22.04+ или Debian 11+). Если вы не используете плагины, это предупреждение можно игнорировать.

Torrent Blocker распознаёт BitTorrent с помощью sniffing трафика, который Meridian включает (в режиме route-only, поэтому адреса назначения никогда не переписываются) на каждом inbound, который он формирует. Включите плагин в панели, и он заработает на каждом выходе.

Сторонние боты, например Telegram бот, который сообщает, сколько трафика осталось, обращаются напрямую к API Remnawave. Дайте каждому боту собственный токен только с нужным ему доступом:

  1. Откройте панель (meridian panel выводит URL), перейдите в Remnawave Settings → API tokens (настройки Remnawave, API токены) и выберите Create API token.
  2. Назовите токен именем бота и задайте Expires in (days) на срок, который вы действительно будете ротировать, например 30 или 90 дней.
  3. Начните с пресета Read only или выберите отдельные эндпоинты и выдайте только то, что использует бот. Панель показывает токен один раз; храните его вместе с секретами бота.
  4. Укажите боту URL панели из meridian panel и отправляйте токен как Authorization: Bearer <token>. Пути API идут после этого URL, например https://198.51.100.10/<secret-path>/api/users/by-username/alice. URL содержит секретный путь панели, поэтому храните его так же скрытно, как токен.

Права называются resource:endpoint; resource:read даёт все эндпоинты чтения ресурса, а resource:write все эндпоинты записи. Типичному боту только для чтения нужны:

ПравоЭндпоинтВозвращает
users:by-usernameGET /api/users/by-username/{username}Статус одного пользователя, использованный трафик и лимит, срок действия
users:by-short-uuidGET /api/users/by-short-uuid/{shortUuid}То же, но по идентификатору из ссылки подписки пользователя
users:listGET /api/usersВсех пользователей, постранично
system:statsGET /api/system/statsОбщие итоги по пользователям и трафику панели
nodes:listGET /api/nodesСтатус и трафик каждого узла

Добавляйте право на запись, только если бот изменяет учётные записи, например users:extend (POST /api/users/{id}/actions/extend) для платёжного бота, продлевающего срок. Статус, лимиты и срок действия вы изменяете сами (см. таблицу выше), поэтому следующее применение сохраняет правки бота. Бот не должен переименовывать или удалять клиентов Meridian: следующее применение создаст их заново.

Не давайте боту собственный токен Meridian (meridian-provisioner в списке токенов). Он даёт полный доступ к панели и практически не истекает, поэтому утечка с хоста бота раскроет все узлы, ключи и пользователей. Отдельный токен ограничивает ущерб тем, что умеет бот, истекает сам и может быть удалён без последствий для Meridian. Не трогайте meridian-provisioner; его используют все команды клиентов и применения.