💃
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