こんにちは。さくらインターネットの大喜多です。
この記事では、さくらのVPSをDropboxやGoogleドライブのようなオンラインストレージとして活用する方法をご紹介します。

はじめに

Nextcloudをご存知でしょうか。Nextcloudは、Dropboxのようなオンラインストレージを自分で作ることができるOSS(オープンソースソフトウェア)です。Web経由でファイルの共有をおこなったり、PCにクライアントをインストールして、サーバーとファイルを同期させることができるものです。中小企業においてはファイルサーバーを構築する代わりにNextcloudを使っているケースが増えているそうです。

クラウドストレージの利用イメージ(1)Web経由でのファイル共有のイメージ

クラウドストレージの利用イメージ(2)クラウドとPCのファイル同期

一方、さくらのVPSは、専用サーバの自由度とクラウドの拡張性を合わせもつ、月額585円(税抜かつ記事執筆時点の価格)から使える仮想専用サーバサービスです。さくらのVPSではスタートアップスクリプトという機能を使って簡単にアプリケーションをセットアップして利用することができるようになっています。本記事ではスタートアップスクリプトを使ってさくらのVPSにNextcloudをインストールし、各種設定をしたうえで利用するところまで解説していきたいと思います。

Nextcloudのインストールはスタートアップスクリプトで

Nextcloudのインストールには、さくらのVPSの機能であるスタートアップスクリプトを利用します。

さくらのVPS コントロールパネルのVPS一覧で、使用するVPSの行をダブルクリックします。(ここで指定したVPSはOSのインストールが行われ、ストレージ内のデータがすべて消去されますのでご注意ください。既存のVPSを使用する場合は、必要なデータのバックアップを必ず取っておいてください)

各種設定→OSインストールをクリックします(この操作の前にVPSがシャットダウンされている必要があります)。

「OSインストール形式の選択」で[標準OS]を選択します。

[CentOS7 x86_64]を選択し、VPSにログインする際に必要になるパスワードを入力します。

スタートアップスクリプトの検索窓にnextcloudと入力すると(赤枠部分)、対象のスタートアップスクリプトが表示されます(青枠部分)。青枠部分をクリックします。

スタートアップスクリプトを選択すると、パケットフィルタは自動で「使用しない」状態になります。代わりにサーバー上でFirewalldというファイアウォールが動作してセキュリティを確保しています。[設定内容を確認する]をクリックします。

内容に問題がなければ[インストールを実行する]をクリックします。

OSのインストールとスタートアップスクリプトの実行が開始されます。

通常は赤枠部分が[稼働中]になれば利用可能な状態になりますが、スタートアップスクリプトの実行に時間がかかるため、しばらく時間をおいてから次のステップに進みます。

Nextcloud環境に手を加える

スタートアップスクリプトでインストールしたNextcloudはすぐにでも利用可能な状態ですが、ここではよりセキュリティと信頼性を向上させるために手を加えます。

  • DBにMariaDBを使用する(データの信頼性向上)
  • Let’s EncryptによるHTTPS化(通信の暗号化)

スタートアップスクリプトでインストールしたNextcloudでは、初期状態ではSQLiteというデータベースを使用するようになっていますが、Nextcloudでは「SQLiteは小規模もしくは開発用のインスタンスでのみ利用できます。プロダクション環境では他のデータベースをお勧めします。ファイルの同期にクライアントを使用している場合、SQLiteの使用はお勧めできません。」としています。

今回はクライアントを使用したファイルの同期もおこなってみたいので、データベースにMariaDBを使用します。

また、標準ではインターネット上の経路を通る通信が暗号化されませんので、Let’s Encryptという無料のSSL証明書を使用してHTTPSを使った通信の暗号化をおこないます。

MariaDBのインストール

VPSにSSHでログインします。

CentOSのリポジトリにあるMariaDBのパッケージは古いバージョンのため、MariaDB公式のリポジトリからインストールするように設定します。

# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

MariaDBをインストールします(パッケージ名がCentOSのリポジトリのものとは異なる点に注意してください)。

# yum install MariaDB-server

MariaDBのデフォルト設定では文字コードが latin1 になっていますので、日本語を扱えるよう、utf8 に変更します。
/etc/my.cnf.d/server.cnf を編集し、 [mariadb] セクションに以下の設定を追加します。

# vi /etc/my.cnf.d/server.cnf
[mariadb]
character-set-server=utf8

MariaDBのインストール後、mariadb service の有効化と開始を行います。

# systemctl enable mariadb
# systemctl start mariadb

以下のコマンドを実行して、MariaDBのrootのパスワードを設定します(インストール直後はパスワードが何も設定されていない状態です)。

# /usr/bin/mysql_secure_installation

MariaDBのインストールは以上です。

Let’s Encryptの設定、HTTPSの有効化

以下のコマンドを入力し、Let’s Encrypt SSL証明書の取得をおこないます。

なお、証明書の発行には有効なホスト名が必要で、ここではVPSのIPアドレスに対して「nextcloud.s.sacloud.jp」というホスト名で名前解決できるようDNSの設定をしているものとします(DNSの設定については本記事では説明を省略します)。

以下、本記事で「nextcloud.s.sacloud.jp」と表記されている箇所については、みなさんがDNSで設定したVPSのホスト名に読み替えてコマンドの実行やコンフィグの書き換えをおこなってください。

# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-auto
# certbot-auto certonly --webroot -w /var/www/html -d nextcloud.s.sacloud.jp --email mail@example.com

/etc/httpd/conf.d/ssl.confを編集し、HTTPSを有効化できるようにします。

# vi /etc/httpd/conf.d/ssl.conf
<前略>
# General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html"
#ServerName www.example.com:443
ServerName nextcloud.s.sacloud.jp:443 #追記する
<中略>
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt #コメントアウトする
SSLCertificateFile /etc/letsencrypt/live/nextcloud.s.sacloud.jp/cert.pem #追記する

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key #コメントアウトする
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.s.sacloud.jp/privkey.pem #追記する

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convinience.
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt #コメントアウトする
SSLCertificateChainFile /etc/letsencrypt/live/nextcloud.s.sacloud.jp/chain.pem #追記する
<後略>

/etc/httpd/conf/httpd.confの末尾に次の内容を追記し、常にHTTPSで接続するよう設定します(常時SSL化)。

# /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName nextcloud.s.sacloud.jp
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>

Firewalldの設定を変更し、HTTPS(TCP443番ポート)の通信を許可するようにします。

# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload

書き換えたコンフィグを反映させるために、Webサーバー(Apache)を再起動します。

# systemctl reload httpd

Let’s Encryptの設定、HTTPSの有効化については以上です。

Nextcloudサーバーのセットアップ

https://nextcloud.s.sacloud.jp/にアクセスします。管理者アカウントはNextcloudで使用する管理者アカウントをここで新規作成しますので、ユーザー名・パスワードは任意のものを入力します(VPSのrootパスワードやMariaDBのrootパスワードと一緒である必要はありません)。データベースは「MySQL/MariaDB」を選択し、ユーザー名はroot、パスワードはMariaDBインストール時に設定したrootパスワード、DB名は任意(ここではわかりやすくnextcloudとしています)、接続先はlocalhost:5432と入力します。

入力が終わったら[セットアップを完了します]をクリックします。以下のように表示されてNextcloudのセットアップが進行します。

セットアップが完了すると、以下のようなWeb画面が表示されます。一人で利用するのであればこのまま利用することが可能です。

管理者アカウントをtestuserという名前で作成しましたが、もうひとりユーザーを追加してみたいと思います。右上の歯車アイコンをクリックし、表示される左メニューの「新しいユーザー」をクリックします。以下のようなフォームが表示されますので、任意の情報を入力してユーザーを作成します。ここでは例としてm-kawashimaという名前のユーザーを作成しています。

新しいユーザーを作成すると以下のように表示されます。

Nextcloudクライアントのインストールとセットアップ

ここまででWebブラウザを使ったファイルの共有はできるようになりました。ここからは、自分のPCにNextcloudクライアントソフトをインストールして、クラウドとPC間でファイルの同期をおこなえるようにしていきます。

NextcloudのWebサイトにアクセスし、[Get Nextcloud]をクリックします。

[Download for desktop]をクリックします。

OSごとにパッケージが異なりますので選択します。本記事ではWindows版をインストールしていきます。

インストーラー上で特に変更が必要な箇所はありません。[次へ]をクリックして先に進みます。

以下のように表示されたらインストールは完了です。[完了]をクリックします。

Nextcloudクライアントとサーバーを接続する設定をおこないます。[ログイン]をクリックします。

サーバーアドレスにhttps://nextcloud.s.sacloud.jp/nextcloud/と入力します。ここでもnextcloud.s.sacloud.jpの部分は自分で設定したホスト名に置き換えて入力してください。

Webブラウザが起動しログインを求められます。Nextcloudのユーザーでログインします。

以下のように表示されたらWebブラウザでの操作は完了です。クライアントの設定画面に戻ります。

[接続]をクリックします。

クライアントで以下のように表示されれば、クラウドとPCの間でファイルが同期されるようになります。クライアントは複数のPCにインストールして同期することができるので、複数のPCを使って作業をされている方にはとても便利です。

まとめ

いかがでしたでしょうか。途中少し難しいところもあったかと思いますが、特にVPSは価格あたりのディスク容量が多いのでNextcloudに適していると思います。複数のPCで作業をしているとファイルを共有できることがすごく便利に感じます。みなさんも是非試してみてください。