Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

记录一些搭建 synapse 的经历,采用 matrix-synapse-py3 包来安装,没有采用 docker,前端和后端没有分开

2022年12月:这次修改很多,想让安装步骤更清晰

配置 Postgresql

安装 PostgreSQL

sudo apt install postgresql

进入 postgres 用户

sudo su - postgres

创建用户,输入这一行后,会让你设置用户密码

createuser --pwprompt synapse_user     

创建数据库

createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse

生成需要长度的密钥

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

修改 hba_file

官网上关于 postgresSQL 需要修改 hba_file 的内容,有说明。如果提示 FATAL: Ident authentication failed for user "synapse_user",需要更换除了ident 以外的数据库认证方式。

这里说明一下如何找到 hba_file 的位置,进入 psql (需要先进入 postgres 用户

进入和退出 psql,使用 \q;

postgresSQL 询问 hba_file 的位置

SHOW hba_file;

安装 matrix-synapse-py3

sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
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
sudo apt install matrix-synapse-py3

跟随提示输入server name

配置 homeserver.yaml

sudo nano /etc/matrix-synapse/homeserver.yaml

在 Synapse version 1.73.0 的时候,homeserver.yaml 只保留有自动生成的最基本配置,别的需要看官方说明来增加

这部分参照官方说明来改,这里记录一些 homeserver.yaml 基本配置的说明

server_name: "SERVER_NAME"   # 这个 SERVERNAME,会被自动替换为,安装 matrix-synapse-py3 时输入的 server name
# public_baseurl:               # 这个参数,默认为 https://<server_name>/.如果你前端和后端没有分开,就不用写出这个参数来赋值
pid_file: DATADIR/homeserver.pid
listeners:
  - port: 8008                # 服务运行的端口号,可自己修改
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1']  # 建议删掉 '::1', 
    resources:
      - names: [client, federation]
        compress: false
# 数据库配置,建议修改为 Postgresql,配置如下面的注释部分
database:                        
  name: sqlite3
  args:
    database: DATADIR/homeserver.db
# database:   
#   name: psycopg2
#   txn_limit: 10000
#   args:  # 下面的三个参数,来自最开始新建的 postgres 数据库 
#      user: 
#      password: 
#      database: 
#      host: localhost
#      port: 5432

log_config: "CONFDIR/SERVERNAME.log.config"
media_store_path: DATADIR/media_store
signing_key_path: "CONFDIR/SERVERNAME.signing.key"

trusted_key_servers: # 如果包括 "matrix.org" ,就需要新增 suppress_key_server_warning,来阻止这个报错
  - server_name: "matrix.org" 
# suppress_key_server_warning: true  

这里记录一部分额外配置

  • 设置实例不开放注册

    enable_registration: false
    registration_shared_secret: "xxxxxxxx" # 配置了这个的话,实例不开放注册时,可由管理员创建新帐号
    registration_shared_secret_file: /path/to/secrets/file # 这是上一行的可替代做法,把registration_shared_secret以文本形式,放在外部文件中
    
  • Captcha 防机器人注册,如果开放了注册,会需要这个

    enable_registration_captcha: true
    recaptcha_public_key: "xxxxxxx"   
    recaptcha_private_key: "xxxxxxx"
    

打开这里,创建新网站,只能选择 reCAPTCHA v2 使用 “I’m not a robot” Checkbox

把得到的 public_key 和 private_key, 填到上面

  • 是否显示用户在线状态
presence:
  enabled: false   # 不显示,默认为 true
  • 如果需要设置邮件找回密码,在官方设置教程中,搜索 SMTP,参照配置

  • 配置 redis

    首先另外安装 redis (安装和设置教程很多,随便找一个就好),然后在 homeserver.yaml 添加

redis:
  enabled: true
  host: localhost
  port: 6379
  password: <secret_password>   # 如果在安装 redis 时,没有设置密码,就不需要这一行

注意:需要另外安装 redis,不然添加 redis 配置后,synapse 会运行错误

  • 如果不采用 8448 端口进行 federation(例如使用 CDN 时),需要增加
serve_server_wellknown: true

修改完 homeserver.yaml 之后,应该使用一下命令(尤其是第二个),重启服务

sudo systemctl enable matrix-synapse
sudo systemctl restart matrix-synapse
sudo systemctl status matrix-synapse

安装 TLS 证书和配置 NGINX

这里使用先生成证书,再配置 NGINX 的方法。如果需要直接配置 NGINX,由 certbot 自动获取证书的话,可以查看我的 Ubuntu|使用 Nginx 和 Certbot 申请 SSL 证书那篇。

snap package 是安装 certbot 最容易的方式

sudo apt install snapd
sudo snap install core

检查安装正常

sudo snap install hello-world
hello-world

安装 certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

打开 port 80443

ufw allow 80
ufw allow 443

尤其注意打开 port 80,容易忘记

获取证书。

sudo certbot certonly --nginx -d synapse.matrix.org

接下来按照提示,输入邮箱等信息,成功获取证书会有信息提示。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for synapse.matrix.org

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/synapse.matrix.org/fullchain.pem
Key is saved at: /etc/letsencrypt/live/synapse.matrix.org/privkey.pem
This certificate expires on 2022-07-15.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

If you like Certbot, please consider supporting our work by:

接下来安装 NGINX ,进行配置

sudo apt-get install nginx -y

新建并打开 NGINX 配置

sudo nano /etc/nginx/sites-available/synapse.matrix.org.conf

synapse.matrix.org.conf 填入配置

  • 如果使用 8448 端口进行 federation,参考官方示例 Configuring a Reverse Proxy

  • 如果使用 443 端口进行 federation,注释掉 8448 port 的两行,增加 .well-known delegation

    ## For the federation port
    # listen 8448 ssl http2 default_server;
    # listen [::]:8448 ssl http2 default_server;
    
    # 增加下面两部分
        location /.well-known/matrix/client {
            return 200 '{"m.homeserver": {"base_url": "synapse.matrix.org"}}';
            default_type application/json;
            add_header Access-Control-Allow-Origin *;
        }
    
        location /.well-known/matrix/server {
            return 200 '{"m.server": "synapse.matrix.org:443"}';
            default_type application/json;
            add_header Access-Control-Allow-Origin *;
        }
        
       location ....  # 原来有的别的部分
    

载入新配置

sudo ln -s /etc/nginx/sites-available/synapse.matrix.org.conf /etc/nginx/sites-enabled/

重启 NGINX,可能用到的一些 NGINX 相关命令

sudo nginx -t
sudo nginx -s reload     # 开启 nginx 之后,修改了配置,只需要用这个命令
sudo systemctl enable nginx
sudo systemctl restart nginx
sudo systemctl status nginx

测试 synapse 服务是否正常运行

官方的测试网站,测试 synapse 是否正常运行,如果连接没有问题,会显示

> Checks Success

以及

DNS results
server name/.well-known result contains explicit port number: no SRV lookup done

注册新用户

开始注册新用户

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

homeserver.yaml 的地址要写出来,不然会报错

按照提示为新用户增加信息

New user localpart: erikj
Password:
Confirm password:
Make admin [no]:   # no / yes
Success!

配置 turn 语音服务

根据官方教程,就可以配置了,但是官方教程没有指出

sudo nano /etc/default/coturn

去除 TURNSERVER_ENABLED=1 的注释

添加管理面板 synapse-admin

docker run -d -p 8090:80 awesometechnologies/synapse-admin # 8090 是 synapse-admin 出现的端口号

在设置 reverse-proxy 的时候,需要 access to the following endpoints:

  • /_matrix

  • /_synapse/admin

如果设置没问题,在 synapse-admin 页面输入 Homeserver URL 的时候,应该显示 synpase 服务器的版本号

手动重置用户密码

如果你忘记了自己的管理员帐号密码,又没有设置邮件服务,那你会需要这部分。

参考 MATRIX - reset password (synapse)SQLitepostgreSQL 有各自的操作

我的数据库是 postgreSQL,首先获得新密码的哈希值

hash_password

进入 postgreSQL

su postgres
psql

依次输入一些数据库操作

\connect synapse
 UPDATE users SET 
 password_hash='$2a$12$q...sp3m' WHERE name='@username:synapse.matrix.org';
\q
  • \connect synapse 是连接到 synapse 的数据库,这里的 synapse 是 你在 homeserver.yaml 写的数据库名字
  • password_hash 为上面计算出的新密码哈希值
  • WHERE name 后面要换成你自己的用户名

其它

  1. Hostwinds 更换IP

通过工具检测 ip 情况,国内叉国外勾,说明 ip 可能需要换一个了。

如果是 Hostwinds ,可以免费更换 ip 。这时候在中间灰色一栏选择 Manage IP’s ,再点击最右边的 Fix ISP Block 进行一个换 ip 的操作,耐心等待一会再ping。

注意:

  • 选择Fix ISP Block,不要选成Change Main IP了,后面那个换 ip 要加钱
  • account 信息中 country 必须填写 China,才有这个免费服务
  1. 删除 package 相关

查询目前存在的 package 名称和地址

dpkg-statoverride --list 

移除 package

dpkg-statoverride --remove <path>
  1. 永久移除文件的命令:rm
sudo rm /etc/nginx/sites-enabled/synapse.matrix.org.conf 
  1. 退出 > 的方法:输入\q;

  2. 配置和使用 ufw:记得要打开port 22,教程

  3. Nano操作

  • CTRL键 + 6 (或按住 转移 并移动光标)以标记设置并标记您想要的内容。
  • ALT + 6 用于复制标记的文本。
  • 用Ctrl+Y到上一页,Ctrl+V到下一页
  1. scp命令:用 scp 可以实现从当前用户拷贝文件到别的用户。

参考

感谢 狐狸chn,对我的网络之旅的帮助。

官方教程

[1] https://github.com/matrix-org/synapse/blob/develop/docs/setup/installation.md

[2] https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md

[3] https://github.com/matrix-org/synapse/blob/develop/docs/reverse_proxy.md

其它

[1] https://blog.southfox.me/2022/04/%E6%90%AD%E5%BB%BAMatrix%E5%8D%B3%E6%97%B6%E9%80%9A%E4%BF%A1%E6%9C%8D%E5%8A%A1/

[2] https://tech.minnix.dev/projects/build-your-own-matrix-server-behind-your-existing-nginx-reverse-proxy

[3] https://www.informaticar.net/install-matrix-synapse-on-ubuntu-20-04/

[4] https://www.atlantic.net/vps-hosting/how-to-install-matrix-synapse-on-ubuntu-20-04/

评论