Soluzione della community

Installa Redis su CasaOS in sicurezza con Docker Compose

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

Il modo attualmente più sicuro per eseguire Redis su CasaOS consiste nell’utilizzare un container Docker con un volume dati persistente e un’autenticazione e un’esposizione di rete configurate esplicitamente. Il tutorial del forum del 2023 è troppo datato per essere usato come unica guida alla distribuzione, perché i valori predefiniti attuali di Redis e le aspettative in materia di sicurezza sono cambiati.

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 dell’applicazione.

Usa l’immagine ufficiale di Redis

L’attuale guida Docker di Redis documenta l’immagine ufficiale redis:<version> e la porta standard 6379.

Usa Docker Compose su 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"

Cambia la password e modifica l’indirizzo di bind solo se un altro host deve realmente accedere direttamente a Redis.

Rendi persistente /data

Senza un volume sull’host, i dati di Redis rimangono nel livello del container, che è temporaneo, e possono scomparire quando il container viene ricreato. Mappa /data su uno storage CasaOS durevole.

Scegli consapevolmente 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 temporanea. Scegli la modalità di persistenza in base al ruolo che Redis svolge per te.

Non esporre Redis direttamente a Internet

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

Usa l’autenticazione e le ACL

Un semplice requirepass è adatto all’uso domestico, mentre Redis supporta anche le ACL per gestire utenti e comandi in modo più granulare. Non lasciare senza autenticazione un’istanza Redis raggiungibile da remoto.

Testa con redis-cli

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

Un server funzionante dovrebbe restituire PONG.

Esegui il backup dei dati persistenti di Redis

Se Redis contiene dati importanti, interrompi le scritture o coordinati con esse ed esegui il backup del volume persistente in base al metodo RDB/AOF scelto. Non dare per scontato che il riavvio del container equivalga a un backup.

La guida alla distribuzione Docker si applica allo stesso modo alle app personalizzate di CasaOS.

Controlla i limiti di memoria prima dell’uso in produzione

Redis è un software che utilizza principalmente la memoria. Controlla le dimensioni effettive del dataset e la RAM dell’host invece di presumere che un numero ridotto di chiavi comporti un ingombro ridotto. Su un host CasaOS condiviso, valuta una politica maxmemory definita consapevolmente solo dopo aver compreso come l’applicazione reagisce all’espulsione dei dati.

Usa una rete Docker privata per le dipendenze dell’applicazione

Se Redis esiste solo per un altro container, ad esempio una piattaforma di automazione o un’app web, inserisci entrambi i servizi nella stessa rete Docker privata e ometti completamente la porta dell’host. L’applicazione può connettersi a redis:6379 tramite il nome del servizio.

Verifica la persistenza dopo la ricreazione del container

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

Domande frequenti

Quale porta usa Redis?

La 6379 per impostazione predefinita.

Devo associare la porta 6379 a tutte le interfacce?

No. Esegui il bind solo dove necessario, preferibilmente su localhost o su un percorso Docker/LAN privato.

Dove devono risiedere i dati di Redis?

Mappa la directory /data del container su uno storage persistente di CasaOS.

Mi serve RedisInsight?

No. È un’interfaccia di gestione opzionale; Redis funziona anche senza di essa.