Potewoのブログ

電子工作が好きな学生の書く技術系のブログです。

自宅サーバーの紹介

この記事はWMMC Advent Calendar 2024の16日目の記事です。 この記事では我が家で運用している自宅サーバーについて紹介したいと思います。
アドカレがスカスカだったので書くことにしたのですが、最近マイクロマウスの活動が全くできておらず、ネタ切れなのでマイクロマウスはほとんど関係ない話です。

自宅サーバーとは

文字通り、自宅で動かすサーバーのことです。自分でサーバーを立てようとするとどこかの会社のサーバーの一部を借りる方法(AWSGoogle Cloud Platform、さくらインターネットの諸サービスなど)と自宅で適当なPCを常時起動させてサーバーとする方法があります。前者の方が物理的なPC(サーバー)を管理せずにオンラインで完結できて便利ですが、それなりにお金がかかりがちです。後者の場合、物理的なサーバーをメンテナンスする手間はありますが余っているPCが家にある場合、かかる費用はほぼ電気代のみです。

なぜ自宅サーバーを運用するのか

便利さと楽しさが理由です。このあと自宅サーバーでどんなことをしているのか紹介しますが自宅サーバーでないとできない便利なものもたくさんあります。
また、自分が欲しいものを自分で好きなように作るのは便利であると同時にとても楽しいです。

自宅サーバーで動かしているもの

現在自宅サーバーで動かしているのは以下の5つです。
- homebridge - 自作英単語Webアプリ - 自作英文読み上げWebアプリ - jupyterlab - ROS2学習用の仮想環境 以前動かしたけど今は動かしていないものは以下の4つです。 - adguard - stable diffusion - mjpg-streamer - octoprint

これらについて1つずつ説明していこうと思います。

homebridge

Appleスマートホーム規格であるHomeKitに対応していないIoTデバイスをHomeKitに対応させるものです。Apple製品を使っていると、HomeKitはOSに組み込まれていて便利ですが、対応製品が少ないのが難点です。メーカーをまたいだIoTの標準規格であるMatterに対応した製品も増えてきてはいますがまだ少ないです。そういった製品をHomeKitで扱えるようにするととても便利です。
また、↓の写真のような扱いやすいダッシュボードも公式が提供してくれているので運用も簡単です。 無駄に二段階認証とかつけられます。

自作英単語Webアプリ

高2くらいのときに既存の英単語帳アプリが気に入らなくて作ったものです。個人的にはとても気に入ってました。最近は新しく英単語を覚えることもほとんどないので使っていないです。
一押しの機能はクイズ機能です。単語が一つずつ出てきてその意味を考えて答え合わせをし、正解できたかやどれだけ早く答えを思いついたかを自分で5段階評価します。クイズに出す問題はその5段階評価を用いて評価が低かったものが優先的に出されるようになっています。さらに絞り込みも充実していて評価が1だったものだけを出題したり過去の正答率が一定以下のものだけにしたり、直近1週間解いたものだけを復習したりできます。 動作も爆速です。

自作英文読み上げアプリ

入力したテキストをGoogleのText-to-Speech APIに渡して読み上げた音声を再生・ダウンロードできるものです。なぜ既存のものではだめだったのか覚えてないです。ただ作ってみたかっただけかもしれません。

jupyterlab

Jupyter Notebookという形式でオンラインでPythonを動かせる環境です。主に外出先でPython環境に手軽にアクセスする目的で立てたサーバーです。気軽にスクリプトを動かしてみたり、簡単なシミュレーションのパラメーターを調整するのに使っています。ブラウザからも操作できますが、iPadにJuno Connectというアプリを入れてiPadからもアクセスしやすくしています。ひたすら値を入れて動かしてを繰り返すだけのパラメーター調整を電車でやると効率的です。

ROS2学習用の開発環境

普段大学で使っているのはWindows PCなのでROS2を動かすためにUbuntu環境を立ち上げるのは少々面倒です。そこでオンラインでどこからでもアクセスできるROS2の環境があると便利なので作りました。gazeboのようなシミュレーションを動かすのは難しいですが、簡単なノードのプログラムを動かしてみるくらいはできます。

adguard

広告ブロックを行えるようにするためのサーバーです。 インストールの時点で苦労したり、ブロックしてほしいものがブロックできなかったりその逆だったりで辞めました。(あまりにうっとうしい広告が多くなってきたので始めようとしたのですが、そもそも広告をブロックすること自体がどうなんだという気持ちもあり...)

stable diffusion

流行りの(流行っていた?)画像生成AIです。OpenVINOというものを使用すれば高価なGPUがなくともIntel CPUで画像生成できると聞いてやろうとしたのですが、結局うまく生成できなかったので止めました。

mjpg-streamer、octoprint

mjpg-streamerはwebカメラの映像を配信するサーバー、octoprintは3Dプリンターをオンラインで使えるようにするサーバーです。以前はWi-Fiにつなげない3Dプリンターしかもっていなかったのですが、最近Wi-Fiにつなげられてカメラも付けられる3Dプリンター(Ender3 V3 KE)を買ったので必要なくなりました。

セットアップ

家で使われなくなったMac mini(2014)をサーバーとして使用しています。Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz、メモリ8GBのモデルです。ノートPC用のCPUのようで低消費電力だと思います。もとから入っているmacOSは残したまま外付けSSDUbuntuを入れてサーバーにしています。
また、各サーバープログラムは仮想環境のdocker composeを使用して管理を楽にしています。

最後に

最後まで読んでいただき、ありがとうございました。
この記事を読んで自宅サーバーに興味が出た人はぜひ挑戦してみてください。

明日はYuki先輩の「【初心者向け】マイクロマウス大会 参戦マニュアル」です。お楽しみに!