日々の業務で「この作業、毎回同じことをしていて面倒だな」と感じることはありませんか?
そんなあなたにぴったりのツールが n8n(エヌエイトエヌ) です。n8nは、ノーコードまたはローコードでワークフローを自動化できる強力なオープンソースツールです。たとえば、次のようなことが簡単にできます。
- 毎朝特定の時間にGoogleスプレッドシートの内容をSlackに通知
- フォームの入力内容を受け取って、自動でメール返信
- 新しいファイルがDropboxにアップロードされたら、別のフォルダにコピーして通知
このようにたくさんのアプリを簡単に紐付け、自分が望むことを自動化させることができます。
この記事ではn8nのセルフホスティングするまでの流れを詳しく解説していきます。
n8nの使い方
n8nには以下の2つの使い方があります。
| 方法 | 説明 |
|---|---|
| クラウド版(有料) | n8n公式が提供するホスティングサービス。すぐに使えるが月額費用がかかる。 |
| セルフホスティング | 自分でサーバーを用意してn8nを動かす方法。無料で自由度が高い。 |
クラウド版の場合は、難しい設定不要ですぐに使うことができますが、月に約4000円ほどかかります。

それに対して、自分でサーバーを用意して使うセルフホスティングの場合はサーバー代だけで使うことが可能です。
しかし、サーバー内にn8nを自分でインストールしたりなど、一部専門的な知識が必要になるため、挫折してしまう人もいるかもしれません。
そこで本記事ではn8nのセルフホスティングのやり方を詳しく解説していきます。
必要なものを用意しよう
まずはセルフホスティングに必要なものを用意しましょう。
セルフホスティングとはインターネット上に自分のn8nを公開するということです。そのため、VPSサーバーを用意する必要があります。一番手軽なのが、レンタルサーバーを使うことです。
おすすめVPSは以下の通りです。
| サービス名 | 月額料金(目安) | 特徴 |
|---|---|---|
| XServer VPS | 2GBプラン(約1,000円〜) | 処理性能能力が高い。 |
| さくらのVPS | 1GBプラン(約800円〜) | 地域が選べる(東京・大阪など) |
| ConoHa VPS | 1GBプラン(約700円〜) | 直感的で使いやすい |
| シンVPS | 1GBプラン(325円) | 価格がリーズナブル |
サーバーにインストールするOSはUbuntuが良いでしょう。
次にssh接続をするための設定をおこないましょう。
ターミナルからVPSサーバーにssh接続ができれば準備OKです。
今回の推奨構成
今回は以下のように初心者でも構成しやしく、メンテナンスも楽な構成にしています。
- OS:Ubuntu
- Docker + Docker Compose
- n8n本体(Dockerコンテナで動かす)
- (任意)Nginx(独自ドメインやHTTPS対応する人は必要)
図で表すと以下のような感じです。
[あなたのPC]
↓ SSHで接続
[VPSサーバー(Ubuntu)]
├─ Docker
│ └─ n8n(ポート5678)
└─ Nginx(https://~)※任意
サーバーにn8nをインストールしよう
それではサーバーにn8nをインストールしていきます。
ssh接続をしてVPSサーバーに入ります。
パッケージの更新
まずは以下のコマンドでシステムを最新の状態に更新します。
sudo apt update && sudo apt upgrade -y
途中で「Y/N」と聞かれたら、Y を入力して進みます。
DockerとDocker Composeのインストール
次に以下のコマンドでdockerをインストールする準備をします。
curl -fsSL https://get.docker.com -o get-docker.sh
以下のコマンドでDockerをインストールします。
sudo sh get-docker.sh
次にDocker Composeをインストールします。
sudo apt install docker-compose -y
n8n用の作業ディレクトリを作成
次にn8nをインストールするディレクトリを作成します。
今回は「n8n-docker」という名前で作成しますが、名前は自由につけていただいて問題ありません。
mkdir ~/n8n-docker
作成したディレクトリに移動します。
cd ~/n8n-docker
必要なファイルの作成
ここからは、docker-compose.yml という設定ファイルを作成し、n8nを実際にサーバー上で起動させていきます。
以下のコマンドでファイルを作成し、編集します。
nano docker-compose.yml
するとファイルの編集画面が表示されるので、以下の内容を貼り付けます。
赤字の部分はご自身のVSPのIPアドレスに差し替えてください。
version: "3.8"
services:
n8n:
image: n8nio/n8n
restart: always
user: root
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=password
- N8N_HOST=123.45.67.89
- N8N_PROTOCOL=http
- N8N_PORT=5678
- WEBHOOK_URL=http://123.45.67.89:5678
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
- TZ=Asia/Tokyo
volumes:
- ./n8n_data:/home/node/.n8n
n8nの起動
そして以下のコマンドでn8nを起動します。
docker-compose up -d
起動後、以下のコマンドで状態を確認できます。
docker-compose ps
コンテナがUpになっていればOKです。
Webブラウザからアクセス
以下のURLにアクセスして、n8nの画面が表示されるか確認します。
http://<ご自身のVPSのIPアドレス>:5678
例えばVPSのIPアドレスが123.45.67.89であったら以下のようになります。
http://123.45.67.89:5678
アクセスすると以下のような画面に遷移します。

もし表示されない場合はVPSサーバーの5678ポートが開いていない可能性があるので、以下のコマンドを入力しポート5678をファイアウォールで許可しましょう。
sudo ufw allow 5678
また、VPSサーバーの管理画面からも解放するポート5678を追加しましょう。
n8nはデフォルトだとhttps接続しかできないため、上のような表示になります。
アクセスするにはhttpでも接続できるようにするため、docker-compose.ymlに以下のコードを追加します。
N8N_SECURE_COOKIE=false
ファイル全体のコードは以下のようになります。
赤字の部分はご自身のVSPのIPアドレスに差し替えてください。
version: "3.8"
services:
n8n:
image: n8nio/n8n
restart: always
user: root
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=password
- N8N_HOST=123.45.67.89
- N8N_PROTOCOL=http
- N8N_PORT=5678
- WEBHOOK_URL=http://123.45.67.89:5678
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true
- N8N_SECURE_COOKIE=false
- TZ=Asia/Tokyo
volumes:
- ./n8n_data:/home/node/.n8n
コードの追加後、以下のコマンド順番に入力し、Dockerを再起動させます。
docker compose down
docker compose up -d
再びアクセスし、以下の画面が表示されればセルフホスティング成功です。

独自ドメインを取得し、HTTPSに対応させよう
これでブラウザからn8nを使うことができるようになりましたが、ログインする際、パスワードなどの重要な情報が通信中に見えてしまうのは大きなリスクです。
これを防ぐには、通信を暗号化する HTTPS化(暗号化通信) が必要です。
今回は、Nginx + Let’s Encrypt を使ったシンプルな方法をご紹介します。
ドメインの設定
現在はVSPのIPアドレスを入力していますが、本格的に使うのであれば独自ドメインを取得し設定するのが良いでしょう。
まず、「お名前.com」や「ムームードメイン」などのサービスで、あなた専用のWebアドレス(ドメイン)を購入します。
例: example.com
※これからは独自ドメインの例としてexample.comを使います。
このアドレスはこれ以降赤字で表示しているので、ご自身の独自ドメインに都度差し替えてください。
次に、購入したドメインが、あなたのVPSサーバーにアクセスできるように、独自ドメインとVPSのIPアドレスをつなぐ作業を行います。
そのためには、ドメインを取得したサービスで「ドメインの設定画面(DNS設定画面)」の「DNSレコード設定」を開いて、以下のようにレコードを設定します。
・ TYPE: A
・ VALUE(値): ご自身のVPSのIPアドレス(例:123.45.67.89)
(この二つ以外は空欄でも大丈夫です。)
Aレコードとは「このドメインを使ったアクセスは、このIPアドレスに転送してください」という意味の設定です。
設定を反映するまでに数分〜数時間かかることがあります。
この作業を行うことで、独自ドメインでアクセスしても、IPアドレス(http://123.45.67.89:5678)でアクセスした時と同じように、n8nの画面が表示されるようになります。
HTTPS通信をする準備をしよう
HTTPS通信をするにはWebサーバーを用意する必要があります。
今回は「Nginx(エンジンエックス)」を使います。
Nginxとは、Webサイトをインターネット上で表示するためのソフトウェアで、主に以下の3つの働きをします。
1. Webサーバー
Webブラウザ(ChromeやSafariなど)からのアクセスに対して、HTMLファイルや画像などを返します。
2. リーバスプロキシ
ユーザーからのリクエストを別のサーバーに転送して、結果を返します。
3. HTTPS対応
SSL証明書を使って安全な通信を実現します。
Nginxのインストール
まずは以下のコマンドでNginxをインストールします。
apt install nginx -y
インストール後、Nginxを起動・有効化します。
systemctl start nginx
systemctl enable nginx
リバースプロキシの設定
次にNginxでリバースプロキシ設定をします。
リバースプロキシ設定とはクライアント(ユーザー)からのリクエストを、別のサーバー(バックエンドサーバー)に中継(転送)し、そのレスポンスをクライアントに返す設定のことを言います。
これは以下のことを行うための設定です。
1. ポート変換
n8nは5678ポートで動いていますが、外部からは80ポートでアクセスさせたい。
2. HTTPS対応
n8nはデフォルトだとHTTPSでのみ接続が可能です。そのため、HTTPSで転送させるように変更します。
まずは、以下のコマンドで設定ファイルを作成しましょう。
nano /etc/nginx/conf.d/n8n.conf
そして以下のコードを入力しましょう。
赤字の部分はご自身の独自ドメインに差し替えてください。
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
そして以下のコマンドでNginxを再起動します。
systemctl reload nginx
SSL証明書の取得
HTTPSは通信内容を第三者に盗聴されたり改ざんされたりしないよう、暗号化通信を行います。そのために必要なのがSSL証明書です。
SSL証明書は、「このドメインは本当にこのサーバーが管理しているものですよ」ということを証明するものです。
ユーザーのブラウザは、接続先が本物のWebサイトかどうかをSSL証明書でチェックしています。これにより、なりすまし(偽サイト)を防ぐことができます。
SSL証明書には有料と無料があります。有料SSL証明書は、セキュリティのレベルやサポート体制、信頼性の面でより充実したサービスを提供しています。今回は無料でSSL証明書を発行できる「Let’s Encrypt」を使います。
まずLet’s Encryptのツールである「Certbot(サートボット)」を使って証明書を取得します。
以下のコマンドでCertbotをインストールします。
apt install certbot python3-certbot-nginx -y
次に以下のコマンドで証明書を取得します。
※赤字の部分はご自身の独自ドメインに差し替えてください。
certbot –nginx -d example.com
実行後、以下のようなログが含まれていれば成功です。
Congratulations! You have successfully enabled HTTPS on https://example.com
失敗している場合は、DNSレコード設定がうまくいっていない可能性があります。
以下のコマンドを実行し、ご自身のVPSのIPアドレスが返ってくるか確認をしましょう。
※赤字の部分はご自身の独自ドメインに差し替えてください。
dig +short example.com
設定したIPアドレスが返ってこない場合は、少し時間を空けて再度試してみましょう。
証明書が発行されると、先ほどの/etc/nginx/conf.d/n8n.confファイルに以下のコードが追記されているはずです。
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
これで以下のようにHTTPSの安全なURLでn8nにアクセスできるようになります。
赤字の部分はご自身の独自ドメインに差し替えてアクセスしてください。
https://example.com
n8nの画面が表示されれば成功です。

これで安全にn8nを使えるようになりました。
まとめ
セルフホスティングは少し手間がかかりますが、サブスクリプション費用を抑えたい方にとっては非常に大きなメリットがあります。
また、n8nを自前で運用できれば、自分自身やチームの作業自動化の自由度が大きく向上します。
この記事を参考に、ぜひn8nのセルフホスティングに挑戦してみましょう。

