How to Install NextCloud with LEMP on CentOS Stream 9

NextCloud can be installed on a private home server or a virtual private server in the cloud. Files can then be uploaded and then synced to a local desktop, laptop, or even a smartphone. This way you have full control of your data.

Pre-requisites :

  • A system with CentOS Stream 9 installed and running.

  • root access to the system.

  • LEMP Stack installed and running, for this, you can refer to one of our guides on installing the LEMP Stack (Nginx, MariaDB and PHP).

Once you're all set, we'll proceed with NextCloud installation and configuration.

Install Wget & Developer Tools

yum groupinstall "Development tools"

yum install wget

Disable SELinux

Next, let us disable SELinux. We are going to set SELinux to permisive. Edit this file:

vi /etc/selinux/config

Then update, Edit this line to permisive:

SELINUX=permisive

Download NextCloud

First, navigate to the /var/www/nextcloud directory as follows:

cd /var/www/nextcloud

Now, download the latest NextCloud archive from the official website of NextCloud with the following command:

wget https://download.nextcloud.com/server/releases/nextcloud-23.0.0.zip

Check for the latest version here : NextCloud Official.

Check for files with the following command.

ls

Now, extract the NextCloud archive file nextcloud-23.0.0.zip with the following command:

unzip nextcloud-23.0.0.zip

Setting up FilePermission & Ownership

Now, change the owner and group of the nextcloud/ directory and its contents to Nginx as follows:

sudo chown -R nginx:nginx nextcloud

Now, change the permission or the nextcloud/ directory and its content to 775 as follows:

chmod -Rf 755 nextcloud

For , some update needed 777.

chmod -Rf 777 nextcloud/sites/files

chcon -R -t httpd_sys_content_rw_t /var/www/nextcloud/

chown nginx.nginx -R /var/lib/php/session/

Nextcloud required a directory to keep its data. To create a data directory and set the proper permissions on the nextcloud directory

sudo mkdir -p /var/nextcloud/data

sudo chown -R nginx:nginx /var/nextcloud

sudo chmod -R 755 /var/nextcloud

We need PHP-ZIP Module to run NextCloud. Install it using the below code.

yum install php-zip

Enable Firewall if not already done.

sudo firewall-cmd --add-service={http,https} --permanent

sudo firewall-cmd --reload

Configuring Nginx vHost

Create a new Nginx configuration file nextcloud.conf for NextCloud with the following command:

vi /etc/nginx/conf.d/nextcloud.conf

Add the following codes:

server {
listen 80;

server_name nextcloud.crowncloud.com;
root /var/www/nextcloud;
index index.php;

location / {
    try_files $uri $uri/ /index.php?$args;
}

location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Change nextcloud.crowncloud.com with Your Domain Name. If you are using with IP, Please remove the entire server_name line.

Now, press the Esc key, and type in :wq! and press the Enter key to save and exit the file.

Now, restart & check the Nginx & PHP-FPM service with the following commands:

systemctl restart php-fpm

systemctl restart nginx.service

Enable Firewall:

firewall-cmd --permanent --add-service=http

firewall-cmd --permanent --add-service=https

firewall-cmd --reload

Configuring Database

Now create a Database, User & Password for NextCloud:

mysql -u root

CREATE DATABASE ccpresta;

CREATE USER 'username'@'localhost' IDENTIFIED BY 'strong_password';

GRANT ALL PRIVILEGES ON NextCloud.* TO 'username'@'localhost';

FLUSH PRIVILEGES;

exit

Configuring NextCloud

Now open the IP address from your browser, this will redirect you to configuring the final parts of the NextCloud installation.

http://IP_address

Replace the IP_address with the actual IP of the server.

Input the Database details which was configured earlier.

Now you have successfully installed NextCloud with LEMP on your server.