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:
- Cloud server (this post)
- VPN server
- NAS
- Music server
- Media Player
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',