Amazon S3 kompatibler Object Storage Server mit MINIO

Mein V-Server verfügt über sehr begrenzte Speicherkapazität. Deshalb musste eine Lösung her, um größere Datenmengen auf meinen heimischen Server auszulagern. Da meine VDSL Leitung mit 40 Mbit Upload aufwartet, kann man zumindest Daten mit nicht stetigem Zugriff darüber bereitzustellen.

Auf der Suche nach einer Lösung bin ich über den Object Storage Server  MINIO gestolpert.

Dieses Tutorial soll der Installation und Einrichtung eines MINIO Servers dienen.

Auf meinem Server läuft ein aktuelles Gentoo Linux. Die entsprechenden Installationsroutinen der notwendigen Pakete sollten der selbst verwendeten Distribution angepasst werden.

Installation

Zuerst installieren wir den MINIO Server. Bei Gentoo ist das Ebuild in Portage bereits enthalten. Der Softwarestand bei Erstellung dieses Tutorials war „2018.11.06.01.01.02“.

emerge -a net-fs/minio

Konfiguration

Nach Installation ist der Standard-Speicherpfad von MINIO in „/var/lib/minio“. Wem dieser Ort nicht zusagt, kann diesen entsprechen ändern. In meinem Fall sollen die Daten im „/home“ Verzeichnis des MINIO Benutzers abgelegt werden.

mkdir /home/minio
chown -R minio:minio /home/minio

Für den Konfigurations Ordner habe ich mich für „/etc/minio“ entschieden. Also legt man sich den Ordner entsprechend an.

mkdir /etc/minio

Um MINIO mitzuteilen, welcher Ordner verwendet werden soll, muss man das Init Script anpassen, da keine üblich Konfigurationsdatei in „/etc/conf.d/“ angelegt wird

nano /etc/init.d/minio

Der Inhalt sollte nach Änderung in meinem Beispiel folgendermaßen aussehen.

#!/sbin/openrc-run
# Copyright 2016-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

description="Minio Object Storage Server"
pidfile=${pidfile:-"/run/${SVCNAME}.pid"}
command="/usr/bin/minio"
command_args="${command_args:-server /home/minio -C /etc/minio}"
command_background="true"
start_stop_daemon_args="--stdout /var/log/${SVCNAME}.log \
        --stderr /var/log/${SVCNAME}.log"

Danach startet man den Server und fügt ihn zum Systemstart hinzu.

/etc/init.d/minio start
rc-update add minio default

Nun sollte das Webinterface von MINIO im Browser unter der IP oder Hostnamen des Server erreichbar sein ( http://hostname:9000 ). Der Standard-Port von MINIO ist Port 9000 .

Wenn bisher alles richtig gemacht wurde, sollte sich bei euch der Login Screen des Webinterfaces zeigen.

MINIO Webinterface Login

Den Access und Secret Key findet man in der Konfigurationsdatei von MINIO. In meinem Beispiel wäre das unter „/home/minio/.minio.sys/config/config.json“. Beim Start von MINIO wurden diese generiert.

{
        "version": "31",
        "credential": {
                "accessKey": "O0V98PFSB0QKWHK6J86O",
                "secretKey": "NAZtvTEgYTnWVMm7EOpkrph5FslWA0dydSLa1T7q",
                "expiration": "1970-01-01T00:00:00Z",
                "status": "enabled"
        },
...

Die Keys kopiert man sich und fügt diese in die entsprechenden Eingabefelder ein. Die Daten sind selbstredend geheim zu halten. Ist man im Webinterface angemeldet kann man diese im Menü immer wieder neu generieren lassen (Change Password -> Generate -> Update).

Dateien hochladen

Bevor man nun anfangen kann Dateien hochzuladen, muss im Webinterface mindestens ein „Bucket“ angelegt werden.

MINIO Bucket erstellen

Sind die Buckets angelegt, kann man damit beginnen Dateien hochzuladen.

Verbindung absichern mit SSL

In der bisher beschriebenen Konfiguration von MINIO läuft die Datenübertragung komplett unverschlüsselt ab. Deshalb empfiehlt sich dringend eine Absicherung mittels HTTPS.

Hierfür muss man im Konfigurationsordner von MINIO *.key und *.crt Dateien platzieren. MINIO unterstützt nur Keys und Zertifikate im PEM Format. Die Dateien müssen in meinem Beispiel im Ordner /etc/minio/certs platziert werden. Dabei sind die Dateinamen wichtig:

private.key
public.crt

Ich gehe in dieser Anleitung jetzt nicht auf das Generieren von SSL Zertifikaten ein, da es hierfür mehr als genug Tutorials im Netz gibt.

Danach muss man den MINIO Server neu starten.

/etc/init.d/minio restart

Nun kann man sich per HTTPS mit dem MINIO Server verbinden. Sobald SSL Zertifikate hinterlegt wurden, wird vom Server nur noch eine HTTPS Verbindung zugelassen.

Fazit

MINIO ist ein sehr einfach einzurichtender Object Storage Server der mir bisher sehr zuverlässige Dienste erwiesen hat. Ich kann ihn deshalb nur wärmstens empfehlen.

Hiermit ist dieses Tutorial abgeschlossen. Ich hoffe es war hilfreich für euch! Wenn Ihr mich unterstützen wollt, könnt ihr das sehr gerne hier tun.

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.