{"id":156884,"date":"2025-02-09T16:06:00","date_gmt":"2025-02-09T16:06:00","guid":{"rendered":"https:\/\/linuxiac.com\/?p=156884"},"modified":"2025-06-20T14:31:10","modified_gmt":"2025-06-20T14:31:10","slug":"how-to-install-speedtest-tracker-to-monitor-your-internet-speed","status":"publish","type":"post","link":"https:\/\/linuxiac.com\/how-to-install-speedtest-tracker-to-monitor-your-internet-speed\/","title":{"rendered":"How to Install Speedtest Tracker to Monitor Your Internet Speed"},"content":{"rendered":"\n<p>We all know that a stable and fast internet connection is essential for everything from streaming to remote work. However, internet speeds can fluctuate, and (sometimes) service providers don&#8217;t always deliver the performance they promise.<\/p>\n\n\n\n<p>That\u2019s where <strong>Speedtest Tracker<\/strong> comes in\u2014a powerful self-hosted tool (written in PHP) that allows you to monitor your internet speed over time, log test results, and identify trends in your connection quality.<\/p>\n\n\n\n<p>The way the application works is pretty straightforward\u2014you set time intervals, and Speedtest Tracker uses the closest <a href=\"https:\/\/www.speedtest.net\" target=\"_blank\" rel=\"noreferrer noopener\">Ookla Speedtest<\/a> servers to measure your internet speed in real time. It captures both download and upload speeds, ping, jitter, etc., logs the results, and displays them in a sleek, easy-to-read dashboard.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02.jpg\"><img decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02-1024x558.jpg\" alt=\"Speedtest Tracker Dashboard\" class=\"wp-image-156968\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02-1024x558.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02-380x207.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02-768x419.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02-1536x837.jpg 1536w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-02.jpg 1899w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Speedtest Tracker Dashboard<\/figcaption><\/figure>\n\n\n\n<p>In this guide, I\u2019ll walk you through the step-by-step process of installing Speedtest Tracker using Docker, making it easy to deploy and manage without complex configurations. So, let&#8217;s get started.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p>Before proceeding with the installation, ensure you have Docker installed on your system. If you don&#8217;t have it, the following guides will help you quickly install it.<\/p>\n\n\n\n<p>Just pick the distribution you are using: <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-ubuntu-24-04-lts\/\">Ubuntu 24.04<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-debian-12-bookworm\/\">Debian 12<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-arch-linux\/\">Arch<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-almalinux-or-rocky-linux\/\">Alma\/Rocky<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-fedora-linux\/\">Fedora<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-linux-mint-22\/\">Linux Mint 22<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-pop-os-22-04\/\">Pop!_OS 22.04<\/a>, or <a href=\"https:\/\/linuxiac.com\/how-to-install-docker-on-raspberry-pi\/\">Raspberry Pi OS<\/a>, and follow the steps to install Docker.<\/p>\n\n\n\n<p>The other essential component is Docker Compose. Recent Docker versions now include Docker Compose by installing the \u201c<em>docker-compose-plugin<\/em>\u201d package. So, install it if it\u2019s not already in your setup.<\/p>\n\n\n\n<p>As another option, you can also get it separately using both commands below. In that case, remember, when running the tool, to type <code>docker-compose<\/code> instead of <code>docker compose<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">sudo curl -L <span class=\"hljs-string\">\"https:\/\/github.com\/docker\/compose\/releases\/latest\/download\/docker-compose-linux-<span class=\"hljs-variable\">$(uname -m)<\/span>\"<\/span> -o \/usr\/<span class=\"hljs-built_in\">local<\/span>\/bin\/docker-compose\nsudo chmod +x \/usr\/<span class=\"hljs-built_in\">local<\/span>\/bin\/docker-compose<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To be clear, Docker Compose only works if you already have Docker installed and running.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Install Speedtest Tracker with Docker<\/h2>\n\n\n\n<p>With everything we need already at hand, the first step is to create the project directory in which our Docker Compose deployment file will be placed. Then switch to it; from here on, you need to execute all commands further down in this guide from that location.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">mkdir speedtest\n<span class=\"hljs-built_in\">cd<\/span> speedtest<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Next, create a \u201c<em><strong>docker-compose.yml<\/strong><\/em>\u201d file, like a blueprint for our Docker setup. This file will define the services, volumes, ports, etc., telling Docker Compose what to do and how to set up the Speedtest Tracker container.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">nano docker-compose.yml<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"YAML\" data-shcb-language-slug=\"yaml\"><span><code class=\"hljs language-yaml\"><span class=\"hljs-attr\">services:<\/span>\n  <span class=\"hljs-attr\">speedtest-tracker:<\/span>\n    <span class=\"hljs-attr\">image:<\/span> <span class=\"hljs-string\">lscr.io\/linuxserver\/speedtest-tracker:latest<\/span>\n    <span class=\"hljs-attr\">restart:<\/span> <span class=\"hljs-string\">unless-stopped<\/span>\n    <span class=\"hljs-attr\">container_name:<\/span> <span class=\"hljs-string\">speedtest<\/span>\n    <span class=\"hljs-attr\">ports:<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-number\">8080<\/span><span class=\"hljs-string\">:80<\/span>\n    <span class=\"hljs-attr\">environment:<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">PUID=1000<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">PGID=1000<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">APP_KEY=&lt;YOUR-APP-KEY-HERE&gt;<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">SPEEDTEST_SCHEDULE=\"0<\/span> <span class=\"hljs-string\">*<\/span> <span class=\"hljs-string\">*<\/span> <span class=\"hljs-string\">*<\/span> <span class=\"hljs-string\">*\"<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">DISPLAY_TIMEZONE=America\/New_York<\/span>\n    <span class=\"hljs-attr\">volumes:<\/span>\n      <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">.\/speedtest:\/config<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">YAML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">yaml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>As you can see, the Docker deployment is pretty simple. The last three lines in the &#8220;<em>environment<\/em>&#8221; section are the key to focus on, so let me break them down for you.<\/p>\n\n\n\n<p>For <strong>&#8220;<em>APP_KEY<\/em><\/strong><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">,&#8221;<\/span> you&#8217;ll need to replace &#8220;<em>&lt;YOUR-APP-KEY-HERE&gt;<\/em>&#8221; with a base64-encoded string. Speedtest Tracker uses this key to encrypt and decrypt data, such as user sessions and other sensitive information. To generate one yourself, just run the command below and copy the output as the value for &#8220;<em>APP_KEY<\/em><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">.&#8221;<\/span><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\"><span class=\"hljs-built_in\">echo<\/span> -n <span class=\"hljs-string\">'base64:'<\/span>; openssl rand -base64 32;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-04.jpg\"><img decoding=\"async\" width=\"955\" height=\"100\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-04.jpg\" alt=\"Generating a base64-encoded string.\" class=\"wp-image-156986\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-04.jpg 955w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-04-380x40.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-04-768x80.jpg 768w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/a><figcaption class=\"wp-element-caption\">Generating a base64-encoded string.<\/figcaption><\/figure>\n\n\n\n<p>Here\u2019s what the final version of the line will look like:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"YAML\" data-shcb-language-slug=\"yaml\"><span><code class=\"hljs language-yaml\"><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">APP_KEY=base64:iZEBvPkqmwN3j7oiEsEjxk+fzeRI2VSfNJbpXDhG1sk=<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">YAML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">yaml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The next setting\u2014and probably the most important one\u2014is &#8220;<strong><em>SPEEDTEST_SCHEDULE<\/em><\/strong>.&#8221; This controls how often the app automatically tests your internet connection&#8217;s speed. It uses the same scheduling syntax as the CRON daemon.<\/p>\n\n\n\n<p>In our deployment above, I\u2019ve set it to run every hour (&#8220;<em>0 * * * *<\/em>&#8220;). But of course, you can adjust it to fit your needs, for example, every half hour (&#8220;<em>*\/30 * * * *<\/em>&#8220;), or say every six hours (&#8220;<em>0 *\/6 * * *<\/em>&#8220;). It&#8217;s all up to your preferences.<\/p>\n\n\n\n<p>If you\u2019re unsure about the exact syntax, don\u2019t worry\u2014we\u2019ve got you covered. Check out our detailed guide, &#8220;<a href=\"https:\/\/linuxiac.com\/how-to-use-cron-and-crontab-on-linux\/\">How to Use Cron on Linux<\/a>,&#8221; which will help you get up to speed in no time.<\/p>\n\n\n\n<p>For the last option, &#8220;<strong><em>DISPLAY_TIMEZONE<\/em><\/strong>,&#8221; set it to your actual one. This ensures that timestamps are shown in your local time. If you have doubts about the correct spelling, <a href=\"https:\/\/www.php.net\/manual\/en\/timezones.php\" target=\"_blank\" rel=\"noreferrer noopener\">check this link<\/a> for a full list of available time zones.<\/p>\n\n\n\n<p>One more useful option to consider\u2014though I don\u2019t use it\u2014is the ability to set a time limit for how long your recorded internet speed statistics are stored before older ones get deleted. So, if you\u2019d like to keep data only for a certain number of days, say the last 30, you can add the following to the &#8220;<em>environment<\/em>&#8221; section of your Docker Compose deployment:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"YAML\" data-shcb-language-slug=\"yaml\"><span><code class=\"hljs language-yaml\"><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">PRUNE_RESULTS_OLDER_THAN=30<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">YAML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">yaml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For a complete list of all the available options in Speedtest Tracker, <a href=\"https:\/\/docs.speedtest-tracker.dev\/getting-started\/environment-variables\" target=\"_blank\" rel=\"noreferrer noopener\">check it out here<\/a>.<\/p>\n\n\n\n<p>Finally, just a quick clarification\u2014as you can see, the application runs on the host&#8217;s port 8080. Since many containerized applications commonly use this port, you might run into an error if something else is already using it. If that happens, just update the port mapping in your Compose file and switch it to any available one, for example, 8181, and you\u2019re good to go.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ports<\/span>:\n  <span class=\"hljs-selector-tag\">-<\/span> 8181<span class=\"hljs-selector-pseudo\">:80<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now, everything is in place, so let&#8217;s run our Docker Compose deployment in the background (detached mode):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">docker compose up -d<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05.jpg\"><img decoding=\"async\" width=\"1024\" height=\"456\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05-1024x456.jpg\" alt=\"Deploying Speedtest Tracker with Docker Compose.\" class=\"wp-image-157016\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05-1024x456.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05-380x169.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05-768x342.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-05.jpg 1052w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Deploying Speedtest Tracker with Docker Compose.<\/figcaption><\/figure>\n\n\n\n<p>So far, so good. Now, let\u2019s move to the most exciting part. Open your browser and navigate to \u201c<strong><em>http:\/\/localhost:8080<\/em><\/strong>\u201d (if you access Speedtest Tracker from the same host) or \u201c<strong><em>http:\/\/&lt;server-ip-address&gt;:8080<\/em><\/strong>\u201c (if you access it remotely). Of course, replace the \u201c<em>&lt;server-ip-address&gt;<\/em>\u201d part with your actual server\u2019s IP address.<\/p>\n\n\n\n<p>Just to mention, if, for some reason, something goes wrong, you can easily figure out what happened by checking the container log with this simple Docker command:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">docker logs speedtest<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>When accessing Speedtest Tracker for the first time, enter the app&#8217;s default username &amp; password (shown below), then hit the &#8220;<em>Sign in<\/em>&#8221; button:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Username: <strong>admin@example.com<\/strong><\/li>\n\n\n\n<li>Password: <strong>password<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06.jpg\"><img decoding=\"async\" width=\"1024\" height=\"662\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06-1024x662.jpg\" alt=\"Initial login to Speedtest Tracker with the default username and password.\" class=\"wp-image-157025\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06-1024x662.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06-380x246.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06-768x497.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-06.jpg 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Initial login to Speedtest Tracker with the default username and password.<\/figcaption><\/figure>\n\n\n\n<p>I recommend changing the default username and password as your first step. To do this, click on your avatar in the top right corner of Speedtest Tracker, then select &#8220;<em>Profile<\/em>&#8221; from the menu that appears.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07.jpg\"><img decoding=\"async\" width=\"1024\" height=\"662\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07-1024x662.jpg\" alt=\"Change the default username and password.\" class=\"wp-image-157031\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07-1024x662.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07-380x246.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07-768x497.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-07.jpg 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Change the default username and password.<\/figcaption><\/figure>\n\n\n\n<p>Enter your preferred new ones (your password must be at least eight characters long) and click the &#8220;<em>Save changes<\/em>&#8221; button to confirm.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08.jpg\"><img decoding=\"async\" width=\"1024\" height=\"665\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08-1024x665.jpg\" alt=\"Change the default username and password.\" class=\"wp-image-157037\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08-1024x665.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08-380x247.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08-768x498.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-08.jpg 1251w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Change the default username and password.<\/figcaption><\/figure>\n\n\n\n<p>And that&#8217;s it. Wait for the interval you set to pass, and the first measurement will appear on the dashboard. If you don&#8217;t want to wait, you can start a test right away\u2014click the &#8220;<em>Speedtest<\/em>&#8221; button in the top right, pick a server from the &#8220;<em>Select Server<\/em>&#8221; dropdown menu, and hit &#8220;<em>Start<\/em>.&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09.jpg\"><img decoding=\"async\" width=\"1024\" height=\"663\" src=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09-1024x663.jpg\" alt=\"Manually start an internet speed test in Speedtest Tracker.\" class=\"wp-image-157043\" srcset=\"https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09-1024x663.jpg 1024w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09-380x246.jpg 380w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09-768x497.jpg 768w, https:\/\/linuxiac.com\/wp-content\/uploads\/2025\/02\/speedtest-tracker-09.jpg 1248w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Manually start an internet speed test in Speedtest Tracker.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>From now on, you\u2019ve got a reliable tool to monitor your internet speed and keep tabs on what your ISP is delivering. But of course, Speedtest Tracker isn\u2019t the only option out there.<\/p>\n\n\n\n<p><a href=\"https:\/\/myspeed.dev\" target=\"_blank\" rel=\"noreferrer noopener\">MySpeed<\/a> is another great alternative, and if you\u2019d rather go with that, <a href=\"https:\/\/linuxiac.com\/keep-track-on-your-internet-speed-with-myspeed\/\">our guide<\/a> will walk you through the setup in no time.<\/p>\n\n\n\n<p>For more detailed information about Speedtest Tracker, I strongly recommend checking the&nbsp;<a href=\"https:\/\/docs.speedtest-tracker.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">official documentation<\/a>&nbsp;or visiting the project\u2019s <a href=\"https:\/\/github.com\/alexjustesen\/speedtest-tracker\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub page<\/a>.<\/p>\n\n\n\n<p>Lastly, if you consider your service to be accessed via the internet, ensure it\u2019s available via a secure HTTPS connection. You can do this by putting the Speedtest Tracker app behind a reverse proxy like <a href=\"https:\/\/linuxiac.com\/reverse-proxy-with-nginx\/\">Nginx<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-set-up-reverse-proxy-with-nginx-proxy-manager\/\">Nginx Proxy Manager<\/a>, <a href=\"https:\/\/linuxiac.com\/how-to-set-up-caddy-as-reverse-proxy\/\">Caddy<\/a>, Traefik, HAProxy, or any other option you prefer.<\/p>\n\n\n\n<p>I hope this guide was helpful. If you have any questions or feedback, feel free to comment below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to install Speedtest Tracker with Docker and monitor your internet speed with real-time results.<\/p>\n","protected":false},"author":10,"featured_media":156887,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4417],"tags":[6027,6030,4980,6293],"class_list":["post-156884","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","category-linux-knowledge","tag-myspeed","tag-network-speed","tag-self-hosted","tag-speedtest"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts\/156884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/comments?post=156884"}],"version-history":[{"count":0,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/posts\/156884\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/media\/156887"}],"wp:attachment":[{"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/media?parent=156884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/categories?post=156884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxiac.com\/wp-json\/wp\/v2\/tags?post=156884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}