自分のサーバーに n8n をデプロイ:ドメイン、ワークフロー、バックアップ
Zenavo のテンプレートで n8n をデプロイし、HTTPS、Webhook URL、タイムゾーンを設定します。最初のワークフローを動かし、暗号化キーの保管とボリュームのバックアップまでを説明します。
この記事は English、简体中文、繁體中文、Español、Bahasa Indonesia でもお読みいただけます。
フォームの送信内容をスプレッドシートに書き込む、定期的にメッセージを集約する、Webhook を受け取って別の API を呼び出す——こうした繰り返しの自動化は n8n に任せられます。セルフホストなら実行回数ごとの課金制限がなく、ワークフローも認証情報も自分のサーバーに置けます。
この記事では、Zenavo の n8n テンプレートを使って、デプロイ、ドメインと Webhook の設定、バックアップとアップグレードまでを順に説明します。サーバー、Zenavo プラットフォーム、ワークフローから呼び出す外部 API の料金はそれぞれ別です。
n8n をデプロイする
まず Zenavo に Linux サーバーを接続し、n8n テンプレートを開いて、サーバーを選んでデプロイします。
現在のテンプレートの設定は次のとおりです。
| 設定 | 値・用途 |
|---|---|
| イメージ | n8nio/n8n:latest |
| HTTP ポート | 5678 |
| 永続ボリューム | /home/node/.n8n。標準の SQLite データベース、ワークフロー、認証情報がここに保存されます |
N8N_ENCRYPTION_KEY |
プロジェクト作成時に自動生成され、保存した認証情報の暗号化に使われます |
GENERIC_TIMEZONE |
初期値は UTC。以下で自分のタイムゾーンに変更します |
N8N_DIAGNOSTICS_ENABLED |
false(テレメトリーを無効化) |
latest は上流の更新に追従します。長く使う場合は、n8n サービスの 設定 → ソース でイメージタグを動作確認済みの固定バージョン(例:n8nio/n8n:1.82.0)に変更し、再デプロイで意図せずバージョンが上がらないようにしてください。
ドメインを設定し、Webhook URL とタイムゾーンを指定する
n8n サービスの ネットワーク タブでポート 5678 にドメイン(例:n8n.example.com)を割り当て、DNS にサーバーを指す A レコードを追加して HTTPS が有効になるのを待ちます。手順はドメインと HTTPS をご覧ください。
次に、n8n サービスの 変数 タブを開き、ドメインとタイムゾーンの設定を追加します。
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com/
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Asia/Tokyo
TZ=Asia/Tokyo
補足:
WEBHOOK_URLは Webhook ノードが生成する公開 URL を決めます。未設定だと、コンテナ内部のhttp://localhost:5678が表示されます。N8N_PROXY_HOPS=1は Zenavo のゲートウェイ1段分のリバースプロキシに対応します。ドメインの手前に Cloudflare などの CDN プロキシを挟む場合は、実際の段数に合わせて調整してください。GENERIC_TIMEZONEはスケジュールトリガー(Schedule Trigger)の標準タイムゾーンになります。
保存してサービスを再起動したら、https://n8n.example.com を開いて管理者アカウントを作成します。あとでドメインを変更する場合は、上の URL 関連の変数もあわせて更新してください。
最初のワークフローと Webhook を動かす
エディターに入ったら、まず小さなワークフローを作って動作を確認します。
- 新しいワークフローを作成し、Manual Trigger を追加します。
- Edit Fields (Set) ノードを追加し、文字列フィールド
messageにHello from n8nを設定します。 - Test workflow をクリックし、右側の出力にメッセージが表示されることを確認して保存します。
続いて、外部からのリクエストが Webhook に届くか試します。
- Webhook ノードを追加し、HTTP Method を
GETにします。 - Listen for test event をクリックし、ノードに表示される Test URL をブラウザで開いて、エディターにすぐリクエストが届くことを確認します。
- GitHub、Stripe、Slack などの外部サービスから本番接続するときは、Production URL を使い、ワークフロー右上のスイッチを Active にします。Test URL はテスト待機中だけ有効なアドレスです。
N8N_ENCRYPTION_KEY を控えておく
n8n に登録した API キー、データベースのパスワード、OAuth トークンはすべて、N8N_ENCRYPTION_KEY で暗号化されてデータベースに保存されます。
n8n サービスの 変数 タブを開き、N8N_ENCRYPTION_KEY の値をパスワードマネージャーにコピーして保管してください。デプロイ後にこの値を変更しないでください。 将来バックアップを新しいプロジェクトや別のサーバーに復元するときも、同じ N8N_ENCRYPTION_KEY を設定しないと、保存済みの認証情報を復号できなくなります。
エディターの「ワークフローのエクスポート」はノードと接続の JSON だけを書き出す機能で、認証情報や実行履歴は含まれません。ボリュームのバックアップの代わりにはならない点に注意してください。
バックアップとアップグレード
n8n のデータはすべて /home/node/.n8n ボリュームにあります。n8n サービスの バックアップと復元 タブでバックアップします。
- 重要なワークフローが動いていない時間帯を選び、プロジェクトを停止します(ボリュームのバックアップにはプロジェクトの停止が必要です)。
- ボリュームのバックアップを作成し、完了したらプロジェクトを再起動します。
- バックアップを1つダウンロードし、
N8N_ENCRYPTION_KEYと一緒に保管します。
詳しい手順はバックアップと復元をご覧ください。検証のために別のプロジェクトへ復元する場合は、有効化されているスケジュールトリガーが起動後に動き出すため、先にトリガーを止めるか本番環境と切り離して確認してください。
アップグレードの前には n8n のリリースノートを読み、先にボリュームをバックアップしてから 設定 → ソース でイメージのバージョンを変更します。アップグレードでデータベース構造が移行された場合、イメージタグだけを元に戻しても起動しないことがあるため、戻すときはアップグレード前のバックアップを復元します。
よくある質問
Webhook ノードの URL が localhost:5678 のままになります
変数 タブに WEBHOOK_URL=https://あなたのドメイン/ が設定されているか確認し、保存後に n8n サービスを再起動してください。
外部サービスから Webhook を呼ぶと 404 になります
Production URL(/webhook-test/ ではなく /webhook/ のパス)を使っているか、またワークフロー右上の Active スイッチがオンになっているか確認してください。
スケジュールトリガーが日本時間で動きません
変数の GENERIC_TIMEZONE と TZ が Asia/Tokyo になっているか、またワークフロー個別の Settings → Timezone で別のタイムゾーンが指定されていないか確認してください。
どのくらいのサーバーが必要ですか? 日常的な軽いワークフローならメモリ消費は少なく、1 vCPU・2 GB のサーバーから始められます。大きなファイルや大量の JSON 配列をメモリ上で処理する場合、または同時実行が多い場合は、2 vCPU・4 GB 以上のサーバーをおすすめします。
まずは n8n テンプレートから始めましょう。ドメインを割り当てて WEBHOOK_URL とタイムゾーンを設定し、N8N_ENCRYPTION_KEY の控えと最初のボリュームバックアップを取っておけば安心です。
コーディングエージェントが読む内容です(https://zenavo.app/ja-JP/blog/self-host-n8n.md)。
Markdown を読み込めませんでした。直接開いてください: https://zenavo.app/ja-JP/blog/self-host-n8n.md