Ubuntu Weekly Recipe

第756回ownCloud Infinite Scaleを小スケールデプロイする[VPSデプロイ編]

今回は第754回で紹介したownCloud Infinite Scale(以下oCIS)をVPSにデプロイします。

VPSの準備

今回はoCISをVPSにデプロイするということで、思い出したいのは第751回「イマドキのVPSでUbuntuをセキュアに保つ」です。原則として第751回で解説した内容をVPSに適用済みという前提で進めます。

また、特にドメイン周りは詳しい説明をしていませんが、確実に名前解決できることを確認してください。

追加で行う設定としては、oCISはWebサービスということでポート80と443を開ける必要があります。これは事前に行っておくことをオススメします。UFWを設定したことをすっかり忘れており、80番でも443番でもアクセスできないのはなぜかと悩むことがなくなるからです(体験者談⁠⁠。

UFWでポートを開けるには、次のコマンドを実行してください。

$ sudo ufw allow 80
$ sudo ufw allow 443

oCISをVPSにデプロイする際の注意点

oCISをVPSにデプロイする際は、当然ではあるものの第754回で紹介したローカルデプロイと概ね同じです。/etc/ocis/ocis.envの中身を変えるくらいです。

あとはNginxでリバースプロキシ設定[1]と、Let's EncryptでTLS設定が追加されます。充分に予想の範囲内でしょう。

Let's Encryptの設定

Let's Encryptの設定に関しては、改めて説明するまでもないようでしょうから、軽く説明するだけにします。

Let's Encryptを自動更新するために提供されているCertbotはわりと更新頻度も高いことがあり、Snapパッケージを使用するのがいいでしょう。また、同時にNginxもインストールします。次のコマンドを実行してください。

$ sudo apt install nginx
$ sudo snap install certbot --classic

さらに/usr/bin以下にシンボリックリンクを張るのがオススメのようなので、そのように設定します。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

そしてLet's Encryptを設定します。次のコマンドを実行してください。

$ sudo certbot --nginx -d ocis.example.com

もちろん引数で指定したドメインは、今回用意したものに置き換えてください。

oCISの設定

では具体的にoCISを設定します。原則としては第754回のとおりですが、前述のとおり/etc/ocis/ocis.envの中身を次のように変更します。

OCIS_URL=https://ocis.example.com
PROXY_HTTP_ADDR=0.0.0.0:9200
PROXY_TLS=false
OCIS_INSECURE=false

OCIS_LOG_LEVEL=warn

OCIS_CONFIG_DIR=/etc/ocis
OCIS_BASE_DATA_PATH=/var/lib/ocis

もちろんOCIS_URLは設定したドメインに置き換えてください。

リバースプロキシの設定

最後にリバースプロキシを設定します。

UbuntuのNginxはデフォルトの設定が有効になっていますが、これを無効にします。次のコマンドを実行してください。

$ sudo unlink /etc/sites-enabled/default

新たにoCIS用の設定を作成します。

$ sudo editor /etc/nginx/sites-available/ocis

内容は次のとおりです。なお何箇所かドメインを書くところがあるので、気をつけください。

server {
        listen 80 ;
        listen [::]:80 ;

        #↓忘れずに書き換える
        server_name ocis.example.com;

        # location to redirect to https
        location / {
            # add port if deviates via OCIS_URL
            return 301 https://$server_name$request_uri;
        }
}

server {
        # default 443 but can deviate if set in OCIS_URL
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        #↓忘れずに書き換える
        server_name ocis.example.com;

        # certificates managed by Certbot
        #↓忘れずに書き換える
        ssl_certificate /etc/letsencrypt/live/ocis.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/ocis.example.com/privkey.pem;

        # options and dhparams managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        # protocol, session timout, server cipers
        # and ssl cache is handled by certbot

        # use multiple curves  (only if dhparams file is used)
        ssl_ecdh_curve secp521r1:secp384r1;

        # reduce time to first byte
        ssl_buffer_size 4k;

        # add strict transport security
        add_header Strict-Transport-Security "max-age=15768000; must-revalidate; includeSubDomains; preload;" always;

        location / {
            proxy_pass http://localhost:9200;
            proxy_set_header Host $host;
            client_max_body_size 0;
        }
}

設定を有効にします。

$ sudo ln -s /etc/nginx/sites-available/ocis /etc/nginx/sites-enabled/ocis

設定を適用する前にテストをしてみて、エラーがないことを確認します。次のコマンドを実行してください。

$ sudo nginx -t

次の表示になれば設定は正しいです。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

そしていよいよ設定を適用します。次のコマンドを実行してください。

$ sudo systemctl reload nginx

ここまでできたら、これまで準備したドメインにアクセスし、ocis initコマンドを実行した際に表示されたユーザー名とパスワードを入力してログインします図1⁠。

図1 VPSにインストールしたoCISにログインしたところ。第754回の図2とは違い、セキュリティ関連の警告は表示されていない
図1

WebDAVサーバー機能の注意点

ownCloud(とそのフォーク版であるNextcloud)のWebDAVサーバー機能を便利に使用しているユーザーは多いことでしょう。他ならぬ筆者もその一人です。

oCISにもWebDAVサーバー機能はありますが、従来どおりユーザー名とパスワードでログインする機能は、少なくとも現在の最新版である2.0.0には実装されていません。

ではどうするのかというと、Rcloneを使用してOpenID Connectで接続するとのことです。

ただ、App Passwords / Tokens for legacy WebDAV clientsというissueが登録されているので、今後の推移を見守っていきたいところです。

たしかにアカウントのパスワードでアクセスさせるのはセキュリティ的にどうなのかというのはもっともなので、トークンを発行してパスワードの代わりにするのは悪くないアイディアです。誰がどうやって実装するのかという話はありますが。

デスクトップアプリ

現状、既存のWebDAVクライアントが(Rcloneを除いて)使用できません。よって、事実上デスクトップアプリは専用アプリを使用することになります。

Ubuntu用は、AppImageとDebパッケージが用意されており、後者のほうがおすすめですが、インストール方法はコピー&ペーストするだけなので特に解説は不要でしょう。

軽く使用してみたところ、従来のデスクトップアプリ(≒Nextcloudのデスクトップアプリ)とユーザーインターフェースは概ね同じでした図2⁠。

図2 既視感のあるデスクトップアプリ
図2

おすすめ記事

記事・ニュース一覧