外部から自宅や会社などのネットワークにアクセスする方法としてVPNがありますが、データを共有するだけならクラウドでも十分だしこっちのほうが今時な気がするよなあ…というわけで遊びがてら、さくらのVPSとNextCloudでオンラインストレージを構築してみました。まあ以前このブログを公開しているエックスサーバーにもインストールしてみたことはあるのですが(しかもそのまま放置中)。
わざわざ自力で構築しなくても既存のオンラインストレージサービスを利用するほうが楽ではありますが、Dropboxなどのオンラインストレージサービスは無料枠だけだと容量が少ないですし、有料プランを契約するにしてもストレージを共有できる人数に制限があったり、カスタマイズの自由度が低いといった制約が残ります。
一方でNextCloudはオープンソースのソフトウェアなので、これ自体は無料で利用することが可能です。VPSに設置するならVPSの利用料金は必要ですし、独自ドメインも取得する必要があるので、どちらのほうが安く済むとは一概に言えませんが…容量は設置するサーバー次第、ユーザー数については特に制約はありません。
またNextCloudはオンラインストレージとしての基本的な機能に加えて、プラグイン・アプリを追加することで様々な拡張機能を利用することが可能です。Dropboxなどのサービスでは物足りなく、ここに価値を見出せるのであればNextCloudを導入してみると良いでしょう。
というわけで、いつものごとく備忘録がてら構築方法をまとめておきました。
NextCloudを構築した環境
VPS | さくらのVPS |
---|---|
OS | Ubuntu 22.04 (amd64) |
独自ドメイン | ムームードメインで取得 |
まずソフトウェアはNextCloudを使用するとして、他の構築環境についても簡単にまとめておきます。
VPS
VPSは現在契約中のさくらのVPSに独自ドメインを設定して利用することにしました。
別にさくらのVPSでないといけないことはありませんが、VPSサービスによっては独自ドメインの設定ができなかったり、設定可能でも追加料金が発生するものもあったりするので注意が必要です。
さくらのVPSなら他社で取得した独自ドメインでも無料で設定することができます。他にもConoHa VPSやKAGOYA CLOUD VPSも独自ドメインの設定が無料で可能です。
契約プラン
契約プラン、スペックについても現在契約中の512MBプランのままでそのまま構築してみました。
結論から言えば、個人で使用するならこの程度のよわよわスペックでも使えないことはありません。NextCloudの推奨メモリ容量は512MBなのでギリギリ満たしていますし。
ただデフォルトのままだと動作はガクガクで、メモリもすぐに不足してプロセスが強制終了されてしまいます。メモリスワップで対策は可能ですが、ストレージ容量も25GBしかないので、メモリ1GB以上のプランにしておいたほうが無難かなとは思います。
OS
OSはUbuntu 22.04 (amd64)を使用しました。
採用理由はDebian系で扱いに慣れているから、それ以上でも以下でもありません。。
ディストリビューションはお好みで選べば良いと思います。
独自ドメイン
サーバーをWebで公開するために独自ドメインを使用します。SSL証明書を取得するためにも必要です。
さくらのVPSとまとめて独自ドメインも取得することが可能ですが、料金がやや高めな印象…私がよく利用しているムームードメインのほうが安価で取り扱いドメインも豊富なので、今回もこちらで取得しました。
ぶっちゃけ独自ドメインの購入先を選ぶ材料は料金とラインナップくらいしかないので、欲しいドメインが安く手に入るならそれに越したことはありません。
個人的にはムームードメインとお名前.comだけ比較して決めれば良いと思ってます(偏見)。
独自ドメインを取得したらネームサーバを設定しておく
独自ドメインはどこで購入しても良いですが、取得したらネームサーバをさくらのVPSのものに変更しておきましょう。ネームサーバの変更は反映に数日かかる場合もあるので、早く設定しておくに越したことはありません。
ムームードメインの場合はコントロールパネルにアクセスして、左上のメニューに「ネームサーバ設定変更」から設定することが可能です。
さくらのVPSでは無料で利用できるネームサーバが用意されています。無料のネームサーバを利用する場合は以下の2つを設定してください。
- ネームサーバ1:ns1.dns.ne.jp
- ネームサーバ2:ns2.dns.ne.jp
さくらのVPSを申し込んでUbuntuをインストールする
まださくらのVPSを申し込んでいなければ、以下の記事も参照してサーバーの作成まで済ませてください。なお後述しますが、スタートアップスクリプトは利用しないでOKです。
既に会員登録済みの方はこのまま本記事を読み進めてください。
さくらのVPSにUbuntuをインストールする
さて、さくらのVPSではOSインストール時に任意のスクリプトを実行して各種設定作業を自動化してくれる、便利なスタートアップスクリプト機能が提供されています。
そこにはNextCloudを自動インストールしてくれる公式スクリプトも存在するのですが、残念ながらこの公式スクリプトがUbuntuには対応していないのです。はい、スクリプトを設定するこのタイミングになって気付きました。CentOSなら対応しているのですが…
まあスタートアップスクリプトを利用しなくても、パッケージ管理システムのSnapを導入すればNextCloudは簡単にインストールできるので問題はありません。サーバーの設定内容については以下を参照してください。
サーバー名 | 任意 |
---|---|
サーバー説明 | 任意 |
インストールするOS | Ubuntu |
OSバージョン | 22.04 amd64 |
管理ユーザー名 | 既定(ubuntu) |
管理ユーザーのパスワード | 任意 |
スタートアップスクリプト | 利用しない |
パケットフィルター設定 | 利用する(SSHとWebの通信は許可) |
サーバーへのSSHキー登録 | 任意 |
パケットフィルターは有効化して、SSHのTCP 22番とWebのTCP 80/443番の通信のみ許可しておきましょう。なおパケットフィルターはOSインストール後にコントロールパネルから設定を変更することも可能です。
設定内容を確認したらOSインストールを実行して完了を待ちましょう。
準備が整ったらコントロールパネルからサーバーを起動させて、サーバー周りの設定を行います。
ネームサーバの利用申請を行う
会員メニューの契約中のドメイン一覧から、ドメインコントロールパネルにアクセスします。
さらにネームサーバサービスのメニューを開き、ネームサーバの新規登録を行いましょう。独自ドメインを入力するだけで簡単に設定が完了します。
ここからはSSHでサーバーに接続して作業を行います。
UbuntuにNextCloudをインストールする
NextCloudをインストールする方法はいろいろありますが、さくらのナレッジで紹介されているパッケージ管理システムのSnapを導入すれば超簡単でした。
OSのインストールが完了していたら、TeraTermなどのSSHクライアントを使用してログインします。管理ユーザ名はデフォルトのubuntu、パスワードは任意で設定した文字列です。
パッケージを更新する
$ sudo apt update $ sudo apt upgrade
SSHでログインしたらまずはパッケージを更新しておきます。
Snapdをインストールする
$ sudo apt install snapd $ sudo systemctl start snapd
次にSnapdをインストールして起動します。
NextCloudをインストール、設定する
$ sudo snap install nextcloud
Snapdを利用してNextCloudをインストールする場合、上記のコマンドを実行します。
これ1行だけでNextCloudの構築に必要なPHPやデータベースの設定も済ませてくれるそうです。スタートアップスクリプト機能なんて要らなかったんや。
というわけで記事に従ってどんどん設定を進めていきます。
管理アカウントを作成する
$ sudo nextcloud.manual-install ユーザー名 パスワード
NextCloudの管理アカウントを作成するため、任意のユーザー名とパスワードを設定します。
信頼できるドメインを設定する
$ sudo nextcloud.occ config:system:get trusted_domains $ sudo nextcloud.occ config:system:set trusted_domains 1 --value=独自ドメイン $ sudo nextcloud.occ config:system:set trusted_domains 2 --value=VPSのIPアドレス
NextCloudはデフォルトの設定だと、リクエスト先のホスト名が「localhost」のみに制限されています。そこでVPSのホスト名やIPアドレスを介してNextCloudにアクセスするために、これらに対するリクエストにも応答するようにドメインの設定を行いましょう。
1行目は現在の設定を確認するためのコマンドです。
2行目のコマンドで取得した独自ドメイン、3行目ではVPSのIPアドレスを信頼できるドメインとして追加します。
Let’s Encryptを利用してSSL証明書を作成する
$ sudo nextcloud.enable-https lets-encrypt Have you met these requirements? (y/n) y Please enter an email address (for urgent notices or key recovery): メールアドレス Please enter your domain name(s) (space-separated): 独自ドメイン
最後にSSLの設定を行います。SSLは有料で導入する方法もありますが、Let’s Encryptを利用すれば無料で設定することが可能です。
ここまでの設定が無事に完了していれば、独自ドメインでNextCloudにアクセスが可能になっているはずです。
NextCloudにアクセスしてみる
ブラウザや、NextCloudのスマートフォン向けアプリを起動して取得した独自ドメインにアクセスしてみてください。ログイン画面が表示されて、作成した管理アカウントでログインできればOKです。
UIは他のオンラインストレージと似通っているので、基本的な使い方はわざわざ調べなくても分かるかと思います。後は自由にカスタマイズして使ってみてください。
ただし今回、メモリが512MBしかないVPSにNextCloudをインストールしたので、動作はガクガクで非常にストレスフル。使い続けているとプロセスが強制終了されることもあり、そのままでは使い物になりませんでした。
そこでメモリ不足時の対策方法についても紹介しておきます。
メモリが不足している場合の対策
NextCloudはメモリ512MB以上で動作するとされていますが、実際はかなり厳しそうです。1人でアクセスしていても強制終了することがあるのに、複数人で共用するならまったく使い物にならないでしょう。
インストール直後、ブラウザからログインしただけでメモリの空き容量はほとんど残っていません。サーバー起動直後で約18MB、しばらくすると10MBを下回ります。
もっとも私が契約中のプランはストレージ容量も25GBと少ないですし、実際はもっと大容量のプランで運用するべきかと思いますが、それでもメモリが不足したり動作が安定しない場合はメモリスワップの設定を確認してみましょう。
メモリスワップを設定する
スワップとは、メモリとストレージの間でデータを交換することです。はい、よく分かりませんね。。
具体的には、あらかじめてストレージ上に一定のスワップ領域を確保しておくことで、メモリ逼迫時にデータをスワップ領域に退避させてメモリに空き容量を作ります。退避させたデータはそのままストレージ上で読み書きを行うので、メモリ容量を擬似的に拡張することが可能です。
ひとまず以下のコマンドでメモリスワップの設定が存在しないか確認しておきましょう。
$ sudo swapon --show
メモリスワップが設定されていなければ、コマンドを打っても何も返ってこないはずです。
未設定であることを確認したら、スワップファイルを作成します。容量については物理メモリの2倍が適切…というのが通説のようなので、以下のコマンドで1GBを割り当てるスワップファイルを作成することにしました。
$ sudo fallocate -l 1G /swapfile
スワップファイルが作成されたことを確認しておきましょう。
$ ls -lh /swapfile -rw-r--r-- 1 root root 1.0G Jul 17 16:45 /swapfile
このスワップファイルをroot権限を持つユーザーのみがアクセスできるように設定して、変更が反映されていることを確認します。
$ sudo chmod 600 /swapfile $ ls -lh /swapfile -rw------- 1 root root 1.0G Jul 17 16:45 /swapfile
mkswapコマンドでスワップファイルに基づいてスワップ領域を作成します。
$ sudo mkswap /swapfile
さらにswaponコマンドでスワップ領域を有効化します。
$ sudo swapon /swapfile
以下のコマンドでメモリスワップの設定が完了していることを確認します。
$ sudo swapon --show
これでメモリスワップの設定は完了です。freeコマンドを打ってみると、既にいくらかのデータはスワップされていました。物理メモリの空きが約37MBと少し余裕を持たせたままスワップが行われていることが確認できます。
NextCloudにアクセスした際の動作スピードは歴然としていて、データのアップロードやダウンロードをしてみてもストレスを感じることはありません。
というわけで使い方にもよるかとは思いますが、少々のメモリ不足ならメモリスワップで凌げるような気がします。
ただしメモリスワップの使用は良いことばかりではなく注意も必要です。
VPSによってはメモリスワップが制限されているので要注意
メモリスワップはHDDやSSDといったストレージをメモリとして使用する機能です。HDDは言わずもがな、SSDでさえ本来のメモリほど高速な読み書きはできないので、スワップの頻度が高くなれば著しくパフォーマンスが落ちる恐れがあります。
またストレージの消耗も激しくなるため、VPS事業者によってはメモリスワップを制限している場合があるかもしれませんので事前に確認してください。
さくらのVPSではメモリスワップを設定すること自体は制限されていませんが、ストレージの読み書きが増加することでリソース制限に抵触する可能性があると注意喚起されています。
リソース制限が実施されてしまった場合は、メモリスワップではなくVPS自体をスケールアップして物理メモリの容量を増やすことを考えましょう。
VPSをスケールアップする
さくらのVPSではスケールアップ機能が提供されています。これを利用すれば簡単に上位プランへ変更することが可能です。パフォーマンスを重視するならメモリスワップで凌ぐよりも必要なスペックのVPSを用意しましょう。
上位プランへ変更すればメモリだけでなくCPUやストレージ容量も増強されるので、これらがボトルネックになっている場合の対策にもなります。
まとめ
さくらのVPSとNextCloudでオンラインストレージを構築する方法について紹介しました。
Dropboxのようなサービスを利用するのに比べるとNextCloudは導入にひと手間かかりますが、かなり自由度が高いオンラインストレージを手に入れることができます。
自分にちょうど良いオンラインストレージサービスがないと感じているのであれば、NextCloudを利用してみてはいかがでしょうか。
コメント