部署到 DigitalOcean

在 DigitalOcean Droplet 或 App Platform 上部署 nostrfy — 逐步說明,含 systemd、TLS 與生產就緒的設定。

兩種選擇:Droplet(VM,最簡單)或 App Platform (容器)。

選項 1:Droplet(推薦)

  1. 建立 Droplet:Ubuntu 24.04 LTS,任意大小(1 GB RAM 起步足夠)。位於 離使用者近的區域的 Droplet 可降低延遲。
  2. SSH 登入並依照通用 VPS 指南操作:
sh
ssh root@<droplet-ip>
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
sudo mkdir -p /etc/nostrfy
sudo curl -fsSL -o /etc/nostrfy/nostrfy.toml \
  https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.toml
sudo nano /etc/nostrfy/nostrfy.toml                 # 設定 name、public_url、private_key
sudo curl -fsSL -o /etc/systemd/system/nostrfy.service \
  https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.service
sudo systemctl daemon-reload
sudo systemctl enable --now nostrfy
  1. 開放連接埠:在 Droplet 防火牆中(推薦使用 Digital Ocean Cloud Firewall):允許入站 TCP 8080(如果加入 TLS 則還有 443)。
  2. 驗證:
sh
curl http://<droplet-ip>:8080/health
  1. 加入 TLS(wss://)用 certbot + nginx,或 Digital Ocean 的託管負載平衡器加憑證 — 然後設定 relay.public_url = "wss://relay.example.com" 並重新啟動。

選項 2:App Platform(容器)

App Platform 從倉庫的 Dockerfile 建置(它會下載預編譯的 發行二進位檔):

  1. 連接你的 GitHub 倉庫並從中建立應用。
  2. 連接埠:將 HTTP 連接埠設為 8080(中繼在那裡監聽)。
  3. 持久磁碟:在 /data 掛載磁碟區(LMDB 資料在那裡 — 沒有它,每次部署都會遺失資料)。
  4. 環境:烘焙到映像中的 deploy/nostrfy.container.toml 可以透過 在 /etc/nostrfy/nostrfy.toml 掛載你自己的設定來替換(建立一個複製它的 分支,或在你自己的倉庫中使用 Dockerfile COPY)。
  5. TLS:App Platform 會為應用網域自動提供 https:// — 相應地設定 relay.public_url。

兩種選項通用

  • 更新:重新執行 install.sh + systemctl restart nostrfy(Droplet),或 推送到已連接的倉庫(App Platform)。
  • 所有設定都記錄在 設定參考中。