使用synapse搭建matrix去中心化加密通信服务
前言
首先必须介绍下Matrix。Matrix是一个开源、可交互、去中心化的实时通信服务框架。使用Matrix可以搭建安全的通信服务器,配合支持 Matrix 的客户端可以实现个人、团队间的实时聊天交互。
与常见的QQ、微信、钉钉相比,Matrix的特点就是开源,可私有化部署,保证通信的安全和隐私。与Rocket.chat、MatterMost相比,matrix的特点还要再加上去中心化。每个运行Matrix的服务器都是一个节点,用户可以选择在任意节点注册、连接,同一个节点内的用户可以任意通信。同时,节点与节点之间也可以通过联锁(Federation)机制进行通信,实现不同节点的用户之间进行通信。
因为Matrix只是个框架,可以有很多实现,本文使用的synapse就是其中一个服务端实现。
除了安装服务端,本文还有安装element web端的步骤。
搭一个demo并不耗资源,加上postgresql数据库才用了200MB内存不到,如果用默认的sqlite数据库会更省内存。
大致效果:

安装服务端
- 先拉取docker镜像
docker pull matrixdotorg/synapse:latest
- 生成配置文件。注意根据实际修改宿主机挂载目录路径和matrix的host
docker run -it --rm -v /home/admin/apps/synapse/data:/data -e SYNAPSE_SERVER_NAME=matrix.demo.com -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate
- 在postgresql中创建用户和数据库(默认使用sqlite,只是体验的话可以跳过)
# 创建用户, 按提示指定用户密码
createuser --pwprompt synapse_user
# 创建数据库
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse
- 修改配置文件
/home/admin/apps/synapse/data/homeserver.yaml(默认用的sqlite,只是体验的话可以跳过)
database:
name: psycopg2
args:
user: synapse_user
password: <pass>
database: synapse
host: <host>
cp_min: 5
cp_max: 10
- 编写docker-compose.yaml
version: "3"
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: matrix-synapse
ports:
- 8008:8008
volumes:
- /home/admin/apps/synapse/data:/data
restart: on-failure:3
environments:
- "TZ:=Asia/Shanghai"
- 创建容器
docker-compose up -d
- 配置nginx反向代理http或https(略过)
- 创建用户(默认禁止公开注册)
# 根据提示输入用户名、密码、是否设置为管理员
register_new_matrix_user -c /data/homeserver.yaml <your matrix server host>
安装element web客户端
- 访问github下载release包 https://github.com/vector-im/element-web/releases
- 解压后,创建配置文件
cp config.sample.json config.json
- 编辑
config.json,设置default_server_config.m.homeserver.base_url为自己的matrix服务端地址 - 配置nginx指向解压后的目录
- 访问自建的element web客户端测试
补充
允许公开注册
- 修改synapse的
homeserver.yaml文件,设置以下参数
enable_registration: True
- 重启synapse
Element的Windows客户端指定默认服务器地址
- 在资源管理器中打开目录
%AppData\Roaming\Element% - 新建文件
config.json,输入以下内容
{
"default_server_config": {
"m.homeserver": {
"base_url": "<your matrix server host>"
}
}
}
参考
- matrix聊天快速指南
- 知乎 - “Your Element is misconfigured”错误的解决
- 知乎 - 自建聊天服务器、机器人与多平台桥接
- synapse官方文档
- Matrix实现的客户端
- GitHub - Element Web
- GitHub - Element Web配置说明
- 如何在CVM上安装Matrix Server
使用synapse搭建matrix去中心化加密通信服务的更多相关文章
- 呼叫河马——搭建在NGK公链上的去中心化智能合约DAPP
基于区块链技术发展的DAPP是一种分布式应用生态系统.目前最受DAPP欢迎的区块链有以太坊.EOS.波场等公链. 但由于当前 EOS资源模型的局限性,使得其使用成本较高.尽管 EOS的DPOS共识机制 ...
- 比特股-去中心化交易所, STEEM - 去中心化社区, EOS - 下一代智能合约
libsnark 是实现了 zkSNARK 模式的 C++ 库.zkSNARK 是一个证明/验证计算完整性的加密方法,也即零知识验证的算法, https://github.com/scipr-lab/ ...
- 细节讲解并实操下: 去中心化社交协议 ---- Nostr
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. GitHub : https://github.com/af913337456/ 出版的书籍: <1.0-区块链DApp开发实战&g ...
- 小众Tox——大众的“去中心化”聊天软件
★Tox是什么 一个反窥探的开源项目:一种基于DHT(BitTorrent)技术的即时通讯协议:一个为安全而生的加密通讯系统 .美国棱镜计划曝光后,一个名为 irungentoo 的牛人于17天后的2 ...
- 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店
今天我们来编写一个完整的去中心化(区块链)应用(Dapps), 本文可以和编写智能合约结合起来看. 写在前面 阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么除此之 ...
- ImCash:币安下架BSV之辩:规则、中立与去中心化
一种看法是:一个引用价格数据和执行交易的加密货币交易所,其业务决策往往是在链外发生的,不受制于严格的.类似于准宪法的链上规则的约束,加密货币交易所可以拒绝任何人喜欢的价格和交易,而且这样做并不会损害底 ...
- 理解去中心化 稳定币 DAI
本文转载于深入浅出区块链, 原文链接 随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器. 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机 ...
- 去中心化存储的QoS是什么?
我的前面一篇文章讲到如何做去中化存储,文其中提到了QoS (Quality of Service),那么QoS是什么?为什么QoS那么重要?下面将详细描述. 什么是QoS? 提到QoS,就要先了解Qo ...
- PPIO去中心化存储的了解和记录
目录 介绍 FileCoin P2P技术给去中心化云存储的好处 剩余资源的再次使用 市场竞争会激发民间的智慧 PPIO的2种冗余模式 全副本模式 纠删副本模式 为什么PPIO要设计支付代理节点? 一些 ...
- Filecoin:一种去中心化的存储网络(二)
开始初步了解学习Filecoin,如下是看白皮书的内容整理. 参考: 白皮书中文版 http://chainx.org/paper/index/index/id/13.html 白皮书英文版 http ...
随机推荐
- 【Ubuntu】5. 根目录结构+常用指令
根目录结构 /:根目录,是所有目录的起始点,所有文件和目录都在根目录下. /bin:重要的二进制应用程序,如ls.cp.mv等. /boot:启动配置文件,如内核.引导加载器等. /dev:设备文件, ...
- 2023-01-15:销售员。编写一个SQL查询,报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。以 任意顺序 返回结果表。 DROP TABLE IF EXISTS `com
2023-01-15:销售员.编写一个SQL查询,报告没有任何与名为 "RED" 的公司相关的订单的所有销售人员的姓名.以 任意顺序 返回结果表. DROP TABLE IF EX ...
- 2022-06-02:一开始在0位置,每一次都可以向左或者向右跳, 第i次能向左或者向右跳严格的i步。 请问从0到x位置,至少跳几次可以到达。 来自字节。 力扣754. 到达终点数字。
2022-06-02:一开始在0位置,每一次都可以向左或者向右跳, 第i次能向左或者向右跳严格的i步. 请问从0到x位置,至少跳几次可以到达. 来自字节. 力扣754. 到达终点数字. 答案2022- ...
- 2021-08-19:超级洗衣机。假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,
2021-08-19:超级洗衣机.假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的.在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机, ...
- django的部署在centos
虚拟环境 #virtualenv是一个创建独立python环境的工具 sudo pip install virtualenv #virtualenvwrapper将所有的虚拟环境统一管理,留意安装路径 ...
- 杭电多校第二场 DOS Card
杭电多校第二场 DOS Card 评价一下这道题:我写过最爽的线段树题. 这道题真的非常令人身心愉悦,非常厉害的一道线段树入门题.我写这个一次调试都没有,过了样例就交了就过了,一切都是行云流水. 这道 ...
- 项目小结:使用Docker迁移服务到离线服务器
前言 最近遇到的这个场景,需要把之前开发的一套系统迁移到一个离线的服务器上,这个服务器有点麻烦,接入VPN后通过堡垒机才能访问,速度也很慢,遇到不少坑,本文记录一下迁移过程. 基本信息 原本这套系统也 ...
- [ARM 汇编]进阶篇—异常处理与中断—2.4.1 异常处理概念
异常处理简介 在ARM汇编开发中,异常处理和中断是常见的概念,它们是对系统运行过程中出现的特殊情况进行处理的一种机制.异常处理和中断包括硬件异常.软件异常和外部中断等.当处理器遇到这些特殊情况时,它会 ...
- 【QCustomPlot】绘制 x-y 曲线图
说明 使用 QCustomPlot 绘图库辅助开发时整理的学习笔记.同系列文章目录可见 <绘图库 QCustomPlot 学习笔记>目录.本篇介绍如何使用 QCustomPlot 绘制 x ...
- 归并排序Java版(图文并茂思路分析)
归并排序 工作原理: 工作原理是将一个大问题分解成小问题,再将小问题分解成更小的.(乍一看就觉得是像一个递归)就像下图这样.然后不断的将其一份为二,分解成更小的排序. 我们设一个函数叫MergeSor ...