# Решение проблем

> Частые проблемы, решения и инструменты диагностики.

## Какой инструмент использовать

```
ДО УСТАНОВКИ                → meridian preflight IP
  "Будет ли этот сервер работать с Meridian?"
  Проверяет: SNI доступность, порт 443, DNS, ОС, диск.

ПОСЛЕ УСТАНОВКИ, НЕ МОГУ ПОДКЛЮЧИТЬСЯ → meridian test IP
  "Доступен ли прокси отсюда?"
  Проверяет: TCP порт 443, TLS handshake (Reality), домен HTTPS.
  SSH не нужен — запускается с клиентского устройства.

ПОСЛЕ УСТАНОВКИ, ЧТО-ТО СЛОМАЛОСЬ → meridian doctor IP
  "Собрать всё для отладки."
  Собирает: ОС сервера, Docker, логи 3x-ui, порты, фаервол, SNI, DNS.
```

Добавьте `--ai` к preflight или doctor для готовой к AI диагностической подсказки.

## Не может подключиться вообще

### Порт 443 не доступен

**Причины:**
1. Брандмауэр облачного провайдера / группа безопасности блокирует входящий порт 443
2. ISP или сетевая блокировка IP-адреса сервера целиком
3. Сервер не работает или прокси не запущен
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 контейнера
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 пакеты из репозиториев дистрибутива. Meridian автоматически их удаляет, но если Docker уже работает с контейнерами, он пропускает для предотвращения сбоев.

### Ошибки подключения SSH

Протестируйте SSH вручную: `ssh root@SERVER_IP`. Убедитесь, что у вас есть доступ на основе ключей. Используйте флаг `--user` если не root.

### 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/ru/recovery/).

Другие причины:
- Сервер перезагрузился и Docker не запустился автоматически → `docker start 3x-ui`
- Диск переполнен → `df -h /`, `docker system prune -af`

## Низкая скорость

1. Выберите сервер географически ближе (Финляндия, Нидерланды, Швеция для Европы/Ближнего Востока)
2. Проверьте нагрузку на сервер: `htop` или `uptime`
3. Попробуйте WSS/CDN ссылку — может иметь лучшую маршрутизацию через Cloudflare
4. Проверьте, включен ли BBR: `sysctl net.ipv4.tcp_congestion_control`

**НЕ** запускайте другие протоколы (OpenVPN, WireGuard) на том же сервере — это помечает IP.

## AI-усиленная помощь

```
meridian doctor --ai
```

Копирует диагностическую подсказку в буфер обмена для использования с любым AI ассистентом.

Или соберите диагностику для [GitHub issue](https://github.com/uburuntu/meridian/issues):

```
meridian doctor
```

## Релейный узел не работает

Проблемы, связанные с релейными узлами, см. в разделе [Руководство релейных узлов — Решение проблем](/md/ru/relay/#troubleshooting).

## Интерпретация вывода preflight

| Проверка | Что проверяет | Если не прошла |
|----------|--------------|----------------|
| Доступность SNI-цели | Может ли сервер достичь сайт маскировки? | Исходящий трафик сервера ограничен. Попробуйте другой SNI с `--sni` |
| Совпадение SNI ASN | Совпадает ли CDN/ASN SNI-цели с сервером? | Используйте глобальный CDN-домен. Избегайте apple.com (ASN Apple) |
| Доступность порта 443 | Свободен ли порт 443 или используется Meridian? | Другой сервис на 443. Остановите его или используйте чистый сервер |
| Внешняя доступность порта 443 | Может ли внешний мир достичь порта 443? | Облачный фаервол блокирует. Откройте порт 443/TCP входящий |
| DNS домена | Разрешается ли домен в IP сервера? | Обновите A-запись DNS |
| ОС сервера | Ubuntu/Debian? | Другие дистрибутивы могут работать, но не протестированы |
| Дисковое пространство | Минимум 2ГБ свободно? | Освободите место |

## Интерпретация вывода doctor

| Раздел | На что обратить внимание |
|--------|------------------------|
| Локальная машина | Совместимость ОС |
| Сервер | Версия ОС, uptime (недавняя перезагрузка?), использование диска/памяти |
| 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).
