Last updated by Sascha Brockel on 17 April 2021
NextCloudPi (NCP) has simplified my life after a year with my Raspberry Pi 3 (RPI3) and a lot of stress around homecloud. I have now decided to go one step further and become more powerful. In the following section I briefly tell about my experiences with the RPI3.
I bought the RPI3 with the goal of having a better media player than, say, Kodi on the FireTV, which was very slow in its first incarnation. Long story short: tried it and used it for a long time, but the new FireTV sticks were just stronger. Then I found out that you can create your own cloud with the device and got smart. First attempts I started with OwnCloud, until I realized that a lot of things are paid and NextCloud is the better alternative and the original co-founder of OwnCloud also moved there.
However, installing and maintaining NextCloud on Raspbian was such a hassle that it was no longer pretty and not at all beginner friendly with PHP configurations or memory caches. With every update new requirements and bugs and especially for a Linux newbie like me a pain. So I came across the NextCloudPi project by NachoParker through forums. This offers everything NextCloud offers, but much easier and better.
The main advantage is the web interface with easily configurable features like Let's Encrypt for an always working SSL certificate or automatic backups.
Why the ODROID N2?
The ODROID N2 is currently (June 2020) still one of the strongest SBC's (Single Board Computer) and relatively good value for money. I bought the device for the equivalent of 115 Euros with 4GB RAM directly from the manufacturer. Included: Power supply, matching case and a 16GB eMMC module. eMMC modules are from experience much more stable than microSD cards and also much faster. 8GB is a minimum requirement for the project. The performance difference between the RPI3 and the ODROID N2, for example, is considerable. If you want to spend even more money, you can also go for an ODROID H2, since it can be upgraded to 32GB of RAM. The N2 has a passive cooler and thus does not make any loud noises or even any noises at all.
According to NCP developer NachoParker, there is no technical reason to stick with an RPI3. The RPI3 enjoys a large community and great popularity and is therefore often used and also supported by him, but in his words: HW is
worse, SW is worse...
The biggest disadvantage of all Raspberry Pi's is that they do not support Gigabit LAN and are connected to the same controller as the USB ports, which often slows down data transfers. However, it should be noted that the ODROID N2 does not have a built-in WLAN or Bluetooth module for this purpose and must be upgraded via USB if necessary, even though I strongly advise against it, especially for WLAN for a cloud.
The NAS system
Here it depends a lot on personal preferences, what exactly you want to do and also on your available budget. It is possible to build a RAID system with several HDDs, but it is also possible to attach only one SSD to the single-board computer. This depends on what the cloud is to be used for and also to what extent.
Basically, there are few limits. If you have the money, the most ideal choice is probably to store the data on an SSD and thus have super-fast access, but to store it on an HDD to be able to guarantee the backup. In the end, I opted for a future-proof variant consisting of a RAID enclosure and two 4 TByte NAS HDDs.
The high price, which resulted in my case, is due to the security, which I wanted to have guaranteed by RAID 1. If you want to know more about RAID, you should read the article "RAID at a glance" watch
It is not necessary to buy two hard disks, depending on the intended use, one hard disk or even one SSD will do and thus also reduces the purchase price.
In general, only the Docker variant for NextCloudPi is currently available for the ODROID N2 (at least I am not aware of anything else). Armbian is currently not officially supported. The big advantage to Docker is that in case of a device reset, corrupt system or other problems with the Docker installation, all files and databases including all users with their settings are stored on disk by NextCloudPi. This means that the systems can be seamlessly swapped and will work again immediately after installing the Docker image and connecting the corresponding hard disk(s).
First place the eMMC on the board. Make sure the switch is facing to the right. Next, we need to connect the N2 to power once and wait for it to configure itself for the first time. After that, we need to disconnect it from power once and then reconnect it. You can now connect the RAID system to the N2 via USB. The easiest way to configure the N2 is to use the program PuTTYwith which you can reach the device via SSH. To do this, you must find out the IP address of the device and enter it in the program. You can often find this out via the web interface of your router, e.g. a FritzBox. Log in with the following default data:
Before we can really get started, we first have to release the required ports in our router. On the FritzBox, this is done under the Internet -> Shares -> Port Shares tab and then click on the "Add device for shares" button. The ports are 80, 443 and 4443, select the right device, so make sure it is the N2! At
of the FritzBox, sharing is possible with the name HTTP server, HTTPS server and then a manually created share with port 4443.
Linux system updates
The first step that should be done in any case is to update the Linux OS, which in my case is Ubuntu. Execute the following commands in this order.
sudo apt upgrade
sudo apt full-upgrade
Since we want to install NextCloudPi in a Docker container, we first need Docker itself. It should be mentioned here that BTRFS is hardly or only very difficult to use with Docker, e.g. using the snapshot function. The following commands are necessary for this.
curl -fsSL https://get.docker.com -o get-docker.sh
Mounting the RAID system
After the Docker installation script, let's get started with the access / write permissions for our RAID system. Before we can do that, we have to give the RAID system a file system. Use the fdisk command to find out what the system is called. In my case /dev/sda. Replace this with the location that is shown to you. Now we mount the system to an arbitrary place on our N2. In my case simply the folder storage with subfolder data, in case other projects should store data on the system.
mount /dev/sda /media/storage
chmod +x /media/storage/data
Now that the disk is mounted, we have to make sure that it stays mounted after every reboot and that we don't have to mount it manually from the command line. With blkid all /dev devices are listed again. Make a note of the UUID. Add a new line in the editor that comes from the third command and make sure that the last line is a blank line! Please replace the UUID with your own. You can find a more detailed explanation here: WikiUbuntu - fstab
sudo blkid sudo nano /etc/fstab UUID=bbf85ecb-cc61-40ed-ba7b-d7b804ee845e /media/storage ext4 defaults 0 2
NextCloudPi Installation & Startup
Now we come to the actual installation of NextCloudPi with the following command. Please change the IP to the IP that your N2 has been assigned by the router! It is the same as the one you used to log in via SSH and thus can be found out via the router. Continue with the next steps after you see "Init Done" in the console. You can get out of the logs with the key combination Ctrl + C.
IP=192.168.178.47 docker run --restart=always -d -p 4443:4443 -p 443:443 -p 80:80 -v /media/storage/data:/data --name nextcloudpi ownyourbits/nextcloudpi-armhf $IP docker logs -f nextcloudpi
After that you are almost there! Now open your cloud in the browser:
https:// (the IP of the N2)
Make a note of the data displayed for the web panel and login. Then switch to the web panel to make the first settings.
https://:4443 (the IP of the N2)
But to make your instance of NextCloudPi accessible to the Internet, you need a DDNS provider and Let's Encrypt. But first things first. Depending on whether you really want to have only ncp as user for administration, you may need to log into the account once and otherwise create a new account for yourself with administrator rights. Back in the webpanel (:4443) we go under the Networking tab to the DDNS provider we have chosen. I personally chose spDYN decided. You will receive your self-selected domain and your token, which you enter and the matter is already done. For a working SSL certificate, you then go to letsencrypt in the same tab. Enter the same domain, your email and the admin you want to inform in the cloud itself, done!
But for this to work, the DynDNS function must also be activated in the router. I explain it again with the example of the FritzBox. Under the tab Internet -> Shares -> DynDNS. Depending on the selected DynDNS provider, select the appropriate or create it yourself. With spDYN you have to create it yourself. Enter the following data:
Update URL: https://update.spdyn.de/nic/update?hostname=&myip=
Domain name: your self-selected domain, which you have also entered in the webpanel
Username: your e-mail
Password: your password
You have made it! Everything is set up. Now you can make any settings in the web panel and install apps as you like. NextCloudPi will give you a real added value! The performance and speed is incomparable to an RPI3.
- ODROID-N2 with 4GByte RAM, power supply, case & 16GB eMMC module Linux for 115 €
- ICY BOX IB-RD3662-C31 RAID enclosure for 2X 3.5 inch SATA hard drives for 95 €
- 2x Western Digital WD Red 4TByte (3.5 inch) for 107 € each = 214 €
a total of 424 € for the listed setup on my purchase date about a year ago
This setup currently works very well. I have at least 15 Docker containers running all the time and both load and load times are good. If you are not sure whether this is not a bit too much for the beginning, then start with RaspberryPi 4 and an external hard drive or even a USB stick to get to know the possibilities of NextCloud.