このブログをネットの海に解き放ってからそろそろ1ヶ月だ。正確な稼働実数でいうとサーバの構成を変えていたり、LAN内で実験をしていた期間が少々あるので1か月ではないのだが、約一か月ということで色んな思ったことや新しく学んだ技術などについて独り言を書いていこうと思う。
まず思うのは自宅サーバでネット全体にサービスを公開するのはリスキーだというイメージが大分無くなった事だ。高校生の時、クラスの数人でマインクラフトのサーバなんかをラズパイで建てていたことがあったのだが、その時はルーターからポート開放をしてサーバを公開していた。たまにクラスの人間しか入れない様にかけていたminecraftのログインパスワードを海外のハッカーに突破されて世界を荒らされるなどの事件が起きて、その時はあまりサーバやネットワークの基本が分かっていなかったのでサーバ本体にまで侵入されないかと怖さを感じていた。
だが、今から自宅で何かwebサービスをホストする環境を作るなら、そもそもポート開放をしない道を模索することが大事だとサーバを建てていく過程で感じた。一昔前はサーバを建てて公開するならポート開放!という感じだったが、今日ではポート開放をせずに主にtunnelと呼ばれている技術でリスクを減らしてサービスを公開できる。自分はtailscaleやcloudflareを使っているが、特にtailscaleは日常使いもしやすく公式ドキュメントが丁寧で、仲間内でのみサービスを公開したり、デバイス間の高速なファイル転送機能なども利用することができ、無料で多機能で使い勝手も良いのでサーバを建てていない人でもおすすめ出来る。cloudflareはよりサーバやwebサービス向けで、強固なセキュリティやbot対策を設定できたり、どの地域からどれだけのアクセスがあるのか、ハッカーはどんなページをターゲットにしているのかなど様々な情報が分かりやすく閲覧でき、cloudflareを今まで使った事がなくても数日勉強をすればある程度は使えるようになった。
ネットワークの分離に加えてもう一つのポイントになるのが、サーバの仮想化だ。ここでいうサーバの仮想化とは外部のレンタルサーバなどを借りるということではなく、物理的なサーバの中に更に仮想的なサーバを作り、仮想的なサーバの中でサービスを動かすということである。このサイトも実は仮想サーバの内部で動いている。仮想サーバのメリットは、何か作業の間違いを犯してもすぐに数分前の状態に復旧できることにある。物理サーバでは何か間違いをしてどうやっても自分の技術では復旧できないとなればOSを再インストールするしかなくなることもあるが、仮想サーバでは数クリックで数分前の状態を復元して作業をやり直せる。これはとても便利で、昔はサーバの仮想化なんて使えるCPUパワーやメモリが減るだけだと思っていた自分でも、もうこれ無しではサーバ運営なんてしたくないと思うまでになった。仮想サーバを乗っけているサーバOSのメモリやCPUの消費は予想していたよりずっと少なく、15年前の第二世代i7と4GBのメモリ、遅いHDDの貧乏サーバでもとても快適に動作する。(さすがにメモリは増やしたいが…)また、仮想サーバは作成後でも割り当てるCPUのコア数やメモリの容量、ストレージの大きさなどを変更できるため、実行しているプログラムの負荷に合わせてより負荷のかかる仮想サーバにリソースを割り振る事も可能だ。
色々書いたが、自分でサーバを建ててサービスを公開する過程はとても勉強になるし、なにより面白い。現状、このサイトへのアクセスの8割ほどはハッカーが手当たり次第に送っているBotからのアクセスだが、残りの2割の人に刺さるような記事やモノ、工夫をしていきたいなと思っている。

↑ テストをしていたころのサーバ
メモリスロットは4本中3本認識しない限界仕様(biosを焼き直しても無理だった)
全部でリサイクルショップで2~3000円くらい..?
最近は青色のマザボはあまり見かけない
本音を言えばもうちょい電気食わなくてメモリ16GBくらいのミニPCが欲しい

