今天外出玩耍的时候突发奇想我能不能每天记录一下自己每天的生活轨迹,百度了下已经有很多成熟的应用了,但是这种比较私密的数据要发送到别人的服务器上说实话我是不太想的,然后去github上找了下,发现了好几个方案,都尝试了一遍,主要是https://github.com/cctyl/TrackRecord,搭完发现太简陋了,不适合我,其他几个更是已经几年没更新了,最后尝试了下traccar,感觉算是比较成熟的方案,也符合我的需求。

正常安装

其官网位于:https://www.traccar.org/,项目主要仓库在Github上:https://github.com/traccar/traccar。直接去release上根据服务器类型下载对应的文件就行了,目前linux支持arm和x64,windows仅支持x64。以我在树莓派上运行为例,下载之后解压执行就能自动配置好:

wget https://bgithub.xyz/traccar/traccar/releases/download/v6.6/traccar-linux-arm-6.6.zip
unzip traccar-linux-arm-6.6.zip
sudo ./traccar.run

然后执行:

sudo systemctl start traccar.service

再等个几分钟(树莓派太慢了,所以会很久),就可以访问设备IP:8082进入管理界面。初次使用需要配置服务名称、邮箱和密码,然后使用邮箱和密码登录即可。

使用docker安装

首先执行:

docker run  --rm  --entrypoint cat  traccar/traccar:latest  /opt/traccar/conf/traccar.xml > /root/traccar/traccar.xml

其中/root/traccar/traccar.xml根据实际情况配置,我的配置文件放在/root/traccar下所以这么弄了。
然后执行:

docker run -d --restart always --name traccar --hostname traccar -p 8082:8082 -p 5023:5023 -p 5023:5023/udp -p 5055:5055 -p 5055:5055/udp -v /root/traccar/traccar/logs:/opt/traccar/logs:rw -v /root/traccar/traccar.xml:/opt/traccar/conf/traccar.xml:ro -v /root/traccar/templates:/opt/traccar/templates/short -e TZ=Asia/Shanghai traccar/traccar:latest

这里所有的/root/traccar都要根据实际情况修改,然后确保8082 5023 5055这三个端口都是没有被占用的,有的话改到其他端口下。
同样再等个几分钟,就可以访问设备IP:8082进入管理界面。初次使用需要配置服务名称、邮箱和密码,然后使用邮箱和密码登录即可。

修改数据库

默认情况下它使用的是h2作为数据库,这是一种开源的关系型数据库,采用Java语言编写,数据存储于内存内,为了保证数据安全建议修改为mysql连接方式。
具体操作是修改数据目录下的traccar.xml文件,原内容是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
<properties>

    <!-- Documentation: https://www.traccar.org/configuration-file/ -->

    <entry key='database.driver'>org.h2.Driver</entry>
    <entry key='database.url'>jdbc:h2:./data/database</entry>
    <entry key='database.user'>sa</entry>
    <entry key='database.password'></entry>

</properties>

修改为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
<properties>

    <!-- Documentation: https://www.traccar.org/configuration-file/ -->

    <entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
    <entry key='database.url'>jdbc:mysql://sql地址:端口/数据库名称?zeroDateTimeBehavior=round&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true&amp;useSSL=false&amp;allowMultiQueries=true&amp;autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF-8&a>
    <entry key='database.user'>数据库用户名</entry>
    <entry key='database.password'>数据库密码</entry>

</properties>

保存文件,如果使用正常方式安装的执行:

sudo systemctl restart traccar.service

如果使用的是docker则执行:

docker restart 容器ID

需要注意的是修改数据库不会把h2上的数据迁移过去,所以需要重新设置密码。

添加设备

Github上提供了编译好的APP,支持IOS和安卓,可以直接下载安装。
下载完后需要添加好定位权限并锁定后台,然后在APP中修改服务器地址,比如服务器IP是192.168.50.121,那这里就要填写http://192.168.50.121:5055。当然,这是针对没有公网的情况,如果需要在外网访问就自行做穿透。
然后记录下显示的设备编码,是个6位数字。
精度可选高中低,应该是越高耗电越多。
定位频率:多久一次上报位置信息,我设置了1200秒,不需要太高。
后面距离角度等我没调整。

网页端使用

要做的主要就是连接设备和配置地图信息了。

连接设备

点击左上角的加号,会跳转到设备页面,要求的必填项有名称标识符名称可以随意填写,标识符就是刚才我们手机上的六位数字,如果手机端配置地址无误,几秒钟之后手机的位置和电量就显示在网页上了。可以查看到详细的经纬度、海拔和轨迹信息。

配置地图信息

设置里的首选项第一行的地图中可选的地图很多,红色需要添加key或者付费,免费的支持LocatioIQ、谷歌、高德等地图,但是高德会因为你知道的原因产生偏移,可以通过修改编译原文件的方式解决,但我就算了,不一定用高德其他效果也还不错。

其他

添加两步验证

如果要暴露在公网上,建议还是添加个2FA保护登录信息,具体操作是在设置的服务器选项下的属性,点击添加,属性选择启用一次性密码,然后确认添加,在出现的启用一次性密码复选框上打勾,此时到设置的账户界面会多一行一次性密码密钥,点击里面有个刷新按钮,然后就弹出密钥了,把它复制到那些两步验证APP上保存即可,网页端也要记得点击保存。

感想

这个东西整体基本符合我的要求,该有的功能都有了,配置里还有很多个性化玩法,也看到有好多人把这东西接入hass或者rednode,后面我也会研究研究。
当然该吐槽的也要吐槽,基于JAVA的东西是真吃内存啊,光容器就吃掉了800M+的内存,mysql那边也盯着内存不放,还好树莓派买的4G版,不然真不敢玩。

最后修改:2025 年 04 月 20 日
如果觉得我的文章对你有用,请不要赞赏