Embed UI in binary (fix 404 when web/ missing from WorkingDirectory). Document logs and troubleshooting.

Made-with: Cursor
This commit is contained in:
Луценко Андрей Анатольевич
2026-04-10 12:28:53 +10:00
parent e25e068515
commit 659b76f1cf
4 changed files with 24 additions and 2 deletions
+16 -1
View File
@@ -15,7 +15,7 @@
- `GET /api/scans/{id}/lldp` - LLDP соседи (если устройство отдает LLDP-MIB по SNMP).
- `GET /api/scans/{id}/links` - базовые связи из LLDP с попыткой сопоставления по `remote_sys_name`.
- `GET /api/scans/{id}/topology` - граф `nodes/edges` для визуализации.
- `GET /` - простая UI-страница для просмотра топологии.
- `GET /` — UI для просмотра топологии (страница встроена в бинарник через `embed`, каталог `internal/webui/`; **не зависит** от `WorkingDirectory` и папки `web/` рядом с процессом).
- Валидация CIDR и exclude IP.
- Два backend-хранилища: in-memory и PostgreSQL.
- После создания scan запускается фоновый discovery с обновлением статуса и прогресса.
@@ -230,6 +230,21 @@ sudo systemctl enable --now nettopo-go
systemctl status nettopo-go
```
### Логи (systemd)
Сервер пишет в **стандартный лог** пакета `log` (stderr): старт, выбранное хранилище, фатальные ошибки БД. Просмотр:
```bash
journalctl -u nettopo-go -f
journalctl -u nettopo-go -n 100 --no-pager
```
Отдельного файла логов приложение **не создаёт**; при необходимости перенаправьте вывод unit-а в файл через `StandardOutput=` / `StandardError=` в override.
### Если в браузере `404 page not found` на `/`
Раньше UI отдавался из каталога `web/` относительно **текущей рабочей директории** процесса; при `WorkingDirectory=/opt/nettopo-go` без этой папки корень сайта давал 404. Сейчас UI **вшит в бинарник** — после обновления до актуального коммита пересоберите сервер (`go build ...`) и перезапустите сервис. Проверка API: `curl -s http://127.0.0.1:8080/health` должен вернуть JSON `{"status":"ok",...}`.
## Размещение за IIS на Windows
- Запускать `nettopo-server.exe` как Windows Service.