You open a tab at lunch, swear you'll read it tonight, and three weeks later it's buried under seventeen Slack notifications. Pocket used to catch those articles. Mozilla shut it down. Instapaper still exists, but your queue lives on someone else's servers again, behind another login you'll forget to export from.
wallabag (yes, all lowercase, the project is adamant about that) has been the open-source answer since 2013. ~13k GitHub stars, MIT license, and a simple pitch: save a page, strip the junk, read it later on your phone or laptop. No AI hype required. Just articles, tags, and a reading view that actually loads when the original site goes paywalled or offline.
What it actually does
wallabag is a read-it-later web app you install on your own server. Hit save from the browser extension (wallabagger), Android or iOS app, or paste a URL in the UI. The backend pulls the article text with Graby and site-specific rules from the fivefilters ecosystem, so you get a clean reader page instead of autoplay video and newsletter pop-ups.
Organize like you mean it. Star favorites, archive finished pieces, tag by topic, filter unread vs read. Full-text search across saved articles. Export to EPUB for offline reading or push to a Kindle if you still do the e-ink thing.
Imports that matter right now. Pocket, Pinboard, Chrome bookmarks, and other services have migration paths documented on doc.wallabag.org. If your Pocket export is sitting in Downloads, wallabag is built to absorb it.
API and apps. Official Android and iOS clients talk to your instance. RSS feeds for unread lists. REST API for scripts and third-party tools. Two-factor auth for the web UI. The ecosystem wiki lists dozens of community integrations if you want automation beyond "click save."
Stack: PHP (Symfony), MySQL/MariaDB, PostgreSQL, or SQLite. Content extraction is the special sauce; the app itself is a classic LAMP-style deploy if you want it on shared hosting, or the official wallabag/wallabag Docker image if you prefer containers.
wallabag vs Karakeep vs Linkwarden
We've written up Karakeep and Linkwarden already. All three replace SaaS read-it-later tools. They split on weight and priorities:
- wallabag — battle-tested reader, strong Pocket lineage, PHP/Symfony, lighter footprint than a Next.js + Meilisearch stack. Best when you want "save and read" without running Puppeteer workers or optional LLM tagging.
- Karakeep — modern hoarding UX, AI tags, Meilisearch, heavy archival options. Best when you're migrating from Pocket and want the flashiest self-hosted timeline.
- Linkwarden — collaborative collections plus PDF/screenshot preservation. Best when teams share curated libraries and link rot is the enemy.
If your bar is "I need a dependable reader on a modest VPS, and I've been burned by cloud shutdowns," wallabag is the boring-in-a-good-way pick. It's been around long enough that the Android app, docs, and Docker image aren't science projects.
Why self-host?
Your reading list is personal. Saved articles expose what you're learning, worried about, or researching for work. Hosting on a Canadian VPS keeps that metadata off a US read-it-later vendor's analytics pile.
Pocket proved the model breaks. Free tiers vanish, products get acquired, exports become your problem. MIT-licensed code plus your own database means the queue still loads even if wallabag.it's hosted offering changes.
Match your hosting skills. Not everyone wants to babysit Node builds. wallabag runs fine on cPanel-style PHP hosting with a downloaded package, or on Docker if that's your standard. Same app, two deployment cultures.
What running it takes
Docker is the fastest path on a VPS:
docker run \
-v wallabag-data:/var/www/wallabag/data \
-v wallabag-images:/var/www/wallabag/web/assets/images \
-p 8080:80 \
-e "SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com" \
wallabag/wallabag
Default login is wallabag:wallabag — change that before you expose the port. Set SYMFONY__ENV__DOMAIN_NAME to your real HTTPS URL behind nginx or Apache. SQLite inside the container is fine for a personal queue; busier installs should point environment variables at MySQL or PostgreSQL per the admin docs.
On a dedicated server you can also git clone and make install, then point a vhost at the web/ directory. Plan 1 GB RAM for Docker, a bit of disk for cached images, and backups on the data volume. Article fetches spike CPU briefly; day-to-day idle is modest.
Who it's for (and who should skip it)
Good fit: Pocket refugees who want a proven reader, PHP-friendly hosts, minimalists who don't need AI tagging, anyone syncing phone + desktop through official apps, teams okay with personal instances rather than shared collections.
Maybe skip it: you need team bookmark permissions and PDF archives (look at Linkwarden), you want AI summaries on every save (Karakeep), or you're archiving the whole web for compliance (ArchiveBox territory).
Hosting it in Canada
wallabag fits a small Canadian VPS or managed PHP account with TLS and nightly backups on the database. We host Symfony and Docker workloads in Alberta and can size storage before you import a five-year Pocket dump.
Tell us how you save articles (solo vs family, Docker vs cPanel) and we'll point you at the boring reliable setup — the kind that still works when the next read-it-later SaaS sends a goodbye email.