ownCloudをnginxのreverse proxy越しにセットアップ



ownCloudサーバーを、nginxのリバースプロキシを使って ~ /owncloud/ ディレクトリから利用できるようにしてみます。

ownCloudは、VirtualBoxアプライアンス版を使用しました。通常通りセットアップして、LANから問題なく使用できるようにしてある前提で進めていきます。

環境

nginxサーバー
IPアドレス
172.16.0.30
アドレス
my-home-server.ddns.net(仮)
OS
Ubuntu Server 18.04.2 (64bit)
nginx
1.14.0 (Ubuntu)

ownCloudサーバー
IPアドレス
172.16.0.40
アドレス
my-home-server.ddns.net/owncloud/(仮)
OS
Debian 9.8 (64bit)
ownCloud (Appliance)
10.2.1

SSL (TLS, https) の設定

以前の記事の通り設定し、アドレスと証明書を取得しておきます。

DDNSのアドレスでSSL証明書をLet’s Encryptから取得する
https://www.uchidigi.com/2019/07/ddns-ssl-certificate.html

    ownCloudの設定

    ownCloudサーバーにadministratorアカウントでログインし、以下の設定ファイルを書き換えます。

    /var/lib/univention-appcenter/apps/owncloud/conf/config.php

    nanoで編集する場合のコマンドはこう

    sudo nano /var/lib/univention-appcenter/apps/owncloud/conf/config.php

    以下を書き足して上書き保存する。

    'trusted_domains' =>
    array (
      0 => 'localhost',
      1 => 'my-home-server.ddns.net',
      2 => '172.16.0.40',
    ),
    'trusted_proxies' => ['172.16.0.30'],
    'overwritehost' => "my-home-server.ddns.net",
    'overwriteprotocol' => "https",
    'overwritewebroot' => "/owncloud",
    'overwritecondaddr' => "^172\.16\.0\.30$",

    nginxの設定

    nginx.confを次のように編集しました。

    /etc/nginx/conf.d/server.conf

    server {
      # SSLをon
      ssl on;
      listen 443;
      server_name my-home-server.ddns.net;
      root /var/www/html;

      # SSL設定
      ssl_certificate     /etc/letsencrypt/live/my-home-server.ddns.net/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/my-home-server.ddns.net/privkey.pem;
      
      # 今回の設定
      location /owncloud/ {
        add_header Content-Security-Policy "unsafe-inline";
        max_client_body_size 20000m;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://172.16.0.40/owncloud/;
      }

      # その他のロケーション設定など
      location /edcb/ {
        # 省略
      }
    }



    Content-Security-Policyを設定しないとファイルのダウンロードが失敗します。
    またmax_client_body_sizeを設定しないと、1MB以上のファイルをアップロードできませんでした。

    まとめ

    以上の設定をすることで、無事nginx越しにownCloudを使えるようになりました。この設定にたどり着くまでがなかなかに大変で、様々な設定を試して試行錯誤した結果こうなりました。今の所安定して稼働しているので大丈夫なんだと思います・・・。

    コメント