Scheduled internet speed tests with a web UI.
Educational example only. Review every volume path, port, and credential before you run this. Do not copy production secrets into your wiki or git repo.
_shared/.env for non-secrets, _shared/.secret for credentialsmkdir -p /path/to/docker/stacks/speedtest
cd /path/to/docker/stacks/speedtest
# paste compose.yaml below, then:
docker compose pull
docker compose up -d
---
services:
speedtest-tracker:
image: lscr.io/linuxserver/speedtest-tracker:latest
container_name: speedtest
hostname: speedtest
cap_add:
- NET_RAW
env_file:
- /path/to/docker/stacks/_shared/.env
- /path/to/docker/stacks/_shared/.secret
environment:
APP_KEY: ${ST_APP_KEY}
DB_CONNECTION: mysql
SPEEDTEST_SCHEDULE: "0 * * * *"
DB_HOST: ${ST_DB_HOST}
DB_PORT: ${ST_DB_PORT}
DB_DATABASE: ${ST_DB_DATABASE}
DB_USERNAME: ${ST_DB_USERNAME}
DB_PASSWORD: ${ST_DB_PASSWORD}
APP_DEBUG: "false"
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE:-10} # Max number of log files
max-size: ${DOCKERLOGGING_MAXSIZE:-200k} # Max file size
volumes:
- /path/to/docker/data/speedtest/config:/config
ports:
- 30011:80 # Map host port 8080 to container port 80
restart: unless-stopped
_shared/.secret.${ST_*} placeholders before first boot.