世界を動かす技術を、日本語で。

なぜセルフホスティングするのか?

概要

  • 個人サービスのセルフホスティング の推奨理由を解説
  • プライバシー保護デジタル主権 の重要性を強調
  • 具体的な セルフホスティング推奨サービス 例を紹介
  • 運用ノウハウ や注意点、ハードウェア選定のポイントを説明
  • 今後検討したい アプリやリソース もリストアップ

なぜ個人サービスをセルフホスティングすべきか

  • セルフホスティング は、サーバーやアプリケーションの構築・管理を自分で行う運用形態
    • ハードウェア投資や設定の手間がかかるが、 大手クラウド企業政府 による監視リスクを低減可能
  • プライバシー保護 の観点から、個人データの取り扱いを自分でコントロールできるメリット
    • 家族や友人にも知識を共有し、 非技術者のサポート も視野に
  • カレンダーや連絡先 は、個人情報の宝庫
    • 予定や連絡先のデータから、 交友関係・健康・財務情報 など多くの情報が推測される
    • GoogleやApple等がこれらを管理している現状に疑問
  • 位置情報 も重要な個人データ
    • Google Maps等が長期間にわたり 詳細な位置履歴 を記録している事例
    • データの 主導権 を自分で持つことの重要性
  • デジタル主権 の確立
    • アカウント凍結等で 大手企業に依存するリスク
    • 標準プロトコル(SMTP, IMAP等)や オープンな仕組み の活用推奨

セルフホスティング推奨サービス例

  • カレンダー & 連絡先

    • CalDAV / CardDAVサーバー の自前運用
      • Radicale(シンプル、Appleデバイス非対応)
      • ⭐ Baïkal(マルチユーザー、高機能UI、PHPベース)
      • DAViCal, Xandikos, Nextcloud(多機能だが重い場合も)
    • アプリのアクセス権 も定期的に見直し
  • メールサーバー

    • StalwartMailcow 等の進化で個人運用が容易に
      • マーケティングメールではなく 個人用インボックス 向け
      • 自宅運用は非推奨 (静的IP必須、ネットワーク要件高)
      • クリーンなIPアドレス取得、DNS/SPF/DMARC/TLS等の設定必須
      • internet.nl で動作確認推奨
  • スマートホーム

    • Home Assistant のセルフホスティング
      • クラウド依存型スマートホーム企業の サービス終了・値上げリスク 回避
      • Philips Hueのような アカウント強制化 にも対応可能
      • ローカルネットワークでの 完全運用 を目指す
      • エネルギー使用量の自動計測 など独自開発も可能
  • RSSアグリゲータ

    • FreshRSS 等のセルフホスティングで 情報収集の主権 確立
      • NetNewsWireとの連携や フィード自動化 も可能
  • 位置情報トラッカー

    • dawarichOwntracks 等のサーバー運用
      • iOSやAndroidアプリから 自前サーバーへ位置情報送信
      • バッテリー消費やUI にも注意

ハードウェア・運用体制

  • Kubernetesクラスタ による高可用性構成
    • 複数台のミニサーバーで 柔軟なアプリ運用 実現
  • enum.co のようなデジタル主権重視企業での実践例

今後検討したいアプリ・リソース

  • EteSync (エンドツーエンド暗号化CalDAV/CardDAV)

  • AnyType (セルフホスト型AnyTypeサーバー)

  • Iimmich / ente (iCloud Photo代替の写真管理)

  • Passbolt (パスワード管理、Bitwarden非推奨派向け)

  • BirdNET (鳥類音声検出)

  • penpot (FigmaライクなOSSデザインツール)

  • Habitica (習慣管理)

  • vert (ファイル変換)

  • InvoiceShelf (請求書管理)

  • selfh.st (セルフホスト可能なアプリカタログ)

    • これらのサービスを 自分のサーバーで運用 し、 データ主権とプライバシー を守る活動の推進

まとめ

  • セルフホスティング はプライバシー・主権・柔軟性の観点から非常に有効
  • 運用コストや技術的ハードル も存在するが、得られるメリットは大きい
  • 自分や家族のデータを守る ため、まずは小さなサービスから始めてみることを推奨

Hackerたちの意見

「セルフホスティング」を家のクローゼットのサーバーで動かすことに限定すると、常にニッチで重要性がなくなっちゃうよね。SaaSじゃないものは何でも応援すべきだと思う。オープンソースの非サブスクリプションのスマホアプリとか、普通のインストール可能なソフトウェア、簡単に異なるホスト間で動かせるクラウドアプリとかね。ロックインを防いで、ユーザーにコントロールを与えるものが求められてるんだ。

言葉の意味がなくなるのも良くないよね。標準プロトコルを使って移動可能なクラウドアプリも、結局は自分が所有したりコントロールできないサーバーで動いてるし、データ収集やプライバシーに関するポリシーをいつ変更されるかわからない人が運営してる。離れることはできるけど、データが収集される前に移行できるかどうかはわからないよね。どうやって確実に知ることができるの?

Windowsにインストールできるソフトウェアも含まれてるよ。みんな最初はそんな感じで動かし始めることが多いし(多分Dockerでね)。

少なくとも、誰か他の人とサーバーを共同設置するべきだね。電力や接続環境が良いところに。ルート権限さえあれば、それは君のサーバーだよ。

セルフホスティングのメールだけど、デジタル主権の方がプライバシーより重要なら…俺はGmailをカスタムドメインで使って、メールサーバーをセルフホストして、mbysncを使ってGmailから常にメールをダウンロードしてる。で、そのメールサーバーに接続してメールを読むけど、送信はGmailを使う感じ。これでGoogleにメールをロックアウトされることもないし、全てのメールを保持できる。プロバイダーを変えたいときは、ドメインのDNSレコードを変更するだけで済むし、メール配信の問題もないよ。

送信もやってみたらどう?配信の心配があるの?

6年前にSPFやDMARCなどのDNSの設定を全部やったよ。メールに関しては2回ほど問題があったけど、小さなリクルート会社のExchangeサーバーでのことだったと思う。設定ミスだったかな。最初はGmailでも問題があって、自分のアカウントにテストメールを送ってたらドメインが禁止されたこともあった。彼らのメールポストマスターツールのサイトでドメインを登録して、DNSをキーで設定しなきゃいけなかった。全体的に見ると、自動バックアップや理由もなくサービスがダウンすること、IPがダイナミックになることの方が問題が多かった。メールサーバーはちゃんと動いてるよ。

カスタムドメインがあれば、完全なメールの主権が手に入るよ。それさえあれば、何百、何千ものプロバイダーから選べるし、いつでもビジネスを移転できるんだ。

「もっと個人サービスをセルフホスティングしよう。」って言いたいけど、小さなソフトウェアやSaaSビジネスでももっとセルフホストすべきだと思う。クラウドベンダーが思わせたいほどの悪魔じゃないんだ。理由はこう。ほとんどのソフトウェアプロジェクトやビジネスは、クラウドベンダーやその専門知識が必要なスケールや複雑さを求めてない。例えば、NextJSや静的ウェブサイトをデプロイするのにVercelは必要ないし、Netlifyもいらない。シンプルなVPSにUbuntuを入れてNginxやCaddy(俺のお気に入り)をセットアップすれば、あっという間にできる。大半のプロジェクトにはそれで十分だよ。90%以上のプロジェクトは以下のものでセルフホストできる: - セキュリティ対策がしっかりしたVPSサーバー。重要なことをどうやってやるかの良い記事がたくさんある(rootログインを無効にする、sshはキー認証だけにするなど)。 - Caddy(俺のお気に入り)やNginxのようなリバースプロキシをセットアップする。これで静的ファイルが配信できる。静的ウェブサイトも配信できる。1日に何百万のリクエストがあるわけじゃない限り、CDNは必要ない。 - バックエンドやAPIをsupervisorやnative systemdのようなシンプルなものでセットアップする。 - 同じリバースプロキシがバックエンドや他のサービスにリクエストを転送することもできる。そんなに難しくないよ。 - MySQL/Postgresデータベースをセルフホストして、適切なセキュリティ対策を施す。 - 最も重要なのは:すべてのバックアップをスクリプトやcronで設定して、定期的にテストすること。 - もし本当にDOS/DDOSなどから安全を感じたいなら、すべての前にCloudflareを追加する。そうすると、Cloudflare/DNS=>リバースプロキシ(Caddy/Nginx)=>あなたのアプリになる。 - デプロイしたい?Git pullで大抵のプロジェクト(PHPなど)には対応できるよ。バイナリを再構築する必要があるなら、それはもう一つのステップだけど可能だよ。Dockerやコンテナは必要ない。小規模から中規模のプロジェクトには助けになるけど、必須ではない。確かに、これらのことは難しいと言えるかもしれないけど、実際はそんなに難しくないよ。大半のプロジェクトはウェブスケールやそれに類するものを必要としてないんだから。

さらにお得な点があるよ。クラウドサービスとは違って、システムのスキルや知識は持ち運びできるからね。systemdやufw、sshの使い方を覚えたら、他のシステムにも応用できるんだ。Dockerやコンテナ、レイヤービルドのクセを学ぶのにかかる時間やコストは、Debianサーバーでウェブサイトを管理するための学習よりも高いと思うよ。

小規模なビジネスは、ホスティング会社でない限り自己ホストするべきじゃないよ。他の人は地元の小規模な自己ホスティング会社に頼んでホスティングしてもらうべきだ。これは大手の仕事じゃない。地元の誰かに面倒を見てもらいたいよね。コンピュータが故障したときも来てくれるし、アップデートも適用してくれる。来るって言っても、実際に人が来るってことだよ。これにはお金がかかるけど、君はビジネスを運営するべきで、コンピュータを学ぶ必要はないんだ。

その通りだけど、数万リクエスト/秒が必要じゃない限りCDNは不要だと思う。 単一の強力なマシンで、数千や数万のリクエスト/秒を簡単に処理できるからね。

CDNは、1日あたり数百万リクエストの話をしない限り必要ないよ。 Caddyとnginxは、どんな市販のコンピュータでも、1日に数億の静的リクエストを問題なく処理できるからね。 ウェブサーバーソフトウェアでボトルネックになる前に、ネットワークの容量の問題に直面することになるよ。

だからこそ、https://canine.sh を作ったんだ。すべての設定を一手間で済ませるためにね。俺は小さなSaaSの共同創業者で、年間50万ドル以上をクラウドスタックに使ってたんだ。最初の数週間で、Sentryも必要だって気づくよ。そうしないと、エラーが出たときにログを掘り返すだけになっちゃうから。これが月40ドル以上のクラウドサービス。次に、Datadogが必要になるかも。誰かが「ページの読み込みに10秒かかってる」って報告してるのに、再現できないってこともあるからね。これが月300ドル以上のクラウドサービス。さらに、顧客に見せるためのダッシュボードにデータを集約したいなら、LookerやTableau、Omniで年間2万ドル以上。データウェアハウスとレプリケーションも必要なら、年間15万ドル以上かかる。これが延々と続くんだ。理想は、すべての外部サービスを自分のインフラで、共通のプラットフォーム上で運用できることだよ。Cloud Sentry -> 自己ホストのSentry、Datadog -> 自己ホストのPrometheus/Grafana、Looker -> 自己ホストのMetabase、Snowflake -> 自己ホストのClickhouse、ETL -> 自己ホストのAirbyte。ほとんどの企業は最終的にこれに気づいて、Kubernetesに移行するんだと思う。インディーハッカーが「Kubernetesの複雑さ」が必要な理由を理解できないのも、そのせいだと思う。すべてを一つのVPSで運用するだけじゃ足りないんだ。

これに関して一番不安なのは、全体のOSを「管理」することに伴うセキュリティの面だね。カーネルやユーザーランド、すべてのことについて。ファイアウォールを正しく設定できたのか、最新のCVEに追いついているのか、などなど。だから、GHAワークフロー -> コンテナイメージをビルドしてプライベートレジストリにプッシュ -> 適切なポートを公開するトリビアルなk8s設定をすることに惹かれるんだ。誰かの管理されたk8sセットアップ(自分が自己ホスティングする場合はTalos)でそれを実行すれば、自分のVMでやるのとほぼ同じくらい簡単だけど、その場合は自分のアプリケーションとそのインターフェースだけに責任を持てばいいんだ。

これはまあまあ良いアイデアだと思うけど、ビジネスにずっと関わり続けたいならね。とはいえ、あまり良いアイデアとは言えない(もしかしたら、これが顧客のためにやってる仕事なら別だけど)、だって時間を縛られるから。ビジネスが何かをするなら、時間は絶対に最も貴重な資産になるからね。これは僕の経験からの意見だよ。

「ほとんどのプロジェクトはウェブスケールなんて必要ない。」その通り。主要なクラウドプラットフォームのマーケティングは、ライブラリやコードの代わりにインフラに対するYAGNIだよ。00年代初頭にシステム管理者として始めた僕からすると、みんなが自分のものをホスティングすることを新しい革新のように再発見しているのを見るのは、面白いことこの上ない。昔のMongoDBのウェブスケールの動画みたいだね(https://www.youtube.com/watch?v=b2F-DItXtZs)。開発者たちがDockerを発見した時も同じくらい面白かった。僕たちオペレーションチームは、DevOpsの前からLXCやBSDジェイルを使ってコードをコンテナ化してたからね。とにかく、言いたいのは、グレーのひげを生やしたシステム管理者にコーヒーを奢って、手伝ってもらった方がいいよ。みんな、オンプレミスに戻ったり自己ホスティングを再開したりするのを楽しみにしてるし、きっといくつかのトリックを教えてくれると思うよ。

君が言ったこと、110%同意だよ。なんでエンジニアの中には、すべてを過剰に設計したがる人がいるのか理解できない。願望的な考えからなのかな?自分のブログがいつか人気になって、秒間何千件のリクエストを処理することになると思って、今すぐスケールアップしたいのかな?2000年の初めのウェブサーバーがどうだったかを考えると、あんなに多くの抽象化はなかったし、コンテナもなかった。VMすらなかったし、今の基準では全く価値がないと思われるようなハードウェアでやってたんだ。それでも、ちゃんと動いてた。今は1000倍以上速いハードウェアがあるのに、パフォーマンスの半分は無駄な抽象化やオーバーヘッドで捨てられてる気がする。マジで、シンプルなLAMPスタックでうまくやってたサイトはどれだけあったんだろう?

セルフホスティングは素晴らしいし、自分のインフラでアプリを運営する方法がたくさんあることに感謝してる。ただ、バックアップとアップグレードが問題なんだ。俺はたくさんのリソースをセルフホストしてるけど、重要なデータや他の人が頼るようなものには依存してない。アプリを復元・アップグレードする簡単な方法がないと、頼ることはできないよ。ほとんどのアプリでは、バックアップや復元の手順が最小限か存在しない(動かすための一行に比べてね)。ちなみに、TailscaleやPangolinは、自宅から簡単かつ安全にセルフホストするための神のような存在だよ。

どんなバックアップソリューションを期待してるの?自己ホストのアプリは全部Dockerで動いてるから、バックアップはマウントしたフォルダとdocker-compose.ymlをバックアップすればいいだけ。復元する時はフォルダを戻して、docker compose upを再実行するだけでOK。アプリごとに独自の仕組みを実装する必要はないと思うよ、それじゃ開発者の時間が無駄になっちゃう。

パンゴリンって何?検索してみたけど、動物が出てきた。

20年前、じいちゃんはlimewire.comに行って、setup.exeをダウンロードして、次へ→次へ→次へってクリックするだけで、完全に機能するファイルホスティングサーバーとクライアントをインストールできたんだ。2007年には世界中のコンピュータの1/3がlimewireをインストールしてたくらい簡単だったんだよ。[1] なんと、1/3も!今では、最もシンプルな自己ホスト型ソフトウェアをインストールするのにも、実質的にはプロのソフトウェアエンジニアでなきゃダメだよ。SSHを使ったり、Dockerを使ったり、tailscaleを使ったり、TLSを理解して証明書を生成したり、メンテナンスアップデートを行ったり、バックアップを確認したり、自動化できることが山ほどあるんだ。自己ホスト型ソフトウェアが「apt-get install」で済まない理由がわからないよ。Limewireみたいにさ。でも、それが誰も自己ホストしない理由なんだ。

自己ホスト型ソフトウェアが「apt-get install」で済まない理由がわからない。実際にそういうものもあるけど、インターネットからサービスにアクセスできるようにしたいなら、ドメイン名とHTTPSが必要になるよ。LimewireやBitTorrentクライアントを運営するのには、自分でドメイン名を持つ必要はないんだ。中央サーバー(BitTorrentの場合はトラッカー)を使ってピアを見つけるからね。

クリッククリッククリックってわけじゃないけど、やっぱりすごいよ - copyparty

自己ホスト型ソフトウェアが「apt-get install」で済まない理由がわからない。実際にそういうものもあるけど、インターネットからサービスにアクセスできるようにしたいなら、ドメイン名とHTTPSが必要になるよ。LimewireやBitTorrentクライアントを運営するのには、自分でドメイン名を持つ必要はないんだ。中央サーバー(BitTorrentの場合はトラッカー)を使ってピアを見つけるからね。

多くの人がlimewireを「自己ホスティング」だとは思わないと思うよ。それはただプログラムをインストールするだけだから。

自宅ホスティングは、私の生活の中で3つのステップがあるんだ。

  1. Docker Composeファイルを見つける。
  2. exposeの行を変更して、デフォルトの0.0.0.0:9000ではなく、10.0.10.1:9000にする。
  3. WireGuard経由で接続する。 (これは、姉妹コメントが指摘した「セキュリティ」の点にも答えてるよ)

XAMPPはまだ生きてて、メンテナンスもされてるみたい。 https://www.apachefriends.org/ 10年以上使ってなかったけど、まだ頑張ってるのを見ると嬉しいね。

アメリカの著作権の捕食者や、彼らのロビー活動に友好的な法域、例えばドイツのせいだね。 こういうソフトウェアに関わるつもりなら、匿名性を確保するための対策を事前に考えておいた方がいいよ。

どんな粗さやオンボーディングも、頑張れば解決できるってのには完全に同意だよ。ただ、ひとつだけ大事な質問があるんだけど、何を自己ホストしたいの?Limewireはファイル共有だったから、「価値提案」がはっきりしてたよね。「Limewireは何をするのか」も明確だった。自分のウェブサイトをホストしたいの?それともメール?それともGoogleカレンダーやドライブ、フォトの代わりになるもの?そのうちの一部?全部?本当に興味があるんだ。あと、知りたいのは、80%の人がX(自己ホストのファイルストレージやウェブサービス)を望んでいて、残りの長い尾の部分に他のサービスがあるのか?みんなが違うものを求めてるのか?それともニーズはパワーロー分布してるのか?よろしく!

「今日、最もシンプルな自己ホストのソフトウェアをインストールするには、実質的にプロのソフトウェアエンジニアでなければならない。」俺は普通のエンジニアで、ソフトウェアの知識は非常に基本的なものだから、ジュニア開発者として雇われることは絶対に無理だったと思う。夜に勉強して頑張らない限りはね。それでも、NASと個人サーバーをDockerを使って設定することができたよ。ハーバードのCS50みたいな基本的で広範なプログラミングの入門クラスがあれば、自己ホスティングを理解するのに十分だと思う。

「自己ホストのソフトウェアがapt-get installで済む理由がわからない。」Ubuntuはこれをsnapsで解決しようとしたけど、Linuxコミュニティが激怒して反発したんだ。確かに、snapには欠点があるけど、最初はサーバーサイドアプリ向けに設計されたんだよ。最初の目標は「snap install xyz-selfhosted-app」だった。今、Nextcloudをsnapとしてインストールできるよ。でも、Linuxコミュニティは完璧を求めすぎて、良いものを避けるようにみんなを説得しちゃったんだ。

https://info.addr.tools/enum.co

新しいバージョンにどうやってアップグレードするの? セキュリティパッチはどうやって出すの? バックアップはどうしてる? そして、バックアップは定期的にテストしてる? いくつかのソフトウェアのアップグレード手順はすごく簡単だったり、各バージョンを経由しなきゃいけなかったり、もっとひどい場合もある気がする。

あなたはこう書いてるね: 「デジタル主権が単なるフレーズではない会社(enum.co)で働けて幸運だ。」 info.addr.toolsはこう示してる:

enumに対して公平に言うと、彼らが売っているサービスはk8、S3相当、DevOpsに関するものだよ。もし彼らが自己ホスティングや主権メールサービスを売ったり約束したりして、Gmailを使ってるのが「バレた」ら、話は変わってくるかもね。君の指摘は正しい - 彼らは完全に独立しているわけじゃない。OPの記事の言葉遣いも違ったかもしれないけど、OPも「おっと、禁断のフレーズを言ってしまった:自己ホストのメールサーバー。絶対にやるなって言われてたけど、実際はそんなに深く考える必要はない。」って言ってるし、彼らはその問題を認識してる。みんなその問題を知ってるんだよ。問題だよね :-) でも君の言いたいこともわかるよ。

「これはただのフレーズじゃなくて、DNSエントリーなんだ。デジタル主権に関して最も悪質なフレーズを使ってる。」やばい、この人は本気だな。リスペクト。

メールは自己ホスティングの唯一の例外だね。僕はすべてを自己ホストしてるけど、メールだけは第三者に任せてる。

こんにちは、R_Spaghetti。enumの創設者です。確かにその指摘は正しいですね。正直なところ、初期の頃に社内メールにGoogle Workspaceを使うのは、コアプロダクトの開発に集中するための現実的な選択でした。スタートアップではよくある妥協で、今後数週間で改善する予定です。ただ、はっきりさせておきたいのは、私たちの顧客向けプラットフォームとそのデータは、常に100%独立しているということです。私たちのインフラはビッグテックとは完全に無関係です。私たちを責任持たせてくれてありがとう!

自己ホスティングは最高だよ。フルタイムのソフトウェアエンジニアの仕事を辞めて、SaaSに取り組み始めてから約1年やってる。月20ドルのHetznerサーバーでCoolifyを使って、いろんなアプリケーションをホストしてる:Postgres、Minio(コミュニティの中立化前のバージョン)、Nuxtアプリ、NextJsアプリ、Umami分析、Open WebUI、静的サイトなど。確かに学ぶことは多かったけど、今はすべて設定できたから、新しいサイトやサービスを立ち上げるのは本当にプラグアンドプレイみたいな感じだよ。サーバーリソースの1/4も使ってないし(ユーザーが少ないからね笑)。最高だよ。 https://coolify.io/docs/

Fedora CoreOSを使ってNextcloudのインスタンスを作って、S3に暗号化バックアップを取ってるよ。詳しくはここを見てね: https://github.com/jeppester/coreos-nextcloud 簡単に言うと、envファイルを埋めて、ButaneとIgnitionを実行するだけ。READMEはもうちょっと改善しないとね。設定だけで全部できるのが好きなんだ。もし壊れたら、同じ秘密鍵で数分で別のインスタンスを立ち上げられるし、最新のバックアップを取って何事もなかったかのように続けられる。

3年以上、HetznerのVPSをパスワードログインに開放してたけど、セキュリティアップデートもファイアウォールもカーネルアップデートもaptアップグレードもなし。fail2banだけで生き残ったよ: https://oxal.org/blog/my-vps-security-mess/ 僕みたいにならない方がいいけど、もし大失敗しても思ったほど悪くはならないってことに少しは慰めを感じてほしい。VPSでたくさんのものを自己ホストしてるし、最近はRaspberry Pi 5でも自己ホストを始めたんだけど、すごく解放感があるよ!