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

Руководство развёртывания

Это руководство охватывает каждый вариант meridian deploy. Если это ваше первое развёртывание, начните с Getting Started.

meridian deploy 198.51.100.10

Один сервер становится и контроль-планом (панель Remnawave) и выходом, который несёт трафик. Meridian строит ту же рассмотренную топологию, которую производит meridian setup и применяет её с контрольными точками. Перед тем как вывести “Done”, он пропускает реальный трафик через доставленную подписку.

Запустите meridian deploy без IP и он спросит его. Добавьте --yes для пропуска подтверждений:

meridian deploy 198.51.100.10 --client-name alice --yes

Meridian входит по SSH-ключам. Многие VPS-провайдеры выдают только пароль root, поэтому когда сервер отклоняет ваши ключи, но принимает пароль, интерактивный meridian deploy спрашивает:

→ This server accepts only a password. Create a key for Meridian and install it now? [y/N]

Ответьте y и введите пароль (он скрыт). Meridian создаёт собственный ключ в ~/.config/meridian/ssh/meridian_ed25519, добавляет его в authorized_keys сервера, проверяет, что вход по нему работает, сохраняет его в профиле сервера и продолжает работу. Пароль используется для этой одной команды и никогда не сохраняется и не попадает в журнал. Ключ хоста проверяется первым, поэтому пароль уходит только на сервер, отпечаток которого вы приняли. meridian setup предлагает то же самое при добавлении сервера.

Без терминала, с --yes или с --json Meridian никогда не задаёт вопросов: вместо этого он останавливается и выводит команду для ручного выполнения. Один раз установите собственный ключ и запустите снова:

ssh-copy-id root@198.51.100.10

Укрепление отключает вход по паролю после развёртывания, поэтому сохраните ключ: последующие команды используют его автоматически.

ФлагПо умолчаниюОписание
--sni HOST(авто)Цель маскировки. Без него развёртывание предпочитает сайт из собственной подсети сервера, затем www.google.com, dl.google.com, www.cloudflare.com
--domain DOMAIN(нет)Ваш домен: XHTTP переносится на него и добавляется WSS, оба через CDN Cloudflare
--hysteria2/--no-hysteria2вклПредлагать Hysteria2 на UDP/443 как последний возврат
--client-name NAMEdefaultИмя первого клиента
--display-name NAME(нет)Ярлык для страниц подключения (например “Alice’s VPN”)
--icon EMOJI_OR_URL(нет)Значок страницы — эмодзи или URL изображения
--color PALETTEoceanТема цвета страницы (ocean/sunset/forest/lavender/rose/slate)
--user USERrootSSH пользователь (не-root пользователи требуют passwordless sudo)
--ssh-port PORT22SSH портс, если не 22
--harden / --no-hardenвклSSH только по ключу, fail2ban и брандмауэр UFW. Используйте --no-harden на сервере, общем с другими сервисами
--warp / --no-warpвыклОтправлять исходящий трафик через Cloudflare WARP
--geo-block / --no-geo-blockвклБлокировать российские домены и IP на сервере
--client-ips / --no-client-ipsвыклПередавать панели реальный IP каждого клиента (см. IP клиентов)
--country CCопределяетсяСтрана в названиях подключений, например DE. Meridian определяет её по реестру адресов; задайте флаг, если определено неверно
--yesПропустить диалоги подтверждения

Флаги для скриптов и UI (--json, --events, --request, --dry-run) описаны в CLI reference.

Цель маскировки (SNI) — это веб-сайт, который выдаёт ваш сервер. Это не домен, которым вы владеете — это настоящий сайт с TLS 1.3. Любой, кто проверяет ваш сервер, видит подлинный сертификат этого сайта.

Лучшая цель находится рядом с вашим сервером. Цензор видит SNI вместе с IP вашего сервера; когда DNS сайта действительно указывает в ту же сеть, такая пара выглядит как обычный трафик, а известный зарубежный сайт на адресе VPS бросается в глаза.

Без --sni первое развёртывание сканирует собственную подсеть сервера в поисках таких сайтов (около минуты) и оставляет те, чей DNS указывает в эту подсеть и которые проходят проверку Reality на TLS 1.3 и HTTP/2. Затем в запасе идут www.google.com, dl.google.com и www.cloudflare.com. Используется первая цель, через которую проходит реальный трафик. meridian node add выбирает соседа так же. Цель, которую вы передаёте с --sni, никогда не меняется; если трафик не проходит, развёртывание останавливается и сообщает вам. Переразворачивание сохраняет сохранённую цель.

Чтобы увидеть кандидатов самостоятельно, отсканируйте IPv4-окрестность сервера:

meridian scan 198.51.100.10

Сканирование запускает закреплённую, проверенную по контрольной сумме версию RealiTLScanner на сервере и выводит домены сертификатов, которые оно нашло поблизости. Затем развёртывайте с вашей выбранной целью:

meridian deploy 198.51.100.10 --sni dl.google.com

Для проверки одной цели вручную запустите meridian check 198.51.100.10 --sni HOST. Избегайте apple.com и icloud.com — их сети не соответствуют VPS провайдерам.

  • Цель маскировки (--sni) — популярный веб-сайт, которым вы не владеете. Reality выдаёт его.
  • Домен (--domain) — домен, которым вы владеете, указывающий на ваш сервер. XHTTP и Hysteria2 переходят на него, и он добавляет путь WSS через CDN Cloudflare. См. Domain mode.
meridian deploy 198.51.100.10 --no-hysteria2

Каждое развёртывание предлагает Hysteria2 на UDP/443 с сертификатом вашего домена или IP-сертификатом без домена. Его трафик завёрнут в obfuscation salamander, поэтому цензоры видят случайный UDP, а не QUIC. Это помогает в ненадёжных или высокозадержанных сетях; где UDP заблокирован, приложения возвращаются к методам TCP, перечисленным перед ним. --no-hysteria2 отключает его. Hysteria2 не проходит через ретрансляторы.

Персонализируйте страницы подключения, чтобы получатели знали, кто установил их VPN:

meridian deploy 198.51.100.10 --display-name "Alice's VPN" --icon 🚀 --color sunset
  • --display-name — показывается в заголовке и названии страницы
  • --icon — эмодзи или URL изображения, показываемый в верхней части страницы
  • --color — палитра акцента: ocean (по умолчанию), sunset, forest, lavender, rose, slate

Брендинг сохраняется в cluster.yml и применяется к странице подключения каждого клиента.

Для переразворачивания запустите ту же команду снова. Meridian сохраняет сохранённые пути, ключи и пользователей, поэтому существующие ссылки продолжают работать. Переразворачивание без --sni сохраняет сохранённую цель маскировки.

В конце каждого развёртывания Meridian выводит точную команду переразворачивания с вашими текущими параметрами. Повторное запуск с разными флагами изменяет сервер в соответствии: добавление или удаление --domain или --no-hysteria2 добавляет или удаляет эти пути.

meridian deploy только переразворачивает сервер, который уже является выходом в вашем флоте. Чтобы добавить другой сервер, используйте meridian node add NEW_IP.

Не уверены, подходит ли сервер?

meridian check 198.51.100.10

Проверяет цель маскировки, свободен ли портс 443 и достижим ли извне, опциональный DNS домена, ОС, дисковое пространство и смещение часов, без установки чего-либо.

meridian deploy 198.51.100.10 --user ubuntu

Команды запускаются через sudo, поэтому пользователю нужен passwordless sudo.

Если вы вошли на сервер как root:

meridian deploy local

Это пропускает SSH. check local, scan local и doctor local работают одинаково, и после развёртывания, более поздние команды на сервере тоже работают локально. Запуск Meridian с вашей собственной машины всё ещё рекомендуется, потому что meridian test требует внешнюю точку зрения.

WARP отправляет исходящий трафик вашего сервера через Cloudflare, поэтому веб-сайты видят адрес Cloudflare вместо IP вашего VPS.

meridian deploy 198.51.100.10 --warp

Когда WARP помогает: сайты, которые блокируют диапазоны IP центров обработки данных, или когда вы хотите скрыть адрес VPS от сайтов назначения.

Когда вам это не требуется: большинство сайтов работают хорошо без него, и он добавляет один хоп (VPS → Cloudflare → назначение).

Meridian устанавливает клиент cloudflare-warp в режиме прокси (SOCKS5 на 127.0.0.1:40000) и делает его исходящим Xray. Входящие соединения не затрагиваются. WARP бесплатен и не требует учётной записи Cloudflare.

Чтобы отправлять только выбранные сайты через WARP и держать всё остальное прямым, добавьте маршрут на выходе вместо включения WARP для всего трафика. Meridian настраивает WARP на выходе в первый раз когда маршрут это нужно:

meridian route add exit-1 --via warp chatgpt.com netflix.com
meridian route add exit-1 --via block geosite:category-ads-all
meridian route list
meridian route remove exit-1 warp

Значения это домены (поддомены включены), списки geosite:NAME или geoip:NAME из стандартных файлов данных v2fly; один маршрут держит один вид. --via direct делает обратное на выходе WARP: эти направления пропускают WARP. Маршруты применяются в порядке который вы их добавили, перед исходящим по умолчанию и перед блокировкой по географическому принципу. Эти маршруты живут на сервере; они отдельны от правил клиентской стороны которые отправляют российские сайты прямо на устройстве пользователя.

По умолчанию сервер блокирует российские домены (geosite:category-ru) и российские диапазоны IP (geoip:ru) через прокси. Это держит ваш IP VPS вне логов российских сервисов, что снижает шанс его нахождения и блокировки.

Отключите это, если ваши пользователи нуждаются в этих сайтах через Meridian:

meridian deploy 198.51.100.10 --no-geo-block

Для способа открытия российских сайтов напрямую при сохранении блока см. Split routing.

По умолчанию панель не знает, откуда подключаются ваши пользователи: каждое TCP-соединение попадает к Xray через nginx на самом сервере, поэтому Remnawave записывает адрес сервера. Это приватная настройка по умолчанию: о местоположении пользователей ничего не сохраняется.

Лимитам по IP для каждого пользователя в Remnawave и журналам подключений нужны реальные адреса. Включите их так:

meridian deploy 198.51.100.10 --client-ips

Тогда nginx передаёт Xray и панели адрес каждого клиента. Hysteria2 работает напрямую по UDP и всегда показывает реальный адрес. Соединения через ретранслятор показывают адрес ретранслятора, а WebSocket и XHTTP через CDN Cloudflare — адрес Cloudflare. Настройка действует на весь флот; чтобы отключить её, переразверните без флага.

После запуска выхода добавьте ретранслятор на отечественном сервере, чтобы пользователи сохранили способ входа, если IP выхода будет заблокирован. См. Relay guide.

meridian relay add 203.0.113.10 --exit 198.51.100.10

Meridian устанавливает Remnawave в качестве своей панели. Панель обратно проксируется nginx на случайном секретном пути, отдельно от пути страницы подключения, поэтому ссылки, которые вы делитесь, никогда не раскрывают её. meridian panel выводит URL и админ-логин (--show-password для пароля).

Относитесь к пути панели как к паролю. CLI использует тот же API панели, поэтому изменения CLI появляются в панели. Meridian владеет хостами, профилями и шаблонами, которые он создаёт: если вы редактируете их в панели, meridian plan сообщает о разнице и следующее применение восстанавливает версию Meridian. Статус клиента, лимиты, истечение и пользователи которых вы добавили сами — ваши; смотрите Веб-панель.

Meridian закрепляет версии Remnawave, которые он протестировал. meridian fleet upgrade переводит ваши серверы на самый новый релиз Remnawave в той же основной версии, не дожидаясь обновления Meridian. Если вы сами обновите Remnawave, Meridian не понизит его версию.