{"id":13404541,"url":"https://github.com/danopstech/starlink","last_synced_at":"2026-01-29T02:43:19.692Z","repository":{"id":37727363,"uuid":"358664499","full_name":"danopstech/starlink","owner":"danopstech","description":"📈 Starlink Monitoring System. Measuring the performance of your Starlink internet connection","archived":false,"fork":false,"pushed_at":"2022-09-01T14:48:13.000Z","size":4742,"stargazers_count":258,"open_issues_count":26,"forks_count":38,"subscribers_count":24,"default_branch":"main","last_synced_at":"2024-07-31T19:44:14.074Z","etag":null,"topics":["docker-compose","grafana","monitoring","observability","prometheus","prometheus-exporter","spacex","starlink"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danopstech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["dwillcocks"]}},"created_at":"2021-04-16T16:51:42.000Z","updated_at":"2024-07-21T01:15:40.000Z","dependencies_parsed_at":"2023-01-17T17:00:47.538Z","dependency_job_id":null,"html_url":"https://github.com/danopstech/starlink","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danopstech%2Fstarlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danopstech%2Fstarlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danopstech%2Fstarlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danopstech%2Fstarlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danopstech","download_url":"https://codeload.github.com/danopstech/starlink/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243554020,"owners_count":20309854,"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":["docker-compose","grafana","monitoring","observability","prometheus","prometheus-exporter","spacex","starlink"],"created_at":"2024-07-30T19:01:46.879Z","updated_at":"2026-01-29T02:43:14.660Z","avatar_url":"https://github.com/danopstech.png","language":null,"funding_links":["https://github.com/sponsors/dwillcocks"],"categories":["Others"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/danopstech/starlink\"\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/logo.png\" alt=\"Logo\" width=\"130\" height=\"130\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eStarlink Monitoring System\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n🛰️ Measuring the performance of your \"Beta\" Starlink internet connection! 📡\n\u003cbr /\u003e\nNot affiliated with or acting on behalf of Starlink™️\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003ca href=\"https://github.com/danopstech/starlink/issues/new?assignees=dwillcocks\u0026labels=bug\u0026template=bug_report.md\u0026title=\"\u003eReport Bug\u003c/a\u003e\n•\n\u003ca href=\"https://github.com/danopstech/starlink/issues/new?assignees=dwillcocks\u0026labels=enhancement\u0026template=feature_request.md\u0026title=\"\u003eRequest Feature\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/danopstech/starlink/blob/main/LICENSE\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/license/danopstech/starlink\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/danopstech/starlink/issues\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/issues/danopstech/starlink\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://docs.docker.com/compose/compose-file/compose-versioning/\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/badge/docker--compose-v3.3-blue\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/prometheus/prometheus/releases\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/badge/prometheus-v2.28.0-%23e6522c\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/grafana/grafana/releases\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/badge/grafana-v8.0.3-%23e6522c\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/prometheus/blackbox_exporter/releases\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/badge/blackbox_exporter-v0.19.0-%23e6522c\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/danopstech/starlink_exporter/releases\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/v/release/danopstech/starlink_exporter?color=orange\u0026label=starlink%20exporter\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/danopstech/speedtest_exporter/releases\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/v/release/danopstech/speedtest_exporter?color=orange\u0026label=speedtest%20exporter\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot1.jpg\" width=\"32%\"/\u003e \n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot2.jpg\" width=\"32%\"/\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot3.jpg\" width=\"32%\"/\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot4.jpg\" width=\"32%\"/\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot5.jpg\" width=\"32%\"/\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/screenshot6.jpg\" width=\"32%\"/\u003e\n\u003c/p\u003e\n\n## 🏗️ Built With\n\n- 🐳 **[Starlink exporter](https://github.com/danopstech/starlink_exporter)** - talks to the Starlink dish via gRPC and exposes metrics in a format Prometheus understands.\n- 🐳 **[Speedtest exporter](https://github.com/danopstech/speedtest_exporter)** - When asked it carries out a ping,upload and download test to [speedtest.net](https://www.speedtest.net/).\n- 🐳 **[Blackbox exporter](https://github.com/prometheus/blackbox_exporter/)** - Carries out high frequency ping tests.\n- 🐳 **[Grafana](https://grafana.com/)** - used to compose observability dashboards.\n- 🐳 **[Prometheus](https://prometheus.io/)** - implements a highly dimensional data model.\n- 🐳 **[Docker-Compose](https://docs.docker.com/compose/)** -  for defining and running multi-container Docker applications.\n\n## 👋 Overview\n\nI hope this project will make it easier for users to monitor their Starlink connection in even more detail, see its performance over time with each beta software release, but most importantly brag about their new satellite base internet to EVERYONE!\n\n**What does this do?**\n1. Collects information from the Starlink dish every 3 seconds such as: signal strength, alarms, obstructions and latency\n2. Runs internet speed tests every 60 minutes (upload, download, ping)\n3. Measures latency to multiple destinations globally every 3 seconds\n4. Stores all the metrics in a local database (Prometheus time series database)\n5. You can then view the metrics on pre-built dashboards or create your own dashboards in Grafana.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/danopstech/starlink/raw/main/.docs/assets/overview.png\" width=\"95%\"/\u003e \n\u003c/p\u003e\n\n⚠️ IMPORTANT: When running; this will carry out speedtests every 60 minutes, which will download and upload a fair amount of data over time. Please bare this in mind if your internet connection fails over to tethered/mobile or a data chargeable supplier when Starlink is not available.\n\n## 🏎️ Quick Start\n\nIf you have good knowledge of the above technologies, possibly a Developer, DevOps Engineer, etc then quick start is for you:\n\n1. Clone the repo and `cd` into your local copy\n2. `docker-compose pull \u0026\u0026 docker-compose up --remove-orphan`\n3. Grafana is on `localhost:3000` (admin/admin)\n4. The others services are on the ports as per the above diagram.\n\n## 🐢 Detailed Start (Slower Start)\n\n### Pre-requisites\nEnsure you install the latest version of docker and docker-compose on your host machine.\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\nTo test you have both installed correctly, open your `Shell or Terminal` and run following commands:\n```bash\n$ docker --version\n```\n```bash\n$ docker-compose --version\n```\n\n### Install\n\nAfter installing the pre-requisites, You need all the files within this Github Repository downloaded to the machine you want to run the monitoring from.\nThis machine must be connected to the same network as the Starlink dish (more then likely the Starlink wifi).\n\n- If you know `git` and have it installed then clone the repository - https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository\n\n- Or use Github desktop - https://desktop.github.com/\n\n- Or if you don't know `git` and/or don't want to install it then you can download the files as a [zip here](https://github.com/danopstech/starlink/archive/refs/heads/main.zip) or from clicking the green code button (top right)\n\n\u003e 💡 Please **Star** and **Watch** the repository to hopefully get updates as new features are added\n\nQuick overview of the file structure you now have locally (for information only, you don't really need to know this):\n```bash\nstarlink\n├── .docs                      # Extra docs and images\n├── config                     # Configuration for each service\n│   ├── grafana            \n│   │   └── provisioning       \n│   │        ├── dashboards    # The preloaded dashboards\n│   │        └── datasources   # The preloaded config to talk with prometheus\n│   ├── prometheus             # Prometheus config file\n│   └── blackbox               # Blackbox exporter config file\n├── data                       # Persistent data\n│    ├── grafana               # Grafana will store its running files here\n│    └── prometheus            # Prometheus will store its running files here\n└── docker-compose.yaml        # Defines all the applications to run\n```\n\n### Setup\n\nOpen a terminal again and `cd` into the directory of your local copy. we will start all the services using Docker Compose and see logs on the terminal. The logs should quieten down, then your ready to read the \"usage\" section.\n\n```bash\n$ cd \u003cpath-to-your-copy\u003e\n$ docker-compose pull \u0026\u0026 docker-compose up --remove-orphan\n```\n\n### Upgrading\n\nThe Docker Compose file will run the latest versions of all the applications. To upgrade you need to pull the new image versions and then restart the current running ones. \n\nAs we ran the original `docker-compose up` in the foreground, so we could watch the logs. Your need to open a new terminal and `cd` to the repository directory.\n\n```bash\n$ docker-compose pull\n$ docker-compose restart\n```\n\n### Stopping\n\nTo stop you can `ctrl-c` the foreground task in the original terminal and then:\n```bash\n$ docker-compose down\n```\n\n## 📈 Usage (from the browser)\n\n**Grafana:** \n- This is where the pretty graphs are\n- Access via your browser at [http://localhost:3000](http://localhost:3000)\n- The username and password is \"admin\" (no need to change it, its only local)\n- Pre-loaded dashboards are Starlink, Speedtest, Ping\n\n**Prometheus**\n- If you know [promQL](https://prometheus.io/docs/prometheus/latest/querying/basics/), this is where you can create adhoc queries\n- Access via your browser at [http://localhost:9090](http://localhost:9090)\n- You can check the state of the exporters [here](http://localhost:9090/targets)\n\n**Starlink Exporter**\n- Standard usage there is no need to visit this\n- Access via your browser at [http://localhost:9817](http://localhost:9817)\n- `/metrics` link will get the latest metrics from the Starlink dish\n- `/health` link shows you the gRPC connection state to the dish\n\n**Speedtest Exporter**\n- Standard usage there is no need to visit this\n- Access via your browser at [http://localhost:9092](http://localhost:9092)\n- `/metrics` link takes 40 seconds to load as it carries out a speedtest\n- You might get an error `Limit of concurrent requests reached (1), try again later.` this means a speedtest is already running\n- `/health` link shows you if it can reach the internet\n\n**Blackbox Exporter**\n- Standard usage there is no need to visit this\n- Access via your browser at [http://localhost:9115](http://localhost:9115)\n- Recent probes table shows you past ping test details\n\n## 📖 Extras\n### Running versioned images\n\nIf you would like more control over which versions of each image to run please visit: [Moving to versioned releases](https://github.com/danopstech/starlink/blob/main/.docs/versioned_releases.md)\n\n### Pushing to a cloud based Grafana account\n\nAs standard all data stays on your local machine in the `data` folder, we **do not** collect your dish metrics centrally. If you would like more information about pushing metrics into your own Grafana cloud account: [Pushing metrics to Grafana cloud](https://github.com/danopstech/starlink/blob/main/.docs/grafana_cloud.md)\n\n## 📍 Roadmap\nSee the open [issues](https://github.com/danopstech/starlink/issues) for a list of proposed features (and known issues).\n\n## 🖋️ License\n[GPL-3.0 License](https://github.com/danopstech/starlink/blob/main/LICENSE)\n\n## 😊 Author\nThis project was created in 2021 by [Dan Willcocks](https://github.com/dwillcocks).\n\n## 👎 Troubleshooting\nSome troubleshooting tips coming soon, until then raise an [issue](https://github.com/danopstech/starlink/issues/new?assignees=dwillcocks\u0026labels=bug\u0026template=bug_report.md\u0026title=).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanopstech%2Fstarlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanopstech%2Fstarlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanopstech%2Fstarlink/lists"}