【ITニュース解説】How to Install and Configure n8n on an Air-Gapped RHEL Server
2025年09月23日に「Dev.to」が公開したITニュース「How to Install and Configure n8n on an Air-Gapped RHEL Server」について初心者にもわかりやすく解説しています。
ITニュース概要
n8nは視覚的に作業を自動化するツールだ。本記事は、セキュリティのためインターネットから隔離された「エアギャップ」RHELサーバーにn8nを導入する手順を解説。ネットに繋がらない環境で、Dockerイメージの準備からn8nの起動・設定まで、安全に自動化システムを構築する方法を紹介する。
ITニュース解説
n8nは、プログラミングの専門知識がなくても、様々なシステムやサービスを連携させて作業を自動化できる「ワークフロー自動化ツール」である。直感的なビジュアルインターフェースを使うことで、複雑な自動化も簡単に構築できるため、開発者だけでなく多くのIT担当者から注目を集めている。
しかし、企業によっては、セキュリティ上の理由からインターネットから完全に隔離された「エアギャップ環境」でシステムを運用する必要がある場合がある。金融、防衛、医療、エンタープライズといった分野では、外部からのサイバー攻撃のリスクを最小限に抑えるため、このような厳重なセキュリティ対策がとられている。このエアギャップ環境では、インターネット経由でソフトウェアを直接ダウンロードしたり、依存関係を解決したりすることができないため、n8nのような便利なツールを導入する際には特別な手順が必要となる。この記事では、この特殊な環境であるRHELサーバーにn8nを安全かつ確実にインストールし、設定する具体的な方法を解説する。
この作業を進めるには、まずRHEL 8.xまたは9.xがインストールされたサーバーと、そのサーバーへのroot権限(管理者権限)が必要となる。さらに、一時的にインターネットに接続できる別のワークステーションを用意し、そこから必要なファイルやイメージをダウンロードする必要がある。ダウンロードしたファイルをエアギャップ環境に転送するためには、SCP(セキュアコピー)などのツール、あるいは物理的な記録媒体(USBメモリなど、いわゆるスニーカーネット)を用いることになる。また、RHELサーバー上には、アプリケーションを効率的に実行するためのコンテナ技術であるPodmanまたはDockerのいずれかがインストールされている必要がある。これらの準備が、エアギャップ環境で作業を進める上での第一歩となる。
エアギャップ環境では直接インターネットに接続できないため、n8nの実行に必要なDockerイメージは、インターネット接続されたマシンで事前にダウンロードする。docker pull n8nio/n8n:latestというコマンドでn8nの最新版イメージを取得し、docker save n8nio/n8n:latest -o n8n.tarというコマンドを使って、そのイメージをn8n.tarという一つのファイルにパッケージ化する。これは、コンテナイメージをオフライン環境に持ち込むための一般的な方法である。このn8n.tarファイルを、SCPやUSBメモリなどを利用して、エアギャップRHELサーバーへと転送する。これがエアギャップ環境でのソフトウェア導入の基本的なアプローチである。
RHELサーバーにn8n.tarが転送されたら、docker load -i n8n.tarコマンドを実行して、このtarファイルをDocker(またはPodman)に読み込ませる。これにより、ダウンロードしたn8nのイメージがサーバー上で利用可能になる。docker images | grep n8nコマンドで、n8nio/n8n:latestというイメージが正しくロードされていることを確認できる。
n8nは、作成されたワークフローや接続情報、実行履歴などの重要なデータを保存する必要がある。これらのデータは、コンテナが停止したり削除されたりしても失われないように、サーバーの永続的なストレージに保存する必要がある。これを「永続ボリューム」と呼ぶ。そのため、/opt/n8n/.n8nというディレクトリを作成し、chown -R 1000:1000 /opt/n8n/.n8nコマンドで、n8nコンテナがこのディレクトリに書き込めるように適切なアクセス権限を設定する。1000:1000は、通常Dockerコンテナ内部でn8nが動作するユーザーとグループのIDであり、これによりデータの永続性とアクセス許可が確保される。
永続ボリュームが準備できたら、docker runコマンドを使ってn8nコンテナを起動する。-dオプションはコンテナをバックグラウンドで実行し、-p 5678:5678はサーバーのポート5678番をコンテナのポート5678番にマッピングする。これにより、外部からサーバーの5678番ポート経由でn8nにアクセスできるようになる。-v /opt/n8n/.n8n:/home/node/.n8nオプションは、先ほど作成したサーバー側の永続ボリュームをコンテナ内部のデータ保存領域にマウントし、データの永続性を保証する。さらに、-eオプションを使って、N8N_HOST、N8N_PORT、N8N_PROTOCOL、GENERIC_TIMEZONEなどの「環境変数」を設定し、n8nの動作をカスタマイズする。例えば、N8N_HOSTでn8nが動作するサーバーのホスト名を設定し、GENERIC_TIMEZONEでタイムゾーンを指定するなど、用途に応じた詳細な設定が可能である。
本番環境では、セキュリティ強化やアクセス管理のために、NginxやApacheといった「リバースプロキシサーバー」をn8nの前に配置することが推奨される。リバースプロキシは、外部からのアクセスを受け取り、それを内部のn8nコンテナに転送する役割を果たす。これにより、SSL/TLSによる暗号化通信の実現や、複数のアプリケーションを一つのドメインで管理するといったことが容易になる。提供されたNginxの設定例では、n8n.example.comというドメインへのアクセスを、ローカルホストの5678番ポートで動作しているn8nに転送するように設定されている。proxy_set_headerは、元のリクエストヘッダ情報をNginxからn8nに正しく渡すための設定である。設定変更後はsystemctl reload nginxコマンドでNginxを再起動し、新しい設定を適用する。
n8nはデフォルトではログイン認証が有効になっていないため、セキュリティ確保のためには認証機能を設定することが不可欠である。docker runコマンドの際に、-e N8N_BASIC_AUTH_ACTIVE=trueと設定することで基本認証を有効にし、-e N8N_BASIC_AUTH_USER=adminと-e N8N_BASIC_AUTH_PASSWORD=StrongPassword123でユーザー名とパスワードを設定する。これにより、n8nのWebインターフェースにアクセスする際に、設定したユーザー名とパスワードの入力が求められるようになり、不正なアクセスからn8nを保護できる。
n8nを手動で起動・停止するのは手間がかかり、サーバー再起動時に自動で起動しないなどの問題がある。そこで、Linuxのシステムサービス管理ツールであるSystemdを利用して、n8nをサービスとして登録することが推奨される。/etc/systemd/system/n8n.serviceというファイルを作成し、n8nコンテナの起動・停止に関する設定を記述する。Descriptionでサービスの説明を、After=docker.serviceとRequires=docker.serviceでDockerサービスが起動した後にn8nサービスが起動するように依存関係を指定する。ExecStartにはn8nコンテナを起動するコマンド、ExecStopには停止するコマンドを指定する。このサービスを有効化(systemctl enable n8n)し、起動(systemctl start n8n)することで、サーバー起動時にn8nが自動的に立ち上がり、安定した運用が可能となる。
すべての設定が完了したら、http://<yourserver>:5678にWebブラウザでアクセスし、n8nのワークフローエディタが表示されることを確認する。これにより、エアギャップ環境でn8nが正常に稼働していることが確認できる。
この記事で解説した基本的なインストールと設定は、セキュリティが厳重なエアギャップ環境でn8nを稼働させるための出発点である。さらなる拡張として、本番環境ではSQLiteではなく外部のPostgreSQLデータベースの利用、Certbotなどを用いたTLS/SSL暗号化通信の導入、複数のn8nインスタンスによる高可用性(HA)構成、PrometheusとGrafanaによる監視システムの構築などが考えられる。
近年では、n8nと大規模言語モデル(LLM)を組み合わせることで、さらに高度な自動化ワークフローを構築することが可能である。n8nの豊富な連携機能を利用して、メール、API、データベースなどからデータを取得し、それをAIに渡して要約、翻訳、感情分析、コンテンツ生成といった処理を行わせ、その結果をSlack、Jira、Google Sheetsなどの別のアプリケーションに連携させるといったAI駆動型のワークフローを、プログラミングなしで簡単に実現できる。これにより、AIチャットボット、自動レポート生成、インテリジェントなデータパイプラインなど、業務の可能性を大きく広げることが可能となる。
エアギャップ環境でのn8nのインストールと設定には、通常の環境よりも多くの準備と手作業が必要となるが、一度この手順を踏めば、非常にセキュアな環境下でも強力な自動化ワークフローを構築し、運用することができる。