ファイルサーバの構築(Samba on Docker) – Debian Linuxによる自宅サーバの構築

自宅サーバ
自宅サーバ

自作サーバにファイルサーバを構築します。
ファイルサーバを構築すると以下のメリットがあります。

  • ファイルが一か所に集中して管理できデータの整理や管理が容易になる
  • 家庭内のデバイス間でファイルの共有が行える
  • バックアップデータの保存・復元が可能になり可用性が上がる
  • 大容量のデータを保存する場合、クラウドストレージサービスに依存せず、長期的にコストを削減できる

上記のようにメリットが多いのでぜひファイルサーバを構築しましょう。

外部ストレージの設置

既存の自宅サーバの容量が多くない場合、外部ストレージを設置することにより大容量のファイルサーバを構築できます。
外部ストレージを設置する方法を説明します。

機器の設置

一般的に大容量の外部ストレージといえば外付けHDDになると思います。
現在、USB接続の外付けHDDは6TB・1万円前後で購入できます。
最近はSSDも安くなってきたので外付けSSDも選択肢に入ります。

HDDのほうが安いのですが、中身は機械的な動作があるので音が気になる場合があります。

ちなみに私は、QNAP TR-004に8TBのHDDを4台入れてRAID10で運用しています。

QNAP TR-004
https://www.qnap.com/ja-jp/product/tr-004

パーティショニングとフォーマット

外部ストレージを接続しパーティショニングとフォーマットを行います。
parted というコマンドでパーティショニングを行います。

parted インストール

parted インストールします。

sudo apt install -y parted

ディスクデバイスの確認

ディスクデバイスのパーティション情報を表示します。

sudo parted -l

以下出力例です。
こちらを参考にすると /dev/sdb に8002GBの外部ストレージが接続されています。

Model: ATA KINGSTON RBUSNS8 (scsi)
Disk /dev/sda: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size    File system     Name  Flags
 1      1049kB  538MB  537MB   fat32                 boot, esp
 2      538MB   127GB  126GB   ext4
 3      127GB   128GB  1024MB  linux-swap(v1)        swap

Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  8002GB  8002GB  ext4

パーティション作成

ディスクデバイスのパーティションを作成します。

sudo parted /dev/sdb mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
:yes
sudo parted /dev/sdb mkpart internal 0% 100%

フォーマット

ext4 のファイルシステムでフォーマットします。

sudo mkfs.ext4 /dev/sdb
mke2fs 1.46.2 (28-Feb-2021)
Found a gpt partition table in /dev/sdb
Proceed anyway? (y,N) 
:y

ディスクマウント

ディスクデバイスをマウントします。

マウントさせるディレクトリを作成します。

sudo mkdir /mnt/share

ディスクのUUIDを確認します。

sudo blkid

以下出力例です。
こちらを参考にすると、/dev/sdb のUUIDが確認できます。

/dev/sda1: UUID="A8BE-2FC7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="e17fac60-0727-4969-8b3d-6f9a55eecbb0"
/dev/sda2: UUID="8d97e5da-bd76-4516-9a72-df2ee7693d31" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="2c8f0565-d2c6-47a9-940e-8b63e0b6fe0a"
/dev/sda3: UUID="0e1d2ea6-e4ec-4438-b0f2-ec790f8d2a0a" TYPE="swap" PARTUUID="99a0303b-c89a-4b7a-937d-1acf3ab612de"
/dev/sdb: UUID="8aef1f60-a4a5-4965-994a-e71596d62c75" BLOCK_SIZE="4096" TYPE="ext4"

外部ストレージのUUIDを使いマウントの設定を行います。

sudo vi /etc/fstab

UUID=8aef1f60-a4a5-4965-994a-e71596d62c75 /mnt/share ext4 defaults 0 0

外部ストレージをマウントします。

sudo mount /mnt/share

これで外部ストレージがマウントされます。

以下のコマンドで、容量確認してみましょう。

df -h

以下出力例です。

ファイルシス   サイズ  使用  残り 使用% マウント位置
udev             3.8G     0  3.8G    0% /dev
tmpfs            778M  916K  777M    1% /run
/dev/sda2        116G  2.7G  107G    3% /
tmpfs            3.8G     0  3.8G    0% /dev/shm
tmpfs            5.0M     0  5.0M    0% /run/lock
/dev/sda1        511M  5.8M  506M    2% /boot/efi
tmpfs            778M     0  778M    0% /run/user/1000
/dev/sdb         7.3T   28K  6.9T    1% /mnt/share

ファイルサーバの構築

Sambaというファイルサーバをインストールします。
サーバに直接インストールするとこも可能ですが、今回はDocker上で動かします。

Samba on Dockerの設定

ホームディレクトリ配下にディレクトリを作成します。

mkdir -p ~/docker/samba
cd ~/docker/samba

Docker Composeの設定ファイルを作成します。

vi compose.yaml

services:
    samba:
        image: dperson/samba
        restart: always
        volumes:
            - /mnt/share:/mnt
        ports:
            - "139:139"
            - "445:445"
        environment:
            - TZ=Asia/Tokyo
            - USERID=1000
            - GROUPID=1000 
        command: '-s "share;/mnt;no;no;no;[ ユーザ名 ]" -u "username;password"'

[ ユーザ名 ] はご自身のLinuxのユーザ名を設定してください。
-u "username;password" この設定でファイルサーバのアカウント情報を設定できます。

Docker Samba起動

Docker Compose で起動します。

docker compose up -d

Dockerイメージ

今回は、dperson/samba のDockerイメージを使用しました。
詳しくは以下を参考にしてください。

Docker

ファイルサーバへ接続

ファイルサーバーが構築できたら、クライアント側の設定を行います。

Windows

Windowsの場合、エクスプローラーで下記パスを入力してアクセスします。

\\[ IPアドレス ]\share

ユーザー名とパスワードを入力して接続します。

macOS

macOSの場合、Finderで「移動」メニューから「サーバへ接続」を選択し下記を入力します。

smb://[ IPアドレス ]/share

ユーザー名とパスワードを入力して接続します。

おわりに

Sambaを利用してファイルサーバを構築する方法を解説しました。
これにより、家庭内のデバイス間で簡単にファイル共有ができるようになります。

コメント

タイトルとURLをコピーしました