Readeck: The lightweight read-it-later app
In a world in which things are being removed from the web, it can be amazing to have your own personal collection of gems. Read-it-later apps seek to be the solution, allowing you to save webpages to a location that will be persistent even if the original webpage is removed. There are a bunch of these applications, including pocket, ArchiveBox, and omnivore (which I have written about quite a bit on this blog). This week I discovered Readdeck which may be the perfect solution for those that love the open-source nature of omnivore, but are looking for something much more lightweight.
Omnivore has a lot of features and advanced capabilities, but this can also make it difficult to self-host for beginners. Readeck, on the other hand, was a single docker container that I was able to get setup in under an hour, and it is fast – it takes just a few seconds from the time I hit “save link” to the moment that the page is accessible in the library. It may be because I am the only user on my instance, but I was incredibly impressed by how little resources readeck uses. Below is the CPU graph for a server with a single core intel chip running 2 other applications at the moment an article is saved. For a glance at the resources that readeck recommends, check out the readeck documentation
Readeck will perform well enough on the old RaspberryPi 2 you forgot in a drawer
Installing Readeck
There are many ways to install readeck however I opted to go with a docker compose setup, as this is how I have my server configured with other applications. Below is the compose file that worked for me.
services:
app:
image: codeberg.org/readeck/readeck:latest
container_name: readeck
ports:
- "127.0.0.1:8000:8000"
environment:
- READECK_LOG_LEVEL=info
- READECK_SERVER_HOST=0.0.0.0
- READECK_SERVER_PORT=8000
- READECK_SERVER_PREFIX=/
- READECK_ALLOWED_HOSTS=readeck.example.com
- READECK_USE_X_FORWARDED=true
volumes:
- readeck-data:/readeck
restart: unless-stopped
healthcheck:
test: ["CMD", "/bin/readeck", "healthcheck", "-config", "config.toml"]
interval: 30s
timeout: 2s
retries: 3
volumes:
- readeck-data:
Reverse Proxy with Caddy
I used the simple reverse proxy functionality of caddy along with a Caddyfile. This makes it really easy to add to the other applications on the server as the configuration can be hot reloaded through caddy reload
without causing any downtime on other services.
readeck.example.com {
reverse_proxy 127.0.0.1:8000
}
Once docker compose up
is run, the server should be accessible at readeck.example.com
. Upon the first load, readeck will ask you to create a user with a username and password combination. There isn’t the ability for others to register on the instance at the time of writing (although there is an issue submitted), so there is no need to worry about disabling further registration from the login screen.
Using Readeck
There are two ways to save an article to Readeck, either through the web interface or the browser extension. The browser extension will allow you to save articles that may be behind a paywall, as it will use the content as it displays on your screen and send it to the server, as opposed to reaching out to fetch it. There isn’t a way to store credentials in readeck itself, and this is intentional. In the view of the developer, this isn’t something that should be done, and I agree.
Labels and highlights will be familiar to anyone who has used another read-it-later service, and function in the same way. Use highlights to get key points that you want to remember for later, and labels as a way to categorize articles (this is the tag method of organization instead of the directory method). The interface has everything that you need, and nothing that you don’t.
Omnivore comparison
To those that want all the bells and whistles, omnivore is still the best in the business. Omnivore supports integrations with many popular PKM apps such as obsidian and logseq, features text to speech, RSS and newsletter integration, and mobile apps. If you don’t want to self host, and plan to use any of these features, I would still recommend omnivore as the way to go. It is also open-source, and has a great development team behind it.
If, however, you are looking for something much snappier and easy to self-host, readeck would be a great pick. While it may not have mobile applications, you can always use it as a progressive web app, and there are many less moving parts. If self-hosting isn’t for you, stay tuned for the announcement of the hosted option, which will eventually compete on price with products like raindrop and omnivore, which hasn’t announced pricing yet.
Omnivore: Newsletter support, PDF support, PKM app integration, mobile applications, RSS support, Hosted option
Both: open-source, free, great reader-ui
Readeck: Easy to self-host, very fast, less complexity
Conclusion
Readeck is a new entry into the open-source read-it-later space and I was so happy to discover it. You can find the code for readeck on codeberg and follow the development on mastodon