Cómo instalar F1 Replay Timing en Docker: Revive las carreras de F1 con datos en tiempo real con F1 Replay Timing

F1 Replay Timing | Formula 1 | Docker

F1 Replay Timing: Revive las carreras de F1 con datos en tiempo real

Mapa de circuito interactivo, telemetría de pilotos, timing en vivo y sincronización con grabaciones. Todo autohospedado en Docker.

¿Qué es F1 Replay Timing?


F1 Replay Timing es una aplicación web de código abierto que te permite revivir sesiones de Fórmula 1 (carreras, clasificaciones, prácticas) con datos de telemetría y timing en tiempo real. Funciona tanto para sesiones en vivo durante fines de semana de carrera como para replays de sesiones pasadas desde 2024 en adelante.

La aplicación muestra un mapa del circuito con las posiciones GPS de todos los coches actualizándose cada 0.5 segundos, una tabla de clasificación completa con gaps, neumáticos, paradas en boxes y penalizaciones, telemetría detallada de cualquier piloto (velocidad, acelerador, freno, marchas, DRS), mensajes de control de carrera, datos meteorológicos y mucho más.

Ventaja clave: Puedes sincronizar la aplicación con tu grabación de una carrera para ver los datos exactos en el momento que estás viendo. Además, todo se ejecuta localmente en tu servidor, sin depender de servicios externos ni límites de uso.
Disclaimer: Este proyecto es solo para uso personal y no comercial. No está asociado de ninguna manera con Formula 1 ni sus compañías asociadas. F1, FORMULA ONE, FORMULA 1, FIA FORMULA ONE WORLD CHAMPIONSHIP, GRAND PRIX y marcas relacionadas son propiedad de Formula One Licensing B.V.

Características principales

Timing en vivo (Beta)

Conéctate a sesiones en vivo durante fines de semana de carrera con datos en tiempo real desde el stream SignalR de F1, incluyendo ajuste de delay de transmisión.

Mapa de circuito interactivo

Posiciones GPS de todos los coches en tiempo real, actualizándose cada 0.5 segundos con interpolación suave.

Tabla de clasificación completa

Posición, gap al líder, intervalo, compuesto y edad de neumáticos, historial de neumáticos, número de paradas, cambios desde la parrilla, vuelta rápida, y estado de investigaciones/penalizaciones.

Mensajes de control de carrera

Decisiones de comisarios, investigaciones, penalizaciones, límites de pista, y cambios de banderas mostrados en un overlay redimensionable sobre el mapa.

Predicción de posición tras parada (Beta)

Estima dónde se reincorporaría un piloto si hiciera un pit stop ahora, con gap predicho adelante y atrás, usando tiempos de pérdida precalculados por circuito con ajustes para Safety Car y VSC.

Telemetría detallada

Velocidad, acelerador, freno, marcha y DRS (hasta 2025) de cualquier piloto, graficados contra la distancia del circuito.

Modo Picture-in-Picture

Ventana flotante compacta con mapa de circuito, control de carrera, tabla de clasificación y telemetría.

Sincronización con transmisión

Sincroniza el replay con una grabación de la sesión, ya sea subiendo una captura de pantalla de la torre de timing (usando IA) o ingresando gaps manualmente.

Datos meteorológicos

Temperatura del aire y pista, humedad, viento y estado de lluvia.

Banderas de estado de pista

Verde, amarilla, Safety Car, Virtual Safety Car, y bandera roja.

Controles de reproducción

Velocidades de 0.5x a 20x, botones de salto (5s, 30s, 1m, 5m), salto entre vueltas, y barra de progreso.

Soporte completo de sesiones

Carreras, clasificaciones, sprint qualifying y prácticas desde la temporada 2024 en adelante.

Cómo funciona

La aplicación está compuesta por tres componentes principales:

  • Frontend: Next.js (React) con Tailwind CSS para la interfaz de usuario
  • Backend: FastAPI (Python) que sirve datos precalculados desde almacenamiento local o Cloudflare R2
  • Fuente de datos: FastF1 (usado solo durante el procesamiento de datos)

Los datos de sesión se procesan una vez y se almacenan localmente. Puedes preprocesar datos en bulk con anticipación, o dejar que la aplicación procese sesiones bajo demanda cuando las selecciones. El procesamiento de una sesión individual toma 1-3 minutos la primera vez, después el acceso es instantáneo.

Instalación con Docker (recomendado)

Requisitos previos

  • Docker y Docker Compose instalados
  • Al menos 4 GB de RAM disponible
  • Espacio en disco: 2-10 GB dependiendo de cuántas sesiones preproceses

Paso 1: Crear el directorio del proyecto

mkdir ~/f1-replay-timing cd ~/f1-replay-timing

Paso 2: Crear el archivo docker-compose.yml

Crea el archivo con el siguiente contenido:

services: backend: image: ghcr.io/adn8naiagent/f1replaytiming-backend:latest ports: - "8000:8000" environment: - FRONTEND_URL=http://localhost:3000 - DATA_DIR=/data volumes: - f1data:/data - f1cache:/data/fastf1-cache frontend: image: ghcr.io/adn8naiagent/f1replaytiming-frontend:latest ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://localhost:8000 # Cambiar si no usas localhost depends_on: - backend volumes: f1data: f1cache:

Paso 3: Iniciar los contenedores

docker compose up -d

Paso 4: Acceder a la aplicación

Abre tu navegador y ve a: http://localhost:3000

Selecciona cualquier sesión pasada y se procesará automáticamente bajo demanda.

Configuración de red y URLs

Dos variables de entorno controlan cómo el frontend y backend se comunican:

NEXT_PUBLIC_API_URL (frontend)

La URL que tu navegador usa para alcanzar el backend.

Default: http://localhost:8000

Cámbiala si accedes desde otro dispositivo o usas un proxy inverso.

FRONTEND_URL (backend)

La URL que tu navegador usa para alcanzar el frontend (necesaria para CORS).

Default: http://localhost:3000

Cámbiala si accedes desde otro dispositivo o usas un proxy inverso.

Ejemplo: Acceso desde otros dispositivos en tu red local

backend: environment: - FRONTEND_URL=http://192.168.1.50:3000 frontend: environment: - NEXT_PUBLIC_API_URL=http://192.168.1.50:8000

Ejemplo: Detrás de un reverse proxy

backend: environment: - FRONTEND_URL=https://f1.tudominio.com frontend: environment: - NEXT_PUBLIC_API_URL=https://api.f1.tudominio.com

En este caso, tu reverse proxy enruta f1.tudominio.com al frontend (puerto 3000) y api.f1.tudominio.com al backend (puerto 8000).

Características opcionales

Sincronización con foto/captura de pantalla

Para habilitar la sincronización mediante IA que lee la torre de timing desde una foto, necesitas una API key de OpenRouter:

backend: environment: - OPENROUTER_API_KEY=tu-api-key-aqui

Obtén una API key gratuita en openrouter.ai. Usa el modelo Gemini Flash para leer la tabla de clasificación de la foto.

Nota: La sincronización manual (ingresando gaps directamente) siempre funciona sin API key.

Autenticación con contraseña

Si quieres restringir el acceso cuando la aplicación esté accesible públicamente:

backend: environment: - AUTH_ENABLED=true - AUTH_PASSPHRASE=tu-contraseña-segura

Preprocesamiento de datos

Puedes preprocesar sesiones con anticipación en lugar de esperar a que se procesen bajo demanda. Esto es útil si quieres tener todos los datos listos antes de usar la aplicación.

Procesar un fin de semana de carrera específico

docker compose exec backend python precompute.py 2026 --round 1

Procesar solo la carrera (omitir prácticas y clasificación)

docker compose exec backend python precompute.py 2026 --round 1 --session R

Procesar una temporada completa

# Tomará varias horas (2-3 horas para ~24 carreras) docker compose exec backend python precompute.py 2025 --skip-existing

Procesar múltiples años

docker compose exec backend python precompute.py 2024 2025 --skip-existing
Tiempos estimados:
  • Una sesión individual (ej: una carrera): 1-3 minutos
  • Un fin de semana completo (FP1, FP2, FP3, Q, R): 3-5 minutos
  • Una temporada completa (~24 rondas, todas las sesiones): 2-3 horas

Cómo usar la aplicación

1. Seleccionar una sesión

En la página principal, elige un año, carrera y tipo de sesión (Carrera, Clasificación, Sprint, Práctica). Si los datos no están procesados, la aplicación los procesará automáticamente.

2. Explorar los datos

  • Mapa del circuito: Ve las posiciones de todos los coches en tiempo real
  • Tabla de clasificación: Analiza gaps, neumáticos, paradas y penalizaciones
  • Telemetría: Haz clic en cualquier piloto para ver sus datos técnicos
  • Control de carrera: Lee mensajes de comisarios y cambios de banderas
  • Meteorología: Consulta temperatura, humedad y lluvia

3. Controles de reproducción

  • Ajusta la velocidad de 0.5x a 20x
  • Salta adelante/atrás (5s, 30s, 1m, 5m)
  • Salta entre vueltas específicas
  • Usa la barra de progreso para ir a cualquier momento

4. Sincronización con grabación (opcional)

Si tienes una grabación de la carrera:

  1. Toma una captura de pantalla de la torre de timing
  2. Súbela en la sección "Broadcast Sync"
  3. La IA leerá los gaps y sincronizará el replay
  4. Alternativamente, ingresa los gaps manualmente

Gestión de los contenedores

Ver logs en tiempo real

# Backend docker compose logs -f backend # Frontend docker compose logs -f frontend

Reiniciar los servicios

docker compose restart

Detener la aplicación

docker compose down

Actualizar a la última versión

docker compose pull docker compose up -d

Ver datos almacenados

# Listar volúmenes docker volume ls # Inspeccionar volumen de datos docker volume inspect f1-replay-timing_f1data

Casos de uso

  • Análisis de carreras: Estudia estrategias de neumáticos, timing de pit stops y adelantamientos
  • Revivir momentos épicos: Vuelve a ver carreras históricas con datos completos
  • Educación: Enseña conceptos de estrategia y telemetría de F1
  • Streaming y comentarios: Usa el overlay para streams con datos en vivo
  • Análisis comparativo: Compara rendimiento de pilotos en el mismo circuito
  • Seguimiento en vivo: Durante fines de semana de carrera, sigue sesiones en tiempo real con datos detallados

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.