Skip to content

When not able to access the backend, the url displayed by the frontend is wrong #73

@rowdynl

Description

@rowdynl

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:
Image

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 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions