12 KiB
Тестовый сервер UX/UI — 2026-10-07
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный source HEAD673e5ba444ced304ea099a99108964e1c471482f;версия1.0.0-test.673e5ba.
| Параметр | Проверенное состояние |
|---|---|
| ОС / архитектура | Debian13 trixie13.7 / x86_64 |
| Ресурсы | 1CPU,1973MiB RAM,4GiB swap; исходно23GiB свободного диска |
| Docker Engine | 29.8.2;systemd enabled/active;hello-world passed |
| Compose / Buildx | v5.6.0 / v0.37.1 |
| Каталог | /opt/mmapp-test;0700 |
| Конфигурация | /opt/mmapp-test/compose.yaml;0600;docker compose config --quiet passed |
| Секреты | Сгенерированы только на сервере в /opt/mmapp-test/.env;0600;в Git не сохранены |
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
| Образы приложения | mmapp-test/backend:ux-673e5ba и mmapp-test/frontend:ux-673e5ba;запущены |
Compose SHA256:99900547ed18b62e2cdcf9aae3975cbd6c3598a699a79dc04a4b7a0fec295348. Локальный и удалённый файлы совпали. Шаблоны: Compose, env без секретов.
Развёртывание приложения
Чистые frontend/backend build contexts подготовлены по .gitea/workflows/docker.yml из закреплённого Git HEAD;образы собраны на сервере без push. Локально docker CLI сейчас отсутствует, на сервере доступен Docker. В корневом .dockerignore исключён backend, поэтому обычный backend build из корня не повторяет CI: использовать отдельный backend context, как main workflow. Не передавать .env.local,backend/.env,ключи и локальные node_modules/.next.
После сборки/загрузки образов выполнить на сервере:
cd /opt/mmapp-test
docker compose config --quiet
docker compose up -d --wait --wait-timeout 300 postgres backend frontend
docker compose ps
curl -fsS http://127.0.0.1:8000/health
curl -fsS http://127.0.0.1:3000/health
Для браузера на рабочем ПК открыть SSH-туннель в отдельном терминале:
ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222
После запуска frontend открыть http://localhost:3000. AUTH_REQUIRED=false допустим для этого доступа через loopback/SSH; при приёмке прав включить AUTH_REQUIRED и согласованный тестовый issuer/Portal, используя серверный JWT secret. Конфигурация фиксирует конкретный image tag; автообновление main:latest не используется.
Границы результата
Выполнены подготовка12.5.1,сборка/запуск12.5.2 и исправление обнаруженной live ошибки12.5.3. На реальном PG применились9миграций0000–0009 (без0001),проверены0008/0009 и CHECK статусов/resolution_version;restart сохранил контрольную настройкуuptime_settings(id1/retention14) и список миграций. Пустые API каталоги прочитаны успешно. Это PG-1 в границе bootstrap/restart/schema/control-row,не проверка backup/restore или транзакционных отказов.
Первый smoke обнаружил PostgreSQL timestamp в outer sampledAt Internet path. Исправлено producer ISO преобразование,без ослабленияfrontend. Итоговый smoke:3экрана200,54чтенияAPI200,безJSerrors,320px fits,Internet path подтверждён. HTTP-моков нет. Первое повторное ожидание подписи свежести исправлено раскрытием штатного блока;ошибка данных послеpatch отсутствует. Дашборд320px просмотрен.
Активные image IDs:
- backend: sha256:cfc25f3aa30ea39236af7eb60b4bbcdd7ae3ccc0663f5aff710a5f21776a9af2
- frontend: sha256:bfba2785b33a72965a029a3692178ba69c80eca75a12934c1dcc04c7970db53f
После пересборки контрольныйid1/retention14 и9миграций сохранились. Подробные build logs и контрольные файлы расположены в /opt/mmapp-test/artifacts. Секреты остаются только в серверном.env0600. Временный SSH-туннель3000/8000 открыт в этой задаче;если процесс остановится,повторить команду выше.
Продолжение PG проверок записано в блоке 12.5.7 ниже. Следующий 12.5.8 — lifecycle jobs/flush/worker перед API restore по протоколу. Для Telegram/Portal и других интеграций нужны тестовые endpoints/учётные записи. 1CPU/2GiB не представляют production performance.
Первый тестовый CHR — 2026-10-07
194.226.121.150 добавлен в приложение,serverId1,имяCHR,typehome-router(default). По явному выбору пользователя используетсяHTTP REST80,useSsl=false;HTTPS443 отключён наCHR. RouterOS7.24.5 stable;identityCHR,модельCHR OpenStack Foundation OpenStack Nova. Test-connection/poll/GET200,statusonline,строка видна вUI. КонфигурацияRouterOS не изменялась. Очищенный результат. Пароль в паспорт/отчёт/Git не включён. Дляspeed-test нужно второе отдельное устройство;VPN/маршрутизация/изменениясети пока не проверены.
Второй тестовый CHR — 2026-10-07
104.165.244.7,serverId2,HTTPREST80,имяCHR,typehome-router(default),RouterOS7.24.5 stable;test-connection/poll/GET200,statusonline. Паспорт пары без учётных данных. Пароль не включён в документы/Git. Следующий12.5.6 — короткиеTCP bandwidth-test по3сек,transmit/receive/both. Имена одинаковые;использоватьIP/id для выбора устройства.
Native TCP speed — 2026-10-07
НаобоихCHR поразрешениюпользователя включёнbandwidth-server(enabled=true,authenticate=true,max-sessions100),независимымGET подтверждено;служба остаётся активной для последующих тестов. ВзаимныйPing3/3,0%loss. Триad-hocTCP runs id1→id2 по3s/transmit/receive/both завершеныdone testing,HTTP200,история/GUI подтверждены. Настройки,результаты,предыдущий отказ при выключенной службе. Это функциональная проверка,неbenchmark;UDP/WANbinding/probe-races/остальнойROS иPG-протокол не закрыты.
PostgreSQL backup/RBAC/concurrency — 2026-10-07
Отчёт 12.5.7: admin backup200/475225bytes, pg_restore18.6 прочитал907TOC entries и восстановил отдельную mmapp_acceptance_20261007. Контрольные записи/9миграций/5speed rows/servers sequence совпали с исходной БД. Приложение не подключено к проверочной БД; она сохранена для дальнейшей приёмки. Дамп только в /opt/mmapp-test/data/acceptance-private (0700), файл0600, содержит приватные учётные данные и не копируется в Git.
При AUTH_REQUIRED=true подтверждены401/403 на backup/restore; JWT сформированы в памяти, реальный Portal SSO не проверен. Конкурирующий restore409 при наблюдаемом активном pg_dump, первый backup200 после снятия контрольного SQL lock. AUTH_REQUIRED=false восстановлен, API auth/config и health подтвердили состояние. PG-3/4/6 остаются открытыми: ожидание завершения текущих scheduler jobs/flush/worker пока не обеспечено.
Локальный lifecycle patch — 2026-10-07
Блок12.5.8 исправляет ожидание scheduler jobs и запрещает новые запуски во время database operation;17scheduler tests,7pure database tests,HTTP/JWT scripts и build прошли. На этом стенде patch пока не развёрнут: активный source673e5ba сохраняется. Следующий12.5.9 — graceful NetFlow worker stop/flush; только после этого перейти к сборке/развёртыванию и внешней проверкеPG-6. Восстановление основной тестовой БД ещё не выполнялось.
Локальный NetFlow shutdown patch — 2026-10-07
В12.5.9 добавлена командаshutdown с подтверждением послеflush/pool.end и ожиданиемexit0;4pure/protocol tests, database HTTP/JWT и build passed. На стенд ещё не развёрнуто, source673e5ba остаётся активным. Реальный collector/UDP/длительный SQL и прочие writers требуют отдельной проверки12.5.10 в mmapp_acceptance_20261007. Подтверждение завершения flush не гарантирует сохранение всех пакетов при прежних best-effort ошибках engine; PG-6/restore не приняты.
Настоящий isolated collector — 2026-10-07
12.5.10 evidence: актуальныйworker изf8da3e0 в отдельном временном контейнере, выделеннаяmmapp_acceptance_20261007, UDP4749 только внутриконтейнера. Shutdown дождался blocked SQL/освободилsocket, ack+exit0, delta1500bytes,0worker connections. Контейнер удалён--rm. ПроверочнаяБД теперь содержит синтетические flow rows/counters; архив12.5.7 остаётся исходным snapshot. Основной runtime673e5ba/healthok/serverID1–2/retention14 сохранён. App-wide PG-6/ручные API writers/restore ещё открыты; следующий12.5.11 — аудит и admission остальных писателей.