Self Hosted Nextcloud on Linode

Self hosting Nextcloud on Linode is a great way to take back privacy for your files, pictures, contacts, calendar, tasks, and more! For me, it's nice to have complete ownership and control over some of the most private things in my life. This article walks you through setting the same up for yourself!

Ian Cleary

Posted: Friday, January 22, 2021

5 min read

Table of Contents

Article Content

Privacy and data ownership have become mainstream topics over the last several years.

My personal files, photos, calendar, contacts, and reminders/tasks are content that I wanted to have better control and ownership of. They are some of my most private personal data.

Being a listener of the Self Hosted Show podcast, I used a $100, 60-day free trial for Linode to create a Nextcloud instance on a $5/month virtual machine.

Note: "Linodes" are also what the hosting provider calls their virtual machine offering.

Nextcloud Dashboard showing several integrations

Navbar links to my files, calendar, tasks, contacts, reminders!

Widgets for upcoming calendar events and GitHub notifications.

Process

This was my first virtual machine in the cloud, and the setup was breeze. Their Marketplace offers a Nextcloud app setup wizard, which I followed.

Linode Application Marketplace

Linode's One Click Application Marketplace

Then fill in the wizard, saving the content (I prefer the Bitwarden Open Source Password Manager)

Nextcloud Linode Wizard Options

Some of the Nextcloud Options in Linode's wizard

Virtual Machine Size and Resources

Next up, you can choose your virtual machine's resources. I've been fine on a Nanode 1GB, which is their cheapest option. For a single user system, this has been fine. If you are handling more users or using Nextcloud for storage, I'd recommend you consider using Object Storage and/or a more powerful option.

Linode Shared CPU Pricing Table with Nanode 1GB selected

Linode resource and pricing options for their cheapest 4 options

For my use case of a personal calendar, contacts, and task server, the Nanode is sufficient.

Enable Backups for $2/mo

Lastly, you can add optional backups. I recommend that as it allows you to snapshot your machine daily, weekly, and before/after upgrades.

Linode Backup Pricing screen showing an extra $2 per month

Linode backup $2 pricing and total monthly price

I used snapshots before upgrade Nextcloud versions and it provides a backup of my information stored within Nextcloud. The piece of mind is worth the $2/month.

DNS and Certbot

The last step is use HTTPS.

In my case, I use Hover to avoid Google Domains. My setup is a little more complicated as I also use Vercel to manage the domain I use to sub-domain my nextcloud instance to.

So my setup is:

  • Domain: Hover (with names servers loaded into vercel)
  • DNS records: Vercel (with A record for my Linode Public IP Address)

Lets setup your DNS

Update the A record with your DNS provider.

For me, I updated the record in Vercel, but navigate to your provider.

DNS Record Table within vercel.com showing a nextcloud name with a redacted A record

Add an A record for your domain (or subdomain)

LetsEncrypt with certbot.

The EFF's material for debian buster with Apache is fantastic, so please just follow it.

Update your Nextcloud instance for your domain

Lastly, we will need to update the Nextcloud configuration to make Nextcloud aware of the domains you plan to access the application from.

For me, the config.php file is within Nextcloud in the /var/www/nextcloud/config folder.

Note: nextcloud is the name of my site, so the folder between www and config might be different if you setup nextcloud differently.

With some content redacted, here is a screenshot of the additional trusted_domains entry

Nextcloud Config.php file with certain content redacted

My redacted Nextcloud config.php file.

Login and enjoy!

Use your user (not root) credentials and begin using your application. In my case the initial login was for the admin user I set up.

I set up the Contacts, Calendar, and Tasks applications and they now show up in the Navigation bar.

Contacts Calender, and Tasks in Nextcloud Header Navigation Bar

Contacts, Calendar, and Tasks applications in the Header Navigation Bar

You can add apps with your admin user by hovering over the profile picture, and then clicking on "Apps"

Nextcloud Application Link in Dropdown

Apps link in User dropdown widget

(Optional) Integration with iOS using CalDAV/CardDAV

Use your user credentials (probably want to create a non-admin user).

Even better is an application password!

Calendar and Reminders sync with CalDAV

Contacts sync with CardDAV

Go to Settings > Mail > Accounts and create CalDAV and CardDav accounts with your URL.

You can get the URLs from within the Nextcloud application

Nextcloud Contacts URL Address

Contacts URL Address

Square enclosing the buttons that show the CalDav addresses for the general case and iOS/MacOS

CalDAV URL Address

(Optional) Microsoft Outlook and CalDAV Synchronizer

Nextcoud offers CalDAV Synchronizer for Outlook Users - Nextcloud Blog

CalDAV Synchronizor for Outlook

Other Applications

Any office/productivy application that support CalDAV and CardDAV standards should work. Please follow your applications instructions and enjoy your new found privacy and ownership of some of your most personal information.