Commit Graph

430 Commits

Author SHA1 Message Date
Louis King b5fc4c06a0 Rename receiver profile to observer, packet-capture service to observer, hub-dev fallback to hub
- Rename compose profile 'receiver' -> 'observer' across all docs
- Rename docker-compose service 'packet-capture' -> 'observer' and volume
  'packetcapture_data' -> 'observer_data'
- Change COMPOSE_PROJECT_NAME fallback from 'hub-dev' to 'hub' across all
  compose files, Makefile, .env, docs
- Remove legacy interface-mock service from test compose file
2026-04-16 23:12:22 +01:00
Louis King 3614eaf24b Restructure README: move profiles to Getting Started, add Production Setup, remove Multi-Instance
- Move Docker Compose Profiles section under Getting Started before Simple Self-Hosted Setup
- Add Production Setup section with reverse proxy config and Traefik instructions
- Remove Multi-Instance Deployment section
2026-04-16 22:54:03 +01:00
Louis King 0a37010db6 Remove bundled Prometheus/Alertmanager, fix Getting Started and docker compose examples
- Remove monitoring services from all docker compose files — monitoring is now
  user-managed infrastructure (users point their own Prometheus at /metrics)
- Remove metrics profile, prometheus/alertmanager volumes from Makefile
- Update README Getting Started: packet capture is included via --profile receiver,
  not a separate prerequisite; add remote observers guide
- Add --profile all to all docker compose command examples in README and UPGRADING.md
- Simplify UPGRADING.md backup/migration to only meshcore_hub_data
2026-04-16 22:47:07 +01:00
Louis King ac18c80675 Fix upgrade backup instructions: use actual old volume names, remove non-existent volumes
The backup commands referenced COMPOSE_PROJECT_NAME and volumes (packetcapture_data,
mqtt_broker_data, mosquitto_data) that don't exist on pre-upgrade installs. Rewrote
backup step with explicit meshcore_* volume names, removed Mosquitto/mqtt-broker
migration sections, and added Makefile fallback for COMPOSE_PROJECT_NAME.
2026-04-16 22:17:30 +01:00
Louis King 0427378a18 Fix inaccuracies in UPGRADING.md: move MQTT creds to update section, add Python defaults note, document received_at rename 2026-04-14 22:53:08 +01:00
Louis King 1e4a75f074 Rename COLLECTOR_LETSMESH_DECODER_KEYS to COLLECTOR_CHANNEL_KEYS
Simplify the variable name to remove the legacy LetsMesh decoder prefix.
Also fix unparenthesized except tuples in web/app.py and promote the
parenthesized-exception rule to a prominent position in AGENTS.md.
2026-04-14 22:41:27 +01:00
Louis King 0302c0c661 Add channel filter to Messages page, fix channel label display and decoder key parsing
- Add Channel dropdown filter to Messages page (uses existing API channel_idx param)
- Add i18n keys: entities.channel, common.all_channels
- Stop auto-prefixing # on non-hashtag channel labels (Ipswich, IPNet, etc.)
- Strip quotes from decoder key entries to fix .env parsing in Docker Compose
- Add debug logging for decoder initialization and failed decryption
- Fix except syntax (AttributeError, TypeError -> parenthesized tuple)
2026-04-14 22:05:00 +01:00
Louis King aeac44e8c7 Fix stale DOMAIN reference in traefik override comment 2026-04-14 20:43:59 +01:00
Louis King f4648d7fe7 Split Docker Compose into base/dev/prod/traefik overrides with multi-instance support
- Split docker-compose.yml into base config + environment overrides
  - docker-compose.dev.yml: port mappings for local development
  - docker-compose.prod.yml: external proxy-net network, no exposed ports
  - docker-compose.traefik.yml: optional Traefik auto-discovery labels
- Parameterize container and volume names with COMPOSE_PROJECT_NAME
  - Default: hub-dev (containers: hub-dev-api, volumes: hub-dev_hub_data)
  - Override per instance for multi-instance deployments (hub-prod, hub-beta)
- Add Makefile with build/up/down/logs/backup/restore targets
- Add TRAEFIK_DOMAIN env var for Traefik routing configuration
- Update UPGRADING.md with volume migration instructions (rename + copy methods)
- Update README.md with multi-instance deployment and backup/restore sections
2026-04-14 20:41:26 +01:00
Louis King 123dc180f0 Move warning block above screenshot in README 2026-04-13 22:52:08 +01:00
Louis King f2c8581b10 Remove stale COLLECTOR_INGEST_MODE reference from docker-compose comment 2026-04-13 22:50:07 +01:00
Louis King 2d35249711 Remove stale .claude/ and .plans/ directories 2026-04-13 22:43:40 +01:00
Louis King 700b4a0888 Remove stale references to deleted PROMPT.md, PLAN.md, TASKS.md from README 2026-04-13 22:37:47 +01:00
Louis King dbd68e9a9f Replace obsolete MQTT broker image with custom build, add connection retry and upgrade docs
- Add custom Dockerfile for meshcore-mqtt-broker (Node 22 Alpine, built from michaelhart/meshcore-mqtt-broker source)
- Add GitHub Actions workflow for weekly multi-arch MQTT broker image builds
- Add local build script (etc/docker/meshcore-mqtt-broker/build.sh)
- Update docker-compose.yml and test compose to use new ghcr.io image
- Add MQTT connection retry logic with exponential backoff to collector subscriber
- Create UPGRADING.md with migration guide for breaking changes
- Update README.md and AGENTS.md for accuracy (Python 3.14, removed commands, fixed MQTT defaults)
- Remove obsolete files (etc/mosquitto.conf, .agentmap.yaml, CLAUDE.md)
2026-04-13 22:27:39 +01:00
Louis King fb6913ac3d Merge branch 'feat/meshcore-packet-capture-receiver' of github.com:ipnet-mesh/meshcore-hub into feat/meshcore-packet-capture-receiver 2026-04-12 18:04:18 +01:00
Louis King bf6b86696c Migrate from Node.js meshcore-decoder CLI to native Python meshcoredecoder library
Replace subprocess-based packet decoding with native Python meshcoredecoder>=0.3.2.
The decoder is now always enabled (no toggle), removing ENABLED/COMMAND/TIMEOUT
config vars. Adds _enrich_payload_decoded() to compensate for payload classes that
lack to_dict() overrides in the library. Removes Node.js/npm from Dockerfile and
deletes the patches/ directory. Adds parenthesized exception rule to AGENTS.md.
2026-04-12 18:03:20 +01:00
JingleManSweep 397084eff5 Merge branch 'main' into feat/meshcore-packet-capture-receiver 2026-04-12 14:23:10 +01:00
Louis King 8b54228c94 Merge branch 'main' of github.com:ipnet-mesh/meshcore-hub into feat/meshcore-packet-capture-receiver 2026-04-12 14:22:45 +01:00
Louis King 58499c420b Replace native interface with external packet capture and rename receiver to observer
Remove the meshcore_interface component in favor of external
meshcore-packet-capture for data ingestion. Rename receiver_node_id
to observer_node_id across all models, schemas, handlers, and API
routes. Add Alembic migration for the column/table renames. Fix
frontend JS property name mismatch that prevented the Receiver column
from displaying observer data.
2026-04-12 14:07:14 +01:00
Louis King c7655b5242 Add external packet capture receiver to Docker Compose
Integrate the meshcore-packet-capture image as an alternative to the
native interface-receiver, reorganize compose profiles so the receiver
profile uses packet capture while native-receiver covers the built-in
and mock receivers, and switch the default collector ingest mode to
letsmesh_upload.
2026-04-11 18:37:32 +01:00
Louis King 9664d4ee76 Fix Starlette 1.0 incompatibility and bump to Python 3.14
Pin starlette<1.0.0 to avoid TemplateResponse breaking change, update
the TemplateResponse call to new-style request-first signature, and
bump Python version to 3.14 across Dockerfile, pyproject.toml, and
pre-commit hooks.
2026-04-11 18:33:26 +01:00
JingleManSweep 92ff1ab306 Merge pull request #146 from ipnet-mesh/chore/codecov-tests
Add Test upload
2026-03-18 12:05:17 +00:00
JingleManSweep 0e2a24caa6 Upgrade Codecov action and specify report type
Updated Codecov action to version 5 and added report type.
2026-03-18 12:03:05 +00:00
JingleManSweep ff36a991af Update ci.yml 2026-03-18 11:57:23 +00:00
JingleManSweep fa1a2ecc17 Add Codecov badge to README
Added Codecov badge to README for coverage tracking.
2026-03-18 11:55:06 +00:00
JingleManSweep 9099ffb0cb Merge pull request #145 from ipnet-mesh/fix/codecov-default
Add push trigger for CI on main branch
2026-03-18 11:42:37 +00:00
JingleManSweep f8219b4626 Add push trigger for CI on main branch 2026-03-18 11:39:42 +00:00
JingleManSweep 27b78d6904 Merge pull request #144 from ipnet-mesh/chore/add-codecov
Add CODECOV_TOKEN to CI workflow
2026-03-18 11:32:45 +00:00
JingleManSweep d4c3e127a2 Add CODECOV_TOKEN to CI workflow 2026-03-18 11:23:32 +00:00
JingleManSweep 92e9ccdbfa Merge pull request #143 from ipnet-mesh/feature/multibyte-support
feat: support multibyte path hashes for MeshCore firmware v1.14+
v0.8.2
2026-03-17 23:02:51 +00:00
Louis King 29b5820ed1 feat: support multibyte path hashes for MeshCore firmware v1.14+
Update path hash handling to accept variable-length hex-encoded hashes
(e.g. "4a" for single-byte, "b3fa" for multibyte) instead of requiring
exactly 2-character hashes. Bump meshcore dependency to >=2.3.0.

- Update normalizer to accept even-length hex strings >= 2 chars
- Update schemas and model docstrings for variable-length hashes
- Add tests for multibyte and mixed-length path hash round-trips
- Fix web test flakiness from local .env datetime locale leaking
2026-03-17 22:59:29 +00:00
JingleManSweep 889aa32e3a Merge pull request #142 from ipnet-mesh/fix/security-fixes
fix: harden security across auth, XSS, and proxy trust
v0.8.1
2026-03-09 22:57:33 +00:00
Louis King 3c3873951d chore: add agentmap and security fixes planning files 2026-03-09 22:54:53 +00:00
Louis King 4b58160f31 fix: harden security across auth, XSS, and proxy trust
- Use hmac.compare_digest for constant-time API key comparison in auth
  and metrics endpoints to prevent timing attacks
- Escape user-controlled data in admin JS templates (members, node-tags)
  to prevent XSS via innerHTML
- Escape </script> sequences in embedded JSON config to prevent XSS
  breakout from <script> blocks
- Add configurable WEB_TRUSTED_PROXY_HOSTS setting instead of trusting
  all proxy headers unconditionally
- Warn on startup when admin is enabled with default trust-all proxy
- Remove legacy HTML dashboard endpoint (unused, superseded by SPA)
- Add comprehensive auth and dashboard test coverage
2026-03-09 22:53:53 +00:00
JingleManSweep a32255e110 fix: support monochrome custom logos via logo-invert.svg filename convention (#141)
Custom logos were hardcoded as full-color, making white/monochrome logos
invisible in light mode. Adds logo-invert.svg as a higher-priority
candidate that enables the brightness filter in light mode.
v0.8.0
2026-03-09 17:30:40 +00:00
JingleManSweep 59a1898824 Merge pull request #139 from ipnet-mesh/renovate/docker-metadata-action-6.x
Update docker/metadata-action action to v6
2026-03-06 21:21:14 +00:00
renovate[bot] 9256f8375d Update docker/metadata-action action to v6 2026-03-06 19:03:36 +00:00
JingleManSweep e9b25c1ca7 Merge pull request #140 from ipnet-mesh/renovate/docker-build-push-action-7.x
Update docker/build-push-action action to v7
2026-03-06 19:03:03 +00:00
renovate[bot] 749bed6d5b Update docker/build-push-action action to v7 2026-03-06 18:04:06 +00:00
JingleManSweep 97539cb960 Merge pull request #128 from yellowcooln/main
LetsMesh Compatibility Mode: Decoder-Backed Messaging, Admin Proxy Auth, and Branding/Timezone Improvements
2026-03-06 18:03:32 +00:00
yellowcooln c418959e5d Use patch-package file for meshcore-decoder Docker compatibility patch 2026-03-06 12:35:47 -05:00
JingleManSweep 14fac89f49 Merge branch 'main' into main 2026-03-05 12:00:36 +00:00
JingleManSweep 8201be5a39 Merge pull request #137 from ipnet-mesh/renovate/docker-setup-buildx-action-4.x
Update docker/setup-buildx-action action to v4
2026-03-05 11:47:19 +00:00
renovate[bot] 17fa2f1005 Update docker/setup-buildx-action action to v4 2026-03-05 11:44:58 +00:00
JingleManSweep 535186efb1 Merge pull request #138 from ipnet-mesh/renovate/docker-setup-qemu-action-4.x
Update docker/setup-qemu-action action to v4
2026-03-05 11:44:36 +00:00
JingleManSweep fa1db5e709 Merge branch 'main' into renovate/docker-setup-qemu-action-4.x 2026-03-05 11:42:14 +00:00
JingleManSweep 840b8636a2 Merge pull request #136 from ipnet-mesh/renovate/docker-login-action-4.x
Update docker/login-action action to v4
2026-03-05 11:42:00 +00:00
renovate[bot] cb305083e7 Update docker/setup-qemu-action action to v4 2026-03-05 11:38:49 +00:00
renovate[bot] d475a12292 Update docker/login-action action to v4 2026-03-05 11:38:41 +00:00
JingleManSweep 53f0ce7225 Merge pull request #135 from ipnet-mesh/chore/fix-actions
Updates
2026-03-05 11:36:55 +00:00