続・家に!サーバーが!ほしい!!!~IPアドレスモニタリング編~
急に寒くなってきて一層家に引きこもる率が上がってきました、いかさんです。
(引きこもりは季節問わずでは?というツッコミは禁止とさせていただきたく・・・w)
家にいるとPCやスマホをいじる時間が当然増えますよね、もう人生の何割をこういう時間に費やしているかもわからなくなってきましたw
続、と銘打っているからには当然コチラの続編なのですが、執筆当時とちょっとだけ運用を変更しているのでそのあたりも記載できればなーと思います。
目次
変わったところ
まずはそもそものOSですね
Ubuntu→Win11
これは運用していて気付いたことですが、我が家の10G回線(いわゆるクロスパスと呼ばれているやつ)とサーバとしての相性が悪いみたいでIPの固定が難しく、そうなるとなるとわざわざLinuxで運用する意味が薄そうだったので先人たちの知恵や参考文献が多いWin11に舵を切った形になります。
なので接続関連も
ssh→RDP
に変更しています。純粋にWindows環境であればGUIのほうが何かと便利だし慣れてるっていうのが大きいですね。
良さげなRDP関連のソリューション、検討中です。
それではさっそく今回は・・・
サーバーとしての利用に関しては裏でこそこそマイクラやArkのサーバー構築及び公開を試してみたので運用実績〇ですね、ご協力いただいた皆様ありがとうございました。
その中でやっぱりグローバルIPが固定されていないのは結構不便だと感じました。
固定IPの契約も1度試したのですが、10Gとの共存ができないプロバイダのため、固定IP契約を行うと強制的に1G通信を全てのマシンに強いることになり、メインマシンの通信速度がガクッと落ちてしまったのでやむなく断念しました。
速度は速ければ速いほうがいいので、遅くなる選択肢はNGです。
今のメインマシンを母艦として、家庭内の各マシンのIPを一覧化したりモニタリングできるのがかっこよさという面では一番なのですが、サーバー運用という面では外からでも確認できるのがベストということで、今回はdiscordのボットを作ってそいつにIPを報告してもらうことにします。
技術剪定
言語
・サーバーに常駐させる
・サーバーの主目的としてはゲームサーバーおよび(ゆくゆくは)簡易NAS
上記2点からメモリにあまり負担を掛けたくないのでJavaは除外(唯一の得意言語なので雲行きが・・・)
・どうせやるなら興味のあるかつ、ちょっと触ったことがあって学習コストを抑えられそうな言語でやりたい
これでRustかPythonの2択です。
Rustは登場してちょっと経った頃にPlaygroundとかで触っていたので環境構築含めて本格的に触りたい。
Pythonは生成AIをローカルでぶん回していた頃に環境構築と実装やらなんやらを経験済みなので同じことをサーバーにするだけ。
・参考文献は多ければ多いほどよい
第一プログラミング言語でないのでどうしてもインターネットの力に頼ることになってしまいます、その点でもPythonは検索で困ったことがないので一択になってしまいますね、Rustはいつか本を買ってがっつり別で取り組むことにします。
→Pythonで決定
どう確認するか
Slackに飛ばすか、discordから確認させるか、その他にするか・・・
・Slack
→IFFT経由でチャットを飛ばしたこともありますが、基本的に仕事でしか使わないので仕事関連の通知をまとめているiPhoneからしか見れないので前提にもある運用的な面から除外
・discord
→最有力候補です。サーバー好きに作れて消すのも楽、プライベートのチャットもほぼこいつなのでどこからでも見れる、チャットボット作成経験もある。
考えるまでもないような・・・?
・その他
→Lineは専用のチャットボットやアカウントなど考えだすとめんどくさすぎるので除外、他に何かこういう用途におすすめなツールがある人是非教えてください。
→discordで決定
実装&設定諸々
取りあえずの実装
これはゆくゆくはもうちょっとスタイリッシュにしたいですね、チャットのコマンド受けて発行したり前回と変わっている場合のみ通知とか、プロセスの生存確認ログ出すとか。
まぁ今回はこれで何とか動きそうなのでヨシ
discordBot作成
通知用のサーバーは個人的なメモや端末間の簡単な共有に使っているサーバーがあるのでそれを流用、専用のチャンネルだけ作成してチャンネルIDを取得します。
DiscordのDeveloper PortalでBot作成
権限やらなんやら確認してトークンと招待用URL発行
サーバーに追加
実行&動作確認
コンソールにはちゃんとコメントまで出てますね。
サーバー側で起動したことでdiscordBotがオンラインになります。
初回は実装通り、待機なく通知
あとは設定した時間ごとに通知してくれます。
良いですね、しっかり動いています。
これで一々グローバルIP確認しに行く必要もなさそうですし、外出中やPCに触れない時も定期的に確認できるので目的達成とします。
最後に
実装のところでも書きましたが最終的には変更された場合のみ通知、そうでないなら生存ログのみ出力みたいな実装がわかりやすくていいですね、1個前の結果との比較であれば考えることもなく楽そうなので今後実装しようと思います。
理想は家に2本別々のプロバイダから回線を引いて片方のグローバルIPを固定してしまうことなんですけどね。。。
前回のブログにも書いている通り、財布に多少なりとも負担をかけることで妻から浴びせられる冷ややかな目線はなんとしても回避する必要があります。(とてもこわいので)
ただ、回線の冗長化(といえば聞こえが良さそう)は実現したいところでもあるので、いい感じのプロバイダやプランが見つかって現実的になったらプレゼンして勝ち取ろうと思います。
ゲームサーバーとしての運用と、IP固定できない事に対する対応策&discordBotの作成はできたので今後はNAS的な利用に関しても色々考えていきたいと思います!
こんな活用見てみたい!だったりおすすめの活用法などあれば教えてください!!
いかさん
実はイカ嫌いです。
今年こそ痩せます。
と言い続けてきましたがやめました。
何もしなくても痩せられる技術を待ち望んでいます。