Skip to content

feat(web): allow plain-HTTP LAN hosts via LAN_HOSTS - #192

Open
andriyor wants to merge 2 commits into
sars:mainfrom
andriyor:lan-hosts
Open

andriyor wants to merge 2 commits into
sars:mainfrom
andriyor:lan-hosts

Conversation

@andriyor

@andriyor andriyor commented Nov 4, 2026 •

Copy link
Copy Markdown

Результат

Вимога PF-xxx / задача: не з роадмапу; запуск на домашньому сервері (Raspberry Pi) без reverse proxy.
Що зміниться для користувача і чому: зараз дашборд приймає лише Host localhost:3300 / 127.0.0.1:3300 або HTTPS PUBLIC_ORIGIN, а cookie сесії завжди Secure, тож на http://<IP в локальній мережі>:3300 вхід неможливий. Нова необов'язкова змінна LAN_HOSTS (через кому, host:port) додає ці адреси до дозволених Host, і вхід через них отримує cookie без Secure. Для всіх інших Host, зокрема localhost і PUBLIC_ORIGIN, Secure лишається. Без LAN_HOSTS поведінка не змінюється.

Перевірка

Команди та фактичний результат (або явно «не виконано»):

  • node --test dist/test/*.test.js: 743 тести, 738 pass, 0 fail
  • tsc --noEmit: без помилок; prettier --check для змінених .ts: ок
  • python3 scripts/check_repository.py: Foundation checks passed
  • Розгорнуто на Raspberry Pi: дашборд відкривається з іншої машини в мережі, а запит з іншим Host отримує 403

Перевірені помилки / крайові випадки: новий тест у test/web.test.ts: вхід через LAN-адресу дає 200 і cookie без Secure; вхід через 127.0.0.1 дає cookie з Secure; невідомий Host у мережі дає 403.

Експлуатація

Міграції, сумісність, зміни доступу, rollout / rollback (або «не стосується»): міграцій немає. Новий параметр необов'язковий; без нього нічого не змінюється. Пароль і сесія через LAN_HOSTS йдуть мережею незашифрованими, тому це лише для довіреної локальної мережі. Для такого доступу порт треба публікувати не тільки на loopback.
Оновлена документація: deploy/config-examples/app.env.example

🤖 Generated with Claude Code

andriyor and others added 2 commits November 4, 2026 16:21
LAN_HOSTS (comma-separated host:port, e.g. 192.168.0.162:3300) adds those
hosts to the accepted Host list and gives requests on them a session cookie
without Secure, since no HTTPS is in front of them. Unset, behaviour is
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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