I recently found out about GlobalPing from a post on a web development forum that I frequent. It’s a service created by the same people that made jsDelivr, the super popular CDN for NPM packages. It allows users to perform network tests (such as ping, mtr, dig, etc.) on probes all over the world through a simple HTTP RESTful API. (A Slack app, GitHub bot, and CLI tool that interact with the API are also available.) It’s very similar to the much older RIPE ATLAS service. At the time of writing, the GlobalPing API is completely free and unauthenticated.
The cool part is that hosting probes is totally decentralized – that is, anyone can host a probe on their own machine at their own location. That’s what makes the GlobalPing network so powerful! There’s currently two ways to host probes: using the Docker container, or using a piece of GlobalPing hardware. Most probes are hosted using the Docker container on an existing machine, rather than the physical GlobalPing probe hardware.
I decided to get my hands on a GlobalPing hardware probe to host at my own place. The fact that the probe was totally free (including shipping) was a great motivator, too.
After ordering the probe from GlobalPing, shipping took about two months to Los Angeles, California. The package originated from Krakow, Poland, which is probably why it took so long. International shipping is slow! However, I didn’t have to deal with any CBP (US customs) inspection forms or fees which was nice.
In the padded envelope was a cardboard box holding a few stickers and the probe itself. A CAT5e ethernet cable, USB-A to Micro USB power cable, SD card loaded with the GlobalPing firmware, and AC adapter were included too. The hardware probe is a simple black metal prism holding a NanoPi SBC, exposing four ports: A SD card slot, a MicroUSB port for power, an ethernet port, and a USB-A port for firmware upgrades.
Although the probe package is meant to be very plug-and-play, I ran into a little caveat: My building isn’t wired with resident-facing ethernet, and the hardware probe doesn’t support Wi-Fi. The SBC doesn’t have an integrated Wi-Fi card, and the firmware also doesn’t have drivers for common USB Wi-Fi dongles.
Luckily, I have a GLiNet AR750 travel router laying around. This little device can act as a Wi-Fi repeater and has three ethernet ports, so it’s capable of essentially turning a wireless internet connection into a wired one. After a little bit of configuration through the router’s admin UI to connect it to my building’s Wi-Fi network, I verified that the ethernet ports worked and I was ready to go.
After that, it was just a matter of hooking the probe up to the router’s ethernet port and plugging in the power supply, which was trivial.
The probe took about three minutes to start up, after which it was ready to handle requests from GlobalPing users!
In the end, I’m glad to have contributed to the GlobalPing project, even if it’s just in the form of plugging in a little box. I can’t wait to see how the project grows and evolves in the future!
Addendum: If you’re curious about how the hardware probe firmware works (or why the probe is secure enough to host at home), the firmware itself is open source! Check it out on GitHub: https://github.com/jsdelivr/globalping-hwprobe