Difference between revisions of "MinIO"

From SME Server
Jump to navigationJump to search
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
Installing MinIO on SME
+
== Installing MinIO on SME ==
 +
 
 +
===General Notes===
  
 
Just some notes on the basics of installing MinIO
 
Just some notes on the basics of installing MinIO
  
It works, but needs a startup script to automate start/stop
+
This could be used with your own instance of say [RClone](https://wiki.contribs.org/Rclone) or Rocket.Chat
  
This could be used with your own instance of say [RClone](https://wiki.contribs.org/Rclone)
+
Documentation here:
  
 
https://min.io/download#/linux
 
https://min.io/download#/linux
 +
 
https://docs.min.io/docs/minio-quickstart-guide.html
 
https://docs.min.io/docs/minio-quickstart-guide.html
 +
 
https://docs.min.io/docs/minio-server-configuration-guide.html
 
https://docs.min.io/docs/minio-server-configuration-guide.html
  
Followed notes form here
+
Followed notes from here https://www.centosblog.com/install-configure-minio-object-storage-server-centos-linux/
https://www.centosblog.com/install-configure-minio-object-storage-server-centos-linux/
 
 
 
  
Install Minio on Centos Linux
+
=== Install Minio on SME v9 ===
  
 
+
"In this example, we’ll install Minio to /opt/minio, and [won't] configure it to run as a (systemd) service."
In this example, we’ll install Minio to /opt/minio, and [won't] configure it to run as a (systemd) service.
 
  
 
Add a minio user [This is not the standard SME way but just for testing]
 
Add a minio user [This is not the standard SME way but just for testing]
Line 34: Line 35:
 
  chown -R minio:minio /opt/minio
 
  chown -R minio:minio /opt/minio
  
 +
===Start MinIO===
 +
 +
Start it manually so you can get the Keys that you will require.
  
 
This will start on all interfaces:
 
This will start on all interfaces:
Line 43: Line 47:
 
  /opt/minio/bin/minio server --address 1.2.3.4:9000 /opt/minio/data
 
  /opt/minio/bin/minio server --address 1.2.3.4:9000 /opt/minio/data
  
 +
Once you have the keys you can then follow the instructions for Automated Service below.
  
Note this only runs on http. It could run http but for EXTERNAL access it is recommended to run a revers proxy. You can then use SSL certs as well.
+
Note this only runs on http. It could run https but for EXTERNAL access but you need to set it up with certs (see docs)
 +
It is recommended to run a reverse proxy and use the general server SSL certs
  
Make sure you keep a note of the AccessKey and SecretKey.
+
Make sure you keep a note of the AccessKey and SecretKey when you start the first time
  
 
You can access the server via http://1.2.3.4:9000
 
You can access the server via http://1.2.3.4:9000
Line 54: Line 60:
 
  /opt/minio/bin/minio --help
 
  /opt/minio/bin/minio --help
  
MinIO configuration client and commands
+
===MinIO configuration client and commands===
 +
 
 +
Be CAREFUL as you have mc - midnight commander installed !!!!!
 +
 
 +
https://github.com/minio/mc/blob/master/docs/minio-admin-complete-guide.md
 +
https://docs.min.io/docs/minio-client-quickstart-guide
 +
 
 +
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /opt/minio/bin/mc
 +
chmod +x /opt/minio/bin/mc
 +
/opt/minio/bin/mc --help
 +
 
 +
Add a location for your server:
 +
 
 +
/opt/minio/bin/mc config host add minio http://192.168.1.1:9000 <ACCESS KEY> <SECRET KEY>
 +
 
 +
Run a command:
 +
 
 +
/opt/minio/bin/mc admin info server minio
  
  https://github.com/minio/mc/blob/master/docs/minio-admin-complete-guide.md
+
  /opt/minio/bin/mc ls minio
 +
[2019-10-16 16:54:53 CEST]      0B bucket1/
  
This can enable tracing for issues etc
+
Help:
 +
/opt/minio/bin/mc -h
  
 +
This can enable tracing for issues, modify configuration etc
  
Some other notes
+
 
 +
====Automated startup====
  
 
Init scripts that don't work on SME - note there is a Unit file for systemd
 
Init scripts that don't work on SME - note there is a Unit file for systemd
  
 
git clone https://github.com/minio/minio-service.git
 
git clone https://github.com/minio/minio-service.git
 +
 +
Initscript borrowed from here:
 +
 +
https://github.com/fhd/init-script-template/blob/master/template
 +
 +
#!/bin/sh
 +
### BEGIN INIT INFO
 +
# Provides:
 +
# Required-Start:    $remote_fs $syslog
 +
# Required-Stop:    $remote_fs $syslog
 +
# Default-Start:    2 3 4 5
 +
# Default-Stop:      0 1 6
 +
# Short-Description: Start daemon at boot time
 +
# Description:      Enable service provided by daemon.
 +
### END INIT INFO
 +
 +
# dir not used here
 +
# dir="/opt/minio"
 +
# cmd is the whole command - it could be templated break it down in to bits
 +
# add your own details etc etc
 +
# Change the IP address to your local one
 +
cmd="/opt/minio/bin/minio server --address 192.168.1.1:9000 /opt/minio/data"
 +
# user=""
 +
 +
name=`basename $0`
 +
pid_file="/var/run/$name.pid"
 +
stdout_log="/var/log/$name.log"
 +
stderr_log="/var/log/$name.err"
 +
 +
get_pid() {
 +
    cat "$pid_file"
 +
}
 +
 +
is_running() {
 +
    [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1
 +
}
 +
 +
case "$1" in
 +
    start)
 +
    if is_running; then
 +
        echo "Already started"
 +
    else
 +
        echo "Starting $name"
 +
        cd "$dir"
 +
        $cmd >> "$stdout_log" 2>> "$stderr_log" &
 +
        echo $! > "$pid_file"
 +
        if ! is_running; then
 +
            echo "Unable to start, see $stdout_log and $stderr_log"
 +
            exit 1
 +
        fi
 +
    fi
 +
    ;;
 +
    stop)
 +
    if is_running; then
 +
        echo -n "Stopping $name.."
 +
        kill `get_pid`
 +
        for i in 1 2 3 4 5 6 7 8 9 10
 +
        # for i in `seq 10`
 +
        do
 +
            if ! is_running; then
 +
                break
 +
            fi
 +
 +
            echo -n "."
 +
            sleep 1
 +
        done
 +
        echo
 +
 +
        if is_running; then
 +
            echo "Not stopped; may still be shutting down or shutdown may have failed"
 +
            exit 1
 +
        else
 +
            echo "Stopped"
 +
            if [ -f "$pid_file" ]; then
 +
                rm "$pid_file"
 +
            fi
 +
        fi
 +
    else
 +
        echo "Not running"
 +
    fi
 +
    ;;
 +
    restart)
 +
    $0 stop
 +
    if is_running; then
 +
        echo "Unable to stop, will not attempt to start"
 +
        exit 1
 +
    fi
 +
    $0 start
 +
    ;;
 +
    status)
 +
    if is_running; then
 +
        echo "Running"
 +
    else
 +
        echo "Stopped"
 +
        exit 1
 +
    fi
 +
    ;;
 +
    *)
 +
    echo "Usage: $0 {start|stop|restart|status}"
 +
    exit 1
 +
    ;;
 +
esac
 +
 +
exit 0
 +
 +
 +
It would need:
 +
 +
ckkconfig minio on
 +
 +
You can probably link to daemon tool:
 +
 +
ln -s /etc/rc.d/init.d/e-smith-service S85minio
 +
 +
config set minio service status enabled
 +
 +
service minio start|stop|restart|status

Latest revision as of 12:52, 17 June 2020

Installing MinIO on SME

General Notes

Just some notes on the basics of installing MinIO

This could be used with your own instance of say [RClone](https://wiki.contribs.org/Rclone) or Rocket.Chat

Documentation here:

https://min.io/download#/linux

https://docs.min.io/docs/minio-quickstart-guide.html

https://docs.min.io/docs/minio-server-configuration-guide.html

Followed notes from here https://www.centosblog.com/install-configure-minio-object-storage-server-centos-linux/

Install Minio on SME v9

"In this example, we’ll install Minio to /opt/minio, and [won't] configure it to run as a (systemd) service."

Add a minio user [This is not the standard SME way but just for testing]

useradd -s /sbin/nologin -d /opt/minio minio

Set up directories

mkdir -p /opt/minio/bin
mkdir /opt/minio/data # this will be your data partition	

Install minio server binary and set it to executable. In this example we use the Linux x64 binary.

wget https://dl.minio.io/server/minio/release/linux-amd64/minio -O /opt/minio/bin/minio
chmod +x /opt/minio/bin/minio

Ensure all files are owned by minio in /opt/minio:

chown -R minio:minio /opt/minio

Start MinIO

Start it manually so you can get the Keys that you will require.

This will start on all interfaces:

/opt/minio/bin/minio server /opt/minio/data

This will limit it to one interface:

/opt/minio/bin/minio server --address 1.2.3.4:9000 /opt/minio/data

Once you have the keys you can then follow the instructions for Automated Service below.

Note this only runs on http. It could run https but for EXTERNAL access but you need to set it up with certs (see docs) It is recommended to run a reverse proxy and use the general server SSL certs

Make sure you keep a note of the AccessKey and SecretKey when you start the first time

You can access the server via http://1.2.3.4:9000

Other options

/opt/minio/bin/minio --help

MinIO configuration client and commands

Be CAREFUL as you have mc - midnight commander installed !!!!!

https://github.com/minio/mc/blob/master/docs/minio-admin-complete-guide.md https://docs.min.io/docs/minio-client-quickstart-guide

wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /opt/minio/bin/mc
chmod +x /opt/minio/bin/mc
/opt/minio/bin/mc --help

Add a location for your server:

/opt/minio/bin/mc config host add minio http://192.168.1.1:9000 <ACCESS KEY> <SECRET KEY>

Run a command:

/opt/minio/bin/mc admin info server minio
/opt/minio/bin/mc ls minio
[2019-10-16 16:54:53 CEST]      0B bucket1/

Help:

/opt/minio/bin/mc -h

This can enable tracing for issues, modify configuration etc


Automated startup

Init scripts that don't work on SME - note there is a Unit file for systemd

git clone https://github.com/minio/minio-service.git

Initscript borrowed from here:

https://github.com/fhd/init-script-template/blob/master/template

#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

# dir not used here
# dir="/opt/minio"
# cmd is the whole command - it could be templated break it down in to bits
# add your own details etc etc
# Change the IP address to your local one
cmd="/opt/minio/bin/minio server --address 192.168.1.1:9000 /opt/minio/data"
# user=""

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
   cat "$pid_file"
}

is_running() {
   [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1
}

case "$1" in
   start)
   if is_running; then
       echo "Already started"
   else
       echo "Starting $name"
       cd "$dir"
       $cmd >> "$stdout_log" 2>> "$stderr_log" &
       echo $! > "$pid_file"
       if ! is_running; then
           echo "Unable to start, see $stdout_log and $stderr_log"
           exit 1
       fi
   fi
   ;;
   stop)
   if is_running; then
       echo -n "Stopping $name.."
       kill `get_pid`
       for i in 1 2 3 4 5 6 7 8 9 10
       # for i in `seq 10`
       do
           if ! is_running; then
               break
           fi

           echo -n "."
           sleep 1
       done
       echo

       if is_running; then
           echo "Not stopped; may still be shutting down or shutdown may have failed"
           exit 1
       else
           echo "Stopped"
           if [ -f "$pid_file" ]; then
               rm "$pid_file"
           fi
       fi
   else
       echo "Not running"
   fi
   ;;
   restart)
   $0 stop
   if is_running; then
       echo "Unable to stop, will not attempt to start"
       exit 1
   fi
   $0 start
   ;;
   status)
   if is_running; then
       echo "Running"
   else
       echo "Stopped"
       exit 1
   fi
   ;;
   *)
   echo "Usage: $0 {start|stop|restart|status}"
   exit 1
   ;;
esac

exit 0


It would need:

ckkconfig minio on

You can probably link to daemon tool:

ln -s /etc/rc.d/init.d/e-smith-service S85minio
config set minio service status enabled
service minio start|stop|restart|status