// Tutorial · Docker · Privatsphäre

Redlib: Privates Reddit-Frontend hinter Cloudflare-WARP als Docker-Container

📅 08.09.2026 ⏱ 10 Min. Lesezeit ✍️ Redaktion

Reddit ohne Werbung, Tracking und JavaScript-Ballast lesen – dafür gibt es Redlib. Doch wer Redlib auf einem eigenen Server betreibt, läuft schnell in eine Mauer: Reddit blockiert viele Rechenzentrums-IPs. Die Lösung aus unserem Stack ist ein Cloudflare-WARP-Sidecar, das den kompletten Redlib-Verkehr über die Cloudflare-Infrastruktur herausführt. Diesen Aufbau zeigt dieser Artikel.

Was ist Redlib?

Redlib ist eine private Alternative zur Reddit-Oberfläche und der direkte Nachfolger von Libreddit. Geschrieben in Rust, verzichtet sie konsequent auf JavaScript, Werbung und Tracking. Alle Anfragen – auch Bilder und Videos – laufen über deinen eigenen Server und werden von dort an Reddit weitergeleitet. Dein Browser spricht also nie direkt mit Reddit.

  • Schnell & schlank: Rust statt schwerer Web-Frontends – Redlib lädt spürbar flotter als die Originalseite.
  • Privat: Keine Cookies, keine Tracker, alle Medien werden über die eigene Instanz ausgeliefert.
  • Sicher: Eine strenge Content-Security-Policy verhindert, dass der Browser heimlich Anfragen an Reddit stellt.
  • Komfortabel: Subreddits, Kommentare, Suche, Medien – die meisten Reddit-Funktionen funktionieren ohne Login.

Einzige Hürde: Reddit erkennt Server-IPs aus Rechenzentren und liefert dort häufig 403 Forbidden – genau dafür kommt der WARP-Container ins Spiel.

Das Problem: Reddit blockiert Server-IPs

Reddit bekämpft Scraper und automatisierte Zugriffe, indem es bekannte Rechenzentrums-IP-Adressen sperrt oder mit aggressivem Rate-Limiting belegt. Dein Server bei einem Cloud-Anbieter fällt meist in genau diese Kategorie – die Folge: Redlib zeigt Fehlerseiten, obwohl alles korrekt eingerichtet ist.

Cloudflare WARP löst das elegant: Der Client baut eine verschlüsselte Verbindung zur Cloudflare-Infrastruktur auf und leitet deinen Traffic über deren IP-Adressen nach außen. Für Reddit sieht die Anfrage dann nicht nach Rechenzentrum aus, sondern nach einem normalen Cloudflare-Nutzer – die Sperre greift nicht mehr.

Sidecar-Prinzip: Der WARP-Container wird zum „Netzwerk-Sidecar“: Redlib teilt sich den Netzwerk-Namespace des WARP-Containers und nutzt damit automatisch dessen Routen. Es gibt keine Proxy-Konfiguration, keine Firewall-Ausnahme – alle ausgehenden Verbindungen von Redlib laufen durch WARP.

Installation mit Docker Compose

Wir legen den Stack wie gewohnt unter /opt/stacks/redlib an. Die Compose-Datei besteht aus zwei Diensten: dem WARP-Sidecar und dem eigentlichen Redlib-Dienst, der per network_mode: service:cloudflare in dessen Netzwerk-Namespace einzieht:

services:
  cloudflare:
    cap_add:
      - NET_ADMIN
    image: caomingjun/warp
    ports:
      - 127.0.0.1:50536:8080
    restart: unless-stopped
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
    volumes:
      - cloudflare:/var/lib/cloudflare-warp
  service:
    image: quay.io/redlib/redlib
    network_mode: service:cloudflare
    restart: unless-stopped
volumes:
  cloudflare:
networks:
  redlib: null

Die einzelnen Bausteine erklärt:

  • cloudflare (WARP-Client): Benötigt NET_ADMIN, um das WARP-Tunnel-Interface anzulegen. Das Sysctl src_valid_mark=1 ist für das Routing mit WireGuard/Fwmark zwingend; IPv6 bleibt aktiviert.
  • Volume cloudflare: Speichert die WARP-Registrierung unter /var/lib/cloudflare-warp. Ohne dieses Volume verliert der Container bei jedem Neustart seine Identität und muss sich neu registrieren.
  • Port 127.0.0.1:50536:8080: Der veröffentlichte Port gehört dem geteilten Netzwerk-Namespace – dort lauscht Redlib auf seinem Standard-Port 8080. Nach außen ist wieder nur 127.0.0.1 sichtbar.
  • network_mode: service:cloudflare: Redlib teilt sich den Namespace des WARP-Containers. Dadurch läuft der komplette Reddit-Verkehr über das WARP-Tunnel – ohne Proxy-Umgebungsvariablen.
  • networks: redlib: Ist in dieser Datei ein Überbleibsel – kein Dienst nutzt dieses Netzwerk, der Block kann ersatzlos entfallen.
cd /opt/stacks/redlib
docker compose up -d
docker compose ps

Der WARP-Client braucht beim ersten Start 10–30 Sekunden, bis die Verbindung steht. Das ist normal und dank restart: unless-stopped unkritisch. Erst wenn beide Container laufen, testen wir:

# Web-UI erreichbar?
curl -I http://127.0.0.1:50536/
# HTTP/1.1 200 OK

# Läuft der WARP-Tunnel? (Logs zeigen den Verbindungsstatus)
docker compose logs cloudflare | grep -i -E "connectivity|success"
Reihenfolge beachten: docker compose up -d startet beide Dienste parallel – Redlib kann kurz „keine Verbindung“ melden, solange WARP noch nicht verbunden ist. Ein docker compose restart service nach dem ersten erfolgreichen WARP-Connect behebt das, falls nötig.

Reverse Proxy: Redlib nach außen bringen

Wie bei allen Diensten aus der Serie bleibt Redlib auf 127.0.0.1 und wird ausschließlich über den Reverse Proxy mit TLS ausgeliefert. Der Nginx-Serverblock (Muster aus dem nginx/acme.sh-Artikel):

server {
    listen 80;
    server_name rd.example.org;

    location / {
        proxy_pass http://127.0.0.1:50536;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Danach die Konfiguration prüfen und sanft neu laden:

sudo nginx -t
sudo systemctl reload nginx

Unter https://rd.example.org erreichst du jetzt deine private Reddit-Oberfläche – ohne Werbung, ohne Tracking, ohne JavaScript.

Konfiguration: Startseite & Standardwerte

Redlib bringt viele Einstellungen mit – vom Theme über das Layout bis zur Sortierung. Jeder Besucher kann sie im Menü der Instanz ändern (die Werte landen im Browser-Speicher). Wer will, legt Server-weite Standardwerte über Umgebungsvariablen fest. Die wichtigsten Beispiele:

services:
  service:
    image: quay.io/redlib/redlib
    network_mode: service:cloudflare
    restart: unless-stopped
    environment:
      # Startseite: popular statt home
      - REDLIB_DEFAULT_FRONT_PAGE=popular
      # Theme & Layout für alle Besucher vorbelegen
      - REDLIB_DEFAULT_THEME=dark
      - REDLIB_DEFAULT_LAYOUT=card
      # Sortierung der Beiträge
      - REDLIB_DEFAULT_POST_SORT=hot

Die Variablen heißen durchgehend REDLIB_DEFAULT_… – eine vollständige Liste aller Optionen findest du im Abschnitt „Configuration“ der Redlib-Dokumentation. Die Einstellungen pro Benutzer haben dabei immer Vorrang vor den Server-Standardwerten.

Eigene Domain als Startpunkt: Viele Redlib-Instanzen setzen LibRedirect (Browser-Erweiterung) ein, damit Reddit-Links automatisch auf die eigene Instanz umgeleitet werden – ein schöner Abschluss für den privaten Setup.

Betrieb, Updates & Backups

Updates

Redlib und der WARP-Client erscheinen regelmäßig mit Updates. Der Weg ist der übliche aus der Serie:

cd /opt/stacks/redlib
docker compose pull
docker compose up -d
docker image prune -f

Wer automatische Updates bevorzugt, nimmt Watchtower aus Teil 5 hinzu.

Backup mit Borg (aus Teil 4)

Redlib selbst hält keinen Zustand – es gibt keinen Datenbankordner, der gesichert werden muss. Relevant sind nur die Compose-Datei und (optional) die WARP-Registrierung im Volume. Für den Stack-Ordner gilt das bewährte, ausfallsichere Backup-Muster:

#!/bin/sh
cd /opt/stacks/redlib || exit 1

# Dienste anhalten – Container & Netzwerke bleiben erhalten
docker compose stop

# Notbremse: Egal ob das Backup klappt oder nicht – Redlib startet wieder.
trap 'docker compose start' EXIT

# Borg-Archiv mit dynamischem Datum
borg create --stats /mnt/backup/borg-repo::redlib-$(date +%Y-%m-%d) /opt/stacks/redlib
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6

Beim Wiederherstellen nach einem Totalausfall ist der Ablauf simpel: Stack-Ordner zurückspielen, docker compose up -d, fertig. Die WARP-Registrierung wird beim ersten Start automatisch neu erzeugt.

Häufige Probleme

ProblemLösung
Web-UI nicht erreichbarBeide Container prüfen: docker compose ps. Der veröffentlichte Port gehört zum geteilten Namespace – Redlib muss laufen, sonst antwortet nichts auf 127.0.0.1:50536.
Reddit liefert trotzdem 403WARP-Status in den Logs prüfen (docker compose logs cloudflare). Häufigste Ursache: WARP war beim Redlib-Start noch nicht verbunden – danach docker compose restart service.
Nach Reboot keine Verbindung zu RedditWARP muss sich nach einem Neustart neu verbinden. restart: unless-stopped startet beide Container – Redlib kurz danach neu starten, sobald WARP verbunden ist.
WARP registriert sich bei jedem Start neuDas Volume cloudflare:/var/lib/cloudflare-warp fehlt oder wurde gelöscht – so bleibt die Registrierung über Neustarts erhalten.
Port 50536 ist bereits belegtHost-Port in der Compose-Datei ändern und die Zuordnung in der Dockerliste notieren – der Reverse Proxy muss dann auf den neuen Port zeigen.
Seite lädt nach Update nicht mehrBeide Images aktualisiert? docker compose pull zieht nur geänderte Images – danach docker compose up -d und ggf. den WARP-Container neu starten.

Fazit

Redlib ist der Inbegriff eines guten Selbsthosting-Projekts: klein, schnell und mit klarem Nutzen für die Privatsphäre. Die eigentliche Kunst steckt im Detail – Reddit blockt Server-IPs, und genau dafür ist das WARP-Sidecar da. Das Zusammenspiel aus geteiltem Netzwerk-Namespace, lokaler Portbindung und Reverse Proxy folgt exakt den Mustern, die sich durch unsere ganze Serie ziehen.

Die 4 Merksätze: ① Redlib = Reddit ohne Werbung, Tracking & JavaScript – selbst gehostet ② Server-IPs blockt Reddit: WARP-Sidecar als Ausweg ③ network_mode: service:cloudflare – Redlib fährt im Netzwerk des WARP-Containers mit ④ Kein eigener Zustand: Backups sichern nur den Stack-Ordner
📝
HuuuHosting-Redaktion

Wir betreiben unsere komplette Infrastruktur selbst auf Open-Source-Software und schreiben nur über Tools, die wir im Alltag wirklich einsetzen. Fragen zum Artikel? Schreib uns.