My motivation for using fewer Google services was mostly motivated by the idea that they could without warning remove my ability to access my account. I don't think this is common and I don't think it was likely to happen to me but it was enough of a reason to try.
I also enjoy learning how different tools work and the process of setting up useful systems so in some way it was also just a hobby. A strange hobby to explain maybe "so I avoid using Google apps for fun".
I have no gripe specifically against Google, any other service with centralized data would suffer the same problem.
I'll go through the services one by one with what I have replaced them with, what I tried, and whether I think it's better or worse.
- 🌐 Overview
- 💻 Applications
- 🤔 Final Thoughts
My self hosted applications are all hosted on a Hetzner 2vCPU 8GB VPS. On top of that I have a 1TB Hetzner storage box (more details later). And I own a number of domains that I configure using Porkbun or OVH.
The applications are almost all run as docker containers deployed via an ansible project. In front of all the containers I use Caddy as a reverse proxy to manage SSL and path resolution. The "main" application that runs is Nextcloud as this provides a file manager and several other services out of the box, but in total there are ~20 different containers running.
I use BorgBackup to backup the data into Borg archives on the Hetzner Storage Box and cron jobs on a home server that downloads the backups to a local drive.
Google Service: GMail
Email is an important one to get right, quite a lot of our digital lives are entirely dependent on being able to send and receive mail reliably. Despite that I decided I wanted to try and self host it completely, running my own mail server as well as mail clients. I was keen to use my own domains and I decided it was not to risky as if I failed in my quest to completely self host I could always point my domains at a provider like fastmail and not worry about it.
The Mail Server
This is actually surprisingly easy despite mail servers being a collection of frankly quite arcane and old fashioned Linux tools. There are several projects out there that given you all-in-one fully configured mail servers, and the one I chose was Docker Mailserver which includes everything in one docker image. I did not try any others as this just worked.
It is very simple to get something that receives mail reliably. Simply point your DNS records at your server, make the couple of tweaks to Docker Mailserver's config so it knows your domain and it just works. I also did some slightly more advanced configuration to make it so that I could receive mail sent to any email address of any of my domains, even that was approximately 10 lines of Postfix config.
The slightly trickier aspect is ensuring you can send mail reliably. It is easy to send mail, less easy to ensure the receiving server does not mark you as spam. This is a topic for a whole blog post but there are a number of ways to help by setting up various extra DNS records (SPF, DKIM, DMARC) as well as getting lucky with a server IP that isn't blacklisted. This was the trickiest part but also the most interesting, as I got to learn about how the very simple email protocols have evolved over time.
There's all sorts of other config you can do for spam filtering, automatic labeling, antivirus etc. which all has sensible defaults out of the box.
The Mail Client
The mail client was surprisingly hard to replace mostly because I had become so used to the GMail interface. I initially wanted to use a webmail client, to closely emulate the GMail experience. I tried Rainloop which was fine. It's advantageous are mainly how lightweight and easy to set up it is. It's pretty close to being useable for me but I wanted something a bit slicker and so settled on Roundcube. Roundcube does everything you would expect from a webmail client and looks pretty nice too.
I also decided to try some desktop clients as well. I tried EMClient as well as the classic Thunderbird. These are both great tools and I'm actually glad that this quest got me using a desktop email client again. I settled on Thunderbird in the end as EMClient is a subscription service and I did not think it added any useful features over Thunderbird.
On Android there's a clear favorite in K9 Mail on Android and again this just works perfectly and looks good too.
I really enjoyed setting this up and am very happy with the results. I think this is a completely viable Google Mail replacement. The clients are great and using my own domains is super nice for many reasons. I think this is probably one of the harder things to set up if you do not actively enjoy this sort of tinkering though.
📦 Cloud Storage
Google Service: Google Drive
There are again two aspects to this replacement: the filesystem that you store things on, and the client for managing files.
For the client I use Nextcloud. This is actually a pretty nice hub for all sorts of self hosted things, not just a file manager UI, so it will come up again. For this section the relevant information is that it has a file manager that allows you to roughly anything you can do with Google Drive (store files, make folders, share files and folders with specific people, share files and folders as a link etc.). It also comes with a full Android app that allows you to manage your files, and a desktop sync client that lets you access your remote folders as if they were on your local machine (this is nice on Windows as you don't need to mess around with win-sshfs or anything).
This works acceptably. My main gripe is mostly UI/UX polish in the web app. I think it looks a little dated, it can be a bit slow to generate thumbnails, and a bit slow to register file changes that are made by other applications.
I also tried using Filerun which is a Nextcloud compatible replacement for the file manager UI. It is much nicer UI and fixed my small gripes with Nextcloud. It also handles all the required stuff (file sharing etc.). It uses the same Android and desktop apps as Nextcloud as well. At the moment the fact that Nextcloud handles a couple of my other use cases nicely means I have not switched to Filerun but I could see it happening in the future.
For the filesystem I found Hetzner Storage Box. For 1TB it costs ~£3 a month which is very cheap. They offer a number of ways to access the filesystem including ssh, sftp, samba, and webdav. For some services I connect directly to the storage box using one of these. For others, like Nextcloud, I mount it as a folder using SSHFS so its transparent to the application that its actually a remote filesytem.
I much prefer having a proper filesystem for cloud storage. It is so nice being able to mount it as a normal folder or ssh into it when necessary. I was also pleasantly surprised by how fully featured Nextcloud (and Filerun) is when it comes to things like sharing folders so they it meets my needs perfectly. If not for my UX gripes this would be a 5⭐ replacement too.
📅 Contacts and Calendar
Google Service: Google Calendar and Google Contacts
I grouped Calendar and Contacts together since their replacements are so similair. The Google Calendar and Contacts "backend" is actually relatively easy to replace as most applications can use the standardised CalDav and CardDav formats. I am just using Nextcloud to provide that and it required almost no set up beyond importing my existing calendars and contacts.
On the web I am using Nextcloud Calendar and the Nextcloud Contacts apps. I think this is a common theme with Nextcloud but the web apps are functional but not the most beautiful or polished. I struggled to find any alternative. For a while I used Bloben for a web calendar but it was no more usable or friendly than Nextcloud so dropped it. I mostly now access my calendar on desktop using Thunderbird which I am also very happy with.
On Android things are a little weird because you have to install an app that syncs your CalDav calendars and CardDav contacts into Android before other applications can actually interact with them. Apart from that weirdness it works well. I use DavX5 for the syncing. I use Simple Calendar for the calendar application which is perfectly functional, and I use the default Android contacts app for contact management.
Perfectly functional replacements, just lacking a small amount of UX polish on the web app side and maybe slightly weird Android set up.
Google Service: Google Docs, Google Sheets etc.
This was another one that despite an initial set back was surprisingly easy to get working. I initially tried using Nextcloud Collabora which is as the name suggests the one bundled with Nextcloud but I could not get it configured correctly. It did not seem to like being being a reverse proxy.
I switched instead to Onlyoffice and this worked immediately. It runs as a docker container and there is a Nextcloud app to enable opening files from the Nextcloud file manager. It works completely seamlessly just like the Google Office suite. I don't really do much "office document" editing so I haven't put it through its paces but it handles the documents and spreadsheets I do have perfectly.
Onlyoffice also has an Android app which also works as expected.
Perfectly functional replacements, strange that the Nextcloud official app did not work.
Google Service: Google Keep, Google Docs, Google Tasks
This is a weird one because I think the Google offering and the alternatives don't actually have a major functionality overlap.
Google Keep I think is a really nice balance between a note taking app and a task listing app. I think the killer features are: super easy list making, instant synchronisation, and shared lists. I can't find any good clones. Those that do exist are eithe janky abandonware or missing one of the key features. However I think if you seperate the role Keep plays into two then it is possible to replace.
For super simple checklists (shopping lists etc.) then using Nextcloud Tasks on web and the Tasks.org android app works great. The tasks are synced like the calendars and contacts via CalDav, and Tasks.org has native support for CalDav so you don't even need to fiddle with Dav5x. You can create lists with subtasks, share them by creating "shared task calendars" in Nextcloud, and they sync almost immediately.
For more heavy note taking I am using Joplin and I don't think Google has an answer to it. For collections of varied text/multimedia notes with easy editing and access Joplin for me is perfect and has great desktop and android apps. Downsides are that it has no official web app and neither the desktop nor android app can do automatic background syncing.
I gave this a 3⭐ because the simple checklist experience with Nextcloud Tasks and Tasks.org is not really as simple or smooth as Google Keep and Joplin works very well but for a slightly different but related use case.
Google Service: Google Photos
Google Photos is a very difficult to replace application. The key features for me are: automatic sync from phones and easy access/search in photos.
My current workflow is that I have FolderSync upload photos from my phone to Nextcloud. The Nextcloud android app can actually do this itself but I found FolderSync slightly more polished than the Nextcloud android app for this. (The Nextcloud app would tell me it had failed to upload photos when really it was just configured to only upload on WiFi, and it would then successfully upload as soon as I was on WiFi.)
On my desktop I have Nextcloud syncing a subset of files (i.e. it is syncing the android uploaded photos folder and the 2022 photos folder) to my local drive. I also would just copy files from an SD from my actual camera. I then use Digikam and Darktable to manage tagging, organising and editing the photos. And then the Nextcloud desktop app sorts out re-uploading any changed files and deleting any deleted files.
What I ideally want then is a web front end that easily allows me to browse the photos I have already organised and tagged.
There are many, many, many apps for this for some reason. This page has a good summary: https://github.com/meichthys/fossphotolibraries
I have tried the following:
✔ Simple. ✔ Preserves folders structure in UI. ✔ Good face recognition. ✔ Good map display
❌ No tag support
✔ Good face recognition. ✔ Good map display.
🤷 Object recognition
❌ No tag support. ❌ No folder structure
✔ Good face recognition. ✔ Good map support. ✔ Preserves folders structure in UI.
🤷 Object recognition
❌ No tag support.
✔ Preserves folders structure in UI. ✔ Presents all tags and preserves hierarchies
🤷 No face recognition (mitigated by importing face tags from Digikam)
❌ No map ❌ Strange UI ❌ Not free
I like my workflow but none of these apps quite meet all my requirements. But to be fair Google Photos would not have done either and I think they all could work as replacements for somebody.
Out of these I like Photostructure because it properly displays hierarchical tags which is a pretty killer feature if you are using Digikam to organise your photos. It's downside are a UI that I find cumbersome to navigate and a $5 a month subscription for many of the features which is not a lot but for a single purpose app that I will not look at very often it feels a little bit like death by subscription.
I also like Photoview. If I have to give up hierarchical tag display then Photoview for me has the main features and the cleanest UI of any of these.
🤔 Final Thoughts
Overall this project is a success for me, I do not see myself going back to Google any time soon. I think in particular Nextcloud is a great start for self hosting a bunch applications. Cheap services like Hetzner storage box also make this possible.
On the other hand I don't think this is something the average person could do, not in the way I have done it anyway. There are sites that offer a Nextcloud instance or account as a service you pay for so perhaps that would work, though you might have a harder time using anything non-Nextcloud.