현재 CasaOS에서 Redis를 실행하는 가장 안전한 방법은 영구 데이터 볼륨과 명시적인 인증 및 네트워크 노출 설정을 적용한 Docker 컨테이너로 실행하는 것입니다. 2023년 포럼 튜토리얼은 현재 Redis의 기본값과 보안 요구 사항이 달라졌으므로 전체 배포 가이드로 사용하기에는 너무 오래되었습니다.
공식 Redis 이미지를 사용하고, 포트 6379는 LAN 또는 Docker 네트워크에서만 접근할 수 있도록 제한하며, /data를 영구 저장하고, 애플리케이션 데이터를 저장하기 전에 AOF/RDB 지속성이 필요한지 결정하세요.
공식 Redis 이미지 사용
최신 Redis Docker 가이드에는 공식 redis:<version> 이미지와 표준 포트 6379가 설명되어 있습니다.
CasaOS에서 Docker Compose 사용
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"
비밀번호를 변경하고, 다른 호스트에서 Redis에 직접 액세스해야 하는 경우에만 바인드 주소를 조정하세요.
/data 영구 저장
호스트 볼륨이 없으면 Redis 데이터가 삭제 가능한 컨테이너 레이어에 저장되므로 컨테이너를 다시 만들 때 사라질 수 있습니다. /data를 CasaOS의 영구 저장소에 매핑하세요.
지속성 방식 신중하게 선택
AOF는 쓰기 작업을 기록하여 복구 가능성을 높이고, RDB 스냅샷은 상대적으로 가볍습니다. 애플리케이션에서 Redis를 임시 캐시로 사용해도 될 수도 있습니다. Redis의 용도에 맞춰 지속성 방식을 선택하세요.
Redis를 인터넷에 직접 노출하지 않기
포트 6379를 인터넷에 공개해서는 안 됩니다. 다른 애플리케이션이 같은 Docker 호스트에서 실행된다면 두 컨테이너를 비공개 Docker 네트워크에 연결하고 서비스 이름으로 통신하세요.
인증 및 ACL 사용
단일 requirepass 설정은 가정용 환경에서 간단하게 사용할 수 있으며, 최신 Redis는 더 세분화된 사용자 및 명령어 권한을 위한 ACL도 지원합니다. 원격에서 접근 가능한 Redis 인스턴스를 인증 없이 실행하지 마세요.
redis-cli로 테스트
docker exec -it redis redis-cli -a CHANGE_ME ping
정상적인 서버라면 PONG을 반환합니다.
영구 Redis 데이터 백업
Redis에 중요한 데이터가 있다면 쓰기를 중지하거나 조율한 뒤, 선택한 RDB/AOF 방식에 따라 영구 볼륨을 백업하세요. 컨테이너 재시작이 백업과 같다고 생각하지 마세요.
Docker 배포 가이드는 CasaOS 사용자 지정 앱에도 동일하게 적용됩니다.
프로덕션 사용 전에 메모리 제한 확인
Redis는 메모리를 우선적으로 사용하는 소프트웨어입니다. 키 개수가 적다고 사용량도 적을 것이라고 가정하지 말고 실제 데이터셋 크기와 호스트 RAM을 확인하세요. CasaOS 호스트를 여러 용도로 함께 사용하는 경우, 애플리케이션이 제거 정책에 어떻게 반응하는지 파악한 뒤에만 의도적으로 maxmemory 정책을 설정하세요.
애플리케이션 종속성을 위한 비공개 Docker 네트워크 사용
자동화 플랫폼이나 웹 앱 같은 다른 컨테이너에서만 Redis를 사용한다면 두 서비스를 같은 비공개 Docker 네트워크에 배치하고 호스트 포트 매핑을 아예 생략하세요. 애플리케이션은 서비스 이름을 사용해 redis:6379로 연결할 수 있습니다.
컨테이너를 다시 만든 뒤 지속성 확인
초기 설정 후 테스트 키를 작성하고, 같은 볼륨을 사용해 컨테이너를 다시 만든 다음 키가 여전히 존재하는지 확인하세요. 이 간단한 테스트를 통해 중요한 애플리케이션이 의존하기 전에 호스트 경로가 실제로 영구 저장되는지 확인할 수 있습니다.
FAQ
Redis는 어떤 포트를 사용하나요?
기본값은 6379입니다.
6379를 모든 인터페이스에 매핑해야 하나요?
아니요. 필요한 위치에만 바인드하세요. 가능하면 로컬호스트 또는 비공개 Docker/LAN 경로를 사용하세요.
Redis 데이터는 어디에 저장해야 하나요?
컨테이너의 /data 디렉터리를 CasaOS의 영구 저장소에 매핑하세요.
RedisInsight가 필요한가요?
아니요. 선택 사항인 관리 UI이며, Redis 자체는 RedisInsight 없이도 작동합니다.
