リモート開発メインのソフトウェア開発企業のエンジニアブログです

2020年代の自宅サーバー

「自宅サーバー」というと、最近では自宅でビールサーバーが楽しめるサービスの方を思い浮かべる方が多いくらいマイナーなものとなっている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 へ到達

色々検索したものの、わかりやすく説明したページが意外に少なかったのですが、以下のページが比較的分かりやすかったので参考にしてみて下さい。

DMZとは?静的IPマスカレード/NAPTとは?

固定IPが無い場合

私は1年前くらいに引っ越したのですが、今のプロバイダでは固定IPを振ってくれないため、以下のサービスを使っています。

マイIP・マイIP ソフトイーサ版 | サービス一覧 | 株式会社インターリンク【公式】

この場合、Linux を普通にインストールした後で

という作業を行えば、外部からマイ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などで一度自宅サーバーを立ててみてはどうでしょうか。

← 前の投稿

オプション、設定方法の一貫性の無さ

次の投稿 →

CentOS 7 から 8 へのアップグレード

コメントを残す