最短翌日発送!高速大容量のモバイルWi-Fiルーターの詳細はこちら
ガジェット全般

さくらのVPSとNextCloudでオンラインストレージを構築する方法

さくらのVPSにインストールしたNextCloudのトップ画面 ガジェット全般

外部から自宅や会社などのネットワークにアクセスする方法として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 VPSKAGOYA 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とSoftEtherで高速なVPNサーバーを構築する方法
にSoftEtherをインストールして、VPNサーバーを構築してみました。これにより月額700円程度で固定IPアドレスが使えるようになり、またフリーWi-Fi利用時でも安全にインターネットを利用することが可能になります。 わざわざVP...

既に会員登録済みの方はこのまま本記事を読み進めてください。

さくらの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を導入すれば超簡単でした。

クラウドコラボレーションサーバ「Collabora Online」を構築してみた(3) 〜さくらのクラウド/さくらのVPSでの構築例(前編)〜 | さくらのナレッジ
目次はじめに注意事項構築方法はいくつかあるがうまくいかないものも多い構築例の概要さくらのクラウドにてサーバを作成サーバをDNSに登録OSの更新SNAPの導入Nextcloudの構築管理アカウントの設定信頼できるドメインの

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ではメモリスワップを設定すること自体は制限されていませんが、ストレージの読み書きが増加することでリソース制限に抵触する可能性があると注意喚起されています。

リソース制限
目次: リソース制限の実施について- リソース制限対象, リソース制限が実施された場合, リソース制限の閾値について., コントロールパネルでの確認- CPU のリソース制限が行われている場合,...

リソース制限が実施されてしまった場合は、メモリスワップではなくVPS自体をスケールアップして物理メモリの容量を増やすことを考えましょう。

VPSをスケールアップする

さくらのVPSではスケールアップ機能が提供されています。これを利用すれば簡単に上位プランへ変更することが可能です。パフォーマンスを重視するならメモリスワップで凌ぐよりも必要なスペックのVPSを用意しましょう。

上位プランへ変更すればメモリだけでなくCPUやストレージ容量も増強されるので、これらがボトルネックになっている場合の対策にもなります。

まとめ

さくらのVPSとNextCloudでオンラインストレージを構築する方法について紹介しました。

Dropboxのようなサービスを利用するのに比べるとNextCloudは導入にひと手間かかりますが、かなり自由度が高いオンラインストレージを手に入れることができます。

自分にちょうど良いオンラインストレージサービスがないと感じているのであれば、NextCloudを利用してみてはいかがでしょうか。

コメント

タイトルとURLをコピーしました