# Wallabag

Read-it-later app that saves web articles for reading later.

- Replaces: [Pocket](https://openlogs.fyi/alternatives/pocket)
- Summary: Paid read-later services, such as Pocket.
- Stack: PHP (language), MariaDB (database), Redis (database)
- Deployment: docker_compose
- License: MIT (osi) [source](https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/COPYING.md)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/README.md), read 2026-10-22)
- Difficulty: medium. 3 services (2 database or broker: mariadb, redis), 2 volume mounts, no env values to set, no elevated host access. Heuristic score 4 of 11: medium.
- Requirements: not stated
- Repository: [wallabag/wallabag](https://github.com/wallabag/wallabag)

## Install

1. Docker with the Compose plugin ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md#L111-L155))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the code block as docker-compose.yml ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md))

   ```yaml
   services:
     wallabag:
       image: wallabag/wallabag
       restart: unless-stopped
       environment:
         - MYSQL_ROOT_PASSWORD=wallaroot
         - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
         - SYMFONY__ENV__DATABASE_HOST=db
         - SYMFONY__ENV__DATABASE_PORT=3306
         - SYMFONY__ENV__DATABASE_NAME=wallabag
         - SYMFONY__ENV__DATABASE_USER=wallabag
         - SYMFONY__ENV__DATABASE_PASSWORD=wallapass
         - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
         - SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_"
         - SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1
         - SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
         - SYMFONY__ENV__DOMAIN_NAME=https://your-wallabag-instance.wallabag.org
         - SYMFONY__ENV__SERVER_NAME="Your wallabag instance"
       ports:
         - "80"
       volumes:
         - /opt/wallabag/images:/var/www/wallabag/web/assets/images
       depends_on:
         - db
         - redis
     db:
       image: mariadb
       restart: unless-stopped
       environment:
         - MYSQL_ROOT_PASSWORD=wallaroot
       volumes:
         - /opt/wallabag/data:/var/lib/mysql
       healthcheck:
         test: ["CMD", "/usr/local/bin/healthcheck.sh", "--innodb_initialized"]
         interval: 20s
         timeout: 3s
     redis:
       image: redis:alpine
       restart: unless-stopped    
       healthcheck:
         test: ["CMD", "redis-cli", "ping"]
         interval: 20s
         timeout: 3s
   ```

3. What the compose file check ran with ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md#L111-L155))

   ```text
   This compose file is copied unchanged from the code block in https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md#L111-L155. The check ran on that block alone. The README of the project's docker repository shows this docker-compose example and says the mail settings must be filled in.
   ```

4. Start it ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md))

   ```bash
   docker compose up -d
   ```

5. Open the app ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md))

   ```text
   Run docker compose port wallabag 80 to see the host port that Docker chose, then open that port in a browser. The compose file publishes container port 80 for the wallabag service without a host port.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- Some images use the latest tag or no tag: Images without a pinned version: wallabag: wallabag/wallabag (no tag), db: mariadb (no tag). A later pull can get a different version. ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md), checked 2026-10-22)
- The compose file mounts host folders: Host paths mounted into containers: /opt/wallabag/images at /var/www/wallabag/web/assets/images (wallabag), /opt/wallabag/data at /var/lib/mysql (db). ([source](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 770
- Stars: 13020, forks: 903
- Last push: 2026-10-22 (0 days ago)
- Latest release: 2.6.14 on 2025-10-07 (380 days ago)

## Sources

- [Repository: https://github.com/wallabag/wallabag](https://github.com/wallabag/wallabag)
- [License: https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/COPYING.md](https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/COPYING.md)
- [Business model: https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/README.md](https://github.com/wallabag/wallabag/blob/72bdffa41fd6b73a547e140206cf702e7bd29f8f/README.md)
- [Compose file: https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md)
- [Install step: https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md#L111-L155](https://github.com/wallabag/docker/blob/dd7191fa6d1837df00518d3a3a422dc353af1f34/README.md#L111-L155)

---
Canonical: https://openlogs.fyi/tools/wallabag  
Last updated: 2026-10-22
