Fly.io へのデプロイ
既製テンプレートで数分で nostrfy を Fly.io にデプロイ — ボリューム、マシン、TLS 終端、シンプルな更新。
リポジトリに含まれるもの
| ファイル | 目的 |
|---|---|
Dockerfile | コンテナイメージ — GitHub リリースアセットからビルド済みリリースバイナリ(x86_64 / aarch64、ビルドアーキテクチャで選択)をダウンロードし、sha256 チェックサムを検証します。Fly 上ではコンパイルは行われません |
fly.toml | Fly アプリ設定:ポート 8080 の HTTP サービス、ヘルスチェック、/data ボリュームマウント、常時起動マシン |
deploy/nostrfy.container.toml | イメージ内の /etc/nostrfy/nostrfy.toml に焼き込まれるリレー設定 |
前提条件
- Fly.io アカウント
- flyctl CLI(
fly version) - ログイン済み:
fly auth login
4 ステップでデプロイ
1. アプリを作成(まだデプロイしない)
sh
cd /path/to/nostrfy
fly launch --no-deploy --name <your-app-name> --region <region><your-app-name>は Fly 上で一意である必要があります(リレー URL の一部になります:wss://<your-app-name>.fly.dev)<region>:例nrt(東京)、fra、iad、sjc— ユーザーに最も近いリージョンを選んでください- テンプレートの
fly.tomlの値(アプリ名、リージョン)を上書きすることがあります — 問題ありません
2. 永続ボリュームを作成
LMDB データベースは /data にマウントされた Fly ボリューム上にあります:
sh
fly volumes create data --size 1 --region <region>開始には 1 GB で十分です(データベースは利用に応じて増加します)。後でリサイズも、最初から大きめに作成もできます。
3. リレーを設定
デプロイ前に deploy/nostrfy.container.toml を編集してください:
toml
[relay]
name = "My Relay" # NIP-11 経由でクライアントに表示されます
description = "A friendly relay for everyone"
private_key = "..." # NIP-29 グループに必須です
public_url = "wss://<your-app-name>.fly.dev" # NIP-42/62/98 に必須ですprivate_key:一時的な設定でnostrfy genkeyを実行してローカルで生成し、貼り付けるか、任意の Nostr ツールで生成してくださいpublic_urlはアプリ名と一致している必要があります — ない場合、NIP-42 AUTH、NIP-62 vanish、NIP-86 管理 API は動作しません- その他は既定値のままで構いません
4. デプロイ
sh
fly deployFly がイメージをビルドし(数分 — バイナリのダウンロードは高速でイメージは小さい)、マシンを作成して /health へのヘルスチェックを実行します。
検証
sh
# ログ行: "relay listening on ws://0.0.0.0:8080"
fly logs
# 公開アドレス経由で NIP-11 情報ドキュメントを取得します
curl https://<your-app-name>.fly.dev/
# Nostr クライアントを wss://<your-app-name>.fly.dev に向けてくださいスケーリングと更新
- リレーを更新:
deploy/nostrfy.container.tomlを編集して再度fly deploy— イメージは常に最新の GitHub リリースバイナリをダウンロードするため、更新は再デプロイだけです - バージョンを固定:
docker build --build-arg NOSTRFY_VERSION=v0.1.16 ...または Dockerfile 内のARGを変更 - スケール:既定ではリレーは単一マシンです。
fly machines clone <id>で 2 台目を作成できます。両方がボリュームを共有します(Fly ボリュームは同一リージョン内の複数マシンに対応) - メトリクス:Fly は
/metricsエンドポイントを収集し(fly.tomlの[metrics]を参照)、Fly ダッシュボードのメトリクスに表示します
設定のカスタマイズ
イメージは deploy/nostrfy.container.toml から焼き込まれた /etc/nostrfy/nostrfy.toml を読み取ります。カスタマイズ方法は 2 つあります:
- リポジトリ内の
deploy/nostrfy.container.tomlを編集して再デプロイ(最も簡単) - 独自設定をマウント:設定ファイルを
/etc/nostrfy/nostrfy.tomlに上書きコピーするフォークイメージをビルド
すべてのオプションは設定リファレンスに記載されています。
注意点
- 常時起動設計:
fly.tomlのauto_stop_machines = false— リレーはアイドル時にも停止してはなりません - コンテナはリレーをフォアグラウンドモード(
nostrfy start --foreground)で実行します。ログは stdout/stderr に出力され、Fly が収集します - TLS は Fly が終端します。リレー自体はポート 8080 でプレーン WebSocket を提供します
- Blossom メディアホスト:Blossom サーバーも提供するには、設定で
blossom.host = "media.example.com"を設定し、media.example.comを同じ Fly アプリの追加ホスト名として追加し(fly.toml [[services]] http_options.allowed_http_hostnamesまたはfly hostnames)、Fly ダッシュボードでmedia.の TLS 証明書を追加します — リレーは内部でホストを分割します(server.api_hostと同様)