State of the self-host

ยท 718 words ยท 4 minute read

I’ve tried a bunch of self-hosted things recently. In the spirit of “yeah, but how is it really working,” a quick rundown:

Linkding ๐Ÿ”—

Linkding is a bookmarking tool. It has a UI similar to pinboard.in, can import bookmarks.html files, and has a decent API. It’s working very well. I’m particularly fond of the Linkding injector addon for Firefox, which injects Linkding search results into the sidebar of most popular search engines.

This one seems to be a keeper.

I briefly considered shaarli as an alternative. I didn’t like the UI as much, but it has a bigger list of third-party extensions than Linkding.

Wallabag ๐Ÿ”—

Wallabag is a self-hosted Pocket alternative. It also has a useful API, an iOS app, and a Firefox extension. I wasn’t too sure about this one going in, but once I got the Docker stuff and some reverse proxy weirdness sorted it worked quite well. It has a few more smarts than Pocket, and it provides Atom feeds of simplified articles you can use to create ebook digests via Calibre or just consume with your everyday RSS reader, given the formatting is cleaned up.

It also lets you share a public-facing version of a saved article, and its clipper extension seems to be able to see around a few paywalls if you’re saving from a subscription site.

I think this one is a keeper given I can automate the ebook exports: That essentially recreates the Pocket/Kobo integration.

calibre-web ๐Ÿ”—

calibre-web is a HTML5 front-end for Calibre libraries that allows you to edit metadata, organize your ebook collection into shelves and, most importantly to me, act as an online sync source for Kobo e-readers, allowing you to browse your collection and download to your Kobo, then keep your reading location in sync.

Some people live in calibre-web full-time, uploading ebooks and managing their metadata. I prefer to pair it with Calibre itself due to an ongoing content conversion project.

It’s definitely a keeper. I recovered a ton of books from another device and converted them to Kobo-friendly epubs. Better yet, when downloaded to a Kobo, calibre-web serves up kepubs, which are optimized for Kobos.

Calibre ๐Ÿ”—

Calibre is an ebook conversion/management tool, ordinarily used on the desktop. I found a Docker recipe that lets me run it on my Synology and access it via a web-based VNC tool. With a little fiddling, I added mountpoints that let me install downloaded extensions and import books from a bookdrop directory as I pull them down from their assorted vendor sites.

It works alongside calibre-web, allowing me to install books from assorted formats and export them to epub, where they’re almost instantly available from the calibre-web web interface or Kobo integration.

Even if sync didn’t work, you can access a content server that uses the OPDS protocol for browsing. So with a reverse proxy and authenticated user, you can get at your library from anywhere and side-load books to your reader.

I’m going to keep the Dockerized version.

Vikunja ๐Ÿ”—

Vikunja is a todo app that includes a traditional list view and a card view. It serves up CalDAV, so it could theoretically work with any CalDAV client, but its doesn’t work well with iOS Reminders. The responsive Web UI isn’t bad if you want to install it to your iPhone desktop.

I installed it and tried it for a day, but I am not sure about it. I’m a little uneasy about self-hosting my todos, and was hoping for some kind of native client.

Joplin ๐Ÿ”—

Joplin is an Evernote-esque app with a ton of cross-platform support that I couldn’t quite bring myself to trust in a self-hosted context. It’s a good tool and all, but I’d prefer to just have my notes in a plaintext, version-controlled setup.

MariusHosting ๐Ÿ”—

MariusHosting isn’t an app, it’s a site run by Marius Lixandru with a ton of recipes for Dockerizing common self-hosted apps on a Synology. It’s my first stop when I want to try something out. I was resistant to a lot of his earlier stuff because he had an idiosyncratic way of getting containers set up, but he has since begun to use Portainer for his recipes, which has simplified them a lot. If you find a Docker recipe that uses docker run, you can convert that to Docker Compose with composerize.