Penyimpanan objek adalah penyimpanan dan pengambilan gumpalan data dan metadata yang tidak terstruktur menggunakan HTTP API. Alih-alih menyimpan file dengan cara konvensional dengan memecahnya menjadi blok-blok untuk disimpan di disk menggunakan sistem file, kami menangani seluruh objek yang disimpan melalui jaringan. Objek ini bisa berupa gambar, video, log, file HTML, cadangan, gambar wadah, atau gumpalan byte mandiri. Mereka tidak terstruktur karena tidak mengikuti skema atau format tertentu.
Minio adalah server penyimpanan objek yang kompatibel dengan Amazon S3 open-source, dihosting sendiri, dan dihosting sendiri. Minio ditulis dalam Go, dilengkapi dengan klien independen OS, dan antarmuka browser. Dalam tutorial ini, Anda akan menginstal server Minio di server Ubuntu 20.04, melindunginya menggunakan sertifikat SSL dari Let's Encrypt, dan mengaksesnya menggunakan klien baris perintah.
Prasyarat
- Server Ubuntu 20.04 dengan pengguna non-root dengan hak istimewa sudo.
- Nama domain terdaftar lengkap,
minio.example.com
. - Mesin Ubuntu 20.04 untuk bertindak sebagai klien.
-
Sistem diperbarui.
$ sudo apt update
-
Beberapa paket yang dibutuhkan sistem Anda.
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https ca-certificates -y
Beberapa paket ini mungkin sudah diinstal pada sistem Anda.
Langkah 1 - Instal Server Minio
Minio, yang ditulis dalam Go, dikirimkan sebagai file biner sederhana. Unduh file biner dari situs web resmi Minio.
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
Jadikan file tersebut dapat dieksekusi.
$ chmod +x minio
Pindahkan biner ke /usr/local/bin
direktori.
$ sudo mv minio /usr/local/bin
Verifikasi penginstalan.
$ minio --version minio version RELEASE.2022-01-28T02-28-16Z
Langkah 2 - Siapkan Disk Penyimpanan Objek
Kita perlu menyiapkan perangkat blok khusus untuk menyimpan objek. Jalur penyimpanan dapat berada di disk Anda atau disk kedua yang terpasang ke server Anda. Untuk tutorial kami, kami menggunakan disk sekunder.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ??sda1 8:1 0 50G 0 part / sdb 8:16 0 50G 0 disk
Instal parted
aplikasi untuk membuat dan memodifikasi partisi disk.
$ sudo apt install parted
Jalankan perintah berikut untuk memasang disk sekunder ke /data
direktori.
$ sudo parted -s -a optimal -- /dev/sdb mklabel gpt $ sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100% $ sudo parted -s -- /dev/sdb align-check optimal 1 $ sudo mkfs.ext4 /dev/sdb1 $ echo "/dev/sdb1 /data ext4 defaults 0 0" | sudo tee -a /etc/fstab $ sudo mkdir /data $ sudo mount -a
Langkah 3 - Konfigurasikan Minio
Server minio tidak boleh dijalankan sebagai root untuk mencegah kerusakan apa pun. Oleh karena itu, kita akan membuat pengguna dan grup bernama minio-user
.
$ sudo useradd -r minio-user -s /sbin/nologin
-s
flag menyetel shell untuk akun pengguna ke /sbin/nologin
, yang tidak mengizinkan login pengguna.
Ubah kepemilikan file biner Minio.
$ sudo chown minio-user:minio-user /usr/local/bin/minio
Berikan kepemilikan /data
direktori ke minio-user
.
$ sudo chown minio-user:minio-user /data -R
Langkah selanjutnya adalah membuat file konfigurasi untuk Minio. Buat direktori untuk menyimpan file konfigurasi.
$ sudo mkdir /etc/minio
Berikan kepemilikan direktori kepada minio-user
pengguna.
$ sudo chown minio-user:minio-user /etc/minio
Buat file lingkungan untuk menyimpan konfigurasi default. File ini akan disimpan di /etc/default
direktori.
$ sudo nano /etc/default/minio
Tempel kode berikut dengan variabel lingkungan untuk mendefinisikan Minio.
MINIO_ROOT_USER="minio" MINIO_VOLUMES="/data" MINIO_OPTS="-C /etc/minio --address your_server_ip:9000 --console-address :9001" MINIO_ROOT_PASSWORD="miniostorage"
Mari kita periksa semua variabel dan apa yang mereka lakukan.
- MINIO_ROOT_USER :mengatur kunci akses/pengguna untuk mengakses antarmuka pengguna Minio. Panjangnya minimal 3 karakter.
- MINIO_VOLUME :menentukan direktori penyimpanan untuk data.
- MINIO_OPTS :mengatur berbagai opsi untuk server Minio.
-C
flag menentukan direktori konfigurasi yang dibuat sebelumnya.--address
flag menentukan alamat IP dan port yang akan diikat. Jika Anda tidak menentukan alamat IP, Minio akan mengikat ke setiap alamat IP di server, termasuk localhost atau alamat IP terkait Docker. Port default adalah 9000.--console-address
flag menyetel port 9001 untuk konsol web Minio. - MINIO_ROOT_PASSWORD :menyetel kunci/kata sandi pribadi untuk mengakses antarmuka Minio. Panjangnya harus minimal 8 karakter. Pilih kunci rahasia yang kuat dan rumit.
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Langkah 4 - Instal Layanan Minio
Unduh file layanan Minio dari repositori resmi Github.
$ curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Buka file dengan editor Nano.
$ nano minio.service
Anda akan menemukan kode berikut.
[Unit] Description=MinIO Documentation=https://docs.min.io Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local/ User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=/etc/default/minio 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 # Specifies the maximum number of threads this process can create TasksMax=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target # Built for ${project.name}-${project.version} (${project.name})
Layanan ini memulai Minio menggunakan minio-user
pengguna yang kita buat sebelumnya. Ini menggunakan /etc/default/minio
sebagai file lingkungan yang kami konfigurasikan pada langkah 3. Setelah puas, tutup file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Pindahkan file layanan ke /etc/systemd/system
direktori.
$ sudo mv minio.service /etc/systemd/system
Muat ulang daemon layanan.
$ sudo systemctl daemon-reload
Aktifkan Layanan Minio.
$ sudo systemctl enable minio Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
Langkah 5 - Mulai Server Minio
Mulai Server Minio.
$ sudo systemctl start minio
Verifikasi statusnya.
$ sudo systemctl status minio ? minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-02-01 13:30:44 UTC; 5s ago Docs: https://docs.min.io Process: 26068 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exi> Main PID: 26076 (minio) Tasks: 6 Memory: 55.3M CGroup: /system.slice/minio.service ??26076 /usr/local/bin/minio server -C /etc/minio --address 209.208.26.129:9000 --console-address :9001 /data
Izinkan port 9000 dan 9001 menggunakan Uncomplicated Firewall (UFW).
$ sudo ufw allow 9000 $ sudo ufw allow 9001
Aktifkan firewall.
$ sudo ufw enable
Buka URL http://your_server_ip:9001
di browser, dan Anda akan melihat layar berikut.
Langkah 6 - Amankan Minio menggunakan SSL
Kami akan menggunakan Let's Encrypt untuk mengamankan Minio. Untuk mendapatkan sertifikat SSL gratis, kita perlu mengunduh alat Certbot. Kami akan menggunakan penginstal paket Snapd untuk itu.
Instal penginstal Snap.
$ sudo apt install snapd
Pastikan versi Snapd Anda terbaru.
$ sudo snap install core $ sudo snap refresh core
Instal Certbot.
$ sudo snap install --classic certbot
Gunakan perintah berikut untuk memastikan bahwa perintah Certbot berjalan dengan membuat tautan simbolis ke /usr/bin
direktori.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Buat sertifikat SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d minio.example.com
Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/minio.example.com
direktori di server Anda.
Salin file privkey.pem
dan fullchain.pem
ke dalam certs
direktori di bawah folder konfigurasi Minio.
$ sudo cp /etc/letsencrypt/live/minio.example.com/privkey.pem /etc/minio/certs/private.key $ sudo cp /etc/letsencrypt/live/minio.example.com/fullchain.pem /etc/minio/certs/public.crt
Ubah kepemilikan sertifikat yang disalin.
$ sudo chown minio-user:minio-user /etc/minio/certs/private.key $ sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Izinkan port HTTP dan HTTPS melalui firewall.
$ sudo ufw allow 80 $ sudo ufw allow 443
Buka file konfigurasi Minio.
$ sudo nano /etc/default/minio
Tambahkan baris berikut di bagian bawah.
MINIO_SERVER_URL="https://minio.example.com:9000"
Meskipun konsol diakses melalui port 9001, URL server SSL menggunakan port 9000 untuk mengakses Minio API.
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang Server Minio.
$ sudo systemctl restart minio
Anda dapat mengakses konsol Minio melalui URL https://minio.example.com:9001
di browser Anda.
Langkah 7 - Hubungkan ke Minio dan Siapkan Bucket
Masuk ke Konsol Minio menggunakan pengguna dan kata sandi yang ditetapkan sebelumnya untuk mengakses Dasbor Minio.
Klik Buat Keranjang tombol untuk membuat keranjang pertama Anda.
Karena kami menginstal Minio pada satu server/disk, beberapa fitur dinonaktifkan. Masukkan nama keranjang dan klik Buat Keranjang tombol untuk melanjutkan. Anda akan mendapatkan layar berikut setelah selesai.
Untuk mengunggah file, klik Jelajahi tombol, dan halaman berikut akan muncul.
Klik tombol Unggah File tombol dan pilih Unggah File lagi untuk membuka File Browser di PC Anda. Anda dapat memilih beberapa file sekaligus untuk diunggah.
Klik tombol recycle bin untuk menghapus antrian upload setelah selesai.
Itu saja untuk saat ini. Anda telah membuat keranjang pertama dan mengunggah beberapa file. Selanjutnya, kita akan terhubung ke server menggunakan klien, mengakses ember ini. dan kelola.
Langkah 8 - Instal Minio Client dan akses File
Kami akan menginstal klien baris Perintah Minio pada mesin berbasis Ubuntu 20.04 yang berbeda untuk tujuan kami. Anda juga dapat mengunduh klien Desktop dari halaman unduhan resmi Minio.
Unduh biner Minio resmi.
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
Jadikan file biner dapat dieksekusi.
$ chmod +x mc
Pindahkan biner ke /usr/local/bin
direktori.
$ sudo mv mc /usr/local/bin
Verifikasi penginstalan.
$ mc --version mc version RELEASE.2022-02-02T02-03-24Z
Tetapkan alias untuk server Minio Anda sehingga Anda dapat mengaksesnya menggunakan nama yang mudah dikenali. Ganti minio
dan miniostorage
dengan nama pengguna dan kata sandi yang Anda pilih untuk server.
$ mc alias set howtoforge https://minio.example.com:9000 minio miniostorage mc: Configuration written to `/home/<user>/.mc/config.json`. Please update your access credentials. mc: Successfully created `/home/<user>/.mc/share`. mc: Initialized share uploads `/home/<user>/.mc/share/uploads.json` file. mc: Initialized share downloads `/home/<user>/.mc/share/downloads.json` file. Added `howtoforge` successfully.
Klien Minio menyimpan semua konfigurasi di /home/user/.mc
direktori.
Dapatkan informasi server Minio. Kami menggunakan admin
sub-perintah untuk ini.
$ mc admin info howtoforge ? minio.example.com:9000 Uptime: 2 minutes Version: 2022-01-28T02:28:16Z Network: 1/1 OK 9.6 MiB Used, 1 Bucket, 5 Objects
Untuk membuat daftar semua ember di bawah server Minio Anda, gunakan perintah berikut.
$ mc ls howtoforge [2022-02-01 16:59:46 UTC] 0B howtoforge/
Untuk membuat daftar semua objek/file dalam ember tertentu, gunakan perintah berikut.
$ mc ls howtoforge/howtoforge [2022-02-02 05:32:28 UTC] 2.9MiB STANDARD IMG_20160717_184947_HDR.jpg [2022-02-02 05:32:00 UTC] 2.2MiB STANDARD IMG_20160903_220639_HDR.jpg [2022-02-02 05:28:25 UTC] 2.4MiB STANDARD IMG_20161006_213936_HDR.jpg [2022-02-02 05:28:07 UTC] 2.2MiB STANDARD IMG_20161015_194409_HDR.jpg [2022-02-02 03:33:28 UTC] 25KiB STANDARD quarantine.jpg
Anda dapat membuat ember baru menggunakan perintah berikut.
$ mc mb howtoforge/bucket2 Bucket created successfully `howtoforge/bucket2`.
Mari kita buat file baru untuk disalin ke ember ini.
$ touch test.txt
Untuk menyalin file ke bucket yang baru dibuat, gunakan perintah berikut.
$ mc cp test.txt howtoforge/bucket2 /home/nspeaks/test.txt: 0 B / ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????
Buat daftar file yang baru disalin.
$ mc ls howtoforge/bucket2 [2022-02-02 07:06:44 UTC] 0B STANDARD test.txt
Anda dapat memeriksa semua perintah dengan menggunakan --help
argumen.
$ mc --help NAME: mc - MinIO Client for cloud storage and filesystems. USAGE: mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...] COMMANDS: alias set, remove and list aliases in configuration file ls list buckets and objects mb make a bucket rb remove a bucket cp copy objects mirror synchronize object(s) to a remote site cat display object contents head display first 'n' lines of an object pipe stream STDIN to an object share generate URL for temporary access to an object find search for objects sql run sql queries on objects stat show object metadata mv move objects tree list buckets and objects in a tree format du summarize disk usage recursively retention set retention for object(s) legalhold manage legal hold for object(s) diff list differences in object name, size, and date between two buckets rm remove object(s) version manage bucket versioning ilm manage bucket lifecycle encrypt manage bucket encryption config event manage object notifications watch listen for object notification events undo undo PUT/DELETE operations anonymous manage anonymous access to buckets and objects tag manage tags for bucket and object(s) replicate configure server side bucket replication admin manage MinIO servers update update mc to latest release support Support related commands GLOBAL FLAGS: --autocompletion install auto-completion for your shell --config-dir value, -C value path to configuration folder (default: "/home/<user>/.mc") --quiet, -q disable progress bar display --no-color disable color theme --json enable JSON lines formatted output --debug enable debug output --insecure disable SSL certificate verification --help, -h show help --version, -v print the version TIP: Use 'mc --autocompletion' to enable shell autocompletion VERSION: RELEASE.2022-02-02T02-03-24Z
Kesimpulan
Ini menyimpulkan tutorial kami di mana Anda menginstal server penyimpanan objek Minio pada server berbasis Ubuntu 20.04. Ini dapat diakses melalui konsol web yang dilindungi oleh sertifikat SSL Let's Encrypt. Anda juga menginstal klien baris perintah Minio di mesin Ubuntu lain untuk mengelola dan mengakses server Minio.
Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.