n8nでffmpeg自動化|Dockerで動画処理する方法

n8nでffmpeg自動化|Dockerで動画処理する方法 アイキャッチ画像 AI自動化

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つ挙げます。

  1. メモリは最低2GB、動画処理なら4GB推奨:ffmpegはメモリを食うので、1GBだと処理中に落ちることがあります
  2. Docker標準対応:初期セットアップテンプレートにDockerがあるプランだと楽
  3. 日本リージョンがある:遅延と日本語サポートの両面で有利

この条件をクリアする国産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のワークフロー活用術をまとめています。

コメント

タイトルとURLをコピーしました