I configured the wrong url for the backend (should be https for my config, but I typed http) so the frontend could not reach the backend. However, it displays the wrong url, where it seems to try to connect to an internal URL, while it should display the configured one.
Below you see in the logs the frondend picked up the configured URL nicely, but the screenshot displays an internal url.
Logs from the frontend:
f1replay-frontend | 2026-03-30T07:50:34.059897833Z Configured API URL: http://teamradio.mydomain.tld
f1replay-frontend | 2026-03-30T07:50:34.359755337Z ▲ Next.js 15.5.14
f1replay-frontend | 2026-03-30T07:50:34.360137417Z - Local: http://localhost:3000
f1replay-frontend | 2026-03-30T07:50:34.360167873Z - Network: http://0.0.0.0:3000
f1replay-frontend | 2026-03-30T07:50:34.360296737Z
f1replay-frontend | 2026-03-30T07:50:34.360359577Z ✓ Starting...
f1replay-frontend | 2026-03-30T07:50:34.468098600Z ✓ Ready in 117ms
Screenshot of the frontend error:

Docker compose:
services:
f1replay-backend:
image: ghcr.io/adn8naiagent/f1replaytiming-backend:latest
container_name: f1replay-backend
environment:
- DATA_DIR=/data
- FRONTEND_URL=http://f1replay.${DOMAIN}
- OPENROUTER_API_KEY=${F1REPLAY_OPENROUTER_API_KEY}
- PORT=8000
networks:
- web
restart: unless-stopped
volumes:
- f1replay-cache:/data/fastf1-cache
- f1replay-data:/data
labels:
- traefik.enable=true
- traefik.http.routers.f1replay-backend.rule=Host(`teamradio.${DOMAIN}`)
- traefik.http.routers.f1replay-backend.entrypoints=websecure
- traefik.http.routers.f1replay-backend.tls.certresolver=letsencrypt
- traefik.http.routers.f1replay-backend.priority=${TRAEFIK_PRIORITY}
- traefik.http.routers.f1replay-backend.middlewares=authentik@file
- traefik.http.services.f1replay-backend.loadbalancer.server.port=8000
f1replay-frontend:
image: ghcr.io/adn8naiagent/f1replaytiming-frontend:latest
container_name: f1replay-frontend
environment:
- NEXT_PUBLIC_API_URL=http://teamradio.${DOMAIN} # <-- Here I screwed up, causing the error
networks:
- web
restart: unless-stopped
labels:
- flame.type=application
- flame.category=Fun and games
- flame.name=F1 Replay Timing
- flame.url=https://f1replay.${DOMAIN}
- flame.icon=flag-checkered
- traefik.enable=true
- traefik.http.routers.f1replay.rule=Host(`f1replay.${DOMAIN}`)
- traefik.http.routers.f1replay.entrypoints=websecure
- traefik.http.routers.f1replay.tls.certresolver=letsencrypt
- traefik.http.routers.f1replay.priority=${TRAEFIK_PRIORITY}
- traefik.http.routers.f1replay.middlewares=authentik@file
- traefik.http.services.f1replay.loadbalancer.server.port=3000services:
f1replay-backend:
image: ghcr.io/adn8naiagent/f1replaytiming-backend:latest
container_name: f1replay-backend
environment:
- DATA_DIR=/data
- FRONTEND_URL=http://f1replay.${DOMAIN}
- OPENROUTER_API_KEY=${F1REPLAY_OPENROUTER_API_KEY}
- PORT=8000
networks:
- web
restart: unless-stopped
volumes:
- f1replay-cache:/data/fastf1-cache
- f1replay-data:/data
labels:
- traefik.enable=true
- traefik.http.routers.f1replay-backend.rule=Host(`teamradio.${DOMAIN}`)
- traefik.http.routers.f1replay-backend.entrypoints=websecure
- traefik.http.routers.f1replay-backend.tls.certresolver=letsencrypt
- traefik.http.routers.f1replay-backend.priority=${TRAEFIK_PRIORITY}
- traefik.http.routers.f1replay-backend.middlewares=authentik@file
- traefik.http.services.f1replay-backend.loadbalancer.server.port=8000
f1replay-frontend:
image: ghcr.io/adn8naiagent/f1replaytiming-frontend:latest
container_name: f1replay-frontend
environment:
- NEXT_PUBLIC_API_URL=https://teamradio.${DOMAIN}
networks:
- web
restart: unless-stopped
labels:
- flame.type=application
- flame.category=Fun and games
- flame.name=F1 Replay Timing
- flame.url=https://f1replay.${DOMAIN}
- flame.icon=flag-checkered
- traefik.enable=true
- traefik.http.routers.f1replay.rule=Host(`f1replay.${DOMAIN}`)
- traefik.http.routers.f1replay.entrypoints=websecure
- traefik.http.routers.f1replay.tls.certresolver=letsencrypt
- traefik.http.routers.f1replay.priority=${TRAEFIK_PRIORITY}
- traefik.http.routers.f1replay.middlewares=authentik@file
- traefik.http.services.f1replay.loadbalancer.server.port=3000
networks:
web:
external: true
volumes:
f1replay-cache:
external: true
f1replay-data:
external: true
I configured the wrong url for the backend (should be https for my config, but I typed http) so the frontend could not reach the backend. However, it displays the wrong url, where it seems to try to connect to an internal URL, while it should display the configured one.
Below you see in the logs the frondend picked up the configured URL nicely, but the screenshot displays an internal url.
Logs from the frontend:
Screenshot of the frontend error:

Docker compose: