自宅サーバ 設計

【自宅サーバ】運用しているサービスと構成まとめ(2021年版)

自宅サーバと各種サービスの接続構成を表したイメージ
自宅サーバで運用していたサービスと基盤のイメージ

仕事でサーバ構築やネットワーク設定、プログラミングに携わる一方、プライベートでも自宅サーバを運用しています。

この記事では、2021年12月時点で自宅サーバ上に構築していたサービスと、それらを支えるソフトウェアをまとめます。当時の構成を記録した記事のため、現在の運用環境とは異なる可能性があります。

自宅サーバで実現していたこと

自宅サーバは、単にファイルを保存するだけでなく、日常的に使う複数のサービスを動かす基盤として利用していました。

  • ブログの公開
  • オンラインストレージと写真のバックアップ
  • 家庭内のファイル共有
  • 家族向けWikiによる情報共有
  • 蓄積したデータの分析・可視化
  • 050番号を利用するSIPサーバ
  • サーバやネットワーク機器の監視
  • 各機器から送られるログの集約

サービスと使用ソフトウェアの一覧

用途主なソフトウェア役割
ブログWordPress記事の作成・公開
オンラインストレージNextcloudファイル同期、写真のバックアップ、データ共有
ファイルサーバSamba家庭内のWindows端末から利用するファイル共有
WikiMediaWiki家族間で共有したい情報の蓄積
データ可視化Grafanaデータベースに保存した情報のグラフ表示
IP電話Asterisk050番号を収容するSIPサーバ
稼働監視Zabbixサーバの死活・状態監視
ログ管理rsyslog各機器のSYSLOGを集約

各サービスの構成

ブログ:WordPress

このブログはWordPressで構築し、自宅サーバ上で運用していました。ブログシステムを一から自作する方法もありますが、記事の管理やテーマによるデザイン変更のしやすさを考え、WordPressを採用しています。

WebサーバにはNginxを使用し、記事や設定を保存するデータベースには、別のDBサーバで動作するMariaDBを利用していました。

オンラインストレージ:Nextcloud

オンラインストレージにはNextcloudを採用していました。DropboxやGoogle Driveのように、複数のパソコン間で同じファイルを同期できます。

日常的に利用するデータをNextcloudへ保存しておけば、デスクトップパソコンとノートパソコンのどちらからでも同じファイルを扱えます。スマートフォン用アプリでは、撮影した写真を自動アップロードできるため、写真の転送とバックアップにも便利でした。

家族や知人へデータを渡す際には共有機能を利用でき、大容量のデータを自分の環境から受け渡せる点も重宝していました。

ファイルサーバ:Samba

家庭内のファイル共有にはSambaを使用していました。Windows端末から扱いやすく、ネットワーク上の共有フォルダーとして利用できます。

Nextcloudには日常的に使用するファイルを置き、SambaのファイルサーバにはOSのディスクイメージ、ソフトウェアのインストーラー、メンテナンス用スクリプトなど、主に自宅内で使用するデータを保存していました。用途に応じて保存先を分けることで、データを整理しやすくしています。

情報共有:MediaWiki

家族間で共有しておきたい情報をまとめるため、MediaWikiも運用していました。手順や設定など、後から参照したい情報を蓄積する用途です。

データベースはWordPressと同じDBサーバ上のMariaDBを利用し、アプリケーションは仮想マシン上のDockerで動かしていました。Docker Composeで構成を管理することで、バックアップや別サーバへの移行を行いやすくしています。

データ可視化:Grafana

データベースに蓄積した情報の可視化にはGrafanaを使用していました。数値をそのまま確認するだけでなく、グラフとして表示することで、変化や傾向を把握しやすくなります。家計簿データの分析などにも活用していました。

IP電話:Asterisk

SIPサーバにはAsteriskを使用し、SMARTalkで契約していた050番号を収容していました。なお、SMARTalkは2020年10月ごろから新規申し込みを停止していたため、この記事は当時利用していた環境の記録として掲載しています。

サービスを支える基盤

DBサーバ:MariaDB

WordPress、Nextcloud、MediaWiki、Zabbixなどが利用するデータベースを、専用のDBサーバへ集約していました。アプリケーションとデータベースを分けることで、役割を整理し、管理しやすい構成にしています。

リバースプロキシ:Nginx

外部から複数のWebサービスへアクセスするため、入口にNginxのリバースプロキシを配置していました。アクセス先に応じて内部の各サービスへ通信を振り分け、HTTPS通信の終端もリバースプロキシで行う構成です。

コンテナ基盤:Docker

一部のサービスはDockerコンテナとして動かし、Docker Composeで構成を管理していました。必要な設定をファイルとして残せるため、環境の再構築や移行を行いやすい点がメリットです。

DNS・DHCP・TFTP:Dnsmasq

家庭内向けのDNSキャッシュとDHCPにはDnsmasqを使用していました。また、ネットワーク機器へファームウェアなどを配布するためのTFTPサーバとしても利用していました。

ルーター・VPN:VyOS

PPPoE接続の終端、ネットワークセグメント間の通信制御、外出先から自宅サーバへ接続するためのVPNにはVyOSを利用していました。家庭内ネットワークの中心となる役割を担っています。

稼働監視:Zabbix

各サーバが正常に動作しているかを確認するため、Zabbixで死活監視と状態監視を行っていました。監視サーバ自体はDocker上で動作させていました。

ログ管理:rsyslog

サーバやネットワーク機器が出力するSYSLOGは、rsyslogを使用してログサーバへ集約していました。ログを一か所へまとめることで、トラブル発生時の調査をしやすくしています。

集約したログの一部はデータベースへ保存し、Grafanaで可視化できるようにしていました。ログの収集、保存、表示を組み合わせることで、機器の状態や変化を確認しやすくしています。

自宅サーバを運用する目的

自宅サーバを運用する一番の魅力は、必要な機能を自分で選び、自由に組み合わせられることです。サービスを実際に構築・運用することで、サーバ、ネットワーク、データベース、コンテナ、監視などを横断的に学べます。

一方で、障害対応、バックアップ、アップデート、セキュリティ対策も自分で行う必要があります。便利なサービスを動かすだけでなく、継続して安全に運用するところまで含めて自宅サーバの面白さだと感じています。

まとめ

2021年12月時点では、WordPressやNextcloudといった日常的に使うサービスに加え、MariaDB、Nginx、Docker、Zabbix、rsyslogなどを組み合わせて自宅サーバを運用していました。

それぞれを単独で動かすだけでなく、監視やログ管理まで含めて一つの環境として構築することで、利便性と学習の両方につながっています。今後構成を変更した際には、その内容も別の記事として記録していきます。

-自宅サーバ, 設計
-, ,