SMB share plan

This commit is contained in:
padriano 2026-05-09 21:19:06 +01:00
parent 9f223dbab4
commit 530b988a46

85
plans/Plan-smb.md Normal file
View file

@ -0,0 +1,85 @@
# SMB Samba Share Container
Add a general-purpose authenticated SMB share alongside the existing Time Machine container, reusing the same patterns already in place.
## Approach
- Use `dperson/samba` (well-maintained, minimal image with full Samba + Avahi support)
- `network_mode: host` — same as `timemachine`, required for mDNS/Avahi auto-discovery in Finder
- Mount `/home/padriano/share` on the host into `/share` in the container
- Provide a dedicated `smb.conf` at `samba/smb.conf` (new file, mirrors `timemachine/smb.conf` style)
- Reuse the existing `timemachine/avahi-daemon.conf` (same interface, same settings)
- New env vars in `.env` / `.env.example`: `SAMBA_USERNAME`, `SAMBA_PASSWORD`, `SAMBA_UID`, `SAMBA_GID`
## Files to change
- `docker-compose.yml` — add `samba` service
- `samba/smb.conf` — new file, defines the `[Share]` section
- `.env.example` — add new Samba env vars
## New `samba` service (docker-compose.yml)
```yaml
samba:
image: dperson/samba:latest
container_name: samba
hostname: samba
restart: unless-stopped
network_mode: host
environment:
- USERID=${SAMBA_UID}
- GROUPID=${SAMBA_GID}
- TZ=${TZ}
volumes:
- /home/padriano/share:/share
- /home/padriano/projects/composer/samba/smb.conf:/etc/samba/smb.conf:ro
- /home/padriano/projects/composer/timemachine/avahi-daemon.conf:/etc/avahi/avahi-daemon.conf:ro
```
## New `samba/smb.conf`
Mirrors the global section of `timemachine/smb.conf` (SMB2/3 only, Apple extensions via `vfs fruit`) but defines a `[Share]` section instead of `[TimeMachine]`:
```ini
[global]
workgroup = WORKGROUP
server role = standalone server
security = user
ntlm auth = no
server min protocol = SMB2_10
server max protocol = SMB3
server signing = auto
smb encrypt = desired
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:metadata = stream
fruit:posix_rename = yes
logging = file
log file = /var/log/samba/log.%m
max log size = 1000
[Share]
path = /share
browseable = yes
read only = no
create mask = 0664
directory mask = 0775
valid users = ${SAMBA_USERNAME}
```
## `.env.example` additions
```
SAMBA_UID=1000
SAMBA_GID=1000
SAMBA_USERNAME=samba
SAMBA_PASSWORD=replace-with-your-samba-password
```
## Mac client access
Once running, Mac Finder will auto-discover the share via mDNS. Manual connect: `smb://samba.local/Share` or `smb://<host-ip>/Share`.