Skip to content

Commit 25f9aa9

Browse files
committed
Add speedtest-tracker service with dedicated PostgreSQL
Scheduled internet speed testing dashboard using linuxserver/speedtest-tracker. Includes dedicated postgres container by default with a shared postgres override.
1 parent 2a0ec8e commit 25f9aa9

4 files changed

Lines changed: 131 additions & 1 deletion

File tree

SERVICES.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Available Services
2-
263 services and counting...
2+
264 services and counting...
33

44
[1](#1)
55
[A](#A)
@@ -300,6 +300,7 @@
300300
- [snapdrop](https://docs.linuxserver.io/images/docker-pairdrop/) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/snapdrop.yml)): PairDrop - Web-based file sharing tool for local networks (Snapdrop fork with improvements)
301301
- [sonarr](https://hub.docker.com/r/linuxserver/sonarr) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/sonarr.yml)): Manages tv show collections and downloads
302302
- [spacebin](https://github.com/lukewhrit/spacebin) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/spacebin.yml)): spacebin: text sharing for the final frontier (Pastebin alternative)
303+
- [speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/speedtest-tracker.yml)): Scheduled internet speed testing dashboard
303304
- [sqliteweb](https://hub.docker.com/r/tomdesinto/sqliteweb/) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/sqliteweb.yml)): Web-based SQLite Database Browser
304305
- [stirling-pdf](https://github.com/Stirling-Tools/Stirling-PDF) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/stirling-pdf.yml)): Container for running stirling pdf, a web-based pdf viewer
305306
- [streaming-search](https://github.com/Colaski/global-streaming-search) ([yml](https://github.com/traefikturkey/onramp/tree/main/services-available/streaming-search.yml)): (Archived Project) Global Streaming Search Service
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Override to use shared PostgreSQL database for speedtest-tracker
2+
# Prerequisites: Enable postgres service first: make enable-service postgres
3+
# Usage: make enable-override speedtest-tracker-shared-postgres && make restart
4+
#
5+
# database: postgres
6+
# database_name: speedtest
7+
8+
services:
9+
speedtest-tracker:
10+
depends_on:
11+
postgres:
12+
condition: service_healthy
13+
environment:
14+
- DB_HOST=postgres
15+
- DB_PORT=5432
16+
- DB_DATABASE=${SPEEDTEST_TRACKER_DB_NAME:-speedtest}
17+
- DB_USERNAME=${SPEEDTEST_TRACKER_DB_USER:-${PG_USER:-admin}}
18+
- DB_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD:-${PG_PASS}}
19+
20+
speedtest-tracker-db:
21+
profiles:
22+
- disabled
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
networks:
2+
traefik:
3+
external: true
4+
5+
# description: Scheduled internet speed testing dashboard
6+
# https://github.com/alexjustesen/speedtest-tracker
7+
# https://docs.linuxserver.io/images/docker-speedtest-tracker/
8+
9+
services:
10+
speedtest-tracker:
11+
image: lscr.io/linuxserver/speedtest-tracker:${SPEEDTEST_TRACKER_DOCKER_TAG:-latest}
12+
env_file:
13+
- ./services-enabled/speedtest-tracker.env
14+
container_name: ${SPEEDTEST_TRACKER_CONTAINER_NAME:-speedtest-tracker}
15+
restart: ${SPEEDTEST_TRACKER_RESTART:-unless-stopped}
16+
networks:
17+
- traefik
18+
depends_on:
19+
speedtest-tracker-db:
20+
condition: service_healthy
21+
volumes:
22+
- ./etc/speedtest-tracker/config:/config
23+
- /etc/localtime:/etc/localtime:ro
24+
environment:
25+
- PUID=${PUID:-1000}
26+
- PGID=${PGID:-1000}
27+
- TZ=${TZ}
28+
- APP_KEY=${SPEEDTEST_TRACKER_APP_KEY}
29+
- APP_URL=https://${SPEEDTEST_TRACKER_HOST_NAME:-speedtest}.${HOST_DOMAIN}
30+
- DB_CONNECTION=pgsql
31+
- DB_HOST=${SPEEDTEST_TRACKER_DB_HOST:-speedtest-tracker-db}
32+
- DB_PORT=${SPEEDTEST_TRACKER_DB_PORT:-5432}
33+
- DB_DATABASE=${SPEEDTEST_TRACKER_DB_NAME:-speedtest}
34+
- DB_USERNAME=${SPEEDTEST_TRACKER_DB_USER:-speedtest}
35+
- DB_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD:-speedtest}
36+
- SPEEDTEST_SCHEDULE=${SPEEDTEST_TRACKER_SCHEDULE:-0 */6 * * *}
37+
- SPEEDTEST_SERVERS=${SPEEDTEST_TRACKER_SERVERS:-}
38+
- DISPLAY_TIMEZONE=${TZ}
39+
- PRUNE_RESULTS_OLDER_THAN=${SPEEDTEST_TRACKER_PRUNE_DAYS:-0}
40+
labels:
41+
- joyride.host.name=${SPEEDTEST_TRACKER_HOST_NAME:-speedtest}.${HOST_DOMAIN}
42+
- traefik.enable=${SPEEDTEST_TRACKER_TRAEFIK_ENABLED:-true}
43+
- traefik.http.routers.speedtest-tracker.entrypoints=websecure
44+
- traefik.http.routers.speedtest-tracker.rule=Host(`${SPEEDTEST_TRACKER_HOST_NAME:-speedtest}.${HOST_DOMAIN}`)
45+
- traefik.http.services.speedtest-tracker.loadbalancer.server.port=80
46+
- com.centurylinklabs.watchtower.enable=${SPEEDTEST_TRACKER_WATCHTOWER_ENABLED:-true}
47+
- autoheal=${SPEEDTEST_TRACKER_AUTOHEAL_ENABLED:-true}
48+
49+
speedtest-tracker-db:
50+
image: postgres:${SPEEDTEST_TRACKER_POSTGRES_TAG:-16-alpine}
51+
env_file:
52+
- ./services-enabled/speedtest-tracker.env
53+
container_name: ${SPEEDTEST_TRACKER_DB_CONTAINER_NAME:-speedtest-tracker-db}
54+
restart: ${SPEEDTEST_TRACKER_RESTART:-unless-stopped}
55+
networks:
56+
- traefik
57+
volumes:
58+
- ./etc/speedtest-tracker/postgres:/var/lib/postgresql/data
59+
environment:
60+
- POSTGRES_DB=${SPEEDTEST_TRACKER_DB_NAME:-speedtest}
61+
- POSTGRES_USER=${SPEEDTEST_TRACKER_DB_USER:-speedtest}
62+
- POSTGRES_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD:-speedtest}
63+
healthcheck:
64+
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-speedtest}"]
65+
interval: 10s
66+
timeout: 5s
67+
retries: 5
68+
start_period: 30s
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
###############################################
2+
# Speedtest Tracker Configuration
3+
#
4+
# Generated from services-scaffold/speedtest-tracker/env.template
5+
# To regenerate: make scaffold-build speedtest-tracker
6+
###############################################
7+
8+
# Docker image tag
9+
SPEEDTEST_TRACKER_DOCKER_TAG=${SPEEDTEST_TRACKER_DOCKER_TAG:-latest}
10+
11+
# Container settings
12+
SPEEDTEST_TRACKER_CONTAINER_NAME=${SPEEDTEST_TRACKER_CONTAINER_NAME:-speedtest-tracker}
13+
SPEEDTEST_TRACKER_RESTART=${SPEEDTEST_TRACKER_RESTART:-unless-stopped}
14+
15+
# App key (required - generate with: echo "base64:$(openssl rand -base64 32)")
16+
SPEEDTEST_TRACKER_APP_KEY=${SPEEDTEST_TRACKER_APP_KEY:-}
17+
18+
# Speedtest settings
19+
# Cron schedule (default: every 6 hours)
20+
SPEEDTEST_TRACKER_SCHEDULE=${SPEEDTEST_TRACKER_SCHEDULE:-0 */6 * * *}
21+
# Comma-separated Ookla server IDs (empty = auto-select nearest)
22+
SPEEDTEST_TRACKER_SERVERS=${SPEEDTEST_TRACKER_SERVERS:-}
23+
# Days to keep results (0 = keep forever)
24+
SPEEDTEST_TRACKER_PRUNE_DAYS=${SPEEDTEST_TRACKER_PRUNE_DAYS:-0}
25+
26+
# Traefik settings
27+
SPEEDTEST_TRACKER_HOST_NAME=${SPEEDTEST_TRACKER_HOST_NAME:-speedtest}
28+
SPEEDTEST_TRACKER_TRAEFIK_ENABLED=${SPEEDTEST_TRACKER_TRAEFIK_ENABLED:-true}
29+
SPEEDTEST_TRACKER_WATCHTOWER_ENABLED=${SPEEDTEST_TRACKER_WATCHTOWER_ENABLED:-true}
30+
SPEEDTEST_TRACKER_AUTOHEAL_ENABLED=${SPEEDTEST_TRACKER_AUTOHEAL_ENABLED:-true}
31+
32+
# PostgreSQL settings (dedicated container by default)
33+
# To use shared postgres: make enable-override speedtest-tracker-shared-postgres
34+
SPEEDTEST_TRACKER_DB_NAME=${SPEEDTEST_TRACKER_DB_NAME:-speedtest}
35+
SPEEDTEST_TRACKER_DB_USER=${SPEEDTEST_TRACKER_DB_USER:-speedtest}
36+
SPEEDTEST_TRACKER_DB_PASSWORD=${SPEEDTEST_TRACKER_DB_PASSWORD:-speedtest}
37+
SPEEDTEST_TRACKER_DB_HOST=${SPEEDTEST_TRACKER_DB_HOST:-speedtest-tracker-db}
38+
SPEEDTEST_TRACKER_DB_PORT=${SPEEDTEST_TRACKER_DB_PORT:-5432}
39+
SPEEDTEST_TRACKER_POSTGRES_TAG=${SPEEDTEST_TRACKER_POSTGRES_TAG:-16-alpine}

0 commit comments

Comments
 (0)