开源实时位置共享服务Hauk

【勘误】:在上文 『事务与项目跟踪软件Jira』 一文中,老苏错误的将 4G 内存写成了 4M,感谢网友 纸飞机cwz 的指正。虽然老苏确实用过 4M 内存的机器,但那是20 多年前的事情了。


什么是 Hauk ?

Hauk 是一个完全开源的自托管位置共享服务。在兼容 PHPWeb 服务器上安装后端代码,在手机上安装配套应用程序,然后就可以使用了。

这个和微信的 共享实时位置 ,在功能上是一样的,区别是 Hauk 我们可以自主掌控,不用担心信息泄露,但需要魔法上网才会显示 OpenStreetMap 地图

前期准备

在容器启动时,需要用到 config.php 文件,官方的源代码中提供了样例:https://github.com/bilde2910/Hauk/blob/master/backend-php/include/config-sample.php

1
2
3
4
5
6
7
8
9
10
11
# 新建文件夹 hauk 和 子目录
mkdir -p /volume2/docker/hauk/config

# 进入 config 目录
cd /volume2/docker/hauk/config

# 下载并修改 config.php 文件
curl -sSL https://raw.githubusercontent.com/bilde2910/Hauk/master/backend-php/include/config-sample.php -o config.php

# 下不动就加个代理试试
curl -sSL https://ghproxy.com/raw.githubusercontent.com/bilde2910/Hauk/master/backend-php/include/config-sample.php -o config.php

需要进行一些修改和说明:

  1. 保持 memcached 连接细节不变,memcached 已经包含在 Docker 镜像中;
  2. public_url 要根据自己的地址修改,这里只要填局域网地址就可以,但是一定要用反斜杠结束

  1. 认证和密码:默认的 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
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
5180 80

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
# 进入 hauk 目录
cd /volume2/docker/hauk

# 将 config.php 放入到 hauk/config 目录

# 运行容器
docker run -d \
--restart unless-stopped \
--name hauk \
-p 5180:80 \
-v $(pwd)/config:/etc/hauk \
bilde2910/hauk

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
version: '3'

services:
hauk:
image: bilde2910/hauk
container_name: hauk
restart: unless-stopped
ports:
- 5180:80
volumes:
- ./config:/etc/hauk

然后执行下面的命令

1
2
3
4
5
6
7
8
9
# 进入 hauk 目录
cd /volume2/docker/hauk

# 将 config.php 放入到 hauk/config 目录

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 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/Hauk

Hauk
地址:https://apps.varden.info/demo/hauk/