Zapierに月$20払っている。
やっていることはSlack通知とスプレッドシート転記だけなのに。
そういう状態から抜け出したくてn8nを触り始めました。
Docker Composeで起動して、最初のワークフローを動かすまで、だいたい30分。
この記事ではその手順と、自分がハマったポイントをまとめています。
この記事でできるようになること
Docker Composeでn8nを起動し、Webhook→Slack通知のワークフローを1つ作るところまでやります。
n8nの全機能を網羅する記事ではありません。
「まず動かす」ことだけに集中します。
n8nとは何か、読み方やZapierとの違いを先に知りたい方はそちらをどうぞ。
なぜn8nを使い始めたか

きっかけはZapierの請求明細です。
月$20。
年間で$240。
やっていることはWebhook受信→Slack通知と、フォーム回答→スプレッドシート転記の2本だけ。
タスク数の上限も気にしながら使っていて、正直ストレスでした。
n8nの存在はSNSで知っていました。
ただ「Docker必須」と書いてあったので、その時点で一度閉じた。
転機はn8n・Dify・Make・Zapierを含むAI自動化ツール比較を書くためにツールを片っ端から触ったこと。
n8nをDocker Composeで立ち上げてみたら、思ったより簡単だった。
そしてZapierでは絶対にできないことができた。
Webhook→Claude API→Slack通知。
自分でワークフローを設計して、自分のAPIキーで、自分のサーバーで動かす。
月額$0、タスク制限なし。
n8nはノーコードじゃないです。
ローコード。
でもそれが良い。
手順① Docker Composeでn8nを起動する

前提として、DockerとDocker Composeがインストール済みであること。
macOSならDocker Desktop、LinuxならDockerエンジンが入っていればOKです。
docker-compose.ymlを作る
任意のディレクトリに`docker-compose.yml`を作ります。
n8n公式リポジトリ(n8n-io/n8n-hosting)の構成をベースにした最小版です。
version: "3.8"
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: n8n
POSTGRES_DB: n8n
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: n8n
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
volumes:
postgres_data:
n8n_data:PostgreSQL 16を使っているのは公式推奨だからです。
SQLiteでも動きますが、本番運用を考えるとPostgreSQLにしておいたほうがいい。
最小VPS要件は1 CPU・1-2GB RAM。ローカルPCなら余裕です。
起動する
docker compose up -dこれだけです。初回はイメージのダウンロードで2〜3分かかります。
ブラウザで `http://localhost:5678` を開くと、n8nの初期設定画面が出ます。
メールアドレスとパスワードを設定してログイン。
UIは英語ですが、操作は視覚的なのでそこまで困りません。
どうしても日本語で使いたい場合はn8nの日本語化手順を参考にしてください。
SSL/TLS設定やドメイン割り当てなど、本番環境向けの構成はDocker Composeでのn8n構築を詳しく知りたい方の記事でまとめています。
手順② 最初のワークフローを作る(Webhook→Slack通知)

n8nのダッシュボードで「Add workflow」をクリックします。
ノードの考え方
n8nのワークフローは「ノード」をつないで作ります。フローチャートと同じです。
- トリガーノード: ワークフローの起動条件(Webhook、スケジュール、メール受信など)
- アクションノード: 実行する処理(Slack送信、HTTP Request、データ変換など)
この2種類を線でつなぐだけ。
Webhook → Slack通知を組む
- Webhookノードを追加 — 「Add first step」→ 検索で「Webhook」を選択。MethodはPOSTにしておく
- Slackノードを追加 — Webhookノードの右の「+」→ 検索で「Slack」を選択。Operationは「Send a Message」
- Slack認証を設定 — Slack APIのOAuth Tokenを入力(Slack App作成が必要。ここが一番面倒な工程)
- チャンネルとメッセージを設定 — 送信先チャンネル名と、メッセージ本文を入力。
Webhookで受け取ったデータを `{{ $json.body.text }}` のように埋め込める - テスト実行 — Webhookノードの「Test URL」をコピーして、ターミナルからcurlで叩く
curl -X POST http://localhost:5678/webhook-test/xxxxx \
-H "Content-Type: application/json" \
-d '{"text": "n8nからのテスト通知"}'Slackにメッセージが届いたら成功です。
6. ワークフローをActivate — 右上のトグルをオンにすると、Production URLが有効になる
ここまでで、外部からHTTPリクエストを送るとSlackに通知が飛ぶ仕組みが完成しました。
使って変わったこと

一番大きかったのは、自動化を「使う」から「設計する」に変わったこと。
Zapierでは用意されたテンプレートを選んで、パラメータを埋める。
n8nでは自分でフローチャートを描いて、好きなAPIを呼べる。
今はWebhook→Claude API→Slack通知のワークフローを実運用しています。
ブログのコメントが来たらClaudeが要約して、Slackの専用チャンネルに投げる。
Zapierでこれをやろうとすると、Claude APIへのHTTPリクエスト部分だけで追加課金が発生します。
n8nなら月額$0。
ぶっちゃけ、「使う」のと「設計する」のでは全く別の体験です。
n8n 2.0(2025年12月リリース)でDraft/Published状態の分離が入り、ワークフローの管理がさらにやりやすくなりました。GitHub Stars 約178,000、公式インテグレーション400以上。コミュニティの勢いも止まっていません。
セルフホストなら完全無料です。
ライセンスはSustainable Use License(fair-code)で、社内利用は制限なし。
ただし「オープンソース」ではないので、再販や組み込みには別途ライセンスが必要です。
n8nで何を自動化すべきか迷ったときの考え方も書いているので、次のワークフローに悩んだら読んでみてください。
ハマったポイント3つ

① Dockerが怖い問題
自分もそうでした。
でも実際やることは`docker compose up -d`と`docker compose down`だけ。起動と停止。
ymlをコピペして、コマンド1つ打てば動きます。
一度起動してしまえば、その後Dockerを触ることはほぼありません。
詳しくはn8nで最初にやらかした失敗の記録にも書きました。
② 認証設定が面倒
SlackやGoogleなど外部サービスとつなぐとき、OAuth認証の設定が必要です。
「Client ID」「Client Secret」「Redirect URI」あたりで最初は混乱します。
ただ、これは最初の1回だけ。
一度設定すればCredentialsとして保存されるので、2本目以降のワークフローではワンクリックで使い回せます。
③ ノードの考え方に慣れるまで
Zapierの「トリガー→アクション」は1対1の直線。
n8nは分岐・ループ・マージができるので、最初は「どこから何が流れてくるのか」がわからなくなります。
コツは、最初から複雑なフローを作らないこと。
Webhook→1つのアクション、という最小構成で動かして、そこから1ノードずつ足していく。
3日も触れば慣れます。
この先のロードマップ

n8nの本当のポテンシャルはAI連携にあります。
AI Agent nodeでClaude、GPT-4、Gemini、Ollamaを呼び出せるし、MCP Server Trigger + MCP Client Toolで双方向のMCP連携もできます。
やりたいことに応じて、次に読む記事を選んでください。
- 日本語で使いたい → n8nの日本語化手順
- AIエージェントを組みたい → n8nとMCPを連携してAIエージェントを構築する方法
- Difyと迷っている → n8nとDifyの違いを体験ベースで比較した記事
まとめ
`docker compose up -d`を打つ。
ブラウザで`localhost:5678`を開く。
Webhook→Slack通知のワークフローを1つ作る。
それだけで、Zapierとの違いがわかります。
次にやることは、n8nで何を自動化すべきか迷ったときの考え方を読んで、自分のワークフローを設計すること。

