mirror of
https://github.com/gadgethd/ukmesh.git
synced 2026-09-09 16:45:33 +00:00
* Fix map node freshness consistency * Harden output, ingest, caches, and WebSocket limits * Enforce public visibility across derived data * Harden proxy and operator deployment boundary * Make owner grants authoritative and reconcile ACLs safely * Bound path, spam, and statistics analysis * Make link and coverage jobs crash-safe * Implement strategic security remediation * Fix production cutover configuration * Fix disabled viewshed worker health signal * Serve stale stats during background refresh * Retain stale stats through refresh windows * Bound analytics work to protect ingestion * Prioritize summary warmup over chart scans * Throttle path history rebuilds * Bound path history result memory * Stream path history aggregation * Give bounded path rebuild one CPU * Serve stale charts during bounded refresh * Prioritize startup stats before chart scans * Bound path history segment cardinality * Pin path rebuild context to privacy generation * Self-host original frontend fonts * Allow bounded path rebuild to complete * Improve live map UI and low-latency group feed - Dock node details on the right with selection highlight and collapsible layers - Add node legend, 24h activity sparkline, copy-link, and layout/overlap fixes - Keep all repeaters visible during Live Path focus - Send GroupText feed packets immediately over WebSocket (no batch delay) - Cache expensive stats/observer activity more aggressively to protect ingest - Remove stale local planning/audit markdown from the tree * fix(ci): supply OPERATOR_SITE_TOKEN for compose validation Workers/Compose CI failed because docker-compose requires OPERATOR_SITE_TOKEN. Add CI placeholders for that and MQTT_PASSWORD.
31 lines
985 B
Docker
31 lines
985 B
Docker
FROM node:20-alpine AS frontend-builder
|
|
WORKDIR /build/frontend
|
|
COPY frontend/package.json frontend/package-lock.json ./
|
|
RUN npm ci
|
|
COPY frontend/ ./
|
|
ARG VITE_APP_HOSTNAME
|
|
ARG VITE_SITE=ukmesh
|
|
ARG VITE_OBSERVER_ID=
|
|
ARG VITE_NETWORK=
|
|
ARG VITE_SITE_DISPLAY_NAME=
|
|
ARG VITE_SITE_FOOTER_NAME=
|
|
ARG VITE_SITE_APP_URL=
|
|
ARG VITE_SITE_HOME_URL=
|
|
ARG VITE_VIEWSHED_ENABLED=false
|
|
ENV VITE_APP_HOSTNAME=$VITE_APP_HOSTNAME
|
|
ENV VITE_SITE=$VITE_SITE
|
|
ENV VITE_OBSERVER_ID=$VITE_OBSERVER_ID
|
|
ENV VITE_NETWORK=$VITE_NETWORK
|
|
ENV VITE_SITE_DISPLAY_NAME=$VITE_SITE_DISPLAY_NAME
|
|
ENV VITE_SITE_FOOTER_NAME=$VITE_SITE_FOOTER_NAME
|
|
ENV VITE_SITE_APP_URL=$VITE_SITE_APP_URL
|
|
ENV VITE_SITE_HOME_URL=$VITE_SITE_HOME_URL
|
|
ENV VITE_VIEWSHED_ENABLED=$VITE_VIEWSHED_ENABLED
|
|
RUN npm run build
|
|
|
|
FROM nginx:alpine
|
|
COPY --from=frontend-builder /build/frontend/dist /usr/share/nginx/html
|
|
COPY nginx.website.conf /etc/nginx/conf.d/default.conf
|
|
COPY nginx.security-headers.conf /etc/nginx/snippets/security-headers.conf
|
|
EXPOSE 80
|