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版の公式リポジトリです。
前提と環境
この記事では、Nextcloudを以下のような構成図で構築します。
状況としては、すでに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
があるとします。なければ適当に作成してください。そして以下を追記します。
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行を追記します。
client_max_body_size 10G;
もしくは、すでにある設定ファイルの適当なところに上記を追記してもOKです。
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のログイン画面が表示されます。
作成済の管理者アカウント(前述したadminuser
)でログインすると以下のようなWelcomeメッセージが表示されます。
Welcomeメッセージのあとで以下のようにファイル一覧が表示されれば無事に動作しています。
後はGoogleドライブのようにファイルをアップロードしたりダウンロードしたりできます。また、設定画面からユーザの追加や権限の設定も行うことができます。
Nextcloudアプリのクライアントアプリをインストールする
NextcloudではWindows、macOS、Linux、iOS、Android用にクライアントアプリがそれぞれ公開されています。以下にWindows10とLinuxにクライアントアプリをインストールする手順をまとめたので必要な方は見てみてください。
NextcloudのクライアントアプリをWindows10、Linuxにそれぞれインストールしたのでその手順をメモしておきます。
まとめ
NextcloudのSanp版はインストールが1番簡単なのでとりあえず試す用途としては最適だと思います。有料のグループウェアを導入するのに抵抗がある場合は、とりあえずNextcloudを使ってみるのもいいかもしれません。
関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。
- 公開日:2020/01/22 更新日:2020/01/22
WireGuardでVPNサーバーを構築してスマホやPCから接続する手順
WireGuardはOpenVPNよりもシンプルで高速、より安全なVPNとして開発が進められており、OpenVPNに代わるVPNとして期待されています。この記事ではWireGuardを使ってVPNサーバーを構築し、そのVPNサーバーにUbuntuやiPhoneから実際に接続してみるまでの手順をまとめます。
- 公開日:2020/01/21 更新日:2020/01/21
Nextcloud Hub(Nextcloud 18)をUbuntu + Nginx + MySQL環境で構築する手順
最新のNextcloudを使用したい場合は、Nextcloudのパッケージからゼロからインストールする必要があります。 この記事では、執筆時点で最新のNextcloud 18 (以降ではNextcloud Hubと呼びます。)をUbuntu + Nginx + MySQL環境で構築する手順をまとめます。