Nextcloud is a self-hosted solution for storage, communications, editing, calendar, contacts, and more.
This tutorial assumes that you have an Ubuntu server and a domain name configured to point toward the server.
To start, you will need to install the packages that Nextcloud requires:
Next, you will need to log-in to MySQL as the root
user of the machine.
Once you've logged in, you must create a new user so that Nextcloud can manage
the database. You will also create a nextcloud
database and assign privileges:
'localhost' IDENTIFIED BY 'password';
;
ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
quit;
@
To download Nextcloud, go the the
Nextcloud downloads page,
click on Archive File
and right-click the big blue button to copy the link.
Then, go to your server and enter the following commands to download, unzip, and
move the files to your destination directory. This example uses example.com
as
the destination, but you can put it wherever you want to server your files from.
Now that the database is set up and Nextcloud is installed, you need to set up
the Apache configuration files to tell the server how to handle requests for
example.com/nextcloud
. First, open the following file in an editor:
Once the editor is open, paste the following information in. Then, save and close the file.
<VirtualHost *:80>
/var/www/example.com
example.com
www.example.com
${APACHE_LOG_DIR}/error.log
${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/example.com/nextcloud/>
all granted
All
FollowSymLinks MultiViews
Any
<IfModule mod_dav.c>
off
</IfModule>
</Directory>
</VirtualHost>
Once the file is saved, enable it with Apache:
Next, enable the Apache mods required by Nextcloud:
Finally, restart Apache. If any errors arise, you must solve those before continuing.
In order for the app to work, you must have the correct file permissions on your
nextcloud
directory. Set the owner to be www-data
:
If you do not have a static IP address, you will need to update your DNS settings (at your DNS provider) whenever your dynamic IP address changes.
For an example on how I do that with Cloudflare, see my other post: Updating Dynamic DNS with Cloudflare API
If you want to serve Nextcloud from HTTPS rather than plain HTTP, use the following commands to issue Let's Encrypt SSL certificates:
Voila! You're all done and should be able to access Nextcloud from your domain or IP address.
See the screenshots below for the dashboard and a settings page on my instance
of Nextcloud, using the Breeze Dark
theme I installed from the Apps page.
Figure 01: Nextcloud Dashboard
Figure 02: Nextcloud Security Settings