前言:

今天的教程是一个去中心化的聊天平替,可以做到端到端的加密,安全,这里标题其实是两个东西,matrix是聊天服务器,element是matrix的客户端。

element支持常见的系统,安卓,苹果,Windows,和Linux,教程里的是网页版,移动终端可以去app商店下载。

教程:

安装教程,还是分别为UNRAID和Docker-compose,compose可以在其他linux系统和群晖系统上使用。

UNRAID原本是打算写模板的,后来看应用商店有,所以我就不写了,这里直接用成品模板。

数据库 Matrix element

三个docker的模板就是上面的图片了,大家安装的时候注意别弄错了,下面处理三个容器。

数据库配置:

因为他启动自动创建的库和用户名我们不需要,所以删掉,过后我们在单独创建。

配置数据库,和新的用户名。

docker exec -it postgresql12 createuser -U postgres --pwprompt rsg

注意替换rsg为你自己的用户名。

登录数据库的管理员账号

docker exec -it postgresql12 psql -U postgres

输入后如上图,就可以输入下面的内容配置数据库了

CREATE DATABASE synapse
 ENCODING 'UTF8'
 LC_COLLATE='C'
 LC_CTYPE='C'
 template=template0
 OWNER rsg;

注意替换红色的rsg部分为你自己在上一步创建的用户名。

到此数据库配置结束。

下面我们配置matrix,在配置前,我们需要使用命令获取容器的配置文件。

docker run -it --rm \
    -v /mnt/user/appdata/synapse:/data \
    -e SYNAPSE_SERVER_NAME=matrix的域名 \
    -e SYNAPSE_REPORT_STATS=yes \
    matrixdotorg/synapse:latest generate

注意替换域名,路径默认就是unraid模板的,所以不需要改变。

对配置文件进行修改,因为默认配置文件使用的是sqlite3的数据库,我们需要修改成配置好的postgres,可以使用nano 或者vi打开配置文件,这里我就不多说了,直接按照下面进行删减和添加内容。

这是原始的截图,下面我门进行修改。

增加数据库部分配置:

database:
  name: psycopg2
  args:
    user: 数据库用户
    password: 数据库密码
    dbname: synapse #如果你没修改过上面的命令中的数据名称这个部分你可以不改默认即可
    host: postgres12 #数据库的链接地址
    cp_min: 5
    cp_max: 10

增加其他配置,因为太多了就不细说了。

###告知发现服务器自建服务器链接地址
public_baseurl: https://matrix.xxxxx.com #这里写你matrix的域名,不写可能会造成一些奇怪的问题,比如无法使用贴纸等。
###推流告知端口443
serve_server_wellknown: true 

缓存工具,如果有可以加上没有这部分可以去掉。

redis:
  enabled: true
  host: 192.168.1.3
  port: 6379

开启注册功能不写,会无法注册。

enable_registration: true
enable_registration_without_verification: true

修改完成后如下

 

注意:在完成配置文件后,使用chown 99:100 /mnt/user/appdata/synapse -R 重写文件用户和组否则容器无法启动

再次检查一下是否有错误的地方,如果没有错误的地方,我们去unraid商店找到Matrix-Synapse这个模板,开始安装。

 

配置模板的时候,打开高级模式。

尝试一下访问,如下图即可。

这样服务端就算配置好了,下面我门来注册第一个账号,并设置为管理员。

docker exec -it Matrix-Synapse register_new_matrix_user -c /data/homeserver.yaml

按照下面图片依次输入完成注册。

到此服务端就搭建完了,下面我们继续配置element,其实是全平台的,你可以理解为是matrix的客户端,这里我们搭建的是web版本,就是网页版。

在商店找到element-web的模板,进行安装,在安装前使用命令行执行文件夹的创建和config.json的下载。

创建文件夹

mkdir -p /mnt/user/appdata/element-web/config

下载config.json到创建的文件夹

wget -O /mnt/user/appdata/element-web/config/config.json https://raw.githubusercontent.com/vector-im/element-web/develop/element.io/app/config.json

模板上面什么都不需要操作直接apply即可。

尝试访问一下element,直接在unraid的容器页面点访问webui即可图我就不贴了

 

登录后,就可以愉快的玩耍了后面的图我就不放了剩下的功能就要你们自己进行摸索了。

创建一个compose的文件,如果有可以添加到已有的文件内。

touch ~/docker-compose.yaml

把下面的内同,红色区域修改后填充到docker-compose.yaml文件内。

###postgres12
  postgres12:
    restart: always
    container_name: postgres12
    image: postgres:12.5-alpine
    shm_size: 1024mb
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
    volumes:
      - /data/appdata/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=password ###数据库密码
###matrix
  matrix:
    image: matrixdotorg/synapse:latest
    container_name: matrix
    restart: always
    environment:
      VIRTUAL_HOST: "域名或者ip" ###公网使用需要写域名,内网用可以用ip
      VIRTUAL_PORT: 8008
      LETSENCRYPT_HOST: "域名或者ip"
      SYNAPSE_SERVER_NAME: "服务器名字"
      SYNAPSE_REPORT_STATS: "yes"
      TZ: Asia/Shanghai
    volumes:
      - "/data/appdata/Matrix:/data"
    ports:
      - "8008:8008"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.matrix.rule=Host(`域名`)"
      - "traefik.http.services.matrix.loadbalancer.server.port=8008"
###element-web
  element-web:
    image: vectorim/element-web
    restart: unless-stopped
    container_name: element-web
#   volumes:
#     - '/data/appdata/element-web/config.json:/app/config.json' #默认不做持久化,如果需要配置element可以自行下载github仓库的config.json 
    ports:
      - '8889:80'
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.elemen.rule=Host(`域名`)"
      - "traefik.http.services.elemen.loadbalancer.server.port=80"
###matrix-admin  
  synapseadmin:
    image: awesometechnologies/synapse-admin:latest
    container_name: synapseadmin
    restart: always
    ports:
      - '8888:80'
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.synapseadmin.rule=Host(`域名`)"
      - "traefik.http.services.synapseadmin.loadbalancer.server.port=80"

注意,标注为红色的部分要进行修改,labels的内容是traefik的,如果没有traefik的可以直接删掉,或者无视不修改。

使用命令启动数据库。

docker compose up -d postgres12

针对我们需要提供给matrix容器的数据按照官方的文档要求进行配置。

docker exec -it postgresql12 createuser -U postgres --pwprompt zmy

创建链接需要的用户,注意红色地方需要替换,在--pwprompt和用户名之间有个空格

提示输入密码,输入一次后再次输入一次确认密码正确

使用postgres管理员账户,创建一个matrix需要使用的库并按照官方给的参数进行配置。

docker exec -it postgres12 psql -U postgres

返回如下,既可以继续输入。

输入下面内容:注意红色字体需要进行替换

CREATE DATABASE synapse
 ENCODING 'UTF8'
 LC_COLLATE='C'
 LC_CTYPE='C'
 template=template0
 OWNER 刚才创建的用户名;

输入完成后和下图对比下如果返回结果一样就可以了。

输入\q推出就可以了。

接下来我们配置matrix,因为matrix启动的时候需要配置文件,所以我们需要用命令让容器生成一套默认的配置文件,生成的文件要在我们matrix的映射文件夹内,注意红色部分需要修改。

docker run -it --rm \
    -v matrix映射路径:/data \
    -e SYNAPSE_SERVER_NAME=matrix的域名 \
    -e SYNAPSE_REPORT_STATS=yes \
    matrixdotorg/synapse:latest generate

输入完成后反馈如下,即可。

对配置文件进行修改,因为默认配置文件使用的是sqlite3的数据库,我们需要修改成配置好的postgres,可以使用nano 或者vi打开配置文件,这里我就不多说了,直接按照下面进行删减和添加内容。

这是原始的截图,下面我门进行修改。

增加数据库部分配置:

database:
  name: psycopg2
  args:
    user: 数据库用户
    password: 数据库密码
    dbname: synapse #如果你没修改过上面的命令中的数据名称这个部分你可以不改默认即可
    host: postgres12 #数据库的链接地址
    cp_min: 5
    cp_max: 10

增加其他配置,因为太多了就不细说了。

###告知发现服务器自建服务器链接地址
public_baseurl: https://matrix.xxxxx.com #这里写你matrix的域名,不写可能会造成一些奇怪的问题,比如无法使用贴纸等。
###推流告知端口443
serve_server_wellknown: true 

缓存工具,如果有可以加上没有这部分可以去掉。

redis:
  enabled: true
  host: 192.168.1.3
  port: 6379

开启注册功能不写,会无法注册。

enable_registration: true
enable_registration_without_verification: true

修改完成后如下

再次检查一下是否有错误的地方,如果没有错误的地方,我们就可以使用命令全部启动剩下的容器了。

docker compose up -d

启动后,等待一小会,尝试访问自己的matrix。

这样服务端就算配置好了,下面我门来注册第一个账号,并设置为管理员。

docker exec -it matrix register_new_matrix_user -c /data/homeserver.yaml

按照下面图片依次输入完成注册。

在商店找到element-web的模板,进行安装,在安装前使用命令行执行文件夹的创建和config.json的下载。

创建文件夹 注意修改红色路径。

mkdir -p ~/element-web/config

下载config.json到创建的文件夹 注意红色部分需要修改为上一步创建的路径。

wget -O ~/element-web/config/config.json https://raw.githubusercontent.com/vector-im/element-web/develop/element.io/app/config.json

启动elment-web 容器

docker compose up -d element-web

尝试访问一下element,直接在unraid的容器页面点访问webui即可图我就不贴了

 

登录后,就可以愉快的玩耍了后面的图我就不放了剩下的功能就要你们自己进行摸索了。

管理员部分:

之前安装的element-web和matrix都是没有管理功能的,所以我们要接住另一个工具synapseadmin来进行管理,这个工具unraid商店也有,docker compose的配置,我在教程里也写了,配置不需要修改也不需要持久化,直接默认安装即可。

进入界面后,就可以进行删除用户,房间等操作了,不过管理权限不是很多,大概率是用不到的。

结尾:

此聊天工具是去中心化的,每个服务器之间也是可以互相进行通讯的,比如你在你自己的nas搭建后,你创建房间,其他人在自己的服务器搭建的服务器,也可以与你服务器内的人或者房间,进行聊天和通讯,并不像火箭聊天室那种,总体来说还是蛮好玩的,最大的缺点可能就是,加密带来的不方便了吧。

发表回复

后才能评论