Marcel Kapfer

Switching away from Pocket

2024-11-13

1524 words, ~11min reading time

selfhosting rss bookmarks

I've been using Pocket (the bookmark manager) for a long time, either since around the time it was added to Firefox in 2015 or around the time Mozilla purchased it in 2017. I can't remember precisely and as of now I can't even check, what was my first stored bookmark.

Pocket always was a bit in a special place since it was (besides email and social media) perhaps the only service storing personal data that I didn't host myself. For a long time, I was really satisfied with its features (in the free plan, I never used premium) and also with the mobile apps with their offline capabilities (though nowadays I want or need to visit the original webpage almost always). Of course, I thought about switching to something else a few times that I could host myself. Last year I tried linkding, earlier this year I played around with a few different bookmark managers whereby I almost chose to run an own Readeck instance, and just a few weeks ago I played around with Nextcloud Bookmarks. But all these times it didn't seem worth it to switch or there was something that kept me back.

But not yesterday. Yesterday, I switched.

My reasons for switching

As already written, I prefer storing my personal data on self-hosted services. And this was always an underlying thought when thinking about choosing a different bookmark manager. Though, it was not the main one in the end. The issue that more or less suddenly arose with Pocket is that it got quite unreliable at my site during the last few days.

I don't use Pocket as a long-term bookmarking tool and I don't really need snapshots of the websites I add to it. But I use it heavily for adding links to pages of all kinds that I want to read later (later meaning rarely more than a few weeks). That's it. To put it in other words: Instead of keeping countless open tabs (which would need to be synced reliably across devices), I use Pocket.

This implies that I add links quite often (to be more precise: normally, I add multiple new entries per day) and I access the list on many different devices. Therefore, it is absolutely crucial, that I have the same list of articles available wherever I open Pocket (via web or app or API).

Unfortunately, this doesn't work anymore for a few days. For example, on my phone, I use the official pocket app as well as the Pocket integration in the Reeder iOS app. The later one tells me, that the last sync with Pocket was yesterday morning at 06:39 am. The official app (on my iOS-based phone but also on my Android-based tablet) is not that nice. It displays a list of links and accepts actions like archiving as if everything works. But neither the list of links is the same on all devices nor are the actions synchronised. The same goes for the web app.
Of course, I tried hard-reloading the web app, closing and restarting the mobile app and on my tablet I even deleted all app data and logged in again. But nothing changes: the list of links and the applied actions are not synchronised.

Since I even got a "wrong" list on a completely cleared Android app I think that this seems to be a server-side problem at Pocket. This would also explain why I cannot view my archive in the web app (I just get the error message "Something went wrong while retrieving your items"), why I didn't get a requested export for over 24 hours (I know the export says "up to 30 days", but that does sound a bit extreme), and why the pockexport tool reliably fails due to server errors after a few hundred retrieved URLs.

Wherever the problem is, I don't care. I just need something a bit more reliable than this. So I started searching for self-hosted alternatives yesterday afternoon.

Open-Source Bookmark Managers

I used the listed bookmark managers on the awesome selfhosted list to get an overview of the current options. A quick additional search on the web didn't yield any more interesting results.

Since I'm not that keen on using NodeJS projects, I identified the following options:

Why not Nextcloud Bookmarks? I don't particularly like the way that Nextcloud itself is being developed (that's something for another article) and in my experience, all Nextcloud apps that I used feel somewhat hacky and unpolished. Therefore, I don't want to use Nextcloud for more than I already do.

For each software, I created a local environment using Docker Compose and ran them. And to my positive surprise, none of the services caused any problems :)

Then I logged in and stored a few websites as a test. I would have preferred to import all my Pocket bookmarks, but apparently, I cannot get an export. So as a next step, I checked whether the tools offered all my required features:

Surprisingly, a large amount applications didn't provide the archiving functionality. To be honest, I don't need a URL archive since I don't check it. But after "processing" a URL, I would like to get rid of it and deleting forever seems a bit of a drastic approach. Especially since it is not that unlikely that I would do it by accident. Therefore, an archive is a must-have feature. Sadly, LinkAce, Servas, and Shiori don't have this.

Wallabag looked quite interesting but had trouble extracting information from the websites behind the given URL for three out of four URLs, which made no problems in any other bookmark manager. I searched a bit about what the reason for this could be and if it could be a problem with my local setup but I didn't find anything that would improve the situation.

Therefore, only Readeck and linkding were left.

What I chose

And to be honest, I could have gone either way. Readeck is written in Go, while linkding is a Python application, and I prefer Go over Python. Not that I want to contribute to any of these projects at this point, but I find Go applications much more convenient to host (though thanks to Docker, this almost doesn't matter anymore nowadays).

linkding is a very simple app which only provides the basic functionality needed for a bookmark manager, while Readeck is more or less a full-fledged web archiving and management solution. That's not necessarily a point for Readeck, but more for linkding since I don't need the advanced features, and I'm also happy if I don't need to store archives from countless websites on my server.

Readeck surprisingly doesn't offer any easy way to export all data at the moment. Of course, one can grab the database or retrieve all data using the API. But it is missing a simple Netscape-bookmark-HTML-file export (or something comparable).

In the end, it was a decision based on my gut feeling that resulted in me choosing linkding.

Setup and Migration

The setup using Docker Compose was easy. Since it is by far not the first application I deploy using Compose on my server, I know my way around it and had the instance running after a few minutes. Migrating my data was more difficult, and I first considered waiting until my export from Pocket arrived, but in the end, I didn't want to wait any longer since I wanted to have a working bookmarking manager again as soon as possible. Therefore, I transferred all currently open (not-archived) bookmarks manually, which were around 100 entries and after perhaps 30 minutes, everything was done.

Installing the browser extension, bookmarklet, and iOS shortcode went quickly and smoothly, and thereby I discovered that linkding actually had some very interesting community projects, which I will have to explore more in-depth in the future. After shortly trying LinkThing on iOS and Pinkt on Android, I decided to go with the web app for now since both apps currently don't offer archiving bookmarks.

The last thing that I need to migrate is the reason why I wrote earlier that I need an API endpoint for adding new entries. In April 2023, I wrote a small Python application, which is triggered every few hours by a cronjob on a server and transfers all favourited items from my FreshRSS installation to Pocket. It has been running flawlessly ever since then, and I have to say that nowadays, I don't want to miss this comfort. Therefore, it was necessary to adjust the script to work with linkding instead. Since its API is much more comfortable to work with than the Pocket API, this was also done and deployed in about an hour (perhaps even less). I also published the new freshrss2linkding Python script in its own Git repo. Feel free to check it out and use it.

Thoughts after one day

Writing a "review" after one day is more or less a bad joke. Especially because I've written this entire post one day after the switch.

Nevertheless, I'm already fully accustomed to linkding and don't miss Pocket at all. I can't look in the future, but I have a good feeling that I will use linkding for a long time to come.

I would like to hear what you think about this post. Feel free to write me a mail!

Reply by mail