RedMemo — a self-hosted Reddit front-end (Redlib’s UI, Go back end) that archives what it serves, so it keeps working when Reddit doesn’t.
Repo (Go + Postgres, AGPL-3.0): github.com/Meeks233/Redmemo
Live demo (/settings is TOTP-gated, treat as read-only): redmemo.meekslab.cc
If you’ve self-hosted Redlib, you know the feeling: works fine for weeks, then one morning every page is a 429 or a blank 403 and you go hunting for an instance that isn’t dead yet. That’s not bad luck — it’s the ending baked in since Reddit’s 2023 API changes.
Why Redlib is on borrowed time. When Reddit started charging for the API and forcing OAuth, the free path narrowed to a trickle. Front-ends like Redlib survived by not playing along: instead of an API key, an instance impersonates the OAuth flow of Reddit’s own official app. Clever, and it bought the ecosystem two years — but Reddit has spent those years tightening the screws: fingerprinting that handshake, rate-limiting by IP, blocking the ranges where instances cluster. Every push takes another wave of public instances dark.
And here’s the dangerous part: Redlib remembers nothing. It’s a pure proxy — a page passes through and is gone. So when your instance gets blocked, or a mod nukes a thread, or an account deletes ten years of comments, there’s no copy. The thing meant to free you from Reddit still depends on Reddit being reachable and willing, every single time.
RedMemo keeps the Redlib experience but puts a real archive underneath. Same UI, routes, themes and settings cookies; Go back end with Postgres as the system of record. Yes, it still does the stealthy upstream fetch (TLS-fingerprint-spoofing transport) — but that’s table stakes. The parts that matter:
Layered failover, not just a cache TTL. Each request walks a ladder, first rung that answers wins: Redis HTML cache → Reddit API (OAuth quota + outbound rate-limit gate) → Postgres archive → fallback page. When upstream is throttled, you don’t get a 5xx — you get the page from the archive with a small “viewing archived content” banner. Media is content-addressed and deduped by SHA-256 (one image shared across 100 posts is stored once), and nginx streams it straight off disk. A passive prefetcher tops the archive up on a token budget so it never hammers Reddit.
An auth model for an instance you might actually expose. Redlib’s answer to “who can change my settings” is “whoever reaches the URL.” RedMemo gates /settings and /debug behind two factors: a server secret that only unlocks enrolment, then a TOTP shown as a QR exactly once. Sessions are IP-bound HttpOnly cookies; “trust this device” is a separate 30-day cookie capped at 3 devices; 3 wrong codes locks the IP, a burst across IPs trips a global backstop. Browsing the archive stays fully public — only state-changing levers are locked.
Media intel for links inside posts. Bare external links get unfurled into Telegram-style cards — site name, title, description, real thumbnail or inline video — fetched lazily as you scroll (so no host rate-limits you for bursting). It sizes the card from the media’s actual pixel dimensions, so a portrait screenshot renders as a tall card instead of a crushed thumbnail and a tweet’s video plays inline. SSRF-guarded, metadata cached once across all viewers.
Two deployments, two sane defaults. It ships two docker-compose profiles that flip the upstream policy to match where you’re running:
- Public (internet-facing, behind the TOTP gate): on-demand upstream calls are disabled by default. A public instance usually lives on a cloud IP, which is exactly the kind of address Reddit rate-limits and blocks — so it serves every page straight from the local archive and never burns its quota on a stranger’s click. The passive prefetcher still tops the archive up through the paced OAuth session (the stealthier path that cloud IPs can still pull tokens on), so the archive keeps growing without painting a target on the instance.
- Homelab (LAN-only, no auth gate): on-demand upstream is on. Point it at your residential line and it fetches first-touch posts and missing media live — the ideal setup for a data hoarder who wants a personal pack-rat box quietly squirreling away everything they read before it vanishes.
It’s a derivative of Redlib/Libreddit, AGPL-3.0, not affiliated with Reddit. I built it because I wanted my own copy of things before they disappear behind Reddit’s walls — if you’ve watched your Redlib instance die and come back and die again, I’d like to hear how this holds up for you.
lostepisodesfoundagain@kbin.earth
Redjard@reddthat.com
Did you, though?
I hate that this is a necessary question now.