LoginSignup
1
5

More than 1 year has passed since last update.

自宅サーバー構築譚:基本構想

Last updated at Posted at 2022-01-03

能書き

ArchLinux インストール覚書から始めた一連の試行とか、その後の俺様サーバー構築記 - 基本方針とか。自宅サーバーを構築する為に、今まで色々と模索してきました。

実はあれから小遣いを溜め捲りまして、きちんとした良い機体を購入する計画を立てています。昨今の世界情勢、新型コロナから始まる世界的半導体不足によって、ハードウェア購入計画は延期を余儀なくされておりますが。

ハードウェア調達は遅れても、ソフトウェアの方は何とかなります。今迄と同じ古いマシンを利用して先へ進む事にしました。

まずは計画の全体像を検討したので、覚え書きとしてここに記しておきます。

2023.04.01.(土)
その後の試行錯誤の結果、当初予定とはだいぶ差が出ましたので、現時点での目論見を反映させます。
結果として ArchLinux はやめてしまいました。世界の潮流に合わせて Ubuntu に路線変更です。
ArchLinux と zfs は相性が悪過ぎてブチ切れてしまったのでした
もし ArchLinux を期待されていた方がいらっしゃいましたら申し訳ありません。

ハードウェア

予定は未定として置いときます。
現在手元にある実機で、今回利用するのは下記の通り。

予定では Inspiron 530s をセカンダリサーバとし、もっと立派な最新マシンを構築してプライマリサーバに仕立てます。ついでに Raspberry Pi を購入してサーバ移行計画に組み込んで、その後はちょっと遊んでみる事を考えています。この流れで今更ラズパイかって感じではありますが。

ソフトウェア

プライマリサーバ

下記をこの順番でインストールします。

  1. Ubuntu on ZFS
    • 基本となるサーバを構築、同時に Ubuntu on ZFS の基本的なインストール手順を確認
    • OpenSSH
  2. /etc バージョン管理
    • Subversion
  3. NTPクライアント
    • 時刻同期
  4. 家庭内DNSサーバ
    • 家庭内ドメインを選定
    • Unbound
  5. DHCPサーバ
    • 家庭内IPアドレス体系の見直し
    • dhcpd
  6. オレオレ認証局と証明書
    • 認証局の構築
    • 証明書の発行
    • サーバ⇔クライアントの公開鍵送付方法
  7. ログ
    • rsyslog
    • logrotate
    • logger
  8. Linuxアカウントサーバ
    • LDAP
  9. コンテナサーバ
    • LXD
    • Docker
  10. メールサーバ
    • Dovecot (LMTPを有効にしてローカル配信もさせる)
    • Postfix (一般的なMTS、但しローカル配信はDovecotに任せる)
  11. HAクラスタ
    • メールサーバの耐故障性能の向上を目標とする
    • DRBD
    • Pacemaker
    • Corosync
  12. マシン構築の自動化
    • Ansible
  13. IPアドレス
    • 仮想IPアドレスの設定

ノートパソコン

普段使いのクライアントマシンを想定しています。

  1. Xubuntu on ZFS
    • デスクトップ環境を構築
    • OpenSSH
  2. /etc バージョン管理
    • Subversion
  3. NTPクライアント
    • 時刻同期
  4. アカウントをサーバ管理
    • LDAP
    • SSSD

セカンダリサーバ

作業はプライマリサーバとほぼ同じになります。相違点は下記の通り。

  • Ansibleによる自動構築
  • 各サービスをプライマリとして設定
    • 今までのプライマリサービスをセカンダリにする
      (新マシンの方がパワフルな為に、プライマリとセカンダリを入れ替えるようにする)
  • プライマリサーバがダウンする時のシミュレーション
    • セカンダリへの切り替え手順の確立

実際の作業は下記の予定です。
プライマリサーバと同じ手順では芸が無いので、Ansibleによる自動構築を模索します。

  1. Ubuntu on ZFS
    • サーバを構築
    • OpenSSH
  2. /etc バージョン管理
    • Subversion
  3. NTPクライアント
    • 時刻同期
  4. 家庭内DNSサーバ
    • 家庭内ドメインを選定
    • Unbound
  5. DHCPサーバ
    • 家庭内IPアドレス体系の見直し
    • dhcpd
  6. オレオレ認証局と証明書
    • 認証局の構築
    • 証明書の発行
    • サーバ⇔クライアントの公開鍵送付方法
  7. ログ
    • rsyslog
    • logrotate
    • logger
  8. Linuxアカウントサーバ
    • LDAP
  9. コンテナサーバ
    • LXD
    • Docker
  10. メールサーバ
    • Dovecot (LMTPを有効にしてローカル配信もさせる)
    • Postfix (一般的なMTS、但しローカル配信はDovecotに任せる)
  11. HAクラスタ
    • メールサーバの耐故障性能の向上を目標とする
    • DRBD
    • Pacemaker
    • Corosync

各種サービス

プライマリサーバとセカンダリサーバに対して各種サービスをインストールします。
(メール以外)

  1. サービスのテスト自動化を模索(TestAnythingProtocol)
  2. メールサーバ(上記で既に記述済なので内訳は省略)
  3. CalDAVサーバ
    • 何を使うかも含めて検討
  4. GitLab & Mattermost
  5. Samba
    • ファイル共有サーバ
  6. サーバストレージの2重化
    • inotifywait + ZFSsendシェルスクリプト →プライマリサーバのストレージ内容をセカンダリサーバへ送信して2重化
    • Sambaなどのファイルバックアップ(準リアルタイム)
  7. 仮想マシンサーバ・QEMU/KVM
    • LXDによるコントロール
    • Windowsをインストール

NAS

自宅サーバを立てる際の家庭内名前解決の落とし穴やその後の記事で紹介したNL54Lですが。現在はFreeNASをインストールしてあるのですが、これをLinuxに変えたい。

Raspberry Pi 4 B+ (8GB memory)

  1. 購入
    • 持ってないので、買います!
    • 外部ストレージとして3TB以上のHDDも同時に購入。
  2. Ubuntu on ZFS
    • ラズパイ用のUbuntuをZFSで入れてみます。
  3. ファイルサーバ
    • Samba: Windowsからのアクセス
  4. FreeNASの全バックアップ
    • ZFSsendをssh経由で送信
  5. ファイルサーバとしての動作確認
  6. ファイルサーバのバックアップ体制の構築
    • RasberryPiをメインのファイルサーバにする
    • セカンダリサーバのストレージ容量に余裕がある事を確認
    • セカンダリサーバをファイルサーバのバックアップに利用
      • inotifywait + ZFSsendシェルスクリプト

NL54L

システムの大枠はGUI抜きのクライアントマシン構成に準拠。

  1. Ubuntu on ZFS
    • OpenSSH
  2. /etc バージョン管理
    • Subversion
  3. NTPクライアント
    • 時刻同期
  4. アカウントをサーバ管理
    • LDAP
    • SSSD
  5. ファイルサーバのリストア
  6. ファイルサーバ
    • Samba
  7. 1TBのHDDを購入して入れ替え
    • NAS玉5台を全部1TBに揃える
    • 入れ替え手順を記録して公開
  8. バックアップストレージ
    • ラズパイに接続していた外付けHDD(3TB以上)をNL54Lに繋ぎ替える
    • 外付けHDDとの間で、ZFSの機能で2重化
  9. セカンダリサーバに構築したバックアップファイルサーバを削除

ラズパイで遊ぶ

最後に Raspberry Pi 4 B+ (8GB memory) が余ります。これを使ってテレビの録画サーバを立ててみます。上手くいけば、いつでもどこでも録画を見る事が可能になります。

  1. NL54Lから外したHDDが余っているので、これをラズパイに外付け接続
  2. ハードウェアを購入して追加:テレビ受信機
    • 無駄な苦労を避ける為に、OSはUbuntuではなくてラズパイ標準の Raspberry Pi OS を使用する
    • RaspberryPi4はハードウェアエンコード可能らしいので模索
  3. 受信結果の閲覧
    • mp4をファイルサーバに転送
  4. 録画手順と閲覧のWeb化
    • nginxをインストール
    • シェルスクリプト等でCGIを実装
    • 録画対象番組の選択と録画操作もCGI化

以上です。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5