天空 Blond - Hetzner
type: channel
link: https://skyblond.info/tag/Hetzner/
items: 【歪门邪道】在纯IPv6服务器上搭建Quassel Core
items: 【歪门邪道】使用Hetzner Storage Box代替Google Drive和DropBox

【歪门邪道】在纯IPv6服务器上搭建Quassel Core
type: item
date: 2023-06-02T22:33:00+08:00
description: 突然想起来我在Hetzner那里还有一台闲置的纯IPv6服务器。想来想去，闲着也是闲着，不如拿来挂IRC。本文记述在这台服务器上搭建Quassel core的艰难坎坷。太长不看：IPv4的命还长着呢。IRC虽然我还年轻，但我觉得IRC这个东西挺酷的。尽管IRC并不是去中心化的，也不能发送文本之外的内容，但它可以self-host啊。如果我没记错的话，能够self host并且能做到不需要购买商业许可的聊天方案里，就只有Element/Matrix和IRC了，其他像是什么Threema OnPerm这些基本都要支付授权费。而即便是现代化的Element/Matrix，我认为在用户体验上也不是很能打IRC。当然，Element/Matrix在功能上更复杂，也更注重安全，同时还能够在不同服务器间互联，但从我的体验来说，Matrix这一套使用下来还是多多少少有一些恼人的Bug，十分影响体验；而IRC赢就赢在了功能简单，虽然打不过Matrix，但用起来没有问题，而且很纯粹。高情商：纯粹；低情商：简陋。总之，Matrix我也有在用，但是目前为止我个人更偏向IRC一些。但是IRC有一个致命的缺点，因为他太简单了，服务器甚至不会为你存储消息。也就是说，如果别人发消息时你没在线，那你就收不到消息了。这里我就不多费笔墨在介绍IRC协议上了。IRC协议作为一个已经发布了35年的经典协议，而且现今仍在使用，我想网络上一定有不少介绍和入门资料。Quassel既然IRC服务器不给我们存储消息，那我们就找一个服务器替我们挂机就是了。在众多IRC客户端中，Quassel是一个采用分离结构的IRC客户端。它分为Quassel Core和Quassel Client。其中Core的部分负责与IRC服务器交互，而Client则负责与Core交互。Core会一直在服务器上运行，与IRC服务器保持连接、接收指定频道的消息并将其存储到数据库中。而Client则运行在PC上，与Core交互，接收来自IRC的消息，也可以从数据库中调取以往的消息。如果你更倾向于在浏览器中使用IRC，你可以尝试诸如Convos等网页客户端。Convos支持在服务端持久化保存收到的消息，同时提供了一个十分易用的网页界面。我个人更喜欢在PC上以应用程序的方式使用IRC，所以我选择Quassel。安装废话不多说，我们不妨切入主题，直接说安装的部分。Quassel Core可以在没有任何依赖的情况下独立运行，此时数据存入SQLite数据库。这个数据库对于少量数据还可以应付，如果是长期使用积累下来的IRC消息，在数据量很大的情况下官方也有提示，使用SQLite数据库可能会导致拉取过往消息时出现超时或失败的情况。官方推荐使用PostgreSQL作为数据库。听人劝吃饱饭，我也决定使用PostgreSQL数据库。此外，我还想使用TLS加密Quassel Client与Core之间的通讯，我原本想使用Tailscale，但我又想使用公网访问，想来想去发现Quassel Core没办法在一个端口上提供两个不同的TLS证书，最终还是以公网访问为主，通过增加DNS的A记录指向Tailscale的IP来实现tailscale访问。具体的安装流程如下：安装Docker使用Docker安装PostgreSQL安装Quassel Core（在我的电脑上）安装Quassel Client并配置Quassel Core虽然在Docker中使用PostgreSQL数据库并不是生产环境的最佳实践，但从安全角度来说可能是最方便的。我在映射端口时可以直接把数据库端口映射到127.0.0.1上，而无需使用防火墙或修改数据库配置来实现。数据库的数据会映射到宿主机上，所以完全不需要担心数据丢失的问题。Docker我真是万万没想到，安装docker的环节都需要拿来说一下。我的服务器使用的是Ubuntu 2204LTS，安装Docker的过程遵照官方文档就是了，这个没什么可说的。意外发生在安装之后的验证阶段：docker run hello-world这一条命令本是用来验证Docker已经安装成功并且能够正常运行的。可是我一个回车按下去，却得到了一行错误：docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 44.205.64.79:443: connect: network is unreachable.不知道为什么，Ubuntu上安装docker的默认仓库是registry-1.docker.io，而这个仓库是不支持IPv6访问的，我的服务器又没有v4地址，那肯定会网络不可达。我去网络上搜索了一圈，发现Docker hub其实早…

【歪门邪道】使用Hetzner Storage Box代替Google Drive和DropBox
type: item
date: 2022-09-22T16:15:00+08:00
description: 最近处于闲的长毛但又找不到合适的工作的阶段。最近要么就是出去骑车锻炼身体（然后回来吃稻香村的点心长肉），要么就是折腾折腾电脑，也没怎么写程序。前几天突然发现我常用的一个欧洲服务器提供商Hetzner推出了专注于存储的新产品，想来想去，发现其实还不错，就拿来准备替代我即将到期的Google云端硬盘。背景以前我一直是Google的忠实粉丝：使用Google搜索，看YouTube，在Google Play上消费，订阅Google One（Google云端硬盘），不过最近几年热度有所减弱。我几个月前看了一篇新闻，说一个外国人给自己女儿的私处病灶拍摄了一张照片发给家庭医生，被谷歌的AI判定为儿童色情，这位父亲的Google账号也因此被关停。对于像是Google、苹果和IBM这种有大公司病的企业，其实他们并不那么关心「你」作为一个用户对于他们有多大的价值，而他们也不在乎「你」为他们带来的利益，尤其是当「你」是个人用户并且你的案例是个例的时候。反正根据新闻报道，这大哥申诉了几个月也没能拿回他的Google账号，这意味着他的照片、联系人等数据从此一去不复返，同时由于他手机使用了Google Fi，他出门连流量都没得用。如果他还用Google Voice，那我建议他可以考虑重开了。类似的争议在苹果方面也有。跨区封号（中国居民使用美区账号，一旦被封几乎没有恢复的可能性）就不用说了；之前苹果说要推出一个AI来扫描用户的照片，从而防止儿童色情犯罪。这个做法一度成为风口浪尖，最后不得已被停止。看起来无论是什么公司，他们似乎都在以正义的名义不断地索求更多对用户数据的访问权限。有些是索求，有些则是强制拿来。这下中国经验推广到全世界了。在这个大家越来越不把用户当人的时代，我们个人用户有没有办法站着吃饭呢？有，但是得加钱。例如提供企业级云服务的AWS，他们家就保证了永远不会偷看用户数据，即便是具有版权争议的数据，只要没有收到版权投诉（大概率是使用AWS进行了文件分享，而非因为存储），他们就不会管你在上面存了什么。但是至于价格嘛，也是非常的企业级：最便宜的存储类具有12小时的访问延迟，每月每TB要1美元；访问这些数据需要发起恢复请求，这个请求是按照对象数和对象大小分别收费的；数据恢复后，除了要为原本的存储类继续付费，你恢复出来的用于访问的数据要存在其他存储类，这个存储类的费用同样也要支付；最后如果你要在AWS之外的地方访问这些数据，你还要支付90美元每TB的下载流量费。不过归根结底，这世界上没有100%的安全。云服务商也会无故封号（这里点名批评IBM混合云）；NAS的硬盘也可能在重建时坏掉；也有可能你的存储服务提供商的机房着火了，把你的数据和备份全部烧掉了；还有可能天上掉下来陨石，正好砸中了你家的NAS和这个地球上所有存有你数据的服务器、移动硬盘、U盘、手机等设备（陨石：精确制导，不用谢）。总之，100%的安全是不可能的，但是通过遵循良好的实践原则，我们可以把数据损失的风险与代价降到最低。例如普通用户使用移动硬盘存储他们珍贵的照片，若这块硬盘受到物理损伤，那么这里面的数据也就从此一去不复返了（我们称这种用户为「亡命之徒」）。但如果这位用户遵循321原则：这些照片一共有三个副本（1份原件2份拷贝）；分开放在至少两种不同的存储介质上，例如原件在移动硬盘，一份拷贝在一个U盘上，另一份在AWS的磁带上；并且把U盘寄存在父母家或公司。这样即便你的移动硬盘坏了，你还可以通过放在其他地方的U盘，或者AWS云服务恢复数据。如果AWS发生了生产事故，除了索要赔偿外，你还可以通过移动硬盘和U盘这两种介质补充备份。只要行动及时，321备份原则能够在很大程度上保证你的数据可用性。 安全提示 当然了，一份数据的拷贝越多，其泄露的风险就越大，例如公司/父母家被盗了，AWS被入侵等。因此在考虑数据备份的同时不要忘记加密。但如果后续失去了解密的手段（例如丢失密钥、忘记密码），那么很遗憾，你的数据就在那里，但你就是访问不了它。因此时常检查你的备份是一个好习惯。存储安全并不是「设置然后遗忘」这么简单。它是一个需要你持续付出精力去维护的成果。 基于此，我目前的数据全部都存放在Google云端硬盘上，好像也没什么其他的备份。看起来很危险的样子。这几年没出什么大事情我真的烧高香了。我的需求前面说了这么多，总结成一句话就是：我要花钱了。因为一些原因，家里有一个类似NAS的存储设备，但是它并不能24小时开机，实际上家里的电也不是很稳定，大约每个月都会遇到意外停电。总的来说，这个设备就是一个大的半离线存储池，上面存储了一些长期用不到的数据，例如说远古时代的照片，我看过的动漫、电影等不需要随时访问的数据。这些数据加起来大约有4TB。目前这些数据仅受UnRaid阵列保护，一旦出现意外，没有备份。经常访问的数据位于…