Reading Time: 14 minutes

I have slowly been extracting myself from Google services. It’s not hard to understand why. Over time, the balance between what I had to give and what I received got out of balance. The hardest ones have been their core PIM offerings: Mail, Contacts, and Calendar. I have been looking for awhile for a groupware offering that was something organizations use to replace Microsoft 365 and Google Workspace. It needed to be something I could self-host. It needed to be sufficiently easy to install and run that I could implement it in a shared hosting environment, where you lack root administrator access. I found the solution in Nextcloud.

There are times when I forget what the early relationship with Google was like. I opened my GMail account on September 20, 2002 and have slowly added (and dropped: Reader, Google+, etc.) services as the years went by.

You could search on their site without being logged in and get good results. Logging in to an account allowed you to customize your search and save your settings. Nowadays, even this is nerfed. The advanced search misses useful operators and the search settings are mostly about avoiding AI and ads. But it has become harder and harder to just get search results that are not pre-determined by my location or my previous search history.

My current custom search engine in my web browsers is this:

https://google.com/search?q=%s+-site%3Afacebook.com+-site%3Ayoutube.com+-site%3Ainstagram.com+-site%3Areddit.com+-site%3Aspotify.com&pws=0&udm=14

It really shouldn’t be that complicated. But over time, everything to do with Google has become increasingly adversarial as they dropped their “Don’t be evil” motto and began monetizing every interaction. As someone said recently on Mastodon, “the internet is a store but it used to be a library.”

A Fediverse post by user "flower bathed in light" that says "You used to be able to find information on the internet. I sound insane right now because the internet is a store but it used to be a library"

Sure, it’s free email and PIM tools but with regular bouts of “is Google indexing my email” wrapped around with “if the product is free, you’re the product” for the purposes of advertising or for AI training. For each additional application—storing my photos on Google Photo, storing my notes on Google Keep, OCR’ing documents on Google Drive that left both originals and translations—you had to go through the same calculus. At what point was what you were getting less than what you were giving?

This bargain is more fraught when you are investing in ANY email or PIM solution beyond Google or Microsoft. As someone who uses a website hosting company, I’m paying for a personal domain-based email server in my annual subscription. The issue was always friction, not availability. I could go at any time but the going required effort. In particular, it required a replacement platform for the variety of utility apps I had with Google.

I have gone through a similar transition off of Automattic and WordPress applications, for similar reasons. At some point, when you are championing the idea of owning your own stuff, you start to think about your day-to-day resources as well. Why am I using a hosted service with whom I have a questionable relationship or value exchange?

What About Microsoft 365

While I don’t think there’s any 100% replacement for Microsoft 365, there are only a couple of key pieces to their license. The most valuable are the desktop apps that come with the license; without them, it’s a weaker cloud platform offering than Google Workspace. In particular, Bing remains a very weak search engine and their integrations of their own tools, like Teams, remain janky.

As they inject more Copilot into the web apps, this platform is likely to deteriorate as well. Unless generative AI is an opt-in, so that the individual can deploy it when it actually creates efficiency, it’s a distraction. It’s also a premium cost on the 365 license.

The key element that I feel unable to replicate from the Microsoft 365 platform is SharePoint. Google Drive is nothing as good. But that assumes an ideal SharePoint implementation, where an organization has examined its processes and workflows and is properly using it as an information management and workflow platform.

Since most organizations use SharePoint as a weak replacement for a network storage environment, it’s actually quite easy to replace that functionality. Unless an organization is using SharePoint’s managed metadata and has exchanged folder views for column-based managed views, you might as well be using Box or Dropbox or whatever interchangeable bitbucket. For all that you can search for open source SharePoint alternative and end up seeing a bunch of open source content management systems, fundamentally, even if they have the same feature sets, most organizations will probably fail to do the pre-work to actually use them as anything other than glorified network folder shares.

I am mostly talking about Google products but I am also moving off of a couple of the consumer Microsoft products: Sticky Notes, Outlook email (and PIM). They represent duplicate resources, not fundamentally different functionality. Just as I got a bunch of Google products because I started with GMail, I picked up some Microsoft ones when I licensed the Office suite through Microsoft 365’s family bundle.

With that in mind, then, I was mostly looking at groupware that provided personal information management—email, calendar, contacts, file management—plus some expandability. For example, it might be nice to have a photo component. I use a lot of note-taking apps, like Google Keep and Microsoft OneNote, so a note replacement would be excellent. Those are nice-to-haves, though, and not key (although getting off Google Photos and Google Keep would really zero out my reliance on Google).

Groupware On Hosted Servers

A small business would have many options to choose from but what I found was that, unless I wanted to run my own server, the pickings were slim. This software, often referred to as a collaboration suite or groupware, tends to involve a more technical skill set and hardware to implement. I have run Zimbra’s desktop client before, for example, but was not able to run their server. Similarly, at least for the moment, I was looking for something that I could run with my very simple website stack.

The first place I turned was the Softaculous app center on my site’s CPanel. When you use a website host, many of them have this self-help backend called CPanel. It is where you can use graphical tools to reach a file manager for your site or to customize how PHP is configured to run. It often also has a software installer called Softaculous that contains installation scripts for common open-source applications. For example, even though I have a WordPress site, if I wanted to create a second one, I could use Softaculous to install it. I would not need to have file system access to the server my site is on (and which requires a higher tier website subscription) but could point-and-click a new site into existence.

There were a couple of possibilities in Softaculous but none that grabbed me. I installed one but found the interface very old-fashioned or, perhaps more fairly, highly tuned to the developers’ views of user interface. The other challenge it created was its lack of expandability. One thing I have liked about WordPress is that, if I wanted to add a feature or function, there was often a plug-in available to add it to my site. When an application, whether a content management system or a collaboration system, lacks that expandability, you may end up building out more apps.

For me, that’s a degree of compexity I was trying to avoid on my server. While I was open to the idea of leaving a Google or Microsoft app behind without an internet-facing replacement, it was my least favorite choice. I didn’t want to have to replace a single web-based app with an app installed on multiple devices to provide the same access.

I had been hearing a lot about a European-based product called Nextcloud. It sounded like it might offer some of what I wanted. However, it was not available as a Softaculous script so I was not expecting much. Without a command line, it was hard to run new applications. But, in the past, I had been able to upload core files for an app that were written in PHP and then invoke the installer page through a web browser.

It turns out this is how you can install Nextcloud. It wasn’t immediately obvious from their website—they obviously would like to get financial support so they push their professional version—but the community documentation is really well-written. In it, there is information on installing it on a shared host, without the command line, that requires uploading a single PHP page.

Almost that easy. In fact, the link in the documentation goes to an accordion navigation on the main site and you need to hunt around a bit for the page. I don’t really understand why they don’t just link to it. In any event, you can find the setup-nextcloud.php installation file under the Community projects fold. That is almost all you need to do. Download the PHP file, use FTP to upload it to the location on your server, and you can take the next steps.

If you clicked the How To button next to the download page, the instructions are very much in the style of underwear gnomes. Three easy steps, followed by “Follow the instructions and configure”. That sentence is doing a lot of work. Additionally, the link to the Admin manual takes you to the top of the manual, not to the relevant installation information.

A screenshot of a website dialog box describing steps to install Nextcloud.
A short and insufficient explanation of how to install Nextcloud

I took a stab at figuring it out on my own and, with two attempts, got it going. But there is a good instruction on what you need to do next once you can see the setup page. If you are like me, however, it doesn’t really help you know what to do in order to complete the form. The short answer: you’re going to need a database.

Website hosts usually provide the whole LAMP stack: linux, apache (or nginx), an M database (MySQL, MariaDB), and PHP (yes, it is WAMP if you use Windows). In my case, I needed to log into the website hosting service’s self-service site, known as CPanel. On CPanel, I could create a new database for Nextcloud and give it an admin user (with a password). Once I had completed that step, I was ready to install Nextcloud.

The installation was quick and smooth. Once it knew where the database was, it installed the rest of the files by downloading what it needed from Nextcloud. It really could not be any easier. Once you have installed it, you can start to create user accounts and, on the administrative settings page, you can see a checklist of recommended steps to take. These are not always tailored to your specific platform or installation. I have started to understand them mostly as best practices but my implementation runs fine even though I have not cleared the list.

The Apps Themselves

Now began the real work. I’ll talk about each individual Google (or Microsoft) app as I transferred their contents over to the Nextcloud environment. Some of these are very simple on the web but, if you use a mobile app, you may need to do a bit of extra work.

Email

This was incredibly easy. The first thing I did was to configure the mail app in Nextcloud to retrieve my email for this domain. My website host provides an IMAP server so I can set up Nextcloud the same way I would set up Microsoft Outlook or Mozilla Thunderbird or your email on your phone. Once I had email working, I could turn to Google Mail and Microsoft Outlook.

For a number of reasons, I need to keep those email addresses available. I am slowly unwinding any references to them for things like multi-factor authentication codes. But I also want junk or disposable email addresses and both a gmail.com and live.com address serve that purpose.

I set a forwarding rule on each of the two accounts. For any incoming email that is not automatically marked as spam, (1) mark it as read, (2) forward it to my main account, and (3) delete it. This helps me to centralize all of my email. If it’s an email I want to respond to, it now comes from my main personal email account. If it’s not, the sender can continue to assume that whatever address they have works, leaving me with the choice of whether to let them know or not.

A screenshot of a Google Mail filter screen. It has the boxes checked next to "mark as read", forward, and delete.
A screenshot of a Google Mail filter screen

So far, my experience with the Nextcloud email app is comparable to any other web-based IMAP client, including Microsoft Outlook for Web and Google Mail. In particular, people who have already shifted to something like Rainloop will find a similar experience, but with access to other PIM tools.

It is worth mentioning before I go any further that Nextcloud is modular. Mail is a module and, from what I can tell, all of the modules are hosted on Github. Here’s the one for Mail. It means you can dig into the documentation for an app before you activate it on Nextcloud. In my case, there are apps I really don’t want (like Talk, their Slack or Teams chat equivalent) in my implementation. You don’t have to use any specific set of apps.

Calendar and Contacts

The Calendar app is pretty straightforward. It supports a personal calendar, custom calendars like birthdays or holidays, and can present internet calendars you subscribe to. In my case, I publish my work calendar on Microsoft 365 as a link, and can see it as a second calendar on Nextcloud. Just like in Outlook, you can toggle extra calendar visibility on and off. To move over my Google Calendar, I exported the entire calendar and used the Nextcloud import to populate my personal calendar.

The Contact app is, similarly, a common place organizer. The biggest difference from the Calendar was importing my Google Contacts records and my Microsoft contacts. It is no surprise to anyone that, despite years and years of importing and exporting contacts between managers, this remains a bit of a dark art. Initially, I attempted to go through the mapping process—there is a bit of a wizard on Nextcloud to take you through matching fields from your import file to the Nextcloud contact form template—but I found it unwieldy. Additionally, I had saved multiple addresses on Google but Nextcloud could not import all of them cleanly.

I expect this may be a bit of an outlier. I don’t really know how many people would have more than 3 addresses for any contact (home, work, business). In any event, it was easy enough to add them back in after the primary import was completed. Nextcloud’s Contacts app supports multiple addresses.

The thing that I hadn’t really considered was how much I use my calendar and contacts only on my phone. In the past, I would have a Microsoft app (like Outlook) or Google apps (Calendar, Contacts, and Mail) that are often forcibly installed on your phone. Now I wasn’t bound to those particular apps and so I decided to fall back on the standard manufacturer apps, in my case Samsung. From what I can tell, though, you could use any calendar or contact app you wanted.

The trick is to get them to synchronize from Nextcloud to your phone or tablet. This wasn’t an obvious solution for me but I eventually found someone who had solved it and their solution worked for me. The short answer is that you add an app to your device that handle the synchronizing of DAV-enabled resources. In the case of a calendar, it’s CalDav, for contacts it’s CardDAV.

I am using the free DAVx5. This was the solution the other person had found and it specifically knows how to look for a Nextcloud site. Once you have provided it access (it displays a login screen from your Nextcloud site, you log in or use an app password (your choice), and it stores the access approval), your calendar and contacts apps should populate with your information. Changes made on the phone can be synchronized to the Nextcloud apps.

It supports synchronization of files too but I have not yet decided to make the file access (WebDAV) available. I tend to use file managers on the cloud—like Google Drive or Microsoft OneDrive—through the web interface. Nextcloud has a Files app that works like OneDrive and I am fine using it through the web.

Note-Taking

I have been using Google Keep for small notes. I have in the past also used Microsoft Sticky Notes. Sticky Notes has the benefit of allowing you to place small virtual notes on your Windows desktop screen, and can synchronize to devices using the Microsoft Launcher. However, both Keep and Sticky Notes require a third-party account (Google or Microsoft) so I would just as soon remove my notes from their platforms too.

The Nextcloud Notes app covers this base. It replicates all of the functionality I needed in Google Keep and is more powerful than Sticky Notes. It also has an Android app so I can take notes on my devices and they are stored in my Nextcloud account. Unlike the DAV connected information, apps like Notes seem to just be web apps, providing a bit of chrome and functionality on what is really just the online Nextcloud app.

It also uses Markdown and I’m not sure whether that’s better or worse. My notes are not that complicated so I like the ability to make a checklist on the spot by just typing in “[ ]” which converts to a clickable box. But I find that the saved state is not always stable and sometimes what I think is the “title” of the note is not reflected in the app (which just refers to it as “new note”). So I am still working this out.

Unfortunately, Google Keep does not have an export function of its own. The only way to get the content out of Google is to use Google Takeout. This may not be a big deal since you will probably want to use Takeout to back up any of the Google apps you are leaving behind. But I found it clunky. In my case, I just scrolled back through the notes I had on Keep, cut and pasted them over to Nextcloud if I was going to keep them, and otherwise deleted my old notes. I found that a lot of my notes were no longer relevant: they applied to prior jobs or prior addresses or, for whatever reason, their purpose had timed out. They were more cruft than knowledge.

Google Photos

I have a public photo site but I have been using Google Photos to share both public and private photos. For example, a photo of our kids or even me and my wife is not going to be on the public site but I might share it with family on Google Photos. That works fine but to get the full benefit of the platform, it requires people to have Google accounts, which has never sat right with me. People with accounts can get notifications of new photos. People without accounts will have to periodically check a static URL.

No surprise that Nextcloud has a Photos app. It is, for my purposes, more than enough. Unfortunately, unless I add my family to the Nextcloud site as users, I don’t believe there’s a good way to get them notifications of new photos. However, I can set up an album and send them a link when I update. It’s not really much of an added burden (and I don’t know how much the notifications ever led to people looking at the photos on Google).

I have thought about hacking this a bit by creating an album on Nextcloud Photos with a public link. I could then put that link into a web page change detection watcher like ChangeDetection.io. The emails it generates on a changed page could be forwarded to a group based on an inbound email rule. By now, if you’re like me, you’re thinking just sending a static link manually is a lot simpler. No need to overengineer.

I am playing around with the Memories app because it has an Android app as well as the one on Nextcloud. It is an overlay for the Photos you upload to your Nextcloud Files and I’m not sure that it adds much to my experience. As with so many mobile apps, I’m not sure when a dedicated app is better than just creating a “web app” that gives you a mobile page from Nextcloud. I’m still on the fence on this one.

Tapping Into the Expandability

One of my goals was not just to trade A for B. I wanted to also see if I could add in C. The baseline was to get my content and reliance off Google and Microsoft platforms. Nextcloud absolutely has allowed me to do that. I’ve deleted most of my content off their platforms and am primarily just checking the email accounts periodically to make sure that my filter is running as intended.

A screenshot of an empty Google account storage monitor
The storage gauge on my Google account

Project Management

I was not looking for this app but its availability in Nextcloud has me curious. I have been using Microsoft Planner for task management—like Trello or other kanban board apps—as part of my corporate Microsoft 365 account. I like it but, again, it feels poorly integrated. I feel like the name has even changed in the last few years, URLs don’t always work, and the boards seem tied to other parts of 365. Occasionally, I get warnings that all of my boards on a given topic will be deleted.

Nextcloud has Decks (there’s also a mobile app). I have literally spent a dozen or so minutes on it so I don’t have enough experience to judge its utility. But it seems to be a good competitor for the kanban needs I have. One thing I really liked about Planner is the ability to save a completed project and re-use it: a board meeting to do list that repeats every month, or any other mini project that you know you will be repeating.

Nextcloud Appointments

I use the Microsoft Bookings option in my corporate account. It is a terrible scheduling implementation but it has, so far, been better than nothing. I can configure my personal booking page and including a link to it in my email signature. When I email people about meeting, I can direct them to the Booking link. They can see my availability and choose a time that works for them.

Originally, I set up my Booking page based on topic: meet me for coffee or a career chat or whatever. Eventually I realized the topic was less useful a way to distinguish meetings and changed it to just two: do you want to meet in person (and where) or do you want to meet virtually.

I highly recommend using something like Booking or Appointments. Not only does it allow people to make appointments without as much friction, it forces you to stay on top of your availability. I am much more diligent about keeping my calendar up to date—and blocking off time when I do not want to be available, internally or externally—since knowing that people could see when I have space in my calendar.

From what I can tell, again with just cursory review, it has all the same functionality of Microsoft Bookings. In addition, though, it has access to custom cascading styles, so I should be able to customize the booking page more easily. On the Microsoft app, you just have a bit of color and logo control; it’s very weak considering it’s on a corporate collaboration platform.

The challenge at this point is how much to run through Nextcloud, which is a benefit to me, and how much still needs to live on my corporate accounts. There is the argument that I should be using Microsoft apps on my phone and tablet for work-related information: contacts, calendar, email, and so on. The reality is, though, that I only work 40 hours a week and I carry my phone and use my tablet for many hours outside that time. There is zero chance that I put Microsoft apps on my personal devices if it means that I get notifications or updates that extend beyond work hours. I don’t mind having the ability to see what my calendar says, or even get notifications if I opt in for them, but I don’t need to use a Microsoft or Google app for that.

Nextcloud Office

I mentioned that there is a Microsoft OneDrive or Google Drive equivalent in Nextcloud Files. What if you want to create new files? There appear to be a number of alternatives that allow you to create new spreadsheets, documents, and presentations. However, most of them seem to require a collaboration server back end. For example, you could connect to a Microsoft 365 server or a Collabora server but there isn’t an entirely Nextcloud self-hosted option.

There is an Office app. I installed it and it looks and feels like a word processor but it does not support the other file formats (presentations, spreadsheets). But the Nextcloud store page has disappeared so I’m not sure if that’s undergoing development or not (there is currently a Nextcloud conference and perhaps there is some work being done).

I’m curious about this but its at the very edge of my interests. I typically download a document and open it in the desktop app (currently Microsoft but I could easily switch to Libreoffice). A web-enabled app is usually so weak in comparison to the desktop tool that I eventually need to open it offline to be able to do the things I want to do.

Moving On

I am still kicking the tires but with the sense of ownership that one has when one knows they’re keeping the car. I have been very impressed at how lightweight the technology is required to run Nextcloud. So far, most things I have attempted to do have worked the way that I wanted.

The best part is the ability to finally detach myself from so many Google and Microsoft resources. My corporate environment will always keep me connected to Microsoft, for better or worse. That’s probably a good thing considering how central Microsoft products are to the legal profession and my awareness of what’s going on. It is nice to know that I can withdraw my personal information from the two primary office productivity suites, though, and still have the same functionality.