samba/README.md
2025-03-05 15:59:30 +08:00

125 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Samba share with network discovery using docker-compose
### docker-compose.yalm completo
i files completi sono scaricabili dal git, il docker-compose utilizzabile anche su Portainer
Per l'immagine wsdd fare il build (vedi [git wsdd-docker](https://forgit.patachina.duckdns.org/Fabio/wsdd-docker)) o scaricarlo da registry locale
```
sudo docker pull images.patachina.duckdns.org/wsdd
```
### Set up the SMB share
were going to use crazymaxs smb container, pretty easy to setup and docker native. its recommended to use host networking for it.
**docker-compose.yml**
```
## https://fariszr.com/en/docker-smb-network-discovery/
version: "3.5"
services:
samba:
image: crazymax/samba
container_name: samba
network_mode: host
volumes:
- /home/nvme/dockerdata/smb:/data
- /home/nvme/plexmediafiles:/plexmediafiles
- /home/nvme:/nvme
- /home/orangepi:/home
environment:
- "TZ=Europe/Rome"
- "SAMBA_LOG_LEVEL=0"
restart: unless-stopped
```
dont forget to change ```$TIMEZONE``` to your local timezone, [list of tz time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
### Configuration
Unlike normal SMBd, the container uses YAML for configuration.
```
auth:
- user: root
group: root
uid: 0
gid: 0
password: bar
global:
- "force user = root"
- "force group = root"
share:
- name: downloads
path: /downloads
browsable: yes
readonly: no
guestok: yes
veto: no
recycle: yes
```
Here is a basic config for an open local share. All my files are owned by root, thats why i need to force root as the default user.
Put the config in the mounted data folder, so in the case of compose file above, its ```./smb/config.yml```
You can add more shares or more users and far more in the config. More details about docker-smbs configuration options are in the projects [GitHub repo](https://github.com/crazy-max/docker-samba)
After this you should be able to use the SMB share, though not discoverable.
### WSDD, SMB network discovery for Windows
Add this to the docker-compose.yml file
```
wsdd:
image: wsdd
network_mode: host
environment:
- 'HOSTNAME=$HOSTNAME'
restart: always
```
just replace ```$HOSTNAME``` with your hostname and then start the container
```docker compose up -d```
Now you should see the share with the ```$HOSTNAME``` as its name in the network tab (if local device discovery is enabled) in Windows file explorer.
### Avahi, SMB network discovery for MacOS and Linux
Add this to ```docker-compose.yml```, make sure to change ```$HOSTNAME``` to whatever you want the shares name to be.
```bash
avahi:
image: ydkn/avahi
hostname: $HOSTNAME
network_mode: host
volumes:
- ./avahi-services:/etc/avahi/services:ro
restart: always
```
```avahi-services/smb.service``` create the file smb.service with the following content:
```
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_smb._tcp</type>
<port>445</port>
</service>
</service-group>
```
save it and start the container
```docker compose up -d```
You should now have Network discovery working on almost every OS!