はじめに
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"
}