使用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 ...
随机推荐
- 【Linux】文件及用户组合权限管理
第二周1.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录 ls -a /etc/[^[:alpha:]][:alpha:]* 2.复制/etc目录下所有以p开头 ...
- Spring中TranslationDefinition接口规定的七种类型的事务传播行为及其意思
- 2022-01-30:最小好进制。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的
2022-01-30:最小好进制. 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制. 以字符串的形式给出 n, 以字符串的形式 ...
- 贪心算法基础及leetcode例题
参考 理论 本质:找到每个阶段的局部最优,然后去推导得到全局最优 两个极端:常识&&很难: 很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会 ...
- 一文读懂面试官都在问的Fastjson漏洞
Fastjson1.2.24-RCE漏洞 漏洞简介 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符 ...
- ping不通能curl通
今天发现一个域名或ip居然在ping不通的情况下能curl通,以前的思维定式直接给整破防了啊!!! 涨见识了,具体原因和原理后续补充~
- 使用 ChatGPT 的 7 个技巧 | Prompt Engineering 学习笔记
概述 前段时间在 DeepLearning 学了一门大火的 Prompt 的课程,吴恩达本人授课,讲的通俗易懂,感觉受益匪浅,因此在这里总结分享一下我的学习笔记. 为什么要学习 Prompt ? 因为 ...
- Galaxy Release (v 21.05),众多核心技术栈变更
2021年6月初,Galaxy Project 正式发布了 release 21.05 版本:随后6月中旬,发布该版本的 announcement 文档.这里总结一下该版本一些主要的更新内容,为关注和 ...
- 移动App测试概述:移动App特性
移动App测试概述:移动App特性 移动App在现代人的日常生活中扮演着越来越重要的角色,因而对于它们的质量和稳定性的要求也越来越高.为了确保App的质量,开发商需要进行充分的测试和检验.本文将讨论移 ...
- 【HMS Core】Health Kit云测数据接入相关问题
[问题描述1] 1.由于存在IOS.android.微信小程序,计划接入"云侧数据开放服务",使用模式为我们自己的服务端去同步华为健康数据,终端通过服务端获取最新的数据. 2.在 ...