自前構築サービス(self-hosting, self-hosted)は、「自託管」、「自搭建」とも呼ばれるコンピューター科学用語であり、個人サーバーでネットワークサービスを動かし、大企業が提供するネットワークサービスを置き換えることを意味する。
WikipediaのSelf-hostingの定義を参照:
Self-hosting is the practice of running and maintaining a website or service using a private web server, instead of using a service outside of someone’s own control. Self-hosting allows users to have more control over their data, privacy, and computing infrastructure, as well as potentially saving costs and improving skills.
たとえば、一台のサーバーを購入して家に置き、NextcloudをインストールしてGoogle Driveを置き換え、データをすべて自分の手で管理する。これが一種の自前構築である。
自前構築サービス(self-hosting)が指すのは、単にWebサイトやファイルサーバーを立てることだけではない。個人用の一連のWebサービスを構築することだ。あなたが思いつく商用ネットワークサービスのほとんどには、自前構築できる代替品を誰かが作っている。
この記事では、自前構築する理由と具体的なやり方を論じる。
自前構築の理由#
現在のインターネットの時代、人々は特定のネットワークサービスを提供する会社を探し、そのサービスを使って依存し、個人データをそこに置く。
よくあるネットワークサービスには:フォトアルバム、カレンダー、クラウドストレージ、ブログ、コンテンツ管理システム、電子書籍、音声・映像ストリーミング、パスワード帳、ノートソフトウェア、ゲームストリーミングサービス、検索エンジン、VPN…などがある。
しかし多くの会社は無料を呼び物にし、利益を得るために、しばしばユーザーのプライバシーを売り渡す。たとえばユーザーデータを収集して広告を配信する。これは一種の等価交換と言えるだろう。さらに商業競争のために、さまざまな方法でユーザーを引き止め、ユーザーに自分の重要データを両手で差し出させると同時に、下賊船的代價を高め、永遠に離れられないようにする。
上記の前提が成立する状況で、個人データを一人の人間の心血の結晶と見なすなら、それは最も貴重な資産である。そしてこの資産は縛られるべきではない。ユーザーに心の余力があり、自分のデータの自主権、プライバシー権を気にしており、個人の権益を犠牲にしてデータを大企業にがっちり管理されたくないなら、唯一の方法はサービスを自前構築することだ。
自前構築サービスは、単にWebサイトを立てることではなく、個人用の一連のWebサービスを構築することだ。
自分のサーバーを持ち、その上で自分が欲しいネットワークサービスを動かし、いつでもどこでもアクセスする。データは完全にあなたの手にあり、どの企業にも支配されない。
それでも商用クラウドストレージを使う必要があるなら、それらはコールドストレージのバックアップ先として扱えばいい!ファイルを暗号化して鍵をかけてから投げ込む。
ハードウェアシステム部分では、自前構築サービスは通常Linuxシステム上で動く。これはオープンソースで無料、ユーザーが自主的に制御できる自由なシステムだ。
動かすWebサービスについては、ネット上に同級の商用サービスに対する代替品が非常に多くあり、その多くはオープンソースソフトウェアである。ユーザーは自前構築の代替案を簡単に見つけ、自分のサーバー上で動かせる。問題があれば、ネットフォーラムの使い方に慣れていればすぐに答えを得られるし、機能に貢献することさえできる。
何でも自前構築すればいいわけではない#
私も、あなたが何でも自前構築しなければならないと言っているわけではない。現代人は特定企業のネットワークサービスから離れるのが難しい。特に多くの人が毎日スマートフォンを使う状況では、自前構築が時には面倒をもたらす。
たとえばEmailを自前構築するコストは非常に高い。大型機関のネットワークに寄生しない状況で自分でEmail serverを立てるのはとても時間がかかる。uptime問題を考えるだけでなく、フィッシングメールも防がなければならない。これは必要ない。高プライバシーのEmailが欲しいなら、ProtonmailやTutanotaへ替えればよい。
また、複数人で使うサービスの場合、同級生/同僚に自分の自前構築クラウドストレージや、さらには会議システムまで使わせようと強制し、過程が面倒になり効率まで足を引っ張るなら、それは割に合わない。
自前構築を考えると同時に、便利さと個人の権利の間で取捨選択する必要がある。私は、扱うデータが個人プライバシーファイルに関わる時にこそ、自前構築サービスを検討する価値があると思う。
以下では自前構築サービスの方法を論じる。これはサーバーを借りる方法と、Homelabを建設する方法に分けられる。
1. サーバーを借りる#
サーバーを借りるのはWebサイトを立てるのと同じで、ホストの使用権を購入することだ。たとえばAWS、GCP、Azureで、通常は使用量に応じて課金される。私が知っている比較的特殊なホスティング事業者にPikaPodsがあり、彼らはDockerサービスだけを売っているので価格が安い。
しかし上で、大企業の商用サービスに依存するなと言ったのでは?ここで買うのはサーバー使用権であり、単に商業会社の製品を使うだけではないので、自主性が比較的大きい。買っているのがサーバー使用権である以上、個人用途だけなら基本的にホスティング事業者はあなたがサーバーで何をするかを気にしないし、追跡する暇もない。
完全なサーバーアクセス権を購入すれば、自分が動かしたいサービスを構築する元手が手に入る。
ホスティング事業者は通常、固定アクセスできるIPを提供する。自分で購入したドメインと組み合わせれば、いつでもどこでもSSH接続できる。
十分な金を払えば、大型企業が提供するホストには切断問題が起きない。
一部のホスティング事業者はバックアップとSSLサービスも提供してくれるので、ローカルハードウェアの破損を恐れなくてよい。
つまり、あなたは金を払ってサーバーを借り、保守コストを減らしながら、いつでもどこでも使える可用性を得る。
最も安いプランを買うとしても、踏み台(VPN)を立てる用途にはなかなか良く、以下のhomelab方式を受け止めることもできる。
2. Homelabを建設する#
もう一つの方法は、設備を買ってhomelabを作り、ローカルに自分のサーバー環境を構築することだ。サーバーを置く場所は自宅、倉庫、あるいは地下室でよく、ネットに繋がればよい。1990年代、人々はこうやって自分のWebサイトを立てていた。
長期的に見ると、電気代とネット代を払うほうが、サーバーを借りるより安くなる可能性があり、後から買い足したりアップグレードしたりするのも比較的簡単だ。
ただし保守は少し不便だ。というのも、個人的には既製のNAS製品を買うと別種のlockdownになると思っているため、私は自作サーバーを組み、そこにLinux/BSDをインストールするほうに傾いている。しかしこれは保守コストも上げる。バックアップやハードウェア破損の問題を含み、ファイアウォール規則も設定しなければならない。これらをすべて理解した時、あなたはもう半分システム保守エンジニアになっている。
しかし自分でハードウェアを準備する利点は多い。導入コストが低く、時には新しいハードウェアを特別に買わず、古いPCにLinux/BSDを入れるだけで適当に実験を始められる。サーバーの多くはheadlessサービスであり、CPU性能だけを食うからだ。
それに、多くのソフトウェアはRaspberry Piでも動くように考慮されている。Raspberry Piで動くものが、あなたの古いCPUで動かないはずがあるか?
Unraidと組み合わせてバックアップを行い、さらにUPSを購入して停電によるサーバー破損を防ぐ。
3. 折衷方法:住商混合コミュニティ#
現在あなたが使っているメインPCで自前構築サービスを動かし、入門練習に使う。そんなこと可能なのかと言うかもしれないが、可能なのだ。今では多くの自前構築サービスはDockerで動かせるので、複雑な環境を組む必要がない。メイン環境がLinuxでなくても、Windowsには仮想マシンやWSLが使える。しかも仮想マシンのものはメインシステムと隔離されるので、実験にはさらに便利だ。
電気代を気にしなければ、PCをシャットダウンせず維持できる(台湾はそんなにしょっちゅう停電しないはずだよね、民主の聖地だしね)。自前構築サービスの実験をするのは難しくない。
外部ネットワークから自宅PCへアクセスする方法はたくさんある。リモートデスクトップも不要、VPN踏み台を立てる必要もない。内網穿透ソフトウェアを通じれば、公開ネットワークからプライベートネットワークへ簡単に接続でき、転送は全過程で暗号化される。
さらにサービスを立ち上げれば、SSH+Webパネルでサービスをリモート管理できる。


