MinIO
A self-hosted object store that speaks S3.
MinIO is a self-hosted object store, compatible with the S3 API, and able to replicate to other object stores.
Installation
There’s no Debian package, so it’s a binary and a service file. On a Debian server, start with a user for it to run as.
sudo adduser --disabled-login --no-create-home minio
Then fetch the binary and put it somewhere sensible.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mkdir -p /opt/minio/bin
sudo cp minio /opt/minio/bin/minio
sudo chmod 755 /opt/minio/bin/minio
sudo chown minio:minio /opt/minio/bin/minio
Somewhere for the objects, and somewhere for the configuration.
sudo mkdir -p /var/opt/minio
sudo chown minio:minio /var/opt/minio
sudo mkdir -p /etc/opt/minio
sudo chown minio:minio /etc/opt/minio
The Service File
The root user and password in the environment line below are placeholders. Change them before this is reachable by anything.
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/opt/minio/bin/minio
[Service]
WorkingDirectory=/var/opt/minio
User=minio
Group=minio
ProtectProc=invisible
Environment=MINIO_VOLUMES="/var/opt/minio" MINIO_OPTS="-C /etc/opt/minio --address 127.0.0.1:9000" MINIO_ROOT_USER="root" MINIO_ROOT_PASSWORD="password"
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/opt/minio/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=1048576
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now minio