MinIO und daemontools in alpinelinux

reinhard@finalmedia.de Tue 23 Nov 2021 09:09:13 PM CET # daemontools in alpine linux installieren, dann minio server

Eine bereits bestehende alpine linux installation wird vorausgesetzt. Siehe z.B. hier. nun folgendes:


# repository auf edge setzen und upgraden
cat << +++EOF+++ > /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
#http://dl-cdn.alpinelinux.org/alpine/edge/testing
+++EOF+++
apk update
apk upgrade


# daemontools installieren und starten
apk add nano daemontools bash

# daemontools svscanboot für boot aktivieren und starten
rc-update add svscan
service svscan start

Wir installieren nun minio als dienst in den daemontools und starten diesen


# service verzeichnis erstellen und hineinwechseln
mkdir /srv/minio && cd /srv/minio

# konfiguration erstellen
mkdir configdir && cd configdir
echo "on" > MINIO_BROWSER
echo "ein testsystem" > MINIO_REGION_COMMENT
echo "de-demo" > MINIO_REGION_NAME
echo "hier_ein_passwort" > MINIO_ROOT_PASSWORD
echo "hier_ein_benutzername" > MINIO_ROOT_USER
cd ..

# minio binary (amd64) herunterladen
wget -c https://dl.min.io/server/minio/release/linux-amd64/minio
wget -c https://dl.min.io/server/minio/release/linux-amd64/minio.sha256sum

# sha256 hash prüfen
grep -f <(cut -d " " -f 1 minio.sha256sum) -F <(sha256sum minio) && echo ok || echo error

# binary ausführbar machen
chmod +x minio

# systemuser "minio" erstellen
adduser --system --no-create-home --disabled-login --disabled-password minio

# datenverzeichnis anlegen (z.B ein Mountpoint)
# und dem systemuser zugriff darauf geben
mkdir /mnt/data
chown minio:minio /mnt/data

# daemontools dienst erstellen
cat << +++EOF+++ > /srv/minio/run
#!/bin/sh
exec 2>&1
exec setuidgid minio envdir configdir ./minio server /mnt/data/store{1...4} --address ":9001" --console-address ":9002"
+++EOF+++

# ausführbar machen
chmod +x /srv/minio/run

# dienst starten und lebending halten
ln -s /srv/minio/ /service/

# vergewissern, dass der dienst aktiv ist
svstat /service/minio
netstat -tanup | grep minio

# server rebooten und nochmal vergewissern
reboot
svstat /service/minio
netstat -tanup | grep minio

Rufe nun http://IP_ADRESSE_DES_SERVER:9002 auf, logge dich mich den Credentials ein und erstelle in der Webgui weitere Nutzer und entsprechende Buckets.

Du kannst zusätzlich mit einem apache proxy arbeiten, um TLS zur Verfügung zu stellen. Das erläutere ich hier nicht näher, aber Du kannst dich dabei an folgende Konfiguration anlehnen:

<VirtualHost *:443>
	ServerName beispieldomain.de

	SSLEngine on
	SSLProtocol -All +TLSv1.2 +TLSv1.3

        SSLCertificateFile  /pfad/zu/beispieldomain.de/beispieldomain.de.cer
        SSLCertificateKeyFile /pfad/zu/beispieldomain.de/beispieldomain.de.key
        SSLCertificateChainFile /pfad/zu/beispieldomain.de/fullchain.cer
        SSLCACertificateFile /pfad/zu/beispieldomain.de/ca.cer

	ProxyRequests Off
	ProxyVia Block
	ProxyPreserveHost On

	<Proxy *>
		Require all granted
	</Proxy>

	ProxyPass / http://127.0.0.1:9002/
	ProxyPassReverse / http://127.0.0.1:9002/

</VirtualHost>