MinIO 구축 및 Public Bucket 설정

이선엽·2026년 2월 23일
post-thumbnail

MinIO

사이트에 사용하는 이미지들을 쉽게 관리하기 위하여 MinIO를 사용했습니다.

MinIO 선택 이유는 다음과 같습니다.

  1. 사진을 관리하는 기획자는 개발자가 아니기에 쉬운 사용방법 필요
  2. S3 처럼 주소를 사용하여 이미지를 보여줄 수 있는 Object Storage 방식 필요
  3. 누구나 접근 할 수 있게, Public URL 필요

무료로 쓸 수 있고 가장 편한 것 같아 이용했습니다.

특이사항

구버전은 상관 없는데, 최신 버전은 UI에서 할 수 있는 기능이 상당히 한정적으로 변하였습니다.
S3와 다르게 관리형 스토리지는 단일 root 관리자를 기본으로 목표로 하기 때문입니다.

보안 감수하고, 그냥 구버전 써도 되지 않을까요?

사라진 기능들

  1. User 생성
  2. Access key 생성
  3. Bucket Policy 생성
  4. Policy 적용
  5. 그냥 설정 관련이 전부 사라졌다고 보면 됩니다.

구축하기

version: RELEASE.2025-09-07T16-13-09Z (go1.24.6 linux/amd64)

그럼 시작해봅시다.
언제나 그렇듯 Rocky Linux 10 기반입니다.

바이너리 다운로드

wget https://dl.min.io/server/minio/release/linux-amd64/minio
sudo mv minio /usr/local/bin/
sudo chmod +x /usr/local/bin/minio

데이터 저장 디렉토리 및 환경변수 파일 생성

계정정보는 임의로 넣겠습니다.

  • id: admin
  • password: password
  • port: 9000(Object Storage Port), 9001(UI Port)
sudo mkdir -p /data/minio
sudo mkdir -p /etc/minio
sudo vi /etc/minio/minio.conf

# 작성 내용
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=password
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--address :9000 --console-address :9001"

selinux 비활성화

이걸 안하면 SELinux가 활성화되어 실행을 막는 경우가 발생해 해제 해주었습니다.
해제 되어 있다면 하지 않아도 됩니다.

# 확인 - Enforcing 이면 아래 코드를 입력해서 적용
getenforce

# 적용
sudo setenforce 0

systemd 등록

귀찮아서 root로 했는데 별도의 사용자로 해주세요.

sudo vi /etc/systemd/system/minio.service

[Unit]
Description=MinIO
Documentation=https://min.io/docs
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
EnvironmentFile=/etc/minio/minio.conf
ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES $MINIO_OPTS
Restart=always
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

실행

sudo systemctl daemon-reload
sudo systemctl enable --now minio
sudo systemctl status minio

실행 후 사이트에 접속해봅니다. 9001 Port로 접속하면 됩니다.

접속 후 UI에서 Bucket도 하나 만들어 봅시다. 저는 test로 만들었습니다.

중요: 버킷 설정 변경 하기

저는 누구나 사진을 볼 수 있어야 하기에 Bucket을 Public으로 만들어야 합니다.

최신 버전에서는 생성시 Private으로 설정 되고 별도로 수정할 수 있는 버튼이 없었습니다.

그래서 minio client를 받아서 적용해주었습니다.

다른 쉬운 방법이 있나 찾아봤는데 못찾아서 MC를 사용했습니다...

mc 사용

# mc 다운로드 및 권한 부여
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

# 설치 확인
./mc --version

# 서버 등록
./mc alias set myminio http://127.0.0.1:9000 admin password

# 연결 테스트
./mc ls myminio

bucket policy 생성 및 적용

public 용입니다.

## 파일 생성
vi public-policy.json

## 내용
cat <<EOF > public-policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": ["*"]},
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::test",
        "arn:aws:s3:::test/*"
      ]
    }
  ]
}
EOF

# 버킷에 적용
./mc anonymous set-json public-policy.json myminio/test

# 확인
./mc anonymous get myminio/test

이후 다시 접속해보면 Public으로 변경된 것을 알 수 있습니다.

외부 Upload 활성화 하기

기존에는 Access Key, Secret Key를 사용하여서 했는데 이제는 사라졌고 로그인 시 사용하는 아이디와 패스워드를 사용하면 됩니다.

아직 패키지는 변경된 것 같지 않은데, Access Key 에 아이디를 넣고, Secret Key에 Password를 넣으면 됩니다.

Access Key: admin
Secret Key: password

profile
만드는게 좋아

0개의 댓글