Friday, June 14, 2024
HomeLinuxInstall NextCloud Server on Ubuntu 20.04.5 (Focal Fossa)

Install NextCloud Server on Ubuntu 20.04.5 (Focal Fossa)

Nextcloud is a suite of client-server software for creating and using file hosting services, in this article, we will learn how to install nextcloud on ubuntu. Nextcloud provides functionally similar to Dropbox, Office 365 or Google Drive when used with integrated office suite solutions Collabora Online or OnlyOffice. It can be hosted in the cloud or on-premises.

Nextcloud files are stored in conventional directory structures, accessible via WebDAV if necessary. SQLite, MySQL or PostgresSQL database is required to provide additional functionality like permissions, shares, comments.
Nextcloud has planned new features such as monitoring capabilities, full-text search and Kerberos authentication, as well as audio/video conferencing, expanded federation and smaller user interface improvements.


  • Easy access anywhere
  • Seamless collaboration
  • Rich workspaces
  • Find everything in one place
  • Secure file exchange
  • Deep integration
  • Ultimate security

Step 1: Installing Updates

sudo apt update
sudo apt dist-upgrade

Press tab to put over to OK option. if it ask for service restarts.

Now we set our hostname.

sudo hostnamectl set-hostname

also configure hostname in below file location to make it permanent.

nano /etc/hostname

We are using below hostname:

To check a hostname type below command:


Step 2: Download Nextcloud

Copy the link address which get from their offical website and extarct the link throug wget command


We will Check the zip file after setting up LAMP server.

Step 3:

First install Apache web server through following command

apt install apache2 -y

check its status

sudo systemctl status apache2
apache service

Now install MySql through the following command

apt install mariadb-server -y

check its status

sudo systemctl status mysql

Also, install PHP libraries through the below command

apt install php libapache2-mod-php php-mysql -y

Once the installation is finished, you can run the following command to confirm your PHP version:

php -v

Now make our DB server secure:

sudo mysql_secure_installation
We haven't set root password for mariadb that's why press enter
unix_socket authentication = n
change the root password = Y
set root password for DB= n
repeat again
remove anonymous user = Y
disallow root login remotley = Y
remove test database and access to it = Y
reload privilege tables now? = Y

Step 4: Now setup a DataBase for NextCloud Server.

sudo mariab

We will give Grant to access DataBase:

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud@localhost' IDENTIFIED BY 'password'; 

Now ctrl press d to exit mariadb prompt.

Now make sure to enable following PHP modules for Apache:

sudo a2enmod dir env headers mime rewrite ssl
sudo systemctl restart apache2

Enable the recommended PHP extensions:

sudo phpenmod bcmath gmp imagick intl

Step 5: Now we unzip the nextcloud image.

Install unzip package through following command if its not availabe:

now apt install unzip

We have the nextcloud directory.

My user is not the user which is going to serve this content so lets change its permissions:

sudo chown www-data:www-data -R nextcloud

now moved this to the document’s root directory. we will move to the designated location.

sudo mv nextcloud  /var/www/

Lets disable the site which comes with default with Apache.

sudo a2dissite 000-default.conf

now restart apache.

Systemctl restart apache2.service

Step 6:

We will set up a config file for Apache that tells it how to serve Nextcloud.

sudo nano /etc/apache2/sites-available/nextcloud.conf

In order to Apache serve that website we have to enable its config file.

sudo a2ensite nextcloud.conf

now reload the apache.

systemctl reload apache2

Step 7:

Now we need to setup PHP before editing its config file search and change the values accordingly:

sudo vi /etc/php/7.4/apache2/php.ini
memory_limit = 512M
upload_max_filesize = 200M
max_execution_time = 360
post_max_size = 200M
date.timezone = Asia/Karachi

now sudo systemctl restart apache2

sudo systemctl status apache2

Step 8: Open following ports in Firewall:

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

Now browse the link and setup your user name.

Now provide values for DataBase server db,user & password. user & password from GRANT we created earlier.

Step 9: Install NextCloud:

Finally, install nextcloud

Start using NextCloud now.

That’s about it. We have successfully configured NextCloud server.

If you want to learn how to install ClamAV click here.


Most Popular