一、环境描述
首先matrix是一个去中心化的聊天服务,matrix实现了端对端的加密,这意味着不仅其他人无法查看你的聊天内容,哪怕你更换了一个终端,你也需要私钥才能够查看你的聊天记录。
这是终极的隐私保护方案,因为一旦你丢掉了这个密钥,这些内容就相当于被销毁了。
如果你能够访问到matrix的服务器那么就可以直接使用matrix的主聊天服务
自建matrix的意义何在呢
如果你在中国大陆,你是无法访问到matrix的主服务的,需要梯子的辅助
这时候自建一个matrix服务,不仅实现了一个独立的聊天服务,
matrix的服务之间也是联系在一起的,通过自建服务是可以与其他服务器的用户进行通信的,这时候自建的的matrix相当于一个moon服务器。
本次实验使用的是:
1.服务器系统是centos7
2.使用的服务是docker,synapse
3.反向代理使用nginx
4.证书服务使用letsencrypt
二、安装docker
1.设置docker仓库
第一次安装的时候需要设置docker仓库,后面就可以利用该仓库进行安装和升级docker。
需要先安装 yum-utils 包,它可以提供yum-config-manager工具和配置稳定的仓库。
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
2.安装docker引擎
yum install docker-ce docker-ce-cli containerd.io -y
3.启动Docker
systemctl enable docker
systemctl start docker
docker --version
三、创建synapse服务
1.创建一个映射路径
mkdir -p /data/appdata
2.Docker拉取matrix镜像,并且运行容器
docker run -it --rm \
-v /data/appdata/synapse/data:/data \
-e SYNAPSE_SERVER_NAME=www.baidu.com\
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generate
server name 这里需要指定一个matrix服务器的域名,我使用了一个二级域名,你需要修改成你自己的域名。
还要把这个域名解析到你的服务器ip上,A记录。
执行完毕后就得到了初始的配置文件homeserver.yaml, 文件路径
/data/appdata/synapse/data/homeserver.yaml
3.建立一个 docker network
为了让桥接用的容器和 synapse 容器能够互相通讯
docker network create matrix
4.启动服务器并连接到 network
docker run -d --name synapse \
-v /data/appdata/synapse/data:/data \
-p 8088:8008 \
--restart unless-stopped \
--network matrix \
matrixdotorg/synapse:latest
5.开启防火墙端口
8088端口就是我们需要访问的端口
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
6.访问测试
理论上来说现在就可以直接通过这个域名(加端口)访问到了。
http://域名:8088
四、使用nginx做反向代理
server {
listen 80;
listen 443 ssl;
server_name www.baidu.com;
charset utf-8;
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
##开启强跳
# if ($server_port = 80 ) {
# return 301 https://$host$request_uri;
# }
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
# ssl_certificate keys/baidu/server.crt;
# ssl_certificate_key keys/baidu/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8088;
}
}
现在就可以使用域名访问了
http://域名
但是如果你想使用聊天服务还需要客户端,下载matrix客户端riot
手动生成账号
进入容器生成zhanghao
docker ps
docker exec -it synapse /bin/bash
register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008