MeshDash Easy Installer

Installation Options

Welcome to the MeshDash Installation Tool! This utility helps you quickly set up and configure MeshDash.

Choose your preferred installation method below based on your Operating System or select the manual guide.

Important Notice: The following installer(s) are temporarily disabled: Windows. We apologize for any inconvenience. Please check back later or use an alternative method.

Generate a one-line command to install MeshDash directly on native Debian-based Linux systems (like Ubuntu, Debian).

If you are using a Raspberry Pi, please use the dedicated Raspberry Pi tab. For Windows, use the Windows (WSL) tab.

System Requirements: Python 3.9+ required (installer attempts to install it).

View detailed Python dependencies (auto-installed by install.sh)

Your Meshtastic device must be:

Configured & working (Firmware 2.6+ Recommended)
Connected to the same Wi-Fi network as this computer
MeshDash is in early release. Feedback welcome!

Choose the version to install. Latest is recommended.

The IP address of your Meshtastic device on your local network.

Usually 4403. Change only if you modified the device config.

Use 0.0.0.0 for all network interfaces, or specify an IP (e.g., 127.0.0.1 for local only).

Port to access MeshDash in your browser (e.g., http://your-server-ip:8000).

Starts MeshDash automatically on system boot.

How to use (Linux):

  1. Select desired MeshDash version
  2. Fill in device & server details
  3. Click "Generate Linux Command"
  4. Copy the generated command below
  5. Paste and run it in your Linux terminal

Note: Requires internet access and potentially `sudo` privileges.

Linux command copied to clipboard!

Generate a one-line command to install MeshDash directly on your Raspberry Pi running Raspberry Pi OS (or other compatible Debian-based systems).

Alpha Version: This Raspberry Pi installation path is new and has not been as widely tested as the standard Linux method. Please report any issues.

This method is ideal for dedicated Pi setups acting as MeshDash servers.

System & Hardware Recommendations:
  • OS: Raspberry Pi OS (Legacy/Lite or Desktop) based on Debian Bullseye/Bookworm is recommended. Buster will require Python upgrade (installer attempts this).
  • Python: Python 3.9+ required (installer attempts to install it).
  • Model: Raspberry Pi 3B+ or newer recommended. Pi 4 / Pi 5 offer significantly better performance for larger meshes.
  • RAM: 1GB minimum (Pi 3B+), but 2GB or more recommended for smoother operation.
  • SD Card: Use a reliable Class 10/U1/A1 (or better) SD card, 16GB or larger.
  • Power Supply: A stable, high-quality power supply matched to your Pi model is crucial.
  • Cooling (Optional): For continuous use, especially on Pi 4/5, passive or active cooling is advised.

View detailed Python software dependencies (auto-installed by install.sh)

Your Meshtastic device must be:

Configured & working (Firmware 2.6+ Recommended)
Connected to the same Wi-Fi network as your Raspberry Pi
Mesh Dash is in early release. Feedback welcome!

Choose the version to install. Latest is recommended.

The IP address of your Meshtastic device on your local network.

Usually 4403. Change only if you modified the device config.

Use 0.0.0.0 to listen on all Pi's network interfaces, or specify one IP.

Port to access MeshDash in your browser (e.g., http://raspberrypi.local:8000 or http://PI_IP_ADDRESS:8000).

Starts MeshDash automatically when your Raspberry Pi boots.

How to use (Raspberry Pi):

  1. Select desired MeshDash version
  2. Fill in device & server details
  3. Click "Generate Raspberry Pi Command"
  4. Copy the generated command below
  5. Paste and run it in your Raspberry Pi terminal (SSH or direct)

Note: Requires internet access and potentially `sudo` privileges on the Pi.

Raspberry Pi command copied to clipboard!

Generate `docker-compose.yml` and `Dockerfile` to build and run MeshDash in a container using Docker.

This method utilizes the standard install.sh script inside the container during the build process.

System Requirements: Docker and Docker Compose (v2+ recommended, i.e., `docker compose` command) must be installed on your host machine.

Visit the official Docker website for installation instructions.

Your Meshtastic device must be:

Configured & working (Firmware 2.6+ Recommended)
Connected to the same network reachable by the Docker host machine (container will access it via host network or bridged network).
Mesh Dash is in early release. Feedback welcome!

Choose the version for the Docker image build. Latest recommended.

IP address of your Meshtastic device (must be reachable from the Docker container).

Usually 4403.

The port you'll access MeshDash on your host machine (e.g., http://localhost:8000 or http://DOCKER_HOST_IP:8000). Ensure this port is free on the host. This will also be the internal port the app uses.

How to use (Docker):

  1. Ensure Docker & Docker Compose are installed and running.
  2. Select MeshDash version & fill connection details.
  3. Click "Generate Docker Files".
  4. Create a new empty directory on your host machine (e.g., `mesh-dash-docker`).
  5. Save the generated `Dockerfile` content into a file named exactly `Dockerfile` (no extension) inside that new directory.
  6. Save the generated `docker-compose.yml` content into a file named exactly `docker-compose.yml` inside the same directory.
  7. Open a terminal or command prompt inside that directory.
  8. Run `docker compose build` (or `docker-compose build` if using older compose). This will download the `install.sh` script and run it inside the image. This may take some time. Watch for errors.
  9. Run `docker compose up -d` (or `docker-compose up -d`) to start MeshDash in the background.
  10. Access MeshDash in your browser at `http://<docker-host-ip>:<web-server-port>` (e.g., `http://localhost:8000` if running Docker locally on the default port 8000).
  11. To stop: Run `docker compose down` in the same directory. For persistent data, use `docker compose down --volumes` to also remove named volumes if you wish to start completely fresh.

Note: The Web Server Binding Address inside the container is automatically set to `0.0.0.0` by the `install.sh` script when passed via the `WEBSERVER_PORT` argument in the Dockerfile.

Generate a one-line command to install MeshDash on Windows using the Windows Subsystem for Linux (WSL) with a Debian-based distribution like Ubuntu.

Setting up WSL

Windows Subsystem for Linux (WSL) lets you run a genuine Linux environment directly on Windows. Use Ubuntu (installed by default with the command below) for best compatibility.

  1. Install WSL & Ubuntu: Open PowerShell or Command Prompt as Administrator (Right-click Start -> Terminal (Admin)). Run the command: wsl --install. Follow any prompts. A system restart is usually required.
  2. First-Time Ubuntu Setup: After restarting, find and launch Ubuntu from the Windows Start Menu. It will perform a one-time setup. You'll be prompted to create a Linux username and password (these are separate from your Windows login).
  3. Ready to Install: Once you see the Ubuntu command prompt (e.g., user@hostname:~$), you can proceed with generating and running the installation command below within this Ubuntu terminal.

Note: If `wsl --install` doesn't install Ubuntu, use wsl --install -d Ubuntu in an Admin terminal first. You can check installed distributions with wsl -l -v.

System Requirements (within WSL): Python 3.9+ required (installer attempts to install it in the WSL environment).

View detailed Python dependencies (auto-installed by install.sh)

Your Meshtastic device must be:

Configured & working (Firmware 2.6+ Recommended)
Connected to the same Wi-Fi network as your Windows computer (WSL shares the host's network).
Mesh Dash is in early release. Feedback welcome!

Choose the version to install inside WSL. Latest is recommended.

The IP address of your Meshtastic device on your local network.

Usually 4403. Change only if you modified the device config.

Use 0.0.0.0 for all network interfaces within WSL, or specify a specific WSL IP.

Port to access MeshDash from your Windows browser (e.g., http://localhost:8000). WSL forwards ports automatically.

Starts MeshDash automatically within WSL. Requires recent WSL versions with systemd enabled (check your WSL config or use sudo systemctl status in WSL to verify). Select "No" if unsure or running manually is preferred.

How to use (WSL):

  1. Ensure WSL and Ubuntu are set up (see above).
  2. Select desired MeshDash version.
  3. Fill in device & server details.
  4. Click "Generate WSL Install Command".
  5. Copy the generated command below.
  6. Paste and run it inside your Ubuntu WSL terminal.
  7. If systemd was set to 'Yes', it should start automatically after install/reboot. If 'No', navigate to the install dir (e.g., cd ~/mesh-dash in WSL) and run manually (./run_meshdash.sh).
  8. Access in your Windows browser via `http://localhost:<port>` (e.g., http://localhost:8000).

Note: Requires internet access within WSL and potentially `sudo` privileges for the Linux user you created.

WSL install command copied to clipboard!
The Windows (Native) installer is currently down for maintenance. Please check back later or use an alternative method.

Manual MeshDash Installation Guide (for R1.6 Logic)

This guide provides detailed instructions for manually installing MeshDash on Debian-based systems (like Debian, Ubuntu, and Raspberry Pi OS). It mirrors the steps performed by the install.sh (version R1.6) automated installer script. Understanding each step is crucial for a successful manual setup and for troubleshooting.

1. Prerequisites

Before starting, ensure your system has the necessary tools and a compatible Python version. The install.sh script checks for these and attempts to install them. Manually, you'll need to do this yourself.

1.1. Essential System Tools

You'll need sudo (for administrative commands), apt (for package management), wget or curl (for downloading files), and unzip (for extracting archives). You'll also need bash.

Check if they are installed:

command -v sudo
command -v apt
command -v wget
command -v curl
command -v unzip
command -v bash

If any are missing (sudo, apt, bash are usually present), install them:

sudo apt update
sudo apt install wget curl unzip software-properties-common bash

software-properties-common provides the add-apt-repository command, needed if installing Python via the 'deadsnakes' PPA.

1.2. Python Version (Minimum 3.9)

MeshDash R1.6 requires Python 3.9 or newer. Check your default Python 3 version:

python3 --version

If your version is below 3.9 (e.g., Python 3.7 on Debian Buster/Raspberry Pi OS Buster), you must install a newer version. The install.sh script (R1.6) offers to do this using the 'deadsnakes' PPA.

Installing a Newer Python Version (e.g., Python 3.9):

  1. Add the 'deadsnakes' PPA:
    sudo add-apt-repository ppa:deadsnakes/ppa
  2. Update package lists:
    sudo apt update
  3. Install Python 3.9 and its venv package:
    sudo apt install python3.9 python3.9-venv

Always install the corresponding -venv package (e.g., python3.9-venv for python3.9). This is crucial for creating virtual environments. The install.sh script also installs this (e.g., python${MIN_PYTHON_VERSION}-venv).

Verify the new Python version:

python3.9 --version

For the rest of this guide, <your_python_command> will refer to the Python command that meets the 3.9+ requirement (e.g., python3.9 or just python3 if your default is sufficient).

1.3. Essential Python Modules (pip and venv)

Ensure pip (Python package installer) and venv (for virtual environments) are available for your chosen Python interpreter (<your_python_command>).

For pip: It usually comes with Python installs from the 'deadsnakes' PPA or newer system Pythons. Check with:

<your_python_command> -m pip --version

If missing, you might try installing python3-pip (though this might install pip for the system's default python3, not necessarily your newer one) or, more reliably for a specific Python version like 3.9, use ensurepip:

sudo <your_python_command> -m ensurepip --upgrade

For venv: This should have been installed with the pythonX.Y-venv package. Check its availability (it might not have a --version flag but -h for help):

<your_python_command> -m venv -h

The install.sh (R1.6) specifically checks and attempts to install these.

2. Choosing MeshDash Version and Download URL

The install.sh script is set to download version R1.6 (from MESHDASH_VERSION="R1.6"). You can choose the version you wish to install. MeshDash versions are typically available at:

https://meshdash.co.uk/versions/<VERSION_TAG>/mesh-dash.zip

For this guide, we'll assume you're installing version R1.6. The download URL is: https://meshdash.co.uk/versions/R1.6/mesh-dash.zip

3. Installation Steps

3.1. Create Installation Directory

The install.sh script creates a subdirectory named mesh-dash (from INSTALL_SUBDIR="mesh-dash") in the directory where the script is run. Create this directory, for example, in your home directory:

mkdir ~/mesh-dash
cd ~/mesh-dash

All subsequent commands assume you are in this ~/mesh-dash directory.

3.2. Download Application Archive

Download the MeshDash R1.6 ZIP file:

wget https://meshdash.co.uk/versions/R1.6/mesh-dash.zip

3.3. Extract Application Archive

Extract the downloaded ZIP file:

unzip mesh-dash.zip

This should extract files into the current directory. Verify that key files are present: meshtastic_dashboard.py, requirements.txt, mesh_dash_tools.sh, and a static directory.

3.4. Create .new file in static directory

The install.sh script creates a marker file. If the static directory was extracted:

if [ -d "static" ]; then
    touch static/.new
    echo "Created static/.new marker file."
else
    echo "Warning: 'static' directory not found after unzipping. Cannot create .new file."
fi

3.5. Set Permissions for Tools Script

If mesh_dash_tools.sh exists, make it executable:

if [ -f mesh_dash_tools.sh ]; then
    chmod +x mesh_dash_tools.sh
    echo "mesh_dash_tools.sh made executable."
fi

3.6. Create Python Virtual Environment

Use your chosen Python command (<your_python_command>) to create the venv named mesh-dash_venv (from VENV_DIR in script):

<your_python_command> -m venv mesh-dash_venv

3.7. Activate Virtual Environment and Install Dependencies

Activate the venv:

source mesh-dash_venv/bin/activate

Your shell prompt should change. Now, upgrade pip and install dependencies from requirements.txt:

pip install --upgrade pip
pip install -r requirements.txt

This might take a few minutes. Afterwards, you can deactivate for now:

deactivate

4. Configuration

MeshDash R1.6 uses a configuration file named .mesh-dash_config. Create this file in your installation directory (~/mesh-dash):

nano .mesh-dash_config

Paste the following content, carefully replacing placeholders. This matches the structure generated by the R1.6 install.sh:

# MeshDash Configuration File

MESHTASTIC_HOST="YOUR_DEVICE_IP"
MESHTASTIC_PORT="4403"

WEBSERVER_HOST="0.0.0.0"
WEBSERVER_PORT="8000"

LOG_LEVEL="INFO"
DB_PATH="meshtastic_data.db"
MAX_PACKETS_MEMORY=200
HISTORY_DAYS="30"

SEND_LOCAL_NODE_LOCATION=false
SEND_OTHER_NODES_LOCATION=false
COMMUNITY_API=false
LOCATION_OFFSET_ENABLED=false
LOCATION_OFFSET_METERS=0.0

AUTH_TOKEN_EXPIRE_MINUTES=30

INITIAL_ADMIN_USERNAME=""
INITIAL_ADMIN_PASSWORD=""

INSTALLED_VERSION="R1.6"

# --- Informational comments from installer ---
# Python command used during installation for venv creation: <your_python_command>
# Python version detected during installation: <your_python_version_detected>

Crucial: Replace YOUR_DEVICE_IP with the actual IP of your Meshtastic device. Adjust WEBSERVER_PORT if needed. The INITIAL_ADMIN_USERNAME and INITIAL_ADMIN_PASSWORD can be set here if you want the application to create an admin user on its first run (the application should then clear these from the config). If left blank, no initial admin is created this way.

Save and close the file.

5. Generating a Manual Run Script

Create run_meshdash.sh in your installation directory (~/mesh-dash):

nano run_meshdash.sh

Paste the following (from R1.6 install.sh logic):

#!/bin/bash
# Run script for MeshDash - Generated by install.sh on $(date)

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

CONFIG_FILE="$SCRIPT_DIR/.mesh-dash_config"
VENV_PATH="$SCRIPT_DIR/mesh-dash_venv"
PYTHON_EXEC="$VENV_PATH/bin/python"
MAIN_APP_SCRIPT="$SCRIPT_DIR/meshtastic_dashboard.py"

RUN_BLUE='\033[0;34m'; RUN_YELLOW='\033[0;33m'; RUN_RED='\033[0;31m'; RUN_BOLD='\033[1m'; RUN_NC='\033[0m'

run_echoinfo() { printf "${RUN_BLUE}[INFO]${RUN_NC} %s\n" "$1"; }
run_echoerror() { printf "${RUN_RED}${RUN_BOLD}[ERROR]${RUN_NC} %s\n" "$1" >&2; }

if [ ! -d "$VENV_PATH" ]; then
    run_echoerror "Virtual environment not found at: $VENV_PATH"
    exit 1
fi
if [ ! -x "$PYTHON_EXEC" ]; then
    run_echoerror "Python executable in virtual environment not found or not executable: $PYTHON_EXEC"
    exit 1
fi
if [ ! -f "$MAIN_APP_SCRIPT" ]; then
    run_echoerror "Main application script not found: $MAIN_APP_SCRIPT"
    exit 1
fi

run_echoinfo "Starting MeshDash..."
run_echoinfo "Using Python: $PYTHON_EXEC"
run_echoinfo "Application working directory: $SCRIPT_DIR"
run_echoinfo "Config file expected at: $CONFIG_FILE (app reads this directly)"
run_echoinfo "Press Ctrl+C to stop the application if running in foreground."

cd "$SCRIPT_DIR" || { run_echoerror "Failed to change directory to $SCRIPT_DIR"; exit 1; }

"$PYTHON_EXEC" "$MAIN_APP_SCRIPT"

RUN_EXIT_CODE=$?
run_echoinfo "MeshDash finished with exit code $RUN_EXIT_CODE."
exit $RUN_EXIT_CODE

Save, close, and make it executable:

chmod +x run_meshdash.sh

6. Running MeshDash Manually

From your installation directory (~/mesh-dash):

./run_meshdash.sh

Access the dashboard via your browser (e.g., http://localhost:8000 or http://<HOST_IP>:8000). Stop with Ctrl+C.

7. Setting up a Systemd Service (Optional)

This allows MeshDash to start on boot. Ensure systemctl is available.

7.1. Determine User and Group

The service should run as your regular user (e.g., pi). Find username: whoami. Find group: id -gn $(whoami).

7.2. Create the Service File

Create /etc/systemd/system/mesh-dash.service with sudo:

sudo nano /etc/systemd/system/mesh-dash.service

Paste, replacing placeholders like your_user, your_group, and full paths:

[Unit]
Description=MeshDash Service (Meshtastic Web Dashboard - vR1.6)
Documentation=https://meshdash.co.uk
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=simple
User=your_user
Group=your_group
WorkingDirectory=/home/your_user/mesh-dash
EnvironmentFile=/home/your_user/mesh-dash/.mesh-dash_config
ExecStart=/home/your_user/mesh-dash/mesh-dash_venv/bin/python /home/your_user/mesh-dash/meshtastic_dashboard.py
Restart=on-failure
RestartSec=10
TimeoutStopSec=30
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Crucial: All paths in WorkingDirectory, EnvironmentFile, and ExecStart must be absolute and correct for your system and username.

Save and close.

7.3. Manage the Service

sudo systemctl daemon-reload
sudo systemctl enable mesh-dash.service
sudo systemctl start mesh-dash.service
sudo systemctl status mesh-dash.service --no-pager
sudo journalctl -u mesh-dash.service -n 50 --no-pager # To check logs

8. Post-Installation

Access the dashboard as described in step 6. If mesh_dash_tools.sh exists, you can use it (often with sudo): cd ~/mesh-dash && sudo ./mesh_dash_tools.sh help.

You can remove the downloaded ZIP: rm ~/mesh-dash/mesh-dash.zip.

This completes the manual installation mirroring the R1.6 script.