Self-Host Wallabag: Read-Later & Article Archiver 2026
TL;DR
Wallabag (MIT, ~10K GitHub stars, PHP) is a self-hosted read-later app and article archiver. Save articles from any website via browser extension, mobile app, or API — Wallabag fetches the full content, strips ads, and makes it available for offline reading. Pocket charges $4.99/month for Premium features; Instapaper is free but sends your reading list to their servers. Wallabag stores everything on your server with no subscription.
Key Takeaways
- Wallabag: MIT, ~10K stars, PHP — read-later with full article content, tagging, and export
- Browser extensions: Chrome, Firefox, Safari — save articles with one click
- Mobile apps: iOS, Android — read offline, sync with server
- EPUB/PDF export: Export articles or entire tag collections as ebooks
- Annotations: Highlight text and add personal notes within saved articles
- RSS feed: Every tag creates an RSS feed — use with Miniflux/FreshRSS
Part 1: Docker Setup
# docker-compose.yml
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
restart: unless-stopped
ports:
- "8080:80"
volumes:
- wallabag_data:/var/www/wallabag/data
- wallabag_images:/var/www/wallabag/web/assets/images
environment:
SYMFONY__ENV__DATABASE_DRIVER: pdo_pgsql
SYMFONY__ENV__DATABASE_HOST: db
SYMFONY__ENV__DATABASE_PORT: 5432
SYMFONY__ENV__DATABASE_NAME: wallabag
SYMFONY__ENV__DATABASE_USER: wallabag
SYMFONY__ENV__DATABASE_PASSWORD: "${DB_PASSWORD}"
SYMFONY__ENV__SECRET: "${SECRET_KEY}"
SYMFONY__ENV__DOMAIN_NAME: "https://read.yourdomain.com"
SYMFONY__ENV__SERVER_NAME: "Wallabag"
SYMFONY__ENV__FOSUSER_REGISTRATION: "false" # Disable public registration
SYMFONY__ENV__MAILER_HOST: mail.yourdomain.com
SYMFONY__ENV__MAILER_USER: read@yourdomain.com
SYMFONY__ENV__MAILER_PASSWORD: "${MAIL_PASSWORD}"
SYMFONY__ENV__FROM_EMAIL: read@yourdomain.com
depends_on:
db:
condition: service_healthy
db:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: wallabag
POSTGRES_USER: wallabag
POSTGRES_PASSWORD: "${DB_PASSWORD}"
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U wallabag"]
interval: 10s
start_period: 20s
volumes:
wallabag_data:
wallabag_images:
db_data:
docker compose up -d
Visit http://your-server:8080 → log in with wallabag / wallabag → change password immediately.
Part 2: HTTPS with Caddy
read.yourdomain.com {
reverse_proxy localhost:8080
}
Part 3: Browser Extensions
Chrome / Chromium
- Install Wallabag Browser Extension
- Extension settings:
- Wallabag URL:
https://read.yourdomain.com - Username + password
- Wallabag URL:
- Click extension icon on any page → saves to Wallabag
Firefox
- Install from Mozilla Add-ons: search "Wallabagger"
- Same configuration
Safari (iOS/macOS)
- Install Wallabag iOS app
- Share Sheet → Wallabag — saves any article from any browser
Bookmarklet
For browsers without an extension:
- Wallabag → Settings → Misc → Bookmarklet
- Drag to bookmarks bar
- Click bookmark on any page to save
Part 4: Mobile Apps
iOS
- Install Wallabag 2 Official from App Store
- Server:
https://read.yourdomain.com - Username + password → log in
- Sync → downloads all saved articles for offline reading
Android
- Install Wallabag Android
- Same setup
- Offline mode: Sync articles before going offline
Part 5: Tags and Organization
Tags
Tag articles when saving:
- Article → Edit → Tags:
tech,later,work,read-in-progress - Or add tags via browser extension before saving
Tag RSS feeds
Every tag generates its own RSS feed:
https://read.yourdomain.com/api/v1/entries.xml?tags=tech&username=admin&token=API_TOKEN
Subscribe this in FreshRSS/Miniflux → your Wallabag tagged articles appear as RSS items.
Automatic rules (via annotations)
# Mark articles as "starred" automatically if they contain keywords:
# Settings → Rules → If article title contains "security" → star it
Part 6: Export
Export a single article
- Article → Export
- Format: EPUB, PDF, CSV, JSON, XML, TXT
- Download
Export by tag
- Tag → Export all articles in tag
- Format: EPUB → creates a proper ebook with all articles
# Via API:
TOKEN="your-api-token"
# Export all articles as EPUB:
curl "https://read.yourdomain.com/api/v1/export.epub" \
-H "Authorization: Bearer $TOKEN" \
--output wallabag-articles.epub
# Export articles with tag "tech":
curl "https://read.yourdomain.com/api/v1/export.epub?tags=tech" \
-H "Authorization: Bearer $TOKEN" \
--output tech-articles.epub
Part 7: Annotations
Highlight and annotate within saved articles:
- Read an article → select text
- Highlight → creates yellow highlight
- Annotate → add a personal note to the selection
- All annotations saved and searchable
Annotations export with the article in EPUB format.
Part 8: REST API
# Get OAuth token:
curl -X POST "https://read.yourdomain.com/oauth/v2/token" \
-d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=admin&password=PASSWORD"
TOKEN="access_token_from_above"
# Get unread articles:
curl "https://read.yourdomain.com/api/v1/entries?archive=0" \
-H "Authorization: Bearer $TOKEN" | jq '._embedded.items[].title'
# Add an article:
curl -X POST "https://read.yourdomain.com/api/v1/entries" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article", "tags": "tech,interesting"}'
# Mark as read:
curl -X PATCH "https://read.yourdomain.com/api/v1/entries/42" \
-H "Authorization: Bearer $TOKEN" \
-d "archive=1"
# Search articles:
curl "https://read.yourdomain.com/api/v1/entries?term=kubernetes" \
-H "Authorization: Bearer $TOKEN" | jq '._embedded.items[].title'
Maintenance
# Update:
docker compose pull
docker compose up -d
# Backup:
docker exec wallabag-db-1 pg_dump -U wallabag wallabag \
| gzip > wallabag-db-$(date +%Y%m%d).sql.gz
tar -czf wallabag-images-$(date +%Y%m%d).tar.gz \
$(docker volume inspect wallabag_wallabag_images --format '{{.Mountpoint}}')
# Flush Wallabag asset cache:
docker exec wallabag php /var/www/wallabag/bin/console cache:clear --env=prod
# Logs:
docker compose logs -f wallabag
See also: Miniflux — pair with Wallabag for a complete reading workflow
See all open source productivity tools at OSSAlt.com/categories/productivity.