はじめに
Synology NASで「n8n」環境を構築し、前回までの手順でローカル環境での動作まで確認できました。 しかし、いざ外部(インターネット)からアクセスしようとした際に、大きな壁に直面しました。
「自宅の回線(v6プラス/MAP-E)では、ポート開放が自由に行えない」
これでは、外出先からのアクセスや、Webhook(LINE Botなど)の受信ができません。 そこで今回は、ポート開放を行わずに安全に外部アクセスを実現する 「Cloudflare Tunnel」 の導入手順を解説します。
特に今回は、ブラウザ(GUI)からの設定で発生しやすい「クレジットカード登録エラー」等のトラブルを回避するため、コマンドラインツール(CLI)を用いた、より確実で安定した設定方法 をご紹介します。
Cloudflare Tunnelのメリット
通常、外部アクセスにはルーターのポート開放が必要ですが、Cloudflare Tunnelを使用すると以下のメリットがあります。
ポート開放不要: NASからCloudflareへ「トンネル」接続を行うため、ルーター設定の変更が不要。
MAP-E/DS-Lite対応: グローバルIPが共有される環境でも問題なく動作。
高セキュリティ: 自宅IPを隠蔽でき、通信は暗号化されます。
※利用規約について Cloudflare Zero Trust(Tunnel)のFreeプランは、個人のWebアプリケーション(n8nなど)へのアクセス手段として利用可能です。ただし、CDNとしての本来の用途を逸脱するような大容量ファイルの配信等は禁止されています。一般的なAPI連携や管理画面へのアクセスであれば問題ありません。
設定手順:CLIによるトークン発行
Cloudflare Zero Trustのダッシュボード(GUI)からの設定は手軽ですが、支払い情報の認証などで躓くケースがあります。 そこで、PC上で公式ツール cloudflared を実行し、認証トークンを発行する方法を採用します。
1. 準備
独自ドメイン: CloudflareでDNS管理されている状態であること。
Cloudflareアカウント: 無料プランでOK。
作業用PC: Windows/Macなど。今回はWindowsを使用。
2. PCでの認証作業
まず、Cloudflare公式サイトから cloudflared の実行ファイル(Windowsなら .exe)をダウンロードします。 セキュリティソフトに検知される場合がありますが、公式ツールですので許可してダウンロードします。
PowerShell(またはターミナル)を開き、以下の手順でコマンドを実行します。
powershell
# 1. Cloudflareへのログイン(ブラウザ認証)
.\cloudflared.exe tunnel login
# 2. トンネルの作成(名前は任意。例: n8n-synology)
.\cloudflared.exe tunnel create n8n-synology
# 3. DNSレコードの登録(n8n.mydomain.com へのアクセスをこのトンネルへ向ける)
.\cloudflared.exe tunnel route dns n8n-synology n8n.mydomain.com
3. トークンの取得
Synology側で接続を行うための「認証トークン」を表示させます。
powershell
.\cloudflared.exe tunnel token n8n-synology
画面に eyJh... から始まる長い文字列が表示されます。これが認証キーとなりますので、控えておきます。
Settings on Synology NAS (Container Manager)
ここからはSynology NAS上での設定です。NAS内に「トンネルの出入り口」となるコンテナを立てます。
1. 設定ファイル config.yml の作成
PC上でテキストエディタを開き、config.yml というファイルを作成します。 これは「トンネルから来た通信を、NAS内のどこ(n8n)に転送するか」を定義するファイルです。
yaml
tunnel: (先ほど作成したトンネルのUUID)
credentials-file: /etc/cloudflared/cert.json # コンテナ内パス(そのままでOK)
ingress:
# ドメインへのアクセスを、NAS内のn8nコンテナへ転送
- hostname: n8n.mydomain.com
service: http://192.168.1.x:ポート番号
# それ以外は404を返す
- service: http_status:404
【重要:IPアドレスとポート番号】 service の部分には、Synology NASのローカルIPアドレスと、n8nコンテナのポート番号を指定します。 ※ポート番号については後述のトラブルシューティングを参照してください。
作成した config.yml は、File Stationを使ってNAS上の適当なフォルダ(例: /docker/cloudflared/)にアップロードしておきます。
2. コンテナの作成
Synology Container Managerで、cloudflare/cloudflared イメージを使用してコンテナを作成します。
ボリューム設定:
NAS上の config.yml → コンテナの /etc/cloudflared/config.yml にマウント。
環境変数:
TUNNEL_TOKEN: 先ほど取得した長いトークンを入力。
ネットワーク:
「host」モード を選択。(これにより、NASと同じネットワークとして動作し、IPアドレスでの通信がスムーズになります)
実行コマンド:
デフォルト(空欄)または tunnel run。
※もし version 等が入力されていた場合は削除してください。
接続確認とトラブルシューティング
コンテナを起動し、外部(4G回線など)からドメインにアクセスして確認します。
「502 Bad Gateway」が出る場合
Cloudflareまでは接続できていますが、その先のn8nコンテナが見つかっていません。 よくある原因は 「ポート番号の不一致」 です。
Synology Container Managerでn8nを起動する際、ポート設定を「自動」にしていると、本来の 5678 ではなくランダムなポート(例: 32923 など)が割り当てられることがあります。 n8nコンテナの「詳細」→「ポート設定」を確認し、実際に割り当てられているローカルポート番号を config.yml に記述し直して、cloudflaredコンテナを再起動してください。
ここまでのまとめ
これで、ISPの制限に縛られることなく、安全に外部からn8nを利用できる環境が整いました。 CLIツールを利用することで、ブラックボックスになりがちな設定もコントロールしやすく、確実に環境構築が可能です。
イーサネット(Ethernet)とは?:
難しく聞こえますが、要するに 「LANケーブルで物理的に繋ぐこと(有線LAN)」 です。
Synology NASは通常、Wi-FiではなくLANケーブルでルーターに接続します。これにより、24時間安定して動作します。
今回の仕組みのすごいところ:
Cloudflare Tunnelは、NASがインターネットにさえ繋がっていれば、回線の種類を問いません。
マンション備え付けの無料インターネットでも、v6プラスでも、CATVでも、もちろんイーサネット(LANケーブル)接続でも、「外へ出る通信」さえできれば全部OK です。
つまり、あなたの家の環境そのままで導入できるのが最大の魔法なのです。
コラム:セキュリティは大丈夫?(ポート開放との違い)
「外部からアクセスできるようにするなんて、セキュリティ的に危なくないの?」と心配になる方もいるかもしれません。 実は、Cloudflare Tunnelは 「従来のポート開放(ルーターの設定変更)よりも圧倒的に安全」 と言われています。
自宅の「住所(IPアドレス)」がバレない:
従来のやり方だと、「自宅のデジタルな住所」がインターネット上に公開されてしまいます。
Tunnelなら、外部から見えるのは「Cloudflareのサーバー」だけ。自宅の場所は鉄壁の守りで隠蔽されます。
玄関(ポート)を閉めたままでOK:
ルーターに穴を開ける必要がない=不審者が勝手に入ってくる穴が存在しません。
n8nへのアクセスは、必ずCloudflareという「検問」を通ったものだけが届く仕組みになります。
DDoS攻撃などの防御:
世界最強クラスのセキュリティ企業であるCloudflareが、不正な攻撃を自動で防いでくれます。
つまり、「自宅に直結するドアを作る」のではなく、「警備員付きの専用地下トンネルを掘る」 イメージです。安心して使ってください。