kostumブログ

勉強したことやノート代わりのアウトプットに使っています。

自宅NASサーバーの構築方法

目次

こんにちは。

自宅NASサーバを構築したいと思いました。 色々と調べながらやってみたのですが、なんだかうまく構築できなかったので、順序立てて一つずつ対応していくためにやり方をまとめました。

せっかくなので記事としてまとめ、誰かのお役に立てれば良いかと思います。

要件

今回NASサーバを構築する際において、以下の要件を満たすことにしました。

  • OS: Ubuntu
  • 家にある使われていないPCを使う
  • RAID1を採用する
  • 管理・運用のためにSSH接続できるようにする
  • ファイルサーバとして他PCから共有ができるようにする

実践

というわけで、インストールから始めます。

必要なもの

その前に、NASサーバを構築するために必要なものを記載します。

  • PC
    • ファイルサーバにするためのパソコン。
    • 有線のキーボードとマウス
  • HDD × 2
    • データを保存するためのHDD。RAID1を構築するため、2つ用意します。
  • USB 16GB以上
    • Ubuntuをインストールするために必要です。後述しますが、ISOファイルを書き込む都合上、16GB以上の容量が必要になります。

Ubuntuのインストールのための準備

UbuntuをOSとして用いるため、まずはUbuntuをダウンロードします。

Ubuntuを入手する | Ubuntu | UbuntuUbuntuを入手する | Ubuntu | Ubuntu

Ubuntuは、その用途に合わせてさまざまな種類をダウンロードすることができます。 今回の場合、用途がファイルサーバなので、Ubuntu Serverを選択しても良いのですが、GUIを備えたUbuntu Desktopを選択します。

Ubuntu Desktopをダウンロードすると、ISOファイルが取得できます。
ISOファイルとは、1つの光学ディスクに保存されるデータを一つにまとめたデータ、のことです。 つまり、このISOファイルがUbuntuOSを使うためのひとまとめのデータということです。

次に、このUbuntuOSをPCにインストールします。
しかし、このISOファイルをどうやってPCにインストールすれば良いのでしょうか。
ここでは、USB Boot機能によるインストール、つまり、USBからOSを起動してインストールを行なってみます。

USBからBoot起動させるには、まずUSBにISOファイルを書き込む必要があります。
この書き込み用ソフトウェアにRufusがあります。

rufus.ie

なので、Rufusをダウンロードします。

Rufusを起動する前に、USBをフォーマットしておきましょう。
フォーマットしたら、USBをPCに挿したまま、Rufusを起動します。
PCにUSBだけを挿していれば、「デバイス」項目にそのUSBが選択されているはずです。
ブートの種類の横にある「選択」をクリックし、先ほどダウンロードしたISOファイルと選択します。その他の設定はそのままとし、「スタート」をクリックしましょう。

「スタート」をクリックすると、ハイブリッドISO形式のイメージを検出したことによる書き込む形式の確認ダイアログが表示されます。
ここでは、推奨されている「ISOイメージモードで書き込む」を選択し、「OK」をクリックします。
その後、データ消去の確認ダイアログも「OK」とし、書き込みを開始します。

この書き込みは10分くらいかかるので、気長に待ちましょう。

書き込みが完了したら、NASにしたいPCに差し替えましょう。

UbuntuOSのインストール

さて、Ubuntu OSのインストールの準備が完了しましたので、次はUbuntuOSのインストールを行います。

NASにしたいPCはシャットダウンしておきます。

そして、RufusによってUbuntuが書き込まれたUSBをPCに挿しておきます。
次に、そのPCの電源を入れるのですが、USB Boot起動をさせるために、PCをBIOS起動させます。
BIOS起動させるための方法は、PCメーカによってさまざまなため、以下のサイトを参考に起動方法を調べましょう。

www.tenorshare.jp

私の場合はASRockのマザーボードを使っているので、起動した時のメーカーロゴ画面でF11キーを押下してBIOS画面を起動しました。

BIOSに入ると、bootデバイスを選択する画面になるので、USBを選択しましょう。
すると、Ubuntuのインストール選択画面に入るため、「Try or Install Ubunt」を選択して、Ubuntuをインストールします。

そうすると、UbuntuOSのGUI画面が表示されます。
その画面の右下にインストールショートカットがあるので、それをダブルクリックしてPCへのインストールを開始します。

インストールでは、ウィザードに沿って進めてください。ただし、インストールするハードディスクは、RAID1用のHDDにはインストールしないように注意しましょう。

インストールが完了したら再起動をして、そのときにUSBを抜いておきましょう。

初期設定

SSH

NASを構築する上で、さまざまな設定を行なっていきます。 が、このままNASとして活用していくPCで操作するのは、開発者体験があまり良くありません(NAS PCがディスプレイと場所を占有してしまうのは他の作業ができなくなってしまうので)。
なので、私の場合は別のMacBookから無線アクセス、つまりSSH接続して設定していきます。

再起動したNAS PCでログインし、インストール時にWi-fiを設定していない場合はWi-fiを設定します。この後、パッケージの更新を行うときに、ネットワークが繋がっていないと更新ができないので気をつけてください。

次に、画面左下のアプリケーションメニューから「Terminals」を起動します。 そして以下を実行して、パッケージの更新を行います。

sudo apt update
sudo apt full-upgrade -y

さらに、SSH接続のためのパッケージをインストールします。

sudo apt install openssh-server

この後、NAS PCを再起動します。

%% 再起動コマンド %%
> sudo reboot

再起動が完了したらターミナルを開いて、以下のコマンドを実行してSSHの状態を確認します。

admin@file-system:~$ sudo systemctl status ssh
[sudo] password for admin:
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-06-21 21:10:18 JST; 1h 40min ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1180 (sshd)
      Tasks: 1 (limit: 6931)
     Memory: 4.4M (peak: 20.6M)
        CPU: 261ms
     CGroup: /system.slice/ssh.service
             └─1180 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

上記のようになっていれば(Active: active (running))、正常に起動しています。
また以下のコマンドを実行して、NAS PCのIPアドレスなども調べておきましょう。

admin@file-system:~$ ifconfig

...

wlp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1440
        inet 192.168.0.215  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::4f83:1976:f576:fa2c  prefixlen 64  scopeid 0x20<link>
        inet6 2001:268:738d:eab6:a7be:cc83:caf6:e76c  prefixlen 64  scopeid 0x0<global>
        inet6 2001:268:d2df:5a2f:49a9:cc42:c170:db2e  prefixlen 64  scopeid 0x0<global>
        inet6 2001:268:d2df:5a2f:86:535e:854a:7fb8  prefixlen 64  scopeid 0x0<global>
        ether 58:a0:23:db:80:ad  txqueuelen 1000  (Ethernet)
        RX packets 62371  bytes 9698686 (9.6 MB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 27767  bytes 3653553 (3.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

この192.168.0.215にアクセスすることになります。
このIPアドレスは、再起動するたびに変更されてしまいます。 そのため、Ubuntuのネットワーク設定でIPアドレスを固定するように設定しておきましょう。

以上、NAS PCでの操作はここまでになります。これ以降はMacbbook PCでの操作になります。

NAS PCへSSH接続できるか確かめてみましょう。
Macbook PCで、ターミナルを開きます。また、Wi-fiNAS PCと同じネットワークを使用しておきましょう。
以下のコマンドを実行すると、今までの設定がうまくいっていればログインできるかと思います。

❯ ssh admin@192.168.0.215
admin@192.168.0.215's password:
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.11.0-26-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

0のアップデートはすぐに適用されます。

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

Last login: Sun Jun 22 21:06:47 2025 from 192.168.0.220

これで、SSHのインストールは完了です。

おまけ

SSHを使用してログインするとき、ユーザー名やIPアドレス、パスワードをいちいち入力するのは面倒です。
なので、より安全なログイン手法であるキーペアを使ったログインとショートカットコマンドの作成を行います。

まず、キーペアを作成します。 以下を実行するとキーペアが生成されます。

ssh-keygen

生成されたキーペアは、サーバー側に登録する必要があるので、さらに以下を実行します。

ssh-copy-id {ユーザー名}@{IPアドレス}

ここまで行うと、以下を実行することでキーペアを使ったログインが可能になります。

ssh -i {登録したキーペアのパス} '{ユーザー名}@{IPアドレス}'

最後に、~/.ssh/configに以下の設定値を記載することで、ショートカットコマンドを登録することができます。

Host {コマンドキー}
    HostName {ホスト名} 
    User {ユーザー名}
    Port (ポート番号)
    IdentityFile {鍵へのPATH(例えば~/.ssh/hoge)}
さらなるおまけ

SSHにログインすると、常に以下のテキストが表示されます。

Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.11.0-26-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

0のアップデートはすぐに適用されます。

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

このテキストは、/etc/update-motd.d/内にbashファイルを含めることで、好きなテキストを表示ことができます。
例えば、/etc/update-motd.d/01-welcomeを作成し、以下を作成してみます。

#!/bin/sh
printf "\n"
figlet "WELCOME TO FILE-SERVER" | /usr/games/lolcat -f

また、NASサーバで以下をインストールしておきます。

sudo apt install figlet lolcat -y

このように設定すると、以下のように表示することができます(FILE-SERVERのところは色がついています)。

Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.11.0-26-generic x86_64)

__        _______ _     ____ ___  __  __ _____
\ \      / / ____| |   / ___/ _ \|  \/  | ____|
 \ \ /\ / /|  _| | |  | |  | | | | |\/| |  _|
  \ V  V / | |___| |__| |__| |_| | |  | | |___ _
   \_/\_/  |_____|_____\____\___/|_|  |_|_____( )
                                              |/
 _____ ___ _     _____     ____  _____ ______     _______ ____
|  ___|_ _| |   | ____|   / ___|| ____|  _ \ \   / / ____|  _ \
| |_   | || |   |  _| ____\___ \|  _| | |_) \ \ / /|  _| | |_) |
|  _|  | || |___| |__|_____|__) | |___|  _ < \ V / | |___|  _ <
|_|   |___|_____|_____|   |____/|_____|_| \_\ \_/  |_____|_| \_\


 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

0のアップデートはすぐに適用されます。

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

RAID1設定

SSHによる設定ができるようになったところで、RAID1構成を構築していきます。
以下は、NASサーバーにログインして行なってください。

まず、対象となるディスクを確認するために、以下のコマンドを実行してください。

sudo fdisk -l

すると、以下のような出力が見られます(以下は、すでにRAID1を構築してしまった後の出力のため、少し違うところがあるかもです)。

Disk /dev/sdb: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000DM004-2U91
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4BBFCFF6-2C8B-4FC1-B8F3-7B36208CEBA6

Disk /dev/sdc: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000DM004-2U91
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 75BBFE6C-ED6D-4FB4-811E-DFAA2790B2D3

自分がどのHDDを用意したのか把握しておくと、判別しやすいですね。
上記の場合では、/dev/sdb, /dev/sdcが対象のディスクになります。
また、構築の前に、対象となるディスクにデータが含まれていないか確認しておきましょう。RAIDを作成するとき、初期化が行われるので、重要なデータはすべて削除されてしまいます。

まず、partedコマンドを使用して、gptで全容量を指定したパーティションを作成します。gptなどについては、こちらを参照してください。

sudo parted --script /dev/sdb "mklabel gpt"
sudo parted --script /dev/sdc "mklabel gpt"
sudo parted --script /dev/sdb "mkpart primary 0% 100%"
sudo parted --script /dev/sdc "mkpart primary 0% 100%"

続いて、パーティションraidフラグを付与します。これを付与しないとカーネルRAIDアレイと認識されないようです。

sudo parted --script /dev/sdb "set 1 raid on"
sudo parted --script /dev/sdc "set 1 raid on"

先ほどのfdiskを実行するとフラグが立っているのが確認できます。

sudo fdisk -l

Disk /dev/sdb: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000DM004-2U91
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 483BCA84-082D-40A9-9014-9D31985E3C7A

Device     Start         End     Sectors  Size Type
/dev/sdb1   2048 15628052479 15628050432  7.3T Linux RAID


Disk /dev/sdc: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000DM004-2U91
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 6A7AB752-5E96-4954-9E61-A751D03BA223

Device     Start         End     Sectors  Size Type
/dev/sdc1   2048 15628052479 15628050432  7.3T Linux RAID

次に、RAIDを構築するために、mdadmパッケージをインストールします。

sudo apt install mdadm

インストールが完了したら、以下のコマンドを実行し、RAID1アレイを作成します。

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

このコマンドによって、/dev/sdb1, /dev/sdc1を使用して新たに/dev/md0というRAIDバイスを作成しています。
作成には、HDDの容量によって非常に長い時間がかかる場合があります。例えば、私の場合は8TBで12時間ほどはかかっています。
進捗を確認するには、以下のコマンドで確認できます。

cat /proc/mdstat

さて、RAID1の作成が成功したら、今度はこのRAID1構成を永続させる設定を行います。
まず、現在のRAID構成をmdadm.confに保存します。

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

次に、RAIDアレイにファイルシステムを作成します。以下の場合は、ext4として作成しています。

sudo mkfs -t ext4 /dev/md0

さらに、マウントポイントを作成します。マウントポイントとするディレクトリ名は自分の好きな名前にしてください。

sudo mkdir -p /mnt/file-server

そして、マウントしてみます。

sudo mount /dev/md0 /mnt/file-server

動作確認がうまくったら、自動マウントのために/etc/fstabにUUIDで追記を行います。

sudo blkid /dev/md0

出力されたUUIDをもとに、以下のように/etc/fstabに以下を記述します。

/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/file-server ext4 defaults 0 0

最後に、

sudo update-initramfs -u

を実行して、ブート時にinitramfs(初期 RAM ディスク)から読み込ませるようにします。
これで再起動した後でも、RAID1が自動でマウントされるようになります。

WindowsPCの共有設定

このエントリもそろそろ終わりに近づいてきました。 最後は、WindowsPCからの共有を可能にしていきます。

今ままで、データを保管する場所を作成しましたので、ここからはファイルサーバとして使うための設定を行なっていきます。

ファイルサーバを構築するためには、sambaというパッケージを使用します。
以下のコマンドを実行して、sambaをインストールします。

sudo apt install samba -y

これによってsambaがインストールされますので、今度は設定を記載していきます。
sambaの設定ファイルは、/etc/samba/smb.confに記載します。なので、以下を実行して設定を記載してください。

sudo nano /etc/samba/smb.conf

[file-server]
comment = file-server
path = /mnt/file-server
browseable = yes
writeable = yes
read only = no
guest ok = no
create mode = 777
directory mode = 777

そして、Sambaでファイル共有を行う場合は、Sambaユーザーを作成する必要があります。そのため、Linux上に通常のユーザーを作成し、そのあとでSambaのパスワードを設定します。

sudo adduser hoge
sudo smbpasswd -a hoge

最後に以下のコマンドを実行してsambaを再起動して設定を反映させます。

sudo systemctl restart smbd

これによって、上記で固定したIPアドレスWindowsからアクセスし、先ほどのユーザー名tとパスワードを入力すれば、Ubuntuのfile-serverへアクセスできます。

終わり

これで自作NASサーバの構築は終わりになります。
ネットで最初に出てきた情報だけだと、RAIDの永続化やWindowsの共有設定など上手くできませんでした。
上記にまとめた内容で、自分はうまく構築することができたので、皆様の役に立てれば幸いです。

また、最後にこの構築方法に至るまでに活用させていただいた参考文献を記載しておきます。上記の方法でうまくいかない場合は、参考にしてみてください。

それでは、最後までお読みいただきありがとうございました。

参考

qiita.com

qiita.com

qiita.com

qiita.com

qiita.com

www.linux.digibeatrix.com

scrapbox.io

qiita.com

minokamo.tokyo

zenn.dev