MinIO merupakan sebuah Object Storage server yang menyimpan data data yang biasanya di pakai pada saat membangun aplikasi. MinIO ini dirancang secara minimalis dan di rancang scalable sehingga ringan. 
Pada tulisan kali ini saya ingin membuat MinIO server ini sebagai secondary data dari server Zimbra nanti nya. Untuk OS nya saya disini menggunakan Ubuntu 22.04. Oke untuk kita langsung ke cara untuk setup nya. 
Pertama tama kita install package dari MinIO menggunakan perintah berikut:
 
# wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240611031330.0.0_amd64.deb -O minio.deb

# sudo dpkg -i minio.deb
Jika sudah kita akan melihat dimana file environment nya ada dimana untuk melanjalankan MinIO server ini dengan perintah berikut:
# systemctl status minio

output:
● minio.service - MinIO
Loaded: loaded (/lib/systemd/system/minio.service; enabled; vendor preset: enabled) <- file system
Active: active (running) since Fri 2024-06-14 03:59:29 UTC; 4h 7min ago
Docs: https://docs.min.io
Process: 38637 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
Main PID: 38640 (minio)
Tasks: 10
CGroup: /system.slice/minio.service
└─38640 /usr/local/bin/minio server --certs-dir /home/kirua/.minio/cert --console-address :9001 /home/kirua/data1
Bisa dilihat file dari service MinIO. Kita bisa buka file tersebut dengan perintah:
# cat /lib/systemd/system/minio.service

output:
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
Type=notify

WorkingDirectory=/usr/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/etc/default/minio <- tempat environment file
ExecStartPre=/bin/bash -c "if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Turn-off memory accounting by systemd, which is buggy.
MemoryAccounting=no

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutSec=infinity

SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})
Kita bisa lihat pada bagian EnvironmentFile ada file minio yang berada pada folder /etc/default. File tersebut yang nantinya kita edit. Kalian bisa buka file tersebut dengan text editor apa saja.
# vi /etc/default/minio
MINIO_VOLUMES="/home/kirua/data1" <-- file directory yang nanti dipakai oleh minio
MINIO_OPTS="--console-address :9001" <-- port untuk kita access web file
MINIO_ROOT_USER=minioadmin <-- user untuk login minio
MINIO_ROOT_PASSWORD=Rahasia123! <-- password untuk user minio
Kalian bisa sesuaikan dengan konfigurasi masing masing. Setelah itu kita akan membuat group dan user untuk nantinya MinIO bisa berjalan dengan perintah berikut:
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /home/kirua/data1 <-- ganti dengan folder yang ingin di pakai
Setelah sudah kita bisa lansung nyalakan service MinIO dengan perintah berikut:
# systemctl start minio
output:
● minio.service - MinIO
Loaded: loaded (/lib/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-06-14 03:59:29 UTC; 4h 21min ago
Docs: https://docs.min.io
Process: 38637 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
Main PID: 38640 (minio)
Tasks: 10
CGroup: /system.slice/minio.service
└─38640 /usr/local/bin/minio server --certs-dir /home/kirua/.minio/cert --console-address :9001 /home/kirua/data1

Jun 14 03:59:29 afatyo minio[38640]: MinIO Object Storage Server
Jun 14 03:59:29 afatyo minio[38640]: Copyright: 2015-2024 MinIO, Inc.
Jun 14 03:59:29 afatyo minio[38640]: License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Jun 14 03:59:29 afatyo minio[38640]: Version: RELEASE.2024-06-11T03-13-30Z (go1.22.4 linux/amd64)
Jun 14 03:59:29 afatyo minio[38640]: API: https://192.168.80.193:9000 https://10.10.10.2:9000 https://127.0.0.1:9000
Jun 14 03:59:29 afatyo minio[38640]: WebUI: https://192.168.80.193:9001 https://10.10.10.2:9001 https://127.0.0.1:9001
Jun 14 03:59:29 afatyo minio[38640]: Docs: https://min.io/docs/minio/linux/index.html
Jun 14 03:59:29 afatyo minio[38640]: Status: 1 Online, 0 Offline.
Jika status server sudah active maka kita bisa langsung mengakses pada browser kita menggunakan ip kita. Kita bisa lihat ini merupakan menu login dari MinIO. Masukan user dan pasword dari environment file yang tadi kita edit.
 
Ini merupakan tampilan awal pada saat setelah login. 
 

Tapi kita hanya mengakses server tersebut menggunakan protocol http. Di selanjutnya kita akan memasang ssl untuk nantinya kita bisa mengakses server kita menggunakan protovol https. Untuk langkah langkah nya sebagai berikut:

 
# wget https://github.com/minio/certgen/releases/download/v1.2.0/certgen_1.2.0_linux_amd64.deb

# dpkg -i certgen_1.2.0_linux_amd64.deb
Pertama kita download aplikasi dari MinIO untuk mengenerate certificate untuk server MinIO kita. Gunakan perintah berikut untuk mendownload:
Jika sudah kalian jalankan perintah ini untuk mengenerate file certificate:
# certgen -host afatyo.com, 192.168.80.193  
ouput: Created a new certificate 'public.crt', 'private.key' valid for the following names 📜
- "afatyo.com"
Kenapa hanya satu saja yang di buat?, karena sebelumnya saya sudah membuat file certificate hanya untuk ip nya saja. Kalian juga bisa buat certificatenya menggunakan ip saja kalian tinggal hapus nama domain nya. 
 
Selanjutnya kita akan membuat folder untuk nanti kita taruh file certificate nya dengan perintah seperti berikut:
 

# mkdir /home/kirua/.minio/cert
 Jika sudah kalian bisa pindahkan file cert nya menggunakan perintah berikut:
# mv public.key /home/kirua/.minio/cert
Jalankan perintah tadi untuk fie public.crt. Sehabis itu kita buka environment file lagi untuk edit konfigurasinya:
MINIO_VOLUMES="/home/kirua/data1" 
MINIO_OPTS="--certs-dir /home/kirua/.minio/cert --console-address :9001" <-- tambahkan pada line berikut
MINIO_ROOT_USER=minioadmin 
MINIO_ROOT_PASSWORD=Rahasia123!
Jika sudah kita akan memberikan ownership kepada file certificate tadi dengan perintah berikut
# chown minio-user:minio-user /home/kirua/.minio/cert/public.key
# chown minio-user:minio-user /home/kirua/.minio/cert/public.crt
Jika sudah kita restart system MinIO dan kita bisa akses server kita dengan aman menggunakan protocol https. Tapi karena MinIO ini tidak ada webserver jadi kita tidak bisa melakuka redirect dari http ke https jadi kalian harus menulis manual untuk mengakses menggunakan protokol. Seperti berikut
https://192.168.80.193:9001. Setelah itu kita bisa akses server kita deh dan gampang bukan. Gampang lah hehe.
 
Ya jadi itu aja mungkin di blog kita akan melanjutkan ke bagaimana cara kita untuk MinIO ini sebagai object storage Zimbra. Semoga bermanfaat dan sampai jumpa di blog selanjutnya bye bye.

Leave a Reply

Your email address will not be published. Required fields are marked *