自托管

15 篇文章

Matrix 通信及其生态服务自建流程和运维备忘

交流群:博客右上角"账号-联系支持服务",发送邮件获取Matrix房间邀请。 服务器要求 3种需求: 1. 只本地聊天 性能要求:2核2G,25G SSD。 网络要求:可拉取Docker Hub镜像和GitHub仓库。 推荐搭建环境:家庭NAS。 2. 异地使用+少数联邦 性能要求:2核4G,50G SSD。 网络要求:公网IPv4(用内网穿透也行)。可拉取Docker Hub镜像和GitHub仓库。联邦网络需要能访问指定域名。 推荐搭建环境:家庭NAS(具有透明代理环境)或海外VPS。 3. 全球无障碍通信 性能要求:至少2核4G,50G SSD。如果有大房间聊天和保存大量媒体文件的需求,则推荐2T以上 SSD,或者一台独立的数据库服务器和S3存储盘。 网络要求:可访问全球互联网的服务器

家庭路由和组网分流方案

花了很多时间解决家庭路由问题。 最一般的用途上,电信运营商提供光猫,光猫兼路由功能,上门安装的师傅包办了,稍微大户一点的家庭,会需要路由器,乃至AP、交换机,这些产品都是出厂配置好了的,照着说明书几步就搞定。 难在想要自定义路由,想要有软件的功能。 我实际需求中得路由器上解决的,包括并不限于: 1. 网络代理和分流 2. 异地组网 3. 网络监控和上网保护 4. 游戏加速器 5. 网络容灾(这个范围很广,例如路由器一级的ddns、内网穿透) 不在路由上解决行不行?可以,但通常更复杂,使用起来更麻烦,也有更多不可预知的故障。举例来说:网络代理和异地组网,这些本质上要接管全局的网关流量,如果不用路由器上的透明化方案,那得在每个设备上都安装客户端(如果有相应软件的话),并且有些功能可能无法使用,例如24小时在线的服务,这很重要,例如家里的NAS服务器掉线了,在外地可以登录到路由器检查情况,并重新唤醒设备。 既然网关上的软件功能必不可少,针对不同的路由拓扑又产生了很多不同的实施方案,这里不探讨各种方案,而是直接给出我认为目前家庭(包括个人)

Matrix 安装 Element Call 加密通话组件教程

交流群:博客右上角"账号-联系支持服务",发送邮件获取Matrix房间邀请。 Matrix 通信网络协议最常用的客户端 Element 过去一直使用免费的 Jitsi 作为群组视频会议组件。一对一音视频通话则相对复杂:如果双方客户端具有公网 IP,则可以建立点对点连接;否则需要通话发起方的服务端托管 TURN 服务来绕过网络地址转换 (NAT),中继 WebRTC 连接。 现在这一情况已得到改善。Elment.io 开源了原生的 Matrix 视频会议应用程序 element-call。它的优势在于端到端加密、流畅性,以及基于 LiveKit 的可扩展后端;缺点是与 Jitsi 相比功能仍较为简陋,例如缺少背景虚化、主持功能等。 Element Call 客户端组件现已内置于 Element 桌面和网页端,并在新一代移动端 Element X 上作为唯一的通话组件。这意味着从

给 Matrix Synapse 添加中文搜索

Matrix很好很强大,一般服务端都用Synapse,支持的协议最完善,然而它的中文搜索很难用,原因在于PostgreSQL未能正确的给中文分词。另一个服务端项目dendrite 支持CJK (中日韩)分词,也只是略好一些,并且那个项目开发也几乎停滞了。 开源IM软件中原生支持中文搜索的有Mattermost,我参考它给Synapse开发了一个方案,具体的做法是 使用 Zhparser 插件版 Postgres,给数据表添加一个字段,改少量Synapse代码。通过文件映射的方式,尽可能减少后期维护成本。

Ghost进阶系列:填坑总结

更新时间:2023年3月5日20点32分 除非 Ghost 有你不可替代的功能需求,或者喜欢上手高难度,否则我建议你放弃。 备份和更新 Docker 版不支持完整的 Ghost CLI,例如通过命令行进行备份,备份参考文档:如何重新安装幽灵。 Docker容器更新办法: 一种方式是通过 Watchtower 自动更新,比较省事,但是可能会出问题,博客掉线了可能都不知道。 另一种方式是手动更新: * 初始搭建时选择 ghost:latest 这个名称的镜像。 * 更新只需重新下载,镜像同名但是最新版本,新镜像将会替换旧镜像。 * 然后将正在运行的 Ghost 容器复制一份。 * 关闭旧容器并删除旧容器上的端口映射。 * 启动新镜像的容器并选择复制旧容器的设置和数据,重新映射端口。 * 博客已经运行在新容器上,数据没有损失。 * 运行一段时间后再决定是否删除旧容器和镜像。这种更新方式比较安全。 扩展阅读:如何更新群晖Synology的Docker容器_哔哩哔哩_bilibili 问题1:每次系统重启或容器更新时 Ghost

listmonk:优秀的Newsletter自托管工具

更新时间:2023年8月16日06点59分 Ghost大概是最佳的Newsletter[1]自托管方案,但一来它的学习与搭建成本比较高(参考我的#Ghost 系列博文),二来在Newsletter方面也有诸多限制:不支持SMTP,只支持Mailgun的API。 假设你拥有可用于批量投递的企业邮箱(从知名品牌服务商那儿获取的个人邮箱和非独立公网环境下自建的邮箱并不适合用来发送批量邮件——这应该成为常识),希望进行Newsletter形式的内容创作,Listmonk可以用作Ghost的补充工具。或者你并不需要一个博客,而是将listmonk单独使用——提供给访客一个简单的订阅表单,文章不发布于网站,只从邮件推送,此外也支持短信、手机通知,这个demo可以体验完整的功能,这里主要介绍如何安装。 官方文档介绍的是用docker-compose安装,默认配置也将安装Postgres DB,Postgres是必须的,许多Docker项目都依赖Postgres数据库,我建议独立安装,让许多服务连接同一个容器,安装教程参考postgres - Official Image | Docke

Docker版PostgreSQL升级迁移(慎用Watchtower更新基础服务)

Docker容器更新是个麻烦事,我的话因为大部分服务只有自己在用,也做了数据持久化和备份,就用Watchtower一键更新,这样做很方便但也可能会产生问题,因为有些项目版本迭代会导致配置、数据以及网络环境不兼容,我碰到过的就有:Alist从V2升级到V3导致配置重置;一个更新失败导致后续所有的容器丢失(大坑,建议还是一个一个更新而不是全部一起更新)等等。这次又作死更新了postgres,发现大版本已经从14升级到15了,提示数据库不兼容: PostgreSQL database files are incompatible with server. 迁移方式 官方支持的方式: 1. pg_dump或pg_dumpall,这种方式将数据库转储为一个sql文件,在新旧数据集导出和导入,缺点是速度较慢,迁移多个数据库比较麻烦,似乎也不支持非文本数据,我没有测验过,参考教程1、教程2; 2. pg_upgrade,此种方式不需要中间文件转储,速度较快,但是除了要复制数据文件,还要手动复制容器中

Ghost进阶:存储库和编辑器

更新时间:2022年10月22日15点37分 存储库的选择 Ghost编辑器默认将图片上传在本地content/images文件夹,支持第三方存储库,已提供的适配器包括Http-Store 、WebDAV、GitHub、Amazon S3、七牛云、又拍云、阿里云 OSS、Azure 云存储等,其中有些可能不兼容Ghost 4.0及以后版本。另外可以自己开发适配器——Docker部署的话,需要重新封装镜像,这为升级带来不便。 默认的本地存储库有许多缺点: * 尽管图片作为静态内容,可以用CDN缓存,但是和文章在同一个源站还是会占用比较大的上行带宽和流量; * Ghost对隐私的保护是不够的,照片通常会带有包含地理位置等隐私信息的元数据,虽然博文默认加载的是压缩和删除过元数据的照片,但是原始照片也保存在本地存储库中,可以以某种方式访问到; * Ghost没有图片管理界面,删除只能在文件夹中进行,不管博客前端是否加密、文章是否发布,上传的图片可通过直链公开访问的,因此,Ghost可以当作一个简单的图床,但最好不要把它当作个人日记本上传私密照片。 手动压缩图片和删

使用C2 Object Storage作为图床

C2 Object Storage是群晖提供的云存储服务,有15G/月的免费额度(存储空间与流量),付费计划也相当实惠,大陆地区可直接访问北美和欧洲两个数据中心,实测下载速度可达5M/s左右,这两个数据中心的额度是彼此独立的,如果你拥有群晖账号,则可以一键开通C2并在这两个区域任意切换,Synology 知识中心-C2 Object Storage可以找到有关安装与使用的说明。 C2 Object Storage兼容大部分S3 API,在我看来,比较大的缺憾是不支持网站设定(文件直链,即链接域名不可自定义,并且是动态生成的:以Endpoint+有效期签名的形式)和CORS(跨站资源共享),不过,有办法解决这些问题,至少作为图床来说是足够的。 这得益于Alist这款开源文件列表托管程序,它可以将阿里云盘、OneDrive、蓝奏云、FTP、AWS S3、WebDAV、百度网盘、夸克网盘、一刻相册等个人网盘、对象存储服务OSS转为Web目录和WebDAV,并支持将其中的文件跨域直链,前提是你拥有一台24小时运行的服务器,并用Docker的方式部署它,部署的教程参考官方文档即可。

修复Amazon SES 邮箱无法连接的故障

我邮箱收到一封系统退信,显示无法连接到亚马逊的中继服务器: This is the mail system at host mail.nigzu.com. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster. If you do so,