How to install NextCloud 12 server on CentOS 7
NextCloud is a Dropbox-like solution for self-hosted file sharing and syncing. Installing NextCloud 12 on CentOS is quite simple. Whether you want to backup, have file-syncing or just have a Google Calendar alternative, this guide is for you.
What is NextCloud? Is it like a “cloud”?
If you stumbled here by chance and don’t know what NextCloud is, here is an article explaining its principal features and advantages/disadvantages. In this other article you can find NextCloud 12 new features. To tell you the truth, NextCloud is a SaaS cloud, if you want to know more about cloud types you can read this article.
In this article we will cover the installation of the server (not the client).
Step1: Install software
The first step in order to install NextCloud 12 is to install a web server and PHP. Since CentOS 7 ships with PHP 5.4 by default but NextCloud 12 requires at least PHP 7 we’ll also be installing PHP 7 from a third-party repository. The following procedure will install apache as webserver. Input the commands one by one to avoid errors!
Step 2: Database selection
Now that you got the software, you need to choose a database that will support the installation. You have three choices:
- SQLite: is a single-file database. It is suggested only for small installations since it will slow NextCloud down sensibly.
- MariaDB/MySQL: are popular open source databases especially amongst web developers. It is the suggested choice.
- PostgreSQL: a popular enterprise-class database. More complicated than MySQL/MariaDB.
Now, this choice won’t really alter the functionality of NextCloud (except if you use SQLite), so pick whatever you know best. If you’re unsure pick MariaDB/MySQL.
Step 3: Install NextCloud
This step involves getting the software and configure Apache to run it.
Step 4: Setting Apache and SELinux
In this step we’ll start (and enable) the webserver and we’ll set SELinux up. Now, many tutorials will tell you to disable SELinux (because it is a difficult component to manage). Instead, I suggest you to keep it on and add the rules for NextCloud:
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini' # restorecon -Rv '/var/www/html/nextcloud/'
If you decided to use a Mariadb/MySQL/PostgreSQL, you also need to allow apache to access it:
# setsebool -P httpd_can_network_connect_db 1
Now that you’ve configured SELinux let’s start and enable Apache:
Step 5: Configuring firewall
This step is essential when your firewall is enabled. If your firewall is enabled you won’t be able to access your NextCloud 12 instance; on the other hand if it isn’t enabled you shouldn’t have any problems and you can simply skip this step.
In order for the firewall to work, it must be enabled. This guide will not include this part. When you enable a firewall many things can go wrong, e.g. you’re using SSH, you enable the firewall and your connection is cut and can’t connect otherwise, hence you should carefully review the documentation from your distribution.
To open the ports needed by NextCloud 12 follow these steps:
Step 6: Install
Once you’re done, it’s time to install everything. Head to http://YOUR_IP_ADDRESS/nextcloud/ and you will be facing the following screen:
Select an administrator username and password. Then click on “Storage & Database“, here you can select the data folder, but if you don’t know what you’re doing it’s best if you leave it with the default value. Then select the database you chose during step 2. Fill everything and if you’ve followed all the steps correctly you should be seeing the Files app: