Community-Lösung

Redis sicher mit Docker Compose auf CasaOS installieren

A 2023 CasaOS tutorial introduced Redis installation but did not cover current persistence, authentication, or safe network exposure.

Redis wird derzeit am sichersten auf CasaOS als Docker-Container mit einem dauerhaften Daten-Volume und explizit festgelegter Authentifizierung und Netzwerkfreigabe betrieben. Das Forentutorial von 2023 ist zu alt, um als vollständige Bereitstellungsanleitung zu dienen, da sich die aktuellen Redis-Standards und Sicherheitserwartungen weiterentwickelt haben.

Verwende zunächst das offizielle Redis-Image, halte Port 6379 auf das LAN oder Docker-Netzwerk beschränkt, speichere /data dauerhaft und entscheide, ob du AOF-/RDB-Persistenz benötigst, bevor du Anwendungsdaten darin speicherst.

Das offizielle Redis-Image verwenden

Die aktuelle Redis-Docker-Anleitung dokumentiert das offizielle Image redis:<version> und den Standardport 6379.

Docker Compose auf CasaOS verwenden

services:
  redis:
    image: redis:8
    container_name: redis
    restart: unless-stopped
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "CHANGE_ME"]
    volumes:
      - /DATA/AppData/redis/data:/data
    ports:
      - "127.0.0.1:6379:6379"

Ändere das Passwort und passe die Bind-Adresse nur an, wenn ein anderer Host tatsächlich direkten Zugriff auf Redis benötigt.

/data dauerhaft speichern

Ohne ein Host-Volume befinden sich die Redis-Daten in der flüchtigen Containerebene und können verloren gehen, wenn der Container neu erstellt wird. Binde /data in einen dauerhaften CasaOS-Speicher ein.

Persistenz bewusst auswählen

AOF protokolliert Schreibvorgänge und verbessert die Wiederherstellbarkeit, während RDB-Snapshots ressourcenschonender sind. Deine Anwendung kommt möglicherweise auch mit Redis als flüchtigem Cache zurecht. Stimme den Persistenzmodus darauf ab, wofür Redis eingesetzt wird.

Redis nicht direkt dem Internet aussetzen

Port 6379 sollte nicht öffentlich weitergeleitet werden. Wenn eine andere Anwendung auf demselben Docker-Host läuft, platziere beide Container in einem privaten Docker-Netzwerk und verbinde sie über den Dienstnamen.

Authentifizierung und ACLs verwenden

Ein einzelnes requirepass ist für den Heimgebrauch einfach, während aktuelle Redis-Versionen auch ACLs für differenziertere Benutzer und Befehle unterstützen. Lasse eine aus der Ferne erreichbare Redis-Instanz nicht ohne Authentifizierung.

Mit redis-cli testen

docker exec -it redis redis-cli -a CHANGE_ME ping

Ein gesunder Server sollte PONG zurückgeben.

Persistente Redis-Daten sichern

Wenn Redis wichtige Daten enthält, stoppe Schreibvorgänge oder stimme sie ab und sichere das persistente Volume gemäß der gewählten RDB-/AOF-Methode. Gehe nicht davon aus, dass ein Container-Neustart einer Sicherung entspricht.

Der Docker-Bereitstellungsleitfaden gilt ebenso für benutzerdefinierte CasaOS-Apps.

Speicherlimits vor dem Produktiveinsatz überprüfen

Redis ist eine speicherorientierte Software. Behalte die tatsächliche Datensatzgröße und den Arbeitsspeicher des Hosts im Blick, statt anzunehmen, dass eine geringe Anzahl von Schlüsseln auch wenig Speicherbedarf bedeutet. Bei einem gemeinsam genutzten CasaOS-Host solltest du eine gezielte maxmemory-Richtlinie erst festlegen, wenn du weißt, wie deine Anwendung auf das Entfernen von Daten reagiert.

Ein privates Docker-Netzwerk für App-Abhängigkeiten verwenden

Wenn Redis nur für einen anderen Container wie eine Automatisierungsplattform oder Web-App benötigt wird, platziere beide Dienste im selben privaten Docker-Netzwerk und lasse den Host-Port weg. Die Anwendung kann sich über den Dienstnamen mit redis:6379 verbinden.

Persistenz nach dem Neuerstellen eines Containers überprüfen

Schreibe nach der Ersteinrichtung einen Testschlüssel, erstelle den Container mit demselben Volume neu und bestätige, dass der Schlüssel weiterhin verfügbar ist. Dieser einfache Test zeigt, dass der Host-Pfad tatsächlich persistent ist, bevor eine wichtige Anwendung davon abhängt.

FAQ

Welchen Port verwendet Redis?

Standardmäßig 6379.

Soll ich 6379 an alle Schnittstellen binden?

Nein. Binde den Port nur dort, wo es nötig ist, vorzugsweise an localhost oder an einen privaten Docker-/LAN-Pfad.

Wo sollten Redis-Daten gespeichert werden?

Binde das Verzeichnis /data des Containers an einen persistenten CasaOS-Speicher.

Brauche ich RedisInsight?

Nein. Es ist eine optionale Verwaltungsoberfläche; Redis selbst funktioniert auch ohne sie.