| name | nas-storage |
| description | Turn any machine into a network-attached storage server. Share files across every device on your network — Windows, Mac, Linux, phones, TVs. |
Network Storage (NAS)
Turn any machine into a network-attached storage server. Share files across every device on your network — Windows, Mac, Linux, phones, TVs.
Category: home
API Key Required: No
What It Does
Sets up Samba file sharing so any device on your network can access shared folders like a USB drive. Perfect for family photo storage, backups, shared documents, or feeding media to Plex/Kodi. Your agent handles the full setup and ongoing management.
Setup
Step 1: Install Samba
sudo apt update && sudo apt install samba samba-common-bin -y
Step 2: Create shared directories
sudo mkdir -p /srv/shared
sudo chmod 777 /srv/shared
sudo mkdir -p /srv/private
sudo chmod 770 /srv/private
Step 3: Configure Samba
sudo tee -a /etc/samba/smb.conf << 'EOF'
[Shared]
path = /srv/shared
browseable = yes
read only = no
guest ok = yes
create mask = 0666
directory mask = 0777
[Private]
path = /srv/private
browseable = yes
read only = no
guest ok = no
valid users = @samba
create mask = 0660
directory mask = 0770
EOF
Step 4: Set up users (for private shares)
sudo smbpasswd -a USERNAME
sudo usermod -aG samba USERNAME
Step 5: Start Samba
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
Step 6: Connect from devices
Windows: Open File Explorer, type \\SERVER_IP\Shared in the address bar
Mac: Finder > Go > Connect to Server > smb://SERVER_IP/Shared
Linux: File manager > smb://SERVER_IP/Shared or sudo mount -t cifs //SERVER_IP/Shared /mnt/nas -o guest
iPhone: Files app > three dots > Connect to Server > smb://SERVER_IP
Android: Use a file manager like Solid Explorer > SMB connection
Mounting External Drives
Find connected drives
lsblk -f
Mount a drive
sudo mkdir -p /mnt/drive1
sudo mount /dev/sda1 /mnt/drive1
blkid /dev/sda1
echo 'UUID=YOUR-UUID /mnt/drive1 ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
Format a new drive
sudo mkfs.ext4 /dev/sda1
NTFS drives (from Windows)
sudo apt install ntfs-3g -y
sudo mount -t ntfs-3g /dev/sda1 /mnt/drive1
Agent Commands
Check share status
smbstatus 2>/dev/null || echo "Samba not running"
testparm -s 2>/dev/null | grep -A3 "\["
Check disk space
df -h /srv/ /mnt/ 2>/dev/null
List shared folder contents
ls -lah /srv/shared/
du -sh /srv/shared/*/
Check who's connected
sudo smbstatus -b 2>/dev/null
Add a new share
sudo mkdir -p /srv/NEW_SHARE_NAME
sudo chmod 777 /srv/NEW_SHARE_NAME
sudo tee -a /etc/samba/smb.conf << 'EOF'
[NEW_SHARE_NAME]
path = /srv/NEW_SHARE_NAME
browseable = yes
read only = no
guest ok = yes
EOF
sudo systemctl restart smbd
Remove a share
Edit /etc/samba/smb.conf and remove the share block, then:
sudo systemctl restart smbd
Check drive health
sudo smartctl -a /dev/sda 2>/dev/null || echo "Install smartmontools: sudo apt install smartmontools"
Monitor storage usage
du -h --max-depth=1 /srv/ | sort -rh
RAID Setup (Optional — for redundancy)
For important data, use two drives in a mirror:
sudo apt install mdadm -y
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raid
sudo mount /dev/md0 /mnt/raid
This mirrors data across both drives — if one dies, the other still has everything.
Constraints
- Samba requires the devices to be on the same network (or VPN)
- Performance depends on network speed (Gigabit ethernet ~100MB/s, WiFi varies)
- External USB drives may disconnect — use powered USB hubs for reliability
- SMART monitoring needs
smartmontools package
- For remote access outside your network, use a VPN (WireGuard/Tailscale)