带大家自建一个聊天服务器,matrix+synapse,并开启https服务。
这是现在最好的聊天服务,没有之一
首先matrix是一个去中心化的聊天服务,matrix实现了端对端的加密,这意味着不仅其他人无法查看你的聊天内容,哪怕你更换了一个终端,你也需要私钥才能够查看你的聊天记录。
这是终极的隐私保护方案,因为一旦你丢掉了这个密钥,这些内容就相当于被销毁了。
如果你能够访问到matrix的服务器那么就可以直接使用matrix的主聊天服务
自建matrix的意义何在呢
如果你在中国大陆,你是无法访问到matrix的主服务的,需要梯子的辅助
这时候自建一个matrix服务,不仅实现了一个独立的聊天服务,
matrix的服务之间也是联系在一起的,通过自建服务是可以与其他服务器的用户进行通信的,这时候自建的的matrix相当于一个moon服务器
开始搭建
服务器系统是centos7,如果你的不是,不要照搬
使用的服务是docker,synapse
反向代理使用nginx
证书服务使用letsencrypt
1、安装docker
如果你是在自己的nas设备上搭建大概率已经有docker服务了,就不用这一步了
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker
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端口就是我们需要访问的端口,开启防火墙端口
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
理论上来说现在就可以直接通过这个域名访问到了
3、然后为了安全考虑,需要启用https,也就是ssl证书,使用letsencrypt免费服务
安装certbot
sudo yum install epel-release
sudo yum update
sudo yum install ca-certificates openssl
sudo yum install certbot
申请证书
# 此时如果你的机器上有80端口占用,申请会失败,操作前请暂停80端口的服务
sudo certbot certonly --standalone -d x.dongvps.com
# 如果你的服务器的80端口无法从外部访问到,申请也会失败,此时需要使用离线申请模式
# 无80申请证书
sudo certbot certonly --manual --preferred-challenge dns -d x.dongvps.com
# 按照提示操作,应该会需要你去域名那里做一条tx解析,做好解析稍等片刻等解析生效,然后再确认
# 证书生成后的路径是
# /etc/letsencrypt/live/x.dongvps.com/
安装nginx做反向代理
sudo yum install nginx
添加nginx配置文件,/etc/nginx/conf.d/x.dongvps.conf
务必把x.dongvps.com修改你自己的域名。
443是https的默认端口,如果你没有443就用别的,访问的时候指定端口
1 http://127.0.0.1:8088 是刚才启动的synapse服务,还记得吧
server {
listen 80;
server_name x.dongvps.com;
rewrite ^(.*) https://$server_name:443$1 permanent;
}
server {
listen 443 ssl;
server_name x.dongvps.com;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/x.dongvps.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/x.dongvps.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/x.dongvps.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://x.dongvps.com
已经可以打开首页了
但是如果你想使用聊天服务还需要客户端,下载matrix客户端riot
手动生成账号
# 进入容器生成zhanghao
sudo docker ps
sudo docker exec -it synapse /bin/bash
register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
我的这个服务在测试完毕就会关闭,大家不用尝试这个了。
欢迎加群讨论:https://bit.ly/3BPV1vg