Self-Hosting Readeck with Docker Compose

What Is Readeck?

Readeck saves the readable content of web pages — articles, blog posts, documentation — and stores everything locally as immutable ZIP files. No external requests after the initial save. Text, images, and metadata all live on your server. It’s a self-hosted alternative to Pocket, Instapaper, and Omnivore (which shut down in 2024).

What sets Readeck apart from Wallabag and Hoarder: it’s a single Go binary with SQLite, uses ~50 MB of RAM, and exports to EPUB with OPDS support — so you can read saved articles on an e-reader.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 512 MB of free RAM (Readeck uses ~30-50 MB)
  • Disk space for saved articles (varies — ~1-5 MB per article with images)
  • A domain name (optional, for remote access)

Docker Compose Configuration

Create a directory for Readeck:

mkdir -p /opt/readeck && cd /opt/readeck

Create a docker-compose.yml file:

services:
  readeck:
    image: codeberg.org/readeck/readeck:0.22.2
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - readeck-data:/readeck
    environment:
      # Server configuration
      - READECK_SERVER_HOST=0.0.0.0
      - READECK_SERVER_PORT=8000
      # Logging
      - READECK_LOG_LEVEL=info
    healthcheck:
      test: ["CMD", "readeck", "healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

volumes:
  readeck-data:

Start the stack:

docker compose up -d

Readeck starts in under 5 seconds. Open http://your-server:8000 and create your first admin account.

Key Features

FeatureDetails
Content extractionSaves readable text + images from any URL
Storage formatImmutable ZIP files per bookmark
DatabaseSQLite (embedded, zero config)
Full-text searchQuery across all saved content
LabelsOrganize bookmarks with custom tags
CollectionsGroup bookmarks into themed collections
HighlightsMark important passages within articles
EPUB exportConvert articles to EPUB for e-readers
OPDS feedServe saved articles to e-reader apps (KOReader, Calibre)
Browser extensionsFirefox and Chrome (save with one click)
APIREST API for integrations
Multi-userSeparate accounts with independent libraries

Initial Setup

  1. Navigate to http://your-server:8000
  2. Create the admin account (first user gets admin privileges)
  3. Install the browser extension from Readeck’s site — available for Firefox and Chrome
  4. Configure the extension with your Readeck URL and credentials
  5. Save your first article — the extension adds a single-click save button to your browser toolbar

Configuration

Readeck uses environment variables or a config.toml file. The Docker volume stores both the database and saved content.

Environment Variables

environment:
  # Server
  - READECK_SERVER_HOST=0.0.0.0
  - READECK_SERVER_PORT=8000
  - READECK_SERVER_PREFIX=/         # URL path prefix (for reverse proxy sub-path)

  # Database
  - READECK_DATABASE_SOURCE=/readeck/db.sqlite3

  # Logging
  - READECK_LOG_LEVEL=info          # debug, info, warn, error

  # Content extraction
  - READECK_SCRAPER_TIMEOUT=30      # Timeout for fetching pages (seconds)

Using a Config File

Mount a config.toml for more control:

[server]
host = "0.0.0.0"
port = 8000

[database]
source = "/readeck/db.sqlite3"

[log]
level = "info"

Mount it in your Docker Compose:

volumes:
  - ./config.toml:/readeck/config.toml:ro
  - readeck-data:/readeck

OPDS for E-Readers

Readeck’s OPDS feed lets e-reader apps browse and download your saved articles as EPUB files. This is a killer feature for offline reading.

OPDS endpoint: http://your-server:8000/opds

Compatible apps:

  • KOReader (Kindle, Kobo, PocketBook) — add the OPDS URL in the OPDS browser
  • Calibre — add OPDS catalog in Calibre preferences
  • Moon+ Reader (Android) — supports OPDS catalogs
  • Librera (Android) — OPDS support built in

Your workflow: save articles throughout the day with the browser extension, then sync them to your e-reader for offline reading. No export steps — the OPDS feed updates automatically.

Reverse Proxy

Nginx Proxy Manager or Caddy configuration for HTTPS access:

Caddy:

readeck.yourdomain.com {
    reverse_proxy readeck:8000
}

Nginx Proxy Manager: Create a new proxy host pointing to readeck:8000 on port 8000, enable SSL with Let’s Encrypt, and enable WebSocket support.

See the full Reverse Proxy Setup guide.

Backup

Readeck stores everything in the /readeck volume:

  • db.sqlite3 — the database (bookmarks, users, labels)
  • bookmarks/ — saved article ZIP files

Back up the entire volume:

docker compose stop readeck
tar czf readeck-backup-$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/readeck_readeck-data
docker compose start readeck

For automated backups, use Borgmatic or Kopia with the volume path.

Troubleshooting

Articles Save But Show No Content

Symptom: Bookmark appears in the list but the readable view is blank.

Fix: Some sites block server-side content fetching. Check docker compose logs readeck for HTTP errors. Some sites require a User-Agent header to serve content. You can also try saving the article via the browser extension, which fetches content from your browser (client-side) rather than the server.

Cannot Log In After Docker Restart

Symptom: Credentials rejected after container restart.

Fix: Verify the data volume is mounted correctly. If the volume was lost, the database was recreated empty. Check docker volume ls and ensure readeck-data exists with your data.

Browser Extension Won’t Connect

Symptom: Extension shows “connection refused” or “unauthorized.”

Fix: Ensure the Readeck URL in the extension settings includes the port (http://your-server:8000). If behind a reverse proxy, use the HTTPS URL. Generate an API token in Readeck’s settings page and use that instead of username/password.

OPDS Feed Returns 401

Symptom: E-reader app can’t authenticate to the OPDS feed.

Fix: OPDS uses HTTP Basic Authentication. Enter your Readeck username and password in the e-reader app’s OPDS settings. Some apps don’t prompt for credentials — configure them manually.

Search Returns No Results

Symptom: Full-text search doesn’t find articles you know exist.

Fix: Readeck indexes content on save. Articles saved before a version upgrade may need re-indexing. Check the Readeck documentation for the re-index command.

Resource Requirements

ResourceRequirement
RAM30-50 MB idle, 50-100 MB during content extraction
CPUMinimal — Go binary is efficient
Disk~15 MB for the application, 1-5 MB per saved article (with images)
NetworkOutbound HTTP/HTTPS for fetching articles

Readeck is one of the lightest self-hosted applications available. It runs comfortably on a Raspberry Pi alongside other services.

Verdict

Readeck is the best choice for self-hosters who want a read-later app with e-reader integration. The OPDS support and EPUB export are features that Wallabag, Linkwarden, and Hoarder either don’t have or implement less cleanly. The single-binary Go architecture means it uses almost no resources and starts instantly.

The trade-off: Readeck is younger and has a smaller community than Wallabag. There’s no mobile app (browser extension + PWA works, but native apps don’t exist yet). If you need team features, annotation sharing, or a polished mobile experience, Wallabag is more mature.

For personal use — saving articles during the day, reading them on a Kindle at night — Readeck is exactly right.

Frequently Asked Questions

Can I import bookmarks from Pocket or Wallabag?

Yes. Readeck supports importing from Pocket (export HTML file) and Wallabag (JSON export). Check the import section in Readeck’s admin settings.

Does Readeck have a mobile app?

No native app. The web UI works on mobile browsers, and the site can be added as a PWA (Progressive Web App) on iOS and Android. Share-to-Readeck works via the browser extension on Android.

How does Readeck compare to Omnivore?

Omnivore shut down in late 2024. Readeck fills the same niche — clean reading experience, offline support, highlights. Readeck adds OPDS/EPUB export. It doesn’t have Omnivore’s AI features or newsletter integration.

What is OPDS and why does it matter?

OPDS (Open Publication Distribution System) is a catalog format that e-readers understand. Readeck exposes your saved articles as an OPDS feed, so you can browse and download them directly from your Kindle, Kobo, or any OPDS-compatible e-reader app. This is Readeck’s killer feature — no manual file transfers needed.

How much storage does Readeck use?

Each saved article is stored as an immutable ZIP file containing the full HTML, images, and metadata. Expect 1-5 MB per article. A library of 1,000 articles uses roughly 1-5 GB. Since articles are self-contained ZIP files, they don’t depend on the original website staying online.

Does Readeck support multi-user setups?

Yes. Readeck supports multiple user accounts, each with their own saved articles and collections. User management is handled through the admin interface. Each user’s library is isolated from others.

Comments