matrix是一个去中心化的聊天服务,matrix实现了端对端的加密,这意味着不仅其他人无法查看你的聊天内容,哪怕你更换了一个终端,你也需要私钥才能够查看你的聊天记录。
这是终极的隐私保护方案,因为一旦你丢掉了这个密钥,这些内容就相当于被销毁了。
如果你能够访问到matrix的服务器那么就可以直接使用matrix的主聊天服务
matrix的服务之间也是联系在一起的,通过自建服务是可以与其他服务器的用户进行通信的,这时候自建的的matrix相当于一个moon服务器
开始搭建
1、安装docker
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
# 根据要求选择安装
2、创建synapse服务
sudo mkdir /data/appdata # 如果你是在nas上,nas一般情况会有一个统一的docker路径,使用系统建议路径
# server name 这里需要指定一个matrix服务器的域名,我使用了一个二级域名,你需要修改成你自己的域名。 # 还要把这个域名解析到你的服务器ip上,A记录。 docker run -it --rm \ -v /data/appdata/synapse/data:/data \ -e SYNAPSE_SERVER_NAME=x.dongvps.com \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate
执行完毕后就得到了初始的配置文件homeserver.yaml,主要是一下内容
# homeserver.yaml
server_name: "x.dongvps.com"
# enable_registration: true
为了让桥接用的容器和 synapse 容器能够互相通讯,建立一个 docker network:
docker network create matrix
启动服务器并连接到 network ( 注意端口映射 ) :
docker run -d --name synapse \
-v /data/appdata/synapse/data:/data \
-p 8088:8008 \
--restart unless-stopped \
--network matrix \ matrixdotorg/synapse:latest
8088端口就是我们需要访问的端口,开启防火墙端口,也可也根据需要使用对应端口
3、然后为了安全考虑,需要启用https,也就是ssl证书,使用letsencrypt免费服务
安装certbot
sudo apt install certbot
申请证书
# 此时如果你的机器上有80端口占用,申请会失败,操作前请暂停80端口的服务
sudo certbot certonly --standalone -d name.com
# 如果你的服务器的80端口无法从外部访问到,申请也会失败,此时需要使用离线申请模式
# 无80申请证书
sudo certbot certonly --manual --preferred-challenge dns -d name.com
# 按照提示操作,应该会需要你去域名那里做一条tx解析,做好解析稍等片刻等解析生效,然后再确认 # 证书生成后的路径是
# /etc/letsencrypt/live/name.com/
安装nginx做反向代理
sudo yum install nginx
添加nginx配置文件,/etc/nginx/conf.d/name.conf
务必把name.com修改你自己的域名。
443是https的默认端口,如果你没有443就用别的,访问的时候指定端口
http://127.0.0.1:8088 是刚才启动的synapse服务
server { listen 80; server_name name.com; rewrite ^(.*) https://$server_name:443$1 permanent; } server { listen 443 ssl; server_name name.com; charset utf-8; ssl_certificate /etc/letsencrypt/live/name.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/name.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; keepalive_timeout 70; index index.html index.php; root /html/name.com; #charset koi8-r; #access_log logs/host.access.log main; location / { # ¨® V2Ray ???¦Ìpath ¡!ê?? #proxy_redirect on ; proxy_pass http://127.0.0.1:8088; proxy_ssl_session_reuse off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; # Show real IP in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重启nginx服务
sudo systemctl restart
nginx sudo systemctl enable nginx
现在访问
https://name.com
已经可以打开首页了
但是如果你想使用聊天服务还需要客户端,下载matrix客户端riot
手动生成账号
# 进入容器生成账号
sudo docker ps
sudo docker exec -it synapse /bin/bash
register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008