Host Samba
Samba is a free software re-implementation of the SMB/CIFS networking protocol. It allows file sharing between Windows and Linux systems. Samba is commonly used to share files and printers between Windows and Linux systems.
To host Samba on AnduinOS, run the following commands.
First, make sure Docker is installed on your machine. If not, you can install Docker by running the following commands:
curl -fsSL get.docker.com -o get-docker.sh
CHANNEL=stable sh get-docker.sh
rm get-docker.sh
Create a new folder to save the service configuration files:
# Please install Docker first
mkdir -p ~/Source/ServiceConfigs/samba
cd ~/Source/ServiceConfigs/samba
Make sure no other process is taking 6157 port on your machine.
function port_exist_check() {
if [[ 0 -eq $(sudo lsof -i:"$1" | grep -i -c "listen") ]]; then
echo "$1 is not in use"
sleep 1
else
echo "Warning: $1 is occupied"
sudo lsof -i:"$1"
echo "Will kill the occupied process in 5s"
sleep 5
sudo lsof -i:"$1" | awk '{print $2}' | grep -v "PID" | sudo xargs kill -9
echo "Killed the occupied process"
sleep 1
fi
}
port_exist_check 139
port_exist_check 445
Then, create a docker-compose.yml
file with the following content:
cat << EOF > ./docker-compose.yml
version: '3.3'
services:
smb:
image: andyzhangx/samba:win-fix
volumes:
- samba-data:/mount
environment:
- WORKGROUP=WORKGROUP
ports:
- target: 139
published: 139
protocol: tcp
mode: host
- target: 445
published: 445
protocol: tcp
mode: host
# -s <name;/path>;browsable(yes);readonly(no);guestok(yes);users(all);admins(none);writelist(none);comment(string)
command: "-p -n -u 'USER;PASSWORD' -w 'WORKGROUP' -S -s 'media;/mount;yes;no;no;all;none;none;Media Share;create mask = 0777;directory mask = 0777;force user = nobody;force group = nogroup;force create mode = 0666;force directory mode = 0777'"
healthcheck:
test: ["CMD", "smbclient", "-L", "//localhost", "-U", "USER%PASSWORD"]
interval: 30s
timeout: 10s
retries: 3
volumes:
samba-data:
driver: local
driver_opts:
type: none
o: bind
device: /swarm-vol/samba-data
EOF
sudo mkdir -p /swarm-vol/samba-data
In the docker-compose.yml
file, we have set the default username and password to USER
and PASSWORD
, while share path is /mount
. The default workgroup is WORKGROUP
. Respectively. You can change them to your desired values.
Then, deploy the service:
sudo docker swarm init --advertise-addr $(hostname -I | awk '{print $1}')
sudo docker stack deploy -c docker-compose.yml samba --detach
That's it! You have successfully hosted Samba on AnduinOS.
You can access Samba by mounting the shared folder on your other machine. Open the File Explorer, type \\<AnduinOS_IP>
in the address bar, and press Enter. You will be prompted to enter the username and password you specified in the docker-compose.yml
file.
To mount the folder on AnduinOS, you can follow the instructions in the Mounting a Remote Folder guide.
Uninstall
To uninstall Samba, run the following commands:
sudo docker stack rm samba
sleep 20 # Wait for the stack to be removed
sudo docker system prune -a --volumes -f # Clean up used volumes and images
To also remove the data, log, and config files, run the following commands:
sudo rm /swarm-vol/samba-data -rf
That's it! You have successfully uninstalled Samba from AnduinOS.