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.
