從自架(VPS 自架)fedi 站至今應該有了一段時間了,所以整理一下一些筆記。
自架 fedi 站的歷史#
挑選後端#
為了預防網頁的惡意腳本,自己平時就是會禁用/使用白名單模式 JavaScript (JS) 瀏覽網站。抱著純粹的「己所不欲,勿施于人」的理念,自己也希望預設的網頁版 / 網頁前端在 JS 禁用下也能至少瀏覽。而站點因為打算是個人用而且也不想花太多費用,所以 資源需求 和 簡單安裝 也是在考量內。
知名的伺服器軟體 Misskey 和原版 Mastodon 除了好像比較吃資源,在禁用 JS 的情況下就是甚麼也看不了(fedibird 版 的 Mastodon 是基於 3.x Mastodon 版本,在 JS 禁用也可以正常瀏覽)。
而 Pleroma,Akkoma 可惜的是它們同樣在 JS 禁用下也是白畫面,不過它們可以設定用戶 Profile 使用靜態頁面,所以勉強尚可接受… 而 Akkoma 比前者還支援 Misskey 的很好玩的 Custom Emoji Reaction(自定義繪文字 + 繪文字反應)功能。
(追記:當時以為 Pleroma 沒有 Emoji Reaction 功能,原來後來從 Akkoma 逆輸入了?)
自己輸入的 Custom Emoji 一部分
GoToSocial 則完全滿足輕量和無 JS 的條件(實際上是因為沒有網頁用戶端),但它推出的時間還新(Beta 版軟體)而且沒有支援 Reaction 功能。另外它是依賴 Mastodon API 為前提的(網頁版前端基本上是唯讀),所以不怕沒有桌面或手機 App 可以用。
因為資源是硬性問題,所以當時基本上就決定了用 Akkoma 或 GoToSocial 之一。
舊 Akkoma 時期#
最初試架的是 Akkoma。因為官方安裝文檔覆蓋範圍很廣,Alpine Linux、Gentoo、OpenBSD 等較冷門的作業系統都有安裝教學,所以安裝基本上就是跟步驟做就完成了。設定的部分則有點容易搞混,會在後面再補充。
Akkoma 也可以追蹤 relay,馬上讓站點的聯邦時間線變得熱鬧起來,所以用得蠻 OK 的。資源用量除了儲存空間外可說是完全 overkill,遠比想像中少。
GoToSocial 時期#
因為 GoToSocial 非常 輕量(小型站的話即使在高峰期也佔用少於 600 MB 的 RAM!?),儘管當時還是 Alpha 版的軟體(現在是 Beta 版了),很多功能還缺少(像是投票功能,但現在有了),最後還是嘗鮮試了 GoToSocial。
軟體管理器剛好有人打包了軟體,而且 database 預設是用針對小型站點用的 (1人以上?30人以下?) 更簡單的 sqlite(相對於 Akkoma 的 Postgresql),所以安裝可說是一鍵完成。官方文檔 也很詳細,所以設定也很簡單,同時也有說明一些架站要考慮的東西。
起初因為資源充足(除了儲存空間),有保留原本 Akkoma 兩邊一起運行。但後來感覺 Akkoma 的儲存空間好像升得有點快(現在想應該是追蹤了很多 relay 的關係),所以過了一陣就停運 Akkoma 了。
新 Akkoma 時期(現今)#
後來總覺得 GoToSocial 沒有 Custom Emoji Reaction 功能還是少了很多樂趣,又想回到 Akkoma 了。過了大概好像一個月還是數週的時間,重新起動 Akkoma。
以前下線 Akkoma 時沒有注意到長期停運的嚴重性,直到後來遲遲無法新 follow Misskey.io 的用戶(一直卡在「處理中」),跑到對方的站點查看聯邦狀態才發現,自己的站點被 suspend 處理了(停止向對方發送任何連接,類似比 ban 弱一點的處理)。
後來經過各種東西還是沒有被理會解封的請求,但無奈地很多繪師都集中在 .io 上,想著本站只有自己在用,而且也沒有跟其他用戶互動過,砍掉重來也無所謂,就乾脆使用新的域名 akkm.moongazer.net 重新架設了。
從 akkm.moongazer.net 上線的 2023 年 12 月至今,現在總算可以說安定下來了。
架 fedi 站點的一些心得和整理(Admin 向)#
域名的重要性#
在站點初次上線前務必要想好域名,因為它基本上是不能更換的。
Fedi 站點是以域名互相識別。域名一旦被黑名單了,如果無法向各個站點申請解封,就唯有使用另一個新的域名重新架設了(還不太了解可否直接搬運原本的 database 到新架的站點,以保留原站點的設定)。
同時,如果站點出現互聯問題就需要盡快修復,以免被 suspend 或 ban。
存儲空間的讀寫速度#
讀寫速度對於 Database 這類東西非常重要。曾經搬到便宜大容量的 HDD 空間,結果導致 I/O 讀寫速度過慢(當時低估了 HDD 的速度影響程度),很多操作開始頻繁報錯,最後要搬回 SSD 問題才解決。
Fedi 站的 database 一定要放在讀寫速度快的 SSD 上。HDD 還是用來儲存備份檔案用吧(建議最終還是備份到自己手上的硬碟上)。
硬件配置要求#
目前只有長期運用 Akkoma。
我想小型 Akkoma 站點單核 CPU 已足夠。記憶體用量絕大部分時間都不超過 1.5 GiB(已包含 Nginx 和其他系統基本套件)。
至於存儲空間大小,Akkoma 會定期清理 database(預設是保留 90 天他站的貼文。本地用戶互動過的貼文會保留),大小不會無限增加。目前自己的單人 server 的話,只計 database 大小是在 50 GiB 以下,但 Akkoma 的 Postgresql database 的 清理途中 也會另外佔用 database 大小的 1/3。選擇儲存空間大小時需要留意這點。
Mastodon 和 Misskey 的需求大概會更高。
Fedi 站也是非常多連接的軟體,所以不可以用在有流量上限的服務上(應該沒有這樣的服務了吧?)。
(還有題外話,希望新參 不要 把站點架在 Cloudflare 後了,已經夠多這樣的站點和 網站 了…)
時間線 (Timeline)#
站點的熱鬧程度取決於你站點與其他站點互動的多少:成功 follow 了誰、與哪些站點互動。
「家時間線」是基於你 follow 中的用戶(含自己)。成功 follow 了用戶後,他們的貼文、轉發(repeat)就會出現在家時間線上。
「本地時間線」的話會出現自己站點的用戶所發出的公開貼文(轉發不會出現),無論 follow 了該用戶與否。
「聯邦時間線」應該就是取決於你站點在與哪些站點互聯。也許不同伺服器有不同規則,站點互聯機制自己目前還不太了解。猜想一般需要對方有 follow 自己站點用戶?還是單純發現了自己站點就可以?但解決聯邦時間線冷清的快速方法之一就是 follow 中繼(relay)。
中繼 (Relay)#
Relay 大概就是一個轉發其他站點公共時間線的帳號。Relay 是由不同人營運,裡面參加的站點都不一定相同。如果 follow 過多 relay 的話,database 佔用空間的增長速度可以想像有多快。
Relay 的 follow 一般也是雙向的,如果 relay 回 follow 的話,你的公共貼文也會向其他成員發送。
另外已知有 FediBuzz Relay 這東西,可以透過它來自選 follow 哪些站點。
CW (Content Warning) 標記的重要性#
一些 NSFW,不宜在公眾場所瀏覽的公開貼文務必要有 CW 標記,以免被其他站點封鎖。
站點註冊開放#
如果不想惹來或帶來他人麻煩的話,個人或私人用的站點務必要關閉開放註冊,或者加入註冊審核制等措施。就算是開放公共用的服務建議也準備一些法律方面的知識,以處理服務被惡意非法使用的情況。
Fediverse 曾出現的大規模垃圾信息事件的詳細可參見:Cyberbullying Gone Global: Fediverse Spam and Operation Beleaguer。
Akkoma 的設定路徑#
不記得是否自己安裝時的手誤(自己用的是預編譯好的 OTP 版),但打比方說指定了 static 檔在 /my/path/static 的話,它結果會跑到 /my/path/static/static 中尋找檔案。如果發現主題佈景等東西沒有讀取到的話可以看看是否這問題。
順帶一提自己正在用的主題是這個:Idol-chan Doki Doki Pink
互聯限制和 Spam 對策#
Akkoma 是透過 MRF policies 來限制互聯或垃圾信息。常用的有 mrf_simple、mrf_hellthread 和 mrf_keyword。
mrf_simple 的設定對整個站點有效。可以設定強制標記 NSFW、拒收多媒體或所有貼文等等。
mrf_hellthread 可以設定 delist(貼文會被隱藏而且不會收到信息通知)或拒收大量 mention 用戶的貼文。mrf_keyword 則可以設定拒收包含特定關鍵字的貼文。處理目前流行的垃圾信息攻擊非常有效。
參見:https://docs.akkoma.dev/stable/configuration/cheatsheet/#mrf-policies
其他筆記(一般用戶向)#
(這部分可能以後會分離到 Fediverse 的推廣文,如有的話)
Custom Emoji Reaction 支援#
以上原版 Mastodon、Pleroma、GoToSocial 都不支援 Custom Emoji Reaction 功能(有 Custom Emoji 功能但不支持 Reaction 功能)。缺少 Reaction 支持的用戶或伺服器端會解讀它們為 like。
貼文可見性#
- Public: 貼文會出現在公共(和本地)時間線上。任何人都可以讀取貼文
- Unlisted: 貼文不會出現在公共(和本地)時間線上。任何人都依然可以讀取貼文
- Followers-Only: 只有 Follower 可以讀取貼文
- Local: 貼文不會發送到其他站點
- Direct: 即 DM。只有你 Mention 了的用戶(還有站點管理員)可以讀取貼文,一般用作私信用途
無法讀取其他站點用戶的所有貼文、資訊不正確#
基於現實的理由(存儲空間資源等等),站點一般是不會把遠端站點的任一用戶的所有貼文都爬取下來。
在 Akkoma 上,除了釘選的貼文,它不會自動爬取遠端用戶的舊貼文(在你 follow 該用戶之前的貼文就是「舊貼文」),除非你手動在本地站的搜索功能貼上該貼文的 Url,或者剛好你已追蹤的用戶與那一則舊貼文互動。
另外,也許是權限問題,一般在本地看到的遠端用戶的 Follower/Following 數,貼文的讚好數等等都會少於該遠端用戶所看得到的實際數量。
自架 fedi 站值得嗎?#
這個真的很看期望的是甚麼。
如果是創作者單純想宣傳自己作品的話可能去日本大站就好 (或者直接到傳統 SNS)。很多日本繪師集中在 Misskey.io 那裡,但大家是互通的(站點沒被封的話),所以到其他 server 問題也不大(同一站內的信息肯定是最流通的,所以應該還是會有點影響)。
日本那邊的創作風氣很好,甚至在 Comiket 等活動還可以找到 Misskey.io 相關同人 goods 和合同本。不過畢竟是面向日本用戶的服務,最好還是至少懂一點日語才去註冊。雖然極罕有,但繪師自架的個人 fedi 站的特例也有。(敬稱略)像是 しろまる 的 Misskey 站 和 oi汰 的 Misskey 站。(oi汰也有在部落格中記錄架站的 日記 )
歐美那邊就感覺很容易會突然踩「覺醒」或「彩虹」雷(像 這個,但原貼文似乎已刪)?而中文的話應該就十分冷清…
自架對自己來說,嗯,大概是比較酷和好玩?和就像是擁有(租有)自己的獨立空間的感覺 (自 high 和滿足自己的佔有慾)。這樣對我來說已經足夠。客觀來說也許能獲得一點 IT 相關經驗?
當然自己實際是希望有更多人加入中小型站點或自架,因為誰能保證站點獨大後,會中斷聯邦機制變成傳統的集中式社交平台呢。畢竟就算排除商業化的目的,營運大站的費用也不是開玩笑,是在所難免的東西 (解法就是不令它變大)。