This Github Speedtest-x project is an extension of LibreSpeed, which is a pretty lightweight speedtest tool. Speedtest-x project uses file datebase to save speedtest results from various users. Thus you can check out different results from various countries/regions.
Features
- Self-hosted lightweight speedtest page
- User speedtest result datasheet
- No MySQL, but lightweight file database
- Use ip.sb to get IP info by default
My Forked Github: https://
Original Author's Github: https://github.com/BadApple9/speedtest-x
Docker Hub Image: https://hub.docker.com/r/badapple9/speedtest-x
Test Sites:
Limitation: Sige in account every 7 days, else your services will be paused in 48 hours.
Docker Run Deployment
One line command to bring your speedtest site up and runnin if you have your docker environment ready.
Else you can check this post for howto set up your docker environment:
Run Docker using docker run command
- docker run -d --name speedtest-x-en -p 9001:80 -it johnyan2/speedtest-x-en
-d:start it as a daemon mode
9001: default mapping internal port 80 to host port 9001
Environment variables :
-e WEBPORT=80: Internal Speedtest-x Docker Web Port . Default is 80.
-e MAX_LOG_COUNT=100: Maximum history numbers for saved test results. Default is 100.
-e IP_SERVICE=ip.sb: Which IP DB service provider( default is ip.sb or ipinfo.io)
-e SAME_IP_MULTI_LOGS=false: If allow save multiple results for same ip. Default is false. but strongly suggest to set it to True
Run Docker with multiple environment variables
- docker run -d -e SAME_IP_MULTI_LOGS=true -e MAX_LOG_COUNT=500 -p 9001:80 -it johnyan2/speedtest-x-en
Speedtest-X Home Page:
Deploy to Own VPS
Not recommended to deploy it to other application platform such as fly.io, since those platforms are having limitation for the outbound/inbound througputs. It will be better for you to know the speed limitation on your VPS before deploying to it.
Speedtest-X Test History Result Page:
Make Docker Support ipv6
If you would like your docker to support IPv6, you can edit /etc/docker/daemon.json
,add following content into file, or create this new file if it doesn't exist.
- {
- "ipv6": true,
- "fixed-cidr-v6": "fd00::/80",
- "experimental": true,
- "ip6tables": true
- }
Deploy Docker to Koyeb Platform
URL: https://www.koyeb.com/Koyeb is a developer-friendly serverless platform to deploy apps globally. No-ops, servers, and infrastructure management. For side-projects, it is $0/month. Free account ,Koyeb is giving you $5.5/month free credit to use, which is enough for two Nano type apps, or one Micro type app.
Price list:
| NANO | MICRO | SMALL | MEDIUM | LARGE | XLARGE |
CPU | 1 | 1 | 1 | 2 | 4 | 8 |
RAM | 256MB | 512MB | 1GB | 2GB | 4GB | 8GB |
DISK | 2.5GB SSD | 5GB SSD | 10GB SSD | 20GB SSD | 40GB SSD | 80GB SSD |
PRICE | $2.7/mo | $5.4/mo | $10.7/mo | $21.4/mo | $42.9/mo | $85.7/mo |
If you have Github account, you can log in with your Github account for free. But you do need provide a valid credit card to enable your free account to use.
After you created and enabled your free account, you should be able to log in and start your Koyeb journey.
Configuration :
Configuration Cont. :
Using your own domain for your Koyeb deployment:
Demo site: fast.51sec.org
Create Own Speedtest Docker Using Dockerfile
mkdir src
cd src
wget https://github.com/51sec/speedtest-x-en/archive/refs/heads/master.zip
unzip master.zip
mv speedtest-x-en/* .
rm master.zip
rm -fr speedtest-x-en
vi Dockerfile
FROM php:7.2-apache
COPY src/ /var/www/html/
$ docker build -t speedtest .
Sending build context to Docker daemon 372.7kB
Step 1/2 : FROM php:7.2-apache
---> c61d277263e1
Step 2/2 : COPY src/ /var/www/html/
---> e25caaefbc8e
Successfully built e25caaefbc8e
Successfully tagged speedtest:latest
$ docker run -dit --name st -p 80:80 speedtest
4aa7d58c485b1599518605c9bce98959cbdcc8c473b5f3807e633620777e706d
$ docker exec -it st /bin/bash
You also can set up a Github action workflow to complete the process making docker image and upload to dockerhub.
No comments