タグ: セルフホスト

  • n8n Dockerインストール完全ガイド|docker-composeで本番環境を構築する手順

    n8n Dockerインストール完全ガイド|docker-composeで本番環境を構築する手順

    n8nをDockerでセルフホストすれば、実行回数無制限で月額コストを大幅に削減できます。この記事では、ローカル開発環境から本番環境まで、Docker/Docker Composeを使ったn8nのインストール手順を解説します。

    前提条件

    必要な環境

    • Docker Engine 20.10以上
    • Docker Compose v2以上
    • メモリ:最低2GB(推奨4GB以上)
    • ストレージ:10GB以上の空き容量

    Dockerのインストール確認

    以下のコマンドでDockerがインストールされているか確認します。

    
    docker –version
    docker compose version
    

    バージョン情報が表示されればOKです。未インストールの場合は、Docker公式サイトからDocker Desktopをインストールしてください。

    方法1:docker runで手軽に起動(ローカル開発向け)

    最もシンプルな方法です。ローカルでn8nを試したい場合に最適です。

    基本の起動コマンド

    
    docker run -it –rm 
      –name n8n 
      -p 5678:5678 
      -v n8n_data:/home/node/.n8n 
      n8nio/n8n
    

    起動後、ブラウザで http://localhost:5678 にアクセスするとn8nの画面が表示されます。

    コマンドの解説

    オプション 説明
    -it 対話モード(ログをターミナルに表示)
    –rm コンテナ停止時に自動削除
    –name n8n コンテナ名を指定
    -p 5678:5678 ポートマッピング
    -v n8n_data:/home/node/.n8n データ永続化(名前付きボリューム)

    バックグラウンドで起動

    ターミナルを閉じてもn8nを動かし続けたい場合は、-dオプションを使用します。

    
    docker run -d 
      –name n8n 
      -p 5678:5678 
      -v n8n_data:/home/node/.n8n 
      –restart unless-stopped 
      n8nio/n8n
    

    –restart unless-stopped により、PCを再起動してもn8nが自動起動します。

    方法2:Docker Compose(推奨)

    設定をファイルで管理できるDocker Composeを使う方法です。環境変数やデータベース連携が簡単に設定でき、本番運用にも対応できます。

    ディレクトリ構成

    
    n8n/
    ├── docker-compose.yml
    ├── .env
    └── n8n_data/          # データ永続化用(自動作成)
    

    基本のdocker-compose.yml

    まずはシンプルな構成から始めましょう。

    
    services:
      n8n:
        image: n8nio/n8n
        container_name: n8n
        ports:
          - “5678:5678″
        environment:
          - GENERIC_TIMEZONE=Asia/Tokyo
          - TZ=Asia/Tokyo
        volumes:
          - n8n_data:/home/node/.n8n
        restart: unless-stopped
    
    volumes:
      n8n_data:
    

    .envファイル

    環境変数は.envファイルで管理すると便利です。

    
    # タイムゾーン
    GENERIC_TIMEZONE=Asia/Tokyo
    TZ=Asia/Tokyo
    

    起動コマンド

    
    # 起動
    docker compose up -d
    
    # ログ確認
    docker compose logs -f n8n
    
    # 停止
    docker compose down
    
    # 停止(ボリューム削除も含む)
    docker compose down -v
    

    方法3:PostgreSQL連携(本番環境向け)

    本番環境では、デフォルトのSQLiteではなくPostgreSQLを使用することを推奨します。データの信頼性とパフォーマンスが向上します。

    docker-compose.yml(PostgreSQL版)

    
    services:
      n8n:
        image: n8nio/n8n
        container_name: n8n
        ports:
          - “5678:5678″
        environment:
          - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
          - TZ=${TZ}
          - 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}
        volumes:
          - n8n_data:/home/node/.n8n
        depends_on:
          postgres:
            condition: service_healthy
        restart: unless-stopped
    
      postgres:
        image: postgres:15
        container_name: n8n-postgres
        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
        restart: unless-stopped
    
    volumes:
      n8n_data:
      postgres_data:
    

    .env(PostgreSQL版)

    
    # タイムゾーン
    GENERIC_TIMEZONE=Asia/Tokyo
    TZ=Asia/Tokyo
    
    # PostgreSQL設定
    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=your_secure_password_here
    POSTGRES_DB=n8n
    
    # n8n暗号化キー(認証情報の暗号化に使用)
    # 以下のコマンドで生成: openssl rand -hex 32
    N8N_ENCRYPTION_KEY=your_32_char_encryption_key_here
    

    暗号化キーの生成

    N8N_ENCRYPTION_KEYは認証情報の暗号化に使用される重要なキーです。以下のコマンドで生成してください。

    
    openssl rand -hex 32
    

    重要:このキーは変更するとすべての認証情報が復号できなくなります。必ずバックアップしてください。

    方法4:HTTPS対応(外部公開向け)

    n8nを外部に公開する場合は、HTTPSが必要です。TraefikまたはCaddyをリバースプロキシとして使用します。

    docker-compose.yml(Traefik版)

    
    services:
      traefik:
        image: traefik:v2.10
        container_name: traefik
        command:
          - “–api.insecure=false”
          - “–providers.docker=true”
          - “–providers.docker.exposedbydefault=false”
          - “–entrypoints.web.address=:80″
          - “–entrypoints.websecure.address=:443″
          - “–certificatesresolvers.letsencrypt.acme.tlschallenge=true”
          - “–certificatesresolvers.letsencrypt.acme.email=${SSL_EMAIL}”
          - “–certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json”
          - “–entrypoints.web.http.redirections.entrypoint.to=websecure”
        ports:
          - “80:80″
          - “443:443″
        volumes:
          - traefik_data:/letsencrypt
          - /var/run/docker.sock:/var/run/docker.sock:ro
        restart: unless-stopped
    
      n8n:
        image: n8nio/n8n
        container_name: n8n
        environment:
          - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
          - N8N_HOST=${N8N_HOST}
          - N8N_PORT=5678
          - N8N_PROTOCOL=https
          - WEBHOOK_URL=<a href="https://${N8N_HOST}/" target="_blank" rel="noopener">https://${N8N_HOST}/</a>
          - 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}
        volumes:
          - n8n_data:/home/node/.n8n
        labels:
          - “traefik.enable=true”
          - “traefik.http.routers.n8n.rule=Host(<code>${N8N_HOST}</code>)”
          - “traefik.http.routers.n8n.entrypoints=websecure”
          - “traefik.http.routers.n8n.tls.certresolver=letsencrypt”
          - “traefik.http.services.n8n.loadbalancer.server.port=5678″
        depends_on:
          postgres:
            condition: service_healthy
        restart: unless-stopped
    
      postgres:
        image: postgres:15
        container_name: n8n-postgres
        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
        restart: unless-stopped
    
    volumes:
      n8n_data:
      postgres_data:
      traefik_data:
    

    .env(HTTPS版)

    
    # ドメイン設定
    N8N_HOST=n8n.example.com
    SSL_EMAIL=admin@example.com
    
    # タイムゾーン
    GENERIC_TIMEZONE=Asia/Tokyo
    TZ=Asia/Tokyo
    
    # PostgreSQL設定
    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=your_secure_password_here
    POSTGRES_DB=n8n
    
    # n8n暗号化キー
    N8N_ENCRYPTION_KEY=your_32_char_encryption_key_here
    

    初期設定

    オーナーアカウントの作成

    n8nに初めてアクセスすると、オーナーアカウントの作成画面が表示されます。

    1. メールアドレスを入力
    2. 名前を入力
    3. パスワードを設定
    4. 「Next」または「Set up」をクリック

    このアカウントがn8nの管理者アカウントになります。

    タイムゾーンの確認

    設定画面でタイムゾーンが「Asia/Tokyo」になっていることを確認してください。スケジュール実行の時刻に影響します。

    n8nのアップデート

    Docker Composeの場合

    
    # 最新イメージを取得
    docker compose pull
    
    # コンテナを再作成(データは保持)
    docker compose up -d
    

    特定バージョンを指定

    docker-compose.ymlのimageを変更してバージョンを固定できます。

    
    services:
      n8n:
        image: n8nio/n8n:1.70.0  # バージョン指定
    

    バージョン確認

    n8nの画面左下に現在のバージョンが表示されます。また、以下のコマンドでも確認できます。

    
    docker exec n8n n8n –version
    

    バックアップと復元

    データのバックアップ

    PostgreSQL使用時

    
    # データベースのバックアップ
    docker exec n8n-postgres pg_dump -U n8n n8n > backup_$(date +%Y%m%d).sql
    

    SQLite使用時(デフォルト)

    
    # ボリュームのバックアップ
    docker run –rm -v n8n_data:/data -v $(pwd):/backup alpine tar cvf /backup/n8n_backup.tar /data
    

    ワークフローのエクスポート

    n8nのUI上からもワークフローをJSONファイルとしてエクスポートできます。

    1. ワークフロー一覧画面を開く
    2. エクスポートしたいワークフローを選択
    3. 「…」メニューから「Download」を選択

    トラブルシューティング

    コンテナが起動しない

    
    # ログを確認
    docker compose logs n8n
    
    # コンテナの状態を確認
    docker compose ps
    

    ポートが使用中

    5678ポートが他のアプリケーションで使用されている場合は、docker-compose.ymlのポートマッピングを変更します。

    
    ports:
      - “15678:5678″  # ホスト側を15678に変更
    

    パーミッションエラー

    n8nはUID 1000で動作します。ボリュームマウント時に権限エラーが出る場合は、以下を実行します。

    
    sudo chown -R 1000:1000 ./n8n_data
    

    PostgreSQLに接続できない

    • depends_onでpostgresの起動を待っているか確認
    • healthcheckが正常に動作しているか確認
    • .envファイルの認証情報が正しいか確認
    
    # PostgreSQLの状態確認
    docker compose exec postgres pg_isready -U n8n
    

    主要な環境変数

    環境変数 説明 デフォルト値
    GENERIC_TIMEZONE タイムゾーン UTC
    N8N_HOST ホスト名 localhost
    N8N_PORT ポート番号 5678
    N8N_PROTOCOL プロトコル(http/https) http
    WEBHOOK_URL Webhook用のベースURL
    N8N_ENCRYPTION_KEY 認証情報の暗号化キー
    DB_TYPE データベースタイプ sqlite
    NODE_FUNCTION_ALLOW_EXTERNAL Functionノードで許可する外部パッケージ
    EXECUTIONS_DATA_PRUNE 実行履歴の自動削除 true
    EXECUTIONS_DATA_MAX_AGE 実行履歴の保持期間(時間) 336

    セキュリティのベストプラクティス

    • N8N_ENCRYPTION_KEYを必ず設定:認証情報を暗号化
    • PostgreSQLを外部に公開しない:Dockerネットワーク内のみでアクセス
    • HTTPSを使用:外部公開時は必須
    • 強力なパスワード:オーナーアカウントとDB認証
    • 定期的なバックアップ:データとワークフローを保護
    • 最新バージョンを維持:セキュリティパッチの適用

    まとめ

    n8nをDockerでインストールする方法を解説しました。

    方法 用途 難易度
    docker run お試し・ローカル開発 簡単
    Docker Compose(基本) ローカル開発・小規模運用 簡単
    Docker Compose + PostgreSQL 本番環境 中程度
    Docker Compose + PostgreSQL + HTTPS 外部公開・本番環境 やや複雑

    ローカルで試すなら「docker run」、本番運用なら「PostgreSQL + HTTPS」構成がおすすめです。

    n8nの基本的な使い方は、セルフホストの詳細についてはも参考にしてください。

  • n8nセルフホスト構築ガイド|Docker Composeで本番環境を構築する方法

    n8nセルフホスト構築ガイド|Docker Composeで本番環境を構築する方法

    n8nのセルフホストは、Cloud版と比べてコストを大幅に抑えながら、実行回数無制限・完全なデータ管理を実現できる運用方法です。この記事では、Docker Composeを使ったセルフホスト環境の構築から、本番運用に必要なHTTPS化、バックアップ、アップデートまでを解説します。

    セルフホストとCloud版の比較

    n8nには大きく3つの利用形態があります。

    項目 Cloud版 セルフホスト(VPS) ローカル(Docker Desktop)
    月額コスト €20〜50 ¥700〜2,000(サーバー代) 無料
    実行回数 2,500〜10,000/月 無制限 無制限
    外部連携(Webhook) △(トンネル必要)
    24時間稼働 ×(PC起動時のみ)
    運用・保守 不要 自己責任 自己責任
    データ管理 n8n社 自社管理 自社管理

    セルフホストが向いているケース

    • ワークフローの実行回数が多く、Cloud版の上限を超える
    • 機密データを外部サービスに預けたくない
    • 月額コストを最小限に抑えたい
    • サーバー運用の知識がある(または学ぶ意欲がある)

    セルフホストの選択肢

    セルフホストの構築先として、主に以下の選択肢があります。

    サービス 月額目安 特徴
    Hostinger VPS ¥780〜1,200 1クリックでn8nインストール可能、初心者向け
    XServer VPS ¥830〜1,150 国内サーバー、日本語サポート充実
    シン・VPS ¥620〜900 国内最安クラス
    DigitalOcean $6〜12 1クリックでn8nインストール可能、海外サーバー
    Railway $5〜(従量課金) PaaS型、使用量に応じて課金
    GCP Compute Engine 無料枠あり e2-micro無料枠で運用可能

    この記事では、汎用的なVPS環境を想定し、Docker Composeを使った構築方法を解説します。

    前提条件

    • VPS(Ubuntu 22.04/24.04 推奨、メモリ2GB以上)
    • SSH接続環境
    • 独自ドメイン(HTTPS化する場合)
    • 基本的なLinuxコマンドの知識

    ステップ1:Dockerのインストール

    まずVPSにSSH接続し、Dockerをインストールします。

    1-1. システムの更新

    
    sudo apt update && sudo apt upgrade -y
    

    1-2. Dockerのインストール

    公式のインストールスクリプトを使用します。

    
    curl -fsSL <a href="https://get.docker.com" target="_blank" rel="noopener">https://get.docker.com</a> | sh
    

    1-3. 現在のユーザーをdockerグループに追加

    
    sudo usermod -aG docker $USER
    

    一度ログアウトして再ログインするか、以下を実行します。

    
    newgrp docker
    

    1-4. インストール確認

    
    docker –version
    docker compose version
    

    バージョン情報が表示されれば成功です。

    ステップ2:n8n用のディレクトリとファイルを作成

    2-1. 作業ディレクトリの作成

    
    mkdir -p ~/n8n
    cd ~/n8n
    

    2-2. docker-compose.ymlの作成

    本番運用を想定し、PostgreSQLをデータベースとして使用する構成です。

    
    nano docker-compose.yml
    

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

    
    version: ‘3.8’
    
    services:
      postgres:
        image: postgres:16
        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 -U ${POSTGRES_USER} -d ${POSTGRES_DB}”]
          interval: 10s
          timeout: 5s
          retries: 5
    
      n8n:
        image: n8nio/n8n:latest
        restart: always
        ports:
          - “5678:5678″
        environment:
          - 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_HOST=${N8N_HOST}
          - N8N_PORT=5678
          - N8N_PROTOCOL=${N8N_PROTOCOL}
          - WEBHOOK_URL=${WEBHOOK_URL}
          - GENERIC_TIMEZONE=Asia/Tokyo
          - TZ=Asia/Tokyo
        volumes:
          - n8n_data:/home/node/.n8n
        depends_on:
          postgres:
            condition: service_healthy
    
    volumes:
      postgres_data:
      n8n_data:
    

    Ctrl + XYEnter で保存します。

    2-3. 環境変数ファイルの作成

    
    nano .env
    

    以下の内容を記述します。パスワードは必ず変更してください。

    
    # PostgreSQL設定
    POSTGRES_USER=n8n_user
    POSTGRES_PASSWORD=your_secure_password_here
    POSTGRES_DB=n8n
    
    # n8n設定
    N8N_HOST=localhost
    N8N_PROTOCOL=http
    WEBHOOK_URL=<a href="http://localhost:5678/" target="_blank" rel="noopener">http://localhost:5678/</a>
    

    パスワードの生成例

    
    openssl rand -base64 24
    

    ステップ3:n8nの起動と初期設定

    3-1. コンテナの起動

    
    docker compose up -d
    

    初回はイメージのダウンロードに数分かかります。

    3-2. 起動確認

    
    docker compose ps
    

    両方のコンテナが「running」になっていれば成功です。

    
    docker compose logs -f n8n
    

    ログを確認し、エラーがないことを確認します(Ctrl + Cで終了)。

    3-3. ブラウザでアクセス

    http://サーバーのIPアドレス:5678

    にアクセスします。初回はオーナーアカウントの作成画面が表示されます。

    1. メールアドレス、パスワード、名前を入力
    2. 「Next」をクリック
    3. アンケートに回答(スキップ可)
    4. ライセンス登録画面でメールアドレスを入力し、無料ライセンスキーを取得

    ステップ4:HTTPS化(本番運用向け)

    本番環境ではHTTPS化が必須です。ここではCaddyをリバースプロキシとして使用する方法を紹介します。

    4-1. ドメインのDNS設定

    お使いのドメインのDNS設定で、AレコードをVPSのIPアドレスに向けます。

    例:n8n.example.com203.0.113.1

    4-2. docker-compose.ymlの修正

    Caddyを追加した構成に変更します。

    
    version: ‘3.8’
    
    services:
      caddy:
        image: caddy:2
        restart: always
        ports:
          - “80:80″
          - “443:443″
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - caddy_data:/data
          - caddy_config:/config
        depends_on:
          - n8n
    
      postgres:
        image: postgres:16
        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 -U ${POSTGRES_USER} -d ${POSTGRES_DB}”]
          interval: 10s
          timeout: 5s
          retries: 5
    
      n8n:
        image: n8nio/n8n:latest
        restart: always
        environment:
          - 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_HOST=${N8N_HOST}
          - N8N_PORT=5678
          - N8N_PROTOCOL=https
          - WEBHOOK_URL=<a href="https://${N8N_HOST}/" target="_blank" rel="noopener">https://${N8N_HOST}/</a>
          - GENERIC_TIMEZONE=Asia/Tokyo
          - TZ=Asia/Tokyo
        volumes:
          - n8n_data:/home/node/.n8n
        depends_on:
          postgres:
            condition: service_healthy
    
    volumes:
      postgres_data:
      n8n_data:
      caddy_data:
      caddy_config:
    

    n8nのportsを削除し、Caddyからのみアクセスさせる構成にしています。

    4-3. Caddyfileの作成

    
    nano Caddyfile
    
    
    n8n.example.com {
        reverse_proxy n8n:5678
    }
    

    n8n.example.comを実際のドメインに置き換えてください。CaddyはLet’s Encryptから自動でSSL証明書を取得します。

    4-4. .envファイルの更新

    
    # PostgreSQL設定
    POSTGRES_USER=n8n_user
    POSTGRES_PASSWORD=your_secure_password_here
    POSTGRES_DB=n8n
    
    # n8n設定
    N8N_HOST=n8n.example.com
    

    4-5. 再起動

    
    docker compose down
    docker compose up -d
    

    https://n8n.example.comでアクセスできれば完了です。

    ステップ5:運用・保守

    n8nのアップデート

    n8nは頻繁にアップデートされます。以下のコマンドで最新版に更新できます。

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

    現在のバージョン確認:

    
    docker exec -it n8n-n8n-1 n8n -v
    

    バックアップ

    定期的なバックアップを推奨します。

    データベースのバックアップ

    
    docker exec n8n-postgres-1 pg_dump -U n8n_user n8n > backup_$(date +%Y%m%d).sql
    

    ボリュームごとバックアップ

    
    docker compose down
    sudo tar -czvf n8n_backup_$(date +%Y%m%d).tar.gz 
      /var/lib/docker/volumes/n8n_postgres_data 
      /var/lib/docker/volumes/n8n_n8n_data
    docker compose up -d
    

    ログの確認

    
    # n8nのログ
    docker compose logs -f n8n
    
    # PostgreSQLのログ
    docker compose logs -f postgres
    
    # 直近100行
    docker compose logs –tail=100 n8n
    

    コンテナの再起動

    
    docker compose restart
    

    トラブルシューティング

    コンテナが起動しない

    
    docker compose logs
    

    でエラー内容を確認します。よくある原因:

    • ポート5678が他のプロセスで使用中
    • .envファイルの記述ミス
    • PostgreSQLの接続エラー

    Webhookが動作しない

    • WEBHOOK_URLが正しく設定されているか確認
    • ファイアウォールでポート80/443が開いているか確認
    • ドメインのDNS設定が正しいか確認

    セキュアクッキーのエラー

    HTTPでアクセスしている場合に発生します。本番環境ではHTTPS化してください。ローカルテスト時は以下の環境変数を追加することで回避できます(非推奨)。

    
    environment:
      - N8N_SECURE_COOKIE=false
    

    メモリ不足

    VPSのメモリが1GB未満の場合、n8nの動作が不安定になることがあります。スワップファイルを追加するか、メモリを増設してください。

    
    # スワップファイルの追加(2GB)
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
    

    ライセンスについて

    n8nは「Sustainable Use License」を採用しています。

    • 無料で利用可能:社内業務、非商用、個人利用
    • 商用利用可能:自社の業務自動化に使用する場合
    • 有料ライセンス必要:n8nをホスティングサービスとして第三者に提供する場合、ホワイトラベル提供する場合

    自社の業務自動化目的であれば、セルフホストは完全無料で利用できます。

    よくある質問

    Q. Cloud版からセルフホストに移行できますか?

    A. はい、可能です。Cloud版のn8nからワークフローをエクスポート(JSON形式)し、セルフホスト環境にインポートできます。ただし、認証情報(Credentials)は再設定が必要です。

    Q. 複数人で使えますか?

    A. はい、セルフホスト版でも複数ユーザーを作成できます。ユーザー管理機能は無料で利用可能です。

    Q. PostgreSQLの代わりにSQLiteでも動きますか?

    A. はい、環境変数でDB_TYPE=sqliteを指定すれば動作します。ただし、本番環境ではPostgreSQLを推奨します。SQLiteはパフォーマンスや同時接続数に制限があります。

    Q. どのくらいのスペックが必要ですか?

    A. 最低要件としてCPU 1コア、メモリ1GBで動作しますが、安定運用には2コア、2GB以上を推奨します。ワークフローの複雑さや実行頻度に応じてスケールアップを検討してください。

    Q. 自動バックアップは設定できますか?

    A. cronを使って定期バックアップを設定できます。以下は毎日午前3時にバックアップを実行する例です。

    
    crontab -e
    # 以下を追加
    0 3 * * * cd ~/n8n && docker exec n8n-postgres-1 pg_dump -U n8n_user n8n > ~/backups/n8n_$(date +%Y%m%d).sql
    

    まとめ

    n8nのセルフホストは、初期設定の手間はかかりますが、一度構築すれば低コストで実行回数無制限の自動化環境を手に入れられます。

    この記事で解説した内容

    • Docker Composeを使ったn8n環境の構築
    • PostgreSQLをデータベースとして使用する本番構成
    • CaddyによるHTTPS化
    • アップデート、バックアップなどの運用方法

    まずはCloud版の14日間無料トライアルでn8nの使い方を学び、本格運用の段階でセルフホストに移行するのがおすすめの流れです。

    n8nの基本的な使い方については、料金プランの詳細はも参考にしてください。

  • n8n料金プラン完全ガイド|Cloud版・セルフホスト版の費用比較【2025年最新】

    n8n料金プラン完全ガイド|Cloud版・セルフホスト版の費用比較【2025年最新】

    n8nの料金体系を検討している方向けに、Cloud版の各プランとセルフホスト版の費用を詳しく解説します。Zapier・Makeとの料金比較や、あなたに最適なプランの選び方まで、導入前に知っておきたい情報をまとめました。

    n8n料金の全体像

    まず、n8nの料金体系の全体像を把握しましょう。

    3つの利用方法と費用

    n8nには3つの利用方法があり、それぞれ費用が異なります。

    利用方法 月額費用 特徴
    Cloud版(公式マネージドサービス) €20〜(約3,300円〜) すぐに使える、運用不要
    セルフホスト版(VPS) サーバー代のみ(500〜2,000円程度) 実行数無制限、自由度高
    デスクトップ版 無料 学習用、PCが必要

    n8n独自の課金単位「実行(Execution)」とは

    n8nの料金を理解する上で最も重要なのが「実行(Execution)」という課金単位です。

    1回の実行 = ワークフロー全体が1回動くこと

    ワークフロー内にいくつのノード(処理ステップ)があっても、処理するデータ量がどれだけ多くても、1回の実行は1回としてカウントされます。

    これは他のツール(ZapierやMake)との大きな違いです。ZapierやMakeでは各ステップごとに課金されるため、複雑なワークフローほどコストが増えます。n8nは複雑な処理でも実行回数で課金されるため、コストを予測しやすいのが特徴です。

    n8n Cloud版の料金プラン

    Cloud版は、n8n公式が提供するマネージドサービスです。サーバー管理が不要で、すぐに使い始められます。

    2025年最新料金プラン

    2025年8月の価格改定により、すべてのプランでワークフロー数・ユーザー数・ステップ数が無制限になりました。

    項目 Starter Pro Enterprise
    月額(年払い) €20(約3,300円) €50(約8,200円) 要問合せ
    月額(月払い) €24(約3,960円) €60(約9,900円) 要問合せ
    実行数/月 2,500回 10,000回 カスタム
    ワークフロー数 無制限 無制限 無制限
    ユーザー数 無制限 無制限 無制限
    共有プロジェクト 1 5 無制限
    並列実行 5 10 カスタム
    サポート コミュニティ 優先サポート 専任サポート

    ※為替レートにより日本円換算は変動します

    各プランの選び方

    Starterプラン(€20/月)

    個人や小規模チーム向けのエントリープランです。月2,500回の実行で、日常的な業務自動化には十分な容量です。

    こんな使い方なら月2,500回に収まります:

    • 1時間に1回実行するワークフロー × 6個 → 月約4,320回(ギリギリ超過)
    • 1日に10回実行するワークフロー × 5個 → 月約1,500回(余裕あり)
    • 毎日1回のバッチ処理 × 10個 → 月約300回(大幅に余裕)

    Proプラン(€50/月)

    チームでの利用や、より多くの自動化を行いたい場合に最適です。月10,000回の実行と、5つの共有プロジェクトで、複数人での運用もスムーズです。優先サポートが受けられるのも大きなメリットです。

    Enterpriseプラン

    大企業向けのカスタムプランです。SLA(サービス品質保証)、SSO(シングルサインオン)、専任サポートなど、企業のセキュリティ・コンプライアンス要件に対応します。

    14日間の無料トライアル

    Cloud版には14日間の無料トライアルがあります。クレジットカード登録なしで試せるので、まずは実際に触ってみることをおすすめします。

    トライアル終了後は自動で有料プランに移行しません。支払い手続きを行った場合のみ有料プランが開始されるので、安心して試せます。

    セルフホスト版の費用

    セルフホスト版(Community Edition)は、自分のサーバーにn8nをインストールして使う方法です。n8n自体は完全無料で、必要なのはサーバー代のみです。

    セルフホストにかかる費用

    サーバー/VPS 月額費用 特徴
    Hostinger 約780〜1,200円 n8nテンプレート対応、日本語サポート
    XServer VPS 約830〜1,150円 国内サーバー、高い安定性
    シンVPS 約620〜900円 最安クラス、n8nに適したプランあり
    Railway 従量課金($5〜) 海外サービス、簡単セットアップ

    長期契約(12ヶ月・24ヶ月)を選ぶと、月額費用はさらに安くなります。

    セルフホスト版のメリット

    • 実行回数が無制限:どれだけワークフローを動かしてもサーバー代のみ
    • ワークフロー数も無制限:好きなだけ自動化を構築できる
    • データを自社管理:機密データを外部に出さずに済む
    • カスタマイズ自由:コミュニティノードの追加など拡張性が高い

    セルフホスト版のデメリット

    • 初期設定が必要:Docker等でのインストール作業がある
    • 運用は自己責任:アップデートやトラブル対応を自分で行う
    • 公式サポートなし:コミュニティやドキュメントで解決する必要がある

    セルフホストに向いている人

    • 月のワークフロー実行が2,500回を超える
    • コストを最小限に抑えたい
    • データを外部に出したくない
    • サーバー管理の基本的な知識がある(またはこれから学びたい)

    デスクトップ版について

    デスクトップ版は、PCにn8nをインストールして使う無料の方法です。

    特徴

    • 完全無料
    • PCが起動している間だけ動作
    • 学習用途に最適
    • データがローカルに保存される

    注意点

    • PCの電源を切るとワークフローが止まる
    • 定時実行には向かない(PCを24時間稼働させる必要がある)
    • 本番運用には不向き

    まずはn8nを試してみたい、学習したいという場合に最適です。本格的な業務自動化にはCloud版かセルフホスト版をおすすめします。

    Zapier・Makeとの料金比較

    n8nの料金がお得かどうか、競合ツールと比較してみましょう。

    月額料金の比較

    ツール 無料プラン 有料プラン最安 課金単位
    n8n Cloud なし(14日トライアル) €20(約3,300円) 実行回数
    n8n セルフホスト 実質無料 サーバー代のみ なし(無制限)
    Zapier 100タスク/月 $29.99(約4,600円) タスク数
    Make 1,000オペレーション/月 $10.59(約1,600円) オペレーション数

    コスト計算の具体例

    シナリオ:100件のデータを5ステップで処理 × 月100回実行

    • n8n:100実行 → Starterプラン(€20)で余裕
    • Zapier:50,000タスク(100件×5ステップ×100回)→ Teamプラン以上が必要($250+)
    • Make:50,000オペレーション → Proプラン以上が必要($16+追加課金)

    複雑なワークフローを多く動かす場合、n8nは圧倒的にコスト効率が良くなります。

    シナリオ:シンプルな2ステップ処理 × 月500回実行

    • n8n:500実行 → Starterプラン(€20)
    • Make:1,000オペレーション → 無料プラン内

    シンプルな処理が中心ならMakeの無料プランも選択肢になりますが、処理が複雑になるとn8nの方が有利です。

    料金プランの選び方フローチャート

    あなたに最適なn8n料金プランを選ぶためのフローチャートです。

    Q1. サーバー管理の知識はありますか?(または学ぶ意欲がある)

    YES → Q2へ
    NO → Cloud版がおすすめ → Q4へ

    Q2. 月の実行回数は2,500回を超えそうですか?

    YES → セルフホスト版がおすすめ
    NO → Q3へ

    Q3. コストを最優先しますか?

    YES → セルフホスト版がおすすめ
    NO → Cloud版でも良い → Q4へ

    Q4. チームで使いますか?複数プロジェクトを管理しますか?

    YES → Proプラン(€50/月)
    NO → Starterプラン(€20/月)

    費用を抑えてn8nを始めるおすすめの流れ

    n8nを費用を抑えながら段階的に始める方法を紹介します。

    ステップ1:Cloud版の無料トライアルで試す(14日間)

    まずはCloud版の14日間無料トライアルで、n8nの基本操作を体験しましょう。サーバー設定などの手間なく、すぐに自動化を試せます。

    ステップ2:デスクトップ版で学習を深める(無料)

    トライアル終了後、さらに学習を続けたい場合はデスクトップ版をインストール。PCが起動している間は無料で使えるので、ワークフローの作り方をじっくり学べます。

    ステップ3:本番運用に移行

    学習が進んで本番運用に移りたくなったら、以下の選択肢から選びます。

    • 手軽さ重視:Cloud版Starterプラン(€20/月)
    • コスト重視:セルフホスト版(サーバー代のみ、月700〜1,500円程度)

    よくある質問

    Q. n8nに無料プランはありますか?

    A. Cloud版には無料プランはありませんが、14日間の無料トライアルがあります。セルフホスト版(Community Edition)は完全無料で、サーバー代のみで利用できます。

    Q. 実行回数が上限を超えるとどうなりますか?

    A. Cloud版で実行回数の上限に達すると、その月はワークフローが実行されなくなります。上位プランへのアップグレードか、翌月まで待つ必要があります。

    Q. 年払いと月払いの違いは?

    A. 年払いを選ぶと約17〜20%の割引が適用されます。長期利用が確定しているなら年払いがお得です。

    Q. セルフホスト版でも商用利用できますか?

    A. 自社の業務自動化目的での利用は問題ありません。ただし、n8nを他社に有料提供(ホワイトラベル化、ホスティングサービスとして販売など)する場合は、ビジネスプラン(€667/月)の契約が必要です。

    Q. Zapierから乗り換えると安くなりますか?

    A. 多くの場合、大幅にコスト削減できます。特に複雑なワークフローを多用している場合、Zapierでは月額$100〜$500かかる処理がn8nなら€20で済むケースも珍しくありません。

    Q. おすすめのセルフホスト用サーバーは?

    A. 日本国内ならXServer VPSやシンVPS、海外サービスならHostingerが人気です。月額700〜1,200円程度で安定した運用が可能です。

    まとめ:n8n料金プランの選び方

    n8nの料金体系をまとめると、以下のようになります。

    Cloud版(€20〜/月)を選ぶべき人

    • サーバー管理の知識がない・手間をかけたくない
    • すぐに使い始めたい
    • 公式サポートを受けたい
    • 月2,500〜10,000回の実行で十分

    セルフホスト版(サーバー代のみ)を選ぶべき人

    • コストを最小限に抑えたい
    • 実行回数を無制限にしたい
    • データを自社管理したい
    • サーバー運用に抵抗がない

    まずは14日間の無料トライアルで試してみて、n8nが自分の業務に合うかどうかを確認することをおすすめします。

    n8nの基本的な使い方については、他ツールとの比較はも参考にしてください。

  • n8nは無料で使える?3つの方法とコスト比較【2025年最新】

    n8nは無料で使える?3つの方法とコスト比較【2025年最新】

    n8nは無料で使える業務自動化ツールです。クラウド版の14日間無料トライアル、デスクトップ版での完全無料利用、セルフホストによる月額0円運用など、複数の無料で使う方法があります。この記事では、予算を抑えてn8nを活用したい方向けに、各方法のメリット・デメリットと具体的な始め方を解説します。

    n8nは無料で使えるのか?結論

    結論から言うと、n8nは無料で使えます。ただし、利用方法によって条件が異なります。

    利用方法 料金 条件・制限
    クラウド版(トライアル) 14日間無料 期間限定。終了後は有料プラン(月額約3,300円〜)への移行が必要
    デスクトップ版 完全無料 PCが起動している間のみ動作
    セルフホスト版 n8n自体は無料 サーバー代が別途必要(月額500〜2,000円程度)

    コストを抑えたい方には、デスクトップ版かセルフホスト版がおすすめです。本格的に業務で使いたい場合は、セルフホスト版が最もコストパフォーマンスに優れています。

    無料で使う方法①:クラウド版の14日間無料トライアル

    最も手軽にn8nを試せるのが、クラウド版の無料トライアルです。

    クラウド版トライアルのメリット

    • アカウント登録だけですぐに使い始められる
    • サーバー設定などの技術的な作業が不要
    • すべての機能を14日間フルで試せる
    • 24時間365日安定して動作する

    クラウド版トライアルのデメリット

    • 14日間の期限がある
    • トライアル終了後は月額約3,300円(Starterプラン)が必要
    • 無料期間中にクレジットカード登録が必要な場合がある

    クラウド版トライアルの始め方

    n8n公式サイト(https://n8n.io)にアクセスし、「Get Started」をクリックします。メールアドレスとパスワードを登録すれば、すぐにn8nを使い始められます。

    クラウド版は「n8nがどんなツールか試してみたい」という方に最適です。ただし、14日間は意外と短いので、事前に自動化したい業務を整理しておくことをおすすめします。

    無料で使う方法②:デスクトップ版

    n8nにはPCにインストールして使うデスクトップ版があります。これは完全無料で、期限もありません。

    デスクトップ版のメリット

    • 完全無料で期限なし
    • インストールするだけで使える
    • データが自分のPC内で完結するのでセキュリティ面で安心
    • オフラインでも動作する

    デスクトップ版のデメリット

    • PCの電源を切るとワークフローが止まる
    • 外部からのWebhook受信が難しい
    • 24時間稼働させるにはPCを常時起動しておく必要がある

    デスクトップ版のインストール手順

    n8n公式サイトのダウンロードページから、お使いのOS(Windows/Mac/Linux)に対応したインストーラーをダウンロードします。インストーラーを実行すれば、数分でn8nが使えるようになります。

    デスクトップ版は「とりあえずn8nを学習したい」「手動で実行するワークフローを作りたい」という方に向いています。定期実行やWebhookトリガーが必要な本格的な業務自動化には、次に紹介するセルフホスト版がおすすめです。

    無料で使う方法③:セルフホスト版

    n8nを最もお得に使う方法が、セルフホスト版です。n8n自体の利用料は無料で、サーバー代のみで運用できます。

    セルフホスト版のメリット

    • n8n自体は完全無料
    • 実行回数、ワークフロー数、ユーザー数がすべて無制限
    • 24時間365日自動で動作する
    • データを自社管理できる
    • クラウド版と同等の機能が使える

    セルフホスト版のデメリット

    • サーバーの設定にある程度の技術知識が必要
    • サーバー代が別途必要(月額500〜2,000円程度)
    • セキュリティやアップデートは自己管理
    • 公式サポートが受けられない

    セルフホストの方法は2つ

    セルフホストには「ローカルPC」と「VPS(レンタルサーバー)」の2つの方法があります。

    ローカルPC(完全無料)
    自分のPCにDockerでn8nをインストールする方法です。サーバー代がかからないため完全無料ですが、PCを常時起動しておく必要があります。学習目的や個人利用には十分です。

    VPS(月額500〜2,000円)
    レンタルサーバー(VPS)にn8nをインストールする方法です。サーバー代は月額500〜2,000円程度かかりますが、24時間安定稼働が可能です。本格的な業務利用にはこちらがおすすめです。

    セルフホスト版の詳しい導入手順は、で解説しています。

    料金比較:クラウド版 vs セルフホスト版

    クラウド版とセルフホスト版のコストを比較してみましょう。

    項目 クラウド版(Starter) セルフホスト版(VPS)
    月額料金 約3,300円〜 約500〜2,000円
    年間コスト 約40,000円 約6,000〜24,000円
    実行回数制限 月2,500回 無制限
    ワークフロー数 無制限 無制限
    技術知識 不要 Dockerの基礎知識が必要
    サポート 公式サポートあり コミュニティのみ

    年間で比較すると、セルフホスト版は16,000〜34,000円程度のコスト削減になります。さらに実行回数が無制限なので、大量のワークフローを実行する場合は差がさらに広がります。

    無料で使うならどの方法がおすすめ?

    目的や状況によって、おすすめの方法が異なります。

    「まずはn8nを試してみたい」場合

    クラウド版の14日間無料トライアルがおすすめ

    すぐに使い始められるので、n8nがどんなツールか体験するのに最適です。14日間でn8nの基本操作を学び、自分に合うかどうか判断しましょう。

    「無料で学習・実験したい」場合

    デスクトップ版がおすすめ

    期限なく完全無料で使えるので、じっくり学習したい方に向いています。PCが起動している間だけ動作する点は注意が必要ですが、手動実行のワークフローなら問題ありません。

    「コストを抑えて本格運用したい」場合

    セルフホスト版(VPS)がおすすめ

    月額500〜2,000円で、クラウド版と同等の機能が無制限で使えます。Dockerの基礎知識が必要ですが、一度設定すれば24時間自動で動作します。

    「技術的なことは苦手だが業務で使いたい」場合

    クラウド版の有料プランを検討

    月額約3,300円で、サーバー管理不要・公式サポート付きで使えます。技術的なトラブル対応に時間を取られたくない場合は、コストをかけてもクラウド版を選ぶ価値があります。

    n8nの料金プラン一覧(2025年最新)

    参考として、n8nクラウド版の料金プランを紹介します。

    プラン 月額(年払い) 月額(月払い) 実行回数 特徴
    Starter €20(約3,300円) €24(約4,000円) 2,500回/月 個人・小規模チーム向け
    Pro €50(約8,300円) €60(約10,000円) 10,000回/月 チーム利用向け、管理機能充実
    Enterprise 要問合せ 要問合せ カスタム 大企業向け、専任サポート

    2025年8月の価格改定により、すべてのプランでワークフロー数・ユーザー数・ステップ数が無制限になりました。料金は実行回数ベースで計算されます。

    n8n無料利用の注意点

    無料でn8nを使う際に知っておくべき注意点をまとめます。

    商用利用のルール

    n8nは「フェアコードライセンス」に基づいて提供されています。以下の利用は無料で許可されています。

    • 自社の社内業務目的での利用・改変・運用
    • n8n関連の有償コンサルティング・構築・保守
    • 自社環境へのセットアップ代行

    一方、以下の利用は許可されていません。

    • n8nをホスティングして第三者に課金する
    • n8nをホワイトラベル化して再販する

    自社の業務自動化目的であれば、基本的に無料で商用利用できます。

    セルフホスト版のセキュリティ

    セルフホスト版を使う場合、セキュリティ管理は自己責任になります。以下の対策を行いましょう。

    • サーバーへのアクセス制限を設定する
    • n8nのログインにパスワード認証を設定する
    • 定期的にn8nとサーバーをアップデートする
    • 重要なワークフローはバックアップを取る

    無料トライアル終了後の注意

    クラウド版の14日間無料トライアルは、終了後に自動で有料プランに移行する場合があります。継続利用しない場合は、トライアル期間中にアカウントを解約するか、支払い情報を削除しておきましょう。

    ZapierやMakeとの料金比較

    n8nと競合する自動化ツールとの料金を比較します。

    ツール 無料プラン 有料プラン(月額) セルフホスト
    n8n 14日間トライアル 約3,300円〜 可能(無料)
    Zapier 月100タスク 約3,000円〜 不可
    Make 月1,000オペレーション 約1,500円〜 不可

    一見するとMakeが安く見えますが、複雑なワークフローでは差が縮まります。n8nは「1回のワークフロー実行=1カウント」ですが、Makeは「1つの処理=1オペレーション」なので、10ステップのワークフローを100回実行すると、n8nは100回、Makeは1,000オペレーションとカウントされます。

    また、n8nはセルフホストで完全無料運用が可能な唯一のツールです。長期的に見ると、n8nが最もコストパフォーマンスに優れています。

    よくある質問

    Q. n8nは完全無料で使えますか?

    A. デスクトップ版とセルフホスト版(ローカルPC)は完全無料で使えます。セルフホスト版(VPS)はサーバー代(月額500〜2,000円程度)が必要です。クラウド版は14日間の無料トライアル後、有料プラン(月額約3,300円〜)への移行が必要です。

    Q. 無料トライアル中にクレジットカードは必要ですか?

    A. 登録時に求められる場合がありますが、トライアル期間中は課金されません。継続しない場合は、期間終了前に解約またはカード情報を削除してください。

    Q. セルフホスト版に技術知識は必要ですか?

    A. Dockerの基本的な操作が必要です。コマンドラインに慣れていない方には難しく感じるかもしれませんが、手順通りに進めれば初心者でも構築可能です。YouTubeなどに日本語チュートリアルもあります。

    Q. 無料で使っても商用利用できますか?

    A. はい、自社の業務自動化目的であれば商用利用可能です。ただし、n8nをホスティングして第三者に課金するような利用は許可されていません。

    Q. クラウド版とセルフホスト版、どちらがおすすめですか?

    A. 技術的な設定に抵抗がなく、コストを抑えたいならセルフホスト版がおすすめです。サーバー管理が面倒、すぐに使いたい場合はクラウド版を選びましょう。

    まとめ

    n8nは無料で使える業務自動化ツールです。利用方法によって条件は異なりますが、コストを抑えて使いたい方にも複数の選択肢があります。

    • まず試したい → クラウド版の14日間無料トライアル
    • 無料で学習したい → デスクトップ版(完全無料)
    • コストを抑えて本格運用したい → セルフホスト版(VPS:月額500〜2,000円)
    • 技術的なことは苦手 → クラウド版有料プラン(月額約3,300円〜)

    セルフホスト版なら、年間で16,000〜34,000円のコスト削減が可能です。技術的なハードルはありますが、一度設定してしまえば、クラウド版と同等の機能を低コストで使い続けられます。

    まずはクラウド版のトライアルでn8nを体験し、気に入ったらセルフホスト版への移行を検討するのがおすすめの流れです。

  • 【完全版】n8n VPS構築ガイド|Ubuntu・Docker・SSL設定からセルフホスト本番運用まで

    【完全版】n8n VPS構築ガイド|Ubuntu・Docker・SSL設定からセルフホスト本番運用まで

    n8nをVPSにセルフホストすることで、月額3,000円以上のクラウド版と同等の機能を、月額500〜1,500円程度のコストで運用できます。

    ワークフロー数や実行回数の制限がなく、データを自社管理下に置けるため、セキュリティ面でも優れています。

    この記事では、VPSの選定からUbuntu環境の構築、Docker設定、SSL証明書の取得、独自ドメインでの公開まで、n8nセルフホストの全工程を詳しく解説します。

    セルフホストのメリットとクラウド版との比較

    n8n Cloudとセルフホストの比較

    項目 n8n Cloud セルフホスト(VPS)
    月額費用 €20〜(約3,000〜4,500円) VPS代のみ(500〜1,500円)
    ワークフロー数 プランにより制限あり 無制限
    実行回数 プランにより制限あり 無制限
    データ管理 Anthropic社サーバー 自社管理
    カスタマイズ 制限あり 完全に自由
    運用負担 なし 自己責任
    サポート 公式サポートあり コミュニティのみ

    セルフホストが向いているケース

    • 月額コストを抑えたい
    • 大量のワークフローを実行する
    • 機密データを外部に置きたくない
    • カスタムノードを使用したい
    • サーバー管理の基礎知識がある

    VPSの選定とスペック要件

    n8nの最低システム要件

    項目 最低要件 推奨スペック
    CPU 1 vCPU 2 vCPU以上
    メモリ 2GB RAM 4GB以上
    ストレージ 10GB SSD 20GB以上(NVMe推奨)
    OS Ubuntu 20.04+ Ubuntu 22.04 / 24.04

    おすすめVPSプロバイダー

    国内サービス

    サービス 最小プラン 月額料金 特徴
    XServer VPS 2GB 830円〜 国内最安クラス、無料枠あり
    ConoHa VPS 1GB 682円〜 時間課金対応、管理画面が使いやすい
    さくらのVPS 1GB 880円〜 安定性、サポート充実

    海外サービス

    サービス 最小プラン 月額料金 特徴
    DigitalOcean 1GB $6〜 n8nテンプレートあり
    Vultr 1GB $5〜 東京リージョンあり
    Hetzner 2GB €4〜 コスパ最強

    Ubuntu環境の初期セットアップ

    VPSを契約したら、まずUbuntu環境の初期設定を行います。

    Step 1:SSHでサーバーに接続


    ssh root@your_server_ip

    Step 2:システムの更新


    # パッケージリストの更新
    sudo apt update

    # インストール済みパッケージの更新
    sudo apt upgrade -y

    Step 3:新規ユーザーの作成(推奨)

    rootでの運用は避け、一般ユーザーを作成します。


    # 新規ユーザー作成
    adduser n8nadmin

    # sudo権限を付与
    usermod -aG sudo n8nadmin

    # 新ユーザーでログイン確認
    su – n8nadmin

    Step 4:ファイアウォールの設定


    # UFWの有効化
    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw allow 5678/tcp
    sudo ufw enable

    # 設定確認
    sudo ufw status

    Step 5:タイムゾーンの設定


    sudo timedatectl set-timezone Asia/Tokyo

    Dockerのインストール

    n8nの運用にはDockerを使用することを強く推奨します。

    Docker Engineのインストール


    # 公式スクリプトでインストール
    curl -fsSL https://get.docker.com | bash

    # 一般ユーザーでDockerを実行できるようにする
    sudo usermod -aG docker $USER

    # 設定を反映(再ログインが必要)
    newgrp docker

    # 動作確認
    docker –version

    Docker Composeのインストール


    # Docker Compose v2(プラグイン版)
    sudo apt install docker-compose-plugin -y

    # 動作確認
    docker compose version

    n8nのインストールと起動

    Step 1:作業ディレクトリの作成


    mkdir -p ~/n8n-docker
    cd ~/n8n-docker

    Step 2:環境変数ファイルの作成


    nano .env

    以下の内容を入力:


    # n8n設定
    N8N_BASIC_AUTH_ACTIVE=true
    N8N_BASIC_AUTH_USER=admin
    N8N_BASIC_AUTH_PASSWORD=your_secure_password

    # サーバー設定
    N8N_HOST=your_server_ip
    N8N_PORT=5678
    N8N_PROTOCOL=http
    WEBHOOK_URL=http://your_server_ip:5678/

    # タイムゾーン
    TZ=Asia/Tokyo

    # 暗号化キー(32文字以上のランダム文字列)
    N8N_ENCRYPTION_KEY=your_32_char_encryption_key_here

    Step 3:docker-compose.ymlの作成


    nano docker-compose.yml

    以下の内容を入力:


    version: "3.8"

    services:
    n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: always
    ports:
    – “5678:5678”
    environment:
    – N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
    – N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
    – N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
    – N8N_HOST=${N8N_HOST}
    – N8N_PORT=${N8N_PORT}
    – N8N_PROTOCOL=${N8N_PROTOCOL}
    – WEBHOOK_URL=${WEBHOOK_URL}
    – GENERIC_TIMEZONE=${TZ}
    – TZ=${TZ}
    – N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
    – N8N_SECURE_COOKIE=false
    volumes:
    – n8n_data:/home/node/.n8n

    volumes:
    n8n_data:

    Step 4:n8nの起動


    # コンテナを起動
    docker compose up -d

    # ログ確認
    docker compose logs -f n8n

    Step 5:動作確認

    ブラウザで以下にアクセス:


    http://your_server_ip:5678

    .envで設定したユーザー名とパスワードでログインします。

    独自ドメインとSSL証明書の設定

    本番運用では、独自ドメインとHTTPS接続が必須です。

    Step 1:ドメインのDNS設定

    ドメインのDNS管理画面で、Aレコードを追加します。


    Type: A
    Name: n8n(またはサブドメイン)
    Value: your_server_ip
    TTL: 3600

    Step 2:Nginxのインストール


    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx

    Step 3:Nginx設定ファイルの作成


    sudo nano /etc/nginx/sites-available/n8n

    以下の内容を入力(n8n.yourdomain.comを自分のドメインに置換):


    server {
    listen 80;
    server_name n8n.yourdomain.com;

    location / {
    proxy_pass http://localhost:5678;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header 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 off;
    proxy_buffering off;
    proxy_cache off;
    }
    }

    Step 4:設定の有効化


    # シンボリックリンクの作成
    sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

    # 設定テスト
    sudo nginx -t

    # Nginx再起動
    sudo systemctl reload nginx

    Step 5:SSL証明書の取得(Let’s Encrypt)


    # Certbotのインストール
    sudo apt install certbot python3-certbot-nginx -y

    # SSL証明書の取得と設定
    sudo certbot –nginx -d n8n.yourdomain.com

    メールアドレスの入力と利用規約への同意が求められます。

    Step 6:環境変数の更新

    SSL設定後、.envファイルを更新します。


    N8N_HOST=n8n.yourdomain.com
    N8N_PROTOCOL=https
    WEBHOOK_URL=https://n8n.yourdomain.com/

    docker-compose.ymlも更新:


    environment:
    # ...他の設定
    - N8N_SECURE_COOKIE=true

    Step 7:n8nの再起動


    docker compose down
    docker compose up -d

    これで https://n8n.yourdomain.com でアクセスできます。

    PostgreSQLの追加(本番向け)

    本番運用では、SQLiteではなくPostgreSQLを使用します。

    docker-compose.yml(PostgreSQL版)


    version: "3.8"

    services:
    postgres:
    image: postgres:15-alpine
    container_name: n8n-postgres
    restart: always
    environment:
    – POSTGRES_USER=n8n
    – POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    – POSTGRES_DB=n8n
    volumes:
    – postgres_data:/var/lib/postgresql/data
    healthcheck:
    test: [‘CMD-SHELL’, ‘pg_isready -U n8n’]
    interval: 10s
    timeout: 5s
    retries: 5

    n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: always
    ports:
    – “5678:5678”
    environment:
    – DB_TYPE=postgresdb
    – DB_POSTGRESDB_HOST=postgres
    – DB_POSTGRESDB_PORT=5432
    – DB_POSTGRESDB_DATABASE=n8n
    – DB_POSTGRESDB_USER=n8n
    – DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    – N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
    – N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
    – N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
    – N8N_HOST=${N8N_HOST}
    – N8N_PORT=${N8N_PORT}
    – N8N_PROTOCOL=${N8N_PROTOCOL}
    – WEBHOOK_URL=${WEBHOOK_URL}
    – GENERIC_TIMEZONE=${TZ}
    – TZ=${TZ}
    – N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
    – N8N_SECURE_COOKIE=true
    volumes:
    – n8n_data:/home/node/.n8n
    depends_on:
    postgres:
    condition: service_healthy

    volumes:
    postgres_data:
    n8n_data:

    .envにPostgreSQLのパスワードを追加:


    POSTGRES_PASSWORD=your_db_password_here

    n8nのアップデート方法

    Dockerイメージの更新


    # 作業ディレクトリに移動
    cd ~/n8n-docker

    # 最新イメージをプル
    docker compose pull

    # コンテナを再作成
    docker compose up -d

    # 古いイメージを削除
    docker image prune -f

    アップデート前の確認事項

    • リリースノートで破壊的変更を確認
    • バックアップを取得
    • テスト環境で動作確認(可能であれば)

    バックアップの設定

    自動バックアップスクリプト


    nano ~/n8n-backup.sh


    #!/bin/bash
    BACKUP_DIR="/home/n8nadmin/backups"
    DATE=$(date +%Y%m%d_%H%M%S)

    # ディレクトリ作成
    mkdir -p ${BACKUP_DIR}

    # PostgreSQLバックアップ(PostgreSQL使用時)
    docker exec n8n-postgres pg_dump -U n8n -d n8n | gzip > ${BACKUP_DIR}/n8n_db_${DATE}.sql.gz

    # n8nデータボリュームのバックアップ
    docker run –rm -v n8n-docker_n8n_data:/data -v ${BACKUP_DIR}:/backup alpine
    tar czf /backup/n8n_data_${DATE}.tar.gz -C /data .

    # 7日より古いバックアップを削除
    find ${BACKUP_DIR} -name “*.gz” -mtime +7 -delete

    echo “Backup completed: ${DATE}”


    # 実行権限を付与
    chmod +x ~/n8n-backup.sh

    cronで自動実行


    crontab -e

    以下を追加:


    0 3 * * * /home/n8nadmin/n8n-backup.sh >> /home/n8nadmin/backup.log 2>&1

    セキュリティ強化

    SSH鍵認証の設定


    # ローカルPCで鍵を生成
    ssh-keygen -t ed25519 -C "your_email@example.com"

    # 公開鍵をサーバーにコピー
    ssh-copy-id n8nadmin@your_server_ip

    # パスワード認証を無効化
    sudo nano /etc/ssh/sshd_config
    # PasswordAuthentication no に変更

    sudo systemctl restart sshd

    Fail2banの導入


    sudo apt install fail2ban -y
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban

    自動セキュリティ更新


    sudo apt install unattended-upgrades -y
    sudo dpkg-reconfigure -plow unattended-upgrades

    トラブルシューティング

    よくある問題と解決方法

    問題 原因 解決方法
    ブラウザでアクセスできない ファイアウォール設定 UFWでポート5678を許可
    Webhookが動作しない WEBHOOK_URLの設定ミス 外部からアクセス可能なURLを設定
    認証情報が保存されない ボリュームマウントの問題 docker-compose.ymlのvolumes設定を確認
    SSL証明書エラー DNS設定の反映待ち 数分〜数時間待って再試行
    コンテナが再起動を繰り返す 設定エラー docker compose logs で確認

    ログの確認方法


    # n8nのログ
    docker compose logs -f n8n

    # Nginxのログ
    sudo tail -f /var/log/nginx/error.log

    # システムログ
    sudo journalctl -u docker -f

    よくある質問(FAQ)

    Q. VPSのスペックはどれくらい必要ですか?

    A. 小〜中規模のワークフローであれば、2GB RAM / 1 vCPUで十分です。複雑なワークフローや同時実行が多い場合は、4GB RAM以上を推奨します。

    Q. セルフホストでも公式サポートは受けられますか?

    A. Community版(セルフホスト)では公式サポートはありません。コミュニティフォーラムやGitHubのIssueを活用してください。Enterprise版を契約すれば公式サポートが受けられます。

    Q. SQLiteのままでも問題ないですか?

    A. 個人利用や小規模な使用であれば問題ありません。ただし、Webhookを多数受け付ける場合や、本番運用ではPostgreSQLを推奨します。

    Q. アップデートでデータは消えませんか?

    A. Dockerボリュームを使用していれば、イメージの更新でデータは消えません。ただし、念のためアップデート前にバックアップを取得してください。

    Q. 複数人で使用できますか?

    A. Community版では複数ユーザーの管理機能は制限されています。チームでの利用にはEnterprise版の検討をおすすめします。

    まとめ

    この記事では、n8nのVPSセルフホスト構築を解説しました。

    構築の流れ

    1. VPSの契約(2GB RAM以上推奨)
    2. Ubuntu環境の初期設定
    3. Docker / Docker Composeのインストール
    4. n8nのdocker-compose.yml作成と起動
    5. 独自ドメインとSSL証明書の設定
    6. PostgreSQLの追加(本番向け)
    7. バックアップの自動化

    本番運用のポイント

    • N8N_ENCRYPTION_KEYを必ず設定・バックアップ
    • SSL証明書でHTTPS接続を有効化
    • PostgreSQLでデータベースを永続化
    • 定期的なバックアップを自動化
    • セキュリティ設定(SSH鍵認証、Fail2ban)

    コスト比較

    • n8n Cloud:月額€20〜(約3,000〜4,500円)
    • セルフホスト:月額500〜1,500円(VPS代のみ)

    セルフホストにより、年間で2〜4万円のコスト削減が可能です。サーバー管理の手間はありますが、一度構築すれば安定して運用できます。ぜひチャレンジしてみてください。