Oplossing van de community

Redis veilig installeren op CasaOS met Docker Compose

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

De veiligste actuele manier om Redis op CasaOS uit te voeren is als Docker-container met een persistent gegevensvolume en expliciete instellingen voor verificatie en netwerkblootstelling. De forumhandleiding uit 2023 is te verouderd om als volledige implementatiehandleiding te gebruiken, omdat de standaardinstellingen en beveiligingsvereisten van Redis sindsdien zijn veranderd.

Begin met de officiële Redis-image, houd poort 6379 privé voor het LAN of het Dockernetwerk, maak /data persistent en bepaal of je AOF/RDB-persistentie nodig hebt voordat je er toepassingsgegevens in opslaat.

Gebruik de officiële Redis-image

De actuele Redis Docker-handleiding beschrijft de officiële image redis:<version> en de standaardpoort 6379.

Gebruik Docker Compose op CasaOS

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"

Wijzig het wachtwoord en pas het bindadres alleen aan als een andere host echt rechtstreeks toegang tot Redis nodig heeft.

Maak /data persistent

Zonder een volume op de host staan Redis-gegevens in de tijdelijke containerlaag en kunnen ze verdwijnen wanneer de container opnieuw wordt aangemaakt. Koppel /data aan duurzame CasaOS-opslag.

Kies bewust een persistentiemodus

AOF legt schrijfbewerkingen vast en verbetert de herstelbaarheid, terwijl RDB-snapshots minder resources vergen. Je toepassing kan Redis ook als tijdelijke cache gebruiken. Stem de persistentiemodus af op de functie van Redis.

Stel Redis niet rechtstreeks bloot aan het internet

Poort 6379 mag niet openbaar worden doorgestuurd. Als er nog een toepassing op dezelfde Docker-host draait, plaats dan beide containers op een privé-Dockernetwerk en maak verbinding via de servicenaam.

Gebruik verificatie en ACL's

Eén requirepass is eenvoudig voor thuisgebruik, terwijl de huidige versie van Redis ook ACL's ondersteunt voor gebruikers en opdrachten met fijnmazigere toegangsrechten. Laat een Redis-instantie die extern bereikbaar is niet onbeveiligd en zonder authenticatie.

Test met redis-cli

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

Een gezonde server geeft PONG terug.

Maak een back-up van persistente Redis-gegevens

Als Redis belangrijke gegevens bevat, stop dan met schrijven of stem dit af, en maak een back-up van het persistente volume volgens de door jou gekozen RDB-/AOF-methode. Ga er niet van uit dat het opnieuw opstarten van een container hetzelfde is als een back-up.

De Docker-implementatiegids geldt ook voor aangepaste CasaOS-apps.

Controleer geheugenlimieten voordat je Redis in productie gebruikt

Redis is software die voornamelijk in het geheugen werkt. Houd de werkelijke datasetgrootte en het RAM-geheugen van de host in de gaten, in plaats van aan te nemen dat een klein aantal keys weinig geheugen gebruikt. Overweeg op een gedeelde CasaOS-host pas een weloverwogen maxmemory-beleid nadat je weet hoe je toepassing reageert op het verwijderen van gegevens.

Gebruik een privé Docker-netwerk voor afhankelijkheden van apps

Als Redis alleen nodig is voor een andere container, zoals een automatiseringsplatform of webapp, plaats je beide services op hetzelfde privé Docker-netwerk en laat je de hostpoort weg. De toepassing kan verbinding maken met redis:6379 via de servicenaam.

Controleer de persistentie nadat je een container opnieuw hebt aangemaakt

Schrijf na de eerste configuratie een testkey, maak de container opnieuw aan met hetzelfde volume en controleer of de key nog beschikbaar is. Met deze eenvoudige test weet je zeker dat het hostpad daadwerkelijk persistent is voordat een belangrijke toepassing ervan afhankelijk wordt.

Veelgestelde vragen

Welke poort gebruikt Redis?

Standaard 6379.

Moet ik poort 6379 aan alle interfaces koppelen?

Nee. Koppel alleen waar nodig, bij voorkeur aan localhost of een privé Docker-/LAN-pad.

Waar moeten de Redis-gegevens worden opgeslagen?

Koppel de map /data van de container aan persistente CasaOS-opslag.

Heb ik RedisInsight nodig?

Nee. Het is een optionele beheerinterface; Redis zelf werkt ook zonder.