Cómo compartir datos aeronáuticos usando Docker
Aprendé cómo usar Docker y ACARS Hub para ejecutar múltiples decodificadores y alimentar los servicios de Airframes en una sola máquina.
- ACARS Hub (Recomendado)
- Configuración con Docker Compose
- Pasos de Configuración
- Puertos de envío de acars_router
- Iniciar y Detener
- Acceder al panel de control (Dashboard)
- Docker Compose Manual (Sin ACARS Hub)
- Validando tu Feeder
- Configuración de Sincronización de Tiempo
- Solución a Problemas Frecuentes
Basado en la documentación oficial de airframes.io.
Traducido y adaptado por el equipo técnico de Zorzal RF para la comunidad hispanohablante.
Docker es el método recomendado para ejecutar múltiples decodificadores en una sola máquina. Esta guía cubre dos enfoques: la configuración moderna de ACARS Hub (recomendada) y una configuración manual de Docker Compose.
ACARS Hub (Recomendado)
ACARS Hub es una solución en Docker “todo en uno” que decodifica ACARS, VDL2, HFDL y mensajes satelitales, proporciona un panel web local (dashboard) y alimenta automáticamente a servicios de agregación como Airframes.
La arquitectura utiliza acars_router como un centro unificador (hub):
acarsdec ──UDP──► ┐
dumpvdl2 ──ZMQ──► │ acars_router ──ZMQ──► ACARS Hub (panel web)
dumphfdl ──UDP──► ┘ │
└──UDP/TCP──► feed.airframes.io
Configuración con Docker Compose
Crea un archivo docker-compose.yml:
services:
acarshub:
image: ghcr.io/sdr-enthusiasts/docker-acarshub:latest
container_name: acarshub
restart: always
ports:
- 8080:80
volumes:
- ./acars_data:/run/acars
tmpfs:
- /database:exec,size=64M
- /run:exec,size=64M
- /var/log:size=64M
environment:
- TZ=Etc/UTC
- ENABLE_ACARS=true
- ENABLE_VDLM=true
- ACARS_CONNECTIONS=zmq://acars_router:45550
- VDLM_CONNECTIONS=zmq://acars_router:45555
acars_router:
image: ghcr.io/sdr-enthusiasts/acars_router:latest
container_name: acars_router
restart: always
tmpfs:
- /run:exec,size=64M
- /var/log:size=64M
environment:
- TZ=Etc/UTC
- AR_OVERRIDE_STATION_NAME=MI-ESTACION
- AR_ENABLE_DEDUPE=true
- AR_RECV_ZMQ_VDLM2=dumpvdl2:45555
# Compartir datos con Airframes (descomenta las líneas de tus decodificadores)
- AR_SEND_UDP_ACARS=feed.airframes.io:5550
- AR_SEND_TCP_VDLM2=feed.airframes.io:5553
# - AR_SEND_TCP_HFDL=feed.airframes.io:5556
acarsdec:
image: ghcr.io/sdr-enthusiasts/docker-acarsdec:latest
container_name: acarsdec
restart: always
environment:
- TZ=Etc/UTC
- SERIAL= # Número de serie de tu [RTL-SDR](/catalogo/rtl-sdr-blog-v3-receptor-usba/)
- GAIN=-10
- PPM=0
- FREQUENCIES=130.025;130.450;131.125;131.550
- FEED_ID=MI-ESTACION
- OUTPUT_SERVER=acars_router
- OUTPUT_SERVER_MODE=udp
tmpfs:
- /run:exec,size=64M
- /var/log:size=64M
device_cgroup_rules:
- "c 189:* rwm"
volumes:
- /dev/bus/usb:/dev/bus/usb:ro
dumpvdl2:
image: ghcr.io/sdr-enthusiasts/docker-dumpvdl2:latest
container_name: dumpvdl2
restart: always
environment:
- TZ=Etc/UTC
- SERIAL= # Número de serie de tu RTL-SDR
- GAIN=40.0
- PPM=0
- FREQUENCIES=136650000;136700000;136800000;136975000
- FEED_ID=MI-ESTACION
- ZMQ_MODE=server
- ZMQ_ENDPOINT=tcp://0.0.0.0:45555
tmpfs:
- /run:exec,size=64M
- /var/log:size=64M
device_cgroup_rules:
- "c 189:* rwm"
volumes:
- /dev/bus/usb:/dev/bus/usb:ro
Pasos de Configuración
- Configurá el nombre de tu estación: Cambia
AR_OVERRIDE_STATION_NAMEyFEED_IDpor tu identificador de estación. - Configurá los números de serie de tu SDR: Cada SDR necesita un número de serie único. Configurá el campo
SERIALpara cada decodificador. Podés asignar números de serie a los dispositivos RTL-SDR conrtl_eeprom -s MINUMEROSERIE. - Configurá tus frecuencias: Actualiza el campo
FREQUENCIESde cada decodificador para que coincida con tu región. - Configurá tu zona horaria: Cambia
TZpor tu zona horaria local. - Habilita el envío a Airframes: Las líneas que comienzan con
AR_SEND_*enacars_routercontrolan a dónde se envía la información. Descomenta las líneas correspondientes a cada tipo de decodificador que estés ejecutando.
Puertos de envío de acars_router
| Variable | Destino | Protocolo |
|---|---|---|
AR_SEND_UDP_ACARS | feed.airframes.io:5550 | UDP |
AR_SEND_TCP_VDLM2 | feed.airframes.io:5553 | TCP |
AR_SEND_TCP_HFDL | feed.airframes.io:5556 | TCP |
Iniciar y Detener
# Iniciar todos los contenedores
docker compose up -d
# Ver registros (logs)
docker compose logs -f
# Detener todos los contenedores
docker compose down
Acceder al panel de control (Dashboard)
Una vez que se esté ejecutando, abrí http://localhost:8080 (o la IP de tu máquina) en un navegador para ver el panel de ACARS Hub con los mensajes decodificados en tiempo real.
Docker Compose Manual (Sin ACARS Hub)
Si preferís una configuración más simple sin el panel de ACARS Hub, podés ejecutar los decodificadores directamente en contenedores Docker que alimenten a Airframes de manera independiente.
(El documento original detalla extractos equivalentes del archivo docker-compose.yml donde se configuran los puertos directos de Airframes. Ver guía original para el archivo completo).
Validando tu Feeder
Una vez que tu feeder esté funcionando, visitá la página de estaciones de Airframes para ver tu estación y el contador de mensajes.
Nota: Es posible que no recibas ningún mensaje de inmediato. El volumen de mensajes depende del tráfico aéreo en tu área y de la hora del día.
Configuración de Sincronización de Tiempo
Tener marcas de tiempo (timestamps) precisas es importante para los mensajes ACARS. Si tu sistema (especialmente una Raspberry Pi sin un reloj en tiempo real o RTC) no tiene una hora confiable, podés configurarlo mediante NTP (systemd-timesyncd).
Solución a Problemas Frecuentes
Los contenedores no arrancan / No se encuentra el SDR:
- Verificá el acceso al dispositivo USB ejecutando
lsusb. Debería mostrar tu SDR. - Asegurate de que ninguna otra pieza de software esté ocupando el SDR.
No se reciben mensajes:
- Revisá los logs de los contenedores usando
docker compose logs acarsdecodocker compose logs dumpvdl2. - Verificá que las frecuencias sean las correctas para tu región.
- Intentá ajustar la ganancia (GAIN).
¿Listo para arrancar con tu proyecto?
En nuestra tienda oficial vas a encontrar los receptores RTL-SDR, antenas y accesorios que necesitas, con envío a todo el país.