Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компоненты✓aegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог
Документация/FloraScope / Vegwatch

vegwatch-dzz

MVP системы анализа временных рядов дистанционного зондирования Земли для оценки растительного покрова и поиска аномалий вегетации.

В Docker-режиме всё приложение работает в одном контейнере:

  • веб-интерфейс и API;
  • локальная SQLite-база для пользователей, ролей и метаданных;
  • локальное объектное хранилище для GeoTIFF, CSV, GeoJSON и ZIP;
  • вход по email и паролю;
  • роли admin, analyst и viewer.

База и загруженные файлы сохраняются в одном Docker volume и не пропадают при обновлении контейнера.

Требуются Docker Engine и Docker Compose v2.

Окно терминала
cp .env.docker.example .env

Откройте .env и обязательно замените тестовые значения:

Окно терминала
VEGWATCH_PORT=8080
VEGWATCH_ADMIN_EMAIL=admin@your-domain.ru
VEGWATCH_ADMIN_PASSWORD=your-long-random-password

Пароль должен содержать не менее 12 символов. Значение из примера контейнер принимать не будет.

Соберите и запустите сервис:

Окно терминала
docker compose up -d --build

Откройте http://IP_СЕРВЕРА:8080 и войдите с данными администратора из .env. Первый успешный вход создаст администратора в базе. После этого новые аккаунты создаются во вкладке «Пользователи».

Для смены пароля первого администратора измените VEGWATCH_ADMIN_PASSWORD в .env, пересоздайте контейнер командой docker compose up -d --build и войдите с новым паролем. Сохранённый хеш обновится после успешного входа.

Полезные команды:

Окно терминала
docker compose ps
docker compose logs -f vegwatch
docker compose up -d --build
docker compose down

docker compose down удаляет контейнер и сеть, но сохраняет volume с данными. Не используйте флаг -v, если не хотите удалить базу и загруженные файлы.

Окно терминала
docker build -t vegwatch-dzz:latest .
docker volume create vegwatch-data
docker run -d \
--name vegwatch-dzz \
--restart unless-stopped \
-p 8080:8080 \
-e VEGWATCH_ADMIN_EMAIL=admin@your-domain.ru \
-e VEGWATCH_ADMIN_PASSWORD=your-long-random-password \
-v vegwatch-data:/data \
vegwatch-dzz:latest

Для публичного сервера направьте домен через Caddy, Nginx, Traefik или Cloudflare Tunnel на 127.0.0.1:8080 и включите HTTPS. Прокси должен передавать Host и X-Forwarded-Proto; при HTTPS приложение автоматически ставит cookie с флагом Secure.

Рекомендуется не публиковать порт 8080 напрямую, ограничить частоту запросов к /api/auth/login на reverse proxy и регулярно копировать Docker volume vegwatch-data.

  • CSV/TSV с колонками date и ndvi, evi, ndmi либо value разбирается в браузере и сразу отображается как временной ряд.
  • Необязательная колонка baseline задаёт собственную сезонную норму.
  • GeoTIFF, GeoJSON и ZIP потоково сохраняются в локальном объектном хранилище.
  • Робастный демонстрационный детектор использует медианную сезонную норму и MAD.
  • Растровая обработка GeoTIFF пока не запускается: для неё нужно подключить отдельный вычислительный API или добавить GDAL-конвейер. Сам файл уже принимается и сохраняется.
  • Во вкладке «Открытая история» собраны ссылки на Landsat, Sentinel-2, MODIS и погодные источники для построения многолетней нормы.
РольВозможности
АдминистраторПользователи, роли, все данные и запуск анализа
АналитикЗагрузка данных, запуск анализа и просмотр результатов
НаблюдательТолько просмотр доступных результатов

Пароли хранятся как PBKDF2-SHA-256 хеши с индивидуальной солью. В cookie находится случайный токен, а в базе — только его SHA-256 хеш. Сессия действует семь дней.

  • Dockerfile — двухэтапная сборка и непривилегированный runtime-пользователь;
  • docker-compose.yml — один сервис и один постоянный volume;
  • wrangler.docker.jsonc — локальные D1/R2 bindings и статические файлы;
  • docker/entrypoint.sh — проверка настроек, применение миграций и запуск;
  • .env.docker.example — шаблон переменных окружения.

Контейнер использует локальный Cloudflare Workers runtime, чтобы Docker-версия и размещённая Sites-версия работали из одной кодовой базы. Это удобный вариант для хакатона и пилота. Для высокой нагрузки стоит вынести базу и объектное хранилище в отдельные управляемые сервисы.

Окно терминала
npm ci
npm run build
npm run lint
npm run test:local

test:local проверяет миграции, первый вход администратора, создание аналитика, загрузку CSV и сохранение базы/объекта после перезапуска runtime.

Существующая конфигурация .openai/hosting.json сохранена. При размещении через Sites приложение продолжает использовать вход ChatGPT, D1 и R2; локальные email/пароль включаются только в Docker-конфигурации.

FloraScope и этот репозиторий — разные версии одного направления. Общая тема — florascope. Здесь используется отдельный стек Workers/D1/R2; перенос данных, моделей и API между версиями требует явного сопоставления схем и не выполняется автоматически.

Проверка чистого checkout: npm ci --include=optional, npm run lint, npm run build, npm run test:local. Smoke-тест поднимает локальный runtime Miniflare и проверяет аутентификацию и сохранение прикладных данных. Он не заменяет проверку интеграции с внешними спутниковыми источниками и достоверности научной модели. CI не публикует приложение и не выдаёт релиз.

Исходный код · AGPL-3.0