# حل مشکلات

> مشکلات معمول، راه‌حل‌ها و ابزارهای تشخیصی.

## کدام ابزار را استفاده کنم

```
قبل از نصب                              → meridian preflight IP
  "آیا این سرور برای Meridian کار می‌کند؟"
  بررسی‌کنند: دسترسی SNI، تطابق ASN، پورت 443، پورت خارجی، DNS، سیستم‌عامل، دیسک

بعد از نصب، نمی‌توانم اتصال برقرار کنم → meridian test IP
  "آیا proxy از جایی که اکنون هستم قابل دسترسی است؟"
  بررسی‌کنند: TCP پورت 443، TLS handshake، HTTPS دامنه (اگر دامنه‌ای باشد)

بعد از نصب، چیزی شکسته است             → meridian doctor IP
  "هر چیز را برای اشکال‌زدایی جمع‌آوری کنید."
  جمع‌آوری‌کنند: سیستم‌عامل، لاگ‌های Docker، پورت‌های listening، فایروال، مقدار SNI، DNS
```

برای یک پیام تشخیصی آماده برای AI، `--ai` را به preflight یا doctor اضافه کنید.

## نمی‌توانم اصلاً اتصال برقرار کنم

### پورت 443 قابل دسترسی نیست

**علل:**
1. دیوار آتش فراهم‌کننده ابری / گروه امنیتی پورت 443 ورودی را مسدود می‌کند
2. ISP یا شبکه کل IP سرور را مسدود می‌کند
3. سرور خاموش است یا proxy اجرا نمی‌شود
4. UFW در سرور اجازه پورت 443 را نمی‌دهد

**راه‌حل‌ها:**
1. کنسول فراهم‌کننده ابری را بررسی کنید — اطمینان حاصل کنید 443/TCP ورودی مجاز است
2. از یک شبکه متفاوت امتحان کنید (داده موبایل، Wi-Fi دیگر)
3. SSH کنید و بررسی کنید: `docker ps` (آیا 3x-ui اجرا می‌شود؟)، `ss -tlnp sport = :443`
4. UFW را بررسی کنید: `ufw status` — باید 443/tcp ALLOW را نشان دهد

### TLS handshake ناکام است

**علل:**
1. Xray درون Docker container اجرا نمی‌شود
2. پورت 443 توسط سرویس دیگری تصرف است
3. هدف SNI Reality از سرور قابل دسترسی نیست

**راه‌حل‌ها:**
1. Xray را بررسی کنید: `docker logs 3x-ui --tail 20`
2. پورت را بررسی کنید: `ss -tlnp sport = :443` — باید nginx باشد
3. SNI را آزمایش کنید: `meridian preflight IP`

### دامنه قابل دسترسی نیست

**علل:**
1. DNS به IP سرور اشاره نمی‌کند
2. nginx اجرا نمی‌شود یا نتوانسته گواهی TLS دریافت کند
3. nginx درست SNI دامنه را هدایت نمی‌کند

**راه‌حل‌ها:**
1. DNS را بررسی کنید: `dig +short yourdomain.com @8.8.8.8`
2. nginx را بررسی کنید: `systemctl status nginx`
3. پیکربندی nginx را بررسی کنید: `/etc/nginx/conf.d/meridian-stream.conf`

## اتصال بعد از چند ثانیه قطع می‌شود

**علل:**
1. اختلاف ساعت سیستم >30 ثانیه بین کلاینت و سرور
2. مشکلات MTU در مسیر شبکه
3. ISP جلسات TLS طولانی‌مدت را بازنشانی می‌کند

**راه‌حل‌ها:**
1. سرور: `timedatectl set-ntp true`. کلاینت: تاریخ/ساعت خودکار را فعال کنید
2. یک شبکه متفاوت امتحان کنید
3. از اتصال WSS/CDN استفاده کنید (حالت دامنه)

## تنظیم ناکام

### تعارض پورت 443

سرویس دیگری (Apache، Nginx) از پورت 443 استفاده می‌کند. آن را متوقف کنید یا از یک سرور تمیز استفاده کنید. `meridian preflight` به شما می‌گوید چه چیزی پورت را استفاده می‌کند.

### نصب Docker ناکام

بسته‌های Docker تعارض‌آمیز از مخازن distro. Meridian به‌طور خودکار آن‌ها را حذف می‌کند، اما اگر Docker اکنون با container‌ها اجرا می‌شود، برای اجتناب از اختلال رد می‌کند.

### خطاهای اتصال SSH

SSH را دستی آزمایش کنید: `ssh root@SERVER_IP`. اطمینان حاصل کنید که دسترسی مبتنی بر کلید دارید. اگر root نیستید، از `--user` flag استفاده کنید.

### Xray راه‌اندازی نمی‌شود (خطای invalid JSON / MarshalJSON)

فیلدهای `settings` یا `streamSettings` ورودی 3x-ui حاوی JSON خراب است. این زمانی اتفاق می‌افتد که `settings` به جای رشته JSON به عنوان شیء تودرتو ارسال شود — ساختار Go 3x-ui نوع `string` انتظار دارد. API مقدار `success: true` برمی‌گرداند اما فقط نام اولین کلید را به جای شیء کامل JSON ذخیره می‌کند.

**راه‌حل:** حذف و نصب مجدد: `meridian teardown IP && meridian deploy IP`. برای بررسی پایگاه داده: `sqlite3 /opt/3x-ui/db/x-ui.db "SELECT settings FROM inbounds;"` — هر فیلد باید JSON معتبر باشد.

### خطای ایجاد XHTTP inbound (تداخل پورت)

در نسخه‌های قدیمی‌تر (قبل از v3.6.0)، هم Reality و هم XHTTP سعی در استفاده از پورت 443 داشتند. 3x-ui پورت‌های تکراری را رد می‌کند.

**راه‌حل:** به v3.6.0+ به‌روزرسانی کنید. XHTTP اکنون روی پورت localhost اجرا و از طریق nginx مسیریابی می‌شود.

### فضای دیسک ناکافی

کمتر از 2 گیگابایت فضای آزاد. فضا آزاد کنید: `docker system prune -af`، `journalctl --vacuum-time=1d`، بررسی `/var/log/`.

### DNS حل نمی‌شود (حالت دامنه)

دامنه هنوز به IP سرور اشاره نمی‌کند. رکورد A DNS را به‌روزرسانی کنید. انتشار معمولاً 5-15 دقیقه طول می‌کشد (تا 48 ساعت). Meridian هشدار می‌دهد اگر DNS حل نشود اما اجازه ادامه می‌دهد.

## کار می‌کرد، اکنون متوقف شده

**معمول‌ترین علت:** IP سرور مسدود شد. این در مناطق سانسور بسیار معمول است.

برای دستورالعمل‌های مفصل بازیابی، [راهنمای بازیابی IP مسدود](/md/fa/recovery/) را ببینید.

دیگر علل:
- سرور دوباره راه‌اندازی شد و Docker به‌طور خودکار شروع نشد → `docker start 3x-ui`
- دیسک پر است → `df -h /`، `docker system prune -af`

## سرعت کند

1. یک سرور جغرافیایی نزدیک‌تر انتخاب کنید (Finland، Netherlands، Sweden برای اروپا/خاورمیانه)
2. بار سرور را بررسی کنید: `htop` یا `uptime`
3. پیوند WSS/CDN را امتحان کنید — ممکن است مسیریابی بهتری از طریق Cloudflare داشته باشد
4. تأیید کنید BBR فعال است: `sysctl net.ipv4.tcp_congestion_control`

**از این کار نکنید** پروتکل‌های دیگر (OpenVPN، WireGuard) را در سرور یکسان اجرا کنید — IP را پرچم‌دار می‌کند.

## کمک‌ الگو

```
meridian doctor --ai
```

یک پیام تشخیصی را برای استفاده با هر دستیار AI در کلیپ‌بورد خود کپی می‌کند.

یا تشخیص‌ها را برای یک [GitHub issue](https://github.com/uburuntu/meridian/issues) جمع‌آوری کنید:

```
meridian doctor
```

## گره relay کار نمی‌کند

برای مشکلات مربوط به گره relay، بخش [راهنمای relay — حل مشکلات](/md/fa/relay/#troubleshooting) را ببینید.

## تفسیر خروجی preflight

| بررسی | چه چیزی را تست می‌کند | اگر ناموفق باشد |
|-------|----------------------|-----------------|
| دسترسی به هدف SNI | آیا سرور می‌تواند به سایت پوششی دسترسی پیدا کند؟ | ترافیق خروجی سرور محدود شده. SNI دیگری با `--sni` امتحان کنید |
| تطابق SNI ASN | آیا هدف SNI CDN/ASN مشترکی با سرور دارد؟ | از دامنه CDN جهانی استفاده کنید. از apple.com اجتناب کنید (ASN اختصاصی Apple) |
| دسترسی پورت 443 | آیا پورت 443 آزاد است یا توسط Meridian استفاده می‌شود؟ | سرویس دیگری روی 443. آن را متوقف کنید یا سرور تمیز استفاده کنید |
| دسترسی خارجی پورت 443 | آیا دنیای خارج می‌تواند به پورت 443 دسترسی پیدا کند؟ | فایروال ابری مسدود کرده. پورت 443/TCP ورودی را باز کنید |
| DNS دامنه | آیا دامنه به IP سرور حل می‌شود؟ | رکورد A DNS را به‌روزرسانی کنید |
| سیستم‌عامل سرور | آیا Ubuntu/Debian است؟ | دیگر توزیع‌ها ممکن است کار کنند اما تست نشده‌اند |
| فضای دیسک | حداقل 2 گیگابایت آزاد؟ | فضا آزاد کنید |

## تفسیر خروجی doctor

| بخش | به چه چیزی توجه کنید |
|------|---------------------|
| ماشین محلی | سازگاری سیستم‌عامل |
| سرور | نسخه سیستم‌عامل، زمان فعالیت (ریبوت اخیر؟)، مصرف دیسک/حافظه |
| Docker | آیا کانتینر 3x-ui در حال اجرا است؟ وضعیت باید "Up" باشد |
| لاگ‌های 3x-ui | پیام‌های خطا، ورودی‌های "failed to start"، مشکلات گواهی |
| پورت‌های در حال گوش دادن | پورت 443 باید nginx نشان دهد. اگر نیست، پروکسی اجرا نمی‌شود |
| فایروال (UFW) | پورت 443/tcp باید ALLOW باشد. اگر لیست نشده، مسدود است |
| هدف SNI | باید CONNECTED با زنجیره گواهی نشان دهد |
| DNS دامنه | باید به IP سرور حل شود |

## تفسیر خروجی test

| بررسی | موفق | ناموفق |
|-------|------|--------|
| TCP پورت 443 | سرور از طریق شبکه قابل دسترسی است | فایروال، مسدودسازی ISP، یا سرور خاموش است |
| TLS handshake | پروتکل Reality کار می‌کند | Xray اجرا نمی‌شود، تداخل پورت یا مشکل SNI |
| Domain HTTPS | nginx کار می‌کند | مشکل DNS یا nginx |

اگر تمام بررسی‌ها موفق بودند اما کلاینت VPN همچنان نمی‌تواند متصل شود: QR کد را دوباره اسکن کنید، دقت ساعت دستگاه را بررسی کنید (در حد 30 ثانیه)، یا برنامه دیگری امتحان کنید (v2rayNG، Hiddify).
