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
- Database Migration Guide - How to migrate from SQLite to PostgreSQL/MySQL
- Database Configuration - Detailed setup instructions for all database backends
- Full Documentation - Complete MeshMonitor 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
- Backup your database before upgrading
- The existing SQLite database will continue to work without changes
- 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
- Download the
.tar.gztemplate file - Verify the SHA256 checksum (optional but recommended)
- Upload to your Proxmox server:
scp meshmonitor-*.tar.gz root@proxmox:/var/lib/vz/template/cache/ - Create a new LXC container from the template via Proxmox web UI
- Configure
/etc/meshmonitor/meshmonitor.envwith your Meshtastic node IP - 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.