
사이트에 사용하는 이미지들을 쉽게 관리하기 위하여 MinIO를 사용했습니다.
MinIO 선택 이유는 다음과 같습니다.
무료로 쓸 수 있고 가장 편한 것 같아 이용했습니다.
구버전은 상관 없는데, 최신 버전은 UI에서 할 수 있는 기능이 상당히 한정적으로 변하였습니다.
S3와 다르게 관리형 스토리지는 단일 root 관리자를 기본으로 목표로 하기 때문입니다.
보안 감수하고, 그냥 구버전 써도 되지 않을까요?
사라진 기능들
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
계정정보는 임의로 넣겠습니다.
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가 활성화되어 실행을 막는 경우가 발생해 해제 해주었습니다.
해제 되어 있다면 하지 않아도 됩니다.
# 확인 - Enforcing 이면 아래 코드를 입력해서 적용
getenforce
# 적용
sudo setenforce 0
귀찮아서 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 다운로드 및 권한 부여
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
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으로 변경된 것을 알 수 있습니다.
기존에는 Access Key, Secret Key를 사용하여서 했는데 이제는 사라졌고 로그인 시 사용하는 아이디와 패스워드를 사용하면 됩니다.
아직 패키지는 변경된 것 같지 않은데, Access Key 에 아이디를 넣고, Secret Key에 Password를 넣으면 됩니다.
Access Key: admin
Secret Key: password