• 1 Post
  • 4 Comments
Joined 1Y ago
cake
Cake day: Jun 30, 2023

help-circle
rss

Just a follow-up with what I use now.

As a replacement, I ended up setting up Nextcloud AIO container set and so far the experience has been pretty good. I do occasionally have to go and do the update manually but the AIO interface makes it pretty straightforward.

The limitation is that I don’t have a very strong machine to host it. I have cheap VPS with only few gigs of RAM so I could give 2G to the nextcloud machine, which prevents me from enabling the more resource-hungry features, on the other hand the base NextCloud with caldav/carddav (which really is all I need) works fine.


Unfortunately later I learned that for some reason, somehow (surely my mistake), the only full copy of my dad’s contacts was at the nextcloud instance, so that collection was the “hostage”. Far more sadly, my dad deceased earlier this year, so in a weird irony when I received bill this time, the sad fact enabled me to put this all behind myself, so today I just canceled the service and goodbye.


cautionary tale with OwnCube (nextcloud hosting)
This is not strictly self-hosted but another approach I which is similar in philosophy, and which I actually prefer in many cases: hosted services. -- So about 5 years ago I got fed up with having to update nextcould (or was it owncloud? I don't recall) so I was looking for a hosting service. Initially I expected this to be a bit of a burden on my budget (especially if one scales with users), but to my surprise, I found OwnCube (owncube.de), where the price was about EUR 18 per year. Great deal. So I went ahead, set it up, tested for a while and eventually ended up configuring my parents' phones to use it for storing contacts & photos instead of Google. To be clear, I did not use nextcloud myself directly. I had been already paying for fastmail, and it's perfect, except it's single-user, so for myself I kept using fastmail, just synchronizing fastmail (using vdirsyncer) and owncube nextcloud just to have a backup and also alternate interface. This was working perfectly, until one day, it broke. It just stopped working (throwing some errors on sync). When I opened my web interface there was just this message, saying the nextcloud intrerface is not compatible with PHP 8.0+. Seemed understandable: they updated the underlying server to PHP 8.0 but not the Nextcloud instance. Not superb, but fine, I'll just open a support ticket. However, the ticket went nowhere. The support engineer kept repeating something that amounted to, * they needed to update PHP for security reasons, * the plan I subscribed to does not "come with auto-updates", * so --- I am responsible for updating the Nextclould instance, not them. That does not make sense. I don't have access neither to the instance nor to the updater. All I can do now is stare at the message. Their admin UI did not provide anything, either (some "magic" button, URL or SSH access). I pointed it out but they kept repeating themselves and eventually explained that I can either cancel the service and start it again (pay again!) -- which will give me updated NC but my data will be erased, or I can "book auto-updater" which meant I should pay one time fee about 70 EUR (more than double my yearly plan). That does not make sense. I understand that I chose the basic mini plan, I can't expect anyone to jump over hoops. I also perfectly understand that any software can break because of version mismatch (after all, I'm a software engineer myself). But nobody knows how many times per year that can happen, so if I have to pay extra every time then my plan is unpredictable. Sadly the ticket went nowhere, the support sounded like a broken record, with "pay X amount of EUR here" link. Seems like a definition of holding my data hostage. Eventually I decided to cancel the service. -- So the morale, I guess..? * Be careful to whom you entrust your data * Don't get too tempted with great prices. Make sure you understand what is (NOT) included. * DO keep your backups. * For me, vdirsyncer worked great; it is a bit pain to configure and troubleshoot but the architecture is great and it gives you opportunity to sync between independent accounts and even plain text files, which can be a life-saver. (Even sync with google worked.) * Consider having more instances. * Eg. you could pay one and self-host one, use the paid one as a primary access point (public internet, usually much easier), and the self-hosted one as a backup. * Alternatively, one could even share a pool of instances with friends, split the bill and sync both ways. * (You will still need an almost-always-running cronjob somewhere to sync the data, if you're going with vdirsyncer approach.)
fedilink

Again, perhaps with more clarity:

With imapfilter you can

  1. choose where you will host your “actual” e-mail, let’s say you choose according to best spam filter.
  2. choose where you will store your e-mail long-term.
  3. choose where you will access the e-mail for everyday use (this could be several separate accounts if you wanted to eg. use one on your phone and another one on your workstation)
  4. choose where you will run imapfilter and any script hooks
  5. start building your rules.

1-3 could be same provider or different providers, including your custom dovecot instance, you will simply choose based on convenience and limits. If you ever need to change one of the endpoints (providers), you just need to rewrite them in your ~/.imapfilter/config.lua. (And migrate, which can be done using imapfilter or manually using any sane client, eg. Claws Mail…)


Whatever hosting service you’re going to use, if you’re not afraid of a little bit of Lua coding, consider using imapfilter – it’s a swiss knife for backups, pre-sorting, hooks and migration.

imapfilter is a (criminally underrated, IMO) tool for writing e-mail rules in Lua, which allow you to do tons of things, but my favorite is migrating e-mail, regardless of account.

See, unlike most filtering/sorting systems which are either completely proprietary or limited to single account (exportable as Sieve, if you’re lucky), imapfilter does not care where each “end” of the rule is: you can write rule that migrates from account1/folder1 to account2/folder3.

This allows you to completely decouple any sorting, pre-processing, hook or backup system from the actual locations or providers you happen to be using, as well as it allows you to combine any number of locations in any simple or complex way you need. Whatever system you will end up creating will stay with you as long (as you can use IMAP locations), so you can really focus on making it work long-term and have it fit into the big picture.

I’ve been using it for almost 10 years and ever since it has changed my whole world of e-mail. I have constant set of rules that take e-mails from set of inboxes (each box for different purpose, each on different provider, for reasons) and sort them to folders on my “actual” account, where I get to read them on my terms. I also have several of rules that run custom scripts exporting CSV’s, etc. (The rules are Lua programs, after all, so sky is the limit.) If I ever need to migrate my domain to another service (believe it or not, happened more than once in 10 years), all I need to do is set up the new account as base for the rules, but all of my rules are always going to be preserved.

In my past work I actually used imapfilter to move all IMAP from company Gmail to a locally maintained (on company laptop) Dovecot instance so that I could eventually use a sane client to get my work done. (And because the instance was local, I could access my e-mail offline with best possible speed.) One could do a similar thing with personal/freelance e-mail – just run Dovecot somewhere at a trusted place (you won’t be sending/receiving e-mails here, you will be only using IMAP to IMAP commands, so none of the horrors of self-hosting e-mail apply) and use imapfilter to route all email there, then back up your dovecot folder and you’re all set.

Except for need of coding, the disadvantage is that, I need an independent machine that runs 24/7 in order to keep sorting the e-mail (I do it cron-based but you can also do it continually) but that has not been a problem for me as I’m the self-hosting-nerd that’s going to have such machine anyway.