开源实时位置共享服务Hauk
【勘误】:在上文 『事务与项目跟踪软件Jira』 一文中,老苏错误的将 4G 内存写成了 4M,感谢网友 纸飞机 和 cwz 的指正。虽然老苏确实用过 4M 内存的机器,但那是20 多年前的事情了。
什么是 Hauk ?
Hauk是一个完全开源的自托管位置共享服务。在兼容PHP的Web服务器上安装后端代码,在手机上安装配套应用程序,然后就可以使用了。
这个和微信的 共享实时位置 ,在功能上是一样的,区别是 Hauk 我们可以自主掌控,不用担心信息泄露,但需要魔法上网才会显示 OpenStreetMap 地图
前期准备
在容器启动时,需要用到 config.php 文件,官方的源代码中提供了样例:https://github.com/bilde2910/Hauk/blob/master/backend-php/include/config-sample.php
1 | # 新建文件夹 hauk 和 子目录 |
需要进行一些修改和说明:
- 保持
memcached连接细节不变,memcached已经包含在Docker镜像中; public_url要根据自己的地址修改,这里只要填局域网地址就可以,但是一定要用反斜杠结束

- 认证和密码:默认的
auth_method采用的是PASSWORD,默认的password_hash后面虽然长长的一串,但是实际上对应的密码是空字符串(无密码)

如果你要加入自己的密码,有两种方式:
- 第一种是不安全的方式
MD5 (insecure!),可以通过SSH客户端登录到群晖后,在命令行执行openssl passwd -1,输入密码后,生成password_hash

- 第二种是安全的方式
bcrypt (secure),使用了开源http服务器apache httpd的一个命令工具htpasswd,不过群晖上并不支持,其他平台的可以试试。在命令行执行htpasswd -nBC 10 "" | tail -c +2
其他的可以保持不变,各参数具体的含义,有兴趣的可以自己研究
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 hauk ,选择第一个 bilde2910/hauk,版本选择 latest。

卷
在 docker 文件夹中,创建一个新文件夹 hauk,并在其中建一个子文件 config,将我们前面修改的 config.php放入到 config 目录中

| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/hauk/config |
/etc/hauk |
存放设置 |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
5180 |
80 |

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 进入 hauk 目录 |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 进入 hauk 目录 |
运行
在浏览器中输入 http://群晖IP:5180 就能看到主界面

反向代理
这一步不是必需的

SSL 还是全部勾选了

移动端
似乎 Hauk 只支持 Android 系统,如果上不了 Google Play 可以在 F-Droid 下载安装 Hauk客户端
下载地址:https://f-droid.org/packages/info.varden.hauk/

首先、点右上角的小齿轮进行设置

主要就是 Server URL,用户名填不填无所谓,密码如果没改的话,也可以不用管

现在可以回到主界面,点 Start Sharing 开始共享位置

假如前面网页端安装时,你没有在 config 目录中放入 config.php 文件,客户端会报错

如果设置无误的话,应该是 OK 的

你可以把实时位置分享给别人

在手机上打开位置分享可能是👇这样的
因为使用了
OpenStreetMap地图服务,需要魔法上网

加入域名黑名单之后,电脑上的效果
为了避免暴露实际地址,老苏移动了位置,所以代表自己实时位置的小黄点就没有了

参考文档
bilde2910/Hauk: Open-source realtime location sharing
地址:https://github.com/bilde2910/HaukHauk
地址:https://apps.varden.info/demo/hauk/