github Yeraze/meshmonitor v3.0.0
v3.0.0 "MultiDatabase"

5 hours ago

MeshMonitor v3.0.0 "MultiDatabase"

MeshMonitor 3.0.0 is a major release introducing multi-database support, allowing you to choose between SQLite (default), PostgreSQL, or MySQL/MariaDB as your database backend.

๐Ÿ“š Documentation


โœจ Highlights

  • PostgreSQL and MySQL/MariaDB Support - Enterprise-ready database options with full feature parity
  • Database Migration Tool - Seamlessly migrate your existing SQLite database to PostgreSQL or MySQL
  • Customizable Tapback Reactions - Configure your own set of emoji reactions
  • Script Metadata Support - Enhanced UI display for user scripts with descriptions and icons
  • Auto-Traceroute for All Databases - PostgreSQL and MySQL now support automatic traceroute functionality
  • PKI Key Management - Automatic detection and repair of PKI key mismatches

โš ๏ธ Breaking Changes

Database Architecture

  • All database methods are now async to support multiple database backends
  • If you have custom integrations using the database API, update to use the new async methods

Node.js Requirements

  • Node 18 is no longer officially supported
  • Minimum recommended version: Node 20.x
  • Officially tested on: Node 20.x and 22.x

๐Ÿš€ Major Features

Multi-Database Support

  • #1460 - PostgreSQL and MySQL Database Support
  • #1404 - PostgreSQL support as optional database backend
  • #1405 - MySQL/MariaDB support as database backend

Configure via DATABASE_URL environment variable:

# PostgreSQL
DATABASE_URL=postgres://user:password@host:5432/meshmonitor

# MySQL/MariaDB
DATABASE_URL=mysql://user:password@host:3306/meshmonitor

# SQLite (default - no configuration needed)

Database Migration & Compatibility

  • #1489 - PostgreSQL/MySQL support for auto-traceroute
  • #1485 - PostgreSQL column type migration fixes
  • #1473 - PostgreSQL/MySQL support for API token management
  • #1440 - PostgreSQL/MySQL support for sync database methods
  • #1438 - Async methods for traceroute log and audit
  • #1436 - Updated tests for async database methods
  • #1412 - PostgreSQL/MySQL cache sync for node modifications

New Features

  • #1482 - Customizable tapback emoji reactions
  • #1492 - Script metadata support for enhanced UI display
  • #1435 - Show channel ID for encrypted packets
  • #1439 - Show session passkey status for remote nodes
  • #1444 - Add uptimeSeconds to v1 nodes API
  • #1403 - Battery status monitor auto-responder script
  • #1396 - Security configuration section on Device page
  • #1394 - Request neighbor info from remote nodes
  • #1389 - Node Hops Calculation setting
  • #1387 - Node opacity dimming based on last heard time
  • #1379 - Display last traceroute in node popup on map
  • #1377 - GPS accuracy circles on map
  • #1376 - Filter CLIENT_MUTE from relay modal
  • #1367 - GPS satellites in view as telemetry graph
  • #1357 - PUID/PGID environment variable support for Docker
  • #1352 - Navigate to channel/DM from push notifications
  • #1349 - Auto key management for PKI key mismatch repair
  • #1348 - Detect and display PKI key mismatch errors
  • #1329 - Log outgoing mesh commands to Packet Monitor
  • #1325 - Automated database maintenance feature
  • #1398 - Display MQTT indicator for unknown SNR in traceroutes

๐Ÿ› Bug Fixes

Database & Backend

  • #1491 - Prevent PKI key corruption from addContact messages
  • #1483 - Wait for database initialization before accepting requests
  • #1479 - Fix DM routing, SQLite schema, and purge validation
  • #1477 - Add logging for mark-as-read operations
  • #1476 - Convert booleans to integers for SQLite binding
  • #1461 - Address type safety issues from v3.0 PR review
  • #1445 - Don't send config while radio is restarting
  • #1441 - Include reset-admin.mjs script in Docker image
  • #1395 - Improve Remote Admin config load reliability
  • #1393 - Add detection and logging for virtual node ID mismatches
  • #1385 - Correct RX/TX direction for packets from local node
  • #1381 - Use precision_bits for accuracy circles
  • #1359 - Filter out internal ADMIN_APP and ROUTING_APP packets
  • #1353 - Auto Responder replies now work on channels
  • #1347 - Cache telemetry types to reduce poll latency
  • #1346 - Use WebSocket message data directly
  • #1343 - Delete broadcast messages when purging node
  • #1334 - Consistent nullish coalescing for txEnabled
  • #1333 - Add missing txEnabled fields to Remote Admin LoRa config

Frontend & UI

  • #1494 - Clarify device-reported node counts in graph labels
  • #1486 - Show most recent message timestamp in Recent Activity
  • #1480 - Fix orphaned security issue details display
  • #1451 - Remove duplicate tray icon on Windows
  • #1448 - Set default height for messages container
  • #1417 - Improve push notification scroll to message
  • #1419 - Handle empty/corrupted desktop config files

Networking & CORS

  • #1466 - Correct IP address byte order for static WiFi config
  • #1465 - Allow X-CSRF-Token header in CORS configuration

Internationalization

  • #1467 - Update purge warning to include local database
  • #1450 - Add missing channel edit translations
  • #1421 - Add missing channel config translations
  • #1402 - Correct incomplete githubPath URLs in scripts gallery

๐Ÿ“– Documentation

  • #1481 - Add WX Weather Alerts and Carrier Outage scripts to gallery
  • #1418 - Add Indiana Mesh to site gallery
  • #1392 - Add Radio Identity + QTH script to gallery
  • #1363 - Fix MESHTASTIC_STALE_CONNECTION_TIMEOUT default value
  • #1361 - Update documentation for protocol constants
  • #1320 - Fix meshtasticd documentation with correct CLI options

๐ŸŒ Translations

Thanks to our translation community on Hosted Weblate:


๐Ÿ”ง Infrastructure

  • #1360 - Extract Meshtastic protocol constants to shared file
  • #1457 - Use npm install instead of npm ci in CI
  • #1456 - Add --legacy-peer-deps to npm ci commands

๐Ÿ“ฆ Migration Guide

Upgrading from v2.x

  1. Backup your database before upgrading
  2. The existing SQLite database will continue to work without changes
  3. To migrate to PostgreSQL or MySQL, use the migration tool:
    # Set up target database
    export DATABASE_URL=postgres://user:password@host:5432/meshmonitor
    
    # Run migration
    npm run migrate-db -- --from sqlite:/data/meshmonitor.db --to $DATABASE_URL

See the Database Migration Guide for detailed instructions.


๐Ÿ™ Contributors

Thanks to all contributors who made this release possible, including:

  • The MeshMonitor core team
  • Translation contributors via Hosted Weblate
  • Community bug reporters and testers

Full Changelog: v2.22.0...v3.0.0


Proxmox LXC Template

This release includes a Proxmox-compatible LXC container template for MeshMonitor.

Installation

  1. Download the .tar.gz template file
  2. Verify the SHA256 checksum (optional but recommended)
  3. Upload to your Proxmox server: scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/
  4. Create a new LXC container from the template via Proxmox web UI
  5. Configure /etc/meshmonitor/meshmonitor.env with your Meshtastic node IP
  6. Start the container and access the web UI on port 8080

Documentation

See the Proxmox LXC Deployment Guide for detailed instructions.

Limitations

  • Auto-upgrade feature is not supported in LXC deployments
  • Manual updates required (download new template for each version)
  • Community-supported (Docker remains the primary deployment method)

๐Ÿš€ MeshMonitor v3.0.0

๐Ÿ“ฆ Installation

Docker (recommended):

docker run -d \
  --name meshmonitor \
  -p 8080:3001 \
  -v meshmonitor-data:/data \
  ghcr.io/Yeraze/meshmonitor:3.0.0

๐Ÿงช Testing

โœ… All tests passed
โœ… TypeScript checks passed
โœ… Docker images built for linux/amd64, linux/arm64, linux/arm/v7

๐Ÿ“‹ Changes

See commit history for detailed changes.

Don't miss a new meshmonitor release

NewReleases is sending notifications on new releases.