前言:聯邦宇宙沒有門檻#
不要試圖去理解它,要去感受它。——《信條》
聯邦宇宙 (Fediverse = federation + universe) 也許會給新用戶帶來高深莫測的感覺,但就像《信條》的這句名言一樣,不要試圖去理解它,要去使用它!聯邦宇宙的使用沒有門檻,上手非常簡單 —— 選擇一個開放實例;註冊一個帳號;遵守它的規則;開始使用!如果不喜歡這個實例的規則?換一個就好。一個實例一般情況下就是一個域名網站。
聯邦宇宙的使用沒有門檻!你只需要有某一個實例的帳號,就可以關注、評論、點讚其他實例上的用戶及其文章。這些帳號的域名不一樣也沒有關係,只要聯邦協議相同,就能通信。
自建實例有門檻嗎?只要你能想到要自建一個實例,那就沒有門檻了。網上有非常多的手把手教程。
本人於 2017 年 4 月自建 Mastodon 服務,並 加入聯邦宇宙,至今已有 7 年多。後因不明原因清空此 Mastodon (和 QQ 空間、微博、Twitter、Facebook 等),於 2023 年更換域名並公開實例 e5n.cc,所以對聯邦宇宙略有心得,簡單地分享一下經驗。
╰(°▽°)╯:e5n = eallion 的 k8s 寫法;cc = Charles Chin 的簡寫。
舉個栗子 🌰#
1. 電話宇宙#
如果你有一個「中國移動」的手機號,你可以給你朋友的 iPhone 中的「中國聯通」手機號打電話、發短信,也可以給美國網友的三星手機中的「AT&T」手機號打電話、發短信。只要你知道了一個人的手機號,只要對方的手機和手機號所屬運營商支持相同的通信協議,那你就可以給對方打電話、發短信了。
這樣的一個手機通信網絡,就可以稱作一個「電話宇宙」 或者「手機宇宙」。
2. 電子郵件宇宙#
上網衝浪的人,應該都有電子郵箱。你用 QQ 郵箱,可以給 Gmail 郵箱發電子郵件,可以給網易 163 郵箱發電子郵件,可以給 Hotmail 郵箱發電子郵件。只要對方提供的郵箱帳號使用相同的電子郵件通信協議,那就可以互相收發郵件了。
這樣的一個電子郵件通信網絡,就可以稱作一個「電子郵件宇宙」。
3. 小結 (轉自維基百科)#
聯邦宇宙 由一系列自由軟體組成,有一組互聯的伺服器 (用戶自建或第三方托管),一起提供網路發布 (如社交媒體、微博、部落格或者網站) 或者檔案托管功能。雖然各個伺服器是獨立運行的,且各個實例繁多,內容多樣,但伺服器之間可以彼此互通。在不同的伺服器 (實例) 上,用戶可以創建不同帳號。這些帳號能夠跨越實例邊界而通信,因為伺服器上運行的軟體支持一種或多種遵循開放標準的通信協議。 1 用戶通過聯邦宇宙中的帳號,可以發布文本或者其他媒體檔案,也可以關注其他用戶。2 在某些情況下,用戶可以公布或分享數據 (如音頻、視頻、文本檔案等),使其對所有或部分人開放並允許他們共同編輯內容 (例如日曆和黃頁)。
名詞解釋#
轉自:《聯邦宇宙概論》(Web Archive)
聯邦宇宙 (fediverse)#
所有聯邦服務 (Federated Server) 的集合叫作聯邦宇宙。
聯邦服務#
是指獨立部署但能互相通信的服務。這裡的要點是能互相通信,功能是無關緊要的:社交網路、微博客、部落格、普通網站、檔案存儲都可以。通信以聯邦協議為標準。
聯邦協議#
聯邦宇宙中不同實例 (Instance) 間互相通信的協議 (Protocol)。
實例 (Instance)#
一個聯邦服務叫作一個實例。也有人管一個實例叫一個 Pod。任何人都可以自選聯邦協議寫一個全新的實例,但更流行的做法是選擇一個聯邦宇宙軟體生成一個實例。
聯邦宇宙軟體#
方便他人快速部署新實例的軟體,可以按照某個聯邦協議設計軟體 API,也可以設計獨有的 API。
最著名的軟體就是:Mastodon。
身份 (Identity)#
在實例上註冊的帳號叫作身份。在下文中我也會用用戶這個大家比較熟悉的詞。
協議 (Protocol)#
一套約定好的標準。協議相同意味著可以通信,即使兩個實例分屬於不同的聯邦宇宙軟體,只要協議相同就能通信。因此聯邦宇宙是一個非常大的概念。
目前主流協議就是 Mastodon 所用的 ActivityPub 協議。
API (應用程序編程接口)#
在一個聯邦宇宙中 API 是指一個實例留出來的、可供其他程序與該實例通信的方法。完全自己寫的實例要自己設計 API,用聯邦宇宙軟體生成的實例一般就是直接使用聯邦宇宙軟體設計的 API。
關於協議與 API 的區別:協議只是標準,API 是協議的具體實現。API 可以完全遵守協議,也可以只遵守一部分協議,也可以設計協議以外的 API。試著打個比方:假設全人類有共同的道德標準,那這套道德標準就是協議,各個國家的法律就是 API。有更好的比方嘛?
聯邦協議舉例#
轉自:《聯邦宇宙概論》(Web Archive)
常見的聯邦協議有:
Zot 或 Zot/6 協議#
給獨立網站提供通信、身份 (用戶) 管理、權限控制的去中心化網絡連接。是一個近兩年才出現的協議,但網站好像已經訪問不了了,維基百科 Fediverse 詞條中介紹到這裡時給了一個官網的 InternetArchive 存檔。
Diaspora 協議#
維基百科 上寫的是非營利、用戶所有、分布式社交網絡;Github 主頁 上寫的是隱私感知、分布式、開源社交網絡。
使用這個協議的聯邦宇宙軟體應該只有 diaspora*,也就是他們自己在用。這個聯邦宇宙軟體在 GitHub 上有 12.5k 的 star,2.9k 的 fork,2010 年開始的項目,到現在已經十年了,開發還是很活躍,release 有 88 個,但版本號升得很保守,才到 0.7.14.0。
說句題外話,在他們的 GitHub 主頁我找到了個 所有開源社交網絡服務的列表,裡面記錄了非常多的實例,以及它們的實例版本、所用的聯邦宇宙軟體、使用的協議、服務在線的運行時間 (多少百分比的時間裡服務沒有宕機)、是否支持 IPv6、網絡延遲、是否開放註冊、用戶數量等等非常非常多的信息。我試著搜索了一下我自己所在的實例,是可以搜索得到的。這個列表更新及時,真是個寶藏列表!
OStatus 協議#
根據 維基百科,這是一個專門搞聯邦微博客的協議,像長毛象 (Mastodon) 最早就是使用的這個協議。
這個協議是老前輩協議了,2010 年左右就搞出來了。2012 年 1 月 W3C 社區小組想維護並進一步開發這個協議,結果好景不長,2014 年 7 月來了個聯邦社交網絡工作小組 (W3C Federated Social Web Working Group),這個聯邦社交網絡工作小組直接創造了一個新的協議,就把 Ostatus 協議給幹趴下了。
ActivityPub 協議#
這就是聯邦社交網絡工作小組創造出來的新協議,就是它掩蓋了 Ostatus 協議的光芒。
按照維基百科、一個 Github issue #228:Ostatus,pump,io 和 ActivityPub 有什麼不同 以及 ActivityPub 協議最後的致謝部分 來看,這個協議是基於 pump.io 的 API 設計的。且在設計之初就充分吸取了 OStatus 的經驗教訓,最後成為了一個成功的協議。
這個地方不知道有沒有大佬給講講它和 Ostatus 協議具體的區別和改進的點是什麼呀~我沒有深入去查,反正知道 ActivityPub 很厲害就對了。
2017 年 9 月長毛象開始使用 ActivityPub 協議;2018 年 1 月 W3C 把這個協議作為了推薦標準;2019 年 1 月長毛象 不再支持之前的 OStatus 協議。
實例推薦#
在 https://fediverse.party/en/portal/servers/ 這個頁面可以按分類找到自己感興趣的實例。
因為有的站長並不希望實例被公開,在此列舉一些比較官方或者大型開放的實例:
原平台 | 平替 | 大型實例 |
---|---|---|
Mastodon | https://joinmastodon.org/servers | |
微博 | Misskey | https://misskey-hub.net/en/servers/ |
Pixelfed | https://pixelfed.org/servers | |
Friendica | https://dir.friendica.social/servers | |
Youtube | Peertube | https://joinpeertube.org/instances |
寫作 | Writee | https://writee.org/ |
為避免類似於支付寶嘲諷 Windows Phone 用戶 ——“你為什麼選擇 1% 的生活?” 所以我個人比較推薦選擇聯邦宇宙中支持 ActivityPub 主流協議的 Mastodon 及其 Fork 版本的實例。
Mastodon 官方運營的實例是:https://mastodon.social/
Misskey 的熱度也很高,也很適合二次元用戶。
PS:推薦閱讀
自建實例#
自建 Mastodon 實例的門檻主要在於伺服器配置,1C1G 的配置確實很難運行 Mastodon 實例(優化後還是能用的),甚至 2C2G 的配置也要適當優化一下。目前我的個人實例 e5n.cc 就運行在 2C2G 的騰訊雲輕量伺服器上,限制了 256M 的 PostgreSQL 和 1 線程的 Sidekiq 任務。
另一個門檻是伺服器不要位於局域網環境,才能和其他實例通信。
Mastodon 的媒體檔案(圖片、視頻、表情等)存儲邏輯是把其他實例的用戶的媒體檔案緩存到自己的實例中,並且官方實例默認(不魔改)不支持大多數 HTML 標籤,不能用 <img>
貼圖,所以需要比較大的硬碟空間來緩存。一般更實惠的做法是把媒體檔案緩存到 s3 物件存儲中。目前我的個人實例接入了 7 個 Relay 中繼,一天產生 3-5G 的內容,這個取決於你關注的用戶和中繼站上的用戶是不是話痨,是不是愛發圖。實際體驗中 Cloudflare R2 的免費 10G ,緩存 2 天媒體是不夠用的。
非常推薦這篇文章《如何利用 Docker 搭建 Mastodon 實例(一):基礎搭建篇》(Web Archive)可以參考這篇文章手把手地通過 Docker 部署自己的 Mastodon 實例。不需要什麼技術,只要你成功部署過 Docker 應用,那就可以順利部署 Mastodon。如果不想用 Docker 部署也可以通過源代碼安裝 Mastodon,甚至更容易,官方文檔寫得很詳細 https://docs.joinmastodon.org/admin/install/ 。
我的自建成本:
- 域名:e5n.cc ¥39.00 / 年
- 伺服器:騰訊雲輕量 硅谷 2C2G ¥144.00 / 年
- s3 存儲:Cloudflare R2 低於 $1.00 / 月
特別推薦:如果手裡只有低配的伺服器,也想加入聯邦宇宙,可以試試 Go 開發的基於 ActivityPub 協議的 GoToSocial,個人體驗過幾個月,非常輕量,資源佔用甚至低於 Memos:Ref Status,缺點是沒有自帶前端應用(不算缺點),需要使用第三方應用發嘟文。
有趣的生態#
長期更新
Mastodon 時間軸嵌入網站#
在您的網站上嵌入 Mastodon 時間線,展示帖子。非常容易設置,無需依賴項、無跟蹤器、符合 WCAG 標準並且完全響應式。
我的部落格中目前集成的 嘀咕 頁面,就是用這個工具嵌入的。
Mastofeed#
ActivityPub feed => iframe embed.
為部落格等嵌入 Mastodon feeds。
在官網 https://www.mastofeed.com/ 頁面上,簡單地填入自己聯邦帳號信息就可以生成一段 <iframe>
HTML 代碼。
masto.js#
通用的 Mastodon API JavaScript 客戶端。ELK 客戶端就是用的 masto.js。
- 🌎 通用性:適用於 Node.js、瀏覽器和 Deno
- 📦 輕量級:運行時代碼更少,壓縮後只有 7kB+
- 📚 TypeScript:使用 TypeScript 編寫,並提供類型定義
- 🧪 經過測試:使用真實的 Mastodon 伺服器進行了 99% 的測試覆蓋率
- 🤓 維護良好:自 2018 年以來由一個 Fediverse 愛好者積極維護
Wildebeest - 構建在 Cloudflare 上的 Fediverse#
Wildebeest 是一個易於部署的開源伺服器,與 ActivityPub 和 Mastodon 兼容,完全構建在 Cloudflare 的 Supercloud 之上。若想在 Fediverse 中運行自己的伺服器,現在您可以完全通過 Cloudflare 實現。
Cloudflare 官方部落格介紹:《歡迎光臨 Wildebeest:Cloudflare 上的 Fediverse》
Wildebeest 是一個兼容 ActivityPub 和 Mastodon 的伺服器,其目標是讓任何人都能在自己的域上運行他們的 Fediverse 伺服器和身份,而無需保留基礎設施,並且只需進行最少的設置和維護即可在幾分鐘內運行起來。
Wildebeest 在 Cloudflare 的 Supercloud 之上運行,使用 Workers、Pages、Durable Objects、Queues 以及 D1 數據庫來存儲元數據和配置信息。它還採用了 Zero Trust Access 來處理身份驗證,並使用 Images 來處理媒體。
Mravatar#
類似於 Gravatar 的 Mastodon 全球認可的頭像 API。基於 Python 開發,可自行部署。
我的頭像:https://mravatar.r669.live/avatar/@[email protected]
Mastodon 驅動的部落格評論系統#
作者介紹了一種新鮮的做法,將 Mastodon 社交網絡用作網站評論。它的最大好處是數據開放,不會被第三方控制,因為 Mastodon 是一個開放式、無中心的網絡服務。
PS:《長毛象 Mastodon / GoToSocial 做部落格評論系統》- 恐咖兵糖
Mastodon Token 生成器#
訪問 Mastodon API 需要 Access_token,但由於 Mastodon 設置屏幕上目前沒有直接獲取 Access_token 的用戶界面,因此我們創建了一個 SPA(單頁應用程序)站點來從外部獲取 Access_token。 (但是,如果您創建的是一個成熟的應用程序,而且第三方也將使用該應用程序,那麼您應該在應用程序本身中實現這種機制,因此請將其視為僅供試驗之用)。
我以前寫過一篇文章《NeoDB 獲取 Access Token》,也可以用這個工具生成。
僅用 6 個文件部署聯邦實例#
這篇文章的作者介紹道:他用 6 個文件部署了一個 Mastodon 實例。我試了下,真的可以關注他,只是不能通信。
實際只需要 1 個文件,但讓實例看起來更完整用了 6 個文件:
- 2 個文件創建用戶
- 2 個文件假裝我們很受歡迎
- 2 張圖片為了美觀起見
.
├── .well-known
│ └── webfinger <- user discovery (optional)
├── banner.png <- banner image (optional)
├── followers <- how many followers (optional)
├── following <- how many following (optional)
├── image.jpg <- profile image (optional)
└── justin <- user information
幾件小事#
“種一棵樹最好的時間是十年前,其次是現在”。聯邦宇宙正生機勃勃,你覺得什麼時候加入聯邦宇宙是最好的時機呢?
Meta 的 Threads 為何要整合聯邦宇宙#
去年底,Meta 邀請聯邦宇宙的開發者和代表在其舊金山辦公室召開了一次對話會議,Meta 的參與者包括了 Threads 團隊和法務團隊。聯邦宇宙的規模仍然很小,如微博客服務 Mastodon 只有數百萬活躍者,而 Threads 儘管只上線了 8 個月,相比 Mastodon 已經是一個相當於哥斯拉的龐然大物了。雖然 Meta 在 Threads 上線之初就宣布要支持聯邦宇宙協議 ActivityPub,但幾個月之後很多人認為 Threads 永遠不會再整合 ActivityPub 實現與 Mastodon 等平台的互操作。然而 Meta 仍在推動這一計劃,它已經宣布了整合時間表,目前處於第一階段。為什麼以圍牆花園封閉著稱的 Meta 會想要開放和互操作?與會者心中都有這一疑問。Meta 開發者的回答是他們認為這是社交總體上的一個發展方向。在馬斯克收購 Twitter 之後,社交媒體名人對平台事實上擁有他們的跟隨者越來越感到不舒服,他們想要一種能自由遷移的能力。這個觀點有一定的道理,但說服力不高。與會代表則認為:1)Meta 覺得 Twitter 作為時代精神的一部分,重要而強大,對此深感興趣,它效仿了 Google 應對 蘋果 iPhone 的策略,推廣一個他們能從中受益的開放競爭對手;2)Meta 擔心對社交媒體的監管會加強,因此構建了一個絕對開放的平台,消除審查保守派言論或反壟斷的爭議,開放意味著用戶可以自由遷移和自由轉換;3)差異化,也許是某個產品經理的突發奇想;4) 扎克伯格真的討厭埃隆馬斯克,正尽一切努力摧毀 Twitter/X。
NeoDB 去年底至今主要更新#
個人標記增加了年度統計、篩選和排序; 支持 BoardGameGeek 鏈接,Letterboxd 導入; 啟用了 ActivityPub,無論通過郵件還是聯邦實例註冊本站,每個用戶有一個 @neodb.social 的身份與其它聯邦宇宙實例互聯。
擴展閱讀#
- 聯邦宇宙 - 維基百科
- Fediverse - Wikipedia
- https://o3o.ca/@jiangshanghan/105966250069371678
- 《聯邦宇宙概論》(Web Archive)
- 《Mastodon | 我流長毛象中文使用指北》(Web Archive)
- 《Fediverse 不止 Mastodon——Misskey 介紹》(Web Archive)
- 《如何利用 Docker 搭建 Mastodon 實例(一):基礎搭建篇》(Web Archive)
- 《Meta 的 Threads 為何要整合聯邦宇宙》
- 《NeoDB 去年底至今主要更新》
- Themed servers - Fediverse.Party - explore federated networks
- Mastodon - Decentralized social media
- GoToSocial - Fast, fun, ActivityPub server, powered by Go.
- Misskey Hub – Official website of the Misskey Project