openspeedtest / docker-image Goto Github PK
View Code? Open in Web Editor NEWOpenSpeedTest Docker Image
OpenSpeedTest Docker Image
I couldn't find any option to change the logging output of openspeedtest, by default it shows me notice messages under Docker. I want to change the log level to error or higher via an environment variable.
How can I do this??
I am trying to set up this docker on my truenas system but am getting the following error. I have the image repository set as "openspeedtest" and the version as "latest" as per the instructions. naturally it is defaulting to download this from docker.io. Am I doing something wrong or is this no longer available as an official docker image?
2024-01-23 14:18:19
Failed to pull image "openspeedtest:latest": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/openspeedtest:latest": failed to resolve reference "docker.io/library/openspeedtest:latest": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
because of VOLUME /var/log/letsencrypt
in Dockerfile
dangling volumes keep created when no volume is set for /var/log/letsencrypt in docker compose file. please remove that statement to avoid this issue.
I installed the Docker image on Ubuntu 22.04.4 LTS and verified my domain on the openspeedtest.com portal, however, no results appear after running multiple tests from various connections. I have tried purging and re-installing with no luck.
Hi all,
I'm having success on all platforms but iOS and iPad OS when using Wi-Fi ๐ and wanted to share my setup / settings. Enjoy!
version: '3.8'
networks:
apps-general:
external: true
paperless-ngx:
external: true
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- '80:80'
volumes:
- /home/ubuntu/nginx-configs/apps.conf:/etc/nginx/conf.d/apps.conf
networks:
- apps-general
version: '3.3'
services:
speedtest:
image: openspeedtest/latest
restart: unless-stopped
container_name: openspeedtest
networks:
- apps-general
networks:
apps-general:
external: true
Partially sourced from this configuration:
server {
listen 80;
server_name speed.apps.home.domain.com;
location / {
# Proxy pass directive to route requests to the OpenSpeedTest container
proxy_pass http://openspeedtest:3000/;
proxy_http_version 1.1; # Ensure HTTP/1.1 is used for this location
# Standard headers for proxying
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Additional headers to ensure correct handling
add_header 'Access-Control-Allow-Origin' "*" always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header Cache-Control 'no-store, no-cache, max-age=0, no-transform';
add_header Last-Modified $date_gmt;
if_modified_since off;
expires off;
etag off;
# Handle OPTIONS requests
if ($request_method = OPTIONS ) {
add_header 'Access-Control-Allow-Credentials' "true";
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Methods' "GET, POST, OPTIONS" always;
return 200;
}
}
}
Could you guys upload versioned Docker images & GitHub releases in addition to the latest
image? (e.g. openspeedtest:1.0.0
)
This would allow me to add OpenSpeedTest to Umbrel with the ability to update it without needing to reinstall it.
See https://github.com/ShonP40/umbrel-apps/tree/master/shonp40-home-assistant as an example
Hi Team,
I am having issues getting the 10gig speeds after installing the openspeedtest image and running the container on the docker engine.
I am able to get the speeds when run against the Ookla speed test server. Is there any specific config file i need to change or any other settings on the container or images that will help me get faster? The hardware that i am using fully supports the 10-gig network.
Thanks
Docker images are usually referenced as org/image:tag
, with org/image:latest
being the latest version of the image. For example, if Google were to have an image called Gmail, then the image would be named google/gmail
.
In OpenSpeedTest's case, the image is currently called latest
, which doesn't make sense. It implies that the application is called 'latest', when in actual fact, the application is called 'openspeedtest'.
This caught me out and I'm an experienced Docker user. I'm sure it's caught others out, too (for example: #18) and especially those who are just getting started with Docker.
It gets even more confusing when someone wants to lock their deployment to a specific version. With the current image name, they would:
docker run ... openspeedtest/latest:v2.0.5 # Is is the latest version I'm running here? Or is it v2.0.5?
Looking at that command, it looks like I'm running the latest version, but I'm not...
The standard solution is to name the image openspeedtest/openspeedtest
, then to users would run which version they wanted to in an expected way:
docker run ... openspeedtest/openspeedtest
docker run ... openspeedtest/openspeedtest:latest
docker run ... openspeedtest/openspeedtest:v2.0.5
I understand that it's suboptimal having 'openspeedtest' essentially duplicated, but this is pretty common in the open source world of Docker images.
So basically, I used the Openspeedtest on local IP it works great, but the speeds come very low when using a proxy like I do with Caddy with Wildcards, that allows me to get automatic https from letsencrypt.
And the speeds are coming up low on both download and upload, but especially for uploads.
I have attacked my Caddyfile config for the openspeedtest part, my docker run code, and both result with LAN IP and Https domain using Caddy and DUckdns
And I have LAN of 100Mbps up and down both, so the one with local IP always comes correct, while for the caddy domain, it comes correct for downloads for 70% of times, but for uploads it is always this low
In many network environments, especially those highly secure or subject to strict Internet access restrictions, using Let's Encrypt challenges based on HTTP or TLS can be difficult or even impossible. These challenges often require opening specific ports on the firewall or unrestricted Internet connectivity, posing significant security and compliance challenges.
Adding support for Let's Encrypt DNS validation challenge to the project. This type of challenge would allow users to verify their domain by adding a specific DNS record, providing an effective and secure alternative to HTTP or TLS-based methods while bypassing Internet access restrictions.
Reference: Let's Encrypt Documentation - DNS Challenge
Hello,
I'm having some issues with using the default ports that are exposed. Once these ports are exposed, there is no way to unexpose them or change them. It is much preferable for a project to choose an arbitrary port (like the standard 80 and 443) for inside the container that users can then map to any port they want outside the container (using the standard docker run -p 80:1234
or docker compose
). By using the EXPOSE command in the docker file, even if you map another port through the docker
command line or in a docker compose
, you still get extra exposed ports which might collide with other containers running.
Line 73 in fc86f9f
Hello,
using container I am getting these LAN speeds to my laptop:
https port is 4568 external, 3001 docker.
from hostname behind nginx proxy manager configured with ketsencryp on npm side:
160 Mbps download
399 Mbps upload
from ip:port https:
297 Mbps download
419 Mbps upload
from speediest.net from laptop:
522 Mbps download
415 Mbps upload
I understand that from speedtest.net I am testing internet speed, but still this seems wrong. openspeedtest seems to give me slow speeds, also big difference between direct ip and behind proxy.
Here my container:
version: '3.3'
services:
speedtest:
environment:
DISABLED - ENABLE_LETSENCRYPT=True
DISABLED - DOMAIN_NAME=DOMAIN
DISABLED - USER_EMAIL=EMAIL
DISABLED - VERIFY_OWNERSHIP="TXT-FILE-CONTENT"
- PUID=1027
- PGID=100
- TZ=Europe/Bucharest
volumes:
- '/etc/localtime:/etc/localtime:ro'
- '/volume1/docker/speedtest/open:/config'
restart: unless-stopped
container_name: openspeedtest
ports:
DISABLED - '4567:3000'
- '4568:3001'
image: openspeedtest/latest
Thanks!
Hi, Just reading through your latest changes and saw the code that allows the changing the http/https ports of the service inside the container.
What is the purpose of this?
My system does not support IPv6, only IPv4. It seems the Nginx config has a listen
directive with IPv6 address hardcoded, which prevents the container from starting:
open-speed-test | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
open-speed-test | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
open-speed-test | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
open-speed-test | 10-listen-on-ipv6-by-default.sh: info: ipv6 not available
open-speed-test | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
open-speed-test | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
open-speed-test | /docker-entrypoint.sh: Configuration complete; ready for start up
open-speed-test | 2022/11/16 05:23:34 [emerg] 1#1: socket() [::]:3000 failed (97: Address family not supported by protocol)
open-speed-test | nginx: [emerg] socket() [::]:3000 failed (97: Address family not supported by protocol)
Is there any way to provide the bind address on run time?
Uncaught TypeError: X.contentDocument is null
, /assets/js/app-2.5.4.min.js:9
.
nightMode is null
, /assets/js/darkmode.js:2
Firefox.
When configuring a container with SET_USER to a desired UID, the container still runs under the default UID of 101.
Hi, Thanks for the awesome tool!
I tried putting this behind a reverse proxy so that I can access it at the path https://my.domain/speedtest
.
I added a traefik stripprefix middleware that strips the /speedtest
from the path and the page loads correctly; however as soon as I click start I get a 'Network Error' as it seems that my browser is attempting to reach https://my.domain/upload?.....
but for it to route through my reverse proxy correctly it needs to be https://my.domain/speedtest/upload?....
instead.
I have a lot of services and I want to setup this speedtest service on many servers so want to avoid creating a new domain for each instance. I do path based routing for many other applications, most work, some don't. The two ways applications seem to support path based routing is to use relative paths and not absolute, or by having an environment variable that allows me to set the application base path, eg. BASE=/speedtest
with the default as BASE=/
.
Would this be something you could support?
Thanks,
Josh
Thanks for this great project.
I was trying to host this project on Huggingface and I noticed that this project has a 30MB file in here.
I do not suppose it is easy/cheap to host it even on Github and I'm not sure if it's a high entropy file. Let's use the following code to generate a new random file:
Dockerfile
...
COPY /files/nginx.key /etc/ssl/
ARG FILE_SIZE=31457280
ARG FILE_NAME=downloading
RUN apk --no-cache add coreutils
RUN dd if=/dev/urandom of=/usr/share/nginx/html/$FILE_NAME bs=1 count=$FILE_SIZE
USER root
...
hello i want to do a speed test from my home server to outside (to see speed)
but i cant do that with a docker img so is there something i need to change sins its always testing my local speed and i want to see my server to outside
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.