= Swarm Minio HowTo!
Apostolos rootApostolos@swarmlab.io
:description: IoT  Εισαγωγή στο Cloud
:keywords: Cloud, swarm
:data-uri:
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:source-highlighter: coderay
:icons: font
:sectnums: 

include::header.adoc[]


{empty} +

== configure Minio

=== Connect to Server

.create policy
[source,yaml]
----
mc config host add --insecure [SESSION] https://ip:9443 key secret --api s3v4 
e.g.
mc config host add --insecure mysession https://83.212.119.119:9443 mykey mysecret --api s3v4 
----

=== Create policy

.create Default policy file: test.json
[source,yaml]
----
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          ""
        ]
      },
      "Action": [
        "s3:GetBucketLocation", // <1>
        "s3:HeadBucket",	// <1>
        "s3:ListBucket",	// <1>
        "s3:ListBucketMultipartUploads"	// <1>
      ],
      "Resource": [
        "arn:aws:s3:::test" 	// <2>
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:DeleteObject",	// <3>
        "s3:GetObject",		// <3>
        "s3:ListMultipartUploadParts",	// <3>
        "s3:PutObject"	// <3>
      ],
      "Resource": [
        "arn:aws:s3:::test/*"	// <4>
      ]
    }
  ]
}
----
<1> Bucket properties https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html[more info^]
<2> Bucket source
<3> Object properties https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-objects[more info^]
<3> Object  source


=== Apply policy

.create policy
[source,yaml]
----
#!/bin/bash

mc mb --insecure  mymsession/test  // <1>

mc admin policy add --insecure mymisession test ./test.json  // <2>

mc admin user add --insecure mymsession usertest  bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd  // <3>

mc admin policy set --insecure mymsession test user=usertest  // <4>
----
<1> create bucket
<2> Apply policy
<3> create user
<4> Apply policy User2bucket


=== Sync local2Server

.sync local2server
[source,yaml]
----
export MINIO_MIRROR_PARAMETERS="--delete"
export MINIO_SERVER_URL="ip:9443"	// <1>
export MINIO_PROT=https
export MINIO_SERVER_DOCUMENTROOT="/home/user/syncdir" // <2>
export MINIO_WEB_BUCKET=test1
export MINIO_WEB_PASS="bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd"
export AWS_CONFIG_FILE="$HOME/.aws/config" 
export AWS_ACCESS_KEY_ID=$MINIO_WEB_BUCKET
export AWS_SECRET_ACCESS_KEY=$MINIO_WEB_PASS

aws --endpoint-url $MINIO_PROT://$MINIO_SERVER_URL s3 sync  MINIO_SERVER_DOCUMENTROOT s3://$MINIO_WEB_BUCKET  $MINIO_MIRROR_PARAMETERS
----
<1> Minio Server ip
<2> Directory sync



=== Sync Server2Local

.sync server2local
[source,yaml]
----
export MINIO_MIRROR_PARAMETERS="--delete"
export MINIO_SERVER_URL="ip:9443"	// <1>
export MINIO_PROT=https
export MINIO_SERVER_DOCUMENTROOT="/var/www/html" // <2>
export MINIO_WEB_BUCKET=test
export MINIO_WEB_PASS="bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd"
export AWS_CONFIG_FILE="$HOME/.aws/config" 
export AWS_ACCESS_KEY_ID=$MINIO_WEB_BUCKET
export AWS_SECRET_ACCESS_KEY=$MINIO_WEB_PASS

aws --endpoint-url $MINIO_PROT://$MINIO_SERVER_URL s3 sync  s3://$MINIO_WEB_BUCKET $MINIO_SERVER_DOCUMENTROOT $MINIO_MIRROR_PARAMETERS
----
<1> Minio Server ip
<2> Directory sync


=== Docker-compose env

.sync docker-compose env
[source,yaml]
----
    environment: //<1>
     - MINIO_MIRROR_PARAMETERS= --delete
     - MINIO_SERVER_URL=ip:9443
     - MINIO_PROT=https
     - MINIO_SERVER_DOCUMENTROOT=/var/www/html
     - MINIO_WEB_BUCKET=test
     - MINIO_WEB_PASS=bfksdkdjhdbhfbsdhbhf79fcbc7idjfdsjfsdbhfbhdbfhsd
     - AWS_CONFIG_FILE=/home/user/.aws/config
----
<1> add env to docker-comose


=== Automating sync with cron

.crond file 
[source,yaml]
----
*/15 * * * * root /PATH/local2server >> /var/log/usercron.log 2>&1 / <1>
----
<1> Every 15 minutes
