mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-03-04 23:27:46 +01:00
5a39c166a74cf553e1564c3ed1eb41ee100f4d81
Sure! Here's the raw markdown source code (the actual text in Markdown language) that you can copy and paste into a file like README.md:
# Meshview

This project watches a MQTT topic for meshtastic messages, imports them to a
database and has a web UI to view them.
Samples of currently running instances:
- https://meshview.bayme.sh
- https://view.azmsh.net/
---
## Preparing
Requires **`python3.11`** or above.
Clone the repo from GitHub:
```bash
git clone --recurse-submodules https://github.com/pablorevilla-meshtastic/meshview.git
Note
It is important to include the--recurse-submodulesflag or the meshtastic protobufs won't be included.
Create a Python virtual environment:
cd meshview
python3 -m venv env
Install the environment requirements:
./env/bin/pip install -r requirements.txt
Install graphviz:
sudo apt-get install graphviz
Copy sample.config.ini to config.ini:
cp sample.config.ini config.ini
Edit config.ini to match your MQTT and web server settings:
nano config.ini
Example:
# Server Details
[server]
bind = *
port = 8081
tls_cert =
acme_challenge =
# Site Details
[site]
domain = https://www.bayme.sh
title = Bay Area Mesh
message = Real time data from around the bay area and beyond.
# Quick links enablement on site
nodes=True
conversations=True
everything=True
graph_lf=True
graph_ms=True
graph_mf=False
stats=True
net=True
map=True
top=True
# Map structure
map_top_left_lat=39
map_top_left_lon=-123
map_bottom_right_lat=36
map_bottom_right_lon=-121
# Note about how your weekly mesh runs. time and tag used for the system to track.
weekly_net_message= Weekly Mesh check-in. We will keep it open on every Wednesday from 5:00pm for checkins. The message format should be (LONG NAME) - (CITY YOU ARE IN) #MeshNet.
# MQTT Server configuration
[mqtt]
server = mqtt.bayme.sh
topics = ["msh/US/bayarea/#", "msh/US/CA/mrymesh/#", "msh/US/CA/sacvalley" ]
port = 1883
username = meshdev
password = large4cats
# Database configuration
[database]
connection_string = sqlite+aiosqlite:///packets.db
Running Meshview
Start the database:
./env/bin/python startdb.py
Start the web server:
./env/bin/python main.py
Note
You can specify a custom config file with the--configflag:./env/bin/python startdb.py --config /path/to/config.ini ./env/bin/python main.py --config /path/to/config.ini
Running Meshview with mvrun.py
mvrun.pystarts bothstartdb.pyandmain.pyin separate threads and merges the output.- It accepts the
--configargument like the others.
./env/bin/python mvrun.py
Open in your browser: http://localhost:8081/
Setting Up Systemd Services (Ubuntu)
To run Meshview automatically on boot, create systemd services for startdb.py and main.py.
1. Service for startdb.py
Create:
sudo nano /etc/systemd/system/meshview-db.service
Paste:
[Unit]
Description=Meshview Database Initializer
After=network.target
[Service]
Type=simple
WorkingDirectory=/path/to/meshview
ExecStart=/path/to/meshview/env/bin/python /path/to/meshview/startdb.py --config /path/to/meshview/config.ini
Restart=always
RestartSec=5
User=yourusername
[Install]
WantedBy=multi-user.target
2. Service for main.py
Create:
sudo nano /etc/systemd/system/meshview-web.service
Paste:
[Unit]
Description=Meshview Web Server
After=network.target meshview-db.service
[Service]
Type=simple
WorkingDirectory=/path/to/meshview
ExecStart=/path/to/meshview/env/bin/python /path/to/meshview/main.py --config /path/to/meshview/config.ini
Restart=always
RestartSec=5
User=yourusername
[Install]
WantedBy=multi-user.target
3. Enable and start the services
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable meshview-db
sudo systemctl enable meshview-web
sudo systemctl start meshview-db
sudo systemctl start meshview-web
4. Check status
systemctl status meshview-db
systemctl status meshview-web
Tip
After editing.servicefiles, always run:sudo systemctl daemon-reload
Description
Languages
Python
74.3%
HTML
24.7%
Shell
0.4%
JavaScript
0.3%
Dockerfile
0.2%