
NextCloud puts your data at your fingertips, under your control. You store your photos, calendar, contacts, and documents on a server of your choosing be it at home, a rented server or at one of our providers. Your existing data can stay at that FTP drive at work, Dropbox or a NAS you have at home, while you get at it through NextCloud.
A trusted solution giving you access to all the data you care about in one convenient place!
The tutorial was prepared with our "CentOS 7" template and is meant to work on our self-managed virtual private servers.
0. Preliminary requirements:
"CentOS 7" template installed on the server;
Dependencies required for installation steps:
yum install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python mlocate bzip2 nano
Fully updates server software (yum update);
1. MariaDB installation
yum install -y mariadb mariadb-server
Enable MariaDB to automatically start after server reboot:
systemctl enable mariadb.service
Start MariaDB:
systemctl start mariadbNow run the post-installation security script:
mysql_secure_installation
When the script asks you to enter MariaDB root password, press enter because you have not set the root password yet. Then enter "Y" to set the root password for the MariaDB server. And proceed with pressing Enter to answer all the remaining questions.
2. Apache and PHP 7 installation
Apache installation:
Start Apache:
systemctl enable httpd.service
systemctl start httpd.service
This installation will be of only the necessary PHP modules. For more complete install, other PHP modules might be required too. At the moment, proceed with the following installation:
yum install -y centos-release-scl
yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring \
rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis \
rh-php72-php-opcache rh-php72-php-imagick
Create the required symlinks:
ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php72-php.conf /etc/httpd/conf.d/
ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/
ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php72-php7.so /etc/httpd/modules/
ln -s /opt/rh/rh-php72/root/bin/php /usr/bin/php
Restart Apache to load the new version of PHP:
3. Creating a MariaDB database and user
Login to your MariaDB:
Create a database:
CREATE DATABASE nextcloud;
Create user:
CREATE USER nextclouduser@localhost IDENTIFIED BY 'your-password';
Grant privileges for user and exit:
GRANT ALL PRIVILEGES ON nextcloud.* to nextclouduser@localhost IDENTIFIED BY 'your-password';
FLUSH PRIVILEGES;
exit;
4. Enable Binary Logging in MariaDB
Open MySQL my.cnf configuration file for edit:
Add the following three lines in the [mysqld] section:
log-basename=master
log-bin
binlog-format=mixed
Restart MariaDB:
systemctl restart mariadb
5. Download NextCloud files:
Download latest NextCloud package:
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip
The latest release can be found at: https://nextcloud.com/install/#instructions-server
Extract it:
unzip nextcloud-18.0.3.zip
Move files to your Apache directory:
mv nextcloud/* nextcloud/.* /var/www/html/
6. Setting strong directory permissions
Create "permissions.sh" file:
Insert the content:
#!/bin/bash
ncpath='/var/www/html/'
htuser='apache'
htgroup='apache'
rootuser='root'
printf "Creating possible missing Directories\n"
mkdir -p $ncpath/data
mkdir -p $ncpath/assets
mkdir -p $ncpath/updater
printf "chmod Files and Directories\n"
find ${ncpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ncpath}/ -type d -print0 | xargs -0 chmod 0750
printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ncpath}/
chown -R ${htuser}:${htgroup} ${ncpath}/apps/
chown -R ${htuser}:${htgroup} ${ncpath}/assets/
chown -R ${htuser}:${htgroup} ${ncpath}/config/
chown -R ${htuser}:${htgroup} ${ncpath}/data/
chown -R ${htuser}:${htgroup} ${ncpath}/themes/
chown -R ${htuser}:${htgroup} ${ncpath}/updater/
chmod +x ${ncpath}/occ
printf "chmod/chown .htaccess\n"
if [ -f ${ncpath}/.htaccess ]
then
chmod 0644 ${ncpath}/.htaccess
chown ${rootuser}:${htgroup} ${ncpath}/.htaccess
fi
if [ -f ${ncpath}/data/.htaccess ]
then
chmod 0644 ${ncpath}/data/.htaccess
chown ${rootuser}:${htgroup} ${ncpath}/data/.htaccess
fi
Run the file:
7. NextCloud installation
Open your server hostname or IP address in the browser and finish the installation.

More information about NextCloud project can be found at: https://nextcloud.com/