How to set up Ubuntu Server as a NAS?
I am looking to set up Ubuntu Server as a headless NAS for my home. I would like to have file storage there, as well as a central hub for my MP3s and pictures. What are the best packages out there to handle this? Can someone post a link to a good tutorial or post some tips? One constraint I have is that it has to be Windows 7 friendly. By that I mean the shares and streaming should work for a Windows machine.
7 Answers 7
I just finished doing this myself and I did it using Samba. I’m able to mount the samba shares from my windows & ubuntu computers
Here are some links that helped me get started:
This is why a link farm is not considered an answer. The first link gets redirected to a generic Samba page. The original must have been removed.
- Install Ubuntu Server. Really helps if you can have the server with a keyboard and monitor for this bit. Although you can script a CD to auto-install if you want. More trouble than it’s worth if you ask me.
- Create a user, set up ssh ( sudo apt-get install openssh-server ), etc. Put your server in its final resting place and ssh in from your desktop.
- Install & configure samba (see the manual configuration section)
- Optionally install NFS for linux clients (faster, less taxing on the server CPU in my experience)
- Relax. You’re done.
For the filesystem, I have software RAID 5 across my drives, and encrypt the resulting filesystem. This way, I can use this system as a backup server as well.
Once the system is up, I use plain ol’ NFS and Samba for the file level access. (apt-get install nfs-kernel-server samba). I also have a PS3 that I like to stream media to, so I use mediatomb for that (apt-get install mediatomb), and my wife uses iTunes on her Mac and netbook, so I also install mt-daapd (apt-get install mt-daapd) to share my music over the daap protocol, which rhythmbox can also use.
You might want to take a look at the Ubuntu based TurnKey File Server appliance. If you don’t need a full-fledged appliance, you could use it as a reference for configuration on your own server.
Posting this so I can find it in the future. Install Ubuntu Cloud VM (add an extra disk 1TB or larger.)
Note: you should replace username with your user.
Mount and Format the disk:
lsblk sudo fdisk /dev/sdc n p Enter defaults for rest of options
sudo echo "/dev/sdc1 /home/username/data ext4 defaults 0 2" >> /etc/fstab
Install the tools you need:
sudo apt install vim screen htop sysstat curl wget sudo apt install nfs-server samba
Update Exports for NFS (I’m setting this based on subnet, you can change as needed)
sudo echo "/home/username/data 192.168.1.0/24(rw,no_root_squash)" >> /etc/exports sudo exportfs -a
sudo vi /etc/samba/smb.conf shift+g o
[data] comment = Data browseable = yes path = /home/username/data guest ok = no read only = no create mask = 0700
Generate smbpasswd (this will allow windows hosts to connect over smb, granted we are passing them in with the username account (smile))
sudo smbpasswd -a username
Update permissions if needed:
sudo chown -R username:root /home/username/data
Download some data (this is a good dump of isos)
cd /home/username/data wget -H -r --level=5 --restrict-file-names=windows --convert-links -e robots=off --no-check-certificate https://ftp.nluug.nl/os/Linux/distr/
if you wnat DLNA support, then see: MiniDLNA — Community Help Wiki
Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
I made a Ubuntu based NAS with file sharing based on Samba and Nextcloud and works across Windows, Linux or Mac. I haven’t yet setup a «real» streaming server (e.g. Plex), but I use Nextcloud which is something like a Google Drive clone, which allows easy viewing of photos, music and videos through web browser.
My Ubuntu NAS:
- Intel NUC PC
- Ubuntu Server 20.04 (headless)
- External RAID1 USB3 drive QNAP TR-002 (this whole drive is shared, LUKS encrypted ext4 partition)
- Samba (for LAN file-share access)
- Nextcloud (optional, for cloud access)
- UFW firewall (optional)
- iDrive (optional as cloud backup of all drives including RAID USB3)
Samba Setup:
First I mostly followed this guide to set up Samba users.
I edit the samba config ( sudo nano /etc/samba/smb.conf ) and make 2 changes:
- Under [global] section I added inherit permissions = yes to make sure permissions for added files are correct.
- Configure my shared folder by adding to the bottom as follows:
[mynas] comment = The Big USB drive path = /media/usb0/ read only = no browsable = yes writable = yes create mask = 0640 directory mask = 0750 valid users = vijay hide files = /$RECYCLE.BIN/System Volume Information/thumbs.db/
Remember to restart Samba after changes:
sudo service smbd restart
And if your server has a firewall, remember to allow it:
Access on Linux: smb://192.168.1.2/mynas/
Access on Windows File Explorer: \\192.168.1.2\mynas\
In my case I need to log in as «vijay» to access the shares, but the password can be saved on the client so it is only entered on first access.
Nextcloud Setup:
I used the Snap package which is probably easiest. I usually avoid Snap but in this case it worked well. You can also try Docker or manually set everything up if you are an advanced user.
For Snap version, I just ran the following after installation to allow access to USB drive and ports:
sudo snap set nextcloud ports.http=81 ports.https=444 sudo snap connect nextcloud:removable-media
I then set up a reverse proxy (Haproxy) and SSL for secure external access over the web, but that is beyond the scope of this short guide.