跳至主要內容

element矩阵通信环境搭建

Mr.Lexon大约 5 分钟environment

element矩阵通信环境搭建

简介

element是一款点对点加密软件,用于加密通信,好处是通信过程完全由自己掌控,包括通信资产以及通信质量。支持网站,app,windows&mac os&ios客户端,完全跨平台,以下教程均在docker内完成。

架构

  1. vps一台(最小创建即可)
  2. 域名一个
  3. ssl证书一个
  4. synapse服务端软件
  5. 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配置。

上次编辑于:
贡献者: Lexon