wallabag logo

wallabag

Self-hostable app for saving web pages to read later, with clean content extraction

Alternative to: pocket, instapaper

wallabag screenshot

wallabag is a web application that lets you save web pages for later reading: click, save, and read whenever you want. It extracts the article content so you won't be distracted by ads, pop-ups, or clutter, and offers tagging, full-text search, annotations, and browser/mobile clients to send pages straight from wherever you read.

wallabag Docker Compose example

Self-host wallabag on your own server, homelab, or VPS starting from this Docker Compose example. It runs wallabag in Docker containers using the official wallabag/wallabag:latest, mariadb:lts, redis:alpine images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  wallabag:
    image: wallabag/wallabag:latest
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy
    volumes:
      - images:/var/www/wallabag/web/assets/images
    restart: unless-stopped
    environment:
      # Root password of the bundled MariaDB; used on first run to create the wallabag database and user.
      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_"
      # Public URL where your wallabag instance is reachable. Used to build links in the UI and emails.
      SYMFONY__ENV__DOMAIN_NAME: "http://localhost"
      # Application secret used to sign sessions and tokens. Change this to a long, random value.
      SYMFONY__ENV__SECRET: "ovmpmAWXRCabNlMgzlzFXDYmCFfzGv"
      # Friendly name shown as the two-factor / instance issuer.
      SYMFONY__ENV__SERVER_NAME: "Your wallabag instance"
      # Interface language (e.g. en, fr, de).
      SYMFONY__ENV__LOCALE: "en"
      # DSN of the SMTP server used to send emails, e.g. smtp://user:pass@host:port.
      SYMFONY__ENV__MAILER_DSN: "smtp://127.0.0.1"
      # From-address used for outgoing emails.
      SYMFONY__ENV__FROM_EMAIL: "wallabag@example.com"
      # Set to true to allow public self-registration of new users.
      SYMFONY__ENV__FOSUSER_REGISTRATION: "false"

  db:
    image: mariadb:lts
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "wallaroot"
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "/usr/local/bin/healthcheck.sh", "--innodb_initialized"]
      interval: 20s
      timeout: 3s
      retries: 5

  redis:
    image: redis:alpine
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 20s
      timeout: 3s
      retries: 5

volumes:
  images:
  db_data:

Prefer a managed setup? WinterFlow installs, configures, and updates wallabag for you using this same Docker Compose configuration.