Tutorial

How To Install and Configure ownCloud on Ubuntu 16.04

How To Install and Configure ownCloud on Ubuntu 16.04
Not using Ubuntu 16.04?Choose a different version or distribution.
Ubuntu 16.04

Introduction

ownCloud is a file sharing server that permits you to store your personal content, like documents and pictures, in a centralized location, much like Dropbox. The difference with ownCloud is that it is free and open-source, which allows anyone to use and examine it. It also returns the control and security of your sensitive data back to you, thus eliminating the utilization of a third-party cloud hosting service.

In this tutorial, we will install and configure an ownCloud instance on an Ubuntu 16.04 server.

Prerequisites

In order to complete the steps in this guide, you will need the following:

  • A sudo user on your server: You can create a user with sudo privileges by following the Ubuntu 16.04 initial server setup guide.
  • A LAMP stack: ownCloud requires a web server, a database, and PHP to function properly. Setting up a LAMP stack (Linux, Apache, MySQL, and PHP) server fulfills all of these requirements. Follow this guide to install and configure this software.
    • To take full advantage of all the features that ownCloud has to offer, make sure to install the following PHP modules: php-bz2, php-curl, php-gd, php-imagick, php-intl, php-mbstring, php-xml, and php-zip.
  • An SSL certificate: How you set this up depends on whether or not you have a domain name that resolves to your server.
    • If you have a domain name… the easiest way to secure your site is with Let’s Encrypt, which provides free, trusted certificates. Follow the Let’s Encrypt guide for Apache to set this up.
    • If you do not have a domain… and you are just using this configuration for testing or personal use, you can use a self-signed certificate instead. This provides the same type of encryption, but without the domain validation. Follow the self-signed SSL guide for Apache to get set up.

Step 1 – ownCloud Installation

The ownCloud server package does not exist within the default repositories for Ubuntu. However, ownCloud maintains a dedicated repository for the distro.

To begin, download their release key using the curl command and import it with the apt-key utility with the add command:

  1. sudo curl https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key | sudo apt-key add -
Output
. . . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1358 100 1358 0 0 2057 0 --:--:-- --:--:-- --:--:-- 2057 OK

The ‘Release.key’ file contains a PGP (Pretty Good Privacy) public key which apt will use to verify that the ownCloud package is authentic.

In addition to importing the key, create a file called owncloud.list in the sources.list.d directory for apt. The file will contain the address to the ownCloud repository.

  1. echo 'deb https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' | sudo tee /etc/apt/sources.list.d/owncloud.list
Output
deb https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /

After adding a new source, use the apt-get utility and the update command to make apt aware of the change:

  1. sudo apt-get update
Output
. . . W: https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.gpg: Signature by key DDA2C105C4B73A6649AD2BBD47AE7F72479BC94B uses weak digest algorithm (SHA1)

Finally, perform the installation of ownCloud using the apt-get utility and the install command:

  1. sudo apt-get install owncloud

When prompted with the Do you want to continue? [Y/n] message, press the ENTER key to confirm the installation.

Output
Setting up owncloud-deps-php7.0 (9.1.1-1.2) ... Enabling conf owncloud. To activate the new configuration, you need to run: service apache2 reload apache2_invoke: Enable module rewrite apache2_invoke owncloud: already enabled Setting up owncloud (9.1.1-1.2) ... Processing triggers for libc-bin (2.23-0ubuntu4) ... Processing triggers for libapache2-mod-php7.0 (7.0.8-0ubuntu0.16.04.3) ...

As you can see by the output, the installation created a new configuration for Apache. Use the systemctl utility with the reload command to make the Apache daemon aware of the change:

  1. sudo systemctl reload apache2

With the ownCloud server installed, we will move on to setting up a database for it to use.

Step 2 – MySQL Database Configuration

To get started, log into MySQL with the administrative account:

  1. mysql -u root -p

Enter the password you set for the MySQL root user when you installed the database server.

ownCloud requires a separate database for storing administrative data. While you can call this database whatever you prefer, we decided on the name owncloud to keep things simple.

  1. CREATE DATABASE owncloud;

Note: Every MySQL statement must end with a semi-colon (;). Be sure to check that this is present if you are experiencing an issue.

Next, create a separate MySQL user account that will interact with the newly created database. Creating one-function databases and accounts is a good idea from a management and security standpoint. As with the naming of the database, choose a username that you prefer. We elected to go with the name owncloud in this guide.

  1. GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'set_database_password';

Warning: Be sure to put an actual password where the command states: set_database_password

With the user assigned access to the database, perform the flush-privileges operation to ensure that the running instance of MySQL knows about the recent privilege assignment:

  1. FLUSH PRIVILEGES;

This concludes the configuration of MySQL, therefore we will quit the session by typing:

  1. exit

With the ownCloud server installed and the database set up, we are ready to turn our attention to configuring the ownCloud application.

Step 3 – ownCloud Configuration

To access the ownCloud web interface, open a web browser and navigate to the following address:

https://server_domain_or_IP/owncloud

If a self-signed certificate is being used, you will likely be presented with a warning because the certificate is not signed by one of your browser’s trusted authorities. This is expected and normal. We are only interested in the encryption aspect of the certificate, not the third-party validation of our host’s authenticity. Click the appropriate button or link to proceed to the ownCloud admin page.

You should see something like this:

ownCloud Admin Page

Create an admin account by choosing a username and a password. For security purposes it is not recommended to use something like “admin” for the username.

ownCloud Admin Account

Before clicking the Finish setup button, click on the Storage & database link:

ownCloud Database Configure

Leave the Data folder setting as-is and click the MySQL/MariaDB button in the Configure the database section.

ownCloud Database Settings

Enter the database information that you configured in the previous step. Below is an example, which matches the database credentials that we used in this guide:

ownCloud Database Example

Click the Finish setup button to sign into ownCloud. A safe home for all your data splash screen should appear:

ownCloud Welcome Screen

Click the x in the top-right corner of the splash screen to access the main interface:

ownCloud Main Interface

Here, you can create or upload files to your personal cloud.

Conclusion

ownCloud can replicate the capabilities of popular third-party cloud storage services. Content can be shared between users or externally with public URLs. The advantage of ownCloud is that the information is stored securely in a place that you control.

Explore the interface and for additional functionality, install plugins using ownCloud’s app store.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
10 Comments
Leave a comment...

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Great tutorial!

Isn’t it working with Nginx?

Michael Lenardson
DigitalOcean Employee
DigitalOcean Employee badge
August 10, 2016

@RamphisReyes: Thanks for the feedback and question.

ownCloud’s system requirements recommend using Apache 2.4 with mod_php. Although it is possible to use NGiNX, it is not officially supported. ownCloud has a community-maintained NGiNX Example Configurations article, which provides assistance for running an ownCloud server with NGiNX.

I hope that you find that resource useful.

@mlenardson: Thank you for this information. I opted for creating a new droplet for only owncloud with apache2 this time. I did everything you did on this tutorial, and I am still having a few warnings. Hope you can help me out to solve this, step by step if possible.

These are the warnings:

Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our documentation. (List of invalid files… / Rescan…)

The "Strict-Transport-Security" HTTP header is not configured to at least "15552000" seconds. For enhanced security we recommend enabling HSTS as described in our security tips.

No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation.

Thank you in advance for your help.

Michael Lenardson
DigitalOcean Employee
DigitalOcean Employee badge
August 18, 2016

You’re very welcome @RamphisReyes.

I am sorry to hear that you are receiving warnings when attempting to setup ownCloud. It appears that the ownCloud server is installed, which is great because that is the goal of this tutorial. As it turns out, the steps required to address the warnings are not universal. However, ownCloud has official documentation regarding each of them. Please visit the following links for additionally information:

When I run:

sudo systemctl restart apache2.service

The output is:

sudo: systemctl: command not found

Please help!

Michael Lenardson
DigitalOcean Employee
DigitalOcean Employee badge
August 10, 2016

@rjs04615: The tutorial is designed around running an ownCloud server on Ubuntu 16.04, which uses systemd as its initialization system. The command not found error indicates that a different initialization system is being used. If you are running a different version of Ubuntu or Linux distro entirely, the initialization command for your environment is needed in order to restart Apache.

I hope that helps.

I’m very interested in trying out NextCloud – any assistance there would be much appreciated. Either way, thanks for the OneCloud manual install instructions.

I’ve been waiting for this! I will be following along tonight. Thanks :)

Michael Lenardson
DigitalOcean Employee
DigitalOcean Employee badge
August 18, 2016

You’re very welcome!

I followed the directions but I cannot access my Owncloud at all. I followed the directions to make a SSL certificate and all went fine. I don’t know what I’m missing here.

Michael Lenardson
DigitalOcean Employee
DigitalOcean Employee badge
August 18, 2016

Hello @joelstitch,

I am sorry to hear that you are experiencing difficulties when attempting to install ownCloud. When you say, “I cannot access my ownCloud at all”, what specific step are you performing? Are you attempting to browse to the ownCloud web interface? Are you receiving an error and if so, what is the error?

When I try to access it trough the web browser I get this message:

Secure Connection Failed

An error occurred during a connection to joelarce.com. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

    The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
    Please contact the website owners to inform them of this problem.

I followed the directions to set it up with https but am missing something. I think the tutorial explains how to do it by transfering all http request to https but I only want to do that with owncloud and not every single web app I have on my server.

This comment has been deleted

    I was trying to install one of those comodo certs sold by namecheap. Cause i wanted Owncloud to run on https. So, i was kind of struggling here following your instructions to install the comercial certificate, but then saw your let`s encrypt link, and gladly found out they have an automated tool called CERTBOT which made my day, by ****installing and configuring a total valid and trusted certificate in about 1 minute. ****

    Now i am running OwnCloud under https with automatic redirect from port 80 to 443 and everything.

    So thanks for all your clear explanations. I might learn more about this wonderful encryption tech in the future.

    Andrew SB
    DigitalOcean Employee
    DigitalOcean Employee badge
    September 2, 2016

    If you’re using ownCloud with DO’s block storage, you’ll want to check out this tutorial too:

    https://www.digitalocean.com/community/tutorials/how-to-move-the-data-directory-for-owncloud-on-ubuntu-16-04

    Hi, Could you explain how to use sub.domain.com instead of domain.com/owncloud ? Thank you for all your great tutorials !

    Hey there when I tried to make account in OwnCloud, it returns this error.

    SQLSTATE[HY000][1045] Access denied for user 'user_test'@'localhost' (using password: yes)
    

    I thought I input the password wrong. However, I can login via SSH to “user_test” profile in MySQL. What is the problem?

    Try using a password without special characters (!@#$%^[], etc.). That fixed the issue for me. Owncloud won’t be able to parse the database password correctly in the login webpage if special characters are used.

    I am now not in my working computer. I do not have experience using MySQL in the first place but I used MongoDB for several project in the past.

    • Do I need to turn on the MySQL server before I am using it (similar to mongod in MongoDB)? Or does MySQL server automatically starts? I suspect that when I was trying to register for admin in OwnCloud I have not yet started the MySQL server.
    • In the other hand I do have 2 "!"s in my password, so that could be the reason as well.
    Michael Lenardson
    DigitalOcean Employee
    DigitalOcean Employee badge
    October 28, 2016

    If MySQL is not running, you will need to start it in order to setup ownCloud. This can be done using the systemctl utility with the start command:

    1. sudo systemctl start mysql

    The installation of MySQL usually results in the application starting automatically following a reboot. You can verify this with the systemctl utility:

    1. systemctl is-enabled mysql; echo $?

    An output of zero confirms an enabled daemon, which we want. A one, however, confirms a disabled daemon that will not start.

    Output
    enabled 0

    In the event of a disabled daemon, use the systemctl utility to enable it:

    1. sudo systemctl enable mysql

    MySQL will now start automatically following a system reboot.

    Additionally, the complexity of the password for the ownCloud database user (user_test) may be a factor. Sometimes when text is parsed by a language (e.g. PHP) and passed to another application (i.e. MySQL) things can get lost in translation. Before changing the password, I would recommend making sure that MySQL is running and then try setting up ownCloud. If the issue remains, then it might be worth setting a new password for the database user.

    Hey there I just fixed it. The problem was because the MySQL is server is not running. On the other hand do you have any idea on how to install WebDAV application?

    Here, https://www.tagspaces.org/blog/webdav-edition/ I need to specify my sudo chown -R your_www_group:your_www_user tagspaces.

    What are my your_www_group and your_www_user?

    Michael Lenardson
    DigitalOcean Employee
    DigitalOcean Employee badge
    October 28, 2016

    There are many things that can cause this error. The most common is an incorrect password. However, since you’re able to log into MySQL via an interactive shell that eliminates the use of an incorrect password. Is MySQL running on the same server as the ownCloud instance?

    Everything in the same droplets. But the thing is that I am not sure if the MySQL server is running when I tried to register. Does MySQL server start automatically or do I need to start it manually?

    I am away from my computer at this moment, so I cannot try stuff yet.

    Michael Lenardson
    DigitalOcean Employee
    DigitalOcean Employee badge
    October 28, 2016

    That’s good because it’ll make it a little easier to troubleshoot. I replied to a previous message of yours regarding MySQL and if it starts automatically. I provided some commands to check whether or not it’s set to start automatically following a system reboot. Also, how to enable it to start automatically if it’s not set to do so.

    No worries. Hopefully, the resolution is something simple, like starting MySQL.

    Try DigitalOcean for free

    Click below to sign up and get $200 of credit to try our products over 60 days!

    Sign up

    Join the Tech Talk
    Success! Thank you! Please check your email for further details.

    Please complete your information!

    Congratulations on unlocking the whale ambience easter egg!

    Click the whale button in the bottom left of your screen to toggle some ambient whale noises while you read.

    Thank you to the Glacier Bay National Park & Preserve and Merrick079 for the sounds behind this easter egg.

    Interested in whales, protecting them, and their connection to helping prevent climate change? We recommend checking out the Whale and Dolphin Conservation.

    Become a contributor for community

    Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

    DigitalOcean Documentation

    Full documentation for every DigitalOcean product.

    Resources for startups and SMBs

    The Wave has everything you need to know about building a business, from raising funding to marketing your product.

    Get our newsletter

    Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

    New accounts only. By submitting your email you agree to our Privacy Policy

    The developer cloud

    Scale up as you grow — whether you're running one virtual machine or ten thousand.

    Get started for free

    Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

    *This promotional offer applies to new accounts only.