本页内容

  • 准备工作
  • 步骤 1 - 配置防火墙
  • 步骤 2 - 安装 Matrix Synapse
  • 步骤 3 - 安装并配置 PostgreSQL
  • 步骤 4 - 安装 Nginx
  • 步骤 5 - 安装 SSL
  • 步骤 6 - 配置 Matrix Synapse
  • 步骤 7 - 配置 Nginx
  • 步骤 8 - 安装 Coturn
  • 步骤 9 - 访问 Matrix
  • 步骤 10 - 安装 Element
  • 步骤 11 - 配置 Element
  • 总结

Matrix 是一套用于去中心化和端到端加密通信的开放标准。它由一组服务器和服务组成,这些服务器和服务通过标准化的 API 相互通信并实时同步。它使用 homeserver(主服务器)来存储账户信息和聊天记录。由于去中心化的特性,即使某个 homeserver 宕机,其他服务器也能照常继续通信。您可以使用他人托管的 Matrix homeserver,也可以自行托管以保持对数据的掌控。

在本教程中,您将学习如何使用 Synapse(Matrix 的一个 homeserver 实现)来安装并创建聊天服务器。Element 是一个基于 Matrix React SDK 构建的 Matrix Web 客户端。这将允许您在 Web 上提供 Matrix 聊天服务。您也可以将该服务器与您选择的任何其他 Matrix 客户端配合使用。我们还会安装 Coturn 服务器以启用语音和视频通话。如果您对此不感兴趣,Coturn 服务是可选的。

准备工作

  • 一台运行 Ubuntu 22.04 的服务器。
  • 一个具有 root 权限的非 sudo 用户。
  • Uncomplicated Firewall(UFW)已启用并处于运行状态。
  • 指向您服务器的 Matrix、Element 和 Coturn 的完全限定域名(FQDN)。我们将为这三项服务分别使用 matrix.example.com、element.example.com 和 coturn.example.com。
  • 确保所有软件包均已更新。$ sudo apt update && sudo apt upgrade

一台运行 Ubuntu 22.04 的服务器。

一个具有 root 权限的非 sudo 用户。

Uncomplicated Firewall(UFW)已启用并处于运行状态。

指向您服务器的 Matrix、Element 和 Coturn 的完全限定域名(FQDN)。我们将为这三项服务分别使用 matrix.example.com、element.example.com 和 coturn.example.com。

确保所有软件包均已更新。

$ sudo apt update && sudo apt upgrade

步骤 1 - 配置防火墙

在安装任何软件包之前,第一步是配置防火墙,开放用于 HTTP、HTTPS 和 Synapse 的端口。

检查防火墙的状态。

$ sudo ufw status

您应该会看到类似以下内容。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

在防火墙中开放 HTTP、HTTPS 和 Synapse 端口。

$ sudo ufw allow 8448
$ sudo ufw allow http
$ sudo ufw allow https

再次检查状态以确认。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
8448                       ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
8448 (v6)                  ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)

步骤 2 - 安装 Matrix Synapse

添加 Matrix 的 GPG 密钥。

$ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg

添加 Matrix 的 APT 软件源。

$ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list

更新系统软件源列表。

$ sudo apt update

安装 Matrix Synapse。

$ sudo apt install matrix-synapse-py3

在安装过程中,系统会要求您输入服务器名称,该名称将作为您 Matrix ID 的一部分。请输入您的 Matrix 域名来替代它。它将作为您的 homeserver(主服务器)地址。

系统还会询问您是否愿意将 homeserver 的匿名统计数据回传给 Matrix。输入 N 表示拒绝。

您可以稍后在文件 /etc/matrix-synapse/conf.d/server_name.yaml 中更改这些设置。

Matrix Synapse 的服务会在安装过程中自动启用并启动。检查该服务的状态。

$ sudo systemctl status matrix-synapse
? matrix-synapse.service - Synapse Matrix homeserver
     Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-09-26 09:38:38 UTC; 1min 19s ago
    Process: 12926 ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-key>   Main PID: 12931 (python)
      Tasks: 8 (limit: 2238)
     Memory: 87.3M
        CPU: 4.180s
     CGroup: /system.slice/matrix-synapse.service
             ??12931 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/

Sep 26 09:38:36 matrix matrix-synapse[12926]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key
Sep 26 09:38:37 matrix matrix-synapse[12931]: This server is configured to use 'matrix.org' as its trusted key server via the
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key
Sep 26 09:38:37 matrix matrix-synapse[12931]: server since it is long-lived, stable and trusted. However, some admins may
Sep 26 09:38:37 matrix matrix-synapse[12931]: wish to use another server for this purpose.
Sep 26 09:38:37 matrix matrix-synapse[12931]: To suppress this warning and continue using 'matrix.org', admins should set
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'suppress_key_server_warning' to 'true' in homeserver.yaml.
Sep 26 09:38:37 matrix matrix-synapse[12931]: --------------------------------------------------------------------------------
Sep 26 09:38:38 matrix matrix-synapse[12931]: Config is missing macaroon_secret_key
Sep 26 09:38:38 matrix systemd[1]: Started Synapse Matrix homeserver.

步骤 3 - 安装并配置 PostgreSQL

我们将使用 PostgreSQL 的官方 APT 软件源进行安装。运行以下命令以添加 PostgreSQL 的 GPG 密钥。

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

将 APT 软件源添加到您的软件源列表中。

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

更新系统软件源。

$ sudo apt update

现在,您可以使用以下命令安装 PostgreSQL。

$ sudo apt install postgresql postgresql-contrib

检查 PostgreSQL 服务的状态。

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-09-26 09:41:36 UTC; 2min 14s ago
    Process: 15586 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 15586 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Sep 26 09:41:36 matrix systemd[1]: Starting PostgreSQL RDBMS...
Sep 26 09:41:36 matrix systemd[1]: Finished PostgreSQL RDBMS.

您可以看到该服务默认已启用并正在运行。

登录到 postgres 系统账户。

$ sudo -su postgres

为 PostgreSQL 创建一个新的数据库用户和数据库。

$ createuser --pwprompt synapse
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapse

退出 postgres 账户。

$ exit

步骤 4 - 安装 Nginx

在生产环境中,建议使用 Nginx 反向代理来运行 Synapse 服务器。

Ubuntu 22.04 自带的是较旧版本的 Nginx。要安装最新版本,您需要下载官方 Nginx 软件源。

导入 Nginx 的签名密钥。

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

添加 Nginx 稳定版的软件源。

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

更新系统软件源。

$ sudo apt update

安装 Nginx。

$ sudo apt install nginx

验证安装结果。

$ nginx -v
nginx version: nginx/1.22.0

启动 Nginx 服务器。

$ sudo systemctl start nginx

步骤 5 - 安装 SSL

我们需要安装 Certbot 来生成 SSL 证书。您可以使用 Ubuntu 的软件源安装 Certbot,也可以通过 Snapd 工具获取最新版本。我们将使用 Snapd 版本。

Ubuntu 22.04 默认已安装 Snapd。运行以下命令以确保您的 Snapd 版本是最新的。

$ sudo snap install core
$ sudo snap refresh core

安装 Certbot。

$ sudo snap install --classic certbot

使用以下命令创建指向 /usr/bin 目录的符号链接,以确保 Certbot 命令可以运行。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

运行以下命令生成 SSL 证书。

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m 
[email protected]
 -d matrix.example.com

上述命令会将证书下载到您服务器上的 /etc/letsencrypt/live/matrix.example.com 目录。

生成 Diffie-Hellman 组证书。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

要检查 SSL 续期是否正常工作,请对该流程进行一次预演测试(dry run)。

$ sudo certbot renew --dry-run

如果未出现错误,说明一切就绪。您的证书将自动续期。

步骤 6 - 配置 Matrix Synapse

您可以通过 /etc/matrix-synapse/homeserver.yaml 文件配置 Matrix 服务器,但不建议这样做,因为该文件会在每次升级后被覆盖。在生产环境中,您应将配置文件放在 /etc/matrix-synapse/conf.d 文件夹中。

Synapse 的安装会在 /etc/matrix-synapse/conf.d 文件夹中创建两个配置文件。

$ ls /etc/matrix-synapse/conf.d
report_stats.yaml  server_name.yaml

为数据库创建一个新的配置文件并将其打开以进行编辑。

$ sudo nano /etc/matrix-synapse/conf.d/database.yaml

将以下行粘贴到编辑器中。将 your-password 字段替换为您在步骤 3 中创建的 PostgreSQL 用户密码。如果您将数据库托管在其他位置,请将 localhost 替换为服务器的 IP 地址。

database:
  name: psycopg2
  args:
    user: synapse
    password: 'your-password'
    database: synapsedb
    host: localhost
    cp_min: 5
    cp_max: 10

按 Ctrl + X 保存文件,并在提示时输入 Y。

创建一个保密的注册密钥。该密钥应妥善保管,因为它允许任何人注册新用户,即使已禁用注册功能也是如此。

$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml

默认情况下,Synapse 启用了显示用户是否在线状态(presence)的指示器。这可能会导致 CPU 占用过高,因此您可以将其禁用。为此创建一个新的配置文件。

$ sudo nano /etc/matrix-synapse/conf.d/presence.yaml

将以下行粘贴到编辑器中。

presence:
  enabled: false

按 Ctrl + X 保存文件,并在提示时输入 Y。

重启 Synapse 服务以使更改生效。

创建一个新的 matrix 用户。系统会要求您输入用户名和密码。由于我们创建的是第一个用户,当系统询问是否将该用户设为管理员时,请输入 yes。

$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
New user localpart [navjot]: navjot
Password: 
Confirm password: 
Make admin [no]: yes
Sending registration request...
Success!

如果您想开放公开注册,请创建一个新的配置文件。

$ sudo nano /etc/matrix-synapse/conf.d/registration.yaml

将以下行粘贴到其中。

enable_registration: true

默认情况下,Synapse 不允许未经邮箱验证的注册。要启用邮箱验证,请粘贴以下行。

registrations_require_3pid:
  - email

email:
  smtp_host: mail.example.com
  smtp_port: 587

  # If mail server has no authentication, skip these 2 lines
  smtp_user: '
[email protected]
'
  smtp_pass: 'password'

  # Optional, require encryption with STARTTLS
  require_transport_security: true

  app_name: 'HowtoForge Example Chat'  # defines value for %(app)s in notif_from and email subject
  notif_from: "%(app)s <
[email protected]
>"

要禁用邮箱验证,请改为粘贴以下行。

enable_registration_without_verification: true

按 Ctrl + X 保存文件,并在提示时输入 Y。

重启 Synapse 以使配置生效。

$ sudo systemctl restart matrix-synapse

步骤 7 - 配置 Nginx

打开文件 /etc/nginx/nginx.conf 进行编辑。

$ sudo nano /etc/nginx/nginx.conf

在 include /etc/nginx/conf.d/*.conf; 这一行之前添加以下行。

server_names_hash_bucket_size  64;

按 Ctrl + X 保存文件,并在提示时输入 Y。

创建并打开文件 /etc/nginx/conf.d/synapse.conf 进行编辑。

$ sudo nano /etc/nginx/conf.d/synapse.conf

将以下代码粘贴到其中。

# enforce HTTPS
server {
    # Client port
    listen 80;
    listen [::]:80;
    server_name matrix.example.com;
    return 301 https://$host$request_uri;
}

server {
    server_name matrix.example.com;

    # Client port
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Federation port
    listen 8448 ssl http2 default_server;
    listen [::]:8448 ssl http2 default_server;

    access_log  /var/log/nginx/synapse.access.log;
    error_log   /var/log/nginx/synapse.error.log;

    # TLS configuration
    ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location ~ ^(/_matrix|/_synapse/client) {
            proxy_pass http://localhost:8008;
            proxy_http_version 1.1;

            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $host;

            # 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;
    }
}

完成后按 Ctrl + X 保存文件,并在提示时输入 Y。

验证 Nginx 配置文件的语法。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 Nginx 服务。

$ sudo systemctl restart nginx

步骤 8 - 安装 Coturn

要启用语音和视频通话,您需要安装一个 NAT 穿透中继(TURN)服务器。为此,我们将安装 Coturn 软件包。如果您不需要此功能,可以跳过本步骤。

Ubuntu 22.04 默认未提供 Coturn 软件包,原因是此前存在一个现已修复的 bug。不过,还有另一种方法可以通过非官方软件源安装 Coturn。您也可以选择使用 Docker 安装 Coturn,但我们将不采用该方法,因为它超出了本教程的范围。

添加非官方的 Coturn 软件源。

$ sudo add-apt-repository ppa:ubuntuhandbook1/coturn

安装 Coturn。

$ sudo apt install coturn

开放 TURN 和 UDP 端口。

$ sudo ufw allow 3478
$ sudo ufw allow 5349
$ sudo ufw allow 49152:65535/udp

为 Turn(turn.example.com)生成 SSL 证书。

$ sudo certbot certonly --nginx -d turn.example.com

生成一个认证密钥(secret)并保存到配置文件中。

$ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf

打开配置文件进行编辑。

$ sudo nano /etc/turnserver.conf

将以下行粘贴到其中,位于认证密钥下方。

use-auth-secret
realm=turn.example.com
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem

# VoIP is UDP, no need for TCP
no-tcp-relay

# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200

按 Ctrl + X 保存文件,并在提示时输入 Y。

重启 Coturn 以使配置生效。

$ sudo systemctl restart coturn

为 Coturn 创建一个新的 Synapse 配置文件。

$ sudo nano /etc/matrix-synapse/conf.d/turn.yaml

将以下行粘贴到其中。将 turn_shared_secret 的值替换为 \etc\turnserver.conf 文件中 static-auth-secret 的值。

turn_uris: [ "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True

按 Ctrl + X 保存文件,并在提示时输入 Y。

重启 Synapse 以使更改生效。

$ sudo systemctl restart matrix-synapse

步骤 9 - 访问 Matrix

您可以通过 Element 的 Web 客户端在 https://app.element.io 访问 Matrix Chat。点击“登录”(Sign in)按钮继续。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

点击 Homeserver 下方的“编辑”(Edit)链接。输入 matrix.example.com 作为您的 homeserver。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

如果客户端正确检测到您的 homeserver,边框和文字将变为绿色,否则将显示为红色。点击“继续”(Continue)按钮继续。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

点击“登录”(Sign in)按钮进行登录。系统会要求您创建一个安全且加密的备份。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

选择“输入安全短语”(Enter a Security Phrase)选项,创建一个每次登录时都需要的安全短语。点击“继续”(Continue)按钮继续。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

输入安全短语并点击“继续”(Continue)按钮继续。下一个界面会要求您再次确认。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

再次输入该短语并点击“继续”(Continue)继续。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

系统会提供一组安全密钥,在您忘记安全短语时可以使用。点击“下载”(Download)按钮保存它们。

点击“继续”(Continue)按钮继续。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

系统会要求您输入账户密码。输入密码并点击“继续”(Continue)按钮,完成加密备份的设置。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

如上图所示,我们创建了一个名为 Howtoforge 的群聊房间。

步骤 10 - 安装 Element

安装 jq 软件包,它是一个 JSON 文本处理工具。

$ sudo apt install jq

为 Element 创建一个目录。

$ sudo mkdir -p /var/www/element

创建一个新的文件,用于获取最新的 Element 发布版本。

$ sudo nano /var/www/element/update.sh

将以下行添加到其中。

#!/bin/sh
set -e

install_location="/var/www/element"
latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)"

cd "$install_location"

[ ! -d "archive" ] && mkdir -p "archive"
[ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}"
[ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz"

wget "https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive"
tar xf "archive/element-${latest}.tar.gz" -C "archive"

[ -L "${install_location}/current" ] && rm "${install_location}/current"
ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current"
ln -sf "${install_location}/config.json" "${install_location}/current/config.json"

按 Ctrl + X 保存文件,并在提示时输入 Y。

使该文件可执行。

$ sudo chmod +x /var/www/element/update.sh

运行该脚本来下载 Element。

$ sudo /var/www/element/update.sh

步骤 11 - 配置 Element

复制相同的 Element 配置文件。

$ sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json

打开配置文件进行编辑。

$ sudo nano /var/www/element/config.json

找到以下行。

"m.homeserver": {
    "base_url": "https://matrix-client.matrix.org",
    "server_name": "matrix.org"
},

将默认的 Matrix homeserver 地址修改为您的 homeserver,并删除 server_name 变量。

"m.homeserver": {
    "base_url": "https://matrix.example.com",
    "server_name": "matrix.element.com"  
},

如果您想在网站标题中使用自定义名称而非 Element,请更改品牌名称(brand name)。

"brand": "Howtoforge Example Chat",

将 disable_guests 变量设置为 true,以禁止访客(Guests)使用 Element。

"disable_guests": true,

按 Ctrl + X 保存文件,并在提示时输入 Y。

为 Element 客户端生成 SSL 证书。

$ sudo certbot certonly --nginx -d element.example.com

创建并打开文件 /etc/nginx/conf.d/element.conf 进行编辑。

$ sudo nano /etc/nginx/conf.d/element.conf

将以下行粘贴到其中。

server {
    listen 80;
    listen [::]:80;
    server_name element.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name element.example.com;

    root /var/www/element/current;
    index index.html;

    access_log  /var/log/nginx/element.access.log;
    error_log   /var/log/nginx/element.error.log;

    add_header Referrer-Policy "strict-origin" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;

    # TLS configuration
    ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
}

按 Ctrl + X 保存文件,并在提示时输入 Y。

验证 Nginx 配置文件的语法。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 Nginx 服务。

$ sudo systemctl restart nginx

您可以在浏览器中通过 URL https://element.example.com 访问 Element 客户端。登录后,您将被带到应用仪表盘。

在 Ubuntu 22.04 上搭建 Matrix Synapse 与 Element 聊天服务器

总结

至此,我们关于使用 Nginx 作为代理服务器,安装 Matrix Synapse 聊天服务器以及 Coturn 和 Element Web 客户端的教程就结束了。如果您有任何问题,请在下方评论中留言。