什么是APRS?
APRS(自动分组报告系统)是一种数字通信系统,它使用分组无线电发送实时战术信息(通常在业余无线电频率上)。 通过APRS网络共享的信息包括坐标、高度、速度、航向、短信、警报、公告、公告和天气数据。 APRS 由 Bob Bruninga 开发,呼号为 WB4APR。 有关APRS的更多信息,请访问 www.aprs.org 或维基百科。
什么是 APRS Track Direct
APRS Track Direct 是一组工具,如果您想创建 APRS 跟踪网站,您可以将其用作起点。您可以使用来自 APRS-IS、CWOP-IS、OGN 或使用 APRS 规范的任何其他来源的数据。APRS Track Direct (https://www.aprsdirect.com )
本次搭建 APRS 地图服务器分为两部分:第一部分:安装 aprsc 程序,第二部分:安装 Track Direct 程序。
1.安装前准备工作:
1.1. 选择合适的操作系统(推荐 Ubuntu 22.04)!
1.2. 给操作系统安装必要的软件方便后边使用!
sudo apt-get install nano# 文本编辑器sudo apt-get install net-tools# 查看 ip 地址sudo apt install proxychains4# 网络代理工具 (proxychains4 安装后需要配置以下文件:sudo nano /etc/proxychains4.conf , 注释掉socks4 127.0.0.1那一行,在最后加上代理工具的设置, 如:socks5 127.0.0.1 1080 , 代理工具正常运行的前提下,在需要走代理的命令前打上proxychains4即可(但要在sudo后),即proxychains4 [命令], 如:sudo proxychains4 apt update
2.安装 aprsc 程序(aprsc 介绍:https://he.fi/aprsc/ )
Aprsc在以下平台上正式“支持”:
- Debian stable (11.0, “bullseye”): i386, x86_64
- Debian oldstable (10.0, “buster”): i386, x86_64
- Debian oldoldstable (9.0, “stretch”): i386, x86_64
- Ubuntu LTS (18.04, 20.04, 22.04): x86_64
- CentOS 7: x86_64
Debian 和 Ubuntu:使用 apt-get 安装
2.1. 先请为 apt 配置 aprsc 的软件包存储库。 您需要弄清楚发行版的代号。在终端使用命令 “lsb_release -c”可查询系统发行代号。以下是版本及其代号:
Ubuntu 22.04 LTS: jammy
Ubuntu 20.04 LTS: focal
Ubuntu 18.04 LTS: bionic
Debian 11.0: bullseye
Debian 10.0: buster
Debian 9.0: stretch
目前不支持其他版本。
2.2. 接下来,使用编辑器在 /etc/apt/sources.list 文件的末尾添加
deb http://aprsc-dist.he.fi/aprsc/apt DISTRIBUTION main
当然,DISTRIBUTION 需要替换为您的发行版代号。您应该看到代号出现在 sources.list 中其他类似的“deb”行。
例如使用 Ubuntu 22.04 LTS 操作系统,你应该在 sources.list 文件末尾添加以下行:
deb http://aprsc-dist.he.fi/aprsc/apt jammy main
编辑 sources.list 需要 root 权限。以下命令假定 您以普通用户身份运行它们,并使用 sudo 工具运行 以 root 身份执行单个命令。sudo 会要求您输入密码。
2.3. 接下来,通过运行以下命令添加用于对包进行签名的 gpg 密钥 命令提示符下的命令。这将启用 APRSC 软件包 - apt-get 将对其进行加密验证。
gpg --keyserver keyserver.ubuntu.com --recv C51AA22389B5B74C3896EF3CA72A581E657A2B8D
gpg --export C51AA22389B5B74C3896EF3CA72A581E657A2B8D | sudo apt-key add -
2.4 接下来,下载包索引:
sudo apt-get update
2.5. 然后,安装 aprsc:
sudo apt-get install aprsc
每当有新的 aprsc 版本可用时,都可以执行升级 通过运行 upgrade 命令自动执行。您的操作系统可以 还可以配置为自动升级软件包,或指示您 升级可用时进行升级。以下升级命令还将 如果可能,请为您重新启动 APRSC。
sudo apt-get update && sudo apt-get upgrade
2.6. 在启动 aprsc 之前,请编辑配置文件,该文件可在 /opt/aprsc/etc/aprsc.conf 中找到。有关说明,请参阅配置文档。
如果你的发行版有 systemd(试试 ‘systemctl’ 看看你是否有), 继续执行 systemd 说明。如果没有,请继续 老式的非 systemd 指令。
2.7. 使用 systemd 方式启动
启用服务:
sudo systemctl enable aprsc
要启动它:
sudo systemctl start aprsc
要关闭它:
sudo systemctl stop aprsc
要执行重新启动,请执行以下操作:
sudo systemctl restart aprsc
2.8. 以老式方式启动
要启用启动,请编辑 /etc/default/aprsc 并将 STARTAPRSC=“no” 更改为 “是的”。此时应该不需要触及其他选项。
启动它:
sudo service aprsc start
要关闭它:
sudo service aprsc stop
要执行重新启动,请执行以下操作:
sudo service aprsc restart
当 /etc/default/aprsc 文件中的 STARTAPRSC 设置为 YES 时,它将 系统启动时自动启动。您会在 /opt/aprsc/logs/aprsc.log。日志轮换已在 aprsc.conf 文件。
启动后,查看日志文件中的启动消息,注意 任何警告或错误。
3.安装 Track Direct 程序(Track Direct 介绍:https://www.aprsdirect.com/)
注意:TrackDirect必须安装在用户主目录中,不能安装在任何子目录中。
先决条件 您需要安装哪些内容以及如何安装它们。这些说明适用于 Ubuntu 20.04
3.1. 安装一些 ubuntu 软件包
sudo apt update
sudo apt-get install libpq-dev postgresql postgresql-client-common postgresql-client libevent-dev apache2 php libapache2-mod-php php-dom php-pgsql libmagickwand-dev imagemagick php-imagick inkscape php-gd libjpeg-dev python3 python3-dev python3-pip python-is-python3
3.2. 从存储库克隆项目文件
git clone https://github.com/qvarforth/trackdirect
cd trackdirect
3.3. 在安装所有 python 要求之前,您可能需要升级 pyOpenSSL
sudo python -m easy_install --upgrade pyOpenSSL
3.4. 安装所需的 python 库
pip install -r requirements.txt
3.5. 设置数据库
设置数据库(使用“sudo -u postgres psql”连接到数据库)。您需要替换“my_username”。请注意,APRS 使用 UTF-8 编码,因此可能需要指定,如下所示。
CREATE DATABASE trackdirect ENCODING 'UTF8';
CREATE USER my_username WITH PASSWORD 'foobar';
ALTER ROLE my_username WITH SUPERUSER;
GRANT ALL PRIVILEGES ON DATABASE "trackdirect" to my_username;
将密码添加到密码文件可能很好:
nano ~/.pgpass
提高数据库性能
使用一些 Postgresql 设置来提高性能可能是个好主意(对于此应用程序,速度比最小化数据丢失的风险更重要)。
/etc/postgresql/12/main/postgresql.conf 中可能会提高性能的一些设置:
shared_buffers = 2048MB # I recommend 25% of total RAM
synchronous_commit=off # Avoid writing to disk for every commit
commit_delay=100000 # Will result in a 0.1s commit delay
重启 postgresql
sudo /etc/init.d/postgresql restart
设置数据库表
该脚本应由拥有数据库“trackdirect”的用户执行。
~/trackdirect/server/scripts/db_setup.sh trackdirect 5432 ~/trackdirect/misc/database/tables/
3.6. 设置 OGN 设备数据
如果您使用的是来自 OGN(开放式滑翔机网络)的数据,请务必保持 OGN 数据更新(数据库表ogn_devices)。这很重要,否则您可能会展示不允许展示的飞机。我建议您至少每小时(或更频繁)运行一次此脚本。该脚本应由您授予数据库“trackdirect”访问权限的用户执行。
~/trackdirect/server/scripts/ogn_devices_install.sh trackdirect 5432
3.7. 配置 trackdirect
在启动websocket服务器之前,您需要更新trackdirect配置文件(trackdirect/config/trackdirect.ini)。通读配置文件并进行任何必要的更改。
nano ~/trackdirect/config/trackdirect.ini
3.8. 启动收集器
在启动收集器之前,您需要更新 trackdirect 配置文件 (trackdirect/config/trackdirect.ini)。
使用提供的 shell-script 启动收集器。请注意,如果您配置了多个收集器(从多个 aprs 服务器获取,例如 APRS-IS 和 CWOP-IS),则需要多次调用 shell-script。该脚本应由您授予数据库“trackdirect”访问权限的用户执行。
~/trackdirect/server/scripts/collector.sh trackdirect.ini 0
3.9. 启动 websocket 服务器
当用户与地图交互时,我们希望用后端的对象填充地图。为了获得良好的性能,我们避免使用后台 HTTP 请求(也称为 AJAX 请求),而是使用 websocket 通信。包含的trackdirect js库(trackdirect.min.js)将连接到我们的websocket服务器并请求当前地图视图的对象。
使用提供的 shell 脚本启动 websocket 服务器,该脚本应由您授予数据库“trackdirect”访问权限的用户执行。
~/trackdirect/server/scripts/wsserver.sh trackdirect.ini
如果您启用了防火墙,请确保所选端口已打开(我们默认使用端口 9000,可以在 trackdirect.ini 中更改)。
sudo ufw allow 9000
Trackdirect js 库
所有的地图视图魔术都由trackdirect js库处理,它包含渲染地图的功能(使用Google Maps API或Leaflet),用于与后端websocket服务器通信的功能等等。
如果在 js 库(jslib 目录)中进行更改,则需要执行 build.sh 将更改部署到 htdocs 目录。
~/trackdirect/jslib/build.sh
3.10. 设置 Web 服务器
Webserver 应该已经启动并运行(如果您安装了所有指定的 ubuntu 软件包)。
将以下内容添加到 /etc/apache2/sites-enabled/000-default.conf 中。您需要替换“my_username”。
<Directory "/home/my_username/trackdirect/htdocs">
Options SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
更改 VirtualHost DocumentRoot:(在 /etc/apache2/sites-enabled/000-default.conf 中):
DocumentRoot /home/my_username/trackdirect/htdocs
启用重写并重新启动 apache
sudo a2enmod rewrite
sudo systemctl restart apache2
为了使符号和热图缓存正常工作,我们需要确保 Web 服务器具有写入权限(以下权限可能有点过于慷慨……
chmod 777 ~/trackdirect/htdocs/public/symbols
chmod 777 ~/trackdirect/htdocs/public/heatmaps
如果已启用防火墙,请确保端口 80 已打开。
sudo ufw allow 80
部署
如果要设置公共网站,则应安装防火墙并设置SSL证书。为了一个简单的解决方案,我会使用 ufw 来处理 iptables,使用 Nginx 作为反向代理,并使用 let’s encrypt 来加密 SSL 证书。
服务器要求
您需要的服务器功能有多强大取决于您将要使用的数据源类型。例如,如果您从 APRS-IS 网络接收数据,您可能至少需要一台具有 4 个 CPU 和 8 GB RAM 的服务器,但我建议使用具有 8 个 CPU 和 16 GB RAM 的服务器。