MinIO

From SME Server

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