[軟體教學] 自架 Bluesky PDS 伺服器,促進去中心化社群發展

2024.10.17 / 軟體教學
X (Twitter) 近期公告了新版政策,根據網友的整理資料,以後我們在 X 上面發表的任何貼文都有可能被拿去當訓練 AI 的樣本。知名 VTuber 團體 Hololive 的 Mio 考量到轉發粉絲圖的問題,也正在評估是否要逐漸轉移到 Bluesky 平台上。因為這個原因,Bluesky 貌似因為註冊人數過多,有出現無法註冊的現象。針對這個狀況,有志之士們可以使用官方提供的工具來自行架設 Bluesky 伺服器,來協助社群解決伺服器被塞爆的問題。

Bluesky (藍天) 是一個去中心化的分散式社群,與 Mastodon (長毛象) 相似,只不過 Bluesky 自行開發的 AT Protocol 協定,目前無法與 Mastodon 的 ActivityPub 互通。同樣是可自行架設的社群平台,比較特別的是 Bluesky 並不像 Mastodon 一樣包含了前端網頁,它只有提供 API 通訊介面。

自行架設的 Bluesky 被稱為個人資料伺服器 (Personal Data Server, PDS),使用者可以在 bsky.app 網頁版或 iOSAndroid APP 的登入註冊介面中自由選擇帳號的託管服務供應商,來將帳號存放到其他伺服器。

Bluesky 伺服器規格建議

根據 Bluesky 的開源儲存庫說明,我們可以考慮租用 Vultr 或 Digital Ocean 的 VPS 伺服器來架設 Bluesky。官方也提供一套建議的伺服器規格供大家參考:

名稱建議規格
作業系統Ubuntu 22.04
記憶體 (RAM)1 GB
CPU 核心1
CPU 架構amd64, arm64
儲存空間20 GB SSD
預估可乘載使用者數量約 20 人

付費租用 Vultr 伺服器

由於我比較熟悉 Vultr,因此本文將直接示範在 Vultr 上架設 Bluesky 的完整流程,包括開通伺服器、網址 DNS 設定與驗證和實際登入平台。我選擇的是共用 CPU 的 Vultr 方案,1GB RAM、1 vCPU、25GB SSD 硬碟、2TB 月流量,使用 Ubuntu 22.04 作業系統且不使用任何其他服務,月租約為 6 美金。

接下來我們將開始說明租用伺服器的流程:

  1. 前往 Vultr 註冊或登入帳號,並進入 Products > Compute,點擊 Deploy Server。

  1. 選擇 Cloud Compute - Share CPU 方案。
  2. 選擇 Tokyo 伺服器位置 (連線延遲低、速度快)。

  1. 選擇 Ubuntu 22.04 LTS x64 作業系統。

  1. 最後輸入要作為 Bluesky 伺服器的網域名稱來作為 Hostname,你需要自備一個網址,推薦在穩定安全的 Cloudflare 註冊,.com 後綴的網址每年僅約 300 新台幣。這邊以 bs.tedliou.com 作為範例。

  1. 等待伺服器建立完成,即可點擊來進入控制台。

  1. 接下來我們要登入伺服器的終端機來開始架設,首先點擊密碼旁邊的按鈕複製 root 密碼,再點擊右上方的按鈕進入終端機。

  1. 首先輸入 root 來以最高權限登入。
  2. 再展開左側的工具,選擇 Clipboard 並貼上剛才複製的 root 密碼,再點擊 Paste 貼上密碼後 Enter 登入。下一步開始架設 Bluesky。

開始架設 Bluesky 伺服器

  1. 輸入以下指令來下載 Bluesky 的伺服器安裝腳本。
wget https://raw.githubusercontent.com/bluesky-social/pds/main/installer.sh
  1. 下載到腳本後,輸入以下指令啟動安裝程式。
sudo bash installer.sh
  1. 一開始安裝程式會要你先設定好網址的兩個 DNS A 紀錄,在這邊請先記一下待會要設定的 DNS 資料,也先在安裝程式內輸入網址,但先不要點擊 Enter 來完成,我們得先來設定網址。以我的 bs.tedliou.com 為例,需要新增以下 DNS A 紀錄:
名稱類型紀錄
bs.tedliou.comA45.76.53.44
*.bs.tedliou.comA45.76.53.44

  1. 前往網域名稱註冊商的設定介面來新增 DNS 紀錄。由於我的網址是在 Cloudflare 買的,這邊就以 Cloudflare 的設定方式為例。首先新增第一筆 A 紀錄,類型選擇 A、名稱填入 bs、IPv4 位址填入 45.76.53.44 (對應到上一步紀下的 DNS 資料),不開啟 Proxy,最後點擊儲存。

  1. 另一筆 A 紀錄也同理,也不開啟 Proxy,輸入後點擊儲存。Cloudflare 的 DNS 紀錄更新很快,因此可以直接繼續操作。其他網域名稱註冊商則可能需要等待 5 ~ 20 分鐘不等。

  1. 回到 Vultr 終端機繼續操作,現在可以點擊 Enter 來完成剛才的網址輸入,並輸入一個用於管理員的電子郵件名稱。

  1. 最後輸入 y 來建立伺服器的第 1 個帳號,分別需輸入電子郵件與 Handle。Handle 就是我們帳號的名稱,對應到我們剛才新增的 DNS 紀錄。以我的 bs.tedliou.com 為例,在這個伺服器上的會員的 Handle 格式都會是 xxxx.bs.tedliou.com,因此在這邊我們可以輸入 tedliou.bs.tedliou.com (很彆扭,我知道,但我爽~)。
  2. 建立第 1 個帳號後,伺服器也就架設好了,安裝程式最終會將第 1 支帳號的 Handle 和密碼印出來,請手動抄寫下來。下一步我們將實際登入到我們自架的 Bluesky 伺服器中。

登入到自架 Bluesky 伺服器

  1. 前往 bsky.app,點擊左上角的登入。

  1. 點擊託管服務提供商,我們將它切換到自架的伺服器。

  1. 切換到自訂,輸入我們的伺服器網址,例如:bs.tedliou.com,並點擊完成。

  1. 輸入帳號名稱 (Handle) 和密碼 (前面抄寫的),點擊下一步完成登入。

  1. 最後會跳出電子郵件驗證,這可以之後再來做,先點擊暫時不需要來跳過,我們得先來處理個問題。

解決 Invalid Handle 無效的帳號代碼問題

  1. 看一下帳號的個人檔案頁面,可以發現出現了 Invalid Handle 錯誤。這個問題主要是我們的網址還沒經過 TXT 紀錄的驗證,接下來就要來解決它。

  1. 進入設定 > 變更帳號代碼。

  1. 點擊我擁有自己的網域。

  1. 再次輸入第 1 支帳號的 Handle,並記錄下方顯示的 DNS TXT 紀錄。(如果你想要直接使用自己的網域,例如:bs.tedliou.com,可以直接跳到這篇文章來操作)

  1. 再次前往網域名稱註冊商的設定介面,新增一筆 DNS 紀錄,最後點擊儲存。同樣的,除了 Cloudflare 以外的其他網域名稱註冊商則可能需要等待 5 ~ 20 分鐘不等才能繼續操作。
名稱類型紀錄
_atprotoTXTdid=did:plc:t4bw62rm3jltypqqech55er4

  1. 回到 Bluesky,點擊驗證 DNS 紀錄。

  1. 現在應顯示「網域已驗證!」,最後點擊更新至 tedliou.bs.tedliou.com 完成所有設定。

  1. 再次檢查個人檔案頁面,現在應可以正常顯示我們的帳號名稱 (Handle)。

Bluesky PDS 伺服器架設心得

Bluesky 能讓有需求的使用者自己架設伺服器的作法真的很棒,資料要怎麼存放可以自行決定,且整個平台的程式都是開源的,有能力的人也可以自己去魔改它。目前實際架設過 Bluesky PDS 伺服器的感想是「非常簡單」,只要你有些許必要的 Linux、DNS 和網域的知識,還有一張能刷的信用卡或簽帳卡,理應能輕易地架設完成。官方提供的安裝程式已經包辦了大多通常會要自行設定的工作,我們只要按部就班的操作,就可以很快地搞定一切。

然而,其實我早已在官方伺服器申請到帳號,大家可以來追蹤:@tedliou.com,所以在這篇文章中架設的 bs.tedliou.com 將會馬上消失,所以不用擔心我的 IP 和 root 帳密洩漏的問題。另外,這篇文章裡面所寫的網址、DNS A 和 TXT 紀錄都是示範用的,跟你的通常會不一樣,別直接照抄!

參考資料

相關文章

Ted Liou

雲科碩士在讀中,專注於 Unity C#、TouchDesigner 技術,常把技術筆記分享到部落格,偶爾還直接挪用文章來當教材的研究生。