私は大学の1年目に、ベッドの下にあるLinuxマシンでウェブサイトを運営していた頃から、ずっとセルフホスティングの世界に関わってきました。数年間はMyth TV、その後XBMC(のちにKodiとして知られる)を使っていました。
インドに住んでいた頃、そこではストリーミングサービスが欧米の基準から見ると非常に安価でした。しかし、私はNetflix、Disney Plus(インドではHotstar)、Spotifyに欧米の価格を払うつもりはありませんでした。また、特に息子のことで、エンゲージメントを追い求める仕組みにもうんざりしていました。「あなたへのおすすめ」や「次に再生」が絶えず表示されることで衝突が起きていましたし、各サービスでコンテンツを制限するのは手間がかかりすぎました。そこで、別の意味でコードを切ることにし、ストリーミングサービスをやめてセルフホストしたJellyfinに切り替えました。その後1年半ほどで、Jellyfinをきっかけに他の多くのサービスもセルフホストするようになり、クラウドプロバイダーへの依存を減らし、ありがたい安定性を得ました。不要なサイトのリニューアル、疑問の残る新機能、利用規約の更新メールの嵐に悩まされることもなくなりました。新バージョンのリリースノートを読み、アップグレードするかどうか、いつするかを自分で決めています。
私には基本ルールがあります。ルーターで動くVPNサーバーを除き、サービスを直接インターネットに公開することはしません。どれほど便利でも、どれほど安全なアプリケーションでも同じです。特にAIを使った攻撃を考えると、賢明ではないと考えています。また、私のISPはIPv4にCGNATを使用しているため、自宅のネットワークはIPv4経由では直接到達できません。VPNサーバーはIPv6でのみ公開されており、これには欠点もありますが、私の用途には十分で、不正な接続試行を減らす効果もあるでしょう。最大の欠点は、公共のWi-FiではIPv6が提供されていないことが多く、VPNがほぼ機能しないことです。スマートフォンを使うときは、Wi-Fiを切ってモバイルデータ通信で接続しますが、電波があればの話です。
できる限りサービスをネイティブに動かすことを好み、複雑なものや依存関係が多いものだけをコンテナ化します。Goの単一バイナリのサービスは大歓迎です。一方で、Docker Composeファイルしか提供されず、MySQL、Redis、さらに3つのコンテナを必要とするようなサービスは、すぐに代替品を探します。依存関係が多すぎなければ、ネイティブのほうが優れていて、速く、効率的です。複数のサービスで同じ管理ツールやコマンドを使えますし、コンテナに入ってコマンドを実行する手間や、curlが入っていないことに気づく煩わしさ、busyboxのため引数がすべて異なるといった問題、仮想ネットワークやホストのポートマッピングを扱う負担もありません。
関連して、今の私はDockerを使っていません。原則的な理由ではありませんが、サーバー上で別のサービス管理システムを扱うことに疲れたのです。すでにsystemdを使っており、現在ではPodmanのsystemdとの統合が非常に優れています。
ハードウェア:昨年、Beelinkのミニ PCを購入しました。具体的にはS12 Proで、Intel N100プロセッサ、16 GB RAM、512 GBの内蔵SSDを搭載しています。価格はユーロで180でした。ブームの前だったからです。同じ商品のAmazonでの現在の価格は359ユーロです。ああ、高い!サーバーには、メディア保存用の6 TBのハードドライブが接続されています。Hacker Newsに投稿した「セルフホストしているもの」のコメントに、16 GB RAMでこれらすべてをどう動かしているのかという質問が寄せられました。以下に説明するように、サーバーの負荷を減らす選択をいくつかしていますが、結局のところ…
出典: Hacker News · 要約:HeadlinesBriefing