马上就要黑五了。
根据过去的观察,很多中小VPS厂商在黑五、圣诞这两个节日会给出全年最好的优惠。有建站想法和已经在路上的站长应该多多关注。
“很多看起来困难的事情,只需要一次稀里糊涂的开始”
对于建站也是一样。我一直觉得“冲动建站”没什么问题。如要开放给别人使用,那才要先积累好经验。

对于小型实例(100人以下)而言,一般一台 Digital Ocean 5美元每月的vps便足够使用了。
但是长毛象的媒体文件存储却是一个大问题。20G的磁盘空间,如果不定期清理远程媒体文件的话,一般撑不过一个月。而且更重要的是随着实例运行时间的延长,即使你定时清理,也不可避免媒体文件大小膨胀。
对于媒体文件,长毛象官方的解决方案是使用 S3 Storage。但是使用S3 Storage却会产生额外费用。

下面介绍一个项目,可以解决小型实例站长对媒体文件存储的烦恼。
Jortage Communal Cloud
jortage.com/

其基本思想是:多个实例共用一个存储桶,通过去重减少文件大小,众人合资,降低费用。
感兴趣,想要参与的站长可以通过项目页中的联系方式请求加入。

#长毛象中文使用指南 #长毛象管理 #长毛象省钱大法

重发一下过去试用 Google Cloud Storage 作为对象存储时的统计信息。容量和操作的数量级在站长置办媒体存储时应该是有益的参考。(本站是个人使用,但中文中继基本都加了)

基本配置
对象操作路径:服务器-MinIO网关-GCS
访问路径:用户-CF-服务器-CF-GCS (利用CF节省流量费用,服务器防止缓存穿透)
对象周期管理:Standard-14天->Coldline

具体月费用
S层 A类操作 192,696 $0.94
S层 B类操作 238,729 $0.08
S层 存储   23.15GB $0.36
C层 A类操作 163,280 $1.63
C层 B类操作 12,092  $0.06
C层 存储   63.28GB $0.25
C层 数据取回 0.29GB  $0.01
流量 优惠   1.58GB $0.06

共计$3.41

cloud.google.com/storage/prici

Shit!迁移时候绝不要偷懒把cache文件夹扔掉~

写了一个通过Docker搭建长毛象的指南。目前网络搜索到的指南都存在着过时、冗余的问题,官方又没有给出docker文档,于是在 @star 大佬的帮助(手把手带路)下写出了这样一篇。

pullopen.github.io/2020/10/19/

对新手而言,docker优点在于搭建、维护和升级都相对简单,升级速度快不需要precompile,乱搞(……)也不怕把系统弄坏,直接重启就能恢复。缺点就在于魔改起来会比较麻烦,需要一些进阶操作。当然通过一些方法,可以在维持魔改不变的情况下享受docker的安全,如何操作我会在以后的文章中详细说明。
希望能给大家带来帮助!

#长毛象建站 #长毛象中文使用指南

:blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky:

Markdown 和 HTML 来啦

:blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky::blobcatrainbow_shaky:
rhabarberbarbara.bar/@barbara/
如果只是想 copy paste 的话并不难实现,毕竟本站长也是完全是 copy paste 了 glitch-soc 里的文件,用的是 ruby 的 Redcarpet,它会把 markdown 翻译成 html,在 gemfile 里加一下就好。其他要改的文件就是 app/lib/formatter.rb 和 lib/sanitize_ext/sanitize_config.rb,我这边没有设置按钮选择是否纯文本,全都默认成 markdown/html 了,所以把原代码里的 status.content_type == 'text/markdown' 之类的都删了。
这些做完之后其实 html 格式的文本就已经可以传到网站上了,然而 app/javascript/styles/mastodon/reset.scss 这个奇怪的文件硬是把大部分格式都 reset 了,所以我挑了几个眼熟的比如 b q h123456 删掉了,大家也可以自己看着办,此外我还给 ordered list,unordered list,blockquote 加上了大家比较熟悉的格式。
这次涉及的 commit 全都在这里, 改好之后需要 bundle install && yarn install, 然后 RAILS_ENV=production bundle exec rails assets:precompile,最后

systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

就好啦。
已经测试和 mstdn.social 站可以互相看见,其他的不清楚,欢迎告知。不支持的网站看着应该是纯文本,但貌似可以看到超链接。请直接戳链接看效果。
#建站日志

显示全部对话

#长毛象运维
昨天我发现本实例(mastodon.sbpk.fr)与联邦宇宙部分站点通信出现问题,包括dragon-fly.club和mastodon.social,表现为本站能够获取外站的公开信息,但是需要身份验证的请求无法完成。查询Sidekiq日志后发现大量401错误,与上述现象符合。后在mastodon.social上注册帐号,并在上面搜索自己的帐号(@wsb),提示503错误:无法验证远端的SSL证书。

我使用SSL Labs检测自己的SSL配置,发现并没有问题。一开始怀疑是外站不支持SNI,配置好无SNI情况下的SSL设置,但并未解决问题。后来意识到可能是本站服务器只支持TLS 1.3,版本过新导致错误,启用TLS 1.2后通信问题解决。怀疑问题由外站使用的SSL库版本较旧,不支持TLS 1.3导致。

【关于bgme.me实例刚才下线的说明】

刚才为了解决与 2to2.xyz 实例的通迅问题,变更Mastodon的配置。
然后重启服务,发现 mastodon-web 服务无法启动,报错:warning: already initialized constant Net::ProtocRetryError

通过关键词搜索,找到如下两个 issue:
github.com/mastodon/mastodon/i
github.com/ruby/net-imap/issue
经阅读,发现这个问题更新ruby版本之后依赖有关。而且所有的“Docker”用户也受到这个问题的影响。
官方的建议是:直接升级到主线版本。

尝试升级至主线版本,编译静态文件时出错,提示:/home/mastodon/live/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.3/lib/ffi/library.rb:112: [BUG] Segmentation fault at 0x000│00000000ed028
经搜索发现这个issue:
github.com/mastodon/mastodon/i
阅读完整个issue,大致了解到这是ruby自身的bug,升级到 Debian 11 Bullseye 便会触发。要想彻底解决掉这个bug,需要上游修复。
按照里因的建议,完全重新安装ruby以及mastodon,临时设置 LD_PRELOAD=libjemalloc.so 环境变量解决了此问题。

总而言之:
v3.4.1 这个版本已经不太稳定,如果现在新安装 Mastodon 的话,建议直接安装主线版本。
此外,如果你的实例打算升级系统版本,要特别小心。

#实例维护


发现跨站轴的更新频率有点不对劲,才意识到moew的中继( mastodon-relay.moew.science )挂了。

中继对于没有开 Secure Mode 的中小型实例来说是一种公共基础设施的存在。有条件的话应该多加几个,这样更能增加联邦的健壮性。moew已经是最大中文中继了,如果这个顶得住,那再加几个应该也没问题。

值得站长留意的是,中继挂了在管理后台是没有显示的,添加中继也不是一劳永逸的。有些中继在故障恢复后,需要禁用+启用才能重新出现在订阅列表中。比如之前 relay.mastodon.funneko-relay.com 都出过这种问题。

顺便一提,如果同域名站点重建也会连不上中继。例如nya中继 ( relay.nya.one )里本站的那些个“签名未认证”的记录,就是曾经试图从头重建实例造成的。

其实关于是否要鼓励小白建站也有争议的,一方认为估计没有防御能力的小白建站会导致个人的风险增大,另一方则认为只有多多建站才能分散风险,因为墙也是需要成本的。
从目前来看,针对活吧的墙也仅仅是最低等级的DNS污染,所以我个人可能更倾向后者?


我觉得实例的多样性是重要的,应该鼓励更多的人,特别是身处国外的人建站(国外身份也更容易薅羊毛)。

运维技术不应该成为过高的心理门槛,可以在实践的过程中慢慢积累。

当然,还是有些事情是一开始就要留意的:
1. 保护好站长自己的隐私,尽量与自己的其他数字身份做彻底的分割,消除与真实身份关联的蛛丝马迹;
2. 考虑网站被刷量攻击的风险,隐藏好敏感信息,预演最坏的情况做好预案;
3. 开放注册要负责任,要把用户规模控制在与自己运维能力相符的程度。建议先自己折腾半年以上再开放注册,以免激情建站的劲头消散。

@flyover

```
SMTP_SERVER=smtp.yandex.com
SMTP_PORT=587
SMTP_LOGIN=邮箱帐号地址
SMTP_PASSWORD=此处密码要在账户中心单独生成
```

除了这四行之外的和 smtp 有关的设定暂时全删掉试一下。

这几天的攻击分析下来,验证了两个重要的经验:
1.不要暴露源站IP地址
2.不要暴露对象存储桶名

第2点之前讲过了,再多说说第1点。

如果源站IP暴露,遭到4层的洪水攻击,很容易导致源站瘫痪、进黑洞。一旦如此,源站就失联了,想套CDN都来不及。
黑洞的情况不仅会出现在比较高质量的线路,普通线路+支持高防的商家有时候也会顶不住。

保护源站的常见思路是套CDN。但很多人之所以不这样做,就是看中当前源站的线路质量远比CDN好。这时其实可以把“源站”和“加速”两个功能拆分。“源站”选择高配+普通线路,“加速”选择低配+优质线路。对外只暴露“加速”机和CDN的访问。

顺便一提,这种方案的源站比较适合放在北美。不光是因为服务器的性能、带宽比较便宜,还因为很多CDN服务大陆的节点就在北美。

几种泄露源站IP的途径

1.历史DNS记录
2.子域名直接暴露
x.threatbook.cn/
dnsdb.io/
site.ip138.com/
searchdns.netcraft.com/

3.IP扫描+证书泄露
search.censys.io/
fofa.so/
(可以直接访问https://源站IP,看看有没有把域名证书漏出来)

看了下 SeaweedFS 的文档,发现整体架构分为 master、volume、filer 三类节点:

Volume 节点负责存储数据,大量小文件会整合成多个大volume存储,并以此为单位进行冗余。index可以存在内存,也可以存在LevelDB以节省内存

Master 控制所有的文件系统节点,可以是奇数个。

Filer 负责建立文件系统到用户路径的关系,支持fuse挂载、WebDAV、s3、HDFS等。路径和metadata信息可以存储在各类主流数据库。

在数据安全方面:

Filer 支持把数据加密后放在 Volume 落盘,密钥存放在 filer 的metadata数据库中。

Filer 支持同时运行多个副本。支持把目录和数据备份上云。

节点之间的通信支持 http REST 和 gRPC。其中 gRPC 支持双向TLS。

给各位毛象站长update一下迁移到AWS S3后的费用,第一个月因为迁移花了钱账单比较高,有24.91USD,这个月还没完,但是看billing已经有5+了,估计最后是7USD左右。

本实例活跃人口300左右,加入了中继所以拉取fedi图片也比较多,有每周定时任务清理Fedi老图片。

换AWS S3做媒体库整个实例的开销就涨了一点,但是服务质量确实好,这一个半月图片服务稳如山快如电!

欢迎有趣的中文实例加入 Relay: mastodon-relay.moew.science (此条在我服务器被撑爆掉之前有效)

⚠️ 站长注意

部分对象存储在接收到错误的路径时,返回的信息中会带有桶名或者endpoint的名称。

Mastodon 要设置 elastic search 中文优化是不是必须修改源文件?

如果是 docker 部署的是不是自己维护一个镜像比较方便?

显示更早内容
长毛象 · 壹头

长毛象是开源的微博客程序,这里没有玄学的审查和限流。本站采用原版程序,开启全文搜索(收藏)。积极治理公共时间轴,但基本不屏蔽外站。支持多账户登录,对注册和使用有要求。