MinIO 개체 스토리지 및 S3 호환 API 계층의 초기 개발 및 평가를 위해 VM 1대에 MinIO 서버를 구축한다.
패키지를 다운 받는다.
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240510014138.0.0_amd64.deb -O minio.deb
설치
dpkg -i minio.deb
minio가 이용할 폴더 생성
mkdir ~/minio
테스트해보려면 실행하고 필요없으면 다음 단계로 넘어간다
# 9001 포트로 서버 실행
minio server ~/minio --console-address :9001
서버 실행을 할때 root 계정정보를 변경하는 것도 가능하다.
export MINIO_ROOT_USER='admin'
export MINIO_ROOT_PASSWORD='비밀번호'
데이터 폴더를 지정하는 것도 가능하다.
minio server ~/minio --console-address :9001 /data
ctrl+c로 종료후 minio 환경파일 구성을 해야한다.
실행 결과 예시

웹콘솔 예시

본격적으로 서버 설정을 하고 systemd를 이용해서 서버를 시작한다.
systemd 실행 파일을 보면 minio-user로 실행하도록 되어있다.
/usr/lib/systemd/system/minio.service
groupadd minio-user
useradd -r -m -g minio-user -d /home/minio-user -s /bin/bash minio-user
mkdir /home/minio-user/data
chown -R minio-user:minio-user /home/minio-user/data
sudo vi /etc/default/minio
MINIO_VOLUMES="/home/minio-user/data"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER='icurfer'
MINIO_ROOT_PASSWORD='icurfer'
MINIO_SERVER_URL="http://192.168.0.191:9000"
systemctl enable --now minio
웹콘솔 예시

참고자료
인증서는 Let's encrpyt로 생성한 인증서 적용.
# 디렉토리가 없으면 생성
mkdir /home/minio-user/.minio/certs
minio.icurfer.com
s3.icurfer.com
두개 서브 도메인으로 적용시 아래와 같은 구조로 구성.
.minio
│ └── certs
│ ├── CAs
│ │ └── fullchain.pem
│ ├── private.key
│ ├── public.crt
│ └── s3-icurfer.com
│ ├── private.key
│ └── public.crt
MinIO TLS/SSL 설정을 위해 환경 구성을 변경한다.
HAProxy를 Offloding으로 이용 중이면, Offloading과 무관한 TPC Frontend설정을 하도록 한다. TCP프로토콜로 9000포트 9001 포트 매핑 작업 필요.
sudo vi /etc/default/minio
도메인 주소로 서버주소 정보를 변경한다.
MINIO_VOLUMES="/home/minio-user/data"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER='icurfer'
MINIO_ROOT_PASSWORD='icurfer'
MINIO_SERVER_URL="https://minio.icurfer.com:9000"
MinIO Client를 이용하여 사설 인증서가 적용된 MinIO서버를 사용하려면, Client쪽에 신뢰할수 있는 인증서 등록이 필요하다. 인증서 등록을하지 않으면 --insecure 옵션이 필요하다.
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/mc
Offloading은 Offloading에 맞게 수정해서 진행.
mc alias set ${임의 이름} http://127.0.0.1:9000 minioadmin minioadmin
mc admin info local
mc alias rm ${계정 이름}
mc alias list
mc mb ${alias명}/${버킷이름}
mc ls ${alias명}
mc cp ${로컬 파일경로} ${alias명}/${버킷이름}/
업로드 반대로 하면 다운로드됨.