全システム正常稼働 14リージョン · 1.2 TBPSシールド 入金方法 BTC · XMR · LTC · ETH · USDT +3 コイン

チュートリアル

Google Driveを自分が所有するNextcloudサーバーに置き換える方法

13分で読了

Google Driveを自分が所有するNextcloudサーバーに置き換える方法

クラウドストレージは、たいていの人が一つの会社に託すものの中でも、もっとも踏み込んだ部類に入ります。書類だけではありません — 写真、身分証明書のスキャン、確定申告書、そして中身をすべて抱えたスマートフォンのバックアップです。それは、異議申し立てのできない自動化システムによって凍結されうるアカウントの中にあり、アップロードした内容をスキャンするサーバー上に置かれ、何年も前に確認され、もはや切り離すことのできない身元と結びついています。人々がその仕組みの正体に気づくのは、たいてい最悪のタイミングです。多くの場合、ロックされたアカウントが20年分の家族写真を道連れにした瞬間です。Nextcloudはそのオープンソースの答えです:同じ同期クライアント、同じスマートフォンアプリ、同じ共有リンクが、自分がレンタルしたマシンの上で動き、誰の索引にも入らないファイルを保管してくれます。インストール自体は半日で終わります。それが本当に元の環境より優れているかどうかを決めるのは、その下にあるディスクと、ほとんどのチュートリアルが取り違えている暗号化の問題です。

Nextcloudが実際に置き換えるもの

Nextcloudは単一のアプリというより、一般的なクラウドアカウントがこなす作業の大半をたまたまカバーしてしまう小さなスイートです。その幅広さこそが、そもそもセルフホストする価値を生んでいます:一つのサービスをセルフホストの代替品に置き換えるのは、保守の手間に見合わないことがほとんどですが、五つのサービスを一台のサーバーに置き換えるのなら、たいてい見合います。

  • ファイル同期と共有、これが核となる機能です。Windows、macOS、Linux向けのデスクトップクライアント、両プラットフォーム向けのモバイルアプリ、そしてウェブインターフェース — フォルダをドラッグすればどこにでも現れる、すでにおなじみのあの挙動そのものです。
  • スマートフォンからの写真バックアップ。カメラロールの自動アップロード、アルバム、顔によるグループ分けまで備えています。ほとんどの人にとってこれが単独で最大のデータ量になり、だからこそディスクを正しくサイジングする必要が出てきます。
  • オープンなCalDAVとCardDAVの標準に基づくカレンダーと連絡先。どちらもすべてのスマートフォンがネイティブに話せる規格なので、同期のためにサードパーティ製アプリを入れる必要はありません。
  • 追加で導入できるオフィススイートによる共同編集ドキュメント。表計算やテキストファイルを、どこにも送信することなくブラウザ上で編集できます。
  • パスワード、有効期限、アップロード専用のドロップフォルダを設定できる公開共有リンク。たいていの場合、これが大きな添付ファイルをメールで送る習慣に終止符を打つ機能です。
  • サーバー側でのバージョン管理とゴミ箱。上書きされたファイルや誤った同期があっても、バックアップに頼らず復元できます。

その境界線ははっきり言っておく価値があります。セルフホスティングをめぐる宣伝文句が、まずそれをしないからです。Nextcloudが与えてくれるのはコントロールとプライバシーです。ハイパースケーラーが持つような耐久性は与えてくれません — そうした大手企業はデータを複数の大陸にまたがって複製しますが、レンタルした一台のサーバーは、ディスクがどれほど優秀でも、それをしてくれません。ファイルがタダになるわけでもありません:どちらにしてもストレージ代は支払うことになります。違うのは、あなたの名前を尋ねてきたホストではなく、一度も尋ねてこなかったホストに支払うという点だけです。セルフホスティングとは、他人の信頼性を自分自身のコントロールと引き換える取引であり、それが良い取引になるのは、信頼性の側を自分自身で真剣に引き受けた場合に限られます。

あなた自身がストレージプロバイダーになる

それが正直なコストであり、移行した後よりも前に理解しておいたほうがはるかによいものです。あなたの稼働状況を監視してくれる人はいませんし、あなたの写真のコピーを持っている人もおらず、今朝必要だったファイルで同期クライアントが競合を報告してきたその瞬間に、サポート窓口の向こうで待っていてくれる人もいません。

  • バックアップの責任は自分にあり、これは省略できません。RAIDアレイは故障したディスクからは復旧できますが、削除されたフォルダや失敗したアップグレード、同期フォルダを通り抜けたランサムウェアからは復旧できません。バージョン管理とゴミ箱は便利機能であって、バックアップではありません。
  • 稼働時間の責任も自分にあります。サーバーに届かない同期クライアントは変更を静かに溜め込み、後から追いつくので、その点は寛容です — しかし、クライアントに送った共有リンクは、サーバーが落ちている間は死んだままです。
  • 更新の責任も自分にあります。そしてNextcloudは更新を機敏なペースでリリースします。これは公開IP上で動くPHPアプリケーションであり、その中身はあなたの人生そのものなので、パッチ適用を「静かな月まで先送り」にしてよいものではありません。
  • 容量を監視するのも自分の役目です。すべての写真を自動アップロードするスマートフォンは、余裕を持ってサイジングしたはずのディスクを、想定していなかったタイミングで埋め尽くします。そして満杯のディスクは、単に止まるだけでは済まず、データを壊します。
  • 復旧の責任も自分にあります。リストアとは、データベースとファイルツリーを、時点の揃った状態で一緒に戻すことを意味します。どちらか一方だけを戻すと、実際には存在しないファイルを一覧表示する、見た目だけは動くインターフェースが出来上がります。

一度セットアップしてしまえば、そのどれも重い作業ではありません。月に数分と、最初に注意深くかける半日だけの話であり、セルフホストするあらゆるサービスに共通する規律と変わりません — 違うのはただ一点、今回それが抱えているのは、失えば一番こたえるものだという点です。すでに自分でホストするウェブサイトを経験しているなら、そのどれも目新しくは感じないはずです。

マシンのサイジング: アプリケーションではなくデータに予算を割く

Nextcloud自体は控えめなPHPアプリケーションです。ここでのサイジングの失敗のほとんどは、アプリケーションを基準に予算を組んでしまい、この取り組みの本題が増え続けるデータを抱えることにあるのを忘れてしまうことから生まれます。最初に正しい形を決めておきましょう。ファイルツリーとそのデータベースを後からマシン間で移行するのは、セルフホスティングの中でも一番気の重い午後になるからです。

  • ストレージこそが、選ぶべきプランを決定づける要素です。目安として、今日時点のファイル容量のおよそ2倍が必要になります。バージョン管理は変更されたファイルの古いコピーを保持し、ゴミ箱は削除したものを保持期間の分だけ抱え、生成されるサムネイルとプレビューも写真ライブラリの容量に対して無視できない割合を占めます。
  • メモリが決めるのは動くか動かないかではなく、使い心地です。2 GBあればシングルユーザーのインスタンスは動きますが、スマートフォンからのアップロードを常時走らせる世帯なら4 GBが快適です。オフィススイートと数人の同時利用が絡んでくると、8 GB以上がものを言います。
  • CPUはほとんどの時間アイドル状態ですが、ときおり大きくものを言う瞬間があります — インポートした写真ライブラリに対する初回のプレビュー生成や、その場でのドキュメント変換がスパイクの元であり、そこに余裕を持たせておく価値があります。
  • データベースは高速なストレージを求めますが、ファイル本体はそれほど求めません。メタデータ操作は絶えずデータベースに負荷をかける一方、ファイルツリーへのアクセスの大半はシーケンシャルな読み書きです。だからこそ、小さなNVMeのルートディスクに大容量ストレージを組み合わせる構成の方が、一つの巨大で遅いボリュームよりも優れた形になります。
  • ここでの転送量は無制限ですが、既存ライブラリの初回アップロードは正真正銘の一回限りの大仕事です。不意を突かれるのではなく、一晩かけて走らせる前提で計画しておきましょう。

実際には、実際にどれだけ保存するかによって着地点は二通りに分かれます。数百ギガバイト以内 — 書類、控えめな写真ライブラリ、一人か二人での利用 — であれば、4 vCPU EPYC、8 GB DDR5 ECC、120 GB Gen4 NVMeを備えたVPS-8($13.99/mo)で十分すぎるほど高速です。カメラロールを持つスマートフォンが加わった瞬間、問題は容量だけになり、NVMeにお金を払うのは的外れになります:ストレージサーバーなら$7.99/moからRAID-6で1 TBが手に入り、STO-4なら$22.99/moで4 TBが手に入ります — これはどのVPSとも桁の違う余裕であり、しかも1テラバイトあたりの価格はごくわずかです。それを超えて世帯や小さなチームをまとめて収容するなら、$64/moからの専用サーバーが2 × 1 TB NVMeで速度と容量の両方を、計算がばかげたことにならない形で与えてくれます。

誰も警告してくれない落とし穴:プレビューです。Nextcloudはすべての画像と動画について、複数の解像度でサムネイルを生成します。大きな写真ライブラリでは、その初回処理が何時間もかかったうえ、ライブラリ自体のサイズに対して無視できない割合をディスク上に上乗せすることがあります。プレビューはインポートの最中に任せきりにせず、初回インポートが終わったあとに意図的に生成し、生成する解像度の種類も絞り込んでおきましょう。

ステップバイステップ: まっさらなサーバーから稼働中の同期まで

  1. 01サーバーをデプロイし、まず先に強化するDebianまたはUbuntuのマシンに、鍵認証のみのSSHとデフォルト拒否のファイアウォールを、ファイルを一つも置く前に用意します。マシンがまだ空っぽで退屈なうちに済ませておきましょう。
  2. 02ドメインをサーバーに向け、証明書を発行させるNextcloudのクライアントは平文のHTTP経由での同期を拒否しますが、それも当然のことです。証明書を発行できるようにするには、先にホスト名がそのマシンに解決されている必要があり、この順序を誤ることがインストール失敗の原因として圧倒的に多いものです。
  3. 03インストール方法を選び、それを貫くコンテナイメージは最速の経路であり、更新を保ち続けるのも最も簡単です。ウェブサーバーとデータベース上への手動インストールなら、チューニングをより細かく制御できます。どちらか一方に決めましょう — 二つを混ぜることが、アップグレードを壊す原因になります。
  4. 04SQLiteではなく本物のデータベースを使うSQLiteが機能するのは、たった一人のユーザーがたいして何もしない場合だけで、二つのクライアントが同時に同期した瞬間に破綻します。インストール時にMariaDBかPostgreSQLを選びましょう。後から移行するのは気の重い作業です。
  5. 05メモリキャッシュを追加し、バックグラウンドジョブを設定するロックとキャッシュにはRedisを使い、バックグラウンドジョブはブラウザ起動のデフォルトではなく、システムレベルのcronにやらせましょう。ここを省略するかどうかが、あるセルフホストインスタンスがもっさりと感じられ、別のものが瞬時に感じられる理由です。
  6. 06何かを移行する前にアップロード上限を引き上げるデフォルト値は小さなファイル向けのサイズで、動画やディスクイメージは弾かれてしまいます。先にウェブサーバーとPHPの設定で上限を直しておかないと、最初の大きなアップロードが90パーセントのところで失敗します。
  7. 07ファイルを一度の作業でまとめて移行するデスクトップクライアントから既存のライブラリをアップロードするか、所定の場所にコピーしてスキャンを実行させます。誰もそのインスタンスに依存し始める前に、一晩かけて一度だけ済ませましょう。
  8. 08クライアントを接続し、その同じ日にバックアップを設定するデスクトップの同期、スマートフォンの自動アップロード、カレンダーと連絡先です。そのうえでバックアップを設定し、実際にテストしましょう — リストア手段のない本番インスタンスは、単なるカウントダウンにすぎません。
バックアップの手順は「来週末」ではなく初日に済ませましょう。「今やすべてのファイルはここにしかない」という状態から「そして今はバックアップも取られている」という状態までの間こそが、セルフホストサーバーの生涯全体を通じて最も危険な期間であり、しかもそれは完全に自分自身が招いたものです。

暗号化: 実際にあなたを守ってくれるものと、守ってくれるように聞こえるだけのもの

会社にファイルを読まれることが嫌で一般的なクラウドから移ってきたのなら、この節が最も重要であり、そして、ほとんどのガイドが取り違えている節でもあります。Nextcloudにはサーバーサイド暗号化と呼ばれる機能があります。それを有効にすれば答えを得た気になります。しかしほとんどの場合それは答えではなく、なぜそうなのかを理解しておくことが、暗号化なしよりもたちの悪い誤った安心感からあなたを救ってくれます。

  • サーバーサイド暗号化は、鍵をサーバー上に保持します。アプリケーションはファイルをあなたに届けるために復号できなければならず、つまり稼働中のマシンにアクセスできる者は誰でも、そのマシンが持つすべてを手にします。これが守ってくれるのは、盗まれたディスクや信頼できない外部ストレージバックエンドに対してであって、乗っ取られたサーバーやその運用者に対してではありません。
  • エンドツーエンド暗号化こそが本物であり、そして意図的に制限されています。特定のフォルダに対してクライアント側で暗号化するため、サーバーは本当にそれらを読めなくなります — が、それは同時に、そのコンテンツについてはウェブインターフェースもプレビューもサーバー側検索も公開共有リンクも使えなくなることを意味します。
  • サーバー上のフルディスク暗号化が守ってくれるのは、電源が落ちたマシンに対してです。稼働中のサーバーはボリュームがマウントされ、鍵がメモリ上に載っているため、これが防いでくれるのは電源の入っていない機体の廃棄や物理的な押収であって、それ以外ではありません。
  • アップロード前に暗号化することこそ、ほとんどの人が本当に求めているものです。フォルダをローカルで暗号化し、暗号文だけを同期させるツールを使えば、その下は普通のNextcloudのままで本物の機密性が手に入ります。代償は、そのフォルダのプレビューとブラウザからのアクセスです。
  • 転送時の暗号化は、保存時の暗号化ではありません。HTTPSが守ってくれるのは転送中のファイルだけで、保存されているファイルは守ってくれません。この二つを混同することが、この分野全体で最もよくある誤解です。
役に立つ整理の仕方はこうです:サーバーサイド暗号化が答えるのは「誰かにディスクを盗まれたらどうするか」という問いです。クライアントサイド暗号化が答えるのは「誰かにサーバーを乗っ取られたらどうするか」という問いです。この二つは別の問いであり、自分が実際にどちらを問うているのかは、あなたにしかわかりません。前者を有効にしておきながら後者に答えたつもりになるのが、両方の悪いところ取りです。

ほとんどの人にとって、正直な答えは折衷案です。インスタンス自体は普通に運用しましょう — それはあなた自身のサーバーであり、プレビューや検索、共有リンクの便利さこそが、単なる暗号化アーカイブを使わない理由のすべてです。そのうえで、本当にセンシティブな一部のファイル — 重要書類や鍵、悪い年に効いてくるようなもの — だけを取り分け、それらがディスクに到達する前にクライアント側で暗号化しましょう。そうすれば、使い勝手のよいクラウドと本物の金庫の両方を、両方のふりをした中途半端な妥協案の代わりに手に入れられます。

デフォルトインストールが残したままにする身元の漏洩

Nextcloudは、あなたのファイルを読んでいた会社を取り除いてくれます。しかしそれだけでは、サーバーを一人の人間に結びつけてしまう要素のすべてを取り除いてくれるわけではありません — そして、そのほとんどはストレージとは無関係に感じられる手順から生じています。

  • ドメイン。公開WHOISが伏せられていても、レジストラはあなたの身元を保持しており、その名前を維持するには有効な連絡先住所が必要です。セルフホストされたサービスがその所有者まで辿られる最も一般的な経路は、このホスト名です。
  • 証明書の透明性(Certificate Transparency)。証明書が発行された瞬間、その正確なホスト名は誰でも検索できる公開ログに記録されます。cloud.something、files.somethingのような、非公開のつもりでいたサブドメインも、タイムスタンプ付きで世界中に告知されてしまいます。
  • ホスト。サーバーを本名のカードで契約したのであれば、そこで何を動かそうと、そのマシンはあなたの本名に紐づいたままです。それは最初のファイルが置かれるよりずっと前、申し込みの時点ですでに決まっています。
  • モバイルのプッシュ通知。公式アプリはデフォルトで、プラットフォーム提供元のプッシュサービス経由で通知をルーティングします。つまり、ファイル自体はGoogleやAppleに届かなくても、あなたのインスタンスに関するメタデータは届いてしまいます。
  • 写真のメタデータ。画像にはGPS座標やデバイス識別子を含むEXIFデータが付いています。カメラロールを自分のサーバーに移しても、それらが取り除かれるわけではありません — 単に、自分がコントロールできる場所に移動するだけであり、それはましではありますが、取り除くこととは違います。
  • 外部との連携。フェデレーション共有、リモートストレージのバックエンド、メール通知、アプリストアの更新確認は、いずれもそのマシンから外部へ接続します。そのひとつひとつが、あなたのサーバーを見ることになる第三者です。
  • サーバーのログ。自分のログには、すべての同期についてIPアドレスとユーザーエージェントが記録されています。自分のマシンにある分には問題ありません — マシンが押収されるまでは。その時点で、ログはあなた自身の行動についての証拠になります。

これらを塞ぐのは、特殊なことではなくごく普通の作業です。暗号資産に対応し、最小限の情報しか集めないレジストラを選びましょう。マシンは身元を一切尋ねてこなかったホストに置き、暗号資産の残高から支払います — Bitcoinは仮名性であって匿名ではありません。そのため、それが自分にとって重要であるなら、Moneroでチャージすることがオンチェーンの痕跡を断つことになります。メタデータが気になるならプッシュ通知を切り、そのぶん同期が遅れることを受け入れましょう。そして、そのインスタンスが自分と信頼できる数人だけのためのものであるなら、インターネット全体には一切公開せず、WireGuardトンネルの背後に置いて、そのトンネル上でしか応答させないようにしましょう — これは同時に、公開ログインページを狙うあらゆる種類の攻撃を丸ごと取り除いてもくれます。

移行後も動かし続ける

1年間問題なく動いてきたファイルサーバーとは、1年間誰も見ていなかったファイルサーバーのことでもあります。短い保守手順があるかどうかが、それと、守るために作ったはずのものを失うこととの分かれ目になります。

  • データベースとファイルツリーを、整合性の取れた同じ時点から一緒にバックアップしましょう。対応するデータベースのないファイルバックアップは、孤立したファイルばかりの空っぽに見えるインスタンスとして復元されます。
  • サーバー上にはないコピーを保持しましょう。同じマシン上にあるスナップショットが生き残れるのはディスク障害からだけです — 乗っ取りからも、あらゆる場所に同期される誤削除からも、アカウントの喪失からも守ってくれません。
  • 何も問題が起きていないうちに、あえて一度リストアを試しておきましょう。テストしていない写真ライブラリのバックアップは、あなたの思い出についての仮説にすぎません。
  • 更新はプロジェクトのペースに合わせて行い、メジャーバージョンを飛ばさないようにしましょう。Nextcloudは一度に一つのメジャーリリースずつアップグレードする前提で作られており、二つ飛ばすと、その移行作業を手作業でほどく羽目になります。
  • 空き容量には本当の意味での余裕を持たせて監視しましょう。アップグレードには作業のための空間が必要であり、データベースの移行中にディスクが満杯になることが、通常の更新作業をリストア作業に変えてしまう典型的な原因です。
  • バックグラウンドジョブが実際に動いているか確認しましょう。プレビュー生成、ゴミ箱の掃除、古いバージョンの間引きはすべてそこに依存しており、静かに壊れたcronは、何か月も経ってから、原因不明の満杯ディスクという形で表面化します。

ついでに、外部からのチェックも追加しておきましょう — ログインページを外部から取得し、応答が止まったら知らせてくれる仕組みがあれば、キューに溜まった同期クライアントが気づくより先に、インスタンスが落ちていることがわかります。そしてマシン自体は、新しいVPSでの最初の10分が説明する通りに扱いましょう。あなたが所有するすべての書類を抱えたマシンで懸かっているものは、お金を抱えたマシンより低くはないのですから。

本当にファイルを失うミス

  • デフォルトだからという理由でSQLiteのままインストールし、二台のデバイスが同時に同期した最初の瞬間にロックしてしまうのを目にする。
  • ゴミ箱とファイルのバージョンをバックアップ代わりに考えてしまい、同期クライアントが削除をあらゆる場所に伝播させたその日になって、それがバックアップではなかったと気づく。
  • バックアップを設定する前に写真ライブラリ全体を移行してしまい、唯一のコピーがレンタルしたマシンの上にしかない期間を1か月も過ごしてしまう。
  • サーバーサイド暗号化を有効にし、これでファイルはホストから見えなくなったと結論づけ、その思い込みのまま行動してしまう。
  • ディスクを今日時点のファイル容量に合わせてサイジングし、バージョン、ゴミ箱、プレビューの分の余裕をまったく見込んでいない。
  • メモリキャッシュとバックグラウンドジョブの設定を省略しておきながら、動作が遅いインスタンスの原因をハードウェアのせいにしてしまう。
  • アップロード上限をデフォルトのままにしておき、移行の最中になって大きなファイルが黙って失敗することに気づく。
  • インスタンスを1年間放置してしまい、一度のアップグレードでメジャーバージョンを二つ飛ばしてしまう。
  • それ以外のすべてを正しく行っておきながら、サーバーのレンタルとドメインの登録だけは自分名義で行ってしまう。

Nextcloudは、日々の使い勝手という点で、自分が置き換える商用サービスに本当の意味で肩を並べる、数少ないセルフホストプロジェクトの一つです — 同期はただ機能し、スマートフォンアプリもただ機能し、1週間もすればその違いに気づかなくなります。インストールにかかるのは半日、移行にかかるのは一晩です。あとに残るのは、あなたが所有するすべてのファイルが、あなたにしか従わないマシンの上にあり、暗号資産の残高から支払われ、あなたの名前を一度も尋ねてこなかったホストの上にある、という状態です。ディスクは今のデータ量ではなく将来のデータ量に合わせてサイジングし、本当に必要な小さな部分だけをクライアント側で暗号化し、そしてバックアップは必要になってからではなく、必要になる前に設定しておきましょう。

試してみませんか?ストレージサーバーを$7.99/月からデプロイ — KYC不要、暗号資産で決済。 はじめる