diff --git a/docs/guides/common-errors-ru.md b/docs/guides/common-errors-ru.md new file mode 100644 index 00000000..26b7c084 --- /dev/null +++ b/docs/guides/common-errors-ru.md @@ -0,0 +1,325 @@ +--- +sidebar_position: 2 +title: Устранение неполадок +--- + +## Страница подписки + +### 502 Bad Gateway на странице подписки {#502-bad-gateway-subscription-page} + +#### Проблема + +При переходе на домен страницы подписки возвращается ошибка 502 Bad Gateway. + +#### Почему это происходит + +Данная ошибка возникает по следующим причинам: + +- Неправильный путь URL — открывается корневой домен без UUID подписки +- Реверс-прокси не перенаправляет запросы на контейнер страницы подписки +- Неверные переменные окружения +- DNS не указывает на правильный IP +- Контейнер страницы подписки недоступен +- Некорректные таймауты в конфигурации реверс-прокси +- Блокировка файрволом/WAF + +#### Решение + +1. Используйте правильный формат URL: + +``` +https://sub.example.com/ +``` + +2. Убедитесь, что реверс-прокси направляет трафик на `remnawave-subscription-page:3010`. + +3. Проверьте логи контейнера страницы подписки: + +```bash +docker compose logs -t -f +``` + +4. Проверьте значение `SUB_PUBLIC_DOMAIN` в `.env` панели. После правки перезапустите контейнер панели. + +5. Убедитесь, что DNS указывает на правильный IP. + +6. Проверьте доступность контейнера/бэкенда подписки. + +7. Проверьте таймауты в конфигурации реверс-прокси. + +8. Проверьте правила файрвола/WAF. + +--- + +## Панель Remnawave + +### "timeout of 45000ms exceeded" в панели {#timeout-45000ms-exceeded} + +#### Проблема + +В интерфейсе панели появляется сообщение об ошибке таймаута при операциях с нодами. + +#### Почему это происходит + +Данная ошибка возникает по следующим причинам: + +- Панель не может подключиться к REST API ноды по указанному порту +- Блокировки или высокая задержка между панелью и нодой +- Несоответствие переменных окружения ноды настройкам панели + +#### Решение + +1. Убедитесь, что значение `Node Port` на ноде совпадает с портом, который использовался при генерации docker-compose для панели. + +2. С хоста панели проверьте доступность порта ноды (telnet/curl). + +3. Обеспечьте стабильное сетевое соединение. По возможности разместите ноду на сервере с надёжным каналом. + +4. Для сложных топологий рассмотрите тунеллирование между панелью и нодой (например, с помощью Tailscale). + +5. Проверьте соответствие переменных окружения ноды настройкам панели. + +6. Просмотрите логи контейнера ноды: + +```bash +docker compose logs -f -t +``` + +7. Убедитесь, что нода запустилась без ошибок привязки портов. + +### 502 после обновления панели {#502-after-panel-upgrade} + +#### Проблема + +После обновления панели часть запросов возвращает ошибку 502. + +#### Почему это происходит + +Nginx не перезагрузился и не подхватил новый адрес от панели. + +#### Решение + +1. Следуйте разделу Upgrading в документации. + +2. Перезапустите панель и зависимые сервисы. + +3. Убедитесь, что контейнеры используют обновлённые образы. + +4. Если реверс-прокси работает отдельно, перезапустите его. + +5. Проверьте, что конфигурация прокси по-прежнему указывает на правильные контейнеры/сети. + +### Telegram OAuth: "domain invalid" {#telegram-oauth-domain-invalid} + +#### Проблема + +При попытке авторизации через Telegram появляется ошибка "domain invalid". + +#### Решение + +1. Откройте @BotFather → Bot Settings → Domain. + +2. Укажите домен панели: + +``` +https://panel.domain.com +``` + +3. Сохраните настройки в панели: Settings → Telegram. + +:::caution +OAuth Telegram не поддерживает домены в зоне `.xyz`. +::: + +### Ошибки collation после обновления PostgreSQL {#collation-errors-after-postgresql-upgrade} + +#### Проблема + +После мажорного обновления PostgreSQL возникают ошибки, связанные с collation базы данных. + +#### Почему это происходит + +Такие ошибки чаще появляются при смене мажорной версии PostgreSQL, когда collations старой БД не совпадают с требуемыми новой версии. + +#### Решение + +1. Откройте контейнер панели: + +```bash +docker exec -it remnawave remnawave +``` + +2. В rescue CLI выполните действие: + +``` +● Fix Collation (Fix Collation issues for current database) +``` + +3. Перезапустите панель: + +```bash +docker compose down && docker compose up -d +``` + +--- + +## Нода Remnawave + +### ECONNREFUSED после переустановки ноды {#econnrefused-after-node-reinstall} + +#### Проблема + +Панель не может подключиться к ноде. В логах отображается ошибка ECONNREFUSED. + +#### Решение + +1. Убедитесь, что параметры ноды соответствуют тем, которые сгенерировала панель. + +2. Подтвердите корректность `Node Port`. + +3. Просмотрите логи: + +```bash +docker compose logs -f -t +``` + +4. Убедитесь в отсутствии ошибок привязки портов и в доступности порта. + +5. Проверьте `REMNAWAVE_PANEL_URL` для страницы подписки — он должен указывать на достижимый домен панели или внутренний сервис. Если страница подписки установлена рядом с Remnawave - следует использовать `http://remnawave-subscription-page:3010`. + +### XML-RPC fault: SPAWN_ERROR: xray {#xml-rpc-fault-spawn-error-xray} + +#### Проблема + +В логах ноды отображается следующая ошибка: + +```title="cd /opt/remnanode && docker compose logs -f -t" +remnanode | ERROR [HttpExceptionFilter] Failed to get system stats - { stack: [ null ], code: 'A010', path: '/node/stats/get-system-stats' } +remnanode | LOG [XrayService] Getting config checksum... +remnanode | LOG [XrayService] XTLS config generated in: 1ms +// highlight-next-line-red +remnanode | ERROR [XrayService] XML-RPC fault: SPAWN_ERROR: xray - { stack: [ null ] } +remnanode | LOG [XrayService] Start XTLS took: 2s 568ms +remnanode | ERROR [StatsService] Failed to get system stats: /xray.app.stats.command.StatsService/GetSysStats UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 127.0.0.1:61000 (2025-05-08T14:36:08.821Z) - { stack: [ null ], isOk: false, code: 'A002' } +``` + +#### Почему это происходит + +Данная ошибка возникает, когда Xray core не запускается из-за неправильной конфигурации. + +#### Решение + +1. Проверьте логи **Xray core** для получения детальной информации: + +```bash +docker exec -it remnanode tail -n +1 -f /var/log/supervisor/xray.out.log +``` + +или + +```bash +docker exec -it remnanode tail -n +1 -f /var/log/supervisor/xray.err.log +``` + +2. В большинстве случаев в логах будет указана причина, по которой Xray core не запускается. + +3. Исправьте проблему в панели Remnawave в разделе **Xray Config**. Сохраните изменения. + +--- + +## Ключевые переменные окружения + +Конфигурация панели: + +```bash +# Домен панели для CORS/UI +FRONT_END_DOMAIN=panel.yourdomain.com + +# Публичный URL страницы подписки +SUB_PUBLIC_DOMAIN=sub.yourdomain.com +``` + +Страница подписки: + +```bash +# Кастомный префикс подписки (опционально) +CUSTOM_SUB_PREFIX=/custom-path + +# URL панели для доступа к API +REMNAWAVE_PANEL_URL=https://panel.yourdomain.com +``` + +Дополнительные опции: + +```bash +# Включить документацию API +IS_DOCS_ENABLED=true +SWAGGER_PATH=/swagger +SCALAR_PATH=/scalar + +# Метрики Prometheus +METRICS_USER=admin +METRICS_PASS=password +``` + +:::caution +После изменения переменных окружения перезапускайте соответствующие сервисы. +::: + +--- + +## Быстрый диагностический чек-лист + +При 502: + +- [ ] DNS резолвится в правильный IP +- [ ] Контейнер бэкенда запущен +- [ ] Конфигурация реверс-прокси корректна +- [ ] Сервис доступен по правильному пути (домен vs подпуть) +- [ ] Таймауты прокси настроены адекватно +- [ ] Переменные окружения установлены верно +- [ ] Сервисы перезапущены после изменений + +Если состояние ноды CONNECTED, но функциональность не работает: + +- [ ] Убедитесь, что ноды в статусе CONNECTED (UI + логи) +- [ ] Проверьте корректность конфигурации ноды: servernames, target, dest и др. +- [ ] Убедитесь, что целевые адреса/порты доступны с хоста ноды +- [ ] Проверьте настройки панели: + - [ ] Пользователь назначен в Internal Squad + - [ ] Internal Squad имеет включённые Inbounds (берутся из Config Profile) + - [ ] Внутренний сквад/хосты правильно назначены и активны +- [ ] Проверьте, что на хосте нет overrides в Advanced (Advanced → Overrides) +- [ ] После изменений в Hosts или Internal Squads обновите подписки в клиентских приложениях +- [ ] Просмотрите логи ноды на WARN/ERROR по маршрутизации, TLS, DNS и аутентификации +- [ ] Проверьте локальные правила файрвола на хосте ноды + +При таймаутах: + +- [ ] Node Port совпадает в конфигурации панели и ноды +- [ ] Панель может достучаться до порта ноды (telnet/curl) +- [ ] Контейнер ноды запущен +- [ ] Сетевое подключение стабильное +- [ ] Нет блокировок файрвола между панелью и нодой + +При проблемах с Telegram OAuth: + +- [ ] Домен правильно настроен в BotFather +- [ ] Используется поддерживаемая доменная зона (не `.xyz`) +- [ ] Настройки сохранены в панели + +--- + +## Дополнительные ресурсы + +- Руководство по установке: [https://remna.st/docs/overview/quick-start/](https://remna.st/docs/overview/quick-start/) +- Инструкция по использованию панели: [https://remna.st/blog/learn](https://remna.st/blog/learn) +- Установка панели: [https://remna.st/docs/install/remnawave-panel/](https://remna.st/docs/install/remnawave-panel/) +- Установка ноды: [https://remna.st/docs/install/remnawave-node/](https://remna.st/docs/install/remnawave-node/) +- Настройка страницы подписки: [https://remna.st/docs/install/subscription-page/bundled/](https://remna.st/docs/install/subscription-page/bundled/) +- Переменные окружения: [https://remna.st/docs/install/environment-variables/](https://remna.st/docs/install/environment-variables/) +- Руководство по обновлению: [https://remna.st/docs/install/upgrading/](https://remna.st/docs/install/upgrading/) +- Документация API: [https://remna.st/api/](https://remna.st/api/) +- Telegram-канал: [https://t.me/s/remnawave](https://t.me/s/remnawave) +- GitHub Issues: [https://github.com/remnawave/panel/issues](https://github.com/remnawave/panel/issues) + diff --git a/docs/guides/common-errors.md b/docs/guides/common-errors.md index 301b9fd6..d31503dd 100644 --- a/docs/guides/common-errors.md +++ b/docs/guides/common-errors.md @@ -1,15 +1,197 @@ --- sidebar_position: 2 -title: Common errors +title: Troubleshooting +--- + +## Subscription Page + +### 502 Bad Gateway on subscription page {#502-bad-gateway-subscription-page} + +#### Problem + +When navigating to the subscription page domain, a 502 Bad Gateway error is returned. + +#### Why this happens + +This error occurs for the following reasons: + +- Incorrect URL path — the root domain is opened without the subscription UUID +- Reverse proxy is not forwarding requests to the subscription page container +- Invalid environment variables +- DNS is not pointing to the correct IP +- Subscription page container is unavailable +- Incorrect timeouts in reverse proxy configuration +- Firewall/WAF blocking + +#### Solution + +1. Use the correct URL format: + +``` +https://sub.example.com/ +``` + +2. Ensure that the reverse proxy forwards traffic to `remnawave-subscription-page:3010`. + +3. Check the subscription page container logs: + +```bash +docker compose logs -t -f +``` + +4. Verify the `SUB_PUBLIC_DOMAIN` value in the panel's `.env` file. After editing, restart the panel container. + +5. Ensure that DNS points to the correct IP. + +6. Check the availability of the subscription container/backend. + +7. Verify timeouts in the reverse proxy configuration. + +8. Check firewall/WAF rules. + +--- + +## Remnawave Panel + +### "timeout of 45000ms exceeded" in panel {#timeout-45000ms-exceeded} + +#### Problem + +A timeout error message appears in the panel interface during node operations. + +#### Why this happens + +This error occurs for the following reasons: + +- Panel cannot connect to the node's REST API on the specified port +- Blocking or high latency between panel and node +- Node environment variables do not match panel settings + +#### Solution + +1. Ensure that the `Node Port` value on the node matches the port used when generating docker-compose for the panel. + +2. From the panel host, check the availability of the node port (telnet/curl). + +3. Ensure stable network connectivity. If possible, place the node on a server with a reliable connection. + +4. For complex topologies, consider tunneling between the panel and node (e.g., using Tailscale). + +5. Verify that the node's environment variables match the panel settings. + +6. Review the node container logs: + +```bash +docker compose logs -f -t +``` + +7. Ensure the node started without port binding errors. + +### 502 after panel upgrade {#502-after-panel-upgrade} + +#### Problem + +After upgrading the panel, some requests return a 502 error. + +#### Why this happens + +Nginx has not reloaded and has not picked up the new address from the panel. + +#### Solution + +1. Follow the Upgrading section in the documentation. + +2. Restart the panel and dependent services. + +3. Ensure containers are using updated images. + +4. If the reverse proxy runs separately, restart it. + +5. Verify that the proxy configuration still points to the correct containers/networks. + +### Telegram OAuth: "domain invalid" {#telegram-oauth-domain-invalid} + +#### Problem + +When attempting to authenticate via Telegram, a "domain invalid" error appears. + +#### Solution + +1. Open @BotFather → Bot Settings → Domain. + +2. Specify the panel domain: + +``` +https://panel.domain.com +``` + +3. Save settings in the panel: Settings → Telegram. + +:::caution +Telegram OAuth does not support domains in the `.xyz` TLD. +::: + +### Collation errors after PostgreSQL upgrade {#collation-errors-after-postgresql-upgrade} + +#### Problem + +After a major PostgreSQL upgrade, errors related to database collation occur. + +#### Why this happens + +Such errors most often appear when changing PostgreSQL major versions, when the old database's collations do not match those required by the new version. + +#### Solution + +1. Open the panel container: + +```bash +docker exec -it remnawave remnawave +``` + +2. In the rescue CLI, execute the action: + +``` +● Fix Collation (Fix Collation issues for current database) +``` + +3. Restart the panel: + +```bash +docker compose down && docker compose up -d +``` + --- ## Remnawave Node +### ECONNREFUSED after node reinstall {#econnrefused-after-node-reinstall} + +#### Problem + +The panel cannot connect to the node. ECONNREFUSED error appears in logs. + +#### Solution + +1. Ensure that the node parameters match those generated by the panel. + +2. Confirm the correctness of `Node Port`. + +3. Review the logs: + +```bash +docker compose logs -f -t +``` + +4. Ensure there are no port binding errors and that the port is accessible. + +5. Check `REMNAWAVE_PANEL_URL` for the subscription page — it should point to a reachable panel domain or internal service. If the subscription page is installed alongside Remnawave, use `http://remnawave-subscription-page:3010`. + ### XML-RPC fault: SPAWN_ERROR: xray {#xml-rpc-fault-spawn-error-xray} #### Problem -If you see the following error: +The following error appears in the node logs: ```title="cd /opt/remnanode && docker compose logs -f -t" remnanode | ERROR [HttpExceptionFilter] Failed to get system stats - { stack: [ null ], code: 'A010', path: '/node/stats/get-system-stats' } @@ -23,11 +205,11 @@ remnanode | ERROR [StatsService] Failed to get system stats: /xray.app.stat #### Why this happens -This errors occurs when Xray core failed to start, most likely due to the wrong configuration. +This error occurs when Xray core fails to start due to incorrect configuration. #### Solution -1. Check the **Xray core** logs for more details. +1. Check the **Xray core** logs for detailed information: ```bash docker exec -it remnanode tail -n +1 -f /var/log/supervisor/xray.out.log @@ -39,6 +221,104 @@ or docker exec -it remnanode tail -n +1 -f /var/log/supervisor/xray.err.log ``` -2. In most cases, you will see the reason why Xray core fails to start. +2. In most cases, the logs will indicate the reason why Xray core is not starting. + +3. Fix the issue in the Remnawave panel in the **Xray Config** section. Save the changes. + +--- + +## Key Environment Variables + +Panel configuration: + +```bash +# Panel domain for CORS/UI +FRONT_END_DOMAIN=panel.yourdomain.com + +# Public URL of subscription page +SUB_PUBLIC_DOMAIN=sub.yourdomain.com +``` + +Subscription page: + +```bash +# Custom subscription prefix (optional) +CUSTOM_SUB_PREFIX=/custom-path + +# Panel URL for API access +REMNAWAVE_PANEL_URL=https://panel.yourdomain.com +``` + +Additional options: + +```bash +# Enable API documentation +IS_DOCS_ENABLED=true +SWAGGER_PATH=/swagger +SCALAR_PATH=/scalar + +# Prometheus metrics +METRICS_USER=admin +METRICS_PASS=password +``` + +:::caution +After changing environment variables, restart the corresponding services. +::: + +--- + +## Quick Diagnostic Checklist + +For 502 errors: + +- [ ] DNS resolves to the correct IP +- [ ] Backend container is running +- [ ] Reverse proxy configuration is correct +- [ ] Service is accessible via the correct path (domain vs subpath) +- [ ] Proxy timeouts are configured adequately +- [ ] Environment variables are set correctly +- [ ] Services have been restarted after changes + +If node status is CONNECTED but functionality doesn't work: + +- [ ] Ensure nodes are in CONNECTED status (UI + logs) +- [ ] Verify node configuration correctness: servernames, target, dest, etc. +- [ ] Ensure target addresses/ports are accessible from the node host +- [ ] Check panel settings: + - [ ] User is assigned to Internal Squad + - [ ] Internal Squad has enabled Inbounds (taken from Config Profile) + - [ ] Internal squad/hosts are properly assigned and active +- [ ] Check that there are no overrides on the host in Advanced (Advanced → Overrides) +- [ ] After changes in Hosts or Internal Squads, update subscriptions in client applications +- [ ] Review node logs for WARN/ERROR regarding routing, TLS, DNS, and authentication +- [ ] Check local firewall rules on the node host + +For timeouts: + +- [ ] Node Port matches in both panel and node configuration +- [ ] Panel can reach the node port (telnet/curl) +- [ ] Node container is running +- [ ] Network connection is stable +- [ ] No firewall blocking between panel and node + +For Telegram OAuth issues: + +- [ ] Domain is correctly configured in BotFather +- [ ] Using a supported domain zone (not `.xyz`) +- [ ] Settings are saved in the panel + +--- + +## Additional Resources -3. Fix the issue in Remnawave Panel dashboard under **Xray Config** section. Save the changes. +- Installation guide: [https://remna.st/docs/overview/quick-start/](https://remna.st/docs/overview/quick-start/) +- Panel usage instructions: [https://remna.st/blog/learn](https://remna.st/blog/learn) +- Panel installation: [https://remna.st/docs/install/remnawave-panel/](https://remna.st/docs/install/remnawave-panel/) +- Node installation: [https://remna.st/docs/install/remnawave-node/](https://remna.st/docs/install/remnawave-node/) +- Subscription page setup: [https://remna.st/docs/install/subscription-page/bundled/](https://remna.st/docs/install/subscription-page/bundled/) +- Environment variables: [https://remna.st/docs/install/environment-variables/](https://remna.st/docs/install/environment-variables/) +- Upgrade guide: [https://remna.st/docs/install/upgrading/](https://remna.st/docs/install/upgrading/) +- API documentation: [https://remna.st/api/](https://remna.st/api/) +- Telegram channel: [https://t.me/s/remnawave](https://t.me/s/remnawave) +- GitHub Issues: [https://github.com/remnawave/panel/issues](https://github.com/remnawave/panel/issues) diff --git a/docs/install/remnawave-node.md b/docs/install/remnawave-node.md index 0a39cc59..634b2f24 100644 --- a/docs/install/remnawave-node.md +++ b/docs/install/remnawave-node.md @@ -79,8 +79,9 @@ services: image: remnawave/node:latest restart: always network_mode: host - env_file: - - .env + environment: + - NODE_PORT=2222 + - SECRET_KEY="" // highlight-next-line-green volumes: // highlight-next-line-green @@ -138,8 +139,9 @@ services: image: remnawave/node:latest restart: always network_mode: host - env_file: - - .env + environment: + - NODE_PORT=2222 + - SECRET_KEY="" # Paste your SECRET_KEY here // highlight-next-line-green volumes: // highlight-next-line-green