Readeck: The lightweight read-it-later app

5 min read

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

a graph showing the CPU usage at the moment an article is fetched

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.

a screenshot of the readeck reader interface

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.

a venn diagram showing the features of omnivore compared to readeck

For those using a screenreader, the venn diagram above contains the following in the categories
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