【🍆】Network Attached Storage(NAS)をminiPC(GMKtec NucBoxG9)で作ろう!
update:2025/03/27
Category : Network
私が使っているiphoneのストレージが限界になってきたので写真や動画をNASに上げようと思ったのがきっかけです。 UbuntuPCとiphoneからアクセスでき、なおかつVPNを用いて屋外からでも参照できるというのが今回の目標です。
NASの実行環境
- マシン:GMKtec NucBoxG9
- OS:Ubuntu24.04 LTS(DeskTop版)
- NASソフトウェア:samba
- VPN:tailscale
サーバ側の設定
マシン:GMKtec NucBoxG9
今回使用したGMKtecは安かったので買いました。CPUはN150で3.5Ghzとそこそこ高速で、SSDはnvmeが4枚刺さります。 このメーカーは中華系の会社で小さいNAS用のPCを作ることで知られています。
G9にはWindows 11 proとUbuntu 24.10のデュアルブートがデフォルトで入っています。Windows OSしか触れないという人にはありがたいかもしれませんね。
一方でUbuntu24.10のチョイスは正直謎です。中華のメーカーのプリインストールのUbuntuだなんて怖いですし、私はさくっと消してUbuntu24.04を入れ直しました。
なおこのubuntu24.10のデフォルトユーザのパスワードは12345だそうです。24.10は日本語対応も微妙だし入れ直すのが無難でしょうが、どうしても24.10を使用したいという方がいるのなら、パスワード12345です。でも、本当におすすめしませんよ?
ちょっと使った感覚としては「小さくコンパクトで静か。ちょっと熱くなりやすいかな」といった感じでした。
ディスクの認識
今回はSSDを1枚だけ使用します。RAIDは今後実装予定です。(いつか更新するかも)
ディスクマウントの方法は
mkdir -p /mnt/nas
mount /dev/nvme0n1p1 /mnt/nas
でOKです。
サーバが再起動するなどした場合でも自動でマウントできるようにするなら/etc/fstabに
/dev/nvme0n1p1 /mnt/nas ext4 defaults 0 0
と書けば良いでしょう。
ディスクパーティション
SSDにパーティションが用意されてない場合は
fdisk -l /dev/nvme0n1 # diskの容量を確認
fdisk /dev/nvme0n1
のようにfdiskコマンドで新しいパーティションを作ることができます。 fdiskコマンドは対話式でパーティションを作成できるので迷うことはないでしょう。
- 例
nで開始。- Linuxタイプを選択
- セクターの開始位置と終了位置を設定:私はデフォルト値をそのまま使用しました。
wで保存して、終了
mkfs.ext4 /dev/nvme0n1p1
でフォーマットをext4に直し、
mkdir -p /mnt/nas
mount /dev/nvme0n1p1 /mnt/nas
でマウント完了!
NAS:samba
sambaはファイルサーバ提供を行うソフトウェアで、サーバ内のディレクトリを外部に共有する機能を提供します。
インストール
apt install samba
で入ります。
共有手順
sambaの設定ファイルは/etc/samba/smb.confにあります。
[NAS] #iphoneやその他のPCなどから見える識別子。
path = /mnt/nas #共有するディレクトリ
browseable = yes # ネットワーク上から見つけられる(iphoneから見つけやすくなる)
writable = yes #書き込みを許可する
guest ok = no #認証なしユーザの拒否
create mask = 0777 # 新しく生成されるファイルのパーティション
directory mask = 0777 # 新しく生成されるディレクトリ(フォルダ)のパーティション
valid users = hoge # 許可されるユーザー名
以上のように設定すればよい。なおhogeはubuntuに存在するユーザ名である必要があり、また認証のためにsmbpasswdでパスワードを設定する必要があります。
認証設定
- ユーザー登録 hogeをubuntuに追加するなら
adduser hoge
でOKです。
- パスワード設定
smbpasswd -a hoge
でOKです。パスワードを忘れた際などの再設定でも同様にできます。
sambaの実行
systemctl enable smbd.service #サーバの再起動時でも自動で立ち上げる
systemctl restart smbd.service
VPN:tailscale
VPNを使うことで自宅外にいてもアクセスできるようになります。 嬉しいね!
tailscaleはメールアドレスを用意だけで利用できます。とても便利で簡単なVPNです。 個人で使う文には3つのアカウントまで、100台のマシン(そんな使う!?)までなら無料で追加できます。 iphoneでもAppStoreにあり、ダウンロードするだけで接続できます。
インストール
公式でダウンロードできます。
curl -fsSL https://tailscale.com/install.sh | sh
初回時は
$ tailscale up
To authenticate, visit:
https://login.tailscale.com/a/{ハッシュ値}
がでてくるのでURLを踏んでログインすれば良いです。(新規のmailアドレスも同時に追加できる)
管理画面からも端末追加のスクリプト生成などはできます。
使い方
tailscaleは以下を覚えておけばたいてい困りません。
- 起動:
tailscale up - 終了:
tailscale down - 他の端末を確認:
tailscale status - ログアウト:
tailscale logout
なお、実行時にはsudo権限が必要なのでsudo tailscale upなどと使いましょう。
クライアント側の設定
UbuntuPC
UbuntuPCではエクスプローラーからアクセスする方法とコマンドラインからマウントする方法の2つがあります。
エクスプローラー
これは単純。開いて左のサイドバー中にあるその他の場所からネットワークに表示されるNASのマシン名を選択すれば良いです。
VPN経由である場合はここに表示されないこともある他、サーバのsambaの設定ファイルでbrowseable = no にしていた場合でも右下にある記入欄に
smb://{IPアドレス}
と追加することで見えるようになります。
コマンドからマウント
/mnt/nasにNASのファイルをマウントする方法を記します。
sudo apt install cifs-utils -y
sudo mkdir -p /mnt/nas
sudo mount -t cifs -o username=hoge,password={パスワード} //{NASのIP}/NAS /mnt/nas
これでマウントされます。再起動時でもマウントするには/etc/fstabに
//{NASのIP}/NAS /mnt/nas cifs username=hoge,password={パスワード},iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
を追加してsudo mount -aでOKです。
iphone
色々とアプリはありますが無料で使えてそこそこ便利なのはDocument Readdleだと思います。 これをダウンロードしましょう。
NASの追加
ReadleにNASを登録するには設定画面で
- URL:
smb://{IPアドレス} - ユーザ:hoge (あなたが登録したユーザ)
- パスワード:パスワード
とすることで認識、接続できるようになります。
最後に
ここまで読んでくれてありがとうございます。
私は今回作成したNASを用いて資料を共有したり、写真や動画のバックアップなどに用いています。 とても便利なのでみなさんもどうぞ。