Tujuan: Dokumen ini adalah versi yang sesuai untuk dikongsi secara awam. Semua alamat IP sebenar, nama pengguna, dan kata laluan telah digantikan dengan contoh/tempahan supaya tidak mendedahkan maklumat sensitif.
Nota penting: Sentiasa gantikan nilai contoh di bawah (<...>) dengan nilai sebenar yang selamat dan unik apabila mengimplementasikan pada persekitaran produksi.
Panduan ini menerangkan langkah utama untuk:
- Memasang Podman dan komponen rangkaian rootless
- Menala parameter kernel (sysctl)
- Menyediakan pengguna khusus dan direktori storan
- Menjana sijil TLS menggunakan CA dalaman (contoh)
- Membuat unit systemd untuk menjalankan MinIO dalam Podman Pod (rootless)
- Mengkonfigurasi MinIO Client (
mc) dan polisi pengguna
Semua konfigurasi yang mengandungi alamat, nama pengguna, atau kata laluan telah ditukar kepada contoh seperti minio.example.com, exampleuser, dan REPLACE_WITH_STRONG_PASSWORD.
- Ubuntu 24.04
- Akses
sudo - Sambungan rangkaian ke repositori pakej
sudo apt update
sudo apt install -y podman slirp4netns openssl
podman --version
Jika anda merancang untuk prestasi rangkaian lebih baik pada rootless, pertimbangkan pasta apabila tersedia untuk versi Podman anda. slirp4netns adalah lalai tetapi mempunyai batasan prestasi.
Tambahkan baris berikut ke /etc/sysctl.conf (nilai contoh; ubah mengikut keperluan):
vm.max_map_count = 262144
vm.overcommit_memory = 1
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
vm.swappiness = 10
fs.file-max = 65536000
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
vm.dirty_bytes = 629145600
vm.dirty_background_bytes = 314572800
fs.inotify.max_user_watches = 500000
net.core.somaxconn = 2147483647
net.ipv4.ip_local_port_range = 1024 65535
Kemudian aktifkan tanpa reboot:
sudo sysctl -p
Gunakan nama pengguna contoh minio atau serupa. Di bawah ialah arahan contoh:
sudo adduser --system --group --no-create-home minio
sudo mkdir -p /data/minio
sudo mkdir -p /etc/minio/certs /etc/minio/certs/CAs
sudo chown -R minio:minio /data/minio /etc/minio
sudo loginctl enable-linger minio
Amaran: Jika anda menjalankan MinIO rootless, pastikan pemilik direktori adalah sama seperti pengguna yang menjalankan Podman rootless.
Fail konfigurasi contoh untuk SAN (/etc/minio/certs/minio_cert.cnf):
[ req ]
default_bits = 4096
prompt = no
default_md = sha256
req_extensions = v3_req
distinguished_name = dn
[ dn ]
C = MY
ST = Wilayah
L = Bandar
O = ExampleOrg
OU = IT
CN = minio.example.com
[ v3_req ]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = minio.example.com
DNS.2 = localhost
IP.1 = 192.0.2.10
IP.2 = 127.0.0.1
Langkah penjanaan (contoh):
cd /etc/minio/certs
# Jana kunci CA (simpan dengan selamat)
openssl genrsa -aes256 -passout pass:REPLACE_WITH_CA_PASS -out ca.key 4096
openssl req -new -x509 -sha256 -days 3650 -subj "/C=MY/ST=Wilayah/L=Bandar/O=ExampleOrg/OU=IT/CN=Example CA" -passin pass:REPLACE_WITH_CA_PASS -key ca.key -out cacerts.pem
# Kunci pelayan dan CSR
openssl genrsa -out private.key 4096
openssl req -new -sha256 -subj "/CN=minio.example.com" -key private.key -out cert.csr
# Tandatangan sijil pelayan
openssl x509 -req -sha256 -days 3650 -passin pass:REPLACE_WITH_CA_PASS -in cert.csr -CA cacerts.pem -CAkey ca.key -out public.crt -extfile minio_cert.cnf -CAcreateserial
# Salin Root CA untuk MinIO CAs
cp cacerts.pem CAs/ca.crt
# Jadikan sistem hos mempercayai CA (contoh)
sudo cp cacerts.pem /usr/local/share/ca-certificates/minio-ca.crt
sudo update-ca-certificates
sudo chown -R minio:minio /etc/minio/certs
Gantikan REPLACE_WITH_CA_PASS dengan frasa laluan yang selamat. Simpan kunci CA (ca.key) di lokasi yang selamat dan hadkan aksesnya.
Contoh fail: /etc/systemd/system/container-minio.service
[Unit]
Description=MinIO Object Storage (Podman Rootless)
After=network-online.target
Wants=network-online.target
[Service]
User=minio
Group=minio
Restart=always
RestartSec=5s
LimitNOFILE=1048576
ExecStartPre=/usr/bin/podman pod create --name minio-pod -p 9000:9000 -p 9001:9001
ExecStart=/usr/bin/podman run --pod minio-pod \
--name minio-server \
-v /data/minio:/data \
-v /etc/minio/certs:/root/.minio/certs:z \
-e MINIO_ROOT_USER='REPLACE_WITH_ROOT_USER' \
-e MINIO_ROOT_PASSWORD='REPLACE_WITH_STRONG_PASSWORD' \
quay.io/minio/minio:latest server /data --console-address ":9001"
ExecStop=/usr/bin/podman pod stop -t 10 minio-pod
ExecStopPost=/usr/bin/podman pod rm -f minio-pod
[Install]
WantedBy=multi-user.target
Penting: Gantikan REPLACE_WITH_ROOT_USER dan REPLACE_WITH_STRONG_PASSWORD dengan nilai sebenar yang kuat. Jangan gunakan kata laluan contoh ini pada sistem produksi.
curl https://dl.min.io/client/mc/release/linux-amd64/mc --create-dirs -o $HOME/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
sudo mv $HOME/minio-binaries/mc /usr/local/bin/
mc --version
# Tetapkan alias (contoh menggunakan HTTPS)
mc alias set minio-local https://minio.example.com:9000 REPLACE_WITH_ROOT_USER REPLACE_WITH_STRONG_PASSWORD
Jika sijil anda self-signed dan belum dipercayai oleh hos, mc akan meminta --insecure. Sasaran ialah agar anda tidak perlu menggunakan --insecure selepas CA ditambahkan ke storan dipercayai hos.
Gunakan nilai contoh dan gantikan selepas semakan:
# Tambah pengguna API (contoh)
mc admin user add minio-local exampleuser ExamplePassword123!
mc mb minio-local/exampleuser-bucket
# Cipta polisi JSON contoh (had akses kepada bucket sahaja)
cat > exampleuser_policy.json <<
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject","s3:ListBucket"],
"Resource": [
"arn:aws:s3:::exampleuser-bucket/*",
"arn:aws:s3:::exampleuser-bucket"
]
}
]
}
mc admin policy create minio-local exampleuser-policy exampleuser_policy.json
mc admin policy attach minio-local exampleuser-policy --user exampleuser
-
Konsol dalaman (pelayar pada hos):
https://localhost:9001 -
Akses dari rangkaian:
https://minio.example.com:9001
Kelayakan contoh (JANGAN guna pada produksi):
-
Root user:
REPLACE_WITH_ROOT_USER/REPLACE_WITH_STRONG_PASSWORD -
Pengguna contoh:
exampleuser/ExamplePassword123!
-
Gunakan kata laluan panjang dan unik; simpan dalam pengurus rahsia (vault).
-
Hadkan capaian kepada kunci CA dan kunci peribadi pelayan.
-
Audit akses dan aktifkan logging MinIO.
-
Uji pemulihan data secara berkala.
-
Pertimbangkan penggunaan
pastaatau rangkaian lain untuk peningkatan prestasi rootless.
Panduan ini menerangkan langkah utama untuk pemasangan Podman, penalaan kernel, penyediaan pengguna dan sijil TLS, serta konfigurasi MinIO dan polisi pengguna. Semua nilai sensitif telah digantikan dengan placeholder contoh.
Ubuntu 24.04, akses sudo, dan sambungan rangkaian ke repositori pakej.
sudo apt update && sudo apt install -y podman slirp4netns openssl
Tambahkan nilai sysctl contoh dan aktifkan dengan 'sudo sysctl -p'.
Gunakan contoh pengguna 'minio' dan direktori '/data/minio'.
Gantikan CN dan IP dengan contoh 'minio.example.com' dan '192.0.2.10'.
Fail contoh '/etc/systemd/system/container-minio.service' menggunakan placeholder 'REPLACE_WITH_ROOT_USER'.
Gunakan 'mc alias set minio-local https://minio.example.com:9000 REPLACE_WITH_ROOT_USER REPLACE_WITH_STRONG_PASSWORD'.
Contoh pengguna: 'exampleuser' dan polisi akses bucket khusus.
https://minio.example.com:9001 (gunakan placeholder selamat).
Gunakan kata laluan panjang dan unik, audit akses, uji pemulihan data.
Gantikan semua placeholder dengan konfigurasi sebenar dan selamat sebelum digunakan.
Harisfazillah Jamel - 10 Okt 2025 - linuxmalaysia [@] gmail dot com