fly.ioにn8nをインストールして
目次
n8n on Fly.io: L-CON mini テスト構築手順書(実践記録付き)
LINE チャットボット (n8n + ChatGPT) 構築手順書
【前提】
- ホスティングサービス: Fly.io
- n8n: Self-Hosted
- ChatGPT: OpenAI API (gpt-4)
- 連携元: LINE Messaging API
【STEP 1: n8n を Fly.io にデプロイ】
- Fly.io に登録:
https://fly.io/
- CLI インストール(PowerShell):
iwr https://fly.io/install.ps1 -useb | iex
- アプリ作成:
fly launch --name n8n-yourapp --region nrt
- fly.toml に volume mount を追加:
123[mounts]source = "n8n_data"destination = "/home/node/.n8n" - ボリューム作成:
fly volumes create n8n_data --region nrt
- Webhook URL 設定(推奨):
fly secrets set WEBHOOK_URL=https://n8n-yourapp.fly.dev/
【STEP 2: LINE Developers 設定】
- LINE公式アカウント+Messaging APIチャネル作成
- Webhook URL に n8n の URL を設定:
例:https://n8n-yourapp.fly.dev/webhook/line-webhook
- チャネルアクセストークン取得:「Messaging API」設定下部よりコピー
【STEP 3: n8n のワークフロー構築】
- Webhook ノード
– Method: POST
– Path: line-webhook - HTTP Request(ChatGPT 送信)
123456789{"model": "gpt-4","messages": [{"role": "user","content": "{{ $('Webhook').item.json.body.events[0].message.text }}"}]} - Set ノード
- replyToken:
{{ $('Webhook').item.json.body.events[0].replyToken }}
- chatReply:
{{ $('HTTP Request').item.json.choices[0].message.content }}
- replyToken:
- HTTP Request(LINE返信)
123456789{"replyToken": "{{ $('Webhook').item.json.body.events[0].replyToken }}","messages": [{"type": "text","text": "{{ $('HTTP Request').item.json.choices[0].message.content.slice(0, 500) }}"}]}
【つまずいたポイント】
- Webhook URL をテスト→本番に切り替え忘れ
- {{ }} を JSON の文字列内で使う場合は
"..."
で囲む必要がある - Using JSON / Expression モードの切り替えミス
- replyToken の参照ミスで undefined 発生
- ChatGPT 応答が 500 文字超で LINE API がエラー
ご希望に応じて CRM 連携・ログ保存・条件分岐返信なども拡張可能です。
本手順書は、Fly.io 上で n8n をホストし、LINE Messaging API をトリガーに ChatGPT の応答を返すシステムの構築フローです。
1. 環境構築(Fly.io + n8n)
- Fly CLI インストール
公式: flyctl install - ログイン
flyctl auth login
- アプリ初期化
12mkdir n8n-fly && cd n8n-flyflyctl launch # アプリ名例:n8n-yourapp - Dockerfile 作成
FROM n8nio/n8n
だけでOK
2. 永続ボリュームの設定
1 |
flyctl volumes create n8n_data --region nrt -a n8n-yourapp |
1 2 3 4 |
# fly.toml に以下を追記: [mounts] source = "n8n_data" destination = "/home/node/.n8n" |
再デプロイ:
1 |
flyctl deploy -a n8n-yourapp |
3. Secrets(環境変数)設定
1 |
flyctl secrets set N8N_OAUTH_UI_ENABLED=true WEBHOOK_URL=https://n8n-yourapp.fly.dev -a n8n-yourapp |
4. ログインできない場合(初期化エラー)
n8n にログインできない/Setup 画面が出る場合は、以下の Basic 認証を一時的に有効化してください:
1 |
flyctl secrets set N8N_BASIC_AUTH_ACTIVE=true N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD='YourPassword' -a n8n-yourapp |
5. LINE Developers 側の設定
- チャネルを Messaging API で作成
- Webhook URL に:
https://n8n-yourapp.fly.dev/webhook/line-webhook
- チャネルアクセストークンを取得(長期)
6. n8n ワークフロー構築
- Webhook ノード(POST /line-webhook)
- ChatGPT用 HTTP Request ノード
12345678POST https://api.openai.com/v1/chat/completionsAuthorization: Bearer sk-xxxxxContent-Type: application/jsonBody:{"model": "gpt-3.5-turbo","messages": [{ "role": "user", "content": "{{ $json.body.events[0].message.text }}" }]} - Set ノード:replyToken と ChatGPTの応答
- HTTP Request ノード(LINEへ返信)
7. つまずきポイントと対策
- Webhook URL が 404 → ACTIVATE をクリックして有効化
- ChatGPT JSON エラー → JSON構造ミス(「=」ではなく “” を使用)
- n8n が初期化された → volume mount 漏れ or 未作成
- ログイン不可 → Basic Auth を temporary で有効化