【技術記事 #01】n8nをGCEにセルフホストして、無料で運用してみる
皆さん、お疲れ様です。
隣のAIくんです。
今後、日々の活動を備忘録として技術記事シリーズに投稿していきたいと思いますのでぜひフォローよろしくお願いいたします。
日々の業務で、面倒な作業に多くの時間と労力を費やされていませんか?
そんな「面倒」を解決してくれるのが、n8n(エヌエイトエヌ)です。
n8nは、様々なアプリやサービスを連携させて、日々の面倒な作業を自動化できるツールです。プログラミングの知識がなくても、マウス操作でワークフローを作ることができます。
例えば、以下のような自動化が実現できます。
特定のメールが届いたらSlackに通知する
フォームの回答をスプレッドシートに自動記録する
Twitterで特定のキーワードを含む投稿を自動チェックする
このように、あなたのアイデア次第で、あらゆる面倒な作業を自動化できる可能性を秘めています。
なぜ、セルフホスティングなのか?
n8nには、主に2つの使い方があります。
① クラウド版(有料):
n8n公式が提供するサービスです。すぐに使い始められますが、本格的に利用するには月額費用(約4,000円〜)がかかります。
②セルフホスト版(無料):
n8nはオープンソースソフトウェアであるため、プログラム自体は無料で利用できます。これが最大のメリットです。

ただし、「セルフホスト」を選ぶと、n8nを動かすためのサーバーを自分で用意する必要があります。
ローカルPCで動かすだけでは、PCを起動している間しか自動化が実行されません。かといって、一般的なVPS(レンタルサーバー)を契約すると、結局サーバー代(月額数百円〜1,000円程度)が発生してしまいます。
この記事では、Google Cloud Engine (GCE)※1 の「Always Free(永年無料枠)」という制度を利用し、無料でn8nをセルフホスティングする手順を詳しく解説していきます。
Google Cloudの基礎知識が習得できるので、下記をおすすめさせていただきます。
1. GCEインスタンスの準備
まずはn8nを動かすためのサーバー(VMインスタンス)をGCE上に作成します。ここで無料枠の条件を確実に満たすことが重要です。
VMインスタンスを作成する
Google Cloudコンソールにログインし、「Compute Engine」から「VMインスタンス」ページを開きます。
「インスタンスを作成」をクリックします。
以下の設定を厳密に行います。
リージョン: us-west1(オレゴン州)、us-central1(アイオワ州)、us-east1(サウスカロライナ州)のいずれかを選択します。
> asia-northeast1(東京)など、上記3つ以外のリージョンを選ぶと無料枠の対象外となります。マシンタイプ: e2-micro(vCPU x2(共有), 1 GB メモリ)を選択します。
ブートディスク: 「変更」をクリックし、以下を設定します。
オペレーティング システム: Ubuntu(例: Ubuntu 22.04 LTS)
ブートディスクのタイプ: 標準永続ディスク (HDD)
> 「SSD」や「バランス永続ディスク」を選ぶと無料枠の対象外となります。サイズ: 30 GB
> 30GBを超えると無料枠の対象外となります。
ファイアウォール: 「HTTP トラフィックを許可する」にチェックを入れます。
課金を防ぐための設定確認
インスタンス作成画面を下に進み、詳細設定を確認します。余計な有料オプションが有効になっていないか確認しましょう。
バックアップ: 「バックアップ プラン」や「スナップショット スケジュール」が「バックアップなし」になっていることを確認します。
ネットワーキング: 「Tier_1 ネットワーキング」などが無効(チェックが外れている)になっていることを確認します。
監視: 「Ops エージェント」は、収集するログや指標データが無料枠を超えると課金されるリスクがあるため、チェックを外しておくことを推奨します。
IPアドレス: VMが停止中に静的IPアドレスを保持すると課金対象となります。まずはデフォルトの「エフェメラル(一時)」のまま運用しましょう。
設定が完了したら「作成」ボタンをクリックします。
DockerとDocker Composeのインストール
インスタンスが作成されたら、SSHで接続します。VMインスタンス一覧の「接続」列にある「SSH」ボタンをクリックすると、ブラウザ上でターミナルが開きます。
次に、開いたターミナルで以下のコマンドを順番に実行し、DockerとDocker Composeをインストールしましょう。
# まずはパッケージリストを更新
sudo apt update
# Dockerのインストールに必要なパッケージを導入
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Dockerのリポジトリを追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再度パッケージリストを更新
sudo apt update
# Docker Engine と CLI をインストール
sudo apt install -y docker-ce docker-ce-cli containerd.io
# Docker Compose Plugin をインストール
sudo apt install -y docker-compose-pluginインストールが完了したら、docker compose versionと入力し、バージョン情報が表示されれば成功です。
最後に、sudoなしでDockerコマンドを実行できるように、現在のユーザーをdockerグループに追加します。
# ユーザーをdockerグループに追加
sudo usermod -aG docker $USER【重要】 このコマンドを実行したら、一度SSHのブラウザタブを閉じ、再度「SSH」ボタンを押して再接続してください。 再接続しないと、グループへの追加が反映されません。
2. n8nをDocker Composeで起動
サーバーの準備が整いました。いよいよn8nを起動します。
docker-compose.yml の作成
SSHターミナルで、n8n用のディレクトリを作成し、そこに移動します。
mkdir n8n_server
cd n8n_server次に、nano(テキストエディタ)を使ってdocker-compose.ymlファイルを作成します。
nano docker-compose.ymlエディタが開いたら、以下の内容をコピーして貼り付けてください。
> ```yaml
> services:
> n8n:
> image: n8nio/n8n:latest
> container_name: n8n_server
> restart: unless-stopped
> ports:
> - "5678:5678"
> environment:
> # ↓ 必ず強力なランダム文字列に変更してください!
> - N8N_ENCRYPTION_KEY=YOUR_VERY_STRONG_RANDOM_KEY
> - GENERIC_TIMEZONE=Asia/Tokyo
> # GCE(HTTP)でのアクセスエラー回避のため
> - N8N_SECURE_COOKIE=false
> volumes:
> - n8n_data:/home/node/.n8n
> ```
> volumes:
> n8n\_data:
>
> ```
> ```貼り付けたら、Ctrl + Sで保存し、Ctrl + Xでエディタを終了します。
ymlファイルのポイント解説
N8N_ENCRYPTION_KEY:
これはn8nが認証情報(APIキーなど)を暗号化するために使う非常に重要な鍵です。YOUR_VERY_STRONG_RANDOM_KEYの部分は、必ず推測不可能な文字列に変更してください。SSHターミナルで以下のコマンドを実行すると、強力なキーを生成できます。
openssl rand -base64 32生成された文字列(例: lLwggnIRdu6g...)を、ymlファイルにコピペします。
N8N_SECURE_COOKIE=false:
これは、GCEのIPアドレス(HTTP接続)で直接アクセスした際に発生する「セキュアクッキー」関連のエラーを回避するためのおまじないです。本番運用で独自ドメインとHTTPS化を行う際は、この行を削除(またはtrueに)する必要があります。
n8nコンテナの起動とアクセス
docker-compose.ymlが準備できたら、いよいよn8nコンテナを起動します。
docker compose up -d-dオプションにより、コンテナはバックグラウンドで起動します。
最後に、外部からn8nにアクセスできるよう、GCEのファイアウォールでポート5678を開放します。
Google Cloudコンソールのメニューから「VPC ネットワーク」>「ファイアウォール」に移動します。
「ファイアウォール ルールを作成」をクリックします。
以下の設定を行います。
名前: allow-n8n-5678(分かりやすい名前)
ターゲットタグ: n8n-server(後でVMインスタンスに設定するタグ)
ソース IPv4 範囲: 0.0.0.0/0(すべてのIPからのアクセスを許可)
プロトコルとポート: 「指定したプロトコルとポート」にチェックし、tcp:5678と入力します。
「作成」をクリックします。
[ここに図解を入れる:GCEファイアウォールルール作成画面のキャプチャ指示。ターゲットタグとポート設定箇所をハイライト]
ルールを作成したら、「VMインスタンス」ページに戻り、作成したインスタンスをクリックして編集画面を開きます。「ネットワーク タグ」の欄に、先ほど設定したタグ(n8n-server)を入力して保存します。
これで準備完了です!
ブラウザのアドレスバーに http://[GCEインスタンスの外部IP]:5678 と入力してください。(外部IPはVMインスタンス一覧で確認できます)
n8nの初期設定画面が表示されれば成功です!
3. 運用のためのヒント
構築して終わりではありません。セルフホスト環境を快適に使い続けるためのヒントを紹介します。
n8nのアップデート方法
セルフホスト環境では、アップデートも自分で行う必要があります。n8nは頻繁にアップデートされるため、定期的に実行しましょう。
手順は簡単です。SSHで接続し、docker-compose.ymlがあるディレクトリで以下の3つのコマンドを実行するだけです。
# 1. 最新のDockerイメージを取得
docker compose pull
# 2. 現在のコンテナを停止・削除
docker compose down
# 3. 新しいイメージでコンテナを再起動
docker compose up -dコミュニティ版(セルフホスト)の注意点
セルフホスト版は無料ですが、有料のクラウド版と全く同じ機能が使えるわけではありません。以下の点に注意してください。
ライセンス登録が必要:
セルフホスト版でも、メールアドレスを登録してライセンスキーを取得しないと、フォルダ作成やデバッグ画面の表示など、一部の機能が制限されます。外部アプリ連携(OAUTH):
Googleログインなど、クラウド版では簡単な連携も、セルフホスト版では自分でOAUTHアプリケーションを準備する必要がある場合があります。
(発展)独自ドメインとHTTPS化
今回はIPアドレスで直接アクセスしましたが、N8N_SECURE_COOKIE=falseの状態はセキュリティ上好ましくありません。
もし本格的に運用するのであれば、独自ドメインを取得し、NginxやCaddyといったリバースプロキシ※2を導入して、Let's EncryptでHTTPS化すること(SSL/TLS対応)を強く推奨します。
まとめ
GCEの「Always Free」の条件(us-west1などの特定リージョン、e2-micro、30GB HDDなど)を正しく守れば、サーバーコスト無料で常時稼働するn8n環境が手に入ります。
ローカル実行の「PCを閉じたら止まる」という面倒さから解放され、コストを気にせず自動化ライフを楽しみましょう。
ただし、VM停止時に「静的IP」を保持し続けると課金されるなど、無料枠には細かなルールがあります。運用しながらもコスト管理を意識することが、無料で使い続けるための鍵となります。
注釈
※1 : GCE (Google Cloud Engine) とは、Googleが提供するクラウドコンピューティングサービス(IaaS)の一つ。仮想マシン(VM)をオンデマンドで作成・実行できる。
※2 : リバースプロキシ とは、外部からのリクエストを受け取り、内部のサーバー(この場合はn8nコンテナ)に転送する仕組み。SSL/TLS(HTTPS化)の処理を一手に引き受けるためによく使われる。
