Soluzione della community

Installa Redis su CasaOS in modo sicuro con Docker Compose

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

Il modo più sicuro e aggiornato per eseguire Redis su CasaOS è usare un container Docker con un volume dati persistente e configurare esplicitamente l'autenticazione e l'esposizione di rete. Il tutorial del forum del 2023 è troppo datato per essere usato come guida completa alla distribuzione, perché nel frattempo sono cambiati i valori predefiniti di Redis e le aspettative in materia di sicurezza.

Inizia con l'immagine ufficiale di Redis, mantieni la porta 6379 privata alla LAN o alla rete Docker, rendi persistente /data e decidi se ti serve la persistenza AOF/RDB prima di inserirvi dati applicativi.

Usa l'immagine ufficiale di Redis

La guida attuale a Redis Docker documenta l'immagine ufficiale redis:<version> e la porta standard 6379.

Usa Docker Compose su CasaOS

servizi:
  redis:
    immagine: redis:8
    nome_container: redis
    riavvio: unless-stopped
    comando: ["redis-server", "--appendonly", "yes", "--requirepass", "CHANGE_ME"]
    volumi:
      - /DATA/AppData/redis/data:/data
    porte:
      - "127.0.0.1:6379:6379"

Cambia la password e modifica l'indirizzo di bind solo se un altro host ha davvero bisogno di accedere direttamente a Redis.

Rendi persistente /data

Senza un volume sull'host, i dati di Redis risiedono nel livello effimero del container e possono andare persi quando il container viene ricreato. Associa /data a uno spazio di archiviazione persistente di CasaOS.

Scegli con attenzione la persistenza

AOF registra le scritture e migliora la possibilità di recupero, mentre gli snapshot RDB sono più leggeri. La tua applicazione potrebbe anche tollerare Redis come cache effimera. Scegli la modalità di persistenza in base al ruolo di Redis.

Non esporre Redis direttamente a Internet

La porta 6379 non dovrebbe essere inoltrata pubblicamente. Se un'altra applicazione è in esecuzione sullo stesso host Docker, inserisci entrambi i container in una rete Docker privata e collegati tramite il nome del servizio.

Usa l'autenticazione e gli ACL

Un singolo requirepass è una soluzione semplice per l'uso domestico, mentre le versioni attuali di Redis supportano anche gli ACL per gestire in modo più granulare utenti e comandi. Non lasciare un'istanza Redis raggiungibile da remoto senza autenticazione.

Esegui un test da redis-cli

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

Un server funzionante dovrebbe restituire PONG.

Esegui il backup dei dati Redis persistenti

Se Redis contiene dati importanti, interrompi o coordina le scritture ed esegui il backup del volume persistente secondo il metodo RDB/AOF scelto. Non dare per scontato che riavviare il container equivalga a fare un backup.

La guida alla distribuzione di Docker si applica anche alle app personalizzate di CasaOS.

Verifica i limiti di memoria prima dell'uso in produzione

Redis è un software che privilegia la memoria. Monitora le dimensioni effettive del dataset e la RAM dell'host, invece di presumere che poche chiavi comportino un ingombro ridotto. Se l'host CasaOS è condiviso, valuta l'uso intenzionale di una policy maxmemory solo dopo aver capito come reagisce la tua applicazione all'eliminazione dei dati.

Usa una rete Docker privata per le dipendenze delle app

Se Redis serve solo a un altro container, ad esempio una piattaforma di automazione o un'app web, colloca entrambi i servizi sulla stessa rete Docker privata e non associare affatto la porta dell'host. L'applicazione può connettersi a redis:6379 usando il nome del servizio.

Verifica la persistenza dopo aver ricreato un container

Dopo la configurazione iniziale, scrivi una chiave di test, ricrea il container con lo stesso volume e verifica che la chiave sia ancora disponibile. Questo semplice test dimostra che il percorso sull'host è effettivamente persistente, prima che un'applicazione importante ne dipenda.

Domande frequenti

Quale porta usa Redis?

6379 per impostazione predefinita.

Devo associare la porta 6379 a tutte le interfacce?

No. Associa la porta solo dove necessario, preferibilmente a localhost o a un percorso Docker/LAN privato.

Dove devono essere archiviati i dati di Redis?

Mappa la directory /data del container su una posizione persistente di CasaOS.

Mi serve RedisInsight?

No. È un'interfaccia di gestione facoltativa; Redis funziona anche senza.