1. はじめに
前回は、PVE 上に Nextcloud AIO を構築し、管理者ユーザーで Nextcloud Talk の文字メッセージ送受信 を確認しました。
第4回となる今回は、Cloudflare Tunnel 側の設定と、実際にハマった接続設定を整理します。
この記事では、Cloudflare Tunnel の Public Hostname 設定と、Nextcloud AIO への疎通確認を扱います。
2. 今回の構成
第3回で構築した Nextcloud AIO に対して、Cloudflare Tunnel で外部からアクセスできるようにします。
構成は以下です。
[外部ブラウザ]
↓
[Cloudflare Tunnel]
↓
[Nextcloud 用 LXC]
↓
[Nextcloud AIO Mastercontainer : 8080]
ポイントは、Cloudflare Tunnel の接続先です。
実際の構築では、Nextcloud AIO マスターコンテナの 8080 番ポート に対してルーティングしました。
3. 記事公開時に伏せる情報
Cloudflare 周りの記事は、特に機密情報の扱いに注意します。
| 種類 | 記事内の表記例 |
|---|---|
| ドメイン | cloud.example.com |
| Nextcloud LXC の IP | <NEXTCLOUD_LXC_IP> |
| Cloudflare Tunnel Token | <CLOUDFLARE_TUNNEL_TOKEN> |
| 管理者ユーザー | <ADMIN_USER> |
スクリーンショットを掲載する場合、以下は必ずマスクします。
- 実ドメイン
- グローバル IP
- プライベート IP
- メールアドレス
- Cloudflare Tunnel Token
- Tunnel ID
- 管理者ユーザー名
- QR コード
Cloudflare Tunnel Token は漏らしてはいけません。
記事・GitHub・スクリーンショットのいずれにも、そのまま載せないようにします。
4. Cloudflare Tunnel を作成する
Cloudflare Zero Trust の管理画面で Tunnel を作成します。
Networks -> Tunnels -> Create a tunnel
Tunnel 名は任意です。
記事中では、実際の名前ではなく以下のように表記します。
nextcloud-tunnel
Cloudflare が提示する cloudflared の起動手順に従って、自宅側の環境から Tunnel を接続します。
Token を使う場合、記事中では以下のように伏せます。
<CLOUDFLARE_TUNNEL_TOKEN>
5. Public Hostname の設定
Tunnel 作成後、Public Hostname を追加します。
今回の実構築で重要だった設定は以下です。
| 項目 | 設定値 |
|---|---|
| Subdomain | cloud |
| Domain | example.com |
| Type | HTTPS |
| URL | https://<NEXTCLOUD_LXC_IP>:8080 |
| No TLS Verify | Enabled |
公開 URL は以下になります。
https://cloud.example.com
5.1 Type は HTTPS
Nextcloud AIO の初期画面は、自己署名証明書を使った HTTPS で待ち受けています。
そのため、Cloudflare 側の Type は HTTP ではなく HTTPS にしました。
Type: HTTPS
5.2 URL は 8080 番ポート
実際の構築では、Cloudflare Tunnel の接続先を Nextcloud AIO マスターコンテナの 8080 番に向けました。
URL: https://<NEXTCLOUD_LXC_IP>:8080
5.3 No TLS Verify を有効化
AIO の初期画面は自己署名証明書で待ち受けているため、Cloudflare 側で証明書検証に失敗します。
そのため、Cloudflare 側で以下を有効化しました。
No TLS Verify: Enabled
これにより、Cloudflare Tunnel 経由で AIO 初期画面へ到達できるようになりました。
6. Cloudflare Tunnel 経由で AIO 初期画面を確認する
Public Hostname を設定したあと、ブラウザで以下へアクセスします。
https://cloud.example.com
Nextcloud AIO の初期画面が表示されれば、Tunnel 経由の疎通は成功です。
この時点で確認できたことは以下です。
- 自宅ルーターのポート開放なしでアクセスできる
- Cloudflare Tunnel 経由で AIO 初期画面に到達できる
-
https://<NEXTCLOUD_LXC_IP>:8080へ Tunnel 経由で到達できる
7. AIO の初期設定を進める
AIO 初期画面に表示されたパスフレーズを使い、AIO 管理画面へログインします。
その後、画面の案内に従って Nextcloud の初期設定を進めます。
ドメイン入力欄には、Cloudflare 側で設定した公開ホスト名を入力します。
cloud.example.com
記事では、実際のドメインをそのまま出さない場合、cloud.example.com のようなサンプル表記に置き換えます。
8. AIO のコンテナ選択
AIO のコンテナ選択画面では、今回使う範囲に合わせて必要なものを選択します。
今回の目的は Talk の文字チャットなので、以下のように整理しました。
| 機能 | 扱い |
|---|---|
| Nextcloud 本体 | 使用 |
| Database | 使用 |
| Redis | 使用 |
| Talk | 使用 |
| Collabora | 使用しない |
| OnlyOffice | 使用しない |
| Fulltextsearch | 使用しない |
| Imaginary | 使用しない |
| Talk High Performance Backend | 使用しない |
| TURN Server | 使用しない |
ここでは、AIO の GUI で必要なものだけを選択します。
9. Nextcloud へログインする
AIO の初期設定とコンテナ起動が完了したら、公開 URL へアクセスします。
https://cloud.example.com
管理者ユーザーでログインします。
記事中では、管理者ユーザー名は以下のように伏せます。
<ADMIN_USER>
この段階で確認したことは以下です。
- Cloudflare Tunnel 経由で Nextcloud へアクセスできる
- 管理者ユーザーでログインできる
- Nextcloud の画面を表示できる
10. Talk の文字メッセージ確認
Nextcloud にログイン後、Talk を開きます。
確認したことは以下です。
- Talk を開ける
- 会話を作成できる
- 文字メッセージを送信できる
- メッセージが表示される
この確認により、Cloudflare Tunnel 経由でアクセスした Nextcloud 上で、Talk の文字チャットが動作することを確認しました。
11. ハマりどころ
11.1 Cloudflare Tunnel の接続先
Cloudflare Tunnel の接続先で重要だったのは、プロトコルとポートです。
実際に使った設定は以下です。
Type: HTTPS
URL: https://<NEXTCLOUD_LXC_IP>:8080
No TLS Verify: Enabled
11.2 8080 番は AIO マスターコンテナの初期画面
AIO の初期設定では、AIO マスターコンテナの 8080 番へアクセスします。
https://<NEXTCLOUD_LXC_IP>:8080
この画面は自己署名証明書で待ち受けるため、Cloudflare 側では No TLS Verify が必要でした。
11.3 AIO 管理画面と Nextcloud 本体を混同しない
AIO 管理画面と Nextcloud 本体は役割が異なります。
AIO 管理画面:
https://<NEXTCLOUD_LXC_IP>:8080
公開 URL:
https://cloud.example.com
構築中は、どの画面に接続しているのかを意識しておく必要があります。
12. 実施結果
今回、記事として扱った内容は以下です。
[Cloudflare Tunnel]
- Public Hostname を設定
- Type: HTTPS
- URL: https://<NEXTCLOUD_LXC_IP>:8080
- No TLS Verify: Enabled
- AIO 初期画面へ疎通
[Nextcloud AIO]
- AIO 初期設定を実施
- GUI で必要なコンテナを選択
- Nextcloud を起動
[Nextcloud Talk]
- 管理者ユーザーでログイン
- Talk の文字メッセージ送受信を確認
13. まとめ
今回は、Cloudflare Tunnel の Public Hostname 設定と、Nextcloud AIO への疎通確認を整理しました。
重要だったのは、Cloudflare Tunnel の接続先です。
今回の環境では、以下の設定で AIO 初期画面へ到達できました。
Type: HTTPS
URL: https://<NEXTCLOUD_LXC_IP>:8080
No TLS Verify: Enabled
その後、AIO の GUI で必要なコンテナを選択し、Nextcloud を起動しました。
最終的に、Cloudflare Tunnel 経由で Nextcloud にログインし、管理者ユーザーで Talk の文字メッセージ送受信を確認できました。
これで、ポート開放なしで Nextcloud Talk の文字チャットを動かすところまで確認できました。