n8nで自動化ワークフローを組んでいて、「動画を圧縮したい」「音声を変換したい」と思った瞬間に、ffmpegが使えなくて手が止まっていませんか?
特にDocker環境でn8nを動かしている方は、コンテナの中にffmpegを入れる方法が分からず詰まりがちですよね。
この記事では、n8nのDockerコンテナにffmpegを追加する3つの方法と、本番運用で使えるdocker-compose.ymlのテンプレートまで解説します。結論、カスタムDockerfileを作る方法が一番安定します。
初めての方は【基本編】で原因を押さえ、すでに運用している方は【解決編】から読み進めてください。コマンドをコピペすれば、そのまま動作確認できる内容にしています。
n8nでffmpegが使えない?Docker環境の落とし穴
まずは、なぜこの問題が起きるのかを整理します。
n8nは公式のDockerイメージ「n8nio/n8n」をベースに動作しますが、このイメージはAlpine Linuxで作られており、最小構成のため動画処理ツールは含まれていません。
つまり、n8nのワークフローから「Execute Commandノード」でffmpegを呼んでも、「ffmpeg: not found」で止まってしまうわけです。
ちなみに「ffmpeg」は動画や音声を変換・圧縮できるコマンドラインツールで、YouTube自動投稿や音声ファイル処理、動画のサムネイル生成などに広く使われています。n8nで動画系の自動化を組むなら避けて通れない存在です。
【基本編】n8n × ffmpegが動かない3つの原因
原因1:公式Dockerイメージにffmpegが含まれていない
これが最大の原因です。n8nio/n8nは軽量化のためにAlpineベースで作られており、ffmpegなどの追加ツールは入っていません。イメージサイズを小さく保つための意図的な設計です。
原因2:コンテナ内で直接インストールしても消える
「とりあえずdocker execで入ってapk add ffmpegすれば動く」と思いがちですが、コンテナを再起動した瞬間に全部消えます。Dockerは「コンテナは使い捨て」が前提の設計だからです。
原因3:ホストOSにffmpegを入れても意味がない
VPSのホストOS側にffmpegを入れても、コンテナの中からは見えません。Dockerのファイルシステムは隔離されているので、コンテナの中で使いたいツールはコンテナの中に入れる必要があります。
【解決編】n8n Dockerにffmpegを入れる3つの方法
方法1:カスタムDockerfileを作る(本番運用ならこれ一択)
一番安定して、再起動しても消えない方法です。手順は3ステップ。
ステップ1:Dockerfileを作成
FROM n8nio/n8n:latest
USER root
RUN apk add --no-cache ffmpeg
USER node
USER rootに切り替えてからapk addし、最後にnodeユーザーに戻すのがポイント。セキュリティ的にもnode権限で実行したほうが安全です。
ステップ2:イメージをビルド
docker build -t my-n8n:ffmpeg .
ステップ3:docker-compose.ymlのimageを差し替え
services:
n8n:
image: my-n8n:ffmpeg
# (以下は元のまま)
これでコンテナを再起動してもffmpegは残ります。バージョン管理もイメージタグで完結するので、運用がシンプルになります。
方法2:コンテナに直接インストール(検証用なら可)
「とりあえず今すぐ試したい」というときはこれ。
docker exec -u root -it n8n apk add --no-cache ffmpeg
ただし、コンテナを再作成(docker-compose down && up)したら消えます。検証用と割り切って使ってください。本番で使うと、サーバー再起動のたびに自動化が止まる事故につながります。
方法3:ffmpeg入りの既成イメージを使う
GitHub上にffmpegを含んだn8nイメージを公開しているリポジトリがあります。例えば「conor-is-my-name/n8n-autoscaling」には、ffmpegが最初から組み込まれています。
ただし、第三者製なのでアップデート頻度や中身の確認は自分で行う必要があります。長期運用を考えると、公式イメージに自分でffmpegを足す方法1のほうが結局は安全です。
💡 コミュニティで多かった声
Reddit r/n8nの「Installing ffmpeg inside n8n」というスレッドで、「HostingerのVPSにDockerでn8nを入れたけど、ffmpegの追加方法が分からない」という投稿がありました。付いたコメント3件のうち2件は「カスタムDockerイメージを作るか、execで手動インストールするしかない」という内容で、残り1件は既成のautoscalingイメージの紹介でした。
実際に検証したところ、
docker execでのインストールはコンテナ再作成で消える仕様のため、本番運用には不向きでした。解決策:公式のn8nio/n8nをベースにDockerfileでapk add ffmpegする方法が、再起動後も残り、かつ公式イメージのアップデートにも追随しやすく最も安定します。
参考スレッド:Reddit r/n8n(Installing ffmpeg inside n8n)
【応用編】docker-compose.ymlの本番運用テンプレート
中級者向けに、本番で使えるdocker-compose.ymlの雛形を置いておきます。
version: '3.8'
services:
n8n:
build:
context: .
dockerfile: Dockerfile
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=your-domain.com
- WEBHOOK_URL=https://your-domain.com/
- GENERIC_TIMEZONE=Asia/Tokyo
volumes:
- n8n_data:/home/node/.n8n
- /tmp/n8n-files:/files
volumes:
n8n_data:
ポイントは4つです。
buildで自作Dockerfileを指定する(imageではなくbuildを使う)volumesでワークフローや一時ファイルを永続化するrestart: alwaysでサーバー再起動時も自動復帰するGENERIC_TIMEZONEでJSTを指定し、ログと実行時刻を日本時間に揃える
ffmpegで動画を処理する場合、/tmp/n8n-filesのようなボリュームを共有ディレクトリにすると、S3アップロードなど他のノードとのデータ受け渡しが楽になります。
実行コマンドの書き方(n8n側)
n8nのExecute Commandノードには、以下のように書けばffmpegが動きます。
ffmpeg -i /files/input.mp4 -vf scale=1280:720 /files/output.mp4
入出力はdocker-compose.ymlで指定した共有ボリューム配下に置くのがコツです。
VPS選びで失敗しないためのポイント
ここまで読んで「そもそもn8nを動かすVPSの選び方が分からない」という方向けに、n8n × ffmpeg運用に向いているVPSの条件を3つ挙げます。
- メモリは最低2GB、動画処理なら4GB推奨:ffmpegはメモリを食うので、1GBだと処理中に落ちることがあります
- Docker標準対応:初期セットアップテンプレートにDockerがあるプランだと楽
- 日本リージョンがある:遅延と日本語サポートの両面で有利
この条件をクリアする国産VPSとしては、ConoHa VPS(月額1,000円〜、1時間単位の従量課金あり)とXServer VPS(月額1,569円〜、高速SSD標準)が定番です。
ConoHa VPSは時間課金があるので「まず動くか検証したい」方向け。数百円で試して、問題なければ月額プランに切り替えられます。XServer VPSは固定月額でスペックが高めなので、本番運用に乗せる段階で選ぶとコストパフォーマンスが良くなります。
よくあるトラブルと対処法
Q1. apk add ffmpegでエラーが出る
USER rootを入れ忘れていないか確認してください。n8nの公式イメージはnodeユーザーで動作しているため、パッケージインストールにはroot権限が必要です。apk addの前にUSER root、後にUSER nodeを入れましょう。
Q2. ビルドは通るのにワークフローでffmpegが見つからない
docker-composeのimage指定が古いままになっていませんか?ビルドしたイメージ名(例:my-n8n:ffmpeg)に差し替えて、docker-compose up -d --force-recreateで再起動してください。
Q3. 動画処理が途中で止まる
メモリ不足が疑われます。docker statsでメモリ使用量を確認し、2GB以上を常時使うようなら上位プランへの変更を検討してください。特に4K動画の変換は4GB以上が安心です。
Q4. Windowsローカルで試したい
Docker Desktop for Windowsでも同じDockerfileで動きます。開発環境はローカル、本番はLinuxのVPS上、という使い分けが現実的です。
Q5. ffprobeなど関連ツールも使いたい
Alpineのffmpegパッケージにはffprobeも同梱されています。追加インストールは不要です。もしffmpeg以外のツールも入れたい場合は、apk addの行に並べて書けます(例:apk add --no-cache ffmpeg imagemagick)。
まとめ:n8nでffmpegを使う最短ルート
- 公式n8nイメージにはffmpegが含まれていない
- カスタムDockerfileでapk add ffmpegするのが最も安定
- docker execでの手動インストールは再起動で消えるので検証用のみ
- 本番運用はVPS上でdocker-compose管理がおすすめ
- 動画処理を考えるならメモリ4GB以上のVPSを選ぶ
n8nの自動化を本気で始める方は、まずVPS環境の選定から。ConoHa VPSの1時間課金でffmpeg込みのDockerfileを試してみて、動作確認できたら月額プランに上げる流れがスムーズです。
関連記事:AI自動化カテゴリーでn8nのワークフロー活用術をまとめています。
0人が役に立ったと評価


コメント