Read Later
By Erwin
- 3 minutes read - 448 wordsStatus
Active since July 2025.
What
A self-hosted bookmark/read-later service
How
This service is setup as one of several virtual hosts on a virtual machine that is dedicated to a couple of these self-hosted things (the project page for is still WIP/AWOL for now).
To try and keep the maintenance requirements relatively low I used the docker approach, only sharing the data with the host system so that it is preserved over restarts and can be backed up regularly:
docker run \
--detach \
--rm -ti \
-p 6080:8000 \
-v /var/www/readeck:/readeck \
codeberg.org/readeck/readeck:latestA fragment of the Apache configuration file:
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:6080/
ProxyPassReverse / http://0.0.0.0:6080/
RequestHeader set X-Forwarded-Proto https
Disclaimer: I don't have a lot of experience with the proxy or proxy_http modules, so it's possible that could be done better. There are more complete instructions on the Readeck Deployment documentation page.
Integrating it:
- For Firefox I use this Readeck add-on.
- There is no iOS (or Android, for that matter) app but the (self-hosted) website can be added as a pseudo-app on iOS by using Safari's "Add to Home Screen".
- That pseudo-app doesn't get you a "Share to …" entry, but thankfully there are acceptable workarounds (listed in the FAQ) in the form of shortcuts. It took a little bit of fidgeting to figure out how to configure the shortcut, but after that it was relatively smooth sailing.
- Although it's somewhat redundant, I also created a script to check my Mastodon bookmarks and import new ones into Readeck. So if I'm in a hurry, I'll quickly bookmark a
posttoot, otherwise I'll use the "Send Page + Tags To Readeck" shortcut.
Code and related things
Originally I had planned to migrate from Instapaper (the read-later service I used for ~15 years) to a self-hosted Wallabag instance, but before the dust had even settled on that (meaning figuring out what browser add-on to use or how to integrate it on my phone) this post by Shom pointed me towards Readeck. That's why the scripts below have a migration path from Instapaper -> Wallabag -> Readeck, and not Instapaper -> Readeck.
My collection of scripts in this read-later repository.
wallabag_import.py: Iterate over the Instapaper entries and add them one by one to my (also self-hosted) Wallabag service. For the ~17k bookmarks that I had that took multiple hours and possibly got my IP in trouble with a few websites.readeck_wallabag.py: Initiate a migration from Wallabag to Readeck (handled entirely by Readeck after that).reprocess_readeck.py: Loop over all bookmarks in a Readeck collection, re-adding them and deleting the original ones as it goes.bookmark_readeck.py: Check my Mastodon bookmarks and add any new ones to Readeck
You can leave a comment by replying to this post with your own Mastodon/Fediverse account.