• テクノロジー

Linux VPS で n8n をセルフホストする方法(手順別)

  • Felix Rose-Collins
  • ••
  • 19 min read

はじめに

n8nは、現在利用可能なオープンソースのワークフロー自動化ツールの中でも最も強力なもののひとつです。ZapierやMakeといったSaaS型の代替ツールとは異なり、n8nではデータと自動化プロセスを完全に制御できますが、これは自分でホスティングする場合に限られます。Linux VPSは、常時稼働で、手頃な価格、そして完全に自分の管理下にあるという点で、この用途に最適な環境です。

このガイドでは、Linux VPS上で本番環境対応のセルフホスト型n8nインスタンスをセットアップする全プロセスを解説します。空のサーバーから、Docker、Nginx、PostgreSQL、自動バックアップ、そして強化されたセキュリティ設定を備えた、完全にセキュアでSSL対応のn8n環境を構築します。

主なポイント

  • VPS上のn8nでは、ワークフロー数に制限がなく、使用量の上限もなく、データの完全な所有権が確保されます
  • 更新や環境の分離を容易にするため、Docker によるインストールが推奨されます
  • 本番環境のワークロードには、PostgreSQL(SQLite ではなく)の使用が推奨されます
  • 本番環境での利用には、Let’s Encrypt SSL を使用したリバースプロキシ(Nginx)が必要です
  • PostgreSQL を使用したスムーズな n8n 環境を実現するには、VPS に少なくとも 1 vCPU と 2 GB の RAM が必要です
  • 定期的な自動バックアップにより、ワークフローデータと認証情報が保護されます

n8nとは?

n8n(「エヌ・エイト・エヌ」と発音)は、ソースコードが公開されているワークフロー自動化プラットフォームであり、視覚的なノードベースのエディタを使用してアプリ、API、サービスを接続できます。400以上の統合機能を標準でサポートしており、ワークフロー内でカスタムJavaScriptやPythonコードを実行することも可能です。

n8nと競合製品との主な違いは、所有権、コスト、柔軟性の3点に集約されます。

**所有権:**n8nをセルフホストする場合、ワークフローデータ、認証情報、実行ログはサーバーの外に出ることはありません。機密性の高い顧客データ、財務記録、または独自のビジネスロジックを扱うチームにとって、これは極めて重要です。クラウドプラットフォームでは、自動化ロジックがプロバイダーのインフラストラクチャ上に保存されるため、そのデータ保持ポリシーやセキュリティ体制の影響を受けます。

**コスト:** n8nのクラウドプランはワークフローの実行ごとに課金されるため、自動化の処理量が多いと費用が急速に膨れ上がります。1日に数千回の実行を行う中規模チームの場合、月額で数百ドルの費用がかかる可能性があります。独自のVPSであれば、サーバーの初期費用を支払えば、追加費用なしで無制限に実行できます。

**柔軟性:**セルフホスト型のn8nでは、コミュニティノードのインストール、ワークフロー内での任意のコードの実行、パブリックインターネットからはアクセスできない内部サービスへの接続、そしてデプロイメントのあらゆる側面を好みに合わせて設定することが可能です。一方、クラウドプランでは、これらの機能の多くが制限されます。

前提条件

開始する前に、以下の要件を満たしていることを確認してください:

  • Ubuntu 22.04 または 24.04(推奨)を実行する Linux VPS。一部のエントリーレベルのプランでは他のディストリビューションしか提供されていない場合があるため、選択したプランサイズでプロバイダーが Ubuntu を提供しているか確認してください
  • sudo 権限を持つ非rootユーザー
  • VPSのIPアドレスを指すドメイン名(例:n8n.yourdomain.com)
  • サーバーへのSSHアクセス
  • Linuxのコマンドラインに関する基本的な知識

適切なVPSの選択

選択するサーバーは、n8nのパフォーマンスに直接影響します。最低限、1 vCPU、2 GBのRAM、20 GBのSSDストレージが必要です。SQLiteベースの最小構成と比較してRAMが追加で必要なのは、PostgreSQL、Nginx、n8nがすべて同時に実行されるためです。

Ranktrackerの紹介

効果的なSEOのためのオールインワン・プラットフォーム

ビジネスが成功する背景には、強力なSEOキャンペーンがあります。しかし、数え切れないほどの最適化ツールやテクニックがあるため、どこから手をつければいいのかわからないこともあります。でも、もう心配はありません。効果的なSEOのためのオールインワンプラットフォーム「Ranktracker」を紹介します。

Ranktrackerの登録がついに無料になりました。

無料アカウント作成

または認証情報を使ってサインインする

複数のユーザーがいるチーム、複雑な多段階ワークフロー、または高いWebhookスループットが必要な場合は、2 vCPUと4 GB RAMにアップグレードしてください。実行ログを長期間保存する予定がある場合は、ストレージは最低40 GB必要です。

PetroSkyはパリとモントリオールでNVMe VPSプランを提供しており、チェックアウト時にn8nをワンクリックでインストールできます。オープンソースのインストールスクリプトがDocker Composeを使用してn8nをデプロイし、CaddyとLet’s Encryptを通じてHTTPSを自動的に設定します。このガイドでは、どのプロバイダーでも利用できる手動での設定方法について説明します。

VPSプロバイダーを選択する際は、地理的な場所も考慮してください。n8nインスタンスは、最も頻繁に接続するサービスに最も近い地域にホストしてください。これにより、ワークフローの実行におけるAPIのレイテンシを低減できます。

ステップ 1: サーバーの更新

VPSにSSHで接続し、何かをインストールする前にシステムの完全な更新を実行してください:

    sudo apt update && sudo apt upgrade -y

これにより、Docker やその他のソフトウェアを追加する前に、最新のセキュリティパッチが適用され、すべてのシステムライブラリが最新の状態になっていることが保証されます。

カーネルの更新が行われた場合は、再起動を行ってください:

    sudo reboot

SSHで再接続した後、n8nを実行するための専用のシステムユーザーを作成してください。サービスをrootとして実行することはセキュリティ上のリスクとなります:

    sudo adduser n8nuser
    sudo usermod -aG sudo n8nuser
    su - n8nuser

ステップ 2: Docker および Docker Compose のインストール

n8nの公式推奨インストール方法はDockerです。Dockerを使用すると、n8nとその依存関係をシステムの他の部分から隔離できるため、更新やロールバックが簡単に行えます。

公式の便利スクリプトを使用して Docker をインストールします:

    curl -fsSL https://get.docker.com | sudo sh

Dockerのドキュメントによると、この簡易スクリプトはバージョンを選択せずに最新リリースをインストールするため、本番環境での使用は推奨されていません。Dockerのバージョンを固定したい場合は、代わりにDockerのUbuntuインストールガイド(docs.docker.com/engine/install/ubuntu/)に記載されているaptリポジトリ方式を使用してください。

sudo を使わずに Docker コマンドを実行できるように、ユーザーを Docker グループに追加します:

    sudo usermod -aG docker $USER
    newgrp docker

Docker が正しく動作していることを確認します:

    docker --version
    docker compose version

どちらのコマンドも、エラーなしでバージョン文字列を表示するはずです。Docker Composeが見つからない場合は、手動でインストールしてください:

    sudo apt install docker-compose-plugin -y

ステップ 3: 本番環境向けの PostgreSQL をセットアップする

デフォルトでは、n8nはデータベースとしてSQLiteを使用します。SQLiteは個人利用や軽めのワークフローには問題ありませんが、同時書き込みへの対応が不十分であるため、多数のワークフローが同時に実行されると、処理速度の低下や「database is locked」エラーが発生します。本番環境へのデプロイには、PostgreSQLが適切な選択肢です。

Ranktrackerの紹介

効果的なSEOのためのオールインワン・プラットフォーム

ビジネスが成功する背景には、強力なSEOキャンペーンがあります。しかし、数え切れないほどの最適化ツールやテクニックがあるため、どこから手をつければいいのかわからないこともあります。でも、もう心配はありません。効果的なSEOのためのオールインワンプラットフォーム「Ranktracker」を紹介します。

Ranktrackerの登録がついに無料になりました。

無料アカウント作成

または認証情報を使ってサインインする

Docker内でn8nと並行してPostgreSQLを実行します:

    mkdir ~/n8n && cd ~/n8n

シークレットを安全に保存するための環境設定ファイルを作成します。compose ファイルにパスワードをハードコードしてはいけません:

    nano ~/n8n/.env

以下の内容を追加し、プレースホルダーの値を強力で一意なパスワードに置き換えてください:

    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=ここに強力なデータベースパスワードを入力
    POSTGRES_DB=n8n
    N8N_ENCRYPTION_KEY=ここにランダムな32文字の文字列を入力

以下のコマンドで安全な暗号化キーを生成します:

    openssl rand -hex 16

この出力を N8N_ENCRYPTION_KEY として使用してください。このキーは n8n に保存された認証情報を暗号化します。これを紛失すると、保存されたすべての認証情報は復元不可能になります。

ステップ 4: n8n の Docker Compose ファイルを作成する

n8n ディレクトリ内に docker-compose.yml ファイルを作成します:

    nano ~/n8n/docker-compose.yml

以下の設定を貼り付けてください:


services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 10


  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/London
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - EXECUTIONS_MODE=regular
      - N8N_LOG_LEVEL=info
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy


volumes:
  postgres_data:
  n8n_data:

設定に関する注意事項:

  • 127.0.0.1:5678:5678 というポートバインディングにより、n8n はローカルからのみアクセス可能になります。外部からのトラフィックはすべて Nginx が処理するため、ポート 5678 をインターネットに直接公開することはありません。
  • `depends_on` に `service_healthy` 条件を指定することで、n8n は PostgreSQL が完全に準備完了するまで待機するようになります。これを指定しないと、データベースがまだ接続を受け付けていない場合、n8n は初回起動時に失敗します。
  • N8N_LOG_LEVEL=info を設定すると、debug の場合のようにディスクストレージを圧迫することなく、運用に役立つログを取得できます。

ステップ 5: Nginx のインストールと設定

Nginxはリバースプロキシとして機能し、ポート443からのHTTPSトラフィックをポート5678上のn8nコンテナに転送します。また、SSLの終端処理も行うため、n8n自体が証明書を管理する必要はありません。

    sudo apt install nginx -y

デフォルトのサイトを削除し、n8n用の新しいサーバーブロックを作成します:

    sudo rm /etc/nginx/sites-enabled/default
    sudo nano /etc/nginx/sites-available/n8n

以下を貼り付けます:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
server {
    listen 80;
    server_name n8n.yourdomain.com;


    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        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;
        chunked_transfer_encoding on;
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 90s;
        client_max_body_size 50m;
    }
}

先頭の map ブロックは、WebSocket アップグレードヘッダーを正しく処理します。n8n はエディタでのリアルタイム更新に WebSocket を使用しているため、この設定は重要です。これがないと、ビジュアルエディタが正しく機能しません。

client_max_body_size 50m ディレクティブにより、ワークフローは大きな Webhook ペイロードを受信できるようになります。Nginx のデフォルト制限は 1 MB ですが、これはファイルのアップロードや大きな JSON レスポンスを処理するワークフローには小さすぎます。

設定を有効にしてテストします:

    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

ステップ 6: Let’s Encrypt を使用して SSL 証明書を発行する

Certbot と Nginx プラグインをインストールします:

    sudo apt install certbot python3-certbot-nginx -y

ドメインの証明書を申請します:

    sudo certbot --nginx -d n8n.yourdomain.com

画面の指示に従ってください。HTTPトラフィックをHTTPSにリダイレクトするかどうか尋ねられたら、「Yes」(オプション2)を選択してください。Certbotは、このリダイレクトを処理するためにNginxの設定を自動的に更新し、完全な証明書チェーンをインストールします。

自動更新が正しく設定されていることを確認します:

    sudo certbot renew --dry-run

Certbotは、12時間ごとに証明書を自動的に更新するsystemdタイマーをインストールします。証明書は、有効期限の30日前から更新されます。手動で更新する必要は一切ありません。

ステップ 7: n8n を起動する

n8n ディレクトリに戻り、すべてのサービスを起動します:

    cd ~/n8n
    docker compose up -d

Docker は PostgreSQL および n8n のイメージを取得し、ボリュームを作成した後、まず PostgreSQL を起動し、ヘルスチェックが成功するのを待ってから、n8n を起動します。この処理には、初回実行時に 1~3 分かかります。

両方のコンテナが実行されていることを確認してください:

    docker compose ps

postgres と n8n の両方がステータス「Up」で一覧表示されているはずです。n8n のステータスが「Restarting」となっている場合は、ログを確認してください:

    docker compose logs n8n --tail=50

両方のコンテナが正常に動作していることを確認したら、ブラウザを開き、https://n8n.yourdomain.com にアクセスしてください。メールアドレスとパスワードを使用してオーナーアカウントを作成するよう求められます。このアカウントには、n8n インスタンスに対する完全な管理者権限があります。

ステップ 8: 起動時に n8n が自動的に開始されるように設定する

docker-compose.yml 内の `restart: always` ディレクティブにより、クラッシュやサーバーの再起動時にすべてのコンテナが自動的に再起動するよう保証されます。

サーバーを再起動して、これを確認してください:

    sudo reboot

SSHで再接続した後、n8nが自動的に再起動したことを確認してください:

    docker compose -f ~/n8n/docker-compose.yml ps

手動での操作なしに、両方のコンテナが「実行中」と表示されるはずです。

ステップ 9: 自動バックアップの設定

n8nのデータ(ワークフロー、認証情報、実行履歴)は、PostgreSQLデータベースとn8n_data Dockerボリューム(暗号化キーや一部の設定が保存されている)の2か所に保存されています。両方を定期的にバックアップしてください。

バックアップスクリプトを作成します:

    nano ~/n8n/backup.sh

以下の内容を貼り付けます:

    #!/bin/bash
    BACKUP_DIR="/home/n8nuser/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    LOG_FILE="$BACKUP_DIR/backup.log"
# まず最初に、バックアップディレクトリが存在することを確認します
mkdir -p "$BACKUP_DIR"


# PostgreSQLのダンプ
DUMP_FILE="$BACKUP_DIR/n8n_db_$DATE.sql"
docker compose -f /home/n8nuser/n8n/docker-compose.yml exec -T postgres \
  pg_dump -U n8n n8n > "$DUMP_FILE"


# ダンプが成功し、ファイルが空でないことを確認
if [ $? -ne 0 ] || [ ! -s "$DUMP_FILE" ]; then
    echo "ERROR: $DATE にデータベースのバックアップに失敗しました" >> "$LOG_FILE"
    rm -f "$DUMP_FILE"
    exit 1
fi


# 暗号化キーと環境変数をバックアップ
cp /home/n8nuser/n8n/.env "$BACKUP_DIR/n8n_env_$DATE.bak"
# n8n_data ボリューム(インスタンス設定およびインストール済みのコミュニティノード)をバックアップ
docker run --rm -v n8n_n8n_data:/data -v "$BACKUP_DIR":/backup alpine \
  tar czf /backup/n8n_data_$DATE.tar.gz -C /data .


# データベースダンプを圧縮
gzip "$DUMP_FILE"


# バックアップは直近7日分のみ保持
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
find "$BACKUP_DIR" -name "*.bak" -mtime +7 -delete
find "$BACKUP_DIR" -name "n8n_data_*.tar.gz" -mtime +7 -delete


echo "バックアップ完了: n8n_db_$DATE.sql.gz" >> "$LOG_FILE"

ボリューム名「n8n_n8n_data」は、Docker Compose がプロジェクトフォルダ名(n8n)をボリューム名の先頭に付加したことに由来します。ご自身の環境では `docker volume ls` で確認してください。

スクリプトに実行権限を付与し、cron でスケジュール設定を行います:

    chmod +x ~/n8n/backup.sh
    crontab -e

毎日午前2時にバックアップを実行するように、次の行を追加してください:

    0 2 * * * /home/n8nuser/n8n/backup.sh >> /home/n8nuser/backups/backup.log 2>&1

オフサイトでの冗長化のため、rclone や aws s3 sync を使用して、バックアップディレクトリを S3 互換のオブジェクトストレージプロバイダーに同期することを検討してください。

ステップ 10: 基本的なセキュリティ強化を有効にする

ファイアウォールの設定

UFW をインストールし、サーバーに必要なポートのみを許可します:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable

ルールが有効になっていることを確認します:

    sudo ufw status verbose

ポート 22 (SSH)、80 (HTTP)、443 (HTTPS) が許可されていることが確認できるはずです。 注意点:Dockerは独自のファイアウォールルールを書き込み、公開されたコンテナポートについてはUFWをバイパスします。ポート5678がプライベートなままなのは、composeファイルがそれを127.0.0.1にバインドしているためであり、UFWによるものではありません。したがって、そのバインド先を0.0.0.0に変更してはいけません。

SSHのパスワード認証を無効にする

SSHキーを使用している場合(使用すべきです)、パスワードによるSSHログインを完全に無効にしてください。まず、n8nuserアカウントがあなたのキーでログインできることを確認してください。ローカルマシンから、次のコマンドを実行します:

    ssh-copy-id n8nuser@your_server_ip

次に、SSHサーバーの設定ファイルを編集します:

    sudo nano /etc/ssh/sshd_config

以下の値を設定します:

    PasswordAuthentication no
    PermitRootLogin no
    sudo systemctl restart ssh

多くの Ubuntu クラウドイメージでは、/etc/ssh/sshd_config.d/ 内のファイル(多くの場合 50-cloud-init.conf)で PasswordAuthentication が yes に設定されており、sshd は最初に読み込んだ値を採用するため、この設定が優先されます。実際に適用されている設定を確認してください:

    sudo sshd -T | grep -i passwordauthentication

「passwordauthentication no」と表示されるはずです。表示されない場合は、オーバーライドファイル内の値を変更し、SSHを再起動してください。

新しいターミナルウィンドウで鍵ベースのログインが機能することを確認するまでは、現在の SSH セッションを閉じないでください。

n8n ログインページへのレート制限

n8nのログインエンドポイントに対するブルートフォース攻撃を遅らせるために、レート制限を追加します。

Ranktrackerの紹介

効果的なSEOのためのオールインワン・プラットフォーム

ビジネスが成功する背景には、強力なSEOキャンペーンがあります。しかし、数え切れないほどの最適化ツールやテクニックがあるため、どこから手をつければいいのかわからないこともあります。でも、もう心配はありません。効果的なSEOのためのオールインワンプラットフォーム「Ranktracker」を紹介します。

Ranktrackerの登録がついに無料になりました。

無料アカウント作成

または認証情報を使ってサインインする

**重要:** limit_req_zone ディレクティブは、Nginx のメイン設定ファイル内の http {} ブロック内に記述する必要があります。server ブロック内には記述しないでください。メイン設定ファイルを開きます:

    sudo nano /etc/nginx/nginx.conf

既存の http {} ブロック内に次の行を追加します:

    http {
        ...
        limit_req_zone $binary_remote_addr zone=n8n_login:10m rate=5r/m;
        ...
    }

次に、n8n サイト設定ファイル(/etc/nginx/sites-available/n8n)で、ポート 443 をリッスンする server ブロック(Certbot がステップ 6 で作成したもの)内の、既存の location / の隣に、次の location ブロックを追加します。Nginx は location / からプロキシヘッダーを引き継がないため、ここではそれらを再度指定します:

    location /rest/login {
        limit_req zone=n8n_login burst=5 nodelay;
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        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;
    }

変更を反映するために Nginx を再読み込みします:

    sudo nginx -t && sudo systemctl reload nginx

これにより、各 IP アドレスあたりのログイン試行回数は 1 分あたり約 5 回に制限され、わずかなバースト許容範囲が設けられます。

n8n と PostgreSQL を最新の状態に保つ

定期的に最新のイメージを取得して再起動してください:

    cd ~/n8n
    docker compose pull
    docker compose up -d

Dockerは最新のn8nio/n8nおよびpostgresイメージを取得し、新しいバージョンが利用可能なコンテナのみを再起動します。

本番環境では、n8nイメージを特定のバージョンタグ(n8nのリリースノートに記載されているdocker.n8n.io/n8nio/n8n:<version>)に固定し、計画的にアップグレードすることを検討してください。そうすることで、変更履歴を確認する前に定期的なプル操作によってメジャーバージョンが飛び越えられることを防げます。

よくある問題のトラブルシューティング

n8n コンテナが再起動を繰り返す

再起動ループが始まったら直ちに、コンテナのログを確認してください:

    docker compose logs n8n --tail=100

一般的な原因:

  • データベース接続エラー:`docker compose ps` コマンドで PostgreSQL が正常に動作していることを確認してください。.env ファイル内の `POSTGRES_PASSWORD` が、データベースの初期化時に使用されたパスワードと一致しているか確認してください。
  • 暗号化キーの欠落または変更: N8N_ENCRYPTION_KEY が設定されていないか、初回実行後に変更された場合、n8n は保存された認証情報を復号できず、クラッシュします。
  • RAM不足:PostgreSQLとn8nを合わせて1~1.5 GBのRAMを使用する場合があります。`free -h`コマンドで利用可能なメモリを確認してください。

Webhook が機能しない

Webhook を利用するには、お使いのドメインからインターネット経由で n8n にアクセスできる必要があります。以下を確認してください:

  1. ドメインの DNS A レコードが VPS の IP アドレスを指しているか確認してください: dig n8n.yourdomain.com
  2. Nginxが実行中であること:sudo systemctl status nginx
  3. ポート 443 が開いているか確認してください:sudo ufw status
  4. 環境変数 `WEBHOOK_URL` が、末尾のスラッシュを含め、パブリックドメインと完全に一致していること

n8nエディタが正しく読み込まれない

ビジュアルエディタは読み込まれるものの、ワークフローキャンバスが空白で表示されたり、リアルタイム更新が機能しなくなったりする場合は、WebSocket接続に失敗しています。Nginxの設定ファイルに `map $http_upgrade` ブロックが存在すること、および `proxy_set_header Connection` 行でリテラル文字列「upgrade」ではなく `$connection_upgrade` 変数を使用していることを確認してください。

SSL証明書のエラー

Certbotがドメイン検証エラーで失敗した場合は、ポート80がインターネットからアクセス可能かどうかを確認してください:

    curl -I http://n8n.yourdomain.com

リクエストがタイムアウトする場合は、VPSプロバイダーのファイアウォールがポート80をブロックしている可能性があります。UFWに加えて、クラウドコンソールのファイアウォールルールも確認してください。

まとめ

Linux VPS上でn8nをセルフホスティングすることで、実行制限がなく、完全なデータプライバシーが確保され、必要なあらゆる統合を実行できる柔軟性を備えた、本番環境対応のワークフロー自動化プラットフォームが得られます。このガイドで解説したセットアップ(Docker、PostgreSQL、Nginxリバースプロキシ、Let’s Encrypt SSL、自動バックアップ、セキュリティ強化)は、本番環境でも使用されているのと同じスタックであり、構築のための安定かつ安全な基盤を提供します。

最小限の Docker `run` コマンドによるインストールとは異なり、このセットアップはサーバーの再起動に耐え、ワークフローの同時実行を処理し、障害から円滑に回復するように構築されています。認証情報は暗号化され、データは毎晩バックアップされ、ログインエンドポイントはブルートフォース攻撃に対してレート制限がかけられています。

インスタンスが稼働し始めたら、データベース、API、Webhook、AI 連携用の n8n 組み込みノードを探索して、すぐにワークフローの自動化を開始しましょう。community.n8n.io にあるセルフホスト型のコミュニティフォーラムも、ワークフローのアイデア、ノードのトラブルシューティング、デプロイのヒントを得るための優れたリソースです。

Felix Rose-Collins

Felix Rose-Collins

Ranktracker's CEO/CMO & Co-founder

Felix Rose-Collins is the Co-founder and CEO/CMO of Ranktracker. With over 15 years of SEO experience, he has single-handedly scaled the Ranktracker site to over 500,000 monthly visits, with 390,000 of these stemming from organic searches each month.

Ranktrackerを無料で使いましょう。

あなたのWebサイトのランキングを妨げている原因を突き止めます。

無料アカウント作成

または認証情報を使ってサインインする

Different views of Ranktracker app