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

> Полное развёртывание с описанием всех параметров конфигурации.

Это руководство охватывает каждый вариант `meridian deploy`. Если это ваше первое развёртывание, начните с [Getting Started](/md/ru/getting-started/).

## Базовое развёртывание

```
meridian deploy 198.51.100.10
```

Один сервер становится и контроль-планом (панель Remnawave) и выходом, который несёт трафик. Meridian строит ту же рассмотренную топологию, которую производит [`meridian setup`](/md/ru/cli-reference/#meridian-setup) и применяет её с контрольными точками. Перед тем как вывести "Done", он пропускает реальный трафик через доставленную подписку.

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

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

## Все флаги

| Флаг | По умолчанию | Описание |
|------|---------|-------------|
| `--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 NAME` | default | Имя первого клиента |
| `--display-name NAME` | (нет) | Ярлык для страниц подключения (например "Alice's VPN") |
| `--icon EMOJI_OR_URL` | (нет) | Значок страницы — эмодзи или URL изображения |
| `--color PALETTE` | ocean | Тема цвета страницы (ocean/sunset/forest/lavender/rose/slate) |
| `--user USER` | root | SSH пользователь (не-root пользователи требуют passwordless sudo) |
| `--ssh-port PORT` | 22 | SSH портс, если не 22 |
| `--server NAME` | | Сохранённый сервер для развёртывания (имя или IP) |
| `--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 клиентов](#ip-клиентов)) |
| `--country CC` | определяется | Страна в названиях подключений, например `DE`. Meridian определяет её по реестру адресов; задайте флаг, если определено неверно |
| `--yes` | | Пропустить диалоги подтверждения |

Флаги для скриптов и UI (`--json`, `--events`, `--request`, `--dry-run`) описаны в [CLI reference](/md/ru/cli-reference/#meridian-deploy).

## Выбор цели маскировки

Цель маскировки (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](/md/ru/domain-mode/).

## Hysteria2

```
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 домена, ОС, дисковое пространство и смещение часов, без установки чего-либо.

## Развёртывание не-root

```
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` требует внешнюю точку зрения.

## Cloudflare WARP

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 и держать всё остальное прямым, добавьте маршрут на выходе вместо включения 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](/md/ru/split-routing/).

## IP клиентов

По умолчанию панель не знает, откуда подключаются ваши пользователи: каждое 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](/md/ru/relay/).

```
meridian relay add 203.0.113.10 --exit 198.51.100.10
```

## Панель управления

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

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

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