From 994ecb61aabb876a8c588f766198f67fb7920df8 Mon Sep 17 00:00:00 2001 From: Louis King Date: Mon, 18 May 2026 21:06:47 +0100 Subject: [PATCH] Updates --- contrib/packetcapture/.env.example | 47 +++++++++------- contrib/packetcapture/docker-compose.yml | 69 ++++++++++++++---------- 2 files changed, 68 insertions(+), 48 deletions(-) diff --git a/contrib/packetcapture/.env.example b/contrib/packetcapture/.env.example index 8687efb..8ea0812 100644 --- a/contrib/packetcapture/.env.example +++ b/contrib/packetcapture/.env.example @@ -4,12 +4,12 @@ # Copy this file to .env and update the values below. # # This observer captures MeshCore mesh traffic from a serial device and -# forwards decoded packets to one or more MQTT brokers. By default it sends -# to your community Hub and optionally to the LetsMesh network (US/EU). +# forwards decoded packets to one or more MQTT brokers. +# By default it sends to IPNet's MeshCore Hub MQTT broker. +# Optionally, it can send to LetsMesh (EU/US) and MeshRank.net # # Prerequisites: -# - A Meshtastic device connected via USB (or modify CONNECTION_TYPE for network) -# - Your community Hub's MQTT broker must be accessible (WSS with TLS recommended) +# - A MeshCore companion device connected via USB (or modify CONNECTION_TYPE for network) # # Quick start: # cp .env.example .env # then edit .env @@ -40,38 +40,45 @@ ORIGIN=observer # Hours between self-advertisement broadcasts (default: 11). ADVERT_INTERVAL_HOURS=11 +# --------------------------------------------------------------------------- +# IPNet (required) +# --------------------------------------------------------------------------- +# Contribute packets to IPNet MeshCore Hub's MQTT broker. +# See: https://ipnt.uk/pages/join +# Enable IPNet MQTT endpoint +IPNET_ENABLE=true + # --------------------------------------------------------------------------- # LetsMesh (optional) # --------------------------------------------------------------------------- # Contribute captured packets to the LetsMesh network. -# See https://letsmesh.net for more info. +# See: https://letsmesh.net +# Region: "eu" or "us" -# Enable LetsMesh MQTT endpoint LETSMESH_ENABLE=false -# Specify LetsMesh MQTT region ("eu" or "us") LETSMESH_REGION=eu # --------------------------------------------------------------------------- # MeshRank (optional) # --------------------------------------------------------------------------- # Contribute captured packets to the MeshRank. -# See https://meshrank.net/become-an-observer for more info. +# See: https://meshrank.net/become-an-observer -# Enable MeshRank MQTT endpoint MESHRANK_ENABLE=false -# Specify MeshRank MQTT configuration MESHRANK_UPLINK_KEY= # --------------------------------------------------------------------------- -# Community Hub MQTT Broker (required) +# Custom MQTT Endpoint (optional) # --------------------------------------------------------------------------- -# Your community MeshCore Hub's MQTT broker. Captured packets are sent here -# for your local network dashboard. +# Contribute captured packets to a custom MQTT broker. -# Enable MeshCore Hub MQTT endpoint -MESHCOREHUB_ENABLE=false -# Specify MeshCore Hub MQTT credentials/configuration -MESHCOREHUB_MQTT_HOST=mqtt.example.com -MESHCOREHUB_MQTT_PORT=443 -MESHCOREHUB_MQTT_TLS=true -MESHCOREHUB_MQTT_AUDIENCE=mqtt.example.com +# CUSTOM_ENABLE=false +# CUSTOM_MQTT_SERVER= +# CUSTOM_MQTT_PORT= +# CUSTOM_MQTT_USE_TLS= +# CUSTOM_MQTT_TLS_VERIFY= +# CUSTOM_MQTT_USERNAME= +# CUSTOM_MQTT_PASSWORD= +# CUSTOM_MQTT_KEEPALIVE= +# CUSTOM_MQTT_TOPIC_PACKETS= +# CUSTOM_MQTT_TOPIC_STATUS= diff --git a/contrib/packetcapture/docker-compose.yml b/contrib/packetcapture/docker-compose.yml index 80d846f..8d1cf7c 100644 --- a/contrib/packetcapture/docker-compose.yml +++ b/contrib/packetcapture/docker-compose.yml @@ -9,41 +9,54 @@ services: volumes: - data:/app/data environment: + # Connection - PACKETCAPTURE_CONNECTION_TYPE=${CONNECTION_TYPE:-serial} - PACKETCAPTURE_SERIAL_PORTS=${SERIAL_PORT:-/dev/ttyUSB0} - # MQTT Broker 1 - LetsMesh Analyzer - - PACKETCAPTURE_MQTT1_ENABLED=${LETSMESH_ENABLE:-false} - - PACKETCAPTURE_MQTT1_SERVER=mqtt-${LETSMESH_REGION:-eu}-v1.letsmesh.net - - PACKETCAPTURE_MQTT1_PORT=443 - - PACKETCAPTURE_MQTT1_TRANSPORT=websockets - - PACKETCAPTURE_MQTT1_USE_TLS=true - - PACKETCAPTURE_MQTT1_USE_AUTH_TOKEN=true - - PACKETCAPTURE_MQTT1_TOKEN_AUDIENCE=mqtt-${LETSMESH_REGION:-eu}-v1.letsmesh.net - - PACKETCAPTURE_MQTT1_KEEPALIVE=120 - # MQTT Broker 2 - MeshRank.net - - PACKETCAPTURE_MQTT2_ENABLED=${MESHRANK_ENABLE:-false} - - PACKETCAPTURE_MQTT2_SERVER=meshrank.net - - PACKETCAPTURE_MQTT2_PORT=8883 - - PACKETCAPTURE_MQTT2_TRANSPORT=tcp - - PACKETCAPTURE_MQTT2_USE_TLS=true - - PACKETCAPTURE_MQTT2_TLS_VERIFY=true - - PACKETCAPTURE_MQTT2_KEEPALIVE=120 - - PACKETCAPTURE_MQTT2_TOPIC_PACKETS=meshrank/uplink/${MESHRANK_UPLINK_KEY}/{PUBLIC_KEY}/packets - - PACKETCAPTURE_MQTT2_TOPIC_STATUS=meshrank/uplink/${MESHRANK_UPLINK_KEY}/{PUBLIC_KEY}/status - # MQTT Broker 3 - MeshCore Hub - - PACKETCAPTURE_MQTT3_ENABLED=${MESHCOREHUB_ENABLE:-false} - - PACKETCAPTURE_MQTT3_SERVER=${MESHCOREHUB_MQTT_HOST} - - PACKETCAPTURE_MQTT3_PORT=${MESHCOREHUB_MQTT_PORT:-443} - - PACKETCAPTURE_MQTT3_TOKEN_AUDIENCE=${MESHCOREHUB_MQTT_AUDIENCE} - - PACKETCAPTURE_MQTT3_USE_TLS=${MESHCOREHUB_MQTT_TLS:-true} - - PACKETCAPTURE_MQTT3_TRANSPORT=websockets - - PACKETCAPTURE_MQTT3_USE_AUTH_TOKEN=true - - PACKETCAPTURE_MQTT3_KEEPALIVE=120 # Area/Origin - PACKETCAPTURE_IATA=${IATA:-STN} - PACKETCAPTURE_ORIGIN=${ORIGIN:-observer} # Schedule/Timeouts - PACKETCAPTURE_ADVERT_INTERVAL_HOURS=${ADVERT_INTERVAL_HOURS:-11} + # MQTT Broker 1 - IPNet + - PACKETCAPTURE_MQTT1_ENABLED=${IPNET_ENABLE:-false} + - PACKETCAPTURE_MQTT1_SERVER=mqtt.ipnt.uk + - PACKETCAPTURE_MQTT1_PORT=443 + - PACKETCAPTURE_MQTT1_TOKEN_AUDIENCE=mqtt.ipnt.uk + - PACKETCAPTURE_MQTT1_USE_TLS=true + - PACKETCAPTURE_MQTT1_TRANSPORT=websockets + - PACKETCAPTURE_MQTT1_USE_AUTH_TOKEN=true + - PACKETCAPTURE_MQTT1_KEEPALIVE=120 + # MQTT Broker 2 - LetsMesh Analyzer + - PACKETCAPTURE_MQTT2_ENABLED=${LETSMESH_ENABLE:-false} + - PACKETCAPTURE_MQTT2_SERVER=mqtt-${LETSMESH_REGION:-eu}-v1.letsmesh.net + - PACKETCAPTURE_MQTT2_PORT=443 + - PACKETCAPTURE_MQTT2_TRANSPORT=websockets + - PACKETCAPTURE_MQTT2_USE_TLS=true + - PACKETCAPTURE_MQTT2_USE_AUTH_TOKEN=true + - PACKETCAPTURE_MQTT2_TOKEN_AUDIENCE=mqtt-${LETSMESH_REGION:-eu}-v1.letsmesh.net + - PACKETCAPTURE_MQTT2_KEEPALIVE=120 + # MQTT Broker 3 - MeshRank.net + - PACKETCAPTURE_MQTT3_ENABLED=${MESHRANK_ENABLE:-false} + - PACKETCAPTURE_MQTT3_SERVER=meshrank.net + - PACKETCAPTURE_MQTT3_PORT=8883 + - PACKETCAPTURE_MQTT3_TRANSPORT=tcp + - PACKETCAPTURE_MQTT3_USE_TLS=true + - PACKETCAPTURE_MQTT3_TLS_VERIFY=true + - PACKETCAPTURE_MQTT3_KEEPALIVE=120 + - PACKETCAPTURE_MQTT3_TOPIC_PACKETS=meshrank/uplink/${MESHRANK_UPLINK_KEY}/{PUBLIC_KEY}/packets + - PACKETCAPTURE_MQTT3_TOPIC_STATUS=meshrank/uplink/${MESHRANK_UPLINK_KEY}/{PUBLIC_KEY}/status + # MQTT Broker 4 - Custom + - PACKETCAPTURE_MQTT4_ENABLED=${CUSTOM_ENABLE:-false} + - PACKETCAPTURE_MQTT4_SERVER=${CUSTOM_MQTT_SERVER} + - PACKETCAPTURE_MQTT4_PORT=${CUSTOM_MQTT_PORT:-8883} + - PACKETCAPTURE_MQTT4_TRANSPORT=${CUSTOM_MQTT_TRANSPORT:-tcp + - PACKETCAPTURE_MQTT4_USE_TLS=${CUSTOM_MQTT_USE_TLS:-true} + - PACKETCAPTURE_MQTT4_TLS_VERIFY=${CUSTOM_MQTT_TLS_VERIFY:-true} + - PACKETCAPTURE_MQTT4_USERNAME=${CUSTOM_MQTT_USERNAME} + - PACKETCAPTURE_MQTT4_PASSWORD=${CUSTOM_MQTT_PASSWORD} + - PACKETCAPTURE_MQTT4_KEEPALIVE=${CUSTOM_MQTT_KEEPALIVE:-120} + - PACKETCAPTURE_MQTT4_TOPIC_PACKETS=${CUSTOM_MQTT_TOPIC_PACKETS} + - PACKETCAPTURE_MQTT4_TOPIC_STATUS=${CUSTOM_MQTT_TOPIC_STATUS} restart: unless-stopped volumes: