I’ve bought Raspberry Pi 4 to use it as a DaaS (Desktop as a Service). I’ve needed a VPN server to securely connect to when I am traveling. I’ve needed a Cloud Server to replace Dropbox to have unlimited space. I’ve needed a NAS (Network-attached storage) to share files among my laptops and computers. I’ve also needed a Music Player Server to manage my music files and serve as a source for my amplifier. I’ve also needed a media player like Apple TV to play my movies, youtube etc.

In summary Raspberry Pi as:

To be able to do all of the above, I think it is better to keep the original Raspbian distribution.

I have used Nextcloud:
I have used an external hard drive to the Raspberry Pi (rp). Since there is a chance that when you restart your rp it automatically mount external hard drive to different place it is a good idea to configure fstab to make sure that it always mounted on the right place. I also set static ip for rp (192.168.0.101)

Installing Nextcloud:

sudo apt install snapd
sudo snap install nextcloud


Setting up the external hard drive:

sudo mkdir /media/pi/cloud


select UUID of your external hard drive:

sudo blkid
sudo emacs /etc/fstab


Use tab for each column when you add the following:

UUID=YOURS /media/pi/cloud       auto    nosuid,nodev,nofail     0       0


Now reboot to see it mounts the external drive properly at the right place.

Now edit the configuration file:

sudo emacs /var/snap/nextcloud/current/nextcloud/config/autoconfig.php


change the data directory as:

'directory' => '/media/pi/cloud'


Start nextcloud:

sudo snap restart nextcloud.php-fpm


To install a Let’s Encrypt SSL certificate, type:

cd /snap/bin
sudo ./nextcloud.enable-https lets-encrypt


If you use public dynamic dns services like noip remember to add it to config:

sudo emacs /var/snap/nextcloud/current/nextcloud/config/config.php

'trusted_domains' =>

array (

0 => '192.168.0.101',

1 => '192.168.0.*',

2 => 'YOURS.ddns.net',

),


check the directory file in the config if it is set to the right place

'datadirectory' => '/media/pi/cloud',