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.
Navbar links to my files, calendar, tasks, contacts, reminders!
Widgets for upcoming calendar events and GitHub notifications.
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's One Click Application Marketplace
Then fill in the wizard, saving the content (I prefer the Bitwarden Open Source Password Manager)
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 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 $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.
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
nextcloudis the name of my site, so the folder between
configmight be different if you setup nextcloud differently.
With some content redacted, here is a screenshot of the additional trusted_domains entry
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, 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"
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
Contacts URL Address
CalDAV URL Address
(Optional) Microsoft Outlook and CalDAV Synchronizer
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.