首页 > 其他分享 >搭建一个自用的端到端加密服务器 - 以 Matrix-Conduit 为后端

搭建一个自用的端到端加密服务器 - 以 Matrix-Conduit 为后端

时间:2023-06-21 19:44:06浏览次数:52  
标签:Conduit 加密 matrix conduit sudo element gzip server Matrix

Conduit 是一个用 Rust 编写的、支持基础Matrix 协议 的服务器后端。不建议用在生产环境中,因为功能真的很少,只支持基础的加密聊天、语音视频、文件分享,文档又少。如果买了小内存机、想弄一个自用的端到端加密聊天服务器的可以试试。

注意:

  • 它要求 glibc 版本在 2.29 以上,所以至少需要 Debian 11, Ubuntu 20 或 Arch 大法(大雾)。
  • 在 electron 界面注册的第一个用户为 admin,后续为普通。把普通用户拉入 Admin Room 就可以变成 admin 了。无需手动添加。

安装笔记[1]如下:

# 安装 Element-Web(可选,若使用客户端可以忽略)
wget https://github.com/vector-im/element-web/releases/download/v1.11.33/element-v1.11.33.tar.gz # 最好更改为最新版本,下面一并更改
tar xf element-v1.11.33.tar.gz 
cp element-v1.11.33/config.sample.json element-v1.11.33/config.json 
vim element-v1.11.33/config.json # 修改 m.homeserver 为你的服务器
# gzip 静态压缩(可选,推荐)
for i in element-v1.11.33/bundles/*/*.js; do 
    if [ `ls -l $i | head -1 | awk '{print $5}'` -gt $((1024)) ]; then
        gzip -k $i -7
    fi
done
for i in element-v1.11.33/bundles/*/*.css; do 
    if [ `ls -l $i | head -1 | awk '{print $5}'` -gt $((1024)) ]; then
        gzip -k $i -7
    fi
done

sudo mv element-v1.11.33 /var/www/element
sudo vim /etc/nginx/nginx.conf # 看下面,这里使用 nginx 作为代理服务器

# 安装 conduit 后端
sudo wget -O /usr/local/bin/matrix-conduit "https://gitlab.com/famedly/conduit/-/jobs/artifacts/master/raw/build-output/linux_amd64/conduit?job=docker:master" && sudo chmod +x /usr/local/bin/matrix-conduit
sudo vim /etc/systemd/system/conduit.service # 看下面
sudo mkdir /etc/matrix-conduit
sudo vim /etc/matrix-conduit/conduit.toml # 看下面
sudo systemctl daemon-reload
sudo systemctl start conduit

/etc/nginx/nginx.conf

...
http {
	...
    tcp_nopush on;
    tcp_nodelay on;
	gzip on; # gzip 配置
    gzip_min_length 1k;
    gzip_comp_level 5;
    gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css application/json;
    gzip_static  on;  # 若不用 element-web 或没有前述 gzip 静态压缩,可以删除此行
    server { # https 跳转
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        location / {
            return 301 https://$host$request_uri;
        }
    }
    server {
        listen       443 ssl http2; # 支持 http2
        server_name  你的域名;
        root /var/www/element; # 若不用 element-web 可删除
        
        location /.well-known/matrix/client {
            return 200 '{"m.homeserver": {"base_url": "https://你的域名"}}';
            default_type application/json;
            add_header Access-Control-Allow-Origin *;
        }


        location /.well-known/matrix/server {
            return 200 '{ "m.server": "你的域名:443" }';
            default_type application/json;
            add_header Access-Control-Allow-Origin *;
        }

        location ~ ^(/_matrix) {
            proxy_pass http://127.0.0.1:8008;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $host;
            client_max_body_size 40M; # 根据 conduit.toml 中设置决定
            proxy_http_version 1.1;
        }
    }
}
...

/etc/systemd/system/conduit.service

[Unit]
Description=Conduit Matrix Server
After=network.target

[Service]
Environment="CONDUIT_CONFIG=/etc/matrix-conduit/conduit.toml"
User=conduit
DynamicUser=yes
LogsDirectory=matrix-conduit
StateDirectory=matrix-conduit
Restart=always
ExecStart=/usr/local/bin/matrix-conduit

[Install]
WantedBy=multi-user.target

/etc/matrix-conduit/conduit.toml

[global]
server_name = "你的域名"
database_path = "/var/lib/matrix-conduit/"
database_backend = "rocksdb"
port = 8008
max_request_size = 40_000_000 # in bytes
allow_registration = true
allow_federation = true
trusted_servers = ["你的域名"]
log = "warn,state_res=warn,rocket=off,_=off,sled=off"
address = "127.0.0.1" 


  1. 由于很多地方需要手动更改或者需要编辑配置文件,这段 bash 并不能作为一键脚本复制粘贴运行。 ↩︎

标签:Conduit,加密,matrix,conduit,sudo,element,gzip,server,Matrix
From: https://www.cnblogs.com/wsm25/p/17496925.html

相关文章

  • 资本宠儿“EDX Markets”上线,传统金融帝国即将复刻到加密世界?
        如今是加密世界,正呈现出魔幻般的景象。   一方面,Binance、Coinbase等加密原生机构正面临着SEC等监管机构的疯狂打击,而另一方面,传统金融世界似乎却加速了入局的步伐,贝莱德申请BTC现货ETF、德意志银行申请数字资产牌照、富达正考虑收购灰度(Grayscale),而这种趋势仍在继续。......
  • 登录、token相关,rsa加密
    实例点击查看代码defrsa_encrypt(msg):"""RSA加密:parampub_key_str:公钥:parammsg:待加密信息:return:"""msg=msg.encode('utf-8')length=len(msg)default_length=117#公钥加密publ......
  • python基础之编码和加密
    一、base64importbase64#编码s1='hello'result=base64.b64encode(s1.encode())#只能对bytes类型编码,结果为bytes类型print(result.decode())#解码为字符串#解码res="6IuR5rWpIGlzIGdvb2Q="s2=base64.b64decode(res.encode())#只能对bytes类型解码,结......
  • 一键hook js Crypto库的加密方法
    一键hookjsCrypto库的加密方法//一键HookCrypto几个基本的方法AESDES3DESHmacSHARSA(function(){'usestrict';console.log("Hook脚本初始化成功");//过dubuggervarconstructorEx=constructor;Function.prototype.constructor=func......
  • js加密与java解密的RSA(公钥/私钥)算法
    前言:公司用的加密算法是对称密钥加密算法,服务器上的公钥与客户端的私钥都是相同的,如果不小心泄露或者通过反编译软件把客户端重新编译就会泄露密钥,这样加密后的数据就不安全了。商量使用非对称密钥RSA来解决这种问题,非对称密钥分为公钥和私钥,公钥可以公开给客户端分发给所有......
  • Base64加密算法以及在IDA中的识别
    Base64加密算法以及在IDA中的识别一、何为Base64算法?Base64是一种基于64个可打印字符来表达二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元。对于某个可打印字符。为什么这样说呢?我们首先了解一下Base64是如何设计的。3个字节有24个比特,在Base64中6个比特一......
  • druid数据库密码加密
    pom.xml<!--druid配置文件数据库密码加密--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.11</version>......
  • hdfs的透明加密记录
    1、背景我们知道,在hdfs中,我们的数据是以block块存储在我们的磁盘上的,那么默认情况下,它是以密文存储的,还是以明文存储的呢?如果是明文存储的,那么是否就不安全呢?那么在hdfs中是如何做才能做到数据的透明加密呢?2、常见的加密层级应用层加密:这是最安全和最灵活的方法。加密内容最......
  • hdfs的透明加密记录
    1、背景我们知道,在hdfs中,我们的数据是以block块存储在我们的磁盘上的,那么默认情况下,它是以密文存储的,还是以明文存储的呢?如果是明文存储的,那么是否就不安全呢?那么在hdfs中是如何做才能做到数据的透明加密呢?2、常见的加密层级应用层加密:这是最安全和最灵活的方法。加密内容最......
  • Java:使用bcrypt对密码加密和验证
    文档https://mvnrepository.com/artifact/org.mindrot/jbcrypthttp://www.mindrot.org/projects/jBCrypt/依赖<dependency><groupId>org.mindrot</groupId><artifactId>jbcrypt</artifactId><version>0.4</version><......