So one thing I’ve done to help me find more things to self host or do is think like a prepper. Like…what if my ISP goes out? How can I remotely control my homelab or even trigger Home Assistant events if my ISP is out? I had no idea how to solve this until about 6 months ago when I discovered Meshtastic.
For anyone who doesn’t know: Meshtastic is basically an open-source, public mesh-network. You just buy a cheap ESP32 device, flash it with Meshtastic (They have a SUPER easy web-flasher so you don’t need to be super technical to do it), and connect to it via Bluetooth with your phone and you’re good to go! Then you can send messages to other nodes around you and have fully off-grid communications!
Well, while Meshtastic supports MQTT, that does require at least one end of the connection to have internet access. I wanted a way to SSH into my servers and diagnose or fix things without needing to rely on my ISP at all. Or even trigger things in Home Assistant without having access to any ISP. So, that naturally gave way to the idea of MeshExec.

MeshExec is a little binary that attaches to your serially-connected Meshtastic node, and looks for messages in a specified private channel for aliases to execute. Then it will execute whatever commands you specify and automatically chunk them and send them back through the mesh in a staggered fashion. This chunking is done to both fit inside the max message size that Meshtastic supports, and so that the mesh is not overwhelmed with messages and drops them.
You define the aliases, the shell used to execute the commands, etc. So you can basically use it to do whatever you want over the mesh! I’ve set up a handful of aliases to do simple diagnostics on my homelab servers. Things like restarting docker containers, checking the top 3 processes consuming the most memory, etc.
I decided to use aliases because I figured direct shell access to a server is SUPER dangerous, especially if you accidentally attach the daemon to a public channel.
No idea if this will be useful to anyone else, but I made it as easy to use as possible if anyone does want to use it. Here’s the link to the repo if anyone wants to give it a go.
I just wanted to share how I’ve managed to find a way to further reduce my reliance on big corporations and my love for open-source software!
If anyone decides to give this a try, I’d love to know your thoughts or answer any questions you have!
oh your method was real i thought i was in programmer memes for a second and thought it was going to be

Hey ! With rnode (another firmware for lora devices) you can directly do ip over lora ! So I can basically control my server from 9-10km away (if I stay on the coast) without internet !
Very interesting! Im no longer pursuing Meshtastic – I’m changing over my hardware to run MeshCore now – but this is quite a neat thing you’ve done here.
As an aside, if you later want to have full networking connectivity (Layer 2) using the same style of encoding the data as messages, PPP is what could do that. If transported over Meshtastic, PPP could give you a standard IP network, and on top of that, you could use SSH to securely access your remote machine.
It would probably be very slow, but PPP was also used for dial-up so it’s very accommodating. The limiting factor would be whether the Meshtastic local mesh would be jammed up from so many messages.
Feels just like the tech used in the show Person of Interest. Essentially, to avoid the detection of a supercomputer, the protagonists communicate via VHF mesh network.
So an internet with voluntary transit
Neat idea to use it for this
So an internet
The highest data rate it looks like is supported by LoRa in North America is 21900 bits per second, so you’re talking about 21kbps, or 2.6kBps in a best-case scenario. That’s about half of what an analog telephone system modem could achieve.
It’s going to be pretty bandwidth-constrained, limited in terms of routing traffic around.
I think that the idea of a “public access, zero-admin mesh Internet over the air” isn’t totally crazy, but that it’d probably need to use something like laser links and hardware that can identify and auto-align to other links.
That’s exactly the reason why I made it only work with user-defined aliases. That way it forces you to think of how to cover the most ground command-wise without needing anything interactive or too much response data. It’s slow but it’s functional and that’s really all I wanted from it. I can have scripts on my server that fix things and just invoke them with this.
This is very cool. I didn’t know about Meshtastic or MeshExec.
These guys appear to have a global visualization of the Meshtastic network nodes that they can see.
There is an ongoing issue with meshtastic users where they keep fighting about mqtt and maps of nodes. meshmap.net apparently only shows about 20% of mqtt-reporting nodes.
What is securing those private channels?
Whatever vulnerability there is in that will basically give them root on your home sever right?
They’re encrypted with a PSK encrypted with either AES128 or AES256. It’s built into the Meshtastic firmware so that’s not something I have to handle directly, thankfully!




