adolfintel/speedtest was last rebuilt 1624 days ago — 4.4 years, the worst in the catalogue. LibreSpeed itself is fine: the project moved to the librespeed org, and LinuxServer.io's build was rebuilt 2 days ago. Chose lscr.io/linuxserver/librespeed over the org's own ghcr.io image specifically because it is on Docker Hub: our tag enumeration and the new staleness signal can query Hub but not ghcr, so this keeps the app visible to the tooling that would catch it going stale again. Not a tag swap. The LSIO image uses their house conventions, so the env block is ported rather than copied: PUID/PGID/TZ (matching bookstack, the catalogue's other LSIO app) and everything under /config instead of /database. MODE, WEBPORT and ENABLE_ID_OBFUSCATION have no equivalent — this image is standalone by design and always serves on 80 internally, which is what our port mapping already assumed. PASSWORD and DB_TYPE keep their names and meaning, so the existing config keys still drive the results page and telemetry. DB_NAME is deliberately left unset: the image picks a path inside /config, and guessing one risks a database sitting outside the volume. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
55 lines
2.7 KiB
YAML
55 lines
2.7 KiB
YAML
networks:
|
|
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
|
external: true
|
|
|
|
services:
|
|
speedtest-service: #LIBREPORTAL|SERVICE_TAG_1|speedtest-service
|
|
container_name: speedtest-service
|
|
image: lscr.io/linuxserver/librespeed:latest #LIBREPORTAL|SPEEDTEST_VERSION_TAG|latest
|
|
restart: unless-stopped
|
|
hostname: speedtest
|
|
# LinuxServer.io build of LibreSpeed — same software, maintained. Their
|
|
# images take PUID/PGID (matching the other LSIO app in the catalogue,
|
|
# bookstack) and keep everything under /config. MODE, WEBPORT and
|
|
# ENABLE_ID_OBFUSCATION have no equivalent here: this image is standalone
|
|
# by design and always serves on 80 internally.
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA
|
|
# Guards the results page at /results/stats.php, same as before.
|
|
- PASSWORD=SPEEDTEST_PASSWORD_DATA #LIBREPORTAL|SPEEDTEST_PASSWORD_TAG|SPEEDTEST_PASSWORD_DATA
|
|
# Setting a DB type is what turns telemetry on. DB_NAME is deliberately
|
|
# left unset so the image picks its own path inside /config — guessing one
|
|
# risks a database that silently is not persisted by the volume below.
|
|
- DB_TYPE=sqlite
|
|
# GLUETUN_OFF_BEGIN
|
|
ports:
|
|
- "PORTS_DATA_1" #LIBREPORTAL|PORTS_TAG_1|PORTS_DATA_1
|
|
# GLUETUN_OFF_END
|
|
labels:
|
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
|
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA
|
|
# TRAEFIK_PORT_1_BEGIN
|
|
traefik.http.routers.speedtest-service.entrypoints: web,websecure
|
|
traefik.http.routers.speedtest-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1
|
|
traefik.http.routers.speedtest-service.tls: true
|
|
traefik.http.routers.speedtest-service.tls.certresolver: production
|
|
traefik.http.services.speedtest-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1
|
|
traefik.http.routers.speedtest-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1
|
|
# TRAEFIK_PORT_1_END
|
|
healthcheck:
|
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
|
volumes:
|
|
- SOCKET_DATA #LIBREPORTAL|SOCKET_TAG|SOCKET_DATA
|
|
- ./config:/config
|
|
# GLUETUN_OFF_BEGIN
|
|
networks:
|
|
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
|
ipv4_address: IP_DATA_1 #LIBREPORTAL|IP_TAG_1|IP_DATA_1
|
|
# GLUETUN_OFF_END
|
|
# GLUETUN_ON_BEGIN
|
|
# network_mode: "container:gluetun-service"
|
|
# GLUETUN_ON_END
|