−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

Mastodon 專用 VPS:執行您自己的小型執行個體

在 VPS 上託管一個小型 Mastodon 執行個體:誠實地估算記憶體和磁碟、用 Docker 部署、透過 SMTP 中繼發郵件,並定期清理媒體防止磁碟被塞滿。

擁有自己的社交帳號聽起來很美好,直到您意識到這個帳號住在別人的伺服器上,受別人的規則和線上時間擺佈。自己的 Mastodon 執行個體解決了這個問題:您的帳號是 @you@your-domain,除了您沒人能關掉它。代價是,Mastodon 可不是個小應用。最好事先知道自己要面對什麼。

適合誰

  • 給您自己或公司官方帳號用的單使用者執行個體。
  • 朋友圈或專案團隊的小社群——幾十人,不是幾千人。

再大的話,您營運的就是一項需要承擔審核職責、處理舉報、配備正經基礎設施的服務了。那是另一回事。

真正需要什麼

Mastodon 會同時執行好幾個程式:Rails Web 應用、後台的 Sidekiq 工作程式、一個流式伺服器、PostgreSQL 和 Redis。由於聯邦機制,哪怕您在睡覺,伺服器也在不斷從其他伺服器拉取帖子和媒體。

執行個體方案
單使用者,關注不多Small-IP — 4 vCPU、4 GB、每月 $16
小社群,聯邦活躍Medium-IP — 6 vCPU、6 GB、每月 $20

4 GB 能跑但很緊;您關注的某條熱帖收到幾千條回覆時,Sidekiq 佇列就會積壓。6 GB 才留得出喘息的空間。另一個限制是磁碟——見下面的媒體部分。

您還需要一個網域和一個獨立 IP:其他伺服器透過 443 埠向您投遞。

用 Docker 部署

官方儲存庫自備 docker-compose.yml。在一台裝好了 Docker 的全新 Ubuntu 24.04 伺服器上:

git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
touch .env.production
docker compose run --rm -v $(pwd)/.env.production:/opt/mastodon/.env.production \
  web bundle exec rake mastodon:setup
docker compose up -d

初始化任務會詢問您的網域、資料庫和 Redis 設定(預設值與 compose 檔案一致)、郵件設定和第一個管理員帳號,並把一切寫進 .env.production。請閱讀您檢出的那個標籤的發布說明——大版本之間步驟偶爾會變。

Mastodon 在 dist/nginx.conf 裡自備了 nginx 模板。把它複製到 /etc/nginx/sites-available/,替換網域,再用 certbot 申請憑證。我們的反向代理指南和網域指南都講到了。

郵件:用中繼

Mastodon 會發送確認郵件和重設密碼郵件。我們的伺服器關閉了 25 和 465 埠,所以請讓 Mastodon 透過 587 埠連線外部的事務郵件服務供應商:

SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example

說實話,您本來也會想用中繼。從全新伺服器 IP 發出的郵件很容易進垃圾箱;中繼有您還沒有的信譽。

媒體:磁碟吞噬者

您的伺服器見到的帳號,其每張圖片、每段影片都會快取在本機。活躍的執行個體每週就是好幾 GB。定期清理舊的遠端媒體:

docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30

把它們放進每天執行的 cron 任務裡。執行個體變大後,用 .env.production 裡的 S3_* 設定把媒體遷到 S3 相容的物件儲存——這樣 VPS 磁碟上就只剩資料庫了。

日常維護

  • 更新: 拉取新標籤,docker compose pull,按發布說明執行遷移,然後重新啟動。不要跳過大版本。
  • 備份: 轉儲 PostgreSQL,並妥善儲存 .env.production——少了裡面的金鑰,恢復就不會成功。我們的 restic 指南講了異地副本,Managed Backups 則能加上整台伺服器的每日還原點。
  • 網域定了就不能改。 它寫死在整個聯邦宇宙裡每個帳號的位址中。在建立第一個帳號前選好。

想找個更輕量的團隊聊天方案?Matrix 伺服器可能更合適。

準備好部署了嗎?以加密貨幣付款,免 KYC——大約一分鐘上線。

立即部署 →

常見問題

一個 Mastodon 執行個體需要多少記憶體?

單使用者或小型執行個體,4 GB 是現實的下限,6 GB 比較寬裕。Mastodon 會同時執行 Web 程式、Sidekiq 工作程式、PostgreSQL 和 Redis,而且就算沒人發帖,聯邦也會讓 Sidekiq 一直忙著。

為什麼 Mastodon 需要獨立 IP?

其他伺服器透過 443 埠的 HTTPS 把帖子投遞到您的伺服器,別人也在瀏覽器裡開啟您的執行個體。這需要您自己的 IP 能接收 443 埠的對內流量,而 NAT 方案做不到。

Mastodon 怎麼發郵件?

透過外部的事務郵件服務供應商,用 587 埠的 SMTP 傳送。我們的伺服器關閉了 25 和 465 埠,何況用中繼的送達率本來就比全新 IP 高得多。

為什麼我的磁碟滿得這麼快?

您的伺服器會快取它見到的每個帳號的媒體。定期執行 'tootctl media remove --days 7',或者把媒體遷到 S3 相容的物件儲存。

以後能換網域嗎?

不能。網域是整個聯邦宇宙裡每個帳號身分的一部分。建立第一個帳號前請慎重選擇。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。