Own your calendar and contacts with OpenBSD, Baïkal, and FOSS Android
baak6.com
baak6.com
The backend storage is simply ics/vcf files and while I'm sure it's not the most efficient if you had a large number of users, for our small group it's been perfect and very satisfying knowing your data is there in plain text files.
Although if I'm honest I'm just cheap and wanted to get by on the smallest VM offered by my cloud provider and NextCloud was too demanding for that.
How are you doing this?
A while ago I skimmed the documentation for a couple of CalDAV servers to try and figure out how I could self-host a shared calendar, but couldn't see an easy way to do this.
I've just done some more searching, and it seems there are two suggested ways to do this with Radicale:
* create a separate account for the shared calendar, and tell everyone who needs write access the password
* create the calendar in one use's directory, and add a symlink to it in the user directories for any other users who need write access.
Both of which seem like a bit of hack compared to bring able to explicitly state that a list of users have write access to a calendar in a config file or through a UI.
[1]: https://github.com/Kozea/Radicale/blob/497b5141b066d266c318e...
I am using my own domain and I am using OVH as my mail provider.
That said I try to avoid self hosted services written in Python, especially if they use Django. I’ve had nothing but issues dockerizing them. I just want a static binary ideally.
I'm trying to use an OpenBSD laptop in parallel with a macOS desktop, and while it's perfect for coding and OK for web browsing, the rest of the desktop experience is just... not there.
1) can't have something like a /var mounted on iscsi. The Rd kernel doesn't support it. 2) help for DEs is patchy. In my example XFCE behaves differently on major linux distributions than mine. Intellij too is slightly different. 3) there are some bugs in upstream software which as an OpenBSD user are simply unacceptable to me. I had to disable compositing. 4) things like Bluetooth for some people (not me) may be a deal breaker. Bluetooth sound works perfectly. 5) if you want to use myfavsoftware X, you may have it in ports. But the reason you want to use it relies on mynotfavsoftware Y which may not be available on OpenBSD. 6) if you use OpenBSD you will become a cynic because of bad documentation most places elsewhere. I mean this seriously, I view rest of the world as moving on to just getting things done without giving thought to underlying correctness. Maybe it's a good thing, maybe not.
That said: 1) it is the easiest thing to operate. Like really easy. You know which file is doing what, when. 2) there are no gotchas. This is a very predictable and consistent system. 3) if it's not there in documentation, you don't have to ask "how to x", be rest assured if it's not there in the docs, it is not available, else it'd have been there. 4) contrary to public opinion, very very helpful community.
I think I am a fanboy. Previously have used (rev chronological order) - pop!os, enso OS, windows 10, snow leopard (another brilliant one), freebsd for a month, Ubuntu, redhat 5, XP, 2000, NT 4, 3.11. By far OpenBSD is something I have loved the most.
I found it the other way around, I feel inspired to write better documentation.
> things like Bluetooth for some people (not me) may be a deal breaker.
I'm spoiled by Apple. It must either work really well, or otherwise indeed I won't mind it not being there.
> Bluetooth sound works perfectly.
What do you mean? The whole BT subsystem got rm -rf'd years ago. Or are you using some sort of a 2.4GHz dongle that just shows up as an audio interface?
> contrary to public opinion, very very helpful community.
Indeed, you just need to show you've done basic research before asking questions. Which goes a very long way in any case.
> I think I am a fanboy.
Oh me too. I've been using OpenBSD for 6-7 years, on & off, as my backup / "code in peace" machine. I absolutely love the base system and I think it does what it's supposed to do extremely well.
I have very mixed feelings about the state of the free desktop environments though, again, spoiled by Apple. So I tend to stick to minimalist solutions such as dwm. I could probably switch to OpenBSD full time any time, except I have plenty of non-free software I need or want to run. Between macOS and Windows, at least Macs are decent BSDs.
Yeah, stupid me never ever thought of that;-)
>So I tend to stick to minimalist solutions such as dwm.
I tried my hand at tiling WMs with pop!OS, I just couldn't wrap my hand around it (pun intended). I really admire people who work through all the keyboard shortcuts. It's just not for my capabilities.
I think Windows actually did a great job of making tiling more mainstream - the way windows automatically snap to the left/right half of the screen. macOS could use something like that - I've hacked something similar using Hammerspoon[1] but I think Windows does it better: it's very discoverable for regular users, and has a very intuitive shortcut for the power users (win+left/right/up).
The world of minimalist tiling WMs suffers from the elitism factor. It's a shame that you can't get the right dose of minimalism, without making this huge leap. I think people making most of these WMs misunderstand good UX design: it's not about accommodating non-power users, it's about lowering the barrier for everyone, hackers included.
[1]: https://github.com/rollcat/dotfiles/blob/master/.hammerspoon...
It has pretty web interface, but it was just unusable where it mattered.
That said, for file syncs I do prefer Seafile over Nextcloud. I don't think I'm the only one that prefers Nextcloud just for contact/calendar sync because Mailcow uses the Nextcloud platform just to accomplish that, with file sync disabled.
On desktop the sync integration is fine. It's only on mobile that the experience is lacking.
I also disabled every module and plugin I didn't consider essential.
In contrast, with Baikal, every time I get a new phone, I have to remember I self host it, then figure out which machine it's running on. Other than that, it's completely maintenance free.
(Usually I'm nervous that sync broke since I last checked three+ years ago, so I download a backup of the DB and confirm it's actually working!)
Thunderbird (Linux) - Radicale+Radicale DecSync plugin (Linux/Systemd) - 'DecSync' Folder (Linux) - Syncthing (Linux) - Syncthing-fork (Android/F-droid) - 'DecSync' Folder (Android) - Decsync CC (Android/F-droid) - Simple Calendar Pro (Android/F-droid)
Radicale runs only on localhost. Syncthing runs only on the local network.
The synchronization only happens if the computer and the phone are on the same wifi network.
Nextcloud is what I ended up using; you get file sync and contact/calendaring in one, and you can also use it to share files "externally" if need be, even flip on the chat module and use it to video-conference instead of zoom if you want.
I'm using sqlite as the backing database mostly because I'm a single user and don't put a ton of files into it. I also disabled every single module I didn't need. It was dog slow until I connected it to redis, which was a real game changer - near instant page loads and file sync. It is running on an ancient SATA SSD in a second-gen i5 laptop.
I switched to Migadu for my primary email which includes CalDav and CardDav. I also run Hydroxide in my K8s cluster for Protonmail syncing on Apple Mail -- I could also switch to that for CalDav and CardDav if I wanted to.
There isn't much I actually need Syncthing for on my phone nowadays. Even if I was back on Android I can't think of much I would need it for -- for my workflows.
> Nextcloud is what I ended up using
Nextcloud has always been one of those projects I appreciate so much but find so bloatey for me as a single user and always end up getting rid of shortly after I install it. I feel like if I had a team of users (work, friends or family) who fully committed to using it then I would love it.
Btw, none of this is meant as a criticism to your setup -- it sounds perfect!
https://www.billdietrich.me/SecureCommunication.html?expanda...
There's also instructions about caldav only on the migadu site here:
I can't remember the ports but if you point a CardDav/CalDav client at cdav.migadu.com they pick up the settings automatically. I've done this on iOS, Android, MacOS and Linux and they all seem to work perfectly for me with Migadu.
I believe that’s why the author was avoiding NextCloud.
How often do they need security patches or major version upgrades that might have breaking changes? How often will you need to replace the current stack with the Next Big Thing?
I've been self-hosting a blog for a while. At first, I used custom software, because blogging software didn't exist (I'm that old). I switched to Movable Type, but that project withered. I moved to Wordpress, but found I was spending more time running upgrades of the core and plugins then actually blogging.
I migrated to a static site generator, Jekyll, which seemed popular would solve the problem of security updates with dynamic code. My install broke multiple times as I changed laptops and Jekyll's dependency stack went through major version upgrades. Still, I was spending more time maintaining the stack then I wanted.
Now, there have been rumblings about the future of Jekyll as well. Maybe I should switch to a single-binary app like Zola to solve the dependency hell I've sometimes gotten into with Jekyll upgrades.
This is only the history of trying to self-host a personal blog from someone whose professional career has been web hosting in some form or another. Imagine also trying to self-host email, contacts, calendars a mastodon instance and other services as well.
We can still support a more diverse ecosystem of tech by not using the dominant providers and supporting companies which use open source software which people can self-host if they want to.
I support self-hosting, but the marriage to your own tech stack involves some significant work once the honeymoon is over.
* linuxserver.io container
* redis instance (enormous speed-up. Really, do this. Running a redis container is very painless.)
* use SQlite for the backend DB (unless you have a huge number of files)
* disable every module/plugin you don't NEED
Run a cron script that periodically fetches new images, kicks over the container, and purges old images.
Run another script that periodically tries to run updater.phar in the container, or notifies you when there's an update, or subscribe to the nextcloud RSS feed, etc.
I recommend overriding the defaults for deleted file behavior and versioning. Most folks don't want or need deleted files hanging around until 50% of your disk space is used, for example. The versioning defaults are fairly reasonable IMHO, but I decided I didn't care about anything past two months. Some folks who have lots of fast changing files will probably want to tweak the retention policy because it will save second-by-second versions for a few minutes to an hour (I forget exactly) and that could generate a lot of IO and SSD wear unnecessarily.
Done! I was dreading switching over from syncthing but it's been painless, and the NextCloud clients are all pretty slick and Just Work.
And that's supposed to mean what?