Nextcloudを使う

去年さくらのレンタルサーバーを再契約した際に、サーバーの有効活用ということでNextcloudをインストールして10ヶ月ほど運用してみました。ほぼDropboxの代替になり得るということで、この度あらたにVPSを用意してクラウドストレージサーバーを建てました。

お名前VPS上のFreeBSD+Nginx環境下にインストールする

くどいようですがLinuxサーバーはよくわからない。ので、一旦Time4VPSでの運用は諦めて、お名前VPSを借りてみました。

今回FreeBSDはisoファイルをアップロードして、カスタムOSとしてインストールしたので多少内容は違いますが、OSの設定まわりはVultrでFreeBSDサーバーを立ち上げるの内容と同じ。

ただしphpまわりだけはNextcloudの手順書のPrerequisites for manual installationに従ってインストールしました。

# pkg install php72 php72-mysqli php72-pdo_mysql php72-xml  php72-gd php72-curl php72-zlib php72-zip php72-hash php72-tokenizer php72-extensions php72-mbstring php72-openssl php72-fileinfo php72-bz2 php72-intl php72-pecl-mcrypt

インストールしたモジュールはRequiredとRecomendedのものです。php7.1とは少し名前などが違っています。

同じサーバー上でWordPressも動かすので、Nginxの設定はNextcloudの手順書のNginx configurationをベースに次のようにしました。

upstream php-handler {
    server unix:/var/run/php-fpm.sock;
}

server {
    listen 80;
    server_name  .my-web-site.com;
    include access_deny.conf;
    return 301 https://www.my-web-site.com$request_uri;
}

server {
    listen       443 ssl http2;
    server_name  my-web-site.com;
    ssl_certificate         /usr/local/etc/letsencrypt/live/www.my-web-site.com/fullchain.pem;
    ssl_certificate_key     /usr/local/etc/letsencrypt/live/www.my-web-site.com/privkey.pem;
    include access_deny.conf;
    return 301 https://www.my-web-site.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name  www.my-web-site.com;

〜中略〜
    location = /.well-known/caldav {
      return 301 $scheme://$host/nextcloud/remote.php/dav;
    }

    # WordPress blog settings start
    location = /blog/wp-config.php { deny all; }
    location = /blog/xmlrpc.php { deny all; }
    location / {
        try_files $uri $uri/ =404;
    }
    location /blog/ {
        auth_basic "Restricted";
        auth_basic_user_file /home/my-directory/.htpasswd;
    }
    # WordPress blog settings end

    location /.well-known/acme-challenge { }
〜中略〜
        location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }

    # WordPress blog settings start
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
    }
    # WordPress blog settings end
}

ほぼサンプル通りなんですが、適当なところにWordPress用の設定を差し込んであります。upstream設定とhttps用のリダイレクト設定も多少変えてあります。

MySQLにはあらかじめデータベースと接続ユーザーを作成しておきます。

create user 'nextcloud'@'localhost' identified by 'p@ssw0rd';
create database nextcloud;
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';
flush privileges;

これでドキュメントルート下に配置したNextcloudのインストーラーにブラウザでアクセスすればインストールが始まります。

共用ファイルサーバーとして使う

最も一般的な使い方です。デスクトップクライアントはMacもWindowsもほとんどDropboxと同じ動き。

サーバー上のファイルのコピーをローカルに持っているので、オフラインでも閲覧や編集ができて、オンラインになったら自動的に同期が始まります。

iOSやAndroidなどのモバイル版は基本的にローカルコピーを持たないので、残り容量を心配することなく運用できます。(いちおうキャッシュはされている)

Dropbox時代から変わらず使い続けているKeePassというパスワード管理ソフトでデータを共有していると、全ての端末でひとつのパスワードファイルを共有できるので、大変便利です。

カレンダーサーバーとして使う

長らく便利に利用させてもらっていた各種クラウドサービスですが、最近は少しづつデータを引き上げつつあります。

上記ファイルサーバーはその最たるものですが、カレンダーもここ3年ほどiCloud上に置いていたものを引き上げることにします。ひとつにはiPhoneからAndroidに乗り換えたというのがあります。これまではiOSデバイスとMac間でのデータ共有にはiCloudが最適解でしたが、これからはそうではない。

ファイルサーバー同様、カレンダーやタスクなどのマスターデータをプライベートサーバーに置いて、MacやAndroidからそれらを閲覧したり編集したりします。

MacならSystem PreferencesのUser Account、iOSならSettingsのPasswords & Accounts、AndroidならSettingsのAccounts and SyncにNextcloudのアカウントを登録すると、それぞれのデバイスからデータの登録や編集、閲覧ができるようになります。

データはサーバーで一元管理されるので、デバイスを変更しても大丈夫。

ビデオ通話もできる

ひとつ前のバージョン13から搭載された新機能。とはいえFacebook messengerやLineなど、代わりはいくらでもあるのだけれど。

これらについても一企業にロックインされるのが嫌だなと思ったとき、選択肢があるというのはよいことです。プライベートSNSとして使えますよ。

こんな感じでいよいよ本格的にNextcloudを活用していこうかなというところで、一旦作業内容をまとめてみました。