💃

Ubuntu24.04+Docker上にsambaを導入

に公開

はじめに

以前、同じく Raspberry Pi 4B に入れて運用していたPi-holeを別途購入した自宅サーバーに導入したいので、まずは検証環境であるwsl2上のUbuntu24.04にsambaをインストールしてみます。

環境

以下環境で作成しました。

  • 作成日:2025年3月18日
  • windows 11
    • Pro
    • version 24H2
  • Ubuntu24.04.1(microsoft storeに記載のバージョン)

samba用ディレクトリの作成

/srv/dockerディレクトリをdockerのディレクトリとし、その下にsambaコンテナ用のルートディレクトリ:sambaを作成。

Windows Terminal
cd /srv/docker
sudo mkdir ./samba
cd ./samba
sudo mkdir ./data
sudo mkdir ./data/documents

samba用composeファイルの作成

dockerHubをみているといくつか作成されているものがありましたが、複数の共有フォルダを公開できるservercontainers/sambaで試しました。

Windows Terminal
sudo vim compose.yml

内容は以下のように記載。
environmentには自分が使うパラメータやよく利用されそうなものを記載していますが、他にも細かく設定できるようなので詳しくは公式ページを参照してください。

./compose.yml
services:
  samba:
    build: .
    image: ghcr.io/servercontainers/samba
    restart: always
    # note that this network_mode makes it super easy (especially for zeroconf) but is not as safe as exposing ports directly
    # more about that here: https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/index.html#hostnetwork
    network_mode: host
    # uncomment to solve bug: https://github.com/ServerContainers/samba/issues/50 - wsdd2 only - not needed for samba
    #cap_add:
    #  - CAP_NET_ADMIN
    environment:
      # uncomment to enable fail fast (currently only fails fast if there are conflicts/errors during user/group creation)
      #FAIL_FAST: 1

      MODEL: 'TimeCapsule'
      AVAHI_NAME: StorageServer

      SAMBA_CONF_LOG_LEVEL: 3

      # uncomment to disable optional services
      #WSDD2_DISABLE: 1
      #AVAHI_DISABLE: 1
      #NETBIOS_DISABLE: 1

      # パスワード例。以下は user: foo | password: bar で作成した場合。以下コマンドでハッシュ値などを取得できる。
      # docker run -ti --rm --entrypoint create-hash.sh
      ACCOUNT_foo: "foo:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:86C156FC198B358CCCF6278D8BD49B6A:[U          ]:LCT-67D8D9B6:"

      SAMBA_VOLUME_CONFIG_documents: |
        [documents]
         path = /data/documents
         guest ok = no
         browseable = yes
         read only = no
         valid users = foo

    volumes:
      - /etc/avahi/services/:/external/avahi

      # avoid loops when mounting folders to /shares (I'd recommend explicit mapping for each share)
      - type: bind
        source: /home/owner/ドキュメント
        target: /data/documents

サービスの開始

Windows Terminal
sudo docker compose up -d

確認してみる

ubuntuのIPアドレスをip addr showなどで調べて、windowsのエクスプローラからアクセスし、共有フォルダdocumentsがみえるか? → うまくできた
documentsフォルダ内のファイルを作成・編集・削除できるか? → こちらもOK

さいごに

昔から使っているからという理由で今回sambaサーバーを立ててみたのですが…
immichも使ってsambaサーバーも立てるくらいなら、素直にnextCloudに一本化すべきなのだろうか?

Discussion