Hello! 欢迎来到萌次元备忘录!

搭建开源聊天服务matrix


avatar
Sakura 2025-01-23 103

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

暂无评论

发表评论

相关阅读

隐藏
变装
AI 助手
AI 助手 ×
AI: 您好!我是 AI 助手,很高兴为您服务。您可以询问我任何问题。