번개애비의 라이프스톼일

시놀로지에 S3 Bucket을 서비스하는 방법 (MinIO를 대신해서 RustFS) 본문

IT

시놀로지에 S3 Bucket을 서비스하는 방법 (MinIO를 대신해서 RustFS)

번개애비 2026. 1. 7. 18:30

MinIO가 이제는 돈을 주고 사용해야하는 문제점이 있어서 MinIO대신 RustFS를 활용하여

시놀로지 NAS를 AWS와 100% 호환되는 S3 Bucket으로 만드는 방법을 설명한다.

 

시놀로지와 관련하여 MinIO 자료는 많은데 RustFS 자료는 적어서 이렇게 포스팅해본다.

 

 

 

먼저 시놀로지의 패키지 센터에서 Container Manager를 설치한다.

 

 

 

컨테이너 매니저를 켜고 레지스트리에서 rustfs/rustfs 를 다운로드한다.

 

 

RustFS의 버킷에 저장되는 파일을 시놀로지에서도 접근할 수 있도록 File Station을 통해 마운트할 폴더를 생성한다.

필자의 경우, /docker/도메인명 과 같은 형식으로 폴더를 생성했다.

여기서 제일 중요한 것은 권한을 할당해줘야 하는데 

생성한 폴더를 오른쪽 클릭하여 속성에 들어가서 Everyone에 대한 모든권한을 추가해줘야 한다.

(이 권한이 없으면 RustFS도커가 무기한 재부팅된다.)

 

 

 

 

다시 Container Manager > 컨테이너 메뉴 에서 아래와 같이 컨테이너를 생성해준다.

 

 

포트는 9000 > 9000, 9001 > 9001 로 설정해주고
볼륨은 아까 새로만든 폴더로 설정하고 /data 에 마운트해준다.

 

마지막으로 RUSTFS_ACCESS_KEY에는 접속할 아이디

RUSTFS_SECRET_KEY에는 패스워드를 입력하고

RUSTFS_EXTERNAL_ADDRESS는 삭제하여 컨테이너를 생성한다.

 

 

외부에서 접속할 수 있도록 역방향프록시(Reverse Proxy)를 셋팅한다.

제어판 > 로그인 포털 > 고급 > 역방향 프록시 > 생성을 눌러 아래의 예시처럼 셋팅한다.

대상 포트가 9000은 S3 Bucket의 Endpoint이고 대상포트가 9001은 RustFS를 관리하는 웹관리콘솔이다.

 

필자의 경우 htts://도메인 을 9000 과 https://console.도메인 을 9001로 셋팅했다.

 

 

추가적으로 9001포트에 연결하는 프록시에는 사용자 지정 머리글에서 아래와 같이 WebSocket을 추가해줘야 한다.

 

 

 

이제 HTTPS통신을 위한 SSL인증서를 발급해야한다.

제어판 > 보안 > 인증서 > 추가를 눌러 새 인증서를 Let's Encrypt로 인증서를 발급한다.

[참고1] 시놀로지의 IP를 호스트A로 하여 도메인 설정이 되어있는 상태가 되어있어야함

[참고2] 80, 443포트를 외부에서 접속이 가능하도록 포트포워딩 되어있어야함.

 

 

마지막으로 발급한 인증설르 선택하고 설정을 누르면 역방향 프록시에서 추가한 서비스가 나오는데

발급한 인증서의 도메인에 맞춰 연결해줘야한다.

(이거 안하면 인증서오류남)

 

 

 

추가적으로 RustFS의 console에 접속하여 버킷을 만들어서 운영할때,

해당 버킷으로 익명사용자에게 리스트 출력은 막되, 다운로드가 가능하도록 설정하는 방법은 다음과 같다.
(MinIO Client, 일명 mc를 개발클라이언트 PC에 미리 설치해야함)

//policy.json 파일내용
{
    "Statement": [{
        "Action": ["s3:GetBucketLocation"],
        "Effect": "Allow",
        "Principal": {
            "AWS": ["*"]
        },
        "Resource": ["arn:aws:s3:::{버킷명}"]
    }, {
        "Action": ["s3:GetObject"],
        "Effect": "Allow",
        "Principal": {
            "AWS": ["*"]
        },
        "Resource": ["arn:aws:s3:::{버킷명}/*"]
    }],
    "Version": "2012-10-17"
}
#명령어
mc anonymous set-json policy.json {s3Alias}/{버킷명}

 

Comments