Skip to content

build: upgrade public-ip to v8 - #97

Closed
agentHits wants to merge 1 commit into
AgentHits-Devfrom
build/public-ip-v8
Closed

agentHits wants to merge 1 commit into
AgentHits-Devfrom
build/public-ip-v8

Conversation

@agentHits

@agentHits agentHits commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Зачем

public-ip определяет публичный IP сервера для веб-терминала (сначала IPv4, при ошибке IPv6). Ветка 6.x больше не развивается; 8.x отказалась от got и ходит по HTTPS через встроенный fetch, поэтому в bun.lock стало заметно меньше пакетов.

Что изменилось

  • public-ip 6.0.2 → 8.0.0 (вышла 2025-09-21), точная версия в apps/dokploy/package.json и packages/server/package.json.
  • Код не менялся. getPublicIpWithFallback в packages/server/src/wss/utils.ts и apps/dokploy/server/wss/terminal.ts вызывает publicIpv4() / publicIpv6() без опций и ловит любую ошибку, это совместимо с v8.
  • bun.lock: удалены got 12 и его дерево (cacheable-request, http2-wrapper, keyv, p-cancelable и др.), is-ip 4 → 5, aggregate-error 4 больше не нужен. Другие пакеты не сдвинулись.

Из release notes:

  • 7.0.0 — нужен Node.js 18+.
  • 8.0.0 — нужен Node.js 20+ (в образах Node 24); удалён метод .cancel(), вместо него опция signal (AbortController) — мы .cancel() не использовали; timeout теперь действует на всю операцию, а не на каждый запрос.

Что это значит для нас: по умолчанию timeout 5 с на весь поиск, так что если IPv4 недоступен, переход на IPv6 наступает не позже чем через 5 с. При неудаче v8 бросает IpNotFoundError или TimeoutError; наш catch ловит любую ошибку, поведение то же.

Проверки

  • bun install --frozen-lockfile — ок.
  • bun run typecheck — все 4 workspace без ошибок.
  • bunx vitest run --config __test__/vitest.config.ts __test__/wss __test__/domains/domain-validation.test.ts __test__/domain-overview __test__/cluster/cluster-router-security.test.ts — 41 файл, 602 теста пройдены (часть из них импортирует server/wss/terminal.ts, то есть сам модуль public-ip v8).
  • bunx biome check на изменённых package.json — без замечаний.
  • bun audit --audit-level=moderate — уязвимостей нет.
  • Локально через Node 24: publicIpv4() вернул IPv4-адрес; publicIpv6() на машине без IPv6 отклонился с TimeoutError, который наш catch перехватывает.
  • Не проверено локально: next build и server:build (их соберёт CI). Тестов, которые мокают public-ip и проверяют переход IPv4 → IPv6, в репозитории нет; новый сетевой тест не добавлял.

Что проверить вручную на dev

  1. Открыть веб-терминал локального сервера (Settings → Server → Terminal или терминал Dokploy-сервера) — должен подключиться.
  2. Открыть веб-терминал удалённого сервера (Remote Servers → Terminal) — должен подключиться.
  3. Если локальный терминал просит добавить SSH-ключ, проверить, что в инструкции показан правильный публичный IP сервера.
  4. В логах контейнера Dokploy не должно быть Error obtaining public IPv4 address или Error to obtain public IPv4 address при открытии терминала.

🤖 Generated with Claude Code

Что:
- public-ip 6.0.2 -> 8.0.0 (точная версия) в apps/dokploy и packages/server.
- Код не менялся: getPublicIpWithFallback в packages/server/src/wss/utils.ts и apps/dokploy/server/wss/terminal.ts вызывает publicIpv4/publicIpv6 без опций и ловит любую ошибку.
- Из bun.lock ушли got 12 и его зависимости (cacheable-request, http2-wrapper, keyv и др.): v8 ходит по HTTPS через встроенный fetch.

Зачем:
- Major-обновление (волна 1): v6 больше не развивается, v8 тянет меньше зависимостей.

Риски:
- timeout (по умолчанию 5 с) в v8 считается на всю операцию, а не на каждый запрос: при недоступном IPv4 переход на IPv6 наступает не позже чем через 5 с.
- При ошибке теперь бросается IpNotFoundError или TimeoutError; код ловит любую ошибку, поведение то же.
- Нужен Node.js 20+, в образах Node 24.
- Метод .cancel() удалён; в коде он не использовался.

Проверки:
- bun run typecheck: все 4 workspace без ошибок.
- vitest: __test__/wss, domain-validation, domain-overview, cluster-router-security - 41 файл, 602 теста пройдены.
- bunx biome check на изменённых package.json: без замечаний.
- bun audit --audit-level=moderate: уязвимостей нет.
- Локально publicIpv4() вернул IPv4-адрес, publicIpv6() без IPv6 отклонился с TimeoutError.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@agentHits

Copy link
Copy Markdown
Collaborator Author

Влито в составе #101 одним PR, чтобы вся первая волна вышла одной версией. Этот PR закрываю без слияния, его коммит есть в #101.

@agentHits agentHits closed this Oct 27, 2026
@agentHits
agentHits deleted the build/public-ip-v8 branch October 27, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant