惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
V
V2EX
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
I
InfoQ
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
H
Help Net Security
腾讯CDC
D
Docker
P
Proofpoint News Feed
GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
在家庭的多个平板、手机和电脑之间传输各种内容的方法 - 少数派
2024-01-24 · via 少数派

我们会拥有很多不同的工作、学习加游戏的设备,比如电脑、平板、手机、电视、电冰箱等等。很多时候,如果这些设备之间可以彼此通信、分享内容,就会给我们的生活带来非常多的便利,比如可以从手机给电视分享一个视频,可以把e-ink阅读平板上的一段话发到电脑上,可以给孩子用的学习平板传一篇复习整理,可以把从电脑上下载的论文发到平板上阅读...…

虽然上面这些需求看起来十分简单,每一种都可以找到一些专门的手段来完成,但是用一个统一的,每一个设备只要设置过一次就可以放心用的方法确实很少。下面介绍一种通过Element App和自建的私有matrix服务器来完成这这些事情的方法。

先简单说一下这些这样做的好处:

  • 首先是使用方便,就相当于给每一个设备都装了一个微信一样,传数据各种内容就像发附件一样,而且不需要单独的手机号作为账号。
  • 消息在传输是加密的,服务器上的信息是私有的,可以保护好自己的隐私,不向第三方泄露数据。
  • 电脑、手机和平板都可以支持,使用Windows/Mac/iOS/Android/Linux都没有问题。
  • 成本很低,唯一需要花费的服务器使用阿里云的99元一年的服务器就可以(似乎腾讯云还有62元一年的),家用的话服务器负载完全不是问题。

再说明一下我们的方法需要做的主要事情:

  • 需要搭建一个私有的matrix服务器,并且通过nginx转发。
  • 需要在每一个设备上安装一个应用,也就是Element。

我们下面具体来说明一下。

搭建matrix服务器

满足matrix标准的服务器软件有很多种1,我们这里用来范例的是Element接手的python版本的服务器,也就是synapse2。跟着标准的安装文档3走其实安装很容易,我们这里就其中一条安装路径及其依赖来说一下。

我们假设主机的操作系统是Ubuntu(如果可以选择版本的话,可以优先最新的LTS 22.04),首先要创建一个独立的用户来运行synapse,假设用户的名字是myuser

# useradd -s /bin/bash -m myuser

Ubuntu 22.04默认Python版本是满足synapse的要求的,我们就可以开始安装了(都是安装在当前用户下)

# su myuser
$ cd
$ echo -e '\nexport PATH=$PATH:~/.local/bin\n'>> ~/.bashrc
$ export PATH=$PATH:~/.local/bin
$ pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --user --upgrade virtualenv
$ virtualenv --python=python3 synapse-env
$ source ~/synapse-env/bin/activate
$ pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --upgrade pip setuptools
$ pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com  matrix-synapse
$ mkdir ~/synapse
$ python -m synapse.app.homeserver \
         --server-name <YOUR_DOMAINNAME>:8888 \
         --config-path homeserver.yaml \
         --generate-config \
         --report-stats=no

上面的最后一步会生成一个homeserver.yaml文件,这个也就是synapse的配置文件。而--server-name 后面跟的<YOUR_DOMAINNAME>是服务器的地址,需要写上自己主机的域名,如果域名没有写公网ip地址也可以,如果不使用默认的端口,那么端口号也需要指定,我们这里写了8888。

接下来我们要编辑一下这个配置文件

server_name: "<YOUR_DOMAINNAME>:8888"
pid_file: /home/myuser/synapse/homeserver.pid
listeners:
# 如果不使用nginx等反向代理,port修改为8888
  - port: 8888
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1']
    resources:
      - names: [client, federation]
        compress: false
database:
  name: sqlite3
  args:
    database: /home/myuser/synapse/homeserver.db
log_config: "/home/myuser/synapse/<YOUR_DOMAINNAME>:8888.log.config"
media_store_path: /home/myuser/synapse/media_store
# 不允许注册
enable_registration: false
registration_shared_secret: "C#Sy5Ku:;.-ImM;XL.JLmP7UVRIA*wv88YJ5.O*oGT@~dEN7E1"
report_stats: false
macaroon_secret_key: "hx@cPfrLz4_VSrGUVTdSyKw:9jNk4yT89IXm0R5@Aa&iwBsrMk"
form_secret: "-lacOcm*00D5rg767h,eKNP6y;b3TE&u7qQVOU4-5@YM.Jz;1r"
signing_key_path: "/home/myuser/synapse/<YOUR_DOMAINNAME>:8888.signing.key"
# 私人使用不再需要matrix.org,修改为[]
trusted_key_servers:[]
  # - server_name: "matrix.org"

如果原始文件需要修改,我已经在上面的注释中说明了。我们先假设流量经过反向代理中转,直接把8888端口暴露在公网,那么就可以直接启动synapse的服务了

$ source ~/synapse-env/bin/activate
$ cd ~/synapse
$ synctl start

注意上面配置文件中明确的禁止了注册用户,也就是这个服务器只有我们自己手动添加的用户才可以访问,添加用户的方法如下

$ source ~/synapse-env/bin/activate
$ cd ~/synapse
$ register_new_matrix_user --config homeserver.yaml 
New user localpart [myuser]: eink-pad
Password: 
Confirm password: 
Make admin [no]: 
Sending registration request...
Success!

这样就创建了一个叫eink-pad的用户,注意密码一定不要设置一个太过普通的。

进入下一步之前,需要再说明一下:

  • 如果使用云服务器,需要在控制台的安全组中开放对于8888端口的访问。
  • 从安全的角度而言,如果自己拥有域名,使用letsencrypt给域名绑定一个证书,在https的连接下搭建synapse更好,访问也不容易被劫持。

安装和使用Element

Element secure messager是可以用于连接matrix服务的客户端软件,Windows/Mac/Linux都可以在官网下载,Android可以在Google Play安装,iOS可以直接去App Store 4安装。对于不能访问Google Play的设备,也可以到f-droid.org5去下载Element的apk安装包 之后拷贝到设备上安装,注意同一个版本对不同架构有不同的安装包,不要下载错了。

安装之后启动界面大概是这个样子的,

直接选择"I ALREADY HAVE AN ACCOUNT",应用会loading一会儿,然后就可以输入自己的服务器地址,也就是http://<YOUR_DOMAIN>:8888,然后输入用户密码就可以开始使用了。

在Windows的版本上是这个样子的

接下来,就可以给自己电脑、手机、平板、电视、电冰箱等等各自创建一个用户,然后就可以在应用中加好友,创建单聊和群聊,然后发消息,发视频,发链接,发文件了。需要注意的是,在添加好友时,需要以这样的方式来查找用户名 "@username:<YOUR_DOMAINNAME>:8888"。

总结

Element这一套在设置上还是比较简单的,除了家庭的不同设备之间的通信之外,也完全可以把Element + synapse的这一套东西作为小型团队或者小公司的内部通信工具。当然,如果人与人之间的通信,大概大家就会用更为常用的工具,比如微信等等了。所以Element用于在设备之间传东西反而更为切合。