~ MyDNS + Docker + Nginx + Let’s Encrypt で無料・常時SSL運用 ~
🔷 はじめに
この記事では、Raspberry PiやVPS上のUbuntu Serverで、
自分専用の自動化ツール n8n(エヌ・エイト・エヌ) を 「n8n.tairoh.com」 というサブドメインで公開するまでの手順を、
完全無料・安全・干渉なし の形で構築していきます。
💡n8nとは:
ノーコードでワークフローを自動化できるツール。
Google Sheets、Discord、LINE、APIなどを簡単に連携可能。
有料クラウドもあるが、自分でホストすれば無料で使える。
⚙️ 構成概要
全体のイメージ図
インターネット
↓
┌──────────────┐
│ MyDNS(Aレコード)│
│ n8n.tairoh.com → グローバルIP │
└──────────────┘
↓
ルーター
(80/443をUbuntuサーバーへフォワード)
↓
Ubuntu Server (Raspberry Piなど)
├── Nginx(既存Webサーバー)
│ ├─ tairoh.com(メインサイト)
│ └─ n8n.tairoh.com(n8n用リバースプロキシ)
└── Dockerコンテナ
└─ n8n(127.0.0.1:5678で待受)
この構成の特徴
| 項目 | 説明 |
|---|---|
| 💰 完全無料 | VPS不要。既存サーバー上で完結。 |
| 🔒 常時SSL | Let’s Encrypt + Nginxで自動証明書更新。 |
| 🧱 干渉なし | Webサーバー・ACサーバーとはポート分離。 |
| 🔐 安全設計 | n8nは127.0.0.1で動作。外部に直接晒さない。 |
🪄 ステップ① MyDNSでサブドメイン設定
- MyDNSログイン → 「ホスト登録」へ
- 以下のように設定:
| 設定項目 | 値 |
|---|---|
| ホスト名 | n8n |
| タイプ | A |
| 値 | 現在のグローバルIP(例:123.45.67.89) |
| TTL | 300〜600 推奨 |
- 設定反映を確認:
dig +short n8n.tairoh.com A
→ グローバルIPが表示されればOK。
⚠️IPv6を使っている場合はAAAAレコードも登録。ただしIPv6はポート開放が必要になるため、まずIPv4運用から始めるのがおすすめ。
🐳 ステップ② Docker環境を用意
Ubuntu Serverにログインし、DockerとComposeを導入します。
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
📂 ステップ③ n8n用フォルダと暗号鍵を作成
mkdir -p ~/n8n/{data,logs}
cd ~/n8n
openssl rand -hex 32 > ./N8N_ENCRYPTION_KEY
🔑 N8N_ENCRYPTION_KEY はワークフローの暗号化に使われる重要ファイル。
必ずバックアップを取り、紛失しないように注意。
🧰 ステップ④ Docker Composeでn8nを起動
~/n8n/docker-compose.yml を作成:
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
environment:
- N8N_HOST=n8n.tairoh.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.tairoh.com/
- TZ=Asia/Tokyo
- GENERIC_TIMEZONE=Asia/Tokyo
- N8N_SECURE_COOKIE=true
- N8N_ENCRYPTION_KEY_FILE=/home/node/.n8n/N8N_ENCRYPTION_KEY
- NODE_ENV=production
volumes:
- ./data:/home/node/.n8n
- ./N8N_ENCRYPTION_KEY:/home/node/.n8n/N8N_ENCRYPTION_KEY:ro
ports:
- "127.0.0.1:5678:5678"
起動コマンド:
cd ~/n8n
docker compose up -d
動作確認:
docker compose ps
→ 127.0.0.1:5678 でLISTENしていればOK。
🌐 ステップ⑤ Nginxでリバースプロキシ設定
既存のNginxを利用し、n8n専用の仮想ホストを追加します。
sudo nano /etc/nginx/sites-available/n8n.conf
以下を記述:
server {
listen 80;
listen [::]:80;
server_name n8n.tairoh.com;
location / {
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;
client_max_body_size 20m;
proxy_read_timeout 300;
}
}
有効化:
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
💡これで既存の
tairoh.comと並行運用可能。server_nameが異なるため、同じ80/443でも干渉しません。
🔒 ステップ⑥ Let’s EncryptでHTTPS化
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.tairoh.com -m you@example.com --agree-tos --redirect
成功すると自動的にSSL証明書が適用され、https://n8n.tairoh.com でアクセス可能になります。
証明書は自動更新されるため、放置でOKです。
🧑💻 ステップ⑦ n8n初期設定
ブラウザで https://n8n.tairoh.com にアクセスし、
初回ユーザー登録(オーナー)を行います。
ログイン後は:
- 「Settings → Security」で2FAを有効化
- 「Settings → User Management」で他ユーザーを制限
- Webhookを使う場合は
https://n8n.tairoh.com/webhook/...を使用
🛡️ ステップ⑧ セキュリティ強化(任意)
1️⃣ アクセス制限(IPやBasic認証)
/etc/nginx/sites-available/n8n.conf に以下を追加:
location / {
allow 192.168.1.0/24; # 社内LANだけ許可
deny all;
proxy_pass http://127.0.0.1:5678/;
...
}
2️⃣ バックアップ
毎晩データを保存する例:
tar czf /var/backups/n8n-$(date +%F).tgz -C ~/n8n data N8N_ENCRYPTION_KEY
🧱 ステップ⑨ 既存サーバーとの共存確認
| サービス | ポート | 干渉リスク | 対応 |
|---|---|---|---|
| Web (Nginx / tairoh.com) | 80 / 443 | なし | サーバーブロックで分離 |
| n8n | 5678 (内部のみ) | なし | ローカルループバックのみ |
| Assetto Corsa Server | UDP 9600–9700 | なし | UDP別系統なので独立 |
🧩 トラブルシューティング
| 症状 | 原因と対処 |
|---|---|
n8n.tairoh.com が開かない | MyDNSのAレコード未反映。digで確認。 |
| 証明書エラー | certbotのHTTP認証が失敗。ポート80を外部公開する。 |
| Webhookが動かない | WEBHOOK_URL とNginx設定のヘッダを再確認。 |
| 413エラー | client_max_body_size を増やす。 |
🎉 完成!
これで、
✅ https://n8n.tairoh.com
からn8nを常時SSLで安全に利用できるようになりました。
- 既存のtairoh.comやACサーバーとは完全独立
- VPS不要で無料運用
- LAN内でも、外部からでも安定アクセス
- 自動化フロー(Discord連携やGoogle Sheets操作など)を自由に構築可能
🧾 まとめ
| 項目 | 内容 |
|---|---|
| DNS設定 | MyDNSでAレコード登録(n8n.tairoh.com) |
| ポート | 外部→Ubuntu (80/443)、内部n8nは5678のみ |
| Webサーバー | NginxリバースプロキシでHTTPS化 |
| n8n実行環境 | Docker + Compose |
| セキュリティ | HTTPS+ローカル限定+バックアップ |
🚀 応用編(今後やりたい人向け)
- Nginxで
/api/などを別サブドメインに統合 - Cloudflare Tunnelを使ってHTTPS公開(ポート開放不要)
- WebhookでDiscord BotやGoogle Sheets自動更新
🧰 おわりに
この手順で構築すれば、
**「自宅サーバー上で完全無料・常時SSL・安全運用のn8n環境」**が手に入ります。
ルーター・Nginx・Dockerの設定がきちんと分離されているため、
他のサービス(tairoh.com や Assetto Corsaサーバー)に一切干渉せず共存可能です。

コメント