Wallabag Read-It-Later
Wallabag self-hosted read-it-later application for saving articles.
Overview
Wallabag is a self-hosted, open-source read-it-later application that serves as a privacy-focused alternative to commercial services like Pocket or Instapaper. Originally launched in 2013, Wallabag allows users to save articles, web pages, and content for offline reading while providing full control over their reading data. The application features a clean, responsive interface, content extraction capabilities, and cross-platform synchronization without relying on third-party services that monetize user reading habits.
This deployment combines Wallabag with PostgreSQL for robust article metadata storage and Redis for high-performance session management and caching. PostgreSQL's full-text search capabilities enable fast article searching across saved content, while its JSONB support efficiently stores extracted article metadata and user annotations. Redis accelerates the application by caching frequently accessed articles, managing user sessions, and handling background job queues for content processing tasks like article extraction and thumbnail generation.
This stack is ideal for privacy-conscious individuals, families, and small organizations who want to maintain their own reading archive without dependence on commercial platforms. The combination provides enterprise-grade reliability for personal use, making it perfect for power readers, researchers, journalists, and anyone building a permanent knowledge base from web content.
Key Features
- Full-text article extraction with readability parsing that strips ads and formatting
- PostgreSQL-backed tagging system with advanced search across article content and metadata
- Redis-accelerated content processing queue for batch article imports and exports
- Multi-format export capabilities including EPUB, PDF, and JSON for article portability
- Annotation and highlighting system with PostgreSQL storage for permanent note-keeping
- RSS feed generation for saved articles with Redis caching for performance
- User management system with PostgreSQL-stored reading statistics and preferences
- Mobile-responsive interface with Redis session storage for cross-device continuity
Common Use Cases
- 1Personal reading archive for researchers collecting articles across multiple domains
- 2Family sharing setup for homeschooling parents organizing educational content
- 3Small newsroom or blog team collaborating on article research and fact-checking
- 4Digital minimalist setup replacing multiple commercial read-later service subscriptions
- 5Academic research environment for literature review and source material organization
- 6Corporate knowledge management for teams tracking industry news and competitive intelligence
- 7Self-hosted alternative for users concerned about reading habit privacy and data ownership
Prerequisites
- Minimum 2GB RAM (1GB for PostgreSQL, 512MB for Redis, 512MB for Wallabag application)
- Docker and Docker Compose installed with support for multi-container networking
- Available ports 8080 for web interface access and internal PostgreSQL/Redis communication
- Basic understanding of environment variables for database credentials and domain configuration
- Familiarity with PostgreSQL backup procedures for article data protection
- Knowledge of reverse proxy setup if exposing Wallabag to external network access
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 wallabag: 3 image: wallabag/wallabag:latest4 container_name: wallabag5 environment: 6 - SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql7 - SYMFONY__ENV__DATABASE_HOST=postgres8 - SYMFONY__ENV__DATABASE_PORT=54329 - SYMFONY__ENV__DATABASE_NAME=wallabag10 - SYMFONY__ENV__DATABASE_USER=${POSTGRES_USER}11 - SYMFONY__ENV__DATABASE_PASSWORD=${POSTGRES_PASSWORD}12 - SYMFONY__ENV__DOMAIN_NAME=${DOMAIN_NAME}13 - SYMFONY__ENV__SERVER_NAME="Wallabag"14 - SYMFONY__ENV__FOSUSER_REGISTRATION=false15 - SYMFONY__ENV__REDIS_HOST=redis16 volumes: 17 - wallabag_data:/var/www/wallabag/data18 - wallabag_images:/var/www/wallabag/web/assets/images19 ports: 20 - "8080:80"21 depends_on: 22 - postgres23 - redis24 networks: 25 - wallabag-network2627 postgres: 28 image: postgres:16-alpine29 container_name: wallabag-db30 environment: 31 - POSTGRES_USER=${POSTGRES_USER}32 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}33 - POSTGRES_DB=wallabag34 volumes: 35 - postgres_data:/var/lib/postgresql/data36 networks: 37 - wallabag-network3839 redis: 40 image: redis:7-alpine41 container_name: wallabag-redis42 networks: 43 - wallabag-network4445volumes: 46 wallabag_data: 47 wallabag_images: 48 postgres_data: 4950networks: 51 wallabag-network: 52 driver: bridge.env Template
.env
1# Wallabag2POSTGRES_USER=wallabag3POSTGRES_PASSWORD=wallabag_password4DOMAIN_NAME=http://localhost:8080Usage Notes
- 1UI at http://localhost:8080
- 2Default login: wallabag / wallabag
- 3Browser extensions available
- 4Mobile apps for iOS/Android
- 5API for integrations
Individual Services(3 services)
Copy individual services to mix and match with your existing compose files.
wallabag
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
environment:
- SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql
- SYMFONY__ENV__DATABASE_HOST=postgres
- SYMFONY__ENV__DATABASE_PORT=5432
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=${POSTGRES_USER}
- SYMFONY__ENV__DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- SYMFONY__ENV__DOMAIN_NAME=${DOMAIN_NAME}
- SYMFONY__ENV__SERVER_NAME="Wallabag"
- SYMFONY__ENV__FOSUSER_REGISTRATION=false
- SYMFONY__ENV__REDIS_HOST=redis
volumes:
- wallabag_data:/var/www/wallabag/data
- wallabag_images:/var/www/wallabag/web/assets/images
ports:
- "8080:80"
depends_on:
- postgres
- redis
networks:
- wallabag-network
postgres
postgres:
image: postgres:16-alpine
container_name: wallabag-db
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=wallabag
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- wallabag-network
redis
redis:
image: redis:7-alpine
container_name: wallabag-redis
networks:
- wallabag-network
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 wallabag:5 image: wallabag/wallabag:latest6 container_name: wallabag7 environment:8 - SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql9 - SYMFONY__ENV__DATABASE_HOST=postgres10 - SYMFONY__ENV__DATABASE_PORT=543211 - SYMFONY__ENV__DATABASE_NAME=wallabag12 - SYMFONY__ENV__DATABASE_USER=${POSTGRES_USER}13 - SYMFONY__ENV__DATABASE_PASSWORD=${POSTGRES_PASSWORD}14 - SYMFONY__ENV__DOMAIN_NAME=${DOMAIN_NAME}15 - SYMFONY__ENV__SERVER_NAME="Wallabag"16 - SYMFONY__ENV__FOSUSER_REGISTRATION=false17 - SYMFONY__ENV__REDIS_HOST=redis18 volumes:19 - wallabag_data:/var/www/wallabag/data20 - wallabag_images:/var/www/wallabag/web/assets/images21 ports:22 - "8080:80"23 depends_on:24 - postgres25 - redis26 networks:27 - wallabag-network2829 postgres:30 image: postgres:16-alpine31 container_name: wallabag-db32 environment:33 - POSTGRES_USER=${POSTGRES_USER}34 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}35 - POSTGRES_DB=wallabag36 volumes:37 - postgres_data:/var/lib/postgresql/data38 networks:39 - wallabag-network4041 redis:42 image: redis:7-alpine43 container_name: wallabag-redis44 networks:45 - wallabag-network4647volumes:48 wallabag_data:49 wallabag_images:50 postgres_data:5152networks:53 wallabag-network:54 driver: bridge55EOF5657# 2. Create the .env file58cat > .env << 'EOF'59# Wallabag60POSTGRES_USER=wallabag61POSTGRES_PASSWORD=wallabag_password62DOMAIN_NAME=http://localhost:808063EOF6465# 3. Start the services66docker compose up -d6768# 4. View logs69docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/wallabag-readlater/run | bashTroubleshooting
- Database connection failed errors: Verify POSTGRES_USER and POSTGRES_PASSWORD match between wallabag and postgres services
- Articles not saving or extraction failing: Check Redis container health and network connectivity between wallabag and redis services
- Slow article search performance: Increase PostgreSQL shared_buffers and work_mem settings, ensure full-text search indexes are built
- Session timeouts or login issues: Restart Redis container and verify Redis host configuration in Wallabag environment variables
- Import/export operations hanging: Monitor Redis memory usage and increase maxmemory setting if processing large article batches
- 403 Forbidden on article access: Check DOMAIN_NAME environment variable matches your access URL and Wallabag base_url configuration
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
wallabagpostgresredis
Tags
#wallabag#read-later#articles#pocket-alternative#archive
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download