近年、低コード開発ツールの n8n が注目を集めており、制限された無料枠を超えて自前でのホスティングを検討するユーザーが増加しています。従来のコンテナ管理は複雑になりがちですが、Dokploy を利用することでインフラ構築のプロセスを劇的に簡略化できます。
1. サービステンプレートの初期化
Dokploy ダッシュボードより新規サービスを作成します。利用可能なテンプレートリストから n8n を選択し、プロビジョニングを開始してください。
2. インスタンスのデプロイ実行
n8n テンプレートを選択後、即座に `Deploy` ボタンを押下することで、コンテナの起動プロセスが開始されます。
3. カスタムドメインの設定
デフォルトのエンドポイントではなく、独自ドメインへの接続を確立するには、Domains セクションにて設定を行います。
まず、DNS 管理画面(Cloudflare など)にてサブドメイン(例:workflow.example.com)の A レコードまたは CNAME レコードを設定します。続いて Dokploy の Domain 登録欄に同一情報を追加し、環境変数 `N8N_HOST` に割り当てられた値をカスタムドメイン名へ上書きください。
設定完了後、サービスを更新 (Reload) し、指定したドメイン URL よりアクセステストを実施します。
4. 認証機能の有効化
公開状態ではアクセス制御が脆弱になるため、基本認証情報の付与が必要です。Environment 設定項目にて以下のパラメータを追加・定義します。
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=YOUR_ADMIN_NAME
N8N_BASIC_AUTH_PASSWORD=SECURE_PASSPHRASE_01
変更内容は保存後に Reload 操作を行うことで有効化されます。
5. イメージバージョンの更新
デフォルトで指定されているイメージタグはセキュリティパッチ適用が遅れる場合があります。最新の安定版への変更には、Compose ファイル内の画像参照を更新します。
`image: n8nio/n8n:latest` または特定のバージョンタグ(例:`1.98.1`)を指定し、Deploy 処理を再発行することでロールアウトされます。
ブラウザのキャッシュをクリアすることで、最新版の UI にて確認が可能です。
6. クラウドバックアップ基盤の構築
Dokploy 標準の Snapshot 機能を利用する場合、S3 互換ストレージへの宛先登録が必要です。Version 要件を満たしているか確認の上、Destinations 設定よりオブジェクトストレージ(Cloudflare R2 など)との連携を行います。
| 構成要素 | 推奨設定 |
|---|---|
| ストレージプロバイダ | S3 Compatible |
| 認証情報 | AccessKey / SecretKey |
| バケット名 | dokploy-vol-snap |
| リージョン | auto または該当リージョン |
以下のように設定画面より登録を完了させます。
7. スクリプトベースの自律型バックアップ
より柔軟な管理を目的とし、ローカルデータのアーカイブ生成と R2 への転送を自動化するシェルスクリプトを採用します。本手法により、データディレクトリ `/var/lib/dokploy/n8n` の圧縮およびクラウド同期を毎日凌晨 2 時に実行可能です。
前提として、ボリュームマウントパスが既定値である必要があります。変更済みの場合は Compose 定義にて `/home/node/.n8n` 等への永続化を確認してください。
Step 1: rclone ツールの導入と設定
まず、クラウドストレージクライアントとなる rclone をインストールします。
# インストールスクリプトの実行
curl https://rclone.org/install.sh | sudo bash
# 対話形式によるリモート設定
rclone config
# リモート名を入力 → name> r2_backup
# プロバイダ選択 → s3
# 各キー情報を提示 → Access Key, Secret Key
# エンドポイント設定 → https://ACCOUNT_ID.r2.cloudflarestorage.com
接続検証は以下のコマンドで行います。
rclone lsd r2_backup:dokploy-backups
Step 2: バックアップ用シェルスクリプト作成
エディタを開き、次の処理を組み込みます。変数名を変更してオリジナル性と可読性を高めています。
#!/usr/bin/env bash
set -euo pipefail
# パラメータ定義
TARGET_DIR="/var/lib/dokploy/n8n"
BACKUP_ID=$(date +"%Y%m%d_%H%M%S")
ARCHIVE_LOC="/tmp/n8n_archive_${BACKUP_ID}.tar.gz"
CLOUD_DEST="r2_backup:dokploy-backups"
RETENTION_DAYS=7
echo "[INFO] Starting backup process..."
# データ圧縮
tar -czf "${ARCHIVE_LOC}" -C "${TARGET_DIR}" .
# クラウド転送
rclone copy "${ARCHIVE_LOC}" "${CLOUD_DEST}"
# ローカルクリーンアップ(7 日超過分削除)
find /tmp -maxdepth 1 -name 'n8n_archive_*.tar.gz' -mtime +${RETENTION_DAYS} -delete
# クラウドサイドの維持期間ポリシー適用
rclone --min-age ${RETENTION_DAYS}d delete "${CLOUD_DEST}"
echo "[SUCCESS] Backup completed at ${BACKUP_ID}" >> /var/log/n8n_daily.log
スクリプトに実行権限を付与します。
chmod +x /usr/local/bin/n8n_autobackup.sh
Step 3: Cron によるスケジュール登録
システムタイマーに登録し、周期性を保証します。
sudo crontab -e
末尾に以下を追記。
0 2 * * * /usr/local/bin/n8n_autobackup.sh >> /var/log/cron_backup.log 2>&1
Step 4: リストア手順の確認
障害発生時の復旧フローを事前に理解しておくことが重要です。
# ① バックアップファイルの取得
rclone copy r2_backup:dokploy-backups/n8n_archive_YYYYMMDD_HHMMSS.tar.gz /tmp/
# ② 稼働中のコンテナ停止
docker compose stop n8n_service || dokploy stop n8n
# ③ マウント先の全消去と展開
rm -rf /var/lib/dokploy/n8n/*
tar -xzf /tmp/n8n_archive_YYYYMMDD_HHMMSS.tar.gz -C /var/lib/dokploy/n8n
# ④ システム再起動
docker compose up -d n8n_service || dokploy start n8n
このプロセスにより、設定やワークフロー履歴を含めた完全な状態復元が可能となります。
Volume オブジェクトを利用している場合のみ、ソースパスを検出する動的ロジックにスクリプトを適応させても構いません。