Rozwiązanie społecznościowe

Bezpieczna instalacja Redis na CasaOS za pomocą Docker Compose

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

Najbezpieczniejszym obecnie sposobem uruchomienia Redis na CasaOS jest użycie kontenera Docker z trwałym woluminem danych oraz jawnym uwierzytelnianiem i kontrolą dostępu do sieci. Poradnik z forum z 2023 roku jest zbyt stary, aby służyć jako kompletny przewodnik wdrożenia, ponieważ domyślne ustawienia Redis i oczekiwania dotyczące bezpieczeństwa uległy zmianie.

Zacznij od oficjalnego obrazu Redis, pozostaw port 6379 dostępnym tylko w sieci LAN lub sieci Docker, utrwalaj katalog /data i zdecyduj, czy potrzebujesz trwałości AOF/RDB, zanim umieścisz w Redisie dane aplikacji.

Użyj oficjalnego obrazu Redis

Aktualny przewodnik Redis dotyczący Dockera opisuje oficjalny obraz redis:<version> oraz standardowy port 6379.

Użyj Docker Compose na 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"

Zmień hasło i dostosuj adres powiązania tylko wtedy, gdy inny host rzeczywiście potrzebuje bezpośredniego dostępu do Redis.

Utrwal katalog /data

Bez woluminu hosta dane Redis znajdują się w ulotnej warstwie kontenera i mogą zniknąć po jego ponownym utworzeniu. Zmapuj /data na trwały magazyn CasaOS.

Świadomie wybierz sposób utrwalania danych

AOF rejestruje operacje zapisu i poprawia możliwość odzyskania danych, natomiast migawki RDB są lżejsze. Twoja aplikacja może także tolerować Redis jako ulotną pamięć podręczną. Dopasuj tryb utrwalania do roli, jaką Redis pełni w Twoim środowisku.

Nie wystawiaj Redis bezpośrednio do Internetu

Port 6379 nie powinien być przekierowywany publicznie. Jeśli inna aplikacja działa na tym samym hoście Docker, umieść oba kontenery w prywatnej sieci Docker i łącz się za pomocą nazwy usługi.

Używaj uwierzytelniania i list ACL

Pojedyncza opcja requirepass jest prosta w zastosowaniach domowych, ale współczesny Redis obsługuje również listy ACL, które pozwalają bardziej szczegółowo definiować użytkowników i polecenia. Nie pozostawiaj zdalnie dostępnej instancji Redis bez uwierzytelniania.

Przetestuj połączenie za pomocą redis-cli

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

Sprawny serwer powinien zwrócić PONG.

Twórz kopie zapasowe trwałych danych Redis

Jeśli Redis przechowuje coś ważnego, zatrzymaj zapisy lub skoordynuj je i wykonuj kopie zapasowe trwałego woluminu zgodnie z wybraną metodą RDB/AOF. Nie zakładaj, że ponowne uruchomienie kontenera jest równoznaczne z wykonaniem kopii zapasowej.

Przewodnik wdrażania Dockera ma zastosowanie również do niestandardowych aplikacji CasaOS.

Sprawdź limity pamięci przed użyciem produkcyjnym

Redis w pierwszej kolejności korzysta z pamięci. Obserwuj rzeczywisty rozmiar zbioru danych i pamięć RAM hosta, zamiast zakładać, że niewielka liczba kluczy oznacza małe zużycie zasobów. W przypadku współdzielonego hosta CasaOS rozważ świadome ustawienie zasad maxmemory dopiero po zrozumieniu, jak aplikacja reaguje na eksmisję danych.

Używaj prywatnej sieci Docker dla zależności aplikacji

Jeśli Redis istnieje wyłącznie na potrzeby innego kontenera, takiego jak platforma automatyzacji lub aplikacja internetowa, umieść obie usługi w tej samej prywatnej sieci Docker i całkowicie pomiń mapowanie portu hosta. Aplikacja może łączyć się z adresem redis:6379 za pomocą nazwy usługi.

Zweryfikuj utrwalanie danych po ponownym utworzeniu kontenera

Po wstępnej konfiguracji zapisz testowy klucz, utwórz kontener ponownie z użyciem tego samego woluminu i potwierdź, że klucz jest nadal dostępny. Ten prosty test dowodzi, że ścieżka hosta rzeczywiście zapewnia trwałość danych, zanim zacznie na niej polegać ważna aplikacja.

Najczęściej zadawane pytania

Jakiego portu używa Redis?

Domyślnie 6379.

Czy powinienem mapować port 6379 na wszystkie interfejsy?

Nie. Powiąż go tylko tam, gdzie jest potrzebny — najlepiej z localhostem albo prywatną siecią Docker/LAN.

Gdzie powinny znajdować się dane Redis?

Zmapuj katalog kontenera /data na trwały magazyn CasaOS.

Czy potrzebuję RedisInsight?

Nie. To opcjonalny interfejs do zarządzania; sam Redis działa bez niego.