以前にownCloudをRaspberryPi3に構築したのですが、NextCloudなるものを見つけてしまったので、衝動的に構築しました
今回構築に使ったのは以下の機材
1、RaspberryPi3 Model B
2、MicroSDカード
3、専用の電源
以上の組み合わせで構築しました
RaspberryPi3にOSインストールするという手順は、他のブログで既に詳細な説明があると思いますので割愛します
1、NextCloudを構築しよう
以前に参考にしたownCloudのページを参考に、以下のように構築していきます
何はともあれ、まずは以下のコマンドをRaspi上で実行していきましょう
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache php5-curl varnish
これで動作に必要なパッケージは整いました
2、Webサーバーの初期設定
裏で動かすnginxのユーザーはwww-dataで動かすので、まずはユーザーを作成しましょう
$ sudo groupadd www-data
$ sudo usermod -a -G www-data www-data
次にNextCloudを安全なHTTPSで動作させる為にSSLの証明書を作成しましょう
私は更新が面倒なので、いつも10年分作ります。作成個所はnginxのロケーションです
$ sudo openssl req $@ -new -x509 -days 3650 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
$ sudo chmod 600 /etc/nginx/cert.pem
$ sudo chmod 600 /etc/nginx/cert.key
個人用ですし、証明書の情報は適当に入力しましょう
3、nginxの設定
Webサーバーであるnginxの設定は以下のコマンドで実施
$ sudo vim /etc/nginx/sites-available/default
defaultというファイルが無い場合は、上記のコマンドで新規ファイルが作成されます
その中身は以下の内容でコピペして上書きし、保存しましょう
upstream php-handler { server 127.0.0.1:9000; #server unix:/var/run/php5-fpm.sock; } server { listen 80; server_name サーバーのホスト名; return 301 https://$server_name$request_uri; # enforce https } server { listen 443 ssl; server_name サーバーのホスト名; ssl_certificate /etc/nginx/cert.pem; ssl_certificate_key /etc/nginx/cert.key; # Path to the root of your installation root /var/www/nextcloud; client_max_body_size 1000M; # set max upload size fastcgi_buffers 64 4K; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 360; 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 / { # The following 2 rules are only needed with webfinger 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(?:$|/) { 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_param HTTPS on; fastcgi_pass php-handler; } # Optional: set long EXPIRES header on static assets location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires 30d; # Optional: Don't log access to assets access_log off; } }
サーバーのホスト名のところには、DDNS等で取得したホスト名を入れます
私がよく使うのは、DuckDnsです
DuckDNSについてはこちら
4、NextCloud用のディレクトリを作成
私は余っていた500GBの外付けUSBハードディスクを保存場所にするべく、Raspiに接続して使っています → [2017/01/25更新]外付けHDDからNASに乗せ換えました
マウントする必要があるので、とりあえずディレクトリを作成
$ sudo mkdir /mnt/hdd/nextcloud
次に、nginxが触れるようにパーミッション等を変更
$ sudo chown -R www-data:www-data /mnt/hdd/nextcloud
$ sudo chmod -R 770 /mnt/hdd/nextcloud
これでnginxからファイルにアクセス出来るようになりました
外付けHDDのマウント方法はまた別のブログで沢山紹介されているの、そちらをご参照ください
5、NextCloudのインストール
まず、インストーラーをダウンロードしてくる先のディレクトリを作成して、インストーラーを保存します
$ sudo mkdir -p /var/www/nextcloud
$ wget https://download.nextcloud.com/server/prereleases/nextcloud-11.0.1RC1.tar.bz2
保存した圧縮ファイルを解凍し、解凍したディレクトリを移動します
$ tar xvf nextcloud-11.0.1RC1.tar.bz2
$ sudo mv nextcloud/ /var/www/
$ sudo chown -R www-data:www-data /var/www
これで/var/www/の直下にnextcloudのフォルダが出来ました
NextCloudのインストールは終了です
Raspiの再起動後にRaspiのIPアドレス宛にブラウザからアクセスしてみてください
例:https://192.168.100.100
このような画面が出ればインストールは成功です
この画面は既に初期設定を完了した後の画面ですが、初期アクセス時は管理者のユーザー名とパスワード、それからNextCloudが扱うデータディレクトリの場所、使用するデータベースを聞かれます
NextCloudが使うディレクトリの場所には、外付けのHDDを使用するので、Linux内でマウントしている/mnt/hdd/nextcloudと入力します
データベースにはMariaDBを使用しました
予めMariaDBにnextcloud用のデータベースを作成しておきましょう
6、インストール後の諸設定
NextCloudの管理画面に行くと、いくつか設定して下さいと警告が出ていると思います
・PHPのPATH環境設定の変更
・HTTP Strict Transport Securityの設定
・memcacheを有効にする
これ以外にもあるかもしれませんが、私は遭遇した事がありません
まず、PHPのPATH環境設定の変更ですが、以下の場所を参照してください
$ sudo vim /etc/php5/fpm/pool.d/www.conf
www.conf内の一番したにclear_env = noを追加して保存して終了です
次に、HTTP Strict Transport Securityを○○○○秒に設定うんぬん出てると思いますので、こちらはnginxのniginx.confに追加します
$ sudo vim /etc/nginx/nginx.conf
SSL Settingsのところに追加します
分かりやすいように前後の文章も載せますが、追加するのはadd_headerから始まる太字の部分です
## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;preload'; ## # Logging Settings ## 以下略・・・
これで保存して終了です
最後にmemcacheを有効にしてパフォーマンスを向上させます
以下のファイルを開きます
$ sudo vim /var/www/nextcloud/config/config.php
以下の一文を追加します。追加する箇所はどこでも良いです
'memcache.local' => '\\OC\\Memcache\\APCu',
追加したら保存して終了です
これでRaspiを再起動すれば設定が反映されます
7、アップロードファイルサイズを512Mから2GBに増やす
デフォルトの状態だと、NextCloudでは513MBまでしかアップロード出来ません
1GBのファイルをアップロードしたくても、この状態ではエラーで止まってしまいます
上限を2GBまで(Raspberry Piのような32bitOSの場合は2GBまで)引き上げるには、phpのアップロード設定を変更します※ ※Webブラウザからファイルをドラッグアンドドロップする場合に限る。デスクトップアプリからであれば、20GBのファイルもアップロード出来ました
$ sudo vim /etc/php5/fpm/php.ini
以下の箇所を2000Mに変更してください
upload_max_filesize = 2000M
post_max_size = 2000M
変更後、以下のコマンドを実行してphpを再起動します
$ sudo service php5-fpm restart
NextCloudにログインし、管理設定からアップロードの最大サイズを513MBから2000MBに変更します
ここで2GBとか打つと設定が反映されません。微妙に注意点かも
これでひとしきり設定は完了です。お疲れ様でした