技术积累
日进一寸

万能docker,搭建最好的开源聊天服务matrix

带大家自建一个聊天服务器,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

赞(2)
未经允许不得转载:DongVPS » 万能docker,搭建最好的开源聊天服务matrix
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址