一、项目介绍

需要搭建 Matrix 服务和 Element Web端应用

Matrix 是一个开放的通信协议,用于实时通信,包括即时消息、音频和视频通话。
它是去中心化的,这意味着任何人都可以设置自己的 Matrix 服务器,并与其他 Matrix 服务器通信。
Matrix 的目标是为所有不同的通信服务提供一个统一的标准,使得不同的服务可以互相通信。

Element 是基于 Matrix 协议的一个客户端应用。
它允许用户通过 Matrix 协议进行即时消息、音频和视频通话。
Element 有多个版本,包括 Web、桌面和移动应用。
它是 Matrix 生态系统中最流行的客户端之一。

Matrix 官方网站:https://matrix.org/
Matrix GitHub 官方仓库:https://github.com/matrix-org/synapse
Element 官方网站:https://element.io/
Element 自建 GitHub 地址:https://github.com/vector-im/element-web

二、安装步骤

1、绑定域名

需要分别为 MatrixElement 绑定域名,各添加一条A记录

image-20231216103439701

2、添加反向代理

使用 Nginx Proxy Manager 添加反向代理,我分别使用8008和8009端口,注意开放相应防火请

image-20231216104143585

image-20231216104035864

可以再设置一下SSL

image-20231216104305597

3、部署服务

创建目录

1
2
3
mkdir -p /root/docker_data/matrix

cd /root/docker_data/matrix

拉取并运行镜像,注意修改 SYNAPSE_SERVER_NAME 为自己刚才设置的matrix需绑定的域名

1
2
3
4
5
sudo docker run -it --rm \
-v /root/docker_data/matrix/data:/data \
-e SYNAPSE_SERVER_NAME=matrix.shiguangdev.eu.org \
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generate

修改 homeserver.yaml 文件

1
2
3
cd /root/docker_data/matrix/data

vim homeserver.yaml

在最底部添加以下内容,打开注册功能以及跳过注册验证

1
2
enable_registration: true
enable_registration_without_verification: true

如图所示

image-20231216111207502

创建 docker-compose.yml 文件

1
2
cd /root/docker_data/matrix
vim docker-compose.yml

粘贴以下内容,注意将 VIRTUAL_HOSTLETSENCRYPT_HOSTSYNAPSE_SERVER_NAME 替换为自己的域名

如端口需调整,注意修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: "3.3"

services:
synapse:
image: "matrixdotorg/synapse:latest"
container_name: "matrix_synapse"
restart: unless-stopped
ports:
- 8008:8008
volumes:
- "./data:/data" # it will look at the current directory where you save the file and look for the data folder inside
environment:
VIRTUAL_HOST: "matrix.shiguangdev.eu.org"
VIRTUAL_PORT: 8008
LETSENCRYPT_HOST: "matrix.shiguangdev.eu.org"
SYNAPSE_SERVER_NAME: "matrix.shiguangdev.eu.org"
SYNAPSE_REPORT_STATS: "yes"
element-web:
ports:
- '8009:80'
#volumes:
# - '/etc/element-web/config.json:/app/config.json'
image: vectorim/element-web
restart: unless-stopped

执行 docker-compose up -d

通过 ip+端口 或者域名即可访问

Matrix服务

image-20231216111940434

Element

image-20231216112511645

若出现以下错误,需用域名访问,并且使用https的方式访问,反向代理时,SSL可勾选 Force SSL 强制https访问

image-20231216115239099

4、注册账号与使用

4.1 注册账号

可以调整语言为简体中文

image-20231216113640915

创建账户 => 编辑 => 使用自己搭建的Matrix服务

image-20231216113802377

设置用户名及密码

image-20231216113954180

这个界面可以跳过

image-20231216114256868

至此账号已经创建完成

image-20231216114342244

点击头像可以查看账户地址

image-20231216120215840

或者在所有设置 => 通用 => 个人资料查看

image-20231216120419789

4.2 日常对话

新创建跟个账户模拟聊天,输入对方账户地址,前往

image-20231216120549415

模拟向对方发送一条消息

image-20231216120646646

对方会收到邀请通知

image-20231216120805384

对方可以接受聊天或者拒绝

image-20231216120846117

回复一条消息

image-20231216120958779

你接收到的消息

image-20231216121114678

4.3 房间及视频通话

可以创建房间,类似群的功能

image-20231216121439987

如果需要视频通话,可以在设置 => 实验室 => 加入beta

image-20231216121623465

加入beta 后就可以创建视频房间了

image-20231216121807060

模拟创建一个视频房间

image-20231216122131578

要求成员加入,被要求人也需加入beta

image-20231216122125001

被邀请人加入beta后可接受要求

image-20231216122205067

开启视频和麦克风权限后就能开启视频通话了

image-20231216122342282

5、更新服务

1
2
3
4
5
6
7
8
9
10
11
cd /root/docker_data/matrix

docker-compose pull


# 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止
# docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,可以节省一些时间
docker-compose up -d

# prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
docker image prune

6、卸载服务

1
2
3
4
5
6
7
cd /root/docker_data/matrix

docker-compose down

cd ..

rm -rf /root/docker_data/matrix # 完全删除

参考文章

https://blog.laoda.de/archives/docker-compose-install-matrix-element/