Start here
Three steps. You don't need to know anything about Docker: you copy a few lines, paste them, and press Enter.
Before you start
- ⏰ The computer must be on at test time, with Docker running. A Raspberry Pi is ideal, because it stays on. A laptop that's asleep misses the test.
- 📡 Your radio is set up in the Meshtastic app, with the test channel already added. The bot doesn't configure the radio.
- 📵 Close the Meshtastic app during a test. The radio only talks to one program at a time.
1. Install Docker
Docker is a free app that runs the bot for you, so you don't have to install anything else.
- Windows or Mac: install Docker Desktop and open it. If it asks to restart or to install WSL, say yes. Wait until it says Engine running, and leave it open. In its settings, turn on starting when you sign in.
- Raspberry Pi or Linux: paste these lines in the terminal, then
log out and back in:
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER
2. Pick your setup
📁 First, choose where the bot will live. The commands below create a
mesh-test-bot folder inside the folder your terminal is in. That's your
personal folder when you open a new terminal, which is a fine place for it. To use
another folder, go there first with cd and the folder's name. Avoid
Downloads and folders synced to the cloud, such as OneDrive or iCloud.
Don't delete or move this folder. It holds your settings and your reports, and you'll need it whenever you check, change or stop the bot.
A radio without WiFi is usually a RAK4631 or a T-Echo. Open the one that matches you.
📶 Radio with WiFi · Mac, Raspberry Pi or Linux
- Connect the radio to your WiFi in the Meshtastic app, and note its IP
address (like
192.168.1.50). It's usually on the radio's screen, or in your router's list of devices. - Note the test channel's name and number: the first channel in the app is 0, the next is 1, and so on.
- Open the Terminal and paste this line:
curl -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/install.sh | sh - Answer the questions. Press Enter to accept the suggestion in [brackets]; you only need to type the radio's IP, the channel's number and name, and your city.
- Start the bot by pasting these lines. You can ignore the text the installer
showed at the end:
If you chose to set up MeshMonitor, follow the installer's text instead.cd mesh-test-bot docker compose pull docker compose up -d
📶 Radio with WiFi · Windows
- Connect the radio to your WiFi in the Meshtastic app, and note its IP
address (like
192.168.1.50). It's usually on the radio's screen, or in your router's list of devices. - Note the test channel's name and number: the first channel in the app is 0, the next is 1, and so on.
- Open PowerShell from the Start menu and paste these lines. The
last one opens a file in Notepad:
Do this once. If the folder already exists, runmkdir -Force mesh-test-bot\data cd mesh-test-bot curl.exe -fsSLO https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/docker-compose.yml if (!(Test-Path .env)) { curl.exe -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/env.example -o .env } notepad .envcd mesh-test-botand then onlynotepad .env. - In Notepad, change the text after
=on these four lines:MTBOT_HOST(the IP),MTBOT_CHANNEL(the number),MTBOT_CHANNEL_NAMEandMTBOT_PLACE(your city). Save and close. - Back in PowerShell, paste:
docker compose up -d
🔵 Bluetooth-only radio · Raspberry Pi or Linux
This starts three things together: a Bluetooth bridge, MeshMonitor and the bot. Keep the radio within about 10 m of the computer.
First, disconnect your phone from the radio, or turn off the phone's Bluetooth. The radio takes one Bluetooth connection at a time: while your phone holds it, the computer can't find the radio, and the phone can't use it during tests.
- Pair the radio, once. Paste these lines one at a time:
Wait forbluetoothctl agent on default-agent scan onMeshtastic_XXXXand note its address, then, with your own address:
The PIN is on the radio's screen. A radio with no screen usespair AA:BB:CC:DD:EE:FF trust AA:BB:CC:DD:EE:FF exit123456unless you changed it. - Find this computer's IP address. It's the first number this shows, like
192.168.1.60:hostname -I - Download the files and open the settings:
Do this once. If the folder already exists, runmkdir -p mesh-test-bot/data && cd mesh-test-bot curl -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/with-ble.yml -o docker-compose.yml [ -e .env ] || curl -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/ble.env.example -o .env nano .envcd mesh-test-botand then onlynano .env. - Change the five values. For
BLE_ADDRESS, use the radio's address. ForALLOWED_ORIGINS, writehttp://, this computer's IP and:8080, likehttp://192.168.1.60:8080. Then set the channel number, the channel's name and your city. To save and leave nano: Ctrl+O, Enter, Ctrl+X. - Start everything:
docker compose up -d - In a browser, open exactly the address you wrote in
ALLOWED_ORIGINS. Log in withadmin/changemeand change the password. - Go to Dashboard → Sources, edit the radio's source and turn on
Enable Virtual Node, with port
4404and Admin commands off. - Wait a few minutes. In step 3 below,
Startup check FAILEDlines from before this point are normal. The bot keeps retrying until you seeStartup check OK.
Nobody has run this setup with the bot on a real radio yet. If you try it, please tell us how it went. More details.
🔵 Bluetooth-only radio · Windows
Docker Desktop can't reach Bluetooth, so a small Windows app does that part. That app must be running at test time too.
First, disconnect your phone from the radio, or turn off the phone's Bluetooth. The radio takes one Bluetooth connection at a time.
- Pair the radio in Settings → Bluetooth & devices → Add device. The PIN
is on the radio's screen. A radio with no screen uses
123456unless you changed it. Then open the radio in that list and note its Bluetooth address. - Download
meshtastic-ble-bridge.exefrom MeshMonitor's BLE Bridge page and run it. It appears as an icon near the clock. - Right-click the icon and open Settings. Enter the Bluetooth address, leave the port at 4403, turn on Auto-start and click Connect. After restarting the computer, open the app again. If Windows asks about the firewall, don't allow other computers.
- Open PowerShell from the Start menu and paste these lines. The
last one opens a file in Notepad:
Do this once. If the folder already exists, runmkdir -Force mesh-test-bot\data cd mesh-test-bot curl.exe -fsSLO https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/docker-compose.yml if (!(Test-Path .env)) { curl.exe -fsSL https://raw.githubusercontent.com/cunhaax/mesh-test-bot/master/install/env.example -o .env } notepad .envcd mesh-test-botand then onlynotepad .env. - In Notepad, change the
MTBOT_HOSTline toMTBOT_HOST=host.docker.internal. Then change the text after=onMTBOT_CHANNEL(the number),MTBOT_CHANNEL_NAMEandMTBOT_PLACE(your city). Save and close. - Back in PowerShell, paste:
docker compose up -d
Nobody has run this setup with the bot yet. If you try it, please tell us how it went.
🔵 Bluetooth-only radio · Mac
Bluetooth doesn't work here: Docker on a Mac can't reach it, and there's no Mac bridge app. Use a Raspberry Pi if you have one, or connect the radio by USB cable:
- Follow these
steps to start
socat. You need Homebrew to install it. Leave that Terminal window open, including at test time. - In a new Terminal window, follow the WiFi steps for Mac above. When the installer
asks for the radio's IP, type
host.docker.internal.
Nobody has run this setup with the bot yet. If you try it, please tell us how it went.
3. Check it works
From the mesh-test-bot folder, paste the line below. If you opened a new
terminal, go back to the folder first with cd mesh-test-bot (from wherever
you created it). Every docker compose command on this page must run from
that folder.
docker compose logs -f --no-log-prefix bot
Within about a minute you should see Startup check OK. The first line
says when the next session is. Press Ctrl+C to stop watching: the bot keeps running.
If you chose on-demand in the installer, there's no startup check: you'll see
Sending at: instead, and the bot stops when the session ends.
After each session, your report is in the data folder, in
report.txt.
If something goes wrong
- An error mentions the Docker daemon, or "docker" isn't recognised: open Docker Desktop and wait until it's running, or restart the computer. On a Raspberry Pi or Linux, log out and back in.
- The log says
Channel 1 is called 'X', expected 'Y': this is a safety check, so the bot won't transmit. Fix the channel's number or name in.env(see below). - Any other
Startup check FAILED: check the IP address, make sure the radio is on, and close the Meshtastic app. The bot keeps retrying by itself. With MeshMonitor, make sure the Virtual Node is on. - MeshMonitor won't load or log in: the address in your browser must
match
ALLOWED_ORIGINSin.envexactly. - You want to change a setting: from the
mesh-test-botfolder, open the settings withnano .env(Mac, Raspberry Pi, Linux) ornotepad .env(Windows). Then pastedocker compose up -d. - You want to stop the bot: paste
docker compose down. - Still stuck? Open an issue and paste what the check in step 3 shows.