# راهنمای Deploy

> راهنمای deploy کامل با تمام گزینه‌های پیکربندی.

این راهنما تمام گزینه‌های `meridian deploy` را پوشش می‌دهد. اگر این استقرار اول شما است، با [Getting Started](/fa/getting-started.md) شروع کنید.

## استقرار بنیادی

```
meridian deploy 198.51.100.10
```

یک سرور هم به صورت control plane (پنل Remnawave) و هم به عنوان exit تبدیل می‌شود که ترافیک را حمل می‌کند. Meridian توپولوژی بررسی‌شده‌ای را ایجاد می‌کند که [`meridian setup`](/fa/cli-reference.md#meridian-setup) تولید می‌کند و آن را با نقاط checkpoint اعمال می‌کند. قبل از اینکه "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` سرور اضافه می‌کند، بررسی می‌کند که ورود با آن کار می‌کند، آن را در پروفایل سرور ذخیره می‌کند و ادامه می‌دهد. گذرواژه فقط برای همان یک فرمان استفاده می‌شود و هرگز ذخیره یا لاگ نمی‌شود. host key ابتدا تأیید می‌شود، پس گذرواژه فقط به سروری فرستاده می‌شود که fingerprint آن را پذیرفته‌اید. `meridian setup` هنگام افزودن سرور همین را پیشنهاد می‌دهد.

بدون ترمینال، با `--yes` یا با `--json`، Meridian هرگز prompt نمی‌دهد: به‌جای آن با فرمان دستی متوقف می‌شود. یک بار کلید خودتان را نصب کنید و دوباره اجرا کنید:

```
ssh-copy-id root@198.51.100.10
```

Hardening پس از deploy ورود با گذرواژه را خاموش می‌کند، پس کلید را نگه دارید: فرمان‌های بعدی به‌طور خودکار از آن استفاده می‌کنند.

## تمام پرچم‌ها

| پرچم | پیش‌فرض | توضیح |
|------|---------|-------------|
| `--sni HOST` | (خودکار) | هدف camouflage. بدون آن، deploy سایتی را در زیرشبکهٔ خود سرور ترجیح می‌دهد، سپس `www.google.com`، `dl.google.com`، `www.cloudflare.com` |
| `--domain DOMAIN` | (هیچ) | دامنه شما: XHTTP به آن منتقل می‌شود و WSS اضافه می‌شود، هر دو از طریق CDN Cloudflare |
| `--hysteria2/--no-hysteria2` | فعال | Hysteria2 را روی UDP/443 به عنوان آخرین fallback ارائه دهید |
| `--client-name NAME` | default | نام کلاینت اول |
| `--display-name NAME` | (هیچ) | برچسب برای صفحات اتصال (مثل "VPN علی") |
| `--icon EMOJI_OR_URL` | (هیچ) | آیکون صفحه — emoji یا URL تصویر |
| `--color PALETTE` | ocean | تم رنگ صفحه (ocean/sunset/forest/lavender/rose/slate) |
| `--user USER` | root | کاربر SSH (کاربران non-root نیاز به sudo بدون رمز عبور دارند) |
| `--ssh-port PORT` | 22 | پورت SSH، اگر 22 نیست |
| `--harden / --no-harden` | فعال | ورود تنهای کلید SSH، fail2ban و firewall UFW. از `--no-harden` برای سروری که خدمات دیگری روی آن است استفاده کنید |
| `--warp / --no-warp` | غیرفعال | ترافیک خروجی را از طریق Cloudflare WARP ارسال کنید |
| `--geo-block / --no-geo-block` | فعال | IP‌های روسی و دامنه‌های روسی را روی سرور block کنید |
| `--client-ips / --no-client-ips` | خاموش | به پنل اجازه می‌دهد IP واقعی هر کلاینت را ببیند (ببینید [IP کلاینت‌ها](#ip-کلاینتها)) |
| `--country CC` | جست‌وجو می‌شود | کشور نمایش‌داده‌شده در نام اتصال‌ها، مثل `DE`. Meridian آن را از رجیستری آدرس پیدا می‌کند؛ اگر اشتباه بود خودتان مشخص کنید |
| `--yes` | | پرسش تأیید را رد کنید |

پرچم‌های برای اسکریپت‌ها و UI‌ها (`--json`، `--events`، `--request`، `--dry-run`) در [CLI reference](/fa/cli-reference.md#meridian-deploy) توصیف شده‌اند.

## انتخاب هدف camouflage

هدف camouflage (SNI) وب‌سایتی است که سرور شما شخصیت‌سازی می‌کند. این **نه** دامنه‌ای است که مالک آن هستید — یک سایت واقعی با TLS 1.3 است. هر کسی که سرور شما را probe کند گواهینامه واقعی آن سایت را می‌بیند.

بهترین هدف کنار سرور شما قرار دارد. سانسورچی SNI را همراه با IP سرور شما می‌بیند؛ وقتی DNS آن سایت واقعاً به همان شبکه اشاره می‌کند، این جفت مثل ترافیک عادی به نظر می‌رسد، در حالی که یک سایت خارجی مشهور روی آدرس VPS به چشم می‌آید.

بدون `--sni`، استقرار اول زیرشبکهٔ خود سرور را برای چنین سایت‌هایی اسکن می‌کند (حدود یک دقیقه) و فقط آن‌هایی را نگه می‌دارد که DNS‌شان به همان زیرشبکه اشاره می‌کند و بررسی TLS 1.3 و HTTP/2 در Reality را می‌گذرانند. بعد به `www.google.com`، `dl.google.com` و `www.cloudflare.com` برمی‌گردد. از اولین هدفی استفاده می‌کند که ترافیک واقعی از آن عبور کند. `meridian node add` همسایه را به همین شکل انتخاب می‌کند. هدفی که با `--sni` می‌دهید هرگز جابه‌جا نمی‌شود؛ اگر ترافیک ناموفق باشد، استقرار متوقف می‌شود و گزارش می‌دهد. بازاستقرار هدف ذخیره‌شده را نگه می‌دارد.

برای دیدن خودتان نامزدها، محله IPv4 سرور را اسکن کنید:

```
meridian scan 198.51.100.10
```

اسکن یک build ثابت و checksum‌بررسی‌شده RealiTLScanner را روی سرور اجرا می‌کند و دامنه‌های گواهینامه‌ای که پیدا کرده را فهرست می‌کند. سپس با انتخاب خود استقرار کنید:

```
meridian deploy 198.51.100.10 --sni dl.google.com
```

برای بررسی دستی یک هدف، `meridian check 198.51.100.10 --sni HOST` را اجرا کنید. `apple.com` و `icloud.com` را از دست بدهید — شبکه‌های آن‌ها با VPS providers مطابقت ندارند.

### تغییر هدف در آینده

وقتی `meridian test --probe` گزارش می‌دهد SNI استتار مسدود است، exit را بدون استقرار دوباره به هدف دیگری ببرید. Meridian نام‌های `apple.com`، `icloud.com` و `www.microsoft.com` (گواهی آن برای Reality بیش از حد بزرگ است) را رد می‌کند، بررسی می‌کند که exit با TLS 1.3 و HTTP/2 به سایت جدید می‌رسد، بررسی را نشان می‌دهد و اعمال می‌کند. نام قدیمی بی‌درنگ جایگزین می‌شود و کنار نام جدید نمی‌ماند، چون یک شنوندهٔ Reality دقیقاً یک سایت را تقلید می‌کند. برنامه‌ها در تازه‌سازی بعدی اشتراک (هر ۶ ساعت) یا وقتی کاربر اشتراک را تازه کند جابه‌جا می‌شوند. برای relay از `meridian relay sni RELAY NEW_SNI` استفاده کنید.

```
meridian node sni 198.51.100.10 www.cloudflare.com
```

### هدف camouflage در مقابل دامنه

- **هدف camouflage** (`--sni`) — یک وب‌سایت محبوب که **مالک آن نیستید**. Reality آن را شخصیت‌سازی می‌کند.
- **دامنه** (`--domain`) — دامنه‌ای که **مالک آن هستید**، که به سرور شما اشاره می‌کند. XHTTP و Hysteria2 به آن منتقل می‌شوند، و آن مسیر WSS را از طریق CDN Cloudflare اضافه می‌کند. [Domain mode](/fa/domain-mode.md) را ببینید.

## Hysteria2

```
meridian deploy 198.51.100.10 --no-hysteria2
```

هر deploy Hysteria2 را روی UDP/443 با گواهینامه دامنه شما یا IP گواهینامه بدون دامنه ارائه می‌دهد. ترافیک آن در obfuscation salamander بسته‌بندی می‌شود، پس سانسورگرها UDP تصادفی را می‌بینند نه QUIC. در شبکه‌های lossy یا پرتاخیری کمک می‌کند؛ جایی که UDP مسدود است، برنامه‌ها به روش‌های TCP که قبل از آن ذکر شده‌اند برمی‌گردند. `--no-hysteria2` آن را خاموش می‌کند. Hysteria2 از relay عبور نمی‌کند.

## برندسازی

صفحات اتصال را شخصی‌سازی کنید تا دریافت‌کنندگان بدانند چه کسی VPN خود را راه‌اندازی کرده:

```
meridian deploy 198.51.100.10 --display-name "VPN علی" --icon 🚀 --color sunset
```

- **`--display-name`** — در سرتیتر و عنوان صفحه نمایش داده می‌شود
- **`--icon`** — emoji یا URL تصویر در بالای صفحه نمایش داده می‌شود
- **`--color`** — پالت رنگی: `ocean` (پیش‌فرض)، `sunset`، `forest`، `lavender`، `rose`، `slate`

برندسازی در `cluster.yml` ذخیره می‌شود و برای صفحه اتصال هر کلاینت اعمال می‌شود.

## بازاستقرار

برای بازاستقرار، دستور را دوباره اجرا کنید. Meridian مسیرها، کلیدها و کاربران ذخیره‌شده را نگه می‌دارد، بنابراین لینک‌های موجود کار می‌کند. بازاستقرار بدون `--sni` هدف camouflage ذخیره‌شده را نگه می‌دارد.

در انتهای هر استقرار، Meridian دستور بازاستقرار دقیق را با تنظیمات فعلی شما چاپ می‌کند. با دستورات متفاوت دوباره اجرا آن سرور را تغییر می‌دهد: اضافه‌کردن یا حذف `--domain` یا `--no-hysteria2` این مسیرها را اضافه یا حذف می‌کند.

`meridian deploy` فقط سروری را بازاستقرار می‌کند که قبلاً exit در فلیت شما است. برای اضافه کردن سرور دیگر، از `meridian node add NEW_IP` استفاده کنید.

## بررسی قبل از پرواز

مطمئن نیستید که یک سرور مناسب است؟

```
meridian check 198.51.100.10
```

هدف camouflage را بررسی می‌کند، آیا پورت 443 آزاد است و از بیرون قابل دسترس است، DNS دامنه اختیاری، سیستم‌عامل، فضای دیسک و اختلاف ساعت، بدون نصب چیزی.

## استقرار non-root

```
meridian deploy 198.51.100.10 --user ubuntu
```

دستورات از طریق `sudo` اجرا می‌شوند، بنابراین کاربر به sudo بدون رمز عبور نیاز دارد.

## استقرار محلی

اگر به سرور به عنوان root وارد شده‌اید:

```
meridian deploy local
```

این SSH را رد می‌کند. `check local`، `scan local` و `doctor local` به همین شکل کار می‌کنند و بعد از استقرار، دستورات بعدی روی سرور نیز به صورت محلی اجرا می‌شود. اجرای Meridian از ماشین خود همچنان توصیه می‌شود، زیرا `meridian test` نیاز به نقطه نظر بیرونی است.

## Cloudflare WARP

WARP ترافیک خروجی سرور شما را از طریق Cloudflare ارسال می‌کند، بنابراین وب‌سایت‌ها به جای IP VPS شما آدرس Cloudflare را می‌بینند.

```
meridian deploy 198.51.100.10 --warp
```

**زمانی که WARP کمک می‌کند:** سایت‌هایی که محدوده IP datacenter را مسدود می‌کنند، یا زمانی که می‌خواهید آدرس VPS را از سایت‌های مقصد مخفی کنید.

**زمانی که نیاز ندارید:** اکثر سایت‌ها بدون آن خوب کار می‌کنند، و یک hop اضافه می‌کند (VPS → Cloudflare → مقصد).

Meridian کلاینت `cloudflare-warp` را در حالت proxy نصب می‌کند (SOCKS5 روی `127.0.0.1:40000`) و آن را outbound Xray می‌سازد. اتصالات ورودی تحت تأثیر قرار نمی‌گیرند. WARP رایگان است و به حساب Cloudflare نیاز ندارد.

### WARP تنها برای برخی سایت‌ها

برای ارسال تنها سایت‌های انتخاب‌شده از طریق WARP و نگه داشتن بقیه مستقیم، یک route روی exit اضافه کنید بجای روشن کردن WARP برای تمام ترافیک. Meridian WARP را بر روی exit برای اولین بار که یک route نیاز دارد تنظیم می‌کند:

```
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
```

مقادیر دامنه‌ها (subdomain‌ها شامل)، لیست‌های `geosite:NAME` یا لیست‌های `geoip:NAME` از فایل‌های v2fly stock هستند؛ یک route تک نوع را نگه می‌دارد. `--via direct` برعکس بر روی exit WARP انجام می‌دهد: آن مقاصد WARP را skip می‌کنند. Routes به ترتیبی که آن‌ها را اضافه کردید اعمال می‌شوند، پیش از egress پیش‌فرض exit و پیش از geo-blocking. این routes روی سرور زندگی می‌کنند؛ آن‌ها جدا از قوانین سمت client هستند که سایت‌های روسی مستقیم را در دستگاه کاربر ارسال می‌کند.

## مسدودسازی جغرافیایی

به‌طور پیش‌فرض، سرور دامنه‌های روسی (`geosite:category-ru`) و محدوده‌های IP روسی (`geoip:ru`) را از طریق proxy مسدود می‌کند. این IP VPS شما را از لاگ‌های خدمات روسی دور می‌کند، که احتمال یافتن و مسدود کردن آن را کاهش می‌دهد.

اگر کاربران شما نیاز به آن سایت‌ها از طریق Meridian دارند، آن را خاموش کنید:

```
meridian deploy 198.51.100.10 --no-geo-block
```

برای راهی برای باز کردن سایت‌های روسی بطور مستقیم در حالی‌که مسدودسازی را نگه می‌دارید، [Split routing](/fa/split-routing.md) را ببینید.

## IP کلاینت‌ها

به‌طور پیش‌فرض، پنل هرگز نمی‌فهمد کاربران شما از کجا متصل می‌شوند: هر اتصال TCP از طریق nginx روی سرور به Xray می‌رسد، بنابراین Remnawave آدرس خود سرور را ثبت می‌کند. این حالت حریم خصوصی را حفظ می‌کند و هیچ اطلاعاتی درباره مکان کاربران ذخیره نمی‌شود.

محدودیت IP برای هر کاربر در Remnawave و لاگ‌های اتصال به آدرس‌های واقعی نیاز دارند. آن‌ها را این‌طور فعال کنید:

```
meridian deploy 198.51.100.10 --client-ips
```

سپس nginx آدرس هر کلاینت را برای Xray و پنل منتقل می‌کند. Hysteria2 مستقیم و روی UDP است و همیشه آدرس واقعی را نشان می‌دهد. اتصال‌هایی که از relay می‌گذرند آدرس relay را نشان می‌دهند، و WebSocket یا XHTTP از طریق CDN Cloudflare آدرس Cloudflare را. این تنظیم برای کل fleet اعمال می‌شود؛ برای خاموش کردنش، بدون این پرچم دوباره deploy کنید.

## افزودن relay

پس از اجرای exit، یک relay روی سرور داخلی اضافه کنید تا کاربران زمانی‌که IP خروج مسدود می‌شود راه ورودی داشته باشند. [راهنمای Relay](/fa/relay.md) را ببینید.

```
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 میزبان‌ها، profile‌ها و template‌های را که ایجاد می‌کند مالک است: اگر آن‌ها را در پنل ویرایش کنید، `meridian plan` تفاوت را گزارش می‌دهد و بعدی اعمال نسخه Meridian را بازگردانده. وضعیت client، محدودیت‌ها، انقضا و کاربرانی که خود اضافه می‌کنید مال شما هستند؛ [Web panel](/fa/client-management.md#پنل-وب) را ببینید.

Meridian نسخه‌های Remnawave را که تست کرده است pin می‌کند. `meridian fleet upgrade` سرورهای شما را بدون انتظار برای به‌روزرسانی Meridian به جدیدترین نسخه Remnawave در همان major می‌برد. اگر خودتان Remnawave را ارتقا دهید، Meridian آن را downgrade نمی‌کند.
