Set Up Nextcloud with LAMP Stack on Ubuntu 20.04
Introduction
Nextcloud is an open-source collaborative platform with hundreds of apps for sharing documents, receiving emails, managing calendars, making video calls, and more. As a self-hosted solution, Nextcloud serves millions of users around the globe since it is a community-focused project that focuses on open standards for better interoperability.
The software is written in PHP and runs pretty well on a MySQL or a MariaDB database. Therefore, you can install it on top of your existing LAMP Stack infrastructure with just a few additional PHP extensions.
This guide takes you through the process of setting up a Nextcloud portal with a LAMP stack on your Ubuntu 20.04 server.
Prerequisites
To complete this guide, ensure you have the following:
- An Ubuntu 20.04 server.
- A domain name(e.g. example.com). To test the guide, you may use your server's public IP address.
- A non-root sudo user.
- A LAMP Stack.
1. Install PHP Extensions
SSH to your server and update the package repository index.
$ sudo apt-get update
Then, run the commands below to install the necessary PHP extensions required by Nextcloud.
$ sudo apt-get install -y libapache2-mod-php
$ sudo apt-get install -y php-{cli,json,curl,imap,gd,mysql,xml,zip,intl,imagick,mbstring}
Next, enable the Apache mod_rewrite
module. This allows Nextcloud to craft human-readable URLs.
$ sudo a2enmod rewrite
Additionally, enable the following recommended modules.
$ sudo a2enmod headers
$ sudo a2enmod env
$ sudo a2enmod dir
$ sudo a2enmod mime
Restart the Apache webserver to load the new changes.
$ sudo systemctl restart apache2
Install the unzip
tool using the command below.
$ sudo apt install -y unzip
Once you've installed the required PHP extensions, Apache modules and the unzip command, create a database for Nextcloud in the next step.
2. Create a Nextcloud Database and a User
Connect to your MySQL/MariaDB server as a root user.
$ sudo mysql -u root -p
When prompted, enter your database server password and press Enter to proceed. Next, issue the commands below to create a database and a user account for the Nextcloud software. Choose the appropriate commands depending on your database server. Replace EXAMPLE_PASSWORD
with a strong value.
MySQL.
mysql> CREATE DATABASE next_cloud; CREATE USER 'next_cloud_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'EXAMPLE_PASSWORD'; GRANT ALL PRIVILEGES ON next_cloud.* TO 'next_cloud_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
MariaDB.
MariaDB> CREATE DATABASE next_cloud; GRANT ALL PRIVILEGES on next_cloud.* TO 'next_cloud_user'@'localhost' identified by 'EXAMPLE_PASSWORD'; EXIT;
After creating a database and setting up a user account, you'll download Nextcloud from its official repository.
3. Download NextCloud
Create a next_cloud
directory under the root of your web server.
$ sudo mkdir -p /var/www/next_cloud
Next, navigate to the tmp
directory.
$ cd /tmp
Then, download the latest stable version of Nextcloud.
$ wget https://download.nextcloud.com/server/releases/nextcloud-21.0.2.zip
Next, extract the zip file you've downloaded to your current directory.
$ sudo unzip -q nextcloud-21.0.2.zip
Copy the extracted files to /var/www/next_cloud
. The process takes a while to complete.
$ sudo rsync -rtv nextcloud/ /var/www/next_cloud
Change the ownership of the /var/www/nextcloud
to www-data
.
$ sudo chown -R www-data:www-data /var/www/next_cloud
Your Nextcloud files are now in place; before you complete the setup process, you'll create a virtual host file for Nextcloud in the next step.
4. Set Up a Virtual Host for Nextcloud
First, disable the default Apache virtual host configuration file using the a2dissite
command.
$ sudo a2dissite 000-default.conf
Then, open a new configuration file for your Nextcloud site under /etc/apache2/sites-available
.
$ sudo nano /etc/apache2/sites-available/next_cloud.conf
Enter the information below into the file and replace example.com
with your server's correct domain name or public IP address.
<VirtualHost *:80>
DocumentRoot /var/www/next_cloud
ServerName example.com
Alias /nextcloud "/var/www/next_cloud/"
<Directory /var/www/next_cloud>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/next_cloud/
SetEnv HTTP_HOME /var/www/next_cloud/
</Directory>
</VirtualHost>
Save the new file by pressing Ctrl + X, then Y and Enter. Then, enable the new configuration file using the a2ensite
command.
$ sudo a2ensite next_cloud.conf
Restart Apache to load the new configurations.
$ sudo systemctl restart apache2
Apache is now ready to serve your Nextcloud site. You'll finalize the installation in the next step.
5. Complete NextCloud Installation
Visit the URL below on a web browser. Remember to replace example.com
with the correct domain name or IP address of your server.
Create an admin account and configure the database and click Finish setup.
Once you've finalized the installation process, access the Nextcloud portal and enter your admin account details.
You should now see the following dashboard.
This shows that your Nextcloud installation has been completed successfully.
Conclusion
In this tutorial, you've set up a Nextcloud collaborative portal with a LAMP stack on your Ubuntu 20.04 server. Use the application to ensure: compliance, security, and flexibility of your data. Nextcloud unique communication technology suits all types of organizations, including colleges, hospitals, banks, and research institutions.