おうちLAN内のNextcloudサーバをSSL自動更新のCaddyでホスティングするには

先日、Caddyによるリバースプロキシサーバで、おうちWordPressサイトをSSL化してインターネットからアクセス可能に設定してみました。

KubernetesのWordPressをSSL自動更新のCaddyでホスティングするには
まあ、実はKubernetesではないWordPressでも大丈夫なのですが。 オンプレミスで構築したWebサービス、例えばkuber...

CaddyはACME、SSL証明書の自動更新に対応しており、Let’s EncryptまたはZeroSSLの証明書が取得可能です。

WordPressと同じように、Nextcloudサーバが利用できるように。

NextcloudサーバとCaddyを設定してみようと思います。


NextcloudサーバのCaddyホスティング設定例

ホスティング用Caddyサイトの構築

PPPoE接続したRaspberry PiでSSL証明書自動更新付きWebサーバを構築するには
先日、Raspbery Pi 4にRed Hat Enterprise Linux 9互換のLinuxをインストールしまして。 PPP...

こちらの記事の手順で、Raspberry Pi 4でRHEL9互換のRocky Linuxを起動し、Caddyを起動しました。


WordPressサイトと共存するためNextcloudをサブディレクトリ化

おうちKubernetesにデプロイしたWordPressを、CaddyでSSL化してホスティングしています。

KubernetesのWordPressをSSL自動更新のCaddyでホスティングするには
まあ、実はKubernetesではないWordPressでも大丈夫なのですが。 オンプレミスで構築したWebサービス、例えばkuber...

同じホスト名で複数のサービスをホスティングできるように、WordPressは「/blog」というサブディレクトリでアクセスできるようにしました。

Nextcloudサーバは「/nextcloud」でアクセスできるようにしたいと思います。


Nextcloudサーバはsnapで構築

Nextcloudサーバは、Fedora 28にてSnapを使用して構築しました。

Nextcloudサーバ簡単構築 Fedora 28 snap版
コンパクトなPC、Intel NUCにNextcloudサーバをインストールしたいと思います。 何を以て簡単かと申しますと。 ...

Snap版は、設定ファイルを直接編集できず、occコマンドで設定を変更する必要があります。


Nextcloudサーバのホスティング設定

公式のNextcloudリバースプロキシ設定手順

Nextcloudの設定変更は、公式の手順に従って行わせて頂こうと思います。

config/config.phpの下記の設定を変更します。

  1. overwritehost
  2. overwriteprotocol
  3. overwritewebroot
  4. overwritecondaddr
  5. overwrite.cli.url
  6. trusted_proxies

注意が必要な設定は、次の2点でしょうか。

  1. overwritecondaddrは、プロキシのIPアドレスを正規表現で設定
    • .ドットはエスケープして\.にて記述
  2. overwrite.cli.urlにサブディレクトリは入れない
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set overwritehost --value='<ダイナミックDNSホスト名>'
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set overwriteprotocol --value='https'
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set overwritewebroot --value='/nextcloud'
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set overwritecondaddr --value='^<リバースプロキシのIPアドレス正規表現>$'
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set overwrite.cli.url --value='https://<ダイナミックDNSホスト名>'
sudo /var/lib/snapd/snap/bin/nextcloud.occ config:system:set trusted_proxies --value="['<リバースプロキシのIPアドレス>']"


NextcloudのSSL無効化

SSL化はCaddyで行うため、NextcloudのSSLは無効に設定しました。

# SSL無効化設定
sudo /var/lib/snapd/snap/bin/nextcloud.disable-https
# SSL関連覚書
# 自己証明書のSSLを有効にする場合
# sudo /var/lib/snapd/snap/bin/nextcloud.enable-https self-signed

Caddyのリバースプロキシは、SSL自己証明書には対応していません。

このため、自己証明書を使っている場合は無効にする必要があります。


Caddyのリバースプロキシ設定

インターネットからNextcloudサーバへアクセスするため、reverse_proxy設定を追加するのですが。

sudo vi /etc/caddy/Caddyfile

Nextcloudのリバースプロキシは、handle_pathディレクティブを使用しました。

リバースプロキシサーバ側からNextcloudサーバへアクセスするリクエストは、/nextcloudサブディレクトリは不要です。handle_pathでリクエストのプレフィクス(/nextcloud部分)を削除してから、NextcloudサーバのIPアドレス192.168.xxx.12にアクセスする動きになります。

<ダイナミックDNSホスト名> {
    root * /usr/share/caddy
    file_server

    handle_path /nextcloud* {
        reverse_proxy <NextcloudサーバIPアドレス>:80
    }
}

設定変更後、Caddyサービスをリロードして設定変更を反映します。

sudo systemctl reload caddy.service

インターネット側からのアクセス確認

https://<ダイナミックDNSホスト名>/nextcloud

上記のURLへWebブラウザからアクセスすると、確かにおうちLAN内のNextcloudサーバへSSL暗号化しつつインターネットからアクセスできるようになりました。URL欄を見ますと、鍵のマーク、SSL証明書による暗号化が有効になっています。


Nextcloudサーバは、SSL証明書の自動更新に対応していますが。

ダイナミックDNSに登録したホスト名を使用して、複数のサービス、たとえばWordPressと共存させたい場合は、Nextcloudサーバ側のSSL機能は使用できず、リバースプロキシサーバ側のSSL証明書を使用する必要があります。

以上の設定で、リバースプロキシサーバのSSL証明書を自動更新しながら、オンプレミス環境のWordPressやNextcloudサーバに、インターネットから暗号化してアクセスできるようになりました。

アクセス速度に関しましては、NGN網を使用しても、IPv4 PPPoEを使用した場合は最大200Mbpsに制限されていると思います。

まあ、Nextcloudサーバは、のんびり時間をかけてファイルの同期を行っても、実用的には問題はない感じかと思います。

環境は構築できましたので、実際に利用して、実用性を確認してみようと思います。

スポンサーリンク

フォローする

スポンサーリンク