走过的路全存自己 NAS:飞牛部署 Dawarich 位置轨迹库,出门也能翻
作者
小编
发布时间

项目介绍
Dawarich 是一个开源的位置轨迹库,可以看作 Google 时间线的自托管替代:手机、手表导出的轨迹丢进来,地图上就能回看走过的路,按年、按月统计走过多少公里、去过哪些城市。数据全存在自己家里,不交给任何地图软件。
项目源码:Freika/dawarich
官方文档:Dawarich Docs
部署安装
下面用飞牛 Docker Compose 部署,再通过 帕斯内网穿透 把它开放到公网,出门在外也能翻。
一、先把公网地址拿到手
Dawarich 有个特别的地方:编排里的 APPLICATION_HOSTS 必须填你实际访问它的地址。填错不是打不开页面,而是页面能看、表单提交全被拒——所以先把隧道建好,拿到地址再部署。
飞牛应用中心搜 PassNAT,装上内网穿透插件并打开;创建隧道,类型选 HTTP,域名自己起一个,本地地址留默认,端口填 3496(跟下面编排里对上);按电源通电,把公网地址记下来。
二、在飞牛 Docker 新建 Compose 项目
打开 Docker,切到 Compose,点新增项目。项目名称填 dawarich;路径挑一个空文件夹(我在「我的文件」下建了 mytrail-demo,里面建 dawarich-app);来源选「创建 docker-compose.yml」,把下面这段整个贴进去:
1services:2 dawarich_redis:3 image: redis:7.4-alpine4 command: redis-server --save 900 1 --save 300 10 --appendonly no5 volumes:6 - dawarich_shared:/data7 restart: always89 dawarich_db:10 image: postgis/postgis:17-3.5-alpine11 shm_size: 1G12 volumes:13 - dawarich_db_data:/var/lib/postgresql/data14 - dawarich_shared:/var/shared15 environment:16 POSTGRES_USER: postgres17 POSTGRES_PASSWORD: ChangeMe_DbPass18 POSTGRES_DB: dawarich_development19 restart: always2021 dawarich_app:22 image: freikin/dawarich:latest23 volumes:24 - dawarich_public:/var/app/public25 - dawarich_watched:/var/app/tmp/imports/watched26 - dawarich_storage:/var/app/storage27 - dawarich_db_data:/dawarich_db_data28 ports:29 - "3496:3000"30 stdin_open: true31 tty: true32 entrypoint: web-entrypoint.sh33 command: ['bin/rails', 'server', '-p', '3000', '-b', '::']34 restart: unless-stopped35 environment:36 RAILS_ENV: production37 REDIS_URL: redis://dawarich_redis:637938 DATABASE_HOST: dawarich_db39 DATABASE_PORT: 543240 DATABASE_USERNAME: postgres41 DATABASE_PASSWORD: ChangeMe_DbPass42 DATABASE_NAME: dawarich_development43 APPLICATION_HOSTS: localhost,你的公网地址44 TIME_ZONE: Asia/Shanghai45 APPLICATION_PROTOCOL: http46 SECRET_KEY_BASE: 换成你自己的长随机串47 RAILS_LOG_TO_STDOUT: "true"48 SELF_HOSTED: "true"49 STORE_GEODATA: "true"50 depends_on:51 - dawarich_db52 - dawarich_redis5354 dawarich_sidekiq:55 image: freikin/dawarich:latest56 volumes:57 - dawarich_public:/var/app/public58 - dawarich_watched:/var/app/tmp/imports/watched59 - dawarich_storage:/var/app/storage60 stdin_open: true61 tty: true62 entrypoint: sidekiq-entrypoint.sh63 command: ['sidekiq']64 restart: unless-stopped65 environment:66 RAILS_ENV: production67 REDIS_URL: redis://dawarich_redis:637968 DATABASE_HOST: dawarich_db69 DATABASE_PORT: 543270 DATABASE_USERNAME: postgres71 DATABASE_PASSWORD: ChangeMe_DbPass72 DATABASE_NAME: dawarich_development73 APPLICATION_HOSTS: localhost,你的公网地址74 APPLICATION_PROTOCOL: http75 SECRET_KEY_BASE: 换成你自己的长随机串76 RAILS_LOG_TO_STDOUT: "true"77 SELF_HOSTED: "true"78 STORE_GEODATA: "true"79 depends_on:80 - dawarich_db81 - dawarich_redis82 - dawarich_app8384volumes:85 dawarich_db_data:86 dawarich_shared:87 dawarich_public:88 dawarich_watched:89 dawarich_storage:90
几处要改成你自己的:口令三处(数据库的 POSTGRES_PASSWORD 和两处 DATABASE_PASSWORD)要填成一样的值;SECRET_KEY_BASE 换成一串长随机串。
最关键的是 APPLICATION_HOSTS:填你刚才拿到的公网地址(只写主机名,不要带 http://),localhost 也留着。这一步填错的症状就是上面说的「页面能开、提交全被拒」,很多人会以为是权限问题,其实是主机校验。
3496 是 NAS 对外的网页端口,容器内是 3000。数据全在具名卷里(dawarich_db_data 等五个),升级迁移都跟着 Docker 卷走。
勾上「创建项目后立即启动」,点确认,等镜像拉完、四个容器都跑起来。第一次启动要跑数据库迁移,多等一会儿。
初始化
浏览器打开公网地址。它自带一个默认账号(README 里的 Default Credentials:demo@dawarich.app / safepassword),登录后第一件事:右上角进 Account settings,把邮箱和口令换成你自己的。隧道一开,别人也可能碰到这个默认口令,这一步别拖。
把轨迹导进来
My data → Imports → New import。支持的格式很多:Google 时间线导出的 Records.json、GPX、GeoJSON、OwnTracks、KML、FIT、TCX、CSV 都行,手表手机导出的 GPX 直接丢进来。
导入是后台任务,状态变 Completed 就进库了,地图上立刻多出走过的轨迹。
看图
Map 页可以同时打开轨迹、热力图、时间线:哪天走了哪条线、走了多远都标着;热力图一眼看出常去的地方。Stats 页按年月统计总里程、去过多少国家多少城市。同一个地址在任何设备的浏览器里都打得开,出门在外照样翻。
让它自己记(可选)
不想手动导入也没关系:Dawarich 有官方 iOS / Android 客户端,也支持 OwnTracks、Overland、GPSLogger、PhoneTrack、Home Assistant 这些上报端。把上报地址指到你的公网地址,位置就会定时发回自己家的 NAS。