夜中にXのタイムラインをぼんやり流していたら、ある投稿が目に止まった。自宅の小型PCにDockerでいくつかのサービスを立ち上げて、スマホから遠隔操作している人の構成図だった。
なぜあれが引っかかったのか、今でも少し不思議だ。普段ネットワーク構成図を見て「いいな」と思うたちではない。でも、あの図を眺めていたら何かがくっきり見えた気がした。「スマホから話しかけたら、家のPCが何かしてくれている」という状態が、なんだかひどく自由そうに見えた。
投稿が頭から離れなくて、そのまま「自宅サーバー」というキーワードで数日かけて調べた。Raspberry Piを使っている人、NASを自作している人、企業が廃棄した業務用サーバーを格安で手に入れてホームデータセンターにしている人。思っていたより何倍も多くの人が、似たようなことをやっていた。
Linux、ほとんど触ったことがない
正直に書くと、私はLinuxの操作をほぼ知らない。コマンドラインで何かする機会がほとんどない生活を送ってきた。Dockerも、自分が作っているプロダクトがDockerで動いているとは知っているが、自分の手で操作したことがほぼない。
だから最初は「自分には遠い話だな」と思って眺めていた。でも調べているうちに、少しずつ考えが変わった。
「分からないことがある」のと「できない」は別の話だ。今は分からなくても、調べながら手を動かせばできることは多い。エラーが出たら調べて直す、それを繰り返す以外に道はないし、その繰り返しこそが目的でもある。
それと、調べているうちに嬉しい気づきがあった。私が開発しているプロダクト(rezona)の本番環境はLinux上で動いている。開発を始めてまだ2か月ほどで、現状は手元のWindowsから接続して作業しているが、本番と手元の環境が「ほんの少し違う」状態でもある。ホームラボを作ろうとしているこの箱が、そのまま本番と同じLinux環境に揃えた開発検証環境としても使えるじゃないか、と気づいた。Windows固有の些細なズレを気にしないで済む。一台で複数の目的が達成できるなら、一石二鳥だ。
何のために置くのか
欲しいのはNASでも写真クラウドのサーバーでもない。私が欲しいのは「24時間何かを走らせていられる、小さな開発用のPC」だ。
最初の目標として設定したのが、中身がほぼ空の極小サイトを一つ、Docker化して公開し、運用しきることだ。サイトの中身はなんでもいい。それよりも「Dockerで包んで、公開して、壊れたら直して、また動かす」という一連のサイクルを、一度自分の手で通すことが目的だ。公開運用の全工程を一度も回したことがない人間が、一度回すことでしか見えないものを見たい、という気持ちがある。
その先にあるやりたいことは、もう少し具体的に決まっている。
一つは、Claude Code(プログラミングを手伝うAI)を24時間常駐させて、スマホからDiscordで話しかけたら作業してくれる構成にすること。あの夜の投稿に近い状態だ。もう一つは、自分のプロダクト開発の検証環境を自宅に持つこと。本番と同じLinux環境で動かせれば、Windows固有のズレを気にしなくて済む。あとはGitHubの定期ジョブや自動化の常駐基地にも使いたい。
ローカルLLM(自分のPCでAIを走らせる技術)は今回はやらない。あれはメモリを大量に食うので、今の1台目には向かない。将来もっとスペックの高い2台目を買うときに一緒に考える予定で、今回は対象外にした。最初から欲張りすぎると必ずどこかで詰まる。
この連載でやっていくこと
今は機材の配送を待っているところだ。届いたら、まずUbuntu(サーバー用のOS)を入れるところから始まる。
この連載では、その過程を一歩ずつ書いていくつもりだ。機材選びから、OSインストール、Dockerの基本、サイト公開、そしてAIの常駐化まで。IT素人の目線で、迷ったことや失敗したことも含めて書く。きれいな完成例を見せるより、途中経過の方が役に立つことがある、と思っているから。
次回は機材の話を書く。どんなPCを選んで、どうやって手に入れたか。最寄りの中古ショップに足を運んだところから始まる。