飞常准 ADS-B Docker容器化 一键部署

GitHub Docker Hub 博客

 

飞常准 (VariFlight)目前提供的脚本已十分老旧,比较难以使用。官方提供的系统镜像也没有密码,导致设备只能用于ADS-B数据接收,无法用于其他事情,导致硬件资源的浪费。

本项目将ADS-B数据接收、数据收集封装在docker容器中,测试可在树莓派官方系统中使用,理论上也可用于其他系统,只需安装docker即可。

本项目完全重写了向飞常准发送数据的功能,代码已开源,用户可自行构建镜像。

本项目提供了原始信息永久化保存功能,用户可自行选择是否启用,启用后,数据将永久性保留在MySQL数据库中。请注意,若信息量较大,将会占用大量空间。收集的数据请勿用于违法用途,本项目不承担任何责任。

快速开始

前置条件

  • 树莓派 4B 或 arm64/amd64 Linux 设备
  • RTL-SDR 电视棒
  • Docker & Docker Compose

准备

# 1. 克隆项目(含中文界面子模块)
git clone --recursive https://github.com/BigheadFishZJML/ADSB_Docker_flightadsb ADSB_Docker_flightadsb && cd ADSB_Docker_flightadsb

# 2. 创建环境配置
cp .env.example .env
# 编辑 .env,按需填入:
nano .env
#   VARIFLIGHT_UUID=   你的 16 位 UUID(留空自动生成)
#   LAT=               接收器纬度
#   LONG=              接收器经度

启动

# 方式一:使用预构建镜像(推荐)
docker compose up -d

# 若需要附加 MySQL + 原始信息永久化保存,请使用以下命令
docker compose --profile full up -d

查看

地址 内容
http://<IP>:8080 飞机地图
http://<IP>:8081 UUID 状态页
http://<IP>:8080/graphs1090/ 性能图表

绑定飞常准

  1. 访问 http://<IP>:8081 查看 UUID
  2. 登录 https://flightadsb.variflight.com/share-data/script
  3. 填入 UUID,在地图上标记站点位置,提交

功能

功能 端口 说明
🗺️ 飞机地图 :8080 tar1090-zh 中文界面,wiedehopf/readsb 解码
🔑 UUID 管理 :8081 显示站点 UUID,自动生成/持久化
📤 飞常准上报 读取 SBS 数据 → 压缩 → POST adsb.feeyo.com
📊 原始信息永久化保存 可选,所有 Mode-S/ADS-B 消息存入 MySQL

中文飞机地图界面基于 tar1090-zh 项目,以 git submodule 方式引入。

架构

                     RTL-SDR USB 电视棒
                           │
┌─ tar1090 ───────────────────────────────────────────────────┐
│  wiedehopf/readsb 解码器 + tar1090-zh 中文 Web UI           │
│  :80→8080  飞机地图                                         │
│  :30003    SBS BaseStation 数据流                           │
│  :30005    Beast 全量消息流                                  │
└────────────┬──────────────────────┬─────────────────────────┘
             │ SBS                  │ Beast
             ↓                      ↓
┌─ flightadsb-sender ─┐  ┌─ flightadsb-logger (可选) ─┐
│  python:3-slim       │  │  Beast 协议解析            │
│  非 root 运行         │  │  全量消息解码               │
│  :8081 UUID 状态页   │  │  ADS-B 字段提取            │
│  POST adsb.feeyo.com │  │  批量写入 MySQL            │
└──────────────────────┘  └───────────┬───────────────┘
                                     │
                          ┌─ mysql (可选) ─┐
                          │  MySQL 8.4      │
                          │  持久卷存储      │
                          └─────────────────┘

原始信息永久化保存(可选)

使用 docker compose --profile full up -d 启动项目后,flightadsb-logger 读取 readsb 的 Beast 全量输出(:30005),解析所有 Mode-S/ADS-B 消息并写入 MySQL。

数据库

messages (
    id, hex_icao, df, msg_type, beast_ts, received_at,
    raw_hex,        -- 原始 Mode-S 十六进制
    altitude,       -- 气压高度 (ft)
    latitude, longitude, speed, track, vr,
    squawk, callsign
)

消息类型

类型 来源 说明
mode_s_short DF 0–15 SSR 雷达应答(短报文)
mode_s_long DF 16–24 含 ADS-B (DF17/18) + Comm-B (DF20/21)
mode_s_allcall DF 11 All-Call 应答
mode_ac Mode-A/C 应答机编码(squawk)
adsb_pos DF17 TC 9–18 ADS-B 位置报文
adsb_vel DF17 TC 19 ADS-B 速度报文
adsb_id DF17 TC 1–4 ADS-B 呼号报文

自行构建镜像(可选)

flightadsb-sender 和 flightadsb-logger镜像都是以python:3-slim镜像为基础的,在此基础上运行若干Python代码。如果你想从源码构建 flightadsb-sender 和 flightadsb-logger 镜像:

# 1. 构建镜像(替换为你的 Docker Hub 用户名)
DOCKER_USER=你的用户名 docker compose -f docker-compose.build.yml build

# 2. 推送到 Docker Hub(可选)
docker push 你的用户名/flightadsb-sender:latest
docker push 你的用户名/flightadsb-logger:latest

# 3. 修改 docker-compose.yml,将 bigheadfishzjml 替换为你的用户名
nano docker-compose.yml

# 4. 启动项目
docker compose up -d

项目结构

flightadsb/
├── docker-compose.yml        # 预构建镜像版(普通用户用)
├── docker-compose.build.yml  # 源码构建版(开发者用)
├── .env.example              # 环境变量模板
├── sender/                   # 飞常准上报容器
│   ├── Dockerfile
│   ├── entrypoint.sh         # UUID 解析 + 端口等待
│   ├── send_message.py       # SBS 读取 → 压缩 → POST
│   ├── uuid_web.py           # :8081 UUID 状态页
│   └── requirements.txt
├── logger/                   # 全量消息采集容器(可选)
│   ├── Dockerfile
│   ├── main.py               # Beast 读取 → 批量写入 MySQL
│   ├── beast_parser.py       # Beast 二进制协议解析 + ADS-B 解码
│   └── requirements.txt
├── mysql/init/               # MySQL 初始化脚本
│   └── 01-schema.sql
├── graphs1090-patch/         # graphs1090 hash 保留补丁
│   └── graphs.js
├── README.md
└── RESEARCH.md               # 技术调研记录

License

MIT License. 本项目代码可自由使用、修改、分发,详见 LICENSE 文件。

本项目使用的第三方组件遵循其各自的许可证:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇