A setup guide for building a private NAS using Ubuntu Server and Samba, accessible from anywhere via Tailscale — no port forwarding required. Cross-platform: Linux, Windows, and macOS.
| Requirement | Details |
|---|---|
| OS | Ubuntu Server (LTS recommended) |
| Network | Tailscale installed and connected |
| Editor | Neovim / Vim / Nano |
lsblk
df -h /sudo apt update && sudo apt install samba -ysudo mkdir -p /mnt/nas
sudo chown -R $USER:$USER /mnt/nas
sudo chmod -R 775 /mnt/nassudo nvim /etc/samba/smb.confAdd to the bottom of the file (replace <YOUR_USER> with your system username):
[NAS]
path = /mnt/nas
browseable = yes
writable = yes
valid users = <YOUR_USER>
create mask = 0775
directory mask = 0775sudo smbpasswd -a <YOUR_USER>
sudo systemctl enable smbd
sudo systemctl restart smbdManual mount:
sudo pacman -S smbclient cifs-utils
# List shares
smbclient -L //<tailscale-ip> -U <YOUR_USER>
# Mount
sudo mkdir -p /mnt/nas-local
sudo mount -t cifs //<tailscale-ip>/NAS /mnt/nas-local -o username=<YOUR_USER>Auto-mount on boot:
Create a credentials file:
sudo nvim /etc/samba/credentialsusername=<YOUR_USER>
password=<YOUR_SAMBA_PASSWORD>
Lock it down:
sudo chmod 600 /etc/samba/credentialsAdd to /etc/fstab:
//<tailscale-ip>/NAS /mnt/nas-local cifs credentials=/etc/samba/credentials,_netdev 0 0
- Open File Explorer
- Right-click This PC → Map network drive
- Enter:
\\<tailscale-ip>\NAS - Check Connect using different credentials
- Enter your Samba username and password
Finder:
- Go → Connect to Server (
Cmd+K) - Enter:
smb://<tailscale-ip>/NAS - Enter your Samba credentials
Terminal:
mount -t smbfs //<YOUR_USER>@<tailscale-ip>/NAS /mnt/nas-local| Problem | Solution |
|---|---|
| Connection timeout | Check Tailscale status: tailscale status |
| Login failure | Reset Samba password: sudo smbpasswd <YOUR_USER> |
| Share not found | Restart Samba: sudo systemctl restart smbd |
| Permission denied | Verify ownership: ls -la /mnt/nas |
MIT