Nextcloudのsnap版をNginxのリバースプロキシとサブディレクトリ構成で使う

公開日:2020/01/08 更新日:2020/01/08
Nextcloudのsnap版をNginxのリバースプロキシとサブディレクトリ構成で使うのサムネイル

はじめに

Nextcloudは自前でGoogleドライブのようなサービスを構築できるオープンソースソフトウェアです。例えばVPS等にNextcloudをインストールして使用すると、VPSのハードディスク容量の限り使用できる自分専用のGoogleドライブのように使えます。 この記事では、Nginxをリバースプロキシとして使いNextcloudを動作させる環境の構築手順をまとめます。

Nextcloudについて

NextcloudはイメージとしてはGoogleドライブのオープンソース版です。Googleドライブのようなファイル共有だけでなく、チャットやカレンダー、さらにGoogleスプレッドシートやGoogleドキュメントのような機能も追加することができます。LDAPやユーザ管理機能、メール管理機能なども充実しています。なお、Windows、macOS、Linux、iOS、Androidそれぞれの専用クライアントアプリも公開されています。かなり色々な機能に対応しており、開発も活発に進められているようです。

また、Nextcloudのインストール方法としていくつかありますが、この記事ではおそらく1番簡単であるSnap版のNextcloudを使用します。以下がNextcloudのSnap版の公式リポジトリです。

github.com

Nextcloud server packaged as a snap.

前提と環境

この記事では、Nextcloudを以下のような構成図で構築します。

nextcloud-configure-image.png

状況としては、すでにVPS(Ubuntu)上でexample.comというドメインでWebアプリをSSLで運用しています。そしてNginxがリバースプロキシとして外部のアクセスを受けて、それをWebアプリに流している構成です。今回はこのNginxによるリバースプロキシの後ろでNextcloudを動かします。Nextcloudへのアクセスは、https://example.com/nextcloudというようにサブディレクトリパスでインターネットからアクセスできるようにします。 以下が前提と環境になります。

  • VPS OS : Ubuntu18.04
  • Nextcloud : 16 (Snap版)
  • Nginx : 1.17.7
  • example.comのSSL証明書は設定済とする

UbuntuにSnapdをインストールする

UbuntuでSnap形式のアプリを使用するには、snapdをインストールする必要があります。以下のようにaptコマンドでインストールします。

$ sudo apt update
$ sudo apt install snapd

なお、Ubuntu 18.04のデスクトップ版にはデフォルトでインストールされていると思います。

NextcloudのSnap版をインストールする

以下のようにsnapコマンドでNextcloudをUbuntuにインストールします。

$ sudo snap install nextcloud

これだけでNextcloudのインストールは完了です。 完了すると以下のようなメッセージが表示されます。

$ sudo snap install nextcloud
2020-01-04T11:18:34+09:00 INFO Waiting for restart...
nextcloud 16.0.5snap3 from Nextcloud✓ installed

後は今回のNginxによるリバースプロキシ環境でNextcloudを使うために必要な設定を行っていきます。

Nextcloudの設定を行う

まずNextcloudが使用するポート番号を以下で設定します。

$ sudo snap set nextcloud ports.http=81 ports.https=444

今回の構成ではNextcloudはあくまでローカル内で動作し、Nginxがリバースプロキシとして外部からのリクエストを受け付けます。 また、すでに別に構築済のWebアプリが動いていおり、このWebアプリ用に443番(SSL)を使用しています。そこでNextcloud用にはこれらは使わずに81番と444番を指定しています。

続いて管理者アカウントを設定します。

$ sudo nextcloud.manual-install adminuser adminpassword

adminuserが管理者ユーザ名、adminpasswordが対応するパスワードです。各自任意のものを設定してください。

また、信頼するドメインを追加します。

$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=example.com

ドメインとサブディレクトリの設定を以下を設定します。

$ sudo nextcloud.occ config:system:set overwritehost --value="example.com"
$ sudo nextcloud.occ config:system:set overwriteprotocol --value="https"
$ sudo nextcloud.occ config:system:set overwritewebroot --value="/nextcloud"
$ sudo nextcloud.occ config:system:set overwrite.cli.url --value="https://example.com/nextcloud"

example.comは各自のドメイン名、/nextcloudは各自のサブディレクトリ名に置換してください。

Nextcloudの設定を確認する

以下のコマンドでNextcloudの設定内容を確認できます。

$ sudo nextcloud.occ config:list

上記を実行するとNextcloudの設定内容が表示されます。前述した内容を正しく設定していれば、以下の部分を確認できると思います。

$ sudo nextcloud.occ config:list
// 途中省略

"overwritehost": "example.com",
"overwriteprotocol": "https",
"overwritewebroot": "\/nextcloud",

// 以降省略

Nginxの設定を編集する

続いてNginxの設定ファイルに少しだけ追記します。Nginxの設定ファイルは/etc/nginx/conf.d配下に自身の所持するドメイン名(ここではexample.com)の設定ファイルとしてexample.com.confがあるとします。なければ適当に作成してください。そして以下を追記します。

/etc/nginx/conf.d/example.com.conf
  server {
    listen 443 ssl; # managed by Certbot
    server_name  *.example.com;
    
    // 省略

  location / {
    // Webアプリ用の設定
  }

  // Nextcloud用 ここを追記
  location ^~ /nextcloud/ {
    rewrite ^/nextcloud(.*) $1 break;
    proxy_pass http://localhost:81;
  }

// 以降省略

上記のNextcloud用の設定を追記することで、すでに運用しているhttps://example.comのサブディレクトリパスとしてhttps://example.com/nextcloudでNextcloudにアクセスできるようになります。

設定を変更したらNginxを再起動します。

$ sudo service nginx restart

アップロードできるファイルサイズの上限を設定する

Nginxをリバースプロキシとして通す場合、Nginxのデフォルトでは受付できる最大ファイルサイズがデフォルトでは1MBに設定されています。 1MB以上のファイルをNextcloudのフォルダに置いても、アップロードされず「413 Request Entity Too Large」というエラーがNginx側で発生します。

この上限を変更するには、/etc/nginx/conf.d/に適当な設定ファイルとしてuploadsize.confgを作成し、以下の1行を追記します。

/etc/nginx/conf.d/uploadsize.confg
client_max_body_size 10G;

もしくは、すでにある設定ファイルの適当なところに上記を追記してもOKです。

/etc/nginx/conf.d/example.com.conf
  server {
  client_max_body_size 10G;

// 省略

Nginxを再起動します。

$ sudo service nginx restart

これで10GBまでのファイルをやり取りが可能となります。

Nextcloudの起動と停止方法

Snap版のNextcloudの起動は以下のコマンドで実行します。

$ sudo snap start nextcloud

また、停止は以下です。

$ sudo snap stop nextcloud

動作確認

Nextcloudを起動した状態で、ブラウザからhttps://example.com/nextcloudにアクセスしてみてると、以下のようにNextcloudのログイン画面が表示されます。

login-with-your-account.png

作成済の管理者アカウント(前述したadminuser)でログインすると以下のようなWelcomeメッセージが表示されます。

logged-in-nextcloud.jpg

Welcomeメッセージのあとで以下のようにファイル一覧が表示されれば無事に動作しています。

dashboard-nextcloud.png

後はGoogleドライブのようにファイルをアップロードしたりダウンロードしたりできます。また、設定画面からユーザの追加や権限の設定も行うことができます。

Nextcloudアプリのクライアントアプリをインストールする

NextcloudではWindows、macOS、Linux、iOS、Android用にクライアントアプリがそれぞれ公開されています。以下にWindows10とLinuxにクライアントアプリをインストールする手順をまとめたので必要な方は見てみてください。 

www.virment.com

NextcloudのクライアントアプリをWindows10、Linuxにそれぞれインストールしたのでその手順をメモしておきます。

まとめ

NextcloudのSanp版はインストールが1番簡単なのでとりあえず試す用途としては最適だと思います。有料のグループウェアを導入するのに抵抗がある場合は、とりあえずNextcloudを使ってみるのもいいかもしれません。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。