6.0 KiB
6.0 KiB
PUBLIC_DOMAIN_DIAGNOSTIC
Дата: 2026-07-15
Окружение: coder container coder-arhipov-owlprime на хосте OwlPrime
Verdict
BLOCKED_EXTERNAL
Постоянный домен https://arhipovdan.ru/ не обслуживает owl-web-1.
Production на :3100 и Quick Tunnel обновлены до commit 4fcce5b (/version.json → release 20260715-2221, bundle index-AagIOJbd.js).
Named Tunnel: не создан из этого окружения — нет Cloudflare origin cert / API token.
См. CLOUDFLARE_NAMED_TUNNEL_SETUP.md и DNS_MIGRATION_INVENTORY.md.
DNS
| Поле | Значение |
|---|---|
| Nameservers | ns1.reg.ru., ns2.reg.ru. (REG.RU, не Cloudflare) |
| A | 185.160.137.162 (TTL ~86400 у registrar) |
| AAAA | нет |
| CNAME | нет на apex; www тоже → 185.160.137.162 |
| Cloudflare Proxy | нет (NS не Cloudflare) |
Команды:
dig A arhipovdan.ru +short # 185.160.137.162
dig AAAA arhipovdan.ru +short # (empty)
dig NS arhipovdan.ru +short # ns1.reg.ru. ns2.reg.ru.
Сетевая топология (факт)
| Проверка | Результат |
|---|---|
| Egress IP хоста (ipify) | 185.160.137.162 (совпадает с A) |
127.0.0.1:80 / :443 на хосте |
closed |
185.160.137.162:80 / :443 |
open, отвечает openresty |
127.0.0.1:3100 |
open, owl-web-1 nginx → index-AagIOJbd.js / version.json → 4fcce5b |
Вывод: порт-форвард / другой хост за тем же публичным IP принимает 80/443. Это не namespace текущего Docker host listener set (на host net видны лишь :3100 и :8082).
TLS / HTTP к домену
| Проверка | Результат |
|---|---|
curl -4 http://arhipovdan.ru/ |
404 Server: openresty |
curl -4 https://arhipovdan.ru/ |
TLS fail: tlsv1 unrecognized name (нет сертификата/vhost SNI для имени) |
curl -6 |
нет AAAA → resolve fail |
| Certificate / SAN | получить нельзя (handshake abort) |
| HTML / bundle | недоступны через постоянный домен |
Cloudflare Tunnel
| Поле | Значение |
|---|---|
| Type | Quick Tunnel only |
| Process | /usr/local/bin/cloudflared tunnel --url http://127.0.0.1:3100 (pid в coder) |
| Named Tunnel | не найден (нет systemd unit, нет config.yml credentials) |
| Permanent ingress for arhipovdan.ru | отсутствует |
| Working public URL | https://invitations-based-characters-accent.trycloudflare.com/ → version.json → 4fcce5b |
Quick Tunnel не является завершённым production DNS-решением.
Точная причина 404 / TLS fail
- DNS A указывает на
185.160.137.162. - На этом IP:80 отвечает чужой openresty без vhost
arhipovdan.ru→ HTTP 404. - На IP:443 нет SNI-сертификата для
arhipovdan.ru→unrecognized_name. - Актуальный sorter (
owl-web-1) слушает только127.0.0.1:3100и не связан с этим openresty.
Что было исправлено в коде/инфре приложения
- Production container отдаёт
index-AagIOJbd.js+/version.jsonна:3100(commit4fcce5b). - Добавлены диагностика, Named Tunnel prep docs, production smoke с
EXPECTED_COMMIT, DNS inventory. - DNS/openresty не изменялись из этого окружения (нет доступа к REG.RU и к openresty vhost).
Действия пользователя (точные)
Вариант 1 — предпочтительно: Cloudflare Named Tunnel + смена NS/DNS
- Открыть Cloudflare → Add site
arhipovdan.ruили создать Named Tunnel в существующем CF-аккаунте. - В REG.RU → DNS управления доменом: либо делегировать NS на Cloudflare, либо оставить REG.RU и создать запись, которую выдаст
cloudflared tunnel route dns. - Ingress tunnel:
- hostname:
arhipovdan.ru(+www) - service:
http://127.0.0.1:3100(если cloudflared на том же host net, что и publish3100)
- hostname:
- Выключить/не использовать Quick Tunnel как постоянный URL.
- Проверить:
dig A arhipovdan.ru +short
curl -I https://arhipovdan.ru/
curl -s https://arhipovdan.ru/version.json
# ожидается: "commit": "4fcce5b" (или актуальный production SHA)
Вариант 2 — починить openresty на том, кто слушает 185.160.137.162:80/443
- На сервере с openresty добавить
server_name arhipovdan.ru www.arhipovdan.ru. proxy_pass http://<IP_этого_хоста_в_LAN>:3100;(нужен LAN-доступ к OwlPrime:3100; сейчас publish только127.0.0.1:3100— потребуется сменить publish на0.0.0.0:3100или LAN IP осознанно).- Выпустить TLS (certbot/acme) для SNI
arhipovdan.ru. - Проверить теми же curl-командами.
Вариант 3 — сменить A-запись в REG.RU
Тип: A
Имя: @ (и www)
Старое значение: 185.160.137.162
Новое значение: <IP, где реально слушает ваш reverse proxy / CF>
Proxy status: DNS only (если не Cloudflare) или Proxied (если Cloudflare)
Проверочные команды после фикса
curl -I https://arhipovdan.ru/
curl -I https://arhipovdan.ru/details
curl -s https://arhipovdan.ru/version.json
curl -s https://arhipovdan.ru/ | grep -Eo 'index-[A-Za-z0-9_-]+\.js'
PLAYWRIGHT_BASE_URL=https://arhipovdan.ru EXPECTED_COMMIT=4fcce5b npm run test:e2e:production