Privacy Protection系列
1.写在前面
想象一下,如果你要发个文件或者一些信息给你的好朋友,但是你不信任微信,QQ。因为这个文件可能很重要,所以你不想让任何第三方知道。怎么办呢?你可能听说过Telegram、Signal、Session、XMPP、Synapse等一系列端到端加密即时通讯服务。Telegram和Signal?还行,但是在国内要挂代理,有些情况下不想挂代理就用不了,而且还要手机号注册。XMPP和Synapse(Matrix)?也可以,经过我之前写过一篇文章讲过XMPP。但是功能有点少,XMPP不支持撤回,Matrix不支持定时删除信息。Session?这个可以,但是中继服务器都被墙了,而且自建服务就是把服务器作为它的网络节点的一个,不太好。
那么,有没有隐私够强,而且能自由配置是否公开或者私有服务器的端到端加密聊天服务呢?
有!它就是SimpleX Chat。
2.关于SimpleX Chat
SimpleX Chat的官方服务器是用Tor连接的,虽然你也可以配置你的服务器使用Tor,但是我并不推荐在国内使用Tor,Obfs4网桥在GFW面前非常明显。特别是你的服务器是在阿里云或者腾讯云等平台的情况下,在他们的服务器上不作处理直接装Tor可能会引起流量异常检测,增加账户被审查的风险。
SimpleX的服务器链接和其他的服务不同,它不使用http或https协议,而是smp和xftp协议。前者用于发送消息,后者是发送文件。还有一个WebRTC ICE协议,用于语音和视频通话。但是通话目前只在手机端实现。事实上,如果你有语音通话的需求,那么TeamSpeak的更简单的配置可能更好一点?
可以使用IP直连服务器,但是更推荐使用域名,至少官方文档是这么写的。
3.Docker搭建
为什么不直接在服务器上安装?因为官方的安装文档需要安装Tor,以及Caddy来占用你的80和443端口。我相信你的服务器的443肯定要用,总不能为了SimpleX而放弃网站吧。而且docker配置也确实方便点。
我们先从smp服务开始,先找个地方创建一个文件夹,用来放docker-compose.yml。
这里我给出一个docker-compose.yml
name: SimpleX Chat - smp-server
services:
smp-server:
image: ${SIMPLEX_IMAGE:-simplexchat/smp-server:latest}
environment:
WEB_MANUAL: ${WEB_MANUAL:-1}
ADDR: ${ADDR?"Please specify the domain."}
PASS: ${PASS:-}
volumes:
- ./smp_configs:/etc/opt/simplex
- ./smp_state:/var/opt/simplex
ports:
- 5223:5223
restart: unless-stopped
还有.env文件。
# Mandatory
ADDR=your_ip_or_addr
# Optional
#PASS='123123'
WEB_MANUAL=1
ADDR那里可以是IP,也可以是域名。这里我用域名。
PASS是连接到服务器的密码,如果不想服务器被别人拿去用,可以设置一个。
docker compose up -d后,查看容器的日志。
SMP server v6.3.2.0
Fingerprint: RehLzxhlhclByCEBVOIoA_vhUvznAq49FcmvBEk8k-g=
Server address: smp://RehLzxhlhclByCEBVOIoA_vhUvznAq49FcmvBEk8k-g=:[email protected]
Server source code: https://github.com/simplex-chat/simplexmq
Store log: /var/opt/simplex/smp-server-store.log
Serving SMP protocol on port 5223 (TLS)...
smp://RehLzxhlhclByCEBVOIoA_vhUvznAq49FcmvBEk8k-g=:[email protected]
这就是你的服务器的地址,RehLzxhlhclByCEBVOIoA_vhUvznAq49FcmvBEk8k-g=是证书指纹,:后面的字符串“Uv6ZmGC4yzL6HnzK”就是你设置的密码,然后以@hostname结尾。
接下来是xftp服务,xftp用于发送文件。
name: SimpleX Chat - xftp-server
services:
xftp-server:
image: ${SIMPLEX_XFTP_IMAGE:-simplexchat/xftp-server:latest}
environment:
ADDR: ${ADDR?"Please specify the domain."}
QUOTA: ${QUOTA?"Please specify disk quota."}
PASS: ${PASS:-}
volumes:
- ./xftp_configs:/etc/opt/simplex-xftp
- ./xftp_state:/var/opt/simplex-xftp
- ./xftp_files:/srv/xftp
ports:
- 443:443
restart: unless-stopped
如果你的443端口被占用了,那就改一个。
同样的,.env
# Mandatory
ADDR=your_ip_or_addr
QUOTA=120gb
# Optional
#PASS='123123'
xftp://[email protected]
这是xftp链接的样式,需要注意的是,xftp的日志不会把你的密码加进去,你需要在链接手动添加密码。
4.使用
创建用户后,先打开设置,关闭私密路由。
否则会把连接经过Tor,就会导致你连接服务器的速度非常慢。
然后在网络和服务器那里添加你的服务器链接,把用于新连接打开。
Windows端添加媒体服务器时测试不通过是正常的,因为我在内网搭建也这样,应该是软件问题。
添加你的服务器之后,就可以把官方的服务器关闭了。
总体就是这样,因为搭建确实简单,所以本文看着有些水。。。