๐ MeshMonitor 3.0.0 Release Candidate 1
This release introduces multi-database support, allowing MeshMonitor to run on PostgreSQL or MySQL in addition to the default SQLite backend. This enables enterprise-scale deployments with thousands of nodes.
โจ What's New in 3.0.0
- PostgreSQL Support - Enterprise-grade database for high-volume deployments
- MySQL/MariaDB Support - Alternative for existing MySQL infrastructure
- Database Migration Tool - Migrate existing SQLite data to PostgreSQL or MySQL
- Improved Performance - Optimized queries for large datasets
- Async Database Layer - All database operations are now async-compatible
๐ฆ Database Options
| Database | Best For | Configuration |
|---|---|---|
| SQLite (default) | Home users, Raspberry Pi, small deployments | No configuration needed |
| PostgreSQL | Enterprise, 1000+ nodes, high availability | DATABASE_URL env var
|
| MySQL/MariaDB | Existing MySQL infrastructure | DATABASE_URL env var
|
๐ Migration Instructions
โ ๏ธ Before You Begin
IMPORTANT: Back up your SQLite database before migrating!
# Create a backup of your SQLite database
cp /path/to/meshmonitor/data/meshmonitor.db /path/to/backup/meshmonitor.db.backup๐ PostgreSQL Migration
Step 1: Stop MeshMonitor
docker compose downStep 2: Update docker-compose.yml
Add the PostgreSQL service and update the MeshMonitor service:
services:
postgres:
image: postgres:16-alpine
container_name: meshmonitor-postgres
restart: unless-stopped
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=meshmonitor
- POSTGRES_USER=meshmonitor
- POSTGRES_PASSWORD=your_secure_password_here
- TZ=America/New_York
healthcheck:
test: ["CMD-SHELL", "pg_isready -U meshmonitor -d meshmonitor"]
interval: 10s
timeout: 5s
retries: 5
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:v3.0.0-RC1
container_name: meshmonitor
depends_on:
postgres:
condition: service_healthy
environment:
# Add this new environment variable:
- DATABASE_URL=postgres://meshmonitor:your_secure_password_here@postgres:5432/meshmonitor
# ... your other existing environment variables ...
volumes:
- meshmonitor-data:/data
# ... rest of your config ...
volumes:
postgres-data:
meshmonitor-data:Step 3: Start PostgreSQL Only
docker compose up -d postgresWait for PostgreSQL to be ready:
docker compose logs -f postgres
# Wait until you see "database system is ready to accept connections"Step 4: Run the Migration
# Run the migration tool from inside the MeshMonitor container
docker compose run --rm meshmonitor npx tsx src/cli/migrate-db.ts \
--from sqlite:/data/meshmonitor.db \
--to postgres://meshmonitor:your_secure_password_here@postgres:5432/meshmonitor \
--verboseYou should see output like:
๐ Migration Progress:
๐ฆ nodes: 615 rows... ๐ welcomedAt: source=true, target=true
โ
615 migrated
๐ฆ messages: 4461 rows... โ
4461 migrated
...
โ
Migration complete!
Step 5: Start MeshMonitor
docker compose up -dStep 6: Verify
Open MeshMonitor in your browser and verify:
- All nodes are present
- Messages are intact
- Settings are preserved
๐ MySQL Migration
Step 1: Stop MeshMonitor
docker compose downStep 2: Update docker-compose.yml
Add the MySQL service and update the MeshMonitor service:
services:
mysql:
image: mysql:8
container_name: meshmonitor-mysql
restart: unless-stopped
volumes:
- mysql-data:/var/lib/mysql
environment:
- MYSQL_DATABASE=meshmonitor
- MYSQL_USER=meshmonitor
- MYSQL_PASSWORD=your_secure_password_here
- MYSQL_ROOT_PASSWORD=your_root_password_here
- TZ=America/New_York
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:v3.0.0-RC1
container_name: meshmonitor
depends_on:
mysql:
condition: service_healthy
environment:
# Add this new environment variable:
- DATABASE_URL=mysql://meshmonitor:your_secure_password_here@mysql:3306/meshmonitor
# ... your other existing environment variables ...
volumes:
- meshmonitor-data:/data
# ... rest of your config ...
volumes:
mysql-data:
meshmonitor-data:Step 3: Start MySQL Only
docker compose up -d mysqlWait for MySQL to be ready:
docker compose logs -f mysql
# Wait until you see "ready for connections"Step 4: Run the Migration
# Run the migration tool from inside the MeshMonitor container
docker compose run --rm meshmonitor npx tsx src/cli/migrate-db.ts \
--from sqlite:/data/meshmonitor.db \
--to mysql://meshmonitor:your_secure_password_here@mysql:3306/meshmonitor \
--verboseStep 5: Start MeshMonitor
docker compose up -dStep 6: Verify
Open MeshMonitor in your browser and verify all data migrated correctly.
๐ง New Environment Variables
| Variable | Description | Example |
|---|---|---|
DATABASE_URL
| Database connection string | postgres://user:pass@host:5432/db or mysql://user:pass@host:3306/db
|
Note: If DATABASE_URL is not set, MeshMonitor will continue to use SQLite (default behavior).
๐ Staying on SQLite
If you don't need PostgreSQL or MySQL, simply update to v3.0.0-RC1 without any configuration changes. SQLite remains the default and requires no additional setup.
# Just update the image tag
docker compose pull
docker compose up -d๐ Known Limitations
- One-way migration: The migration tool copies data from SQLite to PostgreSQL/MySQL. It does not sync changes back.
- Run migration once: Only run the migration tool once. Running it again may cause duplicate data errors.
- Fresh database required: The target PostgreSQL/MySQL database should be empty before migration.
๐ Bug Fixes in This Release
- Fixed migration tool not copying
welcomedAtfield (caused auto-welcome to re-welcome known nodes) - Fixed migration tool not copying
solar_estimatestable (historical solar data was lost) - Fixed Apprise notification preferences migration (wrong column name mapping)
- Added schema qualification to PostgreSQL queries (prevents ambiguous column lookups)
๐ Full Changelog
Full Changelog: v3.0.0-beta9...v3.0.0-RC1
โ ๏ธ This is a Release Candidate
This is a pre-release version. Please test thoroughly before using in production. Report any issues at https://github.com/Yeraze/meshmonitor/issues
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-RC1
๐ฆ Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:3.0.0-RC1๐งช 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.