「自宅サーバー」というと、最近では自宅でビールサーバーが楽しめるサービスの方を思い浮かべる方が多いくらいマイナーなものとなっている2021年の夏ですが、現在自宅サーバーを2台運用しているので、今回は自宅サーバーについて軽い話題を中心に書いてみます。
自宅サーバーとは
一応定義を書いておくと、自宅に物理的なサーバーを置いて運用することです。
2000年代に出てきたレンタルサーバー、その後に出てきた VPS、あるいは AWS 等の IaaS といった便利・安価なサービスは使わないので、一種の道楽という認識の人も多いかもしれません。
自宅サーバーのメリット
自宅サーバーは、単なる趣味では無く、実益もあります。
技術力が身に付く
1番大きなのは、自宅サーバーの構築・運用を通じて技術力が身に付くことです。
自宅サーバーを稼働させるには、以下のような作業が必要です。
- PC に Linux 等をインストールしてサーバーにする
- ★その後サーバーの設定をする
- ドメインを取得し、DNS の設定をする
- 自宅のルーターの設定を行う
また、上に挙げたような必須の作業以外に
- OS のインストールにあたり、パーティションの分割を行う
- PC を自作する
- LAN ケーブルを敷設する
などをする人もいると思います。
また、「サーバーの設定」と一言で書きましたが、実際には
- ネットワークの設定
- ウェブサーバーの構築、設定
- その他、各種サーバーの構築、設定
などがあります。こうしたことを1人でやると、色々調べざるを得ないため、自然に技術力が付きます。
安く環境が手に入る場合も
ウェブサーバー、メールサーバーなどは安価なサービスが沢山あるため、自宅サーバーで運用するのは、コストだけを考えると(10年以上前から)割りに合わなくなっています。ただ、いくつかの分野ではまだ自宅サーバーの方がコストの面で優位性があります。
機械学習など
一番の顕著なものは機械学習環境です。AWS、GCP などの GPU インスタンスは、ちょっとした実験などで不定期に数日、1週間とかを起動するのにはちょうど良いと思います。一方、ジョブを何度も動かしてチューニングなどする場合には、起動しっぱなしにするのでかなりの金額になります。
例えば、AWS の p2.xlarge (NVIDIA K80 12GB)の場合、大雑把には月に7万円くらいです。1年間の Compute Savings Plan の場合でも5万円強/月です。
一方、自宅サーバーの場合、大雑把に費用を計算すると、本体30万円+電気代1万円/月くらいです。GPU はゲーム PC 用のものを使う事になるため、性能的に比較が難しい面がありますが、p2.xlarge の 2/3 の性能だとしても1年弱で元が取れると思います。
機械学習特化のもの、ゲーム用も含めた GPU の比較は、以下のようなページがありますので、参考にして下さい。
The Best GPUs for Deep Learning in 2020 — An In-depth Analysis
その他
それ以外だと、動画とかのファイルを大量に保管する場合などは、NAS とかを使った方が若干安くなるかもしれません。
ただ、ネットワーク転送量や管理の手間などを考えると、レンタルサーバーなり Dropbox とかを使った方が良いかもしれませんが。
自宅サーバーのセットアップ(基本)
自宅サーバーの基本的なセットアップ方法は、20年くらい前からあまり変わっていません。
OS のインストール、設定
OS は、特別な理由が無い限りは Linux をお勧めします。インストール方法や基本的なネットワーク設定の方法は、色々なページで紹介されているので、ここでは省略します。
ただ、余っている古い Windows 機、Mac などを使いたい場合もあると思いますので、以降、Linux 以外の手順も随時補足します。
固定IPの設定
プロバイダで固定IPを振ってくれる場合
自宅のプロバイダーが固定IPを付与してくれる場合、あるいはそういうオプションがある場合はそれを使いましょう。以下、固定IPが 1.2.3.4 だったとして、話を進めます。
固定IPが振られている場合は、次に、以下のような設定を行います。
- サーバーのIPアドレスを固定する(例: 192.168.0.2)
- 自宅のルーターで静的 NAT の設定を行い、外部からのトラフィックは 192.168.0.2 にいくようにする
そうすることで、以下のように外部からアクセス出来ます。
外部から 1.2.3.4 へのアクセス → ルーターで NAT → 192.168.0.2 へ到達
色々検索したものの、わかりやすく説明したページが意外に少なかったのですが、以下のページが比較的分かりやすかったので参考にしてみて下さい。
固定IPが無い場合
私は1年前くらいに引っ越したのですが、今のプロバイダでは固定IPを振ってくれないため、以下のサービスを使っています。
マイIP・マイIP ソフトイーサ版 | サービス一覧 | 株式会社インターリンク【公式】
この場合、Linux を普通にインストールした後で
- Linux サーバーに固定IPを振る(例: 192.168.0.2、※)
- Linux サーバー上でマイIPの設定をする: Unix (CentOS・Debian・Ubuntu・Arch Linux・FreeBSD)のPPTP接続 ■マイIP (PPTP/L2TP版)
という作業を行えば、外部からマイIPで振られたIPにアクセスすると、Linux サーバーに接続出来ます。Windows、Mac の場合も手順は同様です。
なお、この方法だと、トラフィックは全てマイIPのサーバーを経由するので、サーバーのネットワーク速度が遅くなってしまいファイルのダウンロードなどに時間がかかるという欠点があります。proxy サーバーを用意するなどの回避策はありますが、詳細は省略します。
※: 必ずしも固定IPを振る必要は無いのですが、サーバーの IP が変わるとトラブルの元なので、固定しておいた方が無難です
DNS でホスト名を割り当てる
振られた固定IPをそのまま使って、 ssh user@1.2.3.4
などとやってもいいのですが、ホスト名を振っておいた方が良いです。
そのため、 DNS に以下のような A レコードを追加します。1つの IP に複数の A レコードを振ることも出来ますし、CNAME レコードを使っても良いです。
- home-server.mobalab.net -> 1.2.3.4
- machine-learning.mobalab.net -> 1.2.3.4
SSH 等、必要なサービスの起動
Linux の場合
Linux の場合は、難しい事は無いと思いますし、情報も多いので省略します。
Mac の場合
Mac の場合、「システム環境設定」→「共有」→「リモートログイン」で、SSH サーバーを起動することができます。
MacにSSHログインする方法 – リモートログインの設定 | PC設定のカルマ
昔の自宅サーバーと異なる点
ネットワーク接続の柔軟性
昔の自宅サーバーの場合、
自宅サーバー <-> 自宅LAN(有線/Wi-Fi)<-> ルーター <-> 光/ADSL
という以外のネットワーク構成は少なかったです。
一方、最近では、ネットワークに関して以下のような選択肢が増えました。
- 前述のマイIP、あるいはVPNサービスの使用
- スマホのテザリングや LTE ルーター、ポケット Wi-Fi の使用・併用
実際、私の自宅サーバー・ネットワークでは、マイIP、スマホのテザリング、LTE ルーター、OpenVPN を併用しています。
用途が増えた・変わった
昔の自宅サーバーの用途としては、Web、DNS、ファイルサーバー、メール(メーリングリスト含む)、あたりが一般的だったと思います。それに比べると、最近では以下のような用途で使うことも多いです。
- 機械学習
- メディアサーバー(録画した動画を外から見る、など)
- 監視カメラ(ペット、要介護の家族、外部からの侵入、など)
- VPN
- ゲームサーバー(Minecraft とか)
IPv6 が大分普及した
以前の自宅サーバーと事情が違うのが、IPoE での IPv6 接続が大分一般的になってきたことです。そのため、
- 自宅サーバーに繋ぐ際に、 IPv4 (あるいは IPv6)だとつながらない、といったトラブルへの対処
- DNS への AAAA レコードの登録
などの余計な手間がかかってきます。
また、IPv6 環境で自宅サーバーを立てるには、ルーター側もそれに対応している必要があります(単に IPv6 で接続出来るだけではダメです)。
私の環境では IPv6 でのサーバー公開は諦めました。
仮想化、コンテナ技術
昔の自宅サーバーは、Apache、BIND、sendmail などを Linux 上で直接動かしていました。一方、現在の自宅サーバーでは、SSH などの基本的なサービスは OS 上で直接稼働させますが、それ以外のサービスは Docker コンテナ内で動かす事も多いと思います。
場合によっては VMware などを入れて、Windows サーバーを複数動かしたり検証に利用したりという事も考えられます。(知り合いの Windows 系のエンジニアがやっていました。)
まとめ
2021年の今、昔に比べると自宅サーバーのメリットは少なくなってるかもしれませんが、色々試すうちに技術力が付く、というメリットは不変です。また、機械学習・メディアサーバーなど、昔はあまり無かったような用途で使うメリットもあるので、自宅サーバー未経験の人は安価なPC・古いPCなどで一度自宅サーバーを立ててみてはどうでしょうか。