{"id":18311780,"url":"https://github.com/firezone/probe","last_synced_at":"2025-07-22T10:39:18.850Z","repository":{"id":247721568,"uuid":"812802280","full_name":"firezone/probe","owner":"firezone","description":"Probe for WireGuard® connectivity","archived":false,"fork":false,"pushed_at":"2025-02-17T19:03:04.000Z","size":1301,"stargazers_count":17,"open_issues_count":9,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T21:08:45.280Z","etag":null,"topics":["blocked","connection-tester","connectivity","elixir","flyio","wireguard"],"latest_commit_sha":null,"homepage":"https://probe.sh","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firezone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-09T23:06:38.000Z","updated_at":"2025-02-24T01:42:10.000Z","dependencies_parsed_at":"2024-07-22T00:21:12.163Z","dependency_job_id":"a3d35684-6d03-4108-93a4-cb8a6ba89727","html_url":"https://github.com/firezone/probe","commit_stats":null,"previous_names":["firezone/probe"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firezone%2Fprobe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firezone%2Fprobe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firezone%2Fprobe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firezone%2Fprobe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firezone","download_url":"https://codeload.github.com/firezone/probe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247383946,"owners_count":20930381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blocked","connection-tester","connectivity","elixir","flyio","wireguard"],"created_at":"2024-11-05T16:20:17.717Z","updated_at":"2025-04-05T18:31:54.290Z","avatar_url":"https://github.com/firezone.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://probe.sh\"\u003e\n    \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./priv/static/images/probe-logo-dark.svg\"\u003e\n    \u003cimg alt=\"Probe logo\" src=\"./priv/static/images/probe-logo-light.svg\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Probe\n\nThis repo contains the application source for Probe, a web application for testing WireGuard® connectivity built by the team behind [Firezone](https://www.github.com/firezone/firezone).\n\n## Update 11/18/24\n\nThe https://probe.sh service has been wound down. If you're looking to self-host Probe, see [our fly.toml](https://github.com/firezone/probe/blob/main/fly.toml) for inspiration.\n\n## How it works\n\n1. When the Probe application boots, it starts an Elixir `gen_udp` server for each WireGuard listen port defined in `config.exs` to listen for incoming UDP payloads on that port.\n1. When a user visits the app, Probe starts a Phoenix LiveView process and generates a unique cryptographic token to use for the test.\n1. When the user runs the script shown, it first sends a request to start the test, followed by a series of UDP payloads, and finally either a `complete` or `cancel` request to end the test.\n1. The `gen_udp` receives these payloads, and if they match one of the four [WireGuard](https://www.wireguard.com) message types, it broadcasts test updates to the LiveView process for that test.\n1. The user is immediately shown the results of the test.\n\n## Contents of this repository\n\n- [`apps/probe`](apps/probe): Phoenix application for the Probe service\n- [`priv/static/scripts`](priv/static/scripts): OS-specific scripts for running the Probe tests, designed to be launched from the web app UI.\n- [`config`](config): Configuration settings for various environments. You can add and remove more ports for testing in the `config.exs` file.\n- [`docker-compose.yml`](docker-compose.yml): Docker Compose file to start required services for local development.\n- [`fly.toml`](fly.toml): Fly.io configuration file for deploying the Probe app.\n- [`Dockerfile`](Dockerfile): Dockerfile for building the Probe app image to run on Fly.io.\n\n## Contributing to Probe\n\nWe welcome any and all contributions to Probe.\nBefore you invest a lot of time into a pull request, however, we recommend [opening an issue](https://www.github.com/firezone/probe/issues/new) to discuss the proposed changes.\nFor small fixes, feel free to open a pull request directly.\n\n### Local development\n\nYou'll need the following pre-requisites to run Probe locally:\n\n1. [Docker](https://docs.docker.com/get-docker/) + Docker Compose for your platform. Docker Desktop should work just fine.\n1. We use [asdf](https://asdf-vm.com) to manage runtime versions for this repository. You can install asdf with `brew install asdf` on macOS.\n1. Install required asdf plugins with `asdf plugin add erlang elixir nodejs`.\n1. Install the required versions of Erlang, Elixir, and Node.js with `asdf install` in the root of this repository.\n1. Install frontend dependencies with `pnpm i --prefix assets`.\n1. Setup remaining dependencies with `mix setup`.\n\nYou're now ready to start a local development environment:\n\n1. `docker compose up -d` to start the required services (PostgreSQL)\n1. Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`\n\nNow you can visit [`localhost:4000`](http://localhost:4000) from your browser to see the Probe service running locally.\n\nTo add or remove ports to use for testing, see `config/config.exs`.\nNote that you'll need to start the probe service with a privileged user (or with `CAP_NET_BIND_SERVICE` capabilities on Linux) to bind to ports below 1024.\n\n### Deployment\n\nThe Firezone team deploys Probe to [Fly.io](https://fly.io) using the [Fly.io CLI](https://fly.io/docs/getting-started/installing-fly/).\n\nYou're welcome to deploy Probe to your own infrastructure for non-commercial purposes.\n\n## Security policy\n\nSee [SECURITY.md](SECURITY.md)\n\n## FAQ\n\nSee https://probe.sh/faq\n\n## License\n\nSee [LICENSE](LICENSE)\n\n## Attribution\n\nWireGuard is a registered trademark of Jason A. Donenfeld.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirezone%2Fprobe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirezone%2Fprobe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirezone%2Fprobe/lists"}