Steps to Install and Setup NextCloud on Ubuntu 20.04 LTS

NextCloud is a free & open source self-hosted cloud storage solution tool. Using NextCloud,we can store all the personal files present on local system. It provides End-to-end encryption & we can create and edit doc, ppt, xls files directly from NextCloud.

There are some steps to install & setup NextCloud on ubuntu:

Step 1: Update the System.

apt-get update

Step 2: Install apche2 web service.

apt-get install apache2

Step 3: Start & Enable Apache2 service.

systemctl start apache2
systemctl enable apache2

Step 4: Install Mysql database.

  • Update the System.

apt-get update

  • Install Mysql database.

apt-get install mysql-server

Step 5: Start & Enable Mysql service.

systemctl start mysql
systemctl enable mysql

  • Login to Mysql database.

mysql -u root

  • Press Enter.
  • Create Database.

create database nextcloud;

  • Create user & set the password on user.

create user nextclouduser@localhost identified by 'Password';

  • Provide Grant all Privileges on database to user.

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' WITH GRANT OPTION;

  • Flush the privileges.


  • Exit.
  • Here is the command output.

root@ip-172-31-46-224:/home/ubuntu# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26-0ubuntu0.20.04.3 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database nextcloud;
Query OK, 1 row affected (0.01 sec)
mysql> create user nextclouduser@localhost identified by 'Password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
mysql> exit

Step 6: Install Php & modules.

apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

Step 7: Install NextCloud on System.


  • Here is the command output.

root@ip-172-31-46-224:/home/ubuntu# wget
--2021-10-22 11:26:15--
Resolving (, 2a01:4f9:2a:3119::181
Connecting to (||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 155240687 (148M) [application/zip]
Saving to: ‘’ 15%[=============> ] 23.62M 5.05MB/s eta 28s ^ 100%[===========================================================================================>] 148.05M 6.18MB/s in 25s
2021-10-22 11:26:41 (5.99 MB/s) - ‘’ saved [155240687/155240687]

  • Install unzip tool.

apt install unzip

  • Unzip the downloaded folder.

unzip -d /var/www/

  • Provide the following permission.

chown www-data:www-data /var/www/nextcloud/ -R

Step 8: Create & Configure the Apache Virtual Host file.

vim /etc/apache2/sites-available/nextcloud.conf

  • Add the following lines:

<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined
<Directory /var/www/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any

Step 9: Run the following commands:

  • To enable the created apache virtual host file.

a2ensite nextcloud.conf

  • Disable the default file.

a2dissite 000-default.conf

  • Enable the rewrite mode

a2enmod rewrite headers env dir mime setenvif ssl

  • Restart the apache2

service apache2 restart

Step 10: Open NextCloud Web interface


  • Here is the output.
  • Create a admin account & set username & password for login.

  • Provide the Database credentials like user,password & db name.
  • Click on Finish Setup.

  • Click on Next.

  • Click on Start using NextCloud.

  • Now,NextCloud is Ready.

Leave a Reply