AIで作業を自動化するなら n8n ですよね。ここ数ヶ月で少しずつ浸透してきたかと思います。
そんな n8n ですが、普通に使うと有料で、ある方法を使うと(合法的に)無料で使う方法を知っていますか?
意外と知らずに使っていないケースを身近で多くみてきて布教をしていたので、具体的な手順も併せて記事として公開することにしました。
n8nはAIワークフローを簡単に構築できる便利なツールで、プログラミングの知識がなくてもワークフローを構築して業務を自動化することができるので非常に便利なツールです。
n8nはクラウド版で使用すると月額料金が4,000円ほどかかってしまい、使うのに勇気がいると思われがちですが、ローカルで利用すると完全無料で実行することができます。
また、クラウド版では使えない一部のノードもローカルでは利用できるので、個人利用目的の場合は圧倒的にローカルでセットアップすることをお勧めします。
そもそもローカルで使う方法が分からなかったり、具体的な立ち上げ方を知りたい方向けにセットアップ方法をハンズオン形式でまとめたのでぜひチャレンジしてみて下さい。
対象読者
- n8nを無料で使ってみたい人
- 業務の自動化に興味がある人
- AIワークフローに関心がある人
目次
1|n8nを完全無料で使う
2|npm を使いたい人向けセットアップ
3|Docker を使うパターン
4|補足:設定・永続化について
Xではこのような動画とAIに関する情報を日々発信しているのでぜひフォローやいいねで応援いただけると励みになります。
動画AIやn8nを使った全自動の動画編集などの情報を発信しているので、フォローすると活用方法やエッジの事例をキャッチアップできます
それでは順番に解説していきます。
1|n8nを完全無料で使う
n8nはAIワークフローを直感的に構築できるサービスです。類似したツールだと Dify があります。Difyとの主な違いは、n8nはより自動化に特化していて、Difyは対話型(ChatBotなど)が中心である点かと思います。
n8nを使う方法は大きく3パターンあるので下記にその種類と簡単な特徴を紹介します:
-
npm 方式
-
npx n8n
ですぐに実行できる - Node.js 20.19〜24.x が必要(2025年8月時点)
- ローカルに入っている
ffmpeg
などのコマンドをそのまま呼べます
-
-
Docker 方式
- 依存関係を隔離でき再現性が高い
-
公式イメージを拡張する Dockerfile に
ffmpeg
やフォントを入れておけば、Execute Command ノードから実行可能
-
Cloud 方式
- Execute Command と Read/Write Files from Disk はn8n Cloud では提供されません
- ffmpegなどを使用したい場合はローカル版をお勧めします
- 利用に月額4,000円ほど費用がかかる
今回は、ローカルでセットアップして無料でn8nを使えるnpm方式とDocker方式について具体的に解説します。npm版とDocker版それぞれ解説しているので、興味のある方や使いたい方のみ読んでいただいても動作可能です。
2|npm を使いたい人向けセットアップ
2.1 必要要件の確認
nodeのセットアップとn8nの動作確認を行いましょう。
- 実行にはNode.js 20.19〜24.x が必要です。
node -v
npm -v
2.2 インストール不要で実行する方法
n8nを直接インストールせずとも、 npx を使って起動することも可能です。ただし、毎回利用するならグローバルでインストールしておくのが良いと思います。
npx n8n
ブラウザで http://localhost:5678
を開くと n8n が表示されると成功です。
最初は登録画面が表示されるので、登録の上ログインすると完了です。
▼ 補足:
- 初回起動した時には登録画面でメールとパスワードを設定する必要があります
2.3 n8nをグローバルに導入
n8nをローカルにインストールすることで毎回 npx コマンドを実行しなくても起動できるようになります。
npm install -g n8n
n8n # または n8n start
http://localhost:5678
を開くと同様に画面が表示されると思います。
更新する時は npm update -g n8n
を実行してください。
2.4 npm 版で ffmpeg を使う
今回のハンズオンではffmpegを使って動画を作成するのですが、そのための事前準備として、PC環境にffmpegをインストールしておく必要があります。もしインストールしていない場合は、公式の手順に従ってインストールをしてください。
-
まずホスト OS に ffmpeg を導入・確認
- インストール元の案内(公式):
-
インストールが完了したら、下記コマンドをターミナルで実行して動作確認をしてください:
ffmpeg -version
2.5 実際にn8n上でワークフローを実行してみる
ここまで来たら実際にn8nを起動してワークフローの実行確認をするだけです。
まず、新規プロジェクトを開いて下記のようなワークフローが何も表示されていない画面を準備してください。
次にインポート → JSONファイルからインポート を選択して、下記のワークフローJSONファイルをインポートしてください。
この記事からファイルをコピペ → そのファイルをインポートでOKです。
こちらをコピペ:
{
"name": "【mac】n8nセットアップチュートリアル",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "6dac773c-c31d-43cf-8eb5-dcb1fa656c0c",
"name": "実行開始"
},
{
"parameters": {
"command": "mkdir -p \"$HOME/n8n-work\" && ffmpeg -y -f lavfi -i \"color=c=#0044aa:s=1280x720:d=5\" -vf \"drawtext=text='n8n + ffmpeg (macOS)':fontsize=64:fontcolor=white:x=(w-text_w)/2:y=(h/2)-70,drawtext=text='ローカル実行OK':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=(h/2)+10\" -pix_fmt yuv420p -movflags +faststart \"$HOME/n8n-work/output.mp4\"\n"
},
"type": "n8n-nodes-base.executeCommand",
"typeVersion": 1,
"position": [
208,
0
],
"id": "a32ecbd0-2bf4-49db-812b-84c286fcc4ab",
"name": "動画レンダリングコマンド"
},
{
"parameters": {
"fileSelector": "={{ $env.HOME }}/n8n-work/output.mp4",
"options": {}
},
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
416,
0
],
"id": "33a1c531-aff5-44fe-bd34-8c784fd5dbca",
"name": "動画ファイル確認"
}
],
"pinData": {},
"connections": {
"実行開始": {
"main": [
[
{
"node": "動画レンダリングコマンド",
"type": "main",
"index": 0
}
]
]
},
"動画レンダリングコマンド": {
"main": [
[
{
"node": "動画ファイル確認",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "efdb46cb-6db1-4227-a0b2-02a73fdb5c56",
"meta": {
"instanceId": "a69be3ce253ea13b7eda85dc3f6912cfd85043fac5ed34f7b32921ae50f0bb7a"
},
"id": "zKM59yuqoR0Mgzk5",
"tags": []
}
添付のJSONファイルをインポートしてもらうと、下図のようなワークフローが表示されると思います。
実行ボタンを押すと、5秒の動画が生成されるというシンプルなワークフローになっています。
初めてn8nを触る方のために登場している各種ノードの解説をします。慣れている方は読み飛ばしていただいても大丈夫です!
- Manual Trigger:実行開始ボタンです
- Setノード:実行環境を指定するなど、初期設定をします。動画をレンダリングするときのアウトプット場所などのディレクトリ情報を記載しています。
- Execute Command:ターミナルなどで実行できるコマンドを入力ができます。今回は動画を作成するための ffmpeg コマンドを記載しています。
▼ 実際の ffmpeg コマンド
ffmpeg -y -f lavfi -i "color=c=#0044aa:s=1280x720:d=5" \
-vf "drawtext=text='n8n + ffmpeg (npm)':fontsize=64:fontcolor=white:x=(w-text_w)/2:y=(h/2)-70,\
drawtext=text='ローカル実行・動作確認OK':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=(h/2)+10"
-pix_fmt yuv420p "C:/n8n-work/output.mp4"
実行時の注意点:
-
Windows 例では
C:\\n8n-work
を事前に作成しておきます -
macOS/Linux なら
~/n8n-work/output_npm.mp4
などに置き換え - 補足:
-
drawtext
のフォント解決は環境により異なるため、うまく出ない場合はフォントファイルを明示(例:WindowsC:\\Windows\\Fonts\\arial.ttf
、Linux/usr/share/fonts/...
)
-
▼ 動作確認:
- Execute を押して実行 → 指定パスに5秒の動画が出力されれば成功です!
ここまでで、npmを使ったn8nのセットアップと動作確認は完了です。オリジナルのワークフローの構築を進めていけます。
次に、Dockerを使ったローカル構築方法について解説します。
3|Docker を使うパターン
ちなみに公式でもこちらの方法が推奨されているようです。
Dockerfileを作成し、Docker Composeで永続化する設計です。
今回の解説記事では動画のレンダリングを行うワークフローを例に扱うので、Execute Command で利用する ffmpeg やフォントを、公式イメージを拡張した Dockerfileで予め入れておく必要があります。
その方法も含めて解説します。
3.1 事前準備
-
Docker Desktop(Win/Mac/Linux)または Linux に Docker Engine + Docker Compose を導入します
- まだDockerを入れていない方は公式サイトからダウンロードするか、素早く確認したい場合はnpmを使う方法もご検討ください
ご自身の好きなディレクトリ配下に2つのディレクトリを作成します。私はDesktop配下に作成しました。
n8n-dataの方に、n8n本体の内部データを保存します。
n8n-workの方に、実際のワークフローで扱うファイルなどを保存します。今回のハンズオンだと作成した動画ファイルなどが格納される想定です。
mkdir -p "$HOME/Desktop/n8n-data" "$HOME/Desktop/n8n-work"
次にDockerを起動します。これによってデスクトップフォルダをマウントします。
docker run -d --name n8n -p 5678:5678 -v "$HOME/Desktop/n8n-data:/home/node/.n8n" -v "$HOME/Desktop/n8n-work:/files" docker.n8n.io/n8nio/n8n
実際に動作確認してみましょう。成功すると、ブラウザ上で会員登録するための画面が表示されると思います。
open http://localhost:5678
docker ps
docker logs -f n8n
基本の動作確認ができたら、下記コマンドで一旦終了して大丈夫です
docker stop n8n
docker start n8n
docker rm -f n8n
次に、実際にffmpegなどをn8nで実行できるようにDockerでセットアップを完了させます。
先ほどとは別のディレクトリを用意します。下記のように実行するとDesktop配下にディレクトリが作成されます
mkdir -p "$HOME/Desktop/n8n-docker-ffmpeg/n8n-data" "$HOME/Desktop/n8n-docker-ffmpeg/work"
cd "$HOME/Desktop/n8n-docker-ffmpeg"
次に、Dockerfileを準備します。今回はAlpineのパッケージとして ffmpeg、fontconfig、DejaVu、Noto CJK を入れます。
Dockerfileを準備し、下記のコードを記載してください。
FROM docker.n8n.io/n8nio/n8n:latest
USER root
RUN apk add --no-cache \
ffmpeg \
fontconfig \
ttf-dejavu \
font-noto-cjk \
&& fc-cache -f
USER node
さらに、 compose.yamlも作成してください。
services:
n8n:
build: .
image: n8n-ffmpeg:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Tokyo
- TZ=Asia/Tokyo
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
volumes:
- ./n8n-data:/home/node/.n8n
- ./work:/files
最終的に下記のようなディレクトリ構造になっているとOKです。
n8n-docker-ffmpeg/
├── Dockerfile
├── compose.yaml
├── n8n-data/
│ └── .keep
└── .keep
work/
└── .keep
このディレクトリで下記コマンドを実行するとビルド・起動が完了します。
※ 基本的に compose.yamlがある階層で実行します。
cd "$HOME/Desktop/n8n-docker-ffmpeg"
docker compose build
docker compose up -d
しばらく実行時間が経った後に完了になったら実際に画面を開いて確認をします。
open http://localhost:5678
正しく開けたら、npmの時と同様にワークフローJSONをインポートして実行確認を進めます。
3.5 Dockerでn8nを起動・実行
npmで実行した時とほぼ同様に、Dockerを使って実際にn8nを起動してローカルで実行が完了させてみます。
ffmpegのコマンドが npm のバージョンと若干異なるので注意してください。(npmのjsonファイルでも実行できますが、フォントの関係で一部文字化けします)
Docker版のワークフローファイルを下記に添付するので、ファイルコピペした上でn8nプロジェクトにインポートしてください。
こちらからコピペしてください:
{
"name": "My workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "94724da7-806c-4f7a-ab36-db28e78775bf",
"name": "実行開始"
},
{
"parameters": {
"command": "ffmpeg -y -f lavfi -i \"color=c=#0044aa:s=1280x720:d=5\" -vf \"drawtext=fontfile=/usr/share/fonts/noto/NotoSansCJK-Regular.ttc:text='n8n + ffmpeg (Docker)':fontsize=64:fontcolor=white:x=(w-text_w)/2:y=(h/2)-70,drawtext=fontfile=/usr/share/fonts/noto/NotoSansCJK-Regular.ttc:text='日本語OK':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=(h/2)+10\" -pix_fmt yuv420p -movflags +faststart /home/node/n8n-work/output.mp4\n"
},
"type": "n8n-nodes-base.executeCommand",
"typeVersion": 1,
"position": [
208,
0
],
"id": "03fb0858-d7b6-4125-99f0-a746140b2bad",
"name": "動画レンダリングコマンド"
},
{
"parameters": {
"fileSelector": "={{ $env.HOME }}/n8n-work/output.mp4",
"options": {}
},
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
416,
0
],
"id": "351682b0-c568-46f3-8be9-55f6c236db2b",
"name": "動画ファイル確認"
}
],
"pinData": {},
"connections": {
"実行開始": {
"main": [
[
{
"node": "動画レンダリングコマンド",
"type": "main",
"index": 0
}
]
]
},
"動画レンダリングコマンド": {
"main": [
[
{
"node": "動画ファイル確認",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "e778eff3-0e77-454b-9802-0f2260802851",
"meta": {
"instanceId": "c6c268789dd010b78843bfd8a3915fffc599acaaf824787b108bf057a2117b27"
},
"id": "GwQJb3wYuXy5mCqs",
"tags": []
}
下記のようなワークフローが表示されれば成功です。
実行ボタンを押して動画が作成されると完成です。
もしうまくいかない場合は、テロップのフォントや ffmpeg が正しく設定されているかをチェックしてください。再ビルドするとうまくいくケースがあります。
-
drawtext
が無いというエラーが出る:ffmpeg -filters | grep drawtext
をコンテナで実行して有無を確認しましょう。Dockerfile のapk add ffmpeg
が入っているか、再ビルド(docker compose build --no-cache
)を実行してみてください - 文字化け:別フォント(Noto)を
apk add
で追加しfontfile
を差し替えるとうまくいきます -
/files
が見つからない:Compose のボリューム設定と実フォルダ./work
の権限を確認してみてください
まとめ
本記事ではn8nを無料で使うための方法についてローカルセットアップの手順を解説しました。
npmを使う方式とDockerを使う方式があり、どちらを選択しても問題ないです。個人的にはnpmを使っています。
今回は ffmpeg を使って動画をローカルでレンダリングする方法を題材にセットアップを解説しました。クラウド版では使えないノードがあるなど制約の違いも含めて整理しておくと良いと思います。
参考になった方はnoteやXアカウントのフォローしてください!
これからの活動の励みになります。
Xではこのような動画とAIに関する情報を日々発信しているのでぜひフォローやいいねで応援いただけると励みになります。
動画AIやn8nを使った全自動の動画編集などの情報を発信しているので、フォローすると活用方法やエッジの事例をキャッチアップできます