How to Install ownCloud 10 on Raspberry pi 4

Our goal is to install the latest version of ownCloud on the Raspberry pi 4. This tutorial assumes that you have a fully functional Raspberry pi 4 with Raspbian and a 8 GB Micro SD card Minimum!.

If you haven’t installed Raspbian then check out my guide on How to install Raspbian.

There are many ways to install ownCloud onto a Raspberry Pi. This particular tutorial I’ll be installing the latest version of ownCloud:

If you don’t have a Raspberry PI, I would personally recommend buying the Raspberry pi-4 Starter kit.

Setting up Raspberry Pi for ownCloud Server

1. Turn on the Raspberry Pi. From the terminal or SSH enter the following command:

sudo raspi-config

The following changes needs to be made in the Raspberry Pi configuration:

A. Change user password
For Security when accessing form the WAN

B. Change locale to en_US.UTF8
Select “Localisation Options” –> “Change Locale

Then Finish, and auto reboot. Upon re-boot you would need to update the RPI and its packages.

Update the Raspberry Pi and its packages

sudo su
apt update && apt upgrade -y

Install Apache 2 and SQLite

sudo apt-get install apache2 sqlite -y
sudo service apache2 restart

Install PHP

sudo apt-get install php php-gd php-sqlite3 php-curl libapache2-mod-php -y

Install SMB Client

sudo apt-get install smbclient

PHP extensions needed to use ownCloud

sudo apt-get install php-mysql php-mbstring php-gettext php-intl php-redis php-imagick php-igbinary php-gmp php-curl php-gd php-zip php-imap php-ldap php-bz2 php-phpseclib php-xml

Register ownCloud trusted key

wget -nv -O Release.key
sudo apt-key add - < Release.key

Add the official ownCloud package repository to Raspbian

echo 'deb /' > /etc/apt/sources.list.d/owncloud.list
apt-get update

Enable the Apache mod_rewrite module

sudo a2enmod rewrite
systemctl restart apache2

Install Maria Database

sudo apt install mariadb-server mariadb-client -y

Configure the database and user:

mysql -u root -p

You’ll be prompted to enter the Pi user password. Then execute the underneath commands in blue:

MariaDB [(none)]> create database owncloud;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user owncloud@localhost identified by ‘12345’;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on owncloud.* to owncloud@localhost identified by ‘12345’;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit;


Dowload and Install ownCloud


Once downloaded, unzip the zipped package to the /var/www/ directory.

unzip -d /var/www/

Set permissions

chown -R www-data:www-data /var/www/owncloud/
chmod -R 755 /var/www/owncloud/

Configure Apache

Edit the Apache default site configuration file

sudo nano /etc/apache2/sites-enabled/000-default.conf

Change DocumentRoot /var/www/html to DocumentRoot /var/www/owncloud

Then save and exit

Restart apache:

sudo systemctl restart apache2

Create data directory for ownCloud

mkdir /media/data
mkdir /media/data/owncloud

Change owner and group permissions to www-data

sudo chown www-data:www-data -R /media/data/owncloud

Basic First Access Setup

Get the IP from the Raspberry pi


1. Open your browser and enter the IP address provided, in my case is you’ll be directed to your ownCloud storage server.

2. You should be presented with a simple setup screen, Here create a username and password to create an admin account.

3. Click on Storage & database drop-down and enter your external hard drive directory: /media/data/owncloud


4. Immediately underneath enter your Mariadb details as follow:

Username: owncloud
Password: 12345
Database: owncloud
Server: localhost

5. Click on ‘Finish Setup’ button. That’s it. We’re good to go. Owncloud 10 installed on Raspbian Stretch is now ready for use.

Done! !! all is left is to configure your devices to access your ownCloud storage.

External Access

To allow devices like your phone or tablet to access your cloud from anywhere in the world with internet access you must Enable SSL then enable port forward.

1. Enable SSL

2. Continue with this tutorial


sudo nano /etc/apache2/sites-available/default-ssl.conf

Set the path to owncloud: DocumentRoot /var/www/owncloud

Re-Activate the new virtual host

sudo a2ensite default-ssl

Restart apache

sudo service apache2 restart

Port Forward

Log into your router and get the WAN IP address:

Or Google what is my IP address?


Now we need to add the WAN IP to your trusted IP list and not to be overwritten by ownCloud. To do this open the Owncloud config file, enter:

sudo nano /var/www/owncloud/config/config.php

Here add the WAN IP (External IP address) you just got from the router or Google to the trusted domains array. Your new entry should look something like this:

1 => '',

X are just placeholders. Replace the X’s with the WAN IP Address.

Now update the URL of the overwrite.cli.url line with your WAN IP Address. It should look something like this:

'overwrite.cli.url' => '',

Here is an example of the completed config.txt file.

Once done save and exit the the config.php.

Log into your router and navigate to the port forward section.

Port forward SSL port 443 to the Raspberry pi internal IP (LAN IP)  address and save settings.

Your RPI ownCloud is ready to be accessed externally (WAN) and from your devices just download the ownCloud App and enter: “https:// WAN IP Address” on the address bar or devices. below is an example:


Install Redis Memory Caching

Fix “No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation.
Please double check the installation guides, and check for any errors or warnings in the log.”

sudo su

Edit config.php:

sudo nano /var/www/owncloud/config/config.php

add the following:

'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'filelocking.enabled' => 'true',
'redis' => array (
'host' => 'localhost',`
'port' => 0,`

Mounting and Setting up an external hard drive

These instructions are for mounting an NTFS formatted hard drive and allowing ownCloud to store files onto it. Now would be a good time to plug in the external Hard Drive to the RPI.

1. Having an NTFS drive we will need to install a NFTS package by entering the following:

sudo apt-get install ntfs-3g -y

2. Make a directory we can mount to:

sudo mkdir /media/ownclouddrive

3. Create and add the www-data user to the www-data group:

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

4. Make the user www-data owner of the mounted drive and make its permissions read, write and execute:

sudo chown -R www-data:www-data /media/ownclouddrive
sudo chmod -R 775 /media/ownclouddrive

5. Now we need to get the gid, uid and the uuid as we will need to use them so the pi will remember it even if we plug it into a different USB port. Enter the following command for the gid:

id -g www-data

6. Now to get the uid enter the following command:

id -u www-data

7. Also we meed to get the UUID of the attached external hard drive so the Pi can remember this drive even if you plug it into a different USB port.

ls -l /dev/disk/by-uuid

8. Then copy the light blue letters and numbers of the sda1 entry usually located on the bottom. Should look something like (numbers&letters -> ../../sda1). See picture below:


9. Now add your drive into the fstab file so it’ll boot with the proper permissions.

sudo nano /etc/fstab

10. Add the following line to the bottom of the file, updating uid, guid and the UUID with the values we got above. (It should all be a single line). Dont forget to replace the UUID number to yours in stead of the one you copied from here.

UUID=F6941E59941E1D25 /media/ownclouddrive auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0


11. Save and reboot the Raspberry Pi:

sudo reboot

12. Now the drives should automatically be mounted. If mounted we’re all good to go. To check it enter:

sudo ls /media/ownclouddrive

Personal Cloud Storage

If there are files inside the drive you should be able to see them here. If it’s an empty drive you might not see anything so don’t be surprise if nothing shows up.

If you want to be absolutely positive that the drive is properly mounted, unplug the drive from the RPI plug it onto a PC since the drive is formatted “NTFS” it should be easily detected by the PC, open it, create an txt file name it test, then eject it and plug it back to the RPI and run the following command:

sudo ls /media/ownclouddrive

The txt file you created should be there.


I started this tech blog back in 2011 as a place to write down processes I took to fix my client systems and network. Now I write some tips and tricks to help others with the tech issues that one might encounter.

You may also like...

5 Responses

  1. dinkelberg says:

    Thanks!!! Super helpful.

  2. zingazong says:

    Followed every step. Got it working! Thank you.
    The only problem I’ve is the SSL. I cannot make it working!!

  3. Christian says:

    Actually, if I change back the fstab to the original version (from another computer), I can again reboot properly, so it is really the fstab that creates a problem when I change it with your procedure.
    Looks like with such an fstab as mine, no additional line is needed.

  4. Rishit says:

    Hi Miguel,

    Thanks for the tutorial. I followed the steps above. Looks like my files are stored in /media/data/owncloud/user/files/. While the external storage mount path is /media/ownclouddrive. How do I get my files to store on /media/ownclouddrive? I can see External HD from Raspberry pi so I am sure it’s mounted right. Owncloud data directory path is /media/data/owncloud that’s where my files from the owncloud are stored. If I change that path. I can not log in to the owncloud because again, that’s the folder that has user auth info.

    please help

  5. Adi says:

    Thanks 🙏🏻 brother. I spent almost 2 days scratching my head and still wasn’t even to get it working correctly. I find my self hard of luck that I didn’t find you before.