element矩阵通信环境搭建
大约 5 分钟
element矩阵通信环境搭建
简介
element是一款点对点加密软件,用于加密通信,好处是通信过程完全由自己掌控,包括通信资产以及通信质量。支持网站,app,windows&mac os&ios客户端,完全跨平台,以下教程均在docker内完成。
架构
- vps一台(最小创建即可)
- 域名一个
- ssl证书一个
- synapse服务端软件
- element客户端软件
步骤
首先在vps安装docker(详情可在docker安装教程查看)。
安装nginx
因为用的是快速部署,所以nginx在这里使用的是原版配置。
创建必要文件夹
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/html
mkdir -p /home/nginx/log
mkdir -p /home/nginx/ssl
获取默认文件
启动服务:
docker run --name nginx -p 80:80 -d nginx
获取默认文件
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf #获取主要配置文件
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d #获取站点配置文件
docker cp nginx:/usr/share/nginx/html /home/nginx/ #获取默认网站文件
删除容器
docker rm -f nginx
提示
如果你有现成的默认配置,可直接跳过此步骤,只需要重命名成对应的文件夹名称即可
https配置以及站点配置
打开站点配置文件
vim /home/nginx/conf/conf.d/default.conf
提示
因为我这里只有一个站点,所以我选择配置到默认的default.conf文件夹中。这里可根据自己的情况灵活配置。
详细配置:
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain.com;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets on;
#按照这个协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
#按照这个套件配置
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA;
#指定当使用 SSLv3 和 TLS 协议时,服务器密码应优先于客户端密码。
ssl_prefer_server_ciphers on;
ssl_stapling on;
#启用或禁用服务器对 OCSP 响应的验证。
ssl_stapling_verify on;
#HSTS策略, 一年:31536000 ,180天:15552000,30天:2592000
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
ssl_certificate your/cert.cer;
ssl_certificate_key your/cert.key;
index index.htm index.html;
access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ ^(/_matrix|/_synapse/client|/.well-known) {
#注意这里的地址要指向你的主机内网地址或者是synapse的docker虚拟内网地址,否则会出现无法访问服务的情况
proxy_pass http://172.19.0.4:8008;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Proxy-Host $proxy_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_ssl_protocols TLSv1.2 TLSv1.3;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 50M;
# Synapse responses may be chunked, which is an HTTP/1.1 feature.
#proxy_http_version 1.1;
}
}
启动服务
docker run \
-p 443:443 \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/ssl:/etc/nginx/ssl \
-d nginx:latest
注意
注意一点,nginx两个端口都要对外开放
到这里nginx的环境就结束了
安装synapse
创建synapse使用目录
mkdir -p /home/matrix-synapse-data/
创建配置文件
docker run -it --rm -v /var/matrix-synapse-data/:/data/ -e SYNAPSE_SERVER_NAME=yourdomain,com -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate
注意
yourdomain,com指的是服务端部署的根域名,哪怕你的服务部署到子域名也要写成根域名
修改配置文件
打开配置文件:
vim /home/matrix-synapse-data/homeserver.yaml
修改内容如下(在文件末尾添加):
# 为新用户启用注册。
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_registration
enable_registration: true
# 无需电子邮件或验证码验证即可启用注册。
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_registration_without_verification
enable_registration_without_verification: true
# 默认情况下,其他服务器将尝试通过端口 8448 访问我们的服务器,告诉其他服务器将流量发送到端口 443
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#serve_server_wellknown
serve_server_wellknown: true
# 客户端用于访问此 Homeserver 的面向公众的基本 URL,这与用户可能在其客户端的“自定义主服务器 URL”字段中输入的 URL 相同。如果您将 Synapse 与反向代理一起使用,这应该是通过代理访问 Synapse 的 URL。
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#public_baseurl
public_baseurl: https://yourdomain.com
# 默认情况下,其他服务器将尝试通过端口 8448 访问我们的服务器,告诉其他服务器将流量发送到端口 443
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#serve_server_wellknown
serve_server_wellknown: true
# 是否应阻止对该服务器上用户的房间邀请(本地服务器管理员发送的除外)
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#block_non_admin_invites
block_non_admin_invites: false
提示
可根据自己的需求调整配置
更改权限
文件修改完成之后需要修改对应权限,否则无法启动容器
chmod 755 /home/matrix-synapse-data/*
启动容器
docker run -d --name synapse -v /home/matrix-synapse-data/:/data/ -p 8008:8008 -p 8009:8009 -p 8448:8448 matrixdotorg/synapse:latest
创建登录的账户密码
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u test1 -p 123456
提示
如果你在配置文件里面配置了enable_registration: true,那么你就可以忽略此步,只需要在客户端注册即可。
至此,客户端就配置完成了,可通过客户端尝试连接。
补充
目前出现一个问题,就是如果服务部署在内地而ssl证书请求的是国际的,那么有可能在app登录上面出现ssl错误。导致无法使用,解决方法是只需要更换ssl证书即可。或者使用网页或电脑端连接。 如果电脑端或网页出现登录时,同步服务器信息步骤出现长时间loading的话。请检查nginx配置。