Install

1
2
3
4
5
6
7
wget https://dl.min.io/server/minio/release/linux-amd64/minio
sudo cp minio /usr/local/bin
sudo chmod +x /usr/local/bin/minio

sudo mkdir -p /var/lib/minio
sudo chown -R www-data:www-data /var/lib/minio
sudo chmod 750 /var/lib/minio

Starting by manually

1
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /var/lib/minio --console-address ":9001"

Starting by systemd

  • /usr/lib/systemd/system/minio.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[Unit]
Description=MinIO offers high-performance, S3 compatible object storage.
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/lib/minio
ExecStart=/usr/local/bin/minio server data
Restart=always
RestartSec=10s
Environment="MINIO_SERVER_URL=https://assets.CHANGE-me.org"
Environment="MINIO_ADDRESS=127.0.0.1:9000"
Environment="MINIO_CONSOLE_ADDRESS=127.0.0.1:9001"
Environment="MINIO_ROOT_USER=www"
Environment="MINIO_ROOT_PASSWORD=change-me"

[Install]
WantedBy=multi-user.target
1
2
sudo systemctl enable minio
sudo systemctl start minio

Usages

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# test connection
mc admin info XXX
#
mc du XXX
# list bucket
mc ls XXX
mc ls XXX/BUCKET
# create bucket
mc mb XXX/BUCKET
mc anonymous set download XXX/BUCKET
# upload
mc cp FFF XXX/BUCKET
# rename bucket
mc mv --recursive XXX/BUCKET1 XXX/BUCKET2
# remove bucket
mc rb XXX/BUCKET
# remove file
mc rm XXX/BUCKET/OBJECT

mc share ls upload myminio/mydata
mc share ls download myminio/mydata
mc share download myminio/testing/blabla.jpeg

/usr/lib/systemd/system/minio.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[Unit]
Description=MinIO offers high-performance, S3 compatible object storage.
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/lib/minio
ExecStart=/usr/local/bin/minio server data
Restart=always
RestartSec=10s
Environment="MINIO_SERVER_URL=https://www.change-me.org"
Environment="MINIO_ADDRESS=127.0.0.1:9000"
Environment="MINIO_CONSOLE_ADDRESS=127.0.0.1:9001"
Environment="MINIO_ROOT_USER=admin"
Environment="MINIO_ROOT_PASSWORD=$(pwgen 32 1)"

[Install]
WantedBy=multi-user.target

nginx.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
upstream minio_s3 {
  least_conn;
  server localhost:9000;
}

upstream minio_console {
  least_conn;
  server localhost:9001;
}

server {
   listen       80;
   server_name  assets.CHANGE-ME.org;

   charset utf-8;
   access_log /var/log/nginx/assets.CHANGE-ME.org.access.log;
   error_log  /var/log/nginx/assets.CHANGE-ME.org.error.log;

   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      chunked_transfer_encoding off;

      proxy_pass http://minio_s3;
   }
}

server {

   listen       80;
   server_name  s3.CHANGE-ME.org;

   charset utf-8;
   access_log /var/log/nginx/s3.CHANGE-ME.org.access.log;
   error_log  /var/log/nginx/s3.CHANGE-ME.org.error.log;


   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;

      real_ip_header X-Real-IP;

      proxy_connect_timeout 300;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      chunked_transfer_encoding off;

      proxy_pass http://minio_console/;
   }
}

Cluster

  • nginx.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
upstream minio_s3 {
  least_conn;
  server 192.168.0.11:9000;
  server 192.168.0.12:9000;
  server 192.168.0.13:9000;
  server 192.168.0.14:9000;
}

upstream minio_console {
  least_conn;
  server 192.168.0.11:9001;
  server 192.168.0.12:9001;
  server 192.168.0.13:9001;
  server 192.168.0.14:9001;
}
  • /usr/lib/systemd/system/minio.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[Unit]
Description=MinIO offers high-performance, S3 compatible object storage.
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/lib/minio
ExecStart=/usr/local/bin/minio server --config-dir /etc/minio --address ":9000" --console-address ":9001" http://node{1..4}.change-me.org/var/lib/minio/data
Restart=always
RestartSec=10s
Environment="MINIO_SERVER_URL=https://www.change-me.com"
Environment="MINIO_ROOT_USER=admin"
Environment="MINIO_ROOT_PASSWORD=$(pwgen 32 1)"

[Install]
WantedBy=multi-user.target

Documents