概要
VPSにownCloudを導入した際の手順の備忘録。
Dropboxがデバイス数に制限をかけたせいで非常に使いづらくなったため、移行した。(課金してもよいが、別に1TBもいらない)
通常ownCloudではapacheを利用することが多いが、今回はもともと導入済みであったnginxを利用してインストールを行った。
また、ownCloudをwgetでパッケージをダウンロードするのでなく、リポジトリを登録してdnfからインストールした。
環境・構成
みかか系の超格安VPS。
[puri@gbgb ~]$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
SSL証明書は以前にLet's Encryptで取得済み。また、ファイアウォールの設定もすでに設定済み。
必要なパッケージ
- dnf
yumの後継。ownCloudをインストールするのに必要。
yum -y install wget
yum -y install epel-release
yum -y install dnf
- PHP 7.2
ownCloud動作には、PHP5.6以上が必要。
CentOSで普通にyumするとPHP5.4がインストールされるため、remiリポジトリを追加する必要がある。
// remiリポジトリ追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=remi-php71 install php \
php-dom \
php-fpm \
php-gd \
php-mbstring \
php-mysqlnd \
php-pdo \
php-pdo_mysql \
php-pecl-zip \
php-intl
- mariaDB, nginx
詳細省略
owncloudインストール
公式サイトを参考にインストールする。
pm --import https://download.owncloud.org/download/repositories/production/CentOS_7/repodata/repomd.xml.key
dnf config-manager --add-repo http://download.owncloud.org/download/repositories/production/CentOS_7/ce:stable.repo
dnf clean all
dnf install owncloud-files; dnf upgrade owncloud-files
以上の手順で、/var/www/html/owncloud
に諸々のファイルが配置される。
PHP設定ファイルの編集
以下の2ファイルの書き換えが必要。こちらのサイトを参考にした。
/etc/php.ini
/etc/php-fpm.d/www.conf
また、以下のディレクトリの所有グループをapache
からnginx
に変更する。
chown -R root:nginx /var/lib/php/session
nginx設定ファイルの編集
/etc/nginx/nginx.conf
は、http接続の時にhttps接続にリダイレクトするよう設定している。
なお、Dropboxと連携する際はhttpsが必須。
[puri@gbgb ~]$ cat /etc/nginx/nginx.conf
# 省略
http {
# 省略
# 下記設定でリダイレクト
server {
server_name www.example.com;
return 301 https://www.example.com$request_uri;
}
}
/etc/nginx/conf.d/owncloud.conf
でowncloud関連の設定をする。
[puri@gbgb ~]$ cat /etc/nginx/conf.d/owncloud.conf
upstream php-handler {
#server 127.0.0.1:9000;
# UNIXソケットファイルを指定して、処理をphp-fpmへ転送する
server unix:/var/run/php-fpm/php-fpm.sock;
}
server {
listen 443 ssl http2;
ssl_certificate "/etc/letsencrypt/live/<domain>/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/<domain>/privkey.pem";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
# rootに以下のパスを指定することでwww.example.com/owncloudでowncloudにアクセスできる
root /var/www/html/;
client_max_body_size 5G;
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
deny all;
}
location / {
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ \.php(?:$|/) {
root /var/www/html;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-handler;
include fastcgi_params;
}
# dataディレクトリにユーザのデータが保存される。リモートからのアクセスを禁止するか、ドキュメントルートの外に配置する。
location /owncloud/data/ {
allow 127.0.0.1;
deny all;
}
}
SELinuxの設定
SELinuxが有効になっている場合、ownCloudがディレクトリにアクセスできず正常に動作しない可能性がある。
SELinuxを無効にして運用してもよいが、セキュリティを考慮してSELinuxのコンテキストを変更して運用することも可能。その場合、RedhatのSELinuxを参考にポート、ディレクトリのコンテキストを変更する。
少なくとも、以下のディレクトリには書き込みを許可するコンテキストが必要。
[puri@gbgb owncloud]$ pwd
/var/www/html/owncloud
chcon -R -t httpd_sys_rw_content_t config/
chcon -R -t httpd_sys_rw_content_t apps/
chcon -R -t httpd_sys_rw_content_t apps-external/
サービスの起動、mariaDBの設定
先ほどのサイトと同様に設定する。
mariaDBって金森まりあさん感あっていいですよね、かわいい
Dropboxとの連携設定
Dropbox側の設定
App keyとApp secretを取得する。また、Redirect URIsの設定が必要。
Dropboxの開発者ページに行き、'Create app'をクリック。諸所の設定を行い、appを作成する。
作成し次のページに遷移すると、Redirect URIsの欄があるので、
https://www.example.com/owncloud/index.php/settings/admin?sectionid=storage
を入力する。
ownCloud側の設定
左上のMarketをクリックする。
ストレージのカテゴリを選択し、その中から'External Storage: Dropbox'を選択し、インストールする(Dropboxのロゴが表示されているもの)。
App keyとApp Secretを入力する欄があるので、先ほどのDropbox開発者ページのそれをコピペする。
最後にDropboxの認証ページに飛ばされ、許可すると連携される。
まとめ
賢いひとはDropboxのデバイス数制限の関係で何か気づくのではないのでしょうか?ぜひ皆さんもownCloudを立てましょう。