n8n – Docker hostingをためしてみる

はじめに

n8nのこちらのページに従って、環境構築してみます。
Dockerを使ってn8nをインストールする利点は、以下のようにまとめられます。

  • 環境の統一性: OSの違いによる互換性の問題をなくし、クリーンで一貫した環境にn8nをインストールできます。
  • 簡単なセットアップ: データベースなどの設定が簡単になります。
  • 高いポータビリティ: 別のサーバーや環境への移行がスムーズに行えます。

また、Docker Composeを使うことで、より簡単にn8nをセットアップできます。

Docker hubのn8nio/n8nページも参考にする。

Docker volumeの作成

% docker volume create n8n_data

% docker volume inspect n8n_data
[
    {
        "CreatedAt": "2025-08-09T06:07:11Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/n8n_data/_data",
        "Name": "n8n_data",
        "Options": null,
        "Scope": "local"
    }
]

コンテナの起動

  • -it: 対話型でターミナルを割り当てます。
  • --rm: コンテナ停止時に自動削除します。
  • --name n8n: コンテナ名を n8n に設定します。
  • -p 5678:5678: ホストの 5678 ポートをコンテナの 5678 ポートにマッピングします。
  • -v n8n_data:/home/node/.n8n: Docker ボリューム n8n_data をコンテナ内の /home/node/.n8n にマウントします(データ永続化)。
  • docker.n8n.io/n8nio/n8n: 使用するイメージ名です。
% docker run -it \
--rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

ダッシュボードの表示

http://localhost:5678 にアクセスし、ユーザー登録すると、ローカルでn8nにアクセスすることができる。

ワークフローの作成

永続化設定

また、永続化する場合は、postgresqlが推奨されており、以下で設定できる

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
 -e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
 -e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
 -e DB_POSTGRESDB_USER=<POSTGRES_USER> \
 -e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
 -e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

以下のテーブルが自動で生成される

n8ndevdb=> \d
                        List of relations
 Schema |               Name                |   Type   |  Owner   
--------+-----------------------------------+----------+----------
 n8ndev | annotation_tag_entity             | table    | s3labdev
 n8ndev | auth_identity                     | table    | s3labdev
 n8ndev | auth_provider_sync_history        | table    | s3labdev
 n8ndev | auth_provider_sync_history_id_seq | sequence | s3labdev
 n8ndev | credentials_entity                | table    | s3labdev
 n8ndev | event_destinations                | table    | s3labdev
 n8ndev | execution_annotation_tags         | table    | s3labdev
 n8ndev | execution_annotations             | table    | s3labdev
 n8ndev | execution_annotations_id_seq      | sequence | s3labdev
 n8ndev | execution_data                    | table    | s3labdev
 n8ndev | execution_entity                  | table    | s3labdev
 n8ndev | execution_entity_id_seq           | sequence | s3labdev
 n8ndev | execution_metadata                | table    | s3labdev
 n8ndev | execution_metadata_temp_id_seq    | sequence | s3labdev
 n8ndev | folder                            | table    | s3labdev
 n8ndev | folder_tag                        | table    | s3labdev
 n8ndev | insights_by_period                | table    | s3labdev
 n8ndev | insights_by_period_id_seq         | sequence | s3labdev
 n8ndev | insights_metadata                 | table    | s3labdev
 n8ndev | insights_metadata_metaId_seq      | sequence | s3labdev
 n8ndev | insights_raw                      | table    | s3labdev
 n8ndev | insights_raw_id_seq               | sequence | s3labdev
 n8ndev | installed_nodes                   | table    | s3labdev
 n8ndev | installed_packages                | table    | s3labdev
 n8ndev | invalid_auth_token                | table    | s3labdev
 n8ndev | migrations                        | table    | s3labdev
 n8ndev | migrations_id_seq                 | sequence | s3labdev
 n8ndev | processed_data                    | table    | s3labdev
 n8ndev | project                           | table    | s3labdev
 n8ndev | project_relation                  | table    | s3labdev
 n8ndev | settings                          | table    | s3labdev
 n8ndev | shared_credentials                | table    | s3labdev
 n8ndev | shared_workflow                   | table    | s3labdev
 n8ndev | tag_entity                        | table    | s3labdev
 n8ndev | test_case_execution               | table    | s3labdev
 n8ndev | test_run                          | table    | s3labdev
 n8ndev | user                              | table    | s3labdev
 n8ndev | user_api_keys                     | table    | s3labdev
 n8ndev | variables                         | table    | s3labdev
 n8ndev | webhook_entity                    | table    | s3labdev
 n8ndev | workflow_entity                   | table    | s3labdev
 n8ndev | workflow_history                  | table    | s3labdev
 n8ndev | workflow_statistics               | table    | s3labdev
 n8ndev | workflows_tags                    | table    | s3labdev
(44 rows)
  • credentials_entity: n8nが外部サービスへの接続情報(クレデンシャル)を保存するために使われる

接続情報の暗号化には、N8N_ENCRYPTION_KEYが使用される、指定しない場合は、自動で生成される。DBをバックアップし、このキーを保存しておく必要がある。キーは以下で確認できる。

% docker exec -it n8n /bin/sh

% cat .n8n/config
{
        "encryptionKey": "xxxxxxxxxxx"
}

関連記事

カテゴリー

アーカイブ

Lang »