This is an old revision of the document!
Download and Extract the Latest Version of NextCloud onto Ubuntu Server 22.04 having Apache2 Webserver
As of the time this article was posted (06-21-2023), the latest NextCloud version was 27.0.0.
Let's first plan and provision the NextCloud web space structure on the Ubuntu / Apache2 server.
Notice that the default website path for Apache2 is /var/www/html/
index.html is the default html test page that is contained in that directory in order to show whether the Apache2 webserver was correctly installed.
Suggestions as follow - Replacing 'dbusername' and 'yourdomain_com' etc., with your own choice of directory names
- Make and put the “/NextCloud/” website directory into a new path adjacent to the above default website path
- Example: /var/www/dbusername/public_html/yourdomain_com/nextcloud/
- Make and move the NextCloud “/data/” directory path outside but adjacent to the new website path
- Example: /var/www/dbusername/storage/yourdomain_com/data/
Use the Make Directory command 'mkdir' to create each of the subdirectories in those two paths shown in the list above. (Google 'examples of linux mkdir command' and learn how to do this). You can create whatever directory naming structure that you want for your NextCloud website path and your NextCloud data path, each starting below the /var/www/ level of the path. Recommend avoiding the default website path /var/www/html/ for each virtual host domain that you configure.
You might want to use mkdir command with the -p option (path create) and/or the -v option (verbose to have linux tell you each directory that was created). You should change the directory names appearing after “var/www/” in the path, to your choices of directory names, in the following Examples:
Assume we want these two directory paths:
/var/www/dbusername/public_html/yourdomain_com/nextcloud
and
/var/www/dbusername/storage/yourdomain_com/data
So, first switch to the /var/www/ directory as the current working directory. Then, make the directory path below the /var/www/ level.
cd /var/www/ sudo mkdir -p -v dbusername/public_html/yourdomain_com/nextcloud sudo mkdir -p -v dbusername/storage/yourdomain_com/data
Next, download the latest version of NextCloud zip file into the subdirectory that is located one level above the /nextcloud/ subdirectory in the website path, i.e. the /yourdomain_com/ subdirectory.
First, switch to the /yourdomain_com/ subdirectory as the current working directory.
sudo cd /var/www/dbusername/public_html/yourdomain_com/
Then, use the wget / curl command to download the latest NextCloud Release as a zip file to the current working directory. Change the release version number to the latest version number in the command below (or change it to the particular archived version number that you want to install).
sudo curl -o nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-27.0.0.zip
This command, as scripted above, should change the name of the download file on your server from the file name 'nextcloud-27.0.0.zip' to the file name 'nextcloud.zip' and place that zip file into the current working directory /yourdomain_com/.
After downloading, check the name of the downloaded Zip file in current working directory using the 'ls' command to list files. That is, check to see if the filename is 'nextcloud.zip' or “nextcloud-27.0.0.zip' and that it resides in the current working directory.
At this point, make sure that the 'UnZip' package is installed to your linux distro. If not, then install it as follows:
sudo apt install unzip
Resulting Installation should appear like this:
Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: zip The following NEW packages will be installed: unzip 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 174 kB of archives. After this operation, 385 kB of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 unzip amd64 6.0-26ubuntu3.1 [174 kB] Fetched 174 kB in 0s (484 kB/s) Selecting previously unselected package unzip. (Reading database ... 82975 files and directories currently installed.) Preparing to unpack .../unzip_6.0-26ubuntu3.1_amd64.deb ... Unpacking unzip (6.0-26ubuntu3.1) ... Setting up unzip (6.0-26ubuntu3.1) ... Processing triggers for mailcap (3.70+nmu1ubuntu1) ... Processing triggers for man-db (2.10.2-1) ... Scanning processes... Scanning candidates... Scanning processor microcode... Scanning linux images... Running kernel seems to be up-to-date. The processor microcode seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
Next, extract the Nextcloud source code from “nextcloud.zip” or from “nextcloud-27.0.0.zip” (whichever is the case) and you will get a new directory “nextcloud” (unless this “nextcloud” directory was already created as suggested above).
unzip nextcloud.zip
or
unzip nextcloud-27.0.0.zip
From the current domain_com directory (one directory level above the nextcloud directory), use the list command with -l option to check the ownership privileges and permissions of the “nextcloud” directory, and it should show ownership by root:root (user:group).
(code) cd /var/www/dbusername/public_html/yourdomain_com/
ls -l (/code)
Then, change the ownership privileges and permissions of the “nextcloud” directory to the “www-data” user and the “www-data” group (recursively '-R' to all files and subdirectories within and below the nextcloud directory), as follows.
chown -R www-data:www-data nextcloud
Switch to the storage '/yourdomain_com/' directory (one level above the /data/ directory) in order to check and change the permissions of the /data/ directory, as follows (adjust your directory names as necessary):
cd /var/www/dbusername/storage/yourdomain_com/ ls -l chown -R www-data:www-data data