SynologyのDockerにn8nを入れたら権限エラーで詰まりまくった話【PART1:起動まで】

「Synologyを持っているなら、n8nをDockerで動かせばいろいろなノードを組み合わせて自動化が月0円でできる!」

そう知ってやってみたら、思った以上につまりポイントが多かったです。そんな私のn8n導入の権限エラーとの戦いの記録です。全部で7つの詰まりポイントがありました。

この記事でわかること:SynologyのDockerにn8nをインストールして起動するまでに詰まった7つのポイントを実体験ベースで解説します。Volume Settings・Permission denied・N8N_SECURE_COOKIEなど、公式ドキュメントに書いていない罠だらけでした。

スポンサーリンク

目次

なぜSynologyでn8nを動かすのか

n8nはZapierやMakeと同じようなワークフロー自動化ツールです。「WordPressで記事を公開したらXに自動投稿する(Xの自動投稿は有料APIを使う必要がありました、まだ実現になってません)」「RSSを監視して新着記事を他アプリ(GmailやSlackなど)に通知する」といったフローをGUIで組み立てられます。

クラウド版(n8n.cloud)だと通常月20ユーロ〜かかりますが、Synology DS220+のようなNASがあれば、Dockerで自分のサーバーに立てることができます。そうすれば完全無料です。

  • 完全無料(電気代のみ)
  • 24時間稼働(NASは常時起動しているので)
  • データは全部手元に残る
  • ワークフローの数・実行回数に制限なし

n8nが導入できればいろいろ自動化ができるとネットでみたので、目標はWordPressの記事公開と同時にX(Twitter)に自動投稿すること。ただ有料APIが必要だったみたいなのであきらめましたが、アイキャッチを自動でもってきたり、H2の下に画像配置させたり、Gmailやその他多彩なアプリなどと組み合わせられるのでほんとアイデア勝負。設定さえ乗り越えれば、あとは全自動になります。「設定さえ乗り越えれば・・・・」というのが今回の記事のテーマで、これが想定以上に大変でした。

n8nのインストール自体はDockerイメージを引っ張ってくるだけなので簡単です。問題はSynologyのDocker(Container Manager)特有の設定の癖と、権限まわりの落とし穴が連続して出てくることでした。

詰まり①:Volume Settingsがエラーになって進めない

Container ManagerでDockerイメージ(n8nio/n8n)を起動しようとしました。Volume Settingsの画面でフォルダを選択したのに、画面にエラー表示がり、先へ進めない事態に。

「なんで赤くなるんだ?フォルダは選んでいるのに。」としばらく悩みました。よく見たら、右側に「コンテナパス」を入力する空欄がありました。ここを空白のままにしていたのが原因でした。

設定項目入力する値
ホストパス(左側)Synologyのフォルダを選択(例:docker/n8n)
コンテナパス(右側)/home/node/.n8n(手入力が必要)

コンテナパスの入力欄は画面上にラベルがなく、空欄のまま気づきにくい設計になっています。フォルダを選択するだけで完了だと思っていたのが罠でした。/home/node/.n8n を右側に入力したらエラーが消えます。

詰まり②:N8N_HOSTにIPを入れたら繋がらない

環境変数の設定画面で、「N8N_HOSTにはSynologyのIPアドレスを入れるべきだろう」と思って設定しました。ブラウザでアクセスしてみたら「This site can’t be reached」と表示されて繋がりません。

N8N_HOSTの正解は 0.0.0.0 です。これは「すべてのネットワークインターフェースで受け付ける」という意味で、特定のIPを指定すると逆にそのIP以外からのアクセスが通らなくなります。直感と逆で混乱しました。

合わせて設定する環境変数はこちらです。

環境変数意味
N8N_HOST0.0.0.0全インターフェースで受け付ける
N8N_PORT5678ポート番号(デフォルト)
N8N_PROTOCOLhttpHTTPでアクセスする場合

詰まり③:環境変数をSettingsから変更できない

起動後に環境変数を変更しようとして、コンテナの「Settings」画面を開きました。でも編集しようとするとこんな案内が出ます。

「Duplicate functionを使ってください」
Container Managerでは、起動済みコンテナのSettingsから環境変数を直接変更できません。一度Duplicateして新しいコンテナとして作り直す必要があります。

  1. コンテナを停止する
  2. コンテナを右クリックして「Duplicate」を選択
  3. 新しいコンテナとして設定を変更して起動する
  4. 古いコンテナを削除する

Dockerに慣れている人は docker-compose.yml を使う方が設定変更が楽です。Container Managerで操作する場合はこのDuplicate方式が唯一の方法でした。設定をちょっと変えるたびに「停止→複製→削除」の手順を踏む必要があるので、最初から正しく設定できるよう確認してから起動する方が効率的です。

詰まり④⑤:Permission deniedエラーが2段階で来た

起動したらログにこれが出ました。

Error: EACCES: permission denied, open '/home/node/.n8n/config'

Synologyのファイルパーミッションの問題です。FileStationで docker/n8n フォルダを右クリック → プロパティ → 権限タブ → Everyoneに「Read & Write」を付与しました。

でも再起動してもまだ同じエラーが出ます。

「Apply to」の設定が原因でした。デフォルトの「Child folders, Child files」では、フォルダ自体への権限が含まれていません。「This folder, Child folders, Child files」に変更して再設定したら解決しました。「子要素だけに適用」ではなく「このフォルダ含めて全部に適用」が必要です。

権限設定の手順をまとめるとこうです。

  1. FileStationで docker/n8n フォルダを右クリック → プロパティ
  2. 「権限」タブを開く
  3. 「作成」ボタンで「Everyone」を追加
  4. 権限を「Read & Write」に設定
  5. 「適用先」を「このフォルダ、サブフォルダ、ファイル」に変更
  6. OKで保存してコンテナを再起動

詰まり⑥:N8N_SECURE_COOKIEエラー

権限エラーをようやく乗り越えて、ブラウザでn8nにアクセスしたら今度はこんなエラーが出ました。

Secure cookie is set but the application is not running over HTTPS

「secure cookieが設定されているのにHTTPSで動いていない」というエラーです。n8nはデフォルトでセキュアなCookieを使おうとしますが、HTTPで動かしている場合は設定を変更する必要があります。

環境変数に N8N_SECURE_COOKIE=false を追加するだけで解決します。自宅のSynologyにHTTP接続する場合は必須の設定です。外部公開する場合はHTTPS化も検討してください。

詰まり⑦:アクセスURLはTailscaleのIPが正解だった

ここまで乗り越えてn8nが起動したのですが、ローカルIP(192.168.x.x)でアクセスしようとしていたら繋がりませんでした。TailscaleのIPで試したら一発で繋がりました。

しかもTailscaleのIPの方が圧倒的に便利でした。自宅でも外出先でも同じIPでアクセスできます。さらに次の記事で出てきますが、WordPressからWebhookを受け取るときにもこのIPが重要になってきます。最初からTailscaleのIPで設定しておくことをおすすめします。

Tailscaleで構築することによって、スタバにいてもコメダにいいても自宅のSynology簡単に安全にフリーWi-Fiでも使用できて設定も簡単に変更できる・・・んぅ〜〜〜便利すぐるぅ〜〜〜〜♪( ´θ`)ノ

最終的な環境変数の設定まとめ

7つの詰まりを乗り越えて、最終的にこの環境変数でn8nが安定して動くようになりました。

環境変数設定値理由
N8N_HOST0.0.0.0全インターフェースで受け付けるため
N8N_PORT5678デフォルトポート
N8N_PROTOCOLhttpローカルHTTP接続
N8N_SECURE_COOKIEfalseHTTPで動かすため必須
GENERIC_TIMEZONEAsia/Tokyoスケジュール実行の時刻を合わせるため

まとめ:詰まりポイントを振り返る

  • Volume Settings:右側のコンテナパス入力欄(/home/node/.n8n)に気づかない
  • N8N_HOST:特定のIPではなく 0.0.0.0 が正解
  • 環境変数の変更:Settingsからは直接編集できない→Duplicateで作り直す
  • Permission denied:「Apply to」でフォルダ自体への権限も含める必要がある
  • N8N_SECURE_COOKIE:HTTPで動かすなら false を設定する
  • アクセスURL:TailscaleのIPが自宅・外出先両方で使えて便利

「Dockerで立てるだけ」と聞いていたのに、こんなに詰まるとは思っていませんでした。公式ドキュメントにほぼ書いていない落とし穴が連続します。でも一度動いてしまえば、あとは本当に楽です。同じところで詰まっている方の参考になれば。

あ、ちなみにSynologyにDockerのアプリはありません、Container Managerの中にContainerがあってそれがいわゆるDockerになります。


次回は「n8nでWordPress接続・RSS収集フローを作ったら、またDockerの権限で詰まった話【PART2】」を書きます。(4月28日公開予定)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です