Build Your Own DIY NAS Server Using Raspberry Pi 4

https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2023/08/how-to-build-a-diy-nas-using-raspberry-pi-4-and-owncloud.jpg

Whether you are a professional photographer with thousands of high-resolution images, a small business owner with critical data, or a movie enthusiast with an extensive collection, having a reliable and secure storage solution is essential. The same goes for any individual who wants to safely store and access their data with complete privacy. This is where network-attached storage (NAS) comes into play.

While commercial versions are available, you can also build your own NAS using a Raspberry Pi 4 and ownCloud—which is more cost-effective and customizable.

Why Build Your Own NAS Using Raspberry Pi and ownCloud?

Building your own NAS provides several advantages over buying a pre-built solution:

  • You can customize the storage capacity as per your specific needs.
  • You have complete control over your data, it is stored locally and securely.
  • You can use the NAS server to back up data from all devices and safeguard against accidental data loss.
  • Cost-effective and energy-efficient since we are using a Raspberry Pi 4 that consumes 15W at max.
  • You can also use the server for other services, such as Plex

ownCloud is a popular open-source software solution that allows you to create your own cloud storage. It provides a secure and easy-to-use interface for managing and accessing your files from anywhere, using any device—including Android, iOS, macOS, Linux, and Windows platforms.

You can also sync your files across multiple devices and share them with others. It also supports a wide range of plugins and extensions, enabling you to extend its functionality and enable two-factor authentication for additional security.

In addition, you can build a personal DIY cloud storage with remote access, or a web server and host a website on your Raspberry Pi 4.

Things You Will Need

To build your own NAS with Raspberry Pi 4 and ownCloud, you will need the following:

  • Raspberry Pi 4 with 4GB or 8GB RAM for optimum performance
  • NVME or SATA SSD with a USB enclosure/connector
  • Class 10 16GB or 32GB microSD card
  • Power supply for the Raspberry Pi 4
  • Reliable Gigabit network (router) to connect your NAS to your local network for high-speed data transfer

Step 1: Set Up Raspberry Pi 4 for NAS

Firstly, you need to download the official Raspberry Pi Imager tool and then follow these steps to install the operating system.

  1. Launch the Raspberry Pi Imager tool.
  2. Click Choose OS and select Raspberry Pi OS (Other) > Raspberry Pi OS Lite (64-bit).
  3. Click Choose Storage and select your SD card.
  4. Click on the gear icon (bottom right) and enable SSH. Enter a username and password for SSH and click Save.
  5. Click Write. Select Yes to confirm.

After flashing the microSD card, insert it into the Raspberry Pi 4 and connect the power supply. The Raspberry Pi 4 will boot into the Raspberry Pi OS Lite.

You can now check the router’s DHCP setting to find the IP address of the Raspberry Pi, or use the Fing app on your smartphone (iOS and Android). Alternatively, connect a keyboard, mouse, and display to the Pi and then run the following command to find its IP address:

 hostname -I 

Step 2: Install and Configure ownCloud on Raspberry Pi 4

To set up ownCloud on Raspberry Pi 4, you will need to install the following:

  • A web server (NGINX or Apache)
  • PHP
  • MariaDB database

To install these services, install and run the PuTTY app on Windows, or use the Terminal app on macOS, and connect to the Raspberry Pi via SSH.

Then run the following commands:

 sudo apt-get update
sudo apt-get upgrade

Wait for the upgrade to finish. Press Y and hit Enter when prompted. After the update, run the following commands to install the required packages.

 sudo apt-get install apache2
sudo apt install apache2 libapache2-mod-php7.4 openssl php-imagick php7.4-common php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-pgsql php-smbclient php-ssh2 php7.4-sqlite3 php7.4-xml php7.4-zip

After installing the required packages, restart the Apache server.

 sudo service apache2 restart 

Then run the following command to add the user to the www-data group.

 sudo usermod -a -G www-data www-data 

Next, we can download and install the ownCloud on the Raspberry Pi 4 using the following commands:

 cd /var/www/html
sudo wget https:
sudo unzip owncloud-complete-latest.zip

Create a directory to mount an external SSD and change the ownership of the ownCloud directory:

 sudo mkdir /media/ExternalSSD
sudo chown www-data:www-data /media/ExternalSSD
sudo chmod 750 /media/ExternalSSD

Fix permissions to avoid issues:

 sudo chown -R www-data: /var/www/html/owncloud
sudo chmod 777 /var/www/html/owncloud
sudo mkdir /var/lib/php/session
sudo chmod 777 /var/lib/php/session

Next, you need to configure the Apache web server. Open the config file:

 sudo nano /etc/apache2/conf-available/owncloud.conf

Then add the following lines to it:

 Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/html/owncloud
 SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>

Save and exit nano with Ctrl + O then Ctrl + X. Then enable the Apache modules:

 sudo a2enconf owncloud
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

Install the MariaDB database:

 sudo apt install mariadb-server 

Create a database for users:

 sudo mysql

CREATE DATABASE owncloud;
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'YourPassword';
GRANT ALL PRIVILEGES ON owncloud.* TO 'ownclouduser'@'localhost';
FLUSH PRIVILEGES;
Exit;

Reboot the Raspberry Pi:

 sudo reboot 

Step 3: Add External Storage

You can add multiple USB storage devices to Raspberry Pi 4 via the USB 3.0 ports. Connect one of your SSDs or hard drives to the USB port and follow the steps below to mount the external storage device to a directory in the file system and add storage to your DIY NAS.

We have already created the /media/ExternalSSD directory for mounting the external storage. Make sure the SSD or HDD is NTFS formatted. Then follow these steps to mount it:

 sudo apt-get install ntfs-3g 

Then get the GID, UID, and UUID:

 id -u www-data
id -g www-data
ls -l /dev/disk/by-uuid

Note down the UUID, GID, and UID. In our example, the sda1 is the external NTFS formatted SSD disk. Next, we will add the drive to the fstab file.

 sudo nano /etc/fstab 

Add the following line:

 UUID= 01D9B8034CE29270 /media/ExternalSSD auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0 

To mount the external storage device, you need to find its device identifier. Use the following command to list all connected storage devices:

 lsusb 

At this stage, you can restart the Raspberry Pi to auto-mount the external storage, or mount it manually:

 sudo mount /dev/sda1 /media/ExternalSSD 

All your files on the NTFS drive should be visible in the /media/ExternalSSD directory.

The drive currently contains only System Volume Information and RECYCLE.BIN hidden folders. Reboot the system.

 sudo reboot 

4. Configure ownCloud

After the reboot, visit the IP address of the Raspberry Pi in a web browser to access your ownCloud.

Enter a username and password of your choice. Click on Storage & database and enter the MariaDB database details as shown below.

If you are using an external drive to store data, make sure to change the Data folder path to /media/ExternalSSD from default /var/www/html/owncloud/data. In future, if you want to add new drive or more storage, follow this ownCloud guide to update the directory path.

Click Finish Setup. After a while, you can log in to ownCloud.

You can download the ownCloud app on your smartphone or computer to sync your files. But before you start the sync or file upload, add external HDD or SSD storage.

If you have followed each step carefully, you should be good to go and ready to upload the files to your ownCloud NAS.

Using Your New Raspberry Pi 4 NAS

A NAS allows you to centralize and access your data from multiple devices on your local network. It’s a convenient and efficient way to store, share, and back up your files at home or the office. Create more users and assign them their ownCloud account to let them upload and secure their data.

Building your own NAS with Raspberry Pi 4 and ownCloud offers a cost-effective and customizable solution to meet your storage needs and take control of your data!

MakeUseOf