Skip to content

Deploying Wallabag

Introduction

Wallabag is a self-hosted read-it-later application that saves web articles for offline reading. Similar to Pocket or Instapaper but fully open-source and privacy-respecting, Wallabag extracts article content, removes clutter, and provides a clean reading experience across all your devices.

Key highlights of Wallabag:

  • Article Extraction: Automatically extracts readable content from web pages
  • Offline Reading: Save articles for reading without internet connection
  • Browser Extensions: One-click saving from Chrome, Firefox, and other browsers
  • Mobile Apps: Native Android and iOS apps for on-the-go reading
  • Tagging: Organize articles with custom tags
  • Annotations: Highlight text and add notes to articles
  • Export Options: Export to EPUB, PDF, or plain text
  • RSS Feeds: Generate feeds of your reading list
  • Full-Text Search: Search across all saved articles
  • Multi-User: Support for multiple users on one instance
  • API: REST API for third-party integrations

This guide walks through deploying Wallabag on Klutch.sh using Docker, configuring the application, and setting up your personal reading list.

Why Deploy Wallabag on Klutch.sh

Deploying Wallabag on Klutch.sh provides several advantages for read-it-later functionality:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Wallabag without complex orchestration. Push to GitHub, and your reading list deploys automatically.

Persistent Storage: Attach persistent volumes for your database and article cache. Your reading list survives container restarts.

HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure access and browser extension compatibility.

GitHub Integration: Connect your configuration repository directly from GitHub. Updates trigger automatic redeployments.

Always Available: Access your reading list from any device, anywhere.

Prerequisites

Before deploying Wallabag on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your configuration
  • Basic familiarity with Docker and containerization concepts
  • A PostgreSQL or MySQL database (recommended for production)

Preparing Your Repository

Create a GitHub repository containing your Dockerfile for Wallabag deployment.

Repository Structure

wallabag-deploy/
├── Dockerfile
└── .dockerignore

Creating the Dockerfile

FROM wallabag/wallabag:latest
# Set environment variables
ENV SYMFONY__ENV__DATABASE_DRIVER=${DATABASE_DRIVER:-pdo_pgsql}
ENV SYMFONY__ENV__DATABASE_HOST=${DATABASE_HOST}
ENV SYMFONY__ENV__DATABASE_PORT=${DATABASE_PORT:-5432}
ENV SYMFONY__ENV__DATABASE_NAME=${DATABASE_NAME:-wallabag}
ENV SYMFONY__ENV__DATABASE_USER=${DATABASE_USER}
ENV SYMFONY__ENV__DATABASE_PASSWORD=${DATABASE_PASSWORD}
ENV SYMFONY__ENV__DATABASE_CHARSET=utf8
ENV SYMFONY__ENV__DOMAIN_NAME=${DOMAIN_NAME}
ENV SYMFONY__ENV__SERVER_NAME=${SERVER_NAME:-"Wallabag"}
ENV SYMFONY__ENV__MAILER_DSN=${MAILER_DSN:-null://null}
ENV SYMFONY__ENV__FROM_EMAIL=${FROM_EMAIL:-wallabag@example.com}
ENV SYMFONY__ENV__SECRET=${SECRET}
# Create data directories
RUN mkdir -p /var/www/wallabag/data/db /var/www/wallabag/data/assets
# Expose the web interface port
EXPOSE 80
# Volumes for persistent data
VOLUME ["/var/www/wallabag/data", "/var/www/wallabag/var"]

Environment Variables Reference

VariableRequiredDefaultDescription
DATABASE_DRIVERNopdo_pgsqlDatabase driver (pdo_pgsql, pdo_mysql, pdo_sqlite)
DATABASE_HOSTYes-Database hostname
DATABASE_PORTNo5432Database port
DATABASE_NAMENowallabagDatabase name
DATABASE_USERYes-Database username
DATABASE_PASSWORDYes-Database password
DOMAIN_NAMEYes-Full URL of your Wallabag instance
SECRETYes-Symfony secret for CSRF protection
FROM_EMAILNowallabag@example.comEmail sender address

Deploying Wallabag on Klutch.sh

    Set Up PostgreSQL Database

    Deploy a PostgreSQL instance on Klutch.sh or use an external database service. Create a database for Wallabag.

    Generate a Secret

    Generate a secure secret for Symfony:

    Terminal window
    openssl rand -hex 32

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub with your Dockerfile.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “wallabag” or “reading-list”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Wallabag Dockerfile.

    Configure HTTP Traffic

    In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 80

    Set Environment Variables

    Add the following environment variables:

    VariableValue
    DATABASE_HOSTYour PostgreSQL hostname
    DATABASE_NAMEwallabag
    DATABASE_USERYour database username
    DATABASE_PASSWORDYour database password
    DOMAIN_NAMEhttps://your-app-name.klutch.sh
    SECRETYour generated secret

    Attach Persistent Volumes

    Add the following volumes:

    Mount PathRecommended SizePurpose
    /var/www/wallabag/data10 GBArticle cache and assets
    /var/www/wallabag/var2 GBLogs and cache

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will build the container, attach volumes, and provision an HTTPS certificate.

    Access Wallabag

    Once deployment completes, access your Wallabag instance at https://your-app-name.klutch.sh. Default credentials are:

    • Username: wallabag
    • Password: wallabag

    Change the default password immediately after first login.

Saving Articles

Browser Extensions

Install browser extensions for one-click saving:

Configure extensions with your Wallabag URL and API credentials.

Bookmarklet

Add the bookmarklet from Settings > Import for browsers without extensions.

Email Import

Configure email-to-article import:

  1. Navigate to Settings > Import
  2. Set up the email import address
  3. Forward newsletters and articles to your Wallabag email

RSS Feeds

Import articles from RSS feeds:

  1. Go to Settings > Import
  2. Enter RSS feed URLs
  3. Articles are automatically saved

Reading Experience

Interface Customization

Adjust the reading experience:

  • Theme: Choose light or dark mode
  • Font: Select your preferred reading font
  • Size: Adjust text size for comfort
  • Width: Set the maximum content width

Article Management

Organize your reading list:

  • Archive: Mark articles as read
  • Favorites: Star important articles
  • Tags: Categorize with custom tags
  • Filters: View by status, tag, or reading time

Annotations

Highlight and annotate:

  1. Select text in an article
  2. Choose highlight color
  3. Add notes to selections
  4. Export annotations with the article

Mobile Apps

Android

Download from Google Play or F-Droid.

iOS

Download from the App Store.

Configuration

  1. Open the app
  2. Enter your Wallabag URL
  3. Log in with your credentials
  4. Enable offline sync for articles

Exporting Content

Single Article Export

  1. Open an article
  2. Click the export button
  3. Choose format: EPUB, PDF, or text

Bulk Export

  1. Navigate to Settings > Export
  2. Select export format
  3. Download your entire archive

Multi-User Setup

Creating Users

  1. Go to Settings > Users
  2. Click Create a new user
  3. Enter username, email, and password
  4. Set user role (admin or regular user)

User Permissions

  • Admin: Full access to all settings
  • User: Can only manage their own articles

Troubleshooting

Articles Not Extracting Properly

  • Some sites block content extraction
  • Try using the browser extension instead of URL import
  • Report problematic sites to the Wallabag community

Login Issues

  • Check database connectivity
  • Verify SECRET hasn’t changed
  • Clear browser cookies

Images Not Loading

  • Check DOMAIN_NAME is set correctly
  • Verify assets volume is mounted
  • Clear the application cache

Slow Performance

  • Ensure database indexes are optimized
  • Increase PHP memory limit
  • Consider using Redis for caching

Additional Resources

Conclusion

Deploying Wallabag on Klutch.sh gives you a powerful, privacy-respecting read-it-later service with full control over your data. The combination of Wallabag’s rich feature set and Klutch.sh’s deployment simplicity means you can quickly build your personal reading archive, accessible from any device without relying on third-party services.