Become Part of the Globalping Community: How to Run a Virtual Probe
Tags: opensource, network, networking, devops
Published: 2023-06-12 11:23:22

Globalping is a network testing platform that relies on a globally distributed network of probes hosted by our community to allow anyone to run network commands from anywhere. 

This guide explores why Globalping improves with network size and how you can contribute by running your own virtual probe. If you are familiar with the Globalping platform and interested in making the Internet faster for everyone, this article is for you.


## Why Globalping thrives on community contribution

The [probe network](https://www.jsdelivr.com/globalping) and the [Globalping API](https://github.com/jsdelivr/globalping), which handles measurement requests between users and probes, form the platform's backbone. With them, anybody can run network commands like [ping](https://www.jsdelivr.com/blog/run-ping-test-from-anywhere-globalping/) or traceroute from any corner of the world.

Today, we already have hundreds of active probes around the globe, mainly running inside Docker containers in the homes, offices, and cloud servers of individuals and partner companies.

**What do the probes do?**

The function of these probes is limited and simple: they receive measurement requests from the Globalping API, execute the requested commands, return the results to the API, and await the next event.

So how do more probes make the platform better? 

- **Run commands from anywhere.** With a large and dense global probe network, you can run measurements from _any_ location in the world. With this, we hope to make testing, monitoring, and troubleshooting networks more accessible and easier for network experts and novices alike.
- **Improve web performance.** For example, website owners can test their website or API load times from different regions to optimize their setup or select a better CDN or cloud provider that offers a more reliable and faster global infrastructure.
- **Increase platform availability and reliability.** Not all probes can be online and operational 24/7, and there may be periods of high demand in specific areas. With a big probe network, you can count on getting reliable and consistent results, making Globalping ideal for uptime monitoring and SLA validation.
- **Enhance data quality**. With a large network of probes, anyone can collect more extensive and accurate data globally or in underserved regions, leading to more valuable insights.


## How to set up your own virtual Globalping probe 

In this section, we'll set up a Globalping probe and address frequently asked questions about requirements, limitations, and security considerations.


### Where can I run my probe?

You can run a Globalping probe on any machine that can run a [Docker container](https://www.docker.com/resources/what-container/), supporting x86 and ARM architectures. This could be an unused PC in your office, a Linux server hosted with a cloud provider or even a Raspberry Pi lying around at home. 

And thanks to Docker, you don't have to do anything other than create and launch the container by following our instructions (we'll get to that in a moment).


### What are the requirements and limitations of running a probe?

Our most important requirement is running the probe with a stable internet connection. So when it's online, there should be no packet loss, frequent disconnects, or other regular disruptions that could inaccurately affect the measurement results.

While 24/7 operation is ideal, it's not mandatory – we welcome everyone interested in running a probe, even part-time.

As for limitations, we allow only one probe per IP address and block probes from IP addresses associated with anonymous proxies, Tor, and VPN services or IP addresses that we can't resolve to a physical location.

But at the same time, we don’t require a unique public IP address. Your device can be behind a NAT, and the probe will work correctly since it doesn’t listen on any ports.


### How to set up a probe with Docker

To create and run the Globalping probe container, execute the following [Docker command](https://docs.docker.com/engine/reference/commandline/run/) in your terminal: 

 

    docker run -d --log-driver local --network host --restart=always --name globalping-probe ghcr.io/jsdelivr/globalping-probe

And that's it! Here you can see a probe running in Docker Desktop:


![globalping docker desktop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwh5zo5rjqbbld2dngt5.png)


### Do I need to update my probe?

Docker automatically fetches the latest Globalping probe version from [our GitHub repository](https://github.com/jsdelivr/globalping-probe/pkgs/container/globalping-probe), which doesn’t update the container, only the code it’s running. 

Therefore, we recommend you update the container regularly, but it's completely optional, and all you have to do is run these commands:

    docker pull ghcr.io/jsdelivr/globalping-probe
    docker stop globalping-probe
    docker rm globalping-probe
    docker run -d --log-driver local --network host --restart=always --name globalping-probe ghcr.io/jsdelivr/globalping-probe


### Can I adjust the number of tests?

The number of tests your probe can process depends on the number of CPU cores available and the average CPU usage over the last few minutes. By default, our probes efficiently use available resources, so we recommend you leave it as it is.

However, you can control resource usage if you want. To do so, add the option `--cpuset-cpus="0-2"` to the `docker run` command and set the number of CPUs within the quotes.  


### Is Globalping secure?

Naturally, we don't want anybody to feel uncertain about running a probe or using Globalping for potentially malicious intents. So here are the most important measures we have in place:

- Probes don’t open ports on your device or accept any incoming connections. They only establish a single outbound connection to the Globalping API.
- Our [API is rate-limited](https://github.com/jsdelivr/globalping#limits--wip) to prevent users from abusing the Globalping network. (We limit the number of API requests within a certain time frame).
- Users can't send measurement requests to private IP addresses.
- We actively block domains and IP addresses associated with malware or similar harmful content. For this, we use regularly updated databases of [domains](https://github.com/jsdelivr/globalping/blob/master/src/lib/malware/domain.ts) and [IP addresses](https://github.com/jsdelivr/globalping/blob/master/src/lib/malware/ip.ts). 


### Can I run more than one probe?

If you can host probes in multiple locations and IP addresses, then yes, by all means! We are happy to list anyone who can host at least six probes as donors on GitHub and our website.


## Join the Globalping community

The Globalping platform thrives on the contribution of its community, which powers the extensive probe network. With your invaluable support, we can continuously enhance the platform and provide improved, reliable results to all users free of charge.

Whether you are eager to run a probe or have questions, feedback, or other contributions, we invite you to [join us on GitHub](https://github.com/jsdelivr/globalping-probe). We're happy to have you! 

As an additional opportunity, we offer our GitHub Sponsors to become part of the network by providing a plug-and-play hardware probe.