9 ポイント 投稿者 GN⁺ 2024-09-19 | 1件のコメント | WhatsAppで共有
  • クラウドとサブスクリプション型サービスが一般化した2024年に、自分でシステムを設定しながら学ぶソフトウェア中心のセルフホスティングを趣味として改めて試してみる価値がある
  • セルフホスティングはプロプライエタリなサービスへの抵抗になり得るが、時間と精神的コストが大きいため、楽しさと探求が最も重要な動機となる
  • 初心者は物理サーバーがなくても始められ、Uberspaceのような共有ホスティングでSSH接続し、10GBのストレージと1.5GB RAMの環境を使える
  • UberspaceではDockerを使えないが、Uberspace LabsとAwesome-Selfhostedを参考にして、Actual BudgetMinifluxのようなサービスを運用できる
  • 個人ドメインを接続すると、サービスごとのサブドメイン、カスタムメールアドレス、公開ファイルホスティングを構成でき、セルフホスティングの成果物をより簡単に見せて維持できる

クラウド以前のパーソナルコンピューティング感覚

  • 2000年代にはソフトウェアやゲームがDVDで配布され、パーソナルコンピューターはユーザーが自分で扱う計算装置という性格が強かった
  • 2010年代にはChromebookとクラウドサービスが普及し、多くのソフトウェアが他人のコンピューターで実行される方式へ移行した
  • 広告に続いてサブスクリプションがオンライン収益化の主要な方式になるにつれ、利便性と引き換えにユーザーが制御権を手放す流れが強まった
  • その結果、コンピューターサイエンスを学ぶ世代の一部はコンピューター愛好家として出発する機会が少なくなり、初期のハッカー的な姿勢も弱まりつつある

趣味として取り組むセルフホスティング

  • セルフホスティングは、プロプライエタリが支配する環境でデジタル上の自己に対する制御権を取り戻す行為になり得る
  • 純粋な実用性だけで見れば、ホスティングを他所に任せるほうが良い選択かもしれない
    • 安定性、同時実行性、冗長性、可用性の管理をサービス提供者に任せられる
    • コストを節約する代わりに、時間と精神的負担が大きくなる可能性がある
  • 知的な面では、システムを継続的に調整するデジタルなガレージに近い
    • 一日の仕事を終えたあと、自分の好きなおもちゃのようなシステムをいじる趣味になり得る
  • 「本物のセルフホスティング」の基準を厳密に問うよりも、ソフトウェアのレベルからでも楽しく始めることが重要

共有ホスティングで最初の環境を作る

  • セルフホスティングを始めるには、まずホスティングする場所が必要
  • 推奨ホスティングとしてUberspaceが挙げられている
    • 「ドライバーを渡すので、建物を燃やさない程度に楽しくやってみて」という感じのホスティング
    • 月末の後払い方式なので、最初の月は実質的に無料体験のように使える
  • アカウントを作ると、インターネットに接続されたコンピューターへSSH接続できる
    • 提供環境は10GBのストレージと1.5GB RAM
    • lsを実行すると、空の新しいユーザーディレクトリを確認できる

インストールするソフトウェアの選び方

  • Uberspaceで使うソフトウェアを探す際、特に役立つ資料が2つある
    • Uberspace Labs: Uberspaceでさまざまなソフトウェアをインストールする方法を扱う専用ガイド
    • Awesome-Selfhosted: セルフホスティング可能なソフトウェアを幅広く集めたリストで、ある程度コミュニティのあるプロジェクトを探すのに適している
  • UberspaceではDockerを使用できない
    • メモリ制約のため、完全な仮想化スイートを実行するのは難しい
    • 大型ソフトウェアやDocker専用インストールには不便だが、ソースからインストールしたり、Docker化プロセスの最終ランタイムをビルドイメージのように取り出したりする回避策がある

例1: Actual Budgetで財務データを自分で管理する

  • Actual Budgetは高速でプライバシー重視の財務管理アプリ
  • 支出、純資産、消費パターンなどを追跡したいユーザーに合っている
  • 機微な金融情報を他のサービスに預けず、ブラウザ経由でどこからでもアクセスする形で運用できる
  • 予算管理の中心にはEnvelope Budgetingの方法論がある
  • Uberspaceのインストールガイドはguide_actualで見られる
  • レポートセクションを見ると、金融データを切り分けて表示・分析できる
    • 小さな買い物だと思っていた項目も、1か月分を合計すると大きくなることがある
    • 通勤費が予想以上にかかっている、といったインサイトを得られる

例2: MinifluxとRSSでフィードを取り戻す

  • Minifluxはミニマルで明確な思想を持つフィードリーダー
  • RSSを使えば、好きなニュースメディア、雑誌、ブログ記事の更新を一か所で確認できる
  • YouTubeの登録チャンネルも、広告のない専用フィードタイムラインのように構成できる
    • YouTubeはRSSフィードを提供している
    • 埋め込みYouTubeプレーヤーには広告がない
  • UberspaceにMinifluxをインストールした後、好きなYouTubeチャンネルのフィードを追加できる
  • 設定でFever APIを有効にすると、Fever APIを読めるRSSクライアントがクラウド上のRSSアグリゲーターにアクセスできる
    • Appleエコシステムでは、Golden Hill SoftwareのUnreadが推奨されている
  • ニュース用とウェブコミック用のフィードカテゴリーを分けることもできる
    • ウェブコミックの例としてxkcdsmbcoatmealが言及されている

個人ドメインで見せる場所を作る

  • セルフホスティングの楽しみの一つは、自分が作ったものを見せること
  • 個人ドメインは自分だけのオンライン空間として機能する
  • ドメイン登録サービスとしてPorkbunが推奨されている
  • awesauce.comのようなドメインがあれば、さまざまな構成が可能
    • Uberspaceでホスティングするサービスをactual.awesauce.comminiflux.awesauce.comのようなサブドメインに接続できる
    • メールプロバイダーがカスタムドメインに対応していれば、contact@awesauce.comのようなアドレスを作れる
      • 実際のメールサービス提供者は後で変更しても、アドレスは維持できる
      • カスタムドメインのメールは有料の場合がある
    • サブドメインやURLパスをGitHubリポジトリに接続し、履歴書のような公開ファイルをawesauce.com/files/resume.pdfで提供できる

あえて残された次の探求

  • この記事の目的は、詳細なステップ別チュートリアルよりも、自分で触ってみたいという好奇心を作ることにある
  • 読者が自分で探求する課題として、特定の商品が再入荷したりWebサイトが変わったりしたときにモバイル通知を送る方法が残されている
  • 関連するHacker Newsの議論は該当スレッドで続いている

1件のコメント

 
GN⁺ 2024-09-19
Hacker News のコメント
  • 古い感覚からすると、共有ホスティングに料金を払うことが今では「セルフホスティング」と呼ばれているのは驚きだ。それ自体が悪いという意味ではないが、10年前なら絶対にセルフホスティングとは呼ばなかったと思う。
    「一から料理する」の意味が変わったのに似ている。19世紀の料理本なら材料に「豚1頭」と書いて屠畜するよう指示していたかもしれないが、今では当然、発泡スチロールのトレーに入った豚肉の部位を買う、という形になる。

    • 用語そのものにも問題がある。セルフホスティングコミュニティは /r/selfhosted を中心にかなり技術寄りの雰囲気で、コンピューターをいじるのを楽しむ人たちに近い。キットカーを組み立てる人たちのような感じだ。
      しかし、セルフホスティングの利点を享受できる一方で、あらゆる細部を理解する必要はない人たちも大きな市場を形成している。たとえば自分のドメインでマネージドサービスを使えば、データ所有権、オープンソースソフトウェア、プロバイダー間の競争といった利点をかなり得られる。なので、もっと広い用語が必要に思えるし、最近はインディーホスティングという表現を使っている。
    • ホスティングプロバイダーを使うなら、たとえ自分でソフトウェアをデプロイしていてもセルフホスティングではない、と言う人は間違いなく多い。
      一般に受け入れられている例外はネットワーク保護の方面だ。できれば自宅のIPアドレスを外部にさらしたくないので、Tailscale、Cloudflare Tunnel、またはVPSをプロキシとして使う人は多い。
    • 自分も古い人間になりつつあるようだ。自分のハードウェア上で動かすものだけを本当のセルフホスティングだと見るほうだ。
      それでも足りないなら、自分で育てて捌いた豚の肉と、自家製の塩漬けベーコンも冷凍庫にある。「新しい世界に生きる古い魂」という言葉がかなりしっくりくる。
    • 自宅でホスティングすることは、もともと家庭向けインターネットプロバイダーの利用規約上の制限に引っかかる可能性があった。初期にセルフホスティングをしていたときも、自分のシステムを他人のラックに載せ、そのネットワークを使うために料金を払っていた。
      そのハードウェアを借りていたにせよ、自分でサーバーを組んでいたにせよ、プロバイダーが提供する仮想マシンを使っていたにせよ、保守作業量は似たようなものだ。それでも Wix/Squarespace、Geocities、ソーシャルメディアプラットフォームを使うのとはやはり違う。
    • 原文の筆者もある程度は同じ考えだ。
      「なのでここでは『本当のセルフホスティング』ではないが、ともかくセルフホスティングへのやさしい入門を書いてみる。訴えたければどうぞ。」と言っているので :)
  • セルフホスティングが本当に好きで、ここ数か月かなり深くハマっている。今は会社用サービスとホームラボをいくつも運用しており、Hetzner VPS に Ansible + Docker Compose ファイル、または https://github.com/coollabsio/coolify/ でデプロイしている。
    awesome-selfhosted リポジトリもセルフホスティングするプロジェクトを探すには良いが、使いやすさの機能が足りないので、少しユーザー体験を改善したディレクトリを https://selfhostedworld.com に作った。検索、スター数/人気/日付フィルター、ダークモードがある。

    • この分野に詳しそうなので聞きたい。ネットワークにはあまり慣れていないが、ある程度の技術知識がある人が、自分のネットワーク上のコンピューターをインターネットに公開するのはどれくらい危険なのか?
      現代的なツールや仮想マシンを使えば比較的安全なのか、それとも毎週ソフトウェアアップデートを確認するように継続的に気を配る必要があるのか知りたい。昔からサーバーを立ててみたかったし、今は余ったノートPCができたので、少なくともNASでも動かしてみようかと考えている。
    • 自分のSaaSも「Heroku代替」セクションに入れられるだろうか?
      https://ptah.sh
    • かなり良い。sish と inlets が見えるが、似たツールをずっと多く集めたリストがここにある: https://github.com/anderspitman/awesome-tunneling
      認証方面ではOIDCサーバー比較も作ってある: https://github.com/lastlogin-net/obligator#comparison-is-the...
    • Coolify のように、ほかのサーバー向けの管理プレーンを提供するソフトウェアの種類を呼ぶ名前はあるだろうか? Dokku のようにそのサーバー上で直接実行される方式と対比される種類のことだ。
  • 「お金で節約した分、時間とメンタルを失うので実用的には愚かだ」という言い方があるが、セルフホスティングのコミュニティでは Kubernetes はあまり好意的に見られていないことが多い。とはいえセルフホスティング全体がそもそもそういう面を持っているので、いっそ最後まで突き進むのも悪くない。
    Dell R720XD 3台に NixOS を入れ、k3s マルチマスターとして動かしている。ストレージは rook/ceph を使い、サイズがまちまちなハードディスクが12台ほどある。一番好きなパーティ芸は、動画ストリーミング中にクラスタから適当なハードディスクを引き抜くことだが、まったく気にしない。差し直せば何事もなかったかのように戻るし、まだ容量もかなり残っているので、引き続きホスティングする有用なものを探している。

    • セルフホスティングに k8s や k3s を使う人は多い。ただし多くの人にとっては、追加される複雑さに見合うだけのものは得られない。たいていは単一ノードなので、Docker だけで必要なことはすべてできる点も考慮すべき。
      個人的には小さなデスクトップ4台構成でも Docker Swarm を使っている。そのハードウェアなら電気代だけで月200ドルは簡単に行きそうだ。Docker Swarm は古くて人気はないが、素の Docker よりほんの少し複雑なだけで、マルチノードのデプロイとオーケストレーションに必要なことは全部やってくれる。
    • 私は NixOS を仮想マシンとして使い、サービスはコンテナで直接実行している。Docker Compose プロジェクトを NixOS で簡単に動かせるツールも作った [1]。
      こうすると NixOS 設定の利点を得つつ、nixpkgs にないかもしれない任意のアプリケーションも実行できる。ストレージはハイパーバイザである Proxmox 側で ZFS を使い、ローカルには NFS で公開している。
      [1] https://github.com/aksiksi/compose2nix
    • ホームラボで k8s はやりすぎ。それでもやる理由は、セルフホスティングが実用性1に対して学習2くらいの比率だから。
  • 原文はこの点をうまく突いている。「2024年なのだから、そろそろ自分たちのシステムを自分で設定する根本的な楽しさを振り返る時だ。」
    セルフホスティングは本当に楽しい。学習、挑戦、実用性が混ざっているからだ。Actual Budget と Changedetection.io には +1。ただし脅威モデリングとセキュリティを扱っていない点は -1。原文の著者は HTTPS を使っているが、ウェブサイトを公開インターネットに開放している。始めたばかりの人は LAN 専用でホストするか、かなり強固にロックダウンすべき。ただし共有ホスティングでは IP 制限やトンネリングのようなものがないと難しいことがあり、uberspace がそうしたものを提供しているかは分からない。初期段階を過ぎた人には、複数のアプリを並べてさらに動かすために Docker のようなものを勧める。バンドルされた依存関係は最高。Docker 方式も扱っている自分の本を少し宣伝すると: https://selfhostbook.com

  • ほかの古参の人たちの意見に同意する。
    所有または借りているスペースで自分のハードウェアが動いていないなら、それはセルフホスティングではない。今は小さな Micro-ITX ボックスを1台使っているが、昔は 6U サーバー、UPS、ネットワーク機器を収めた本格的なサーバーラックもあった。結婚する前の話だ。

  • セルフホスティングが大好きだ。小さな趣味プロジェクトをやりながら多くを学んだ。
    私の構成が気になる人向けに書くと、eBay で中古の Dell R630 を安く買った。SSD 1TB RAID 1、RAM 32GB、32コア構成で、Docker、virsh、minikube で小さな趣味アプリを動かして楽しんでいる。3つとも学んだ。1Gbps の光回線があり、IP が変わったかどうかを cron ジョブで1分ごとに検出し、Linode API で DNS の A レコードを変更している。

  • RAM 1.5GB、ディスク 10GB だって? Hetzner の基本クラウド VPS は 4GB RAM と 40GB ディスクで4.51ユーロだ。

    • 私の知る限り、Oracle Cloud に勝つのは難しそうだ: https://www.oracle.com/cloud/costestimator.html
      コンピュートは「各テナンシで Ampere A1 Compute インスタンスを作成できるよう、毎月最初の 3,000 OCPU 時間と 18,000GB 時間を無料で提供する。この無料枠の使用量は、ベアメタル、仮想マシン、コンテナインスタンス全体で共有される」とのこと。ブロックストレージは「Block Volume サービスの無料枠許容量は、テナンシ全体で合計 200GB。同じテナンシに複数の見積もりがある場合でも、合計 200GB のみが適用される」という形だ。つまり 4コア ARM CPU + 24GB RAM + 200GB の容量を無料で持てる計算になる。
    • 潜在的な価格差も見ている?
  • ネタバレすると、この記事はセルフホスティングではなく共有ホスティングについての記事だ。

  • ところで、誰かが耳元で K8S とささやいたら……

    • そういえば次のアップグレード枠に備えるため、自分のホームラボの K3S クラスタに更新された CRD を食わせに行かないと。
  • このガイドを卒業したら、/r/homelab と /r/homedatacenter もぜひ確認するといい ;)