静看光阴荏苒
不管不顾不问不说也不念

Conduwuit:功能齐全的Conduit分支

Conduwuit是一个高性能的Matrix homeserver,配置简单,资源占用少。

与Conduit的差异:https://conduwuit.puppyirl.gay/differences.html

在开始部署之前你可能需要先添加3个DNS解析记录:

woot.example.com // Conduwuit需要
coturn.example.com // 自建TURN服务器需要
cinny.example.com // 自建Cinny客户端需要

我这里使用Docker的方式部署。先安装Docker、NGINX、Certbot:

apt -y update
apt -y install curl wget nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建目录和compose文件:

cd /opt && mkdir conduwuit && cd conduwuit && nano docker-compose.yml

我的compose配置如下:

services:
  homeserver:
    container_name: conduwuit-server
    image: girlbossceo/conduwuit:latest
    restart: unless-stopped
    ports:
      - 6167:6167
    volumes:
      - db:/var/lib/conduwuit
      #- ./conduwuit.toml:/etc/conduwuit.toml
    environment:
      CONDUWUIT_SERVER_NAME: woot.example.com
      CONDUWUIT_DATABASE_PATH: /var/lib/conduwuit
      CONDUWUIT_PORT: 6167
      CONDUWUIT_MAX_REQUEST_SIZE: 80000000
      CONDUWUIT_ALLOW_REGISTRATION: 'true'
      CONDUWUIT_REGISTRATION_TOKEN: 'tosimple'
      CONDUWUIT_NEW_USER_DISPLAYNAME_SUFFIX: '"🌈"'
      CONDUWUIT_ALLOW_FEDERATION: 'true'
      CONDUWUIT_ALLOW_PUBLIC_ROOM_DIRECTORY_OVER_FEDERATION: 'true'
      CONDUWUIT_ALLOW_UNSTABLE_ROOM_VERSIONS: 'true'
      CONDUWUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
      CONDUWUIT_TRUSTED_SERVERS: '["matrix.org"]'
      CONDUWUIT_FEDERATION_TIMEOUT: 3600
      CONDUWUIT_URL_PREVIEW_DOMAIN_CONTAINS_ALLOWLIST: '["*"]'
      CONDUWUIT_TURN_URIS: '["turn:coturn.example.com?transport=udp"]'
      CONDUWUIT_TURN_SECRET: '2dVaXkuMU4mQFvTWnVgh0aqbgexzFPwSoY2hMS7GNAytF56IfsMnlBpm0MYRvEdf'
      CONDUWUIT_WELL_KNOWN__CLIENT: 'https://woot.example.com'
      CONDUWUIT_WELL_KNOWN__SERVER: 'woot.example.com:443'
      #CONDUWUIT_LOG: warn,state_res=warn
      CONDUWUIT_ADDRESS: 0.0.0.0
      #CONDUWUIT_CONFIG: '/etc/conduwuit.toml' # Uncomment if you mapped config toml above

  turn:
    container_name: coturn-server
    image: docker.io/coturn/coturn
    restart: unless-stopped
    network_mode: "host"
    volumes:
      - ./coturn.conf:/etc/coturn/turnserver.conf

volumes:
    db:

至少需要修改以下配置:

CONDUWUIT_SERVER_NAME // 部署Conduwuit实例的域名
CONDUWUIT_TURN_URIS // 部署Coturn TURN服务的域名
CONDUWUIT_TURN_SECRET // Coturn的验证密钥,可使用pwgen命令生成,与coturn.conf内的static-auth-secret配置需一致。
CONDUWUIT_WELL_KNOWN__CLIENT // .well-known相关,如没有特殊需求与conduwuit实例的域名保持一致。
CONDUWUIT_WELL_KNOWN__SERVER // .well-known相关,如没有特殊需求与conduwuit实例的域名保持一致。

建议修改以下配置:

CONDUWUIT_REGISTRATION_TOKEN // 注册时需要填写的TOKEN,类似于注册邀请码,防止滥用。

完整的conduwuit配置文件在此,如果上述的配置不满足你的需求,可按自己的需要进行修改。

之后新建coturn配置文件:

nano coturn.conf

我的配置如下:

use-auth-secret
static-auth-secret=2dVaXkuMU4mQFvTWnVgh0aqbgexzFPwSoY2hMS7GNAytF56IfsMnlBpm0MYRvEdf
realm=coturn.example.com

static-auth-secret可以使用pwgen生成,如没有pwgen工具可先安装:

apt -y install pwgen

然后执行如下命令:

pwgen -s 64 1

启动:

docker-compose up -d

配置NGINX反向代理,新建NGINX站点配置文件:

nano /etc/nginx/sites-available/conduwuit

写入如下配置:

server {
    listen 80;
    server_name woot.example.com;
    merge_slashes off;
    client_max_body_size 80M;

    location / {
        proxy_pass http://127.0.0.1:6167$request_uri;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_connect_timeout 5m;
    }

    location /_matrix/ {
        proxy_pass http://127.0.0.1:6167$request_uri;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_connect_timeout 3600s;
        proxy_read_timeout 3600s;
    }

    location /_conduwuit/ {
        proxy_pass http://127.0.0.1:6167$request_uri;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_connect_timeout 5m;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/conduwuit /etc/nginx/sites-enabled/conduwuit

签发SSL证书:

certbot --nginx --email imlala@example.com --agree-tos --no-eff-email

重新编辑刚启用的站点配置文件:

nano /etc/nginx/sites-available/conduwuit

启用HTTP2并增加一个8448端口的监听:

listen 8448 ssl http2;
listen 443 ssl http2; # managed by Certbot

如图所示:

重载NGINX使配置生效:

systemctl reload nginx

打开Matrix Federation Tester输入你的conduwuit实例域名进行测试,确保一切正常:

至此Conduwuit服务端就部署完成了。

现在可以使用你喜欢的客户端注册账号并登录:https://matrix.org/ecosystem/clients/

这里我推荐Cinny,快速、界面美观,唯一的不足是缺少音视频通话功能,不过我也不用这个功能。再就是E2E加密的房间可能会偶尔出现消息无法解密的问题。

你可以直接使用官方的Web APP:https://app.cinny.in/,或者也可以自建,下面简单说一下如何自建cinny。

假设你的服务器上已经有NGINX,一般都是和Conduwuit部署在同一台服务器上,先下载cinny的压缩包解压:

cd /var/www
wget https://github.com/cinnyapp/cinny/releases/download/v4.2.3/cinny-v4.2.3.tar.gz
tar -xzvf cinny-v4.2.3.tar.gz
mv dist/ cinny/
chown -R www-data:www-data cinny/

编辑cinny的配置文件:

nano cinny/config.json

修改如下配置:

{
  "defaultHomeserver": 0, // 改成0,设置默认使用自建的conduwuit服务器。
  "homeserverList": [
    "woot.example.com", // 设置你的conduwuit实例域名。
    "matrix.org"
  ],
  "allowCustomHomeservers": false,

  ...

  "hashRouter": {
    "enabled": true, // 启用hashRouter
    "basename": "/"
  }
}

新建NGINX站点配置文件:

nano /etc/nginx/sites-available/cinny

写入如下配置:

server {
    listen 80;
    server_name cinny.example.com;
    index index.html;
    root /var/www/cinny;
    client_max_body_size 80M;
    add_header Access-Control-Allow-Origin *;
}

启用站点:

ln -s /etc/nginx/sites-available/cinny /etc/nginx/sites-enabled/cinny

签发SSL证书:

certbot --nginx --email imlala@example.com --agree-tos --no-eff-email

访问cinny.example.com注册一个账号,第一个注册的账号自动成为管理员,注意注册的时候需要填写TOKEN,这个TOKEN是之前在compose内设置的值:“tosimple”(如果你没有修改的话)

登录进去后应该先配置交叉签名,用于备份E2E加密的聊天记录、设备验证:

这里可以选择直接生成Key或者设置安全短语,建议使用安全短语,设置安全短语后也会自动生成Key,这里的安全短语实际就相当于一个二级密码,方便日后使用,不然你每次恢复聊天记录都得输入一长窜的Key,非常不方便:

登出账号重新登录进来就可以点如图所示的按钮,输入你的Key或者安全短语恢复你的加密聊天记录:

Conduwuit和Conduit一样自带一个管理员房间,可以在这个房间内输入相关命令来管理服务器:

赞(0)
未经允许不得转载:荒岛 » Conduwuit:功能齐全的Conduit分支
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿