WEB/システム/IT技術ブログ

レンタルサーバに「ownCloud」をインストールして自分専用のDropbox環境を構築する

「ownCloud」をレンタルサーバにインストールする方法です。
「ownCloud」はPHPベースのオープンソースで、サーバにインストールすることでDropboxのような環境を構築することができます。
ownCloud.org

ファイルサーバとして「Dropbox」、「Google Drive」や「OneDrive」など便利ではありますが、つまりよく分からないサードパーティー領域に個人的ファイルを保存しておくのが気持ち悪いと考える人も少なからずいるはずです。
また、これらのクラウドサービスに障害が発生した場合に、泣き寝入りする以外ありません。
さらには、使い勝手にちょっとした不満がある時に、「ownCloud」はPHPベースなので、ある程度カスタマイズが可能です。(たぶん)

そこで今回、レンタルサーバ「heteml」に「ownCloud」をインストールしてみます。
検証した環境は以下のとおりです。

レンタルサーバ heteml
ownCloud 10.4.1

インストール

パッケージのダウンロード・アップロード

公式サイトよりパッケージをダウンロードします
Getting Started with ownCloud | ownCloud.org

ownCloudはさまざまな形式でサービスを提供していますが、今回はレンタルサーバにインストールするため、「Resources」の「Tarball」から「Download Zip」ボタンをクリックしてソースをダウンロードし、解凍後、Webサーバへアップロードします。

owncloud-10.4.2.zip

ファイル数が多いため、FTPだと時間がかかる場合があります。
そんな時はSSHで接続後に、コマンドでダウンロード、解凍することをお勧めします。

wget https://download.owncloud.org/community/owncloud-10.4.1.zip
wget https://download.owncloud.org/community/owncloud-10.4.1.zip.md5
md5sum -c owncloud-10.4.1.zip.md5 < owncloud-10.4.1.zip
unzip owncloud-10.4.1.zip

上記ファイルをドキュメントルートに展開します。
また、それとは別にアップロードされたファイルを管理するディレクトリを用意しておきます。

パーミッション

上記で説明した通りowncloudは、「本体を設置するディレクトリ(ドキュメントルート)」「ファイルを管理するディレクトリ」の2つのディレクトリを準備するのですが、この両者のディレクトリのパーミッションを書き込み可にする必要があります。
サーバ環境にもよりますが、今回、hetemlの場合「775」に設定しました。

こちら何気に重要です。

インストールを実行

アップロードしたソースにブラウザからアクセスすると、以下の画面が表示されます。

「ストレージとデータベース」をクリックして、詳細を設定します。

管理者のユーザ名とパスワードを入力します。
データフォルダには、先ほどパーミッションを変更した「ファイルを管理するディレクトリ」を指定します。
データベース情報を入力します。
「セットアップを完了」を押した後に、画面が管理画面に遷移すれば、ひとまずインストールは完了です。

設定を変更して再インストールする

ownCloudを「/owncloud/」にインストールした場合、デフォルトでアップロードしたディレクトリは「/owncloud/data/」となります。
またDBはSQLiteを使用します。

アップロードディレクトリを変更したり、DBの種類をSQLiteかMySQLから選択(8.xはPostgreSQLも選択可能)できるのはインストール時で、インストール後は変更できません。
但し、再インストールは簡単にできます。

「/owncloud/config/config.php」を開き、以下のパラメータをfalseに変更します。

'installed' => false

再度ブラウザからアクセスすると、初めのインストール画面となるので、そこで保存ディレクトリとDBの種類を選択してインストールを進めます。
MySQLを利用する場合は、DB名、ユーザ名、パスワード、ホスト情報が必要になります。

セキュリティ&セットアップ警告について

これまでの状態でも利用できますが、インストール後に「セキュリティ&セットアップ警告」といったメッセージが表示されることがあります。
可能な範囲で問題を解決して、セキュリティ強化を図ります。

いくつかのファイルで整合性の確認に失敗しました。この問題を解決するための詳細情報はドキュメントにあります。 (不適正なファイルのリスト… / 再スキャン…)

調査中

HTTP経由でアクセスしています。security tipsを参照して、代わりにHTTPSを使用するようサーバーを設定することを強くおすすめします。 instead as described in our .

HTTPで運用している際に表示される警告メッセージです。HTTPSに切り替えれば解決します。

このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティ製のアプリ、といった一部の機能が利用できません。また、リモート接続でのファイルアクセス、通知メールの送信のような機能も利用できないことがあります。すべての機能を利用するには、このサーバーのインターネット接続を有効にすることをお勧めします。

cURLの問題のようで、cURLをアップグレードすれば解決するようです。

NSS バージョン (NSS/3.xx.xx Basic ECC) の古い cURL を使っています。OSを更新するか、この機能 アプリストア または クラウド連携共有からアプリをインストール もしくはアップデート が正しく動くアプリに更新してください。

1つ前の懸案と同件です。cURLをアップグレードします。

OS上のcronを利用することをお勧めします。その他のcron利用と同じようにパフォーマンスと信頼性がもたらされます。

owncloud上で必要な定期的な処理をユーザがアクセス時に実行しています。それだとパフォーマンスが悪いため、cronを設定してくださいというメッセージです。
cronの設定にはいくつか方法がありますが、ルートディレクトリの「cron.php」を1分毎に実行するように設定すると良いようです。

HTTP ヘッダ の "Strict-Transport-Security" が少なくとも "15552000" 秒に設定されていません。 セキュリティを強化するため、セキュリティTipsを参照して、HSTS を有効にすることをおすすめします。

htaccessに以下を追加して、HSTSの設定を変更します。

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"

メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、ドキュメント を参照してください。

調査中

You are currently running PHP 5.xx.xx. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it.

ownCloudのパフォーマンスを発揮するには現在のPHPのバージョンが古いので、PHPのバージョンアップを奨励しています。
具体的にどのバージョンが必要なのかは、ownCloudのバージョンにもよるようです。

その他のセキュリティについて

いわゆる自身で管理するファイルストレージなので、セキュリティ面で対策できる範囲はやっておいたほうがよいでしょう。

データディレクトリの変更

先ほどのインストール時のアップロードディレクトリ変更について、web公開ディレクトより上の階層を指定したほうがよいでしょう。

例えばweb公開ディレクトリが「/web/」、インストールディレクトリが「/web/owncloud/」の場合、デフォルトのアップロードディレクトリは「/web/owncloud/」となります。これをweb公開ディレクトリより上の階層「/data/」などにするとよいでしょう。

接続ユーザをIPで限定する

「config.php」に以下の記述を追加することで、ownCloudに接続可能なユーザをIPで限定することができます。

'trusted_domains' =>
	array (
		0 => 'localhost',
		1 => 'example.helog.jp',
		2 => '192.168.xxx.yyy',
	),

接続するユーザが限定的で、IPが固定など特定できるのであれば有効な設定です。

2020/5/18更新

B!

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives