DropBoxをはじめとして、様々なクラウドストレージサービスが提供されていますが、無料サービスの容量が急に縮小されたり、情報セキュリティの観点からデータを外部サービスに預けるのは好ましくない、と考えるケースもあるかと思います。そのような場合に、自前でクラウドストレージを構築できる「ownCloud」を利用するケースが増えているようです。
ownCloudは、Webブラウザーでのアクセスはもちろん、WindowsやMac OS X、iOSにAndroidといったクライアントアプリケーションが用意されており、オープンソース版であれば無償で利用できるのも魅力です。
今回は、ownCloudをニフティクラウド上に導入し、Windowsクライアントから接続するまでの手順を解説します。
前提条件
ownCloudの最新版であるバージョン9をニフティクラウド上にインストールしますが、いくつか前提条件があるのでまとめておきます。
サーバータイプ
e-small(1vCPU/1GBメモリ)で作成します。ownCloudを利用するユーザー数によってはCPUやメモリを増やしてください。また、保存するファイル容量に応じてディスク容量も増やしてください。
IPアドレス
付替IPで固定IPアドレスが割り当てられるように設定します。
DNSによる名前解決
DNSを設定してホスト名から固定IPアドレスを名前解決できるように設定しておきます。
解説では、www.example.comというホスト名を使用していますが、適宜自分のホスト名に置き換えるようにしてください。
OS
CentOS 7を使用します。サーバーを作成後、yumコマンドでアップデートを行っておきます。
sudo yum update -y
フロントエンドWebサーバー
Apache Webサーバーを使用します。
PHP
ownCloud 9はPHP 7に対応していますが、今回はCentOS 7の標準であるPHP 5.4を使用します。必要に応じて、PHP 5.5やPHP 7を導入するようにしてください。CentOS 7へのPHP 5.5の導入方法はownCloudのインストレーションガイドでも紹介されています。
CentOS 7 Upgrade to PHP 5.5 https://doc.owncloud.org/server/9.0/admin_manual/installation/php_55_installation.html#centos-7-upgrade-to-php-5-5
バックエンドDB
デフォルトではSQLiteを使用していますが、MySQLを導入します。
HTTPS接続
クライアントサーバー間の接続をセキュアにするために、HTTPS接続を設定することが推奨されます。ownCloudが使用するApache WebサーバーにHTTPSで接続できれば良いので、ownCloud特有の設定は必要ありません。 今回は動作テスト用に、無償でSSL/TLS通信用(正確にはTLSのみ)のサーバー証明書の発行が行える「Let’s Encrypt」を使ってHTTPS接続を可能にします。
Let’s Encryptについて
Let’s Encryptは、非営利団体のISRG(Internet Security Research Group)が運営している、サーバー証明書の発行サービスです。スクリプトを使って簡単にサーバー証明書を発行できます。
ただし、証明書の有効期間は3ヶ月なので定期的に更新を行わなければいけない、ドメインの存在を確認するだけの「ドメイン認証(DV:Domain Validation)証明書」であることなどの制約があります。
ビジネス用途で信頼性の高いサーバー証明書が必要な場合には、有償のサーバー証明書発行サービスを利用して、「企業認証(OV:Organization Validation)証明書」や「EV(Extended Validation)証明書」などの発行を受けるようにしてください。
ownCloudをインストール
ownCloudをyumコマンドでインストールします。
ownCloudリポジトリを登録
ownCloudのYumリポジトリを登録します。
sudo rpm --import https://download.owncloud.org/download/repositories/stable/CentOS_7/repodata/repomd.xml.key
sudo wget http://download.owncloud.org/download/repositories/stable/CentOS_7/ce:stable.repo -O /etc/yum.repos.d/ce:stable.repo
owncloudパッケージをインストール
yumコマンドでowncloudパッケージをインストールします。 パッケージはowncloudパッケージとowncloud-filesパッケージに分かれています。owncloudパッケージは依存関係を解消するために使用されているパッケージ、owncloud-filesパッケージがownCloud本体となります。
sudo yum install owncloud -y
MySQLをインストール
バックエンドDBとしてMySQLをインストールします。手順の詳細はZabbixをインストールする手順を解説したブログ記事を参照してください。
MySQLリポジトリを登録
MySQLのコミュニティ版のYumリポジトリを登録します。
sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
MySQLをインストール
yumコマンドでMySQLをインストールします。
sudo yum install mysql-server -y
MySQLの起動
systemctlコマンドを使って、mysqldサービスを起動します。システム起動時に自動起動するように有効にしておきます。
sudo systemctl start mysqld
sudo systemctl enable mysqld
MySQLの初期rootパスワードの確認
MySQLは、初期起動時にスーパーユーザー(root)のパスワードをランダム設定しますので、確認しておきます。
sudo grep password /var/log/mysqld.log
MySQLのセキュリティ設定
必要に応じて、MySQLの初期状態をよりセキュアにするためのmysql_secure_installationスクリプトを実行します。具体的な実行例はZabbixインストール記事を参照してください。
sudo mysql_secure_installation
rootのパスワードが変更されますので、MySQLのrootパスワードが初期パスワードから以下のパスワードに変更されていると想定して解説を進めます。
パスワード種別 | 値 |
---|---|
元パスワード | /var/log/mysqld.logに記録されたもの |
新パスワード | NicoPri120% |
ownCloud用データベースの作成
MySQLにownCloud用のデータベースユーザーとデータベースを作成しておきます。
mysql -uroot -p
MySQLのrootパスワードを入力してMySQLに接続したら、以下のSQLを実行します。
CREATE DATABASE owncloud;
CREATE USER owncloud IDENTIFIED BY 'NicoPri120%';
GRANT ALL ON owncloud.* TO 'owncloud'@'localhost' IDENTIFIED BY 'NicoPri120%';
FLUSH PRIVILEGES;
サーバー証明書のインストールと設定
Let’s Encryptを使用してサーバー証明書を発行し、Apache WebサーバーでHTTPS接続が可能なように設定します。
gitコマンドのインストール
gitコマンドをインストールします。
sudo yum install git -y
Let’s Encryptクライアントのインストール
Let’s Encryptのサーバー証明書を発行するためのクライアントをインストールします。
cd
sudo git clone https://github.com/certbot/certbot
sudo cd ./certbot
sudo ./certbot-auto --help
certbot-autoスクリプトのヘルプが表示されれば、インストールは成功です。
Apache Webサーバーの起動
Let’s Encryptはドメインの存在確認のためにWebサーバーにアクセスします。あらかじめ、Apache Webサーバーを起動しておきます。
sudo systemctl start httpd
sudo systemctl enable httpd
サーバー証明書の発行
certbot-autoスクリプトを実行して、サーバー証明書の発行を行います。
sudo ./certbot-auto certonly -w /var/www/html \
-d www.example.com \
-m admin@example.com \
--agree-tos
初回実行時にはyumコマンドで必要なパッケージがインストールされます。インストールの可否を確認されるので、yと入力してください。
サーバー証明書の発行が完了すると、以下のメッセージが表示されます。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.example.com/fullchain.pem. Your cert will
expire on 2016-08-15. To obtain a new version of the certificate in
the future, simply run Certbot again.
/etc/letsencrypt/live/ドメイン名/ディレクトリに、各種証明書ファイルが保存されます。
HTTPSの設定
Apache Webサーバーの設定を変更して、HTTPS接続を有効にします。
発行されたサーバー証明書、秘密鍵、中間CA証明書の3つを読み込むように設定します。
sudo vi /etc/httpd/conf.d/ssl.conf
以下の点を変更します。
SSLProtocol all -SSLv2 -SSLv3 ←SSLv3も無効化
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem ←サーバー証明書の指定
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem ←秘密鍵の指定
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem ←中間CA証明書の指定
Apache Webサーバーの再起動
HTTPS接続の設定を有効にするためにApache Webサーバーを再起動します。
systemctl restart httpd
Webブラウザで以下のアドレスにアクセスして、HTTPS接続が可能になったことを確認します。
https://www.example.com/
ownCloudの初期化
Webブラウザからインストールウイザードにアクセスして、ownCloudの初期設定を行います。
https://www.example.com/owncloud/
設定画面の各項目は、以下の通りに指定します。
管理者アカウントの指定
設定項目 | 設定値 |
---|---|
ユーザー名 | admin |
パスワード | 適当な強度を持ったパスワード |
バックエンドDBをMySQLに変更するために、「ストレージとデータベース」をクリックします。
データフォルダーは、ユーザーが保存したファイルが格納されるディレクトリを指定します。十分な容量を割り当てたディレクトリを指定してください。
設定項目 | 設定値 |
---|---|
データフォルダー | /var/www/html/owncloud/data |
「データベースを設定してください」で「MySQL/MariaDB」を選択し、あらかじめ作成したデータベースの情報を設定します。
設定項目 | 設定値 |
---|---|
データベースのユーザー名 | owncloud |
データベースのパスワード | NicoPri120% |
データベース名 | owncloud |
データベースのホスト名 | localhost |
入力が完了したら、「セットアップを完了します」をクリックします。
セットアップが完了すると、作成した管理者アカウントでログインした状態になります。
これでownCloudが使用可能になりました。
次回はユーザー作成および各種クライアントからの接続について解説します。 ownCloudを使ったクラウドストレージ構築(活用編)