One place for hosting & domains

      Einrichten eines Objektspeicherservers mit Minio unter Ubuntu 18.04


      Der Autor hat den Open Internet/Free Speech Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

      Einführung

      Von cloudbasierten Backup-Lösungen bis zu Content Delivery Networks (CDNs) mit Hochverfügbarkeit ist die Möglichkeit, unstrukturierte Blobs von Objektdaten zu speichern und über HTTP-APIs zugänglich zu machen (auch als Objektspeicher bezeichnet), zu einem integralen Bestandteil der modernen Technologielandschaft geworden.

      Minio ist ein beliebter Open-Source-basierter Objektspeicherserver, der mit dem Amazon S3-Cloud-Speicherdienst kompatibel ist. Anwendungen, die so konfiguriert sind, dass sie mit Amazon S3 kommunizieren können, lassen sich auch so konfigurieren, dass Minio eine tragfähige Alternative zu S3 ist, wenn Sie mehr Kontrolle über Ihren Objektspeicherserver wünschen. Der Dienst speichert unstrukturierte Daten wie Fotos, Videos, Protokolldateien, Backups sowie Container/VM-Images und kann sogar einen einzelnen Objektspeicherserver bereitstellen, der mehrere, auf verschiedene Server verteilte Laufwerke in Pools zusammenfasst.

      Minio ist in Go geschrieben, bietet einen Befehlszeilenclient sowie eine Browseroberfläche und unterstützt einen einfachen Queuing-Dienst für Advanced Message Queuing Protocol (AMQP)-, Elasticsearch-, Redis-, NATS- und PostgreSQL-Ziele. Aus allen diesen Gründen kann das Erlernen der Einrichtung eines Minio-Objektspeicherservers die Flexibilität und Nützlichkeit Ihres Projekts deutlich erhöhen.

      In diesem Tutorial werden Sie folgende Aufgaben erledigen:

      • Installieren des Minio-Servers auf Ihrem Ubuntu 18.04-Server und Konfigurieren des Servers als systemd-Dienst

      • Einrichten eines SSL/TLS-Zertifikats mit Let’s Encrypt, um die Kommunikation zwischen Server und Client zu schützen

      • Zugreifen auf die Browseroberfläche von Minio über HTTPS zum Verwenden und Verwalten des Servers

      Voraussetzungen

      Um dieses Tutorial zu absolvieren, benötigen Sie:

      • Einen Ubuntu 18.04-Server, der gemäß unseres Tutorials zur Ersteinrichtung des Ubuntu 18.04-Servers eingerichtet wurde, einschließlich eines sudo non-root users und einer Firewall.

      • Ein vollständig registrierter Domänenamen. Sie können einen Domänennamen bei Namecheap kaufen bzw. kostenlos bei Freenom erhalten. In diesem Tutorial wird Ihre Domäne als your_domain dargestellt.

      • Richten Sie die folgenden DNS-Einträge für Ihren Minio-Server ein. Informationen zum Hinzufügen von DNS-Einträgen für ein DigitalOcean-Droplet finden Sie in unserer Dokumentation zu DNS-Einträgen.

        • Einen A-Eintrag mit Ihrem Servernamen (z. B. minio-server.your_domain), der auf die IPv4-Adresse Ihres Objektservers verweist.
        • (Optional) Wenn Sie möchten, dass Ihr Server über IPv6 erreichbar ist, benötigen Sie einen AAAA-Eintrag, wobei Ihr Servername auf die IPv6-Adresse Ihres Objektservers verweist.

      Schritt 1 – Installieren und Konfigurieren des Minio-Servers

      Sie können den Minio-Server installieren, indem Sie den Quellcode kompilieren oder eine Binärdatei verwenden. Um den Server von der Quelle zu installieren, müssen Sie in Ihrem System mindestens Go 1.12 installiert haben.

      In diesem Schritt installieren Sie den Server über die vorkompilierte Binärdatei und konfigurieren dann den Minio-Server.

      Melden Sie sich zunächst bei Ihrem Server an, indem Sie sammy durch Ihren Benutzernamen und your_server_ip durch die IP-Adresse Ihres Ubuntu 18.04-Servers ersetzen:

      Wenn Sie die Paketdatenbank in letzter Zeit nicht aktualisiert haben, tun Sie es nun:

      Laden Sie als Nächstes die Binärdatei des Minio-Servers von der offiziellen Website herunter:

      • wget https://dl.min.io/server/minio/release/linux-amd64/minio

      Sie werden eine Ausgabe sehen, die etwa folgendermaßen aussieht:

      Output

      --2019-08-27 15:08:49-- https://dl.min.io/server/minio/release/linux-amd64/minio Resolving dl.min.io (dl.min.io)... 178.128.69.202 Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 44511616 (42M) [application/octet-stream] Saving to: ‘minio’ minio 100%[===================>] 42.45M 21.9MB/s in 1.9s 2019-08-27 15:08:51 (21.9 MB/s) - ‘minio’ saved [44511616/44511616]

      Nach Abschluss des Downloads befindet sich in Ihrem Arbeitsverzeichnis eine Datei namens minio. Verwenden Sie folgenden Befehl, um sie ausführbar zu machen:

      Verschieben Sie die Datei nun in das Verzeichnis /usr/local/bin, in dem das Startskript systemd von Minio sie erwartet:

      • sudo mv minio /usr/local/bin

      Das erlaubt es uns später in dem Tutorial, eine Diensteinheitdatei zu schreiben, damit Minio beim Start automatisch ausgeführt wird.

      Aus Sicherheitsgründen ist es besser, den Minio-Server als root auszuführen. So lassen sich Schäden, die bei einer Kompromittierung Ihres Systems entstehen können, begrenzen. Da das in Schritt 2 verwendete Skript systemd nach einem Benutzerkonto und einer Gruppe namens minio-user sucht, erstellen Sie einen neuen Benutzer mit diesem Namen:

      • sudo useradd -r minio-user -s /sbin/nologin

      In diesem Befehl haben Sie das Flag -s verwendet, um /sbin/nologin als Shell für minio-user festzulegen. Dies ist ein Shell, das keine Benutzeranmeldung erlaubt, was für minio-user auch nicht benötigt wird.

      Ändern Sie als Nächstes den Besitz an der Minio-Binärdatei in minio-user:

      • sudo chown minio-user:minio-user /usr/local/bin/minio

      Als Nächstes erstellen Sie ein Verzeichnis, in dem Minio Dateien speichert. Dies ist der Speicherort für die Buckets, die Sie später zum Organisieren von Objekten, die Sie auf Ihrem Minio-Server speichern, nutzen werden. In diesem Tutorial heißt das Verzeichnis minio:

      • sudo mkdir /usr/local/share/minio

      Vergeben Sie den Besitz dieses Verzeichnisses an minio-user:

      • sudo chown minio-user:minio-user /usr/local/share/minio

      Die meisten Serverkonfigurationsdateien werden im Verzeichnis /etc gespeichert. Erstellen Sie also dort Ihre Minio-Konfigurationsdatei.

      Übergeben Sie den Besitz dieses Verzeichnisses ebenfalls an minio-user:

      • sudo chown minio-user:minio-user /etc/minio

      Verwenden Sie Nano oder Ihren bevorzugten Texteditor, um die Umgebungsdatei zu erstellen, die zum Ändern der Standardkonfiguration benötigt wird:

      • sudo nano /etc/default/minio

      Wenn die Datei geöffnet ist, fügen Sie die folgenden Zeilen hinzu, um in Ihrer Umgebungsdatei einige wichtige Umgebungsvariablen festzulegen:

      /etc/default/minio

      MINIO_ACCESS_KEY="minio"
      MINIO_VOLUMES="/usr/local/share/minio/"
      MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
      MINIO_SECRET_KEY="miniostorage"
      

      Sehen wir uns diese Variablen sowie die Werte an, die Sie festlegen:

      • MINIO_ACCESS_KEY: Dadurch wird der Zugriffsschlüssel festgelegt, den Sie für den Zugriff auf die Benutzeroberfläche des Minio-Browsers nutzen werden.
      • MINIO_SECRET_KEY: Damit wird der private Schlüssel festgelegt, den Sie zum Vervollständigen Ihrer Anmeldeinformationen in der Minio-Oberfläche verwenden werden. In diesem Tutorial ist der Wert auf miniostorage festgelegt; wir empfehlen jedoch die Auswahl eines anderen, komplexeren Passworts zum Schutz Ihres Servers.
      • MINIO_VOLUMES: Damit wird das Speicherverzeichnis angegeben, das Sie für Ihre Buckets erstellt haben.
      • MINIO_OPTS: Damit lässt sich ändern, wo und wie der Server Daten bereitstellt. Das Flag -C verweist auf das zu verwendende Konfigurationsverzeichnis, während das Flag --address Minio über die IP-Adresse und den Port für die Bindung informiert. Wenn keine IP-Adresse angegeben ist, bindet sich Minio an jede auf dem Server konfigurierte Adresse, einschließlich localhost und mit Docker verknüpfter IP-Adressen; daher wird empfohlen, die IP-Adresse hier anzugeben. Der Standardport 9000 kann bei Bedarf geändert werden.

      Speichern und schließen Sie abschließend die Umgebungsdatei, nachdem Sie alle Änderungen vorgenommen haben.

      Sie haben Minio jetzt installiert und einige wichtige Umgebungsvariablen festgelegt. Als Nächstes konfigurieren Sie den Server so, dass er als Systemdienst ausgeführt wird.

      Schritt 2 – Installieren des Minio Systemd-Startskripts

      In diesem Schritt konfigurieren Sie den Minio-Server so, dass er als systemd-Dienst verwaltet wird.

      Laden Sie zunächst mit folgendem Befehl die offizielle Deskriptordatei für den Minio-Dienst herunter:

      • curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

      Sie werden eine Ausgabe sehen, die etwa folgendermaßen aussieht:

      Output

      % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 835 100 835 0 0 6139 0 --:--:-- --:--:-- --:--:-- 6139

      Nach Abschluss des Downloads befindet sich in Ihrem Arbeitsverzeichnis eine Datei namens minio.service.

      Um den Inhalt von minio.service vor der Anwendung zu überprüfen, öffnen Sie ihn in einem Texteditor:

      Dadurch wird Folgendes angezeigt:

      /etc/systemd/system/minio.service

      [Unit]
      Description=MinIO
      Documentation=https://docs.min.io
      Wants=network-online.target
      After=network-online.target
      AssertFileIsExecutable=/usr/local/bin/minio
      
      [Service]
      WorkingDirectory=/usr/local/
      
      User=minio-user
      Group=minio-user
      
      EnvironmentFile=/etc/default/minio
      ExecStartPre=/bin/bash -c "if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi"
      
      ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
      
      # Let systemd restart this service always
      Restart=always
      
      # Specifies the maximum file descriptor number that can be opened by this process
      LimitNOFILE=65536
      
      # Disable timeout logic and wait until process is stopped
      TimeoutStopSec=infinity
      SendSIGKILL=no
      
      [Install]
      WantedBy=multi-user.target
      
      # Built for ${project.name}-${project.version} (${project.name})
      

      Diese Diensteinheitdatei startet den Minio-Server mit dem Benutzer minio-user, den Sie zuvor erstellt haben. Sie implementiert außerdem die im letzten Schritt festgelegten Umgebungsvariablen und sorgt dafür, dass der Server beim Start automatisch ausgeführt wird. Weitere Informationen zu systemd-Unit-Dateien finden Sie in unserem Leitfaden Informationen zu systemd-Units und Unit-Dateien.

      Nach Prüfung der Inhalte des Skripts schließen Sie den Texteditor.

      Systemd setzt voraus, dass Unit-Dateien im Konfigurationsverzeichnis systemd gespeichert werden. Verschieben Sie minio.service also dort hin:

      • sudo mv minio.service /etc/systemd/system

      Führen Sie dann den folgenden Befehl zum Neuladen aller systemd-Units aus:

      • sudo systemctl daemon-reload

      Aktivieren Sie zum Schluss das Starten von Minio beim Booten:

      • sudo systemctl enable minio

      Dadurch erhalten Sie folgende Ausgabe:

      Output

      Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

      Nachdem Sie das Skript systemd nun installiert und konfiguriert haben, ist es Zeit zum Starten des Servers.

      Schritt 3 – Starten des Minio-Servers

      In diesem Schritt starten Sie den Server und ändern die Firewall, um Zugriff über die Browseroberfläche zuzulassen.

      Starten Sie zunächst den Minio-Server:

      • sudo systemctl start minio

      Überprüfen Sie als Nächstes den Status des Minio-Servers, die IP-Adresse, an die er gebunden ist, die Arbeitsspeichernutzung und mehr, indem Sie folgenden Befehl ausführen:

      • sudo systemctl status minio

      Sie erhalten folgende Ausgabe:

      Output

      ● minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-12-09 21:54:02 UTC; 46s ago Docs: https://docs.min.io Process: 3405 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCES Main PID: 3407 (minio) Tasks: 7 (limit: 1152) CGroup: /system.slice/minio.service └─3407 /usr/local/bin/minio server -C /etc/minio --address your_server_IP:9000 /usr/local/share/minio/ Dec 09 21:54:02 cart-Minion-Object-1804-1 systemd[1]: Started MinIO. Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Endpoint: http://your_server_IP:9000 Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Browser Access: Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: http://your_server_IP:9000 ...

      Aktivieren Sie als Nächstes den Zugriff auf den Minio-Server über die Firewall am konfigurierten Port. In diesem Tutorial ist das der Port 9000.

      Fügen Sie zunächst die Regel hinzu:

      Aktivieren Sie dann die Firewall:

      Sie erhalten folgende Eingabeaufforderung:

      Output

      Command may disrupt existing ssh connections. Proceed with operation (y|n)?

      Drücken Sie auf y und bestätigen Sie mit der Eingabetaste: Sie erhalten dann folgende Ausgabe:

      Output

      Firewall is active and enabled on system startup

      Minio ist jetzt bereit dazu, Datenverkehr zu akzeptieren. Bevor Sie aber eine Verbindung mit dem Server herstellen, sichern Sie die Kommunikation durch Installation eines SSL/TLS-Zertifikats.

      Schritt 4 – Sichern des Zugriffs auf Ihren Minio-Server mit einem TLS-Zertifikat

      In diesem Schritt sichern Sie den Zugriff auf Ihren Minio-Server mit einem privaten Schlüssel und einem öffentlichen Zertifikat, das von einer Zertifizierungsstelle (CA) empfangen wurde – in diesem Fall von Let’s Encrypt. Um ein kostenloses SSL-Zertifikat zu erhalten, verwenden Sie Certbot.

      Lassen Sie zunächst HTTP- und HTTPS-Zugriff über Ihre Firewall zu. Öffnen Sie dazu Port 80, was der Port für HTTP ist:

      Öffnen Sie als Nächstes Port 443 für HTTPS:

      Überprüfen Sie nach dem Hinzufügen dieser Regeln den Status Ihrer Firewall mit folgendem Befehl:

      Sie werden eine Ausgabe sehen, die etwa folgendermaßen aussieht:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp (OpenSSH) ALLOW IN Anywhere 9000 ALLOW IN Anywhere 443 ALLOW IN Anywhere 80 ALLOW IN Anywhere 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6) 9000 (v6) ALLOW IN Anywhere (v6) 443 (v6) ALLOW IN Anywhere (v6) 80 (v6) ALLOW IN Anywhere (v6)

      Dadurch wird bestätigt, dass Ports 80 und 443 geöffnet sind, was bedeutet, dass Ihr Server Anfragen aus dem Internet akzeptiert.

      Als Nächstes installieren Sie Certbot. Da Certbot ein separates PPA-Repository unterhält, müssen Sie es zunächst zu Ihrer Liste von Repositorys hinzufügen, bevor Sie Certbot wie dargestellt installieren:

      Um das Hinzufügen des PPA-Repository vorzubereiten, installieren Sie zunächst software-properties-common, ein Paket zum Verwalten von PPAs:

      • sudo apt install software-properties-common

      Dieses Paket bietet einige nützliche Skripts zum Hinzufügen und Entfernen von PPAs, damit Sie es nicht manuell tun müssen.

      Fügen Sie jetzt das Repository Universe hinzu:

      • sudo add-apt-repository universe

      Dieses Repository enthält kostenlose Open-Source-Software, die von der Ubuntu-Community gepflegt wird, jedoch nicht offiziell von Canonical, den Entwicklern von Ubuntu. Hier finden wir das Repository for Certbot.

      Fügen Sie als Nächstes das Certbot-Repository hinzu:

      • sudo add-apt-repository ppa:certbot/certbot

      Sie erhalten die folgende Ausgabe:

      Output

      This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s). More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot Press [ENTER] to continue or ctrl-c to cancel adding it

      Drücken Sie die Eingabetaste, um fortzufahren.

      Aktualisieren Sie dann die Paketliste:

      Installieren Sie zum Schluss certbot:

      Als Nächstes verwenden Sie certbot zum Erstellen eines neuen SSL-Zertifikats.

      Da Ubuntu 18.04 noch keine automatische Installation unterstützt, verwenden Sie den Befehl certonly und --standalone, um das Zertifikat abzurufen:

      • sudo certbot certonly --standalone -d minio-server.your_domain

      --standalone bedeutet, dass dies ein Zertifikat für einen integrierten Standalone-Webserver ist. Weitere Informationen dazu finden Sie in unserem Tutorial Verwenden von Certbot im Standalone-Modus zum Abrufen von Let’s Encrypt-SSL-Zertifikaten unter Ubuntu 18.04.

      Sie erhalten die folgende Ausgabe:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

      Fügen Sie Ihre E-Mail-Adresse hinzu und drücken Sie die Eingabetaste.

      Certbot fordert Sie dann dazu auf, sich bei Let’s Encrypt zu registrieren:

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel:

      Geben Sie A ein und drücken Sie die Eingabetaste, um zu akzeptieren.

      Als Nächstes werden Sie gefragt, ob Sie damit einverstanden sind, Ihre E-Mail-Adresse mit der Electronic Frontier Foundation zu teilen:

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:

      Nachdem Sie mit Y oder N geantwortet haben, werden Ihre öffentlichen und privaten Schlüssel generiert und im Verzeichnis /etc/letsencrypt/live/minio-server.your_domain_name gespeichert.

      Kopieren Sie als Nächstes diese beiden Dateien (privkey.pem und fullchain.pem) in das Verzeichnis certs unter dem Konfigurationsverzeichnis des Minio-Servers, das in diesem Tutorial /etc/minio lautet. Verwenden Sie folgenden Befehl zum Kopieren von privkey.pem und zum Umbenennen der Datei private.key:

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

      Tun Sie dann das Gleiche für fullchain.pem und nennen Sie das Ergebnis public.crt:

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

      Ändern Sie jetzt den Besitz an den Dateien in minio-user. Erledigen Sie diese Aufgabe zunächst für private.key:

      • sudo chown minio-user:minio-user /etc/minio/certs/private.key

      Dann für public.crt:

      • sudo chown minio-user:minio-user /etc/minio/certs/public.crt

      Starten Sie den Minio-Server neu, damit er sich des Zertifikats bewusst wird und mit HTTPS startet:

      • sudo systemctl restart minio

      Zertifikate von Let’s Encrypt sind nur für neunzig Tage gültig. Das soll Benutzer dazu ermutigen, die Erneuerung ihrer Zertifikate zu automatisieren. Das Certbot-Paket, das Sie automatisch installiert haben, fügt /etc/cron.d ein Erneuerungsskript hinzu. Dieses Skript wird zweimal pro Tag ausgeführt und erneuert automatisch alle Zertifikate, die innerhalb von dreißig Tagen ablaufen.

      Damit ist die Verbindung von Minio jetzt sicher und das SSL/TLS-Zertifikat wird automatisch für Sie erneuert. Im nächsten Schritt stellen Sie über den Browser eine Verbindung mit Minio her, um den Server zu verwenden.

      Schritt 5 – Sicheres Herstellen einer Verbindung mit der Weboberfläche von Minio über HTTPS

      In diesem Schritt stellen Sie eine sichere Verbindung mit der Minio-Weboberfläche über HTTPS her und erstellen dann Buckets, in die Sie Objekte hochladen.

      Greifen Sie auf die Weboberfläche zu, indem Sie in Ihrem Browser https://minio-server.your_domain:9000 aufrufen.

      Sie sehen den Anmeldebildschirm des Minio-Servers:

      Minio-Anmeldebildschirm

      Melden Sie sich jetzt bei der Hauptoberfläche an, indem Sie Ihre Anmeldeinformationen eingeben. Geben Sie für Access Key (Zugriffsschlüssel) den MINIO_ACCESS_KEY ein, den Sie in der Umgebungsdatei /etc/default/minio in Schritt 1 festgelegt haben. Geben Sie für Secret Key (Geheimer Schlüssel) den MINIO_SECRET_KEY ein, den Sie in derselben Datei festgelegt haben. Klicken Sie nach Eingabe der Anmeldeinformationen auf die runde Schaltfläche mit dem Pfeil direkt unterhalb der Eingabefelder.

      Nun wird die Benutzeroberfläche von Minio angezeigt. Um einen neuen Bucket zu erstellen, in dem Sie Objekte speichern können, klicken Sie auf die hellrote Schaltfläche + unten rechts in der Hauptoberfläche; nun werden zwei zusätzliche gelbe Schaltflächen angezeigt.

      Hauptoberfläche von Minio

      Klicken Sie auf die mittlere gelbe Schaltfläche und geben Sie in der Eingabeaufforderung einen Namen für Ihren neuen Bucket ein, bevor Sie die Eingabetaste drücken, um Ihre Antwort zu speichern. Ihr neuer Bucket kann jetzt als Speicher verwendet werden.

      Anmerkung: Stellen Sie bei der Benennung Ihres Minio-Buckets sicher, dass der Name nur Kleinbuchstaben, Zahlen und Bindestriche enthält. Minio begrenzt die Namenskonventionen für Buckets, um mit AWS S3-Standards vereinbar zu sein.

      Wenn Sie Objekte in Ihren Bucket hinzufügen möchten, klicken Sie auf dieselbe hellrote Schaltfläche wie zuvor und klicken Sie dann auf die obere gelbe Schaltfläche, um eine Eingabeaufforderung für den Datei-Upload zu öffnen.

      Jetzt haben Sie mit dem Erstellen von Buckets und Hochladen von Objekten alle grundlegenden Funktionen der Weboberfläche verwendet.

      Zusammenfassung

      Sie verfügen jetzt über einen eigenen Minio-Server, mit dem Sie über die Weboberfläche unter Verwendung eines Let’s Encrypt-SSL/TLS-Zertifikats eine sichere Verbindung herstellen können. Optional können Sie sich die Minio-Desktopclients für FreeBSD, Linux, Mac und Windows als Alternative für das Verwenden und Verwalten Ihres Objektspeicherservers ansehen.

      Wenn Sie außerdem die Speicherkapazität Ihrer Minio-Installation über die Datenträgergröße Ihres Servers hinaus erhöhen möchten, können Sie den Blockspeicherdienst von DigitalOcean nutzen, um ein Volume mit Ihrem Server zu verbinden und die Speicherkapazität um bis zu 80 TB zu erweitern.

      Weitere Informationen zu Minio finden Sie auf der Dokumentationswebsite des Projekts. Wenn Sie mehr über Objektspeicher erfahren möchten, sehen Sie sich unsere Tutorials zu Objektspeicher an.



      Source link

      Comment configurer un serveur de stockage d’objets en utilisant Minio sur Ubuntu 18.04


      L’auteur a choisi le Open Internet/Free Speech Fund pour recevoir un don dans le cadre du programme Write for Donations.

      Introduction

      Des solutions de sauvegarde basées sur le cloud aux réseaux de diffusion de contenu (RDC) à haute disponibilité, la capacité de stocker des blocs de données non structurées et de les rendre accessibles par le biais d’API HTTP, connues sous le nom de stockage d’objets, fait désormais partie intégrante du paysage technologique moderne.

      Minio est un serveur de stockage d’objets open-source populaire compatible avec le service de stockage cloud Amazon S3. Les applications qui ont été configurées pour parler à Amazon S3 peuvent également être configurées pour parler à Minio, ce qui permet à Minio d’être une alternative viable à S3 si vous voulez plus de contrôle sur votre serveur de stockage d’objets. Le service stocke des données non structurées telles que des photos, des vidéos, des fichiers journaux, des sauvegardes et des images de conteneurs/VM, et peut même fournir un seul serveur de stockage d’objets qui regroupe plusieurs lecteurs répartis sur plusieurs serveurs.

      Minio est écrit en Go, est fourni avec un client en ligne de commande et une interface de navigateur, et prend en charge un service de mise en file d’attente simple pour les cibles AMQP (Advanced Message Queuing Protocol), Elasticsearch, Redis, NATS et PostgreSQL. Pour toutes ces raisons, apprendre à mettre en place un serveur de stockage d’objets Minio peut ajouter une vaste palette de flexibilité et d’utilité à votre projet.

      Dans ce tutoriel, vous allez :

      • Installer le serveur Minio sur votre serveur Ubuntu 18.04 et le configurer comme un service systemd.

      • Configurer un certificat SSL/TLS à l’aide de Let’s Encrypt pour sécuriser la communication entre le serveur et le client.

      • Accéder à l’interface du navigateur Minio via HTTPS pour utiliser et administrer le serveur.

      Conditions préalables

      Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

      • Un serveur Ubuntu 18.04 configuré en suivant notre guide de configuration initiale de serveur Ubuntu 18.04, comprenant un utilisateur non root avec privilèges sudo et un pare-feu.

      • Un nom de domaine entièrement enregistré. Vous pouvez en acheter un sur Namecheap ou en obtenir un gratuitement sur Freenom.  Dans ce tutoriel, votre domaine sera représenté sous la forme your_domain.

      • Les enregistrements DNS suivants ont été configurés pour votre serveur Minio. Vous pouvez suivre notre documentation sur les enregistrements DNS pour obtenir des détails sur la façon de les ajouter à une droplet DigitalOcean.

        • Un enregistrement A avec le nom de votre serveur (par exemple minio-server.your_domain) pointant vers l’adresse IPv4 de votre serveur objet.
        • (Facultatif) Si vous voulez que votre serveur soit accessible via IPv6, vous aurez besoin d’un enregistrement AAAA avec le nom de votre serveur pointant vers l’adresse IPv6 de votre serveur objet.

      Étape 1 — ; Installation et configuration du serveur Minio

      Vous pouvez installer le serveur Minio en compilant le code source ou via un fichier binaire. Pour l’installer à partir de la source, vous devez disposer au minimum de Go 1.12 sur votre système.

      Dans cette étape, vous installerez le serveur par le biais du binaire précompilé, puis vous configurerez le serveur Minio par la suite.

      Tout d’abord, connectez-vous à votre serveur, en remplaçant sammy par votre nom d’utilisateur et your_server_ip par l’adresse IP de votre serveur Ubuntu 18.04 :

      Si vous n’avez pas mis à jour la base de données du package récemment, mettez-la à jour maintenant :

      Ensuite, téléchargez le fichier binaire du serveur Minio sur le site web officiel :

      • wget https://dl.min.io/server/minio/release/linux-amd64/minio

      Vous recevrez un résultat similaire à celui qui suit :

      Output

      --2019-08-27 15:08:49-- https://dl.min.io/server/minio/release/linux-amd64/minio Resolving dl.min.io (dl.min.io)... 178.128.69.202 Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 44511616 (42M) [application/octet-stream] Saving to: ‘minio’ minio 100%[===================>] 42.45M 21.9MB/s in 1.9s 2019-08-27 15:08:51 (21.9 MB/s) - ‘minio’ saved [44511616/44511616]

      Une fois le téléchargement terminé, un fichier nommé minio se trouvera dans votre répertoire de travail. Utilisez la commande suivante pour le rendre exécutable :

      Maintenant, déplacez le fichier dans le répertoire /usr/local/bin où le script de démarrage systemd de Minio s’attend à le trouver :

      • sudo mv minio /usr/local/bin

      Cela nous permettra d’écrire un fichier d’unité de service plus tard dans ce tutoriel pour lancer automatiquement Minio au démarrage.

      Pour des raisons de sécurité, il est préférable d’éviter de faire fonctionner le serveur Minio en tant que root. Cela limitera les dommages qui peuvent être causés à votre système s’il est compromis. Comme le script systemd que vous utiliserez à l’Étape 2 recherche un compte utilisateur et un groupe appelé minio-user, créez un nouvel utilisateur avec ce nom :

      • sudo useradd -r minio-user -s /sbin/nologin

      Dans cette commande, vous avez utilisé l’indicateur -s pour définir /sbin/nologin comme shell pour minio-user. Il s’agit d’un shell qui ne permet pas la connexion de l’utilisateur, qui n’est pas nécessaire pour minio-user.

      Ensuite, changez la propriété du fichier binaire Minio en minio-user :

      • sudo chown minio-user:minio-user /usr/local/bin/minio

      Ensuite, vous allez créer un répertoire dans lequel Minio va stocker les fichiers. Ce sera l’emplacement de stockage des buckets (compartiments) que vous utiliserez plus tard pour organiser les objets que vous allez stocker sur votre serveur Minio. Ce tutoriel appelera le répertoire minio:

      • sudo mkdir /usr/local/share/minio

      Donnez la propriété de ce répertoire à minio-user :

      • sudo chown minio-user:minio-user /usr/local/share/minio

      La plupart des fichiers de configuration du serveur sont stockés dans le répertoire /etc, donc créez votre fichier de configuration Minio dans ce répertoire :

      Donnez la propriété de ce répertoire à minio-user, également :

      • sudo chown minio-user:minio-user /etc/minio

      Utilisez Nano ou votre éditeur de texte préféré pour créer le fichier d’environnement nécessaire pour modifier la configuration par défaut :

      • sudo nano /etc/default/minio

      Une fois le fichier ouvert, ajoutez les lignes suivantes pour définir certaines variables d’environnement importantes dans votre fichier d’environnement :

      /etc/default/minio

      MINIO_ACCESS_KEY="minio"
      MINIO_VOLUMES="/usr/local/share/minio/"
      MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
      MINIO_SECRET_KEY="miniostorage"
      

      Examinons ces variables et les valeurs que vous définissez :

      • MINIO_ACCESS_KEY: :définit la clé d’accès que vous utiliserez pour accéder à l’interface utilisateur du navigateur Minio.
      • MINIO_SECRET_KEY : définit la clé privée que vous utiliserez pour entrer vos identifiants de connexion dans l’interface Minio. Ce tutoriel a défini la valeur sur miniostorage, mais nous conseillons de choisir un mot de passe différent, plus compliqué, pour sécuriser votre serveur.
      • MINIO_VOLUMES: identifie le répertoire de stockage que vous avez créé pour vos buckets.
      • MINIO_OPTS : change où et comment le serveur sert les données. L’indicateur -C pointe Minio vers le répertoire de configuration qu’il doit utiliser, tandis que l’indicateur --address indique à Minio l’adresse IP et le port auxquels il doit se lier. Si l’adresse IP n’est pas spécifiée, Minio se liera à chaque adresse configurée sur le serveur, y compris à localhost et à toute adresse IP liée au Docker ; il est donc recommandé de spécifier directement l’adresse IP ici. Le port par défaut 9000 peut être changé si vous le souhaitez.

      Enfin, enregistrez et fermez le fichier d’environnement lorsque vous avez terminé les modifications.

      Vous avez maintenant installé Minio et défini certaines variables d’environnement importantes. Ensuite, vous allez configurer le serveur pour qu’il s’exécute comme un service système.

      Étape 2 — Installation du script de démarrage systemd de Minio

      Dans cette étape, vous allez configurer le serveur Minio pour qu’il soit géré comme un service systemd.

      Tout d’abord, téléchargez le fichier officiel du descripteur de service Minio en utilisant la commande suivante :

      • curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

      Vous recevrez un résultat similaire à celui qui suit :

      Output

      % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 835 100 835 0 0 6139 0 --:--:-- --:--:-- --:--:-- 6139

      Une fois le téléchargement terminé, un fichier nommé minio.service se trouvera dans votre répertoire de travail.

      Pour vérifier le contenu de minio.service avant de l’appliquer, ouvrez-le dans un éditeur de texte pour visualiser son contenu :

      Cela montrera ce qui suit :

      /etc/systemd/system/minio.service

      [Unit]
      Description=MinIO
      Documentation=https://docs.min.io
      Wants=network-online.target
      After=network-online.target
      AssertFileIsExecutable=/usr/local/bin/minio
      
      [Service]
      WorkingDirectory=/usr/local/
      
      User=minio-user
      Group=minio-user
      
      EnvironmentFile=/etc/default/minio
      ExecStartPre=/bin/bash -c "if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi"
      
      ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
      
      # Let systemd restart this service always
      Restart=always
      
      # Specifies the maximum file descriptor number that can be opened by this process
      LimitNOFILE=65536
      
      # Disable timeout logic and wait until process is stopped
      TimeoutStopSec=infinity
      SendSIGKILL=no
      
      [Install]
      WantedBy=multi-user.target
      
      # Built for ${project.name}-${project.version} (${project.name})
      

      Ce fichier d’unité de service démarre le serveur Minio en utilisant l’utilisateur minio-user que vous avez créé précédemment. Il implémente également les variables d’environnement que vous avez définies à la dernière étape, et fait fonctionner le serveur automatiquement au démarrage. Pour plus d’informations sur les fichiers unitaires systemd, consultez notre guide Comprendre les unités systemd et les fichiers unitaires.

      Une fois que vous avez examiné le contenu du script, fermez votre éditeur de texte.

      Systemd requiert que les fichiers unitaires soient stockés dans le répertoire de configuration systemd ; par conséquent, déplacez minio.service à cet emplacement :

      • sudo mv minio.service /etc/systemd/system

      Ensuite, exécutez la commande suivante pour recharger toutes les unités systemd :

      • sudo systemctl daemon-reload

      Enfin, permettez le lancement de Minio au démarrage :

      • sudo systemctl enable minio

      Cela donnera le résultat suivant :

      Output

      Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

      Maintenant que le script systemd est installé et configuré, il est temps de démarrer le serveur.

      Étape 3 — Démarrage du serveur Minio

      Dans cette étape, vous allez démarrer le serveur et modifier le pare-feu pour autoriser l’accès par l’interface du navigateur.

      Tout d’abord, démarrez le serveur Minio :

      • sudo systemctl start minio

      Ensuite, vérifiez le statut de Minio, l’adresse IP à laquelle il est lié, son utilisation de la mémoire, et plus encore en exécutant cette commande :

      • sudo systemctl status minio

      Vous aurez le résultat suivant :

      Output

      ● minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-12-09 21:54:02 UTC; 46s ago Docs: https://docs.min.io Process: 3405 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCES Main PID: 3407 (minio) Tasks: 7 (limit: 1152) CGroup: /system.slice/minio.service └─3407 /usr/local/bin/minio server -C /etc/minio --address your_server_IP:9000 /usr/local/share/minio/ Dec 09 21:54:02 cart-Minion-Object-1804-1 systemd[1]: Started MinIO. Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Endpoint: http://your_server_IP:9000 Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Browser Access: Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: http://your_server_IP:9000 ...

      Ensuite, autorisez l’accès par le pare-feu au serveur Minio sur le port configuré. Dans ce tutoriel, c’est le port 9000.

      D’abord, ajoutez la règle :

      Ensuite, activez le pare-feu :

      Vous aurez l’invite suivante :

      Output

      Command may disrupt existing ssh connections. Proceed with operation (y|n)?

      Appuyez sur y et ENTER pour le confirmer. Vous aurez alors le résultat suivant :

      Output

      Firewall is active and enabled on system startup

      Minio est maintenant prêt à accepter le trafic, mais avant de vous connecter au serveur, vous allez sécuriser la communication en installant un certificat SSL/TLS.

      Étape 4 — Sécurisation de l’accès à votre serveur Minio avec un certificat TLS

      Dans cette étape, vous allez sécuriser l’accès à votre serveur Minio en utilisant une clé privée et un certificat public qui a été obtenu à partir d’une autorité de certification (AC) (dans ce cas, Let’s Encrypt). Pour obtenir un certificat SSL gratuit, vous utiliserez Certbot.

      Tout d’abord, autorisez l’accès HTTP et HTTPS à travers votre pare-feu. Pour ce faire, ouvrez le port 80, qui est le port pour HTTP :

      Ensuite, ouvrez le port 443 pour HTTPS :

      Une fois que vous avez ajouté ces règles, vérifiez le statut de votre pare-feu avec la commande suivante :

      Vous recevrez un résultat similaire à celui qui suit :

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp (OpenSSH) ALLOW IN Anywhere 9000 ALLOW IN Anywhere 443 ALLOW IN Anywhere 80 ALLOW IN Anywhere 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6) 9000 (v6) ALLOW IN Anywhere (v6) 443 (v6) ALLOW IN Anywhere (v6) 80 (v6) ALLOW IN Anywhere (v6)

      Cela confirme que les ports 80 et 443 sont ouverts, assurant que votre serveur accepte les requêtes depuis Internet.

      Ensuite, vous allez installer Certbot. Comme Certbot conserve un référentiel PPA séparé, vous devrez d’abord l’ajouter à votre liste de référentiels avant d’installer Certbot comme indiqué :

      Pour préparer l’ajout du référentiel PPA, installez d’abord le référentiel software-properties-common, un package permettant de gérer les PPA :

      • sudo apt install software-properties-common

      Ce package fournit quelques scripts utiles pour ajouter et supprimer les PPA au lieu de le faire manuellement.

      Maintenant, ajoutez le référentiel Universe :

      • sudo add-apt-repository universe

      Ce référentiel contient des logiciels libres et open source entretenus par la communauté Ubuntu, mais n’est pas officiellement entretenu par Canonical, les développeurs d’Ubuntu C’est là que nous trouverons le référentiel pour Certbot.

      Ensuite, ajoutez le référentiel Certbot :

      • sudo add-apt-repository ppa:certbot/certbot

      Vous recevrez le résultat suivant :

      Output

      This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s). More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot Press [ENTER] to continue or ctrl-c to cancel adding it

      Appuyez sur ENTER pour accepter.

      Mettez ensuite à jour la liste de packages :

      Enfin, installez certbot :

      Ensuite, vous utiliserez certbot pour générer un nouveau certificat SSL.

      Comme Ubuntu 18.04 ne prend pas encore en charge l’installation automatique, vous utiliserez la commande certonly et --standalone pour obtenir le certificat :

      • sudo certbot certonly --standalone -d minio-server.your_domain

      --standalone signifie que ce certificat est pour un serveur web autonome intégré. Pour plus d’informations à ce sujet, consultez notre tutoriel Comment utiliser le mode autonome de Certbot pour récupérer des certificats SSL cryptés sur Ubuntu 18.04.

      Vous recevrez le résultat suivant :

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

      Ajoutez votre email et appuyez sur ENTER.

      Certbot vous demandera de vous enregistrer avec Let’s Encrypt :

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel:

      Tapez A et appuyez sur ENTER pour accepter.

      Ensuite, il vous sera demandé si vous êtes prêt à partager votre e-mail avec Electronic Frontier Foundation :

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:

      Une fois que vous avez répondu Y ou N, vos clés publiques et privées seront générées et enregistrées dans le répertoire /etc/letsencrypt/live/minio-server.your_domain_name

      Ensuite, copiez ces deux fichiers (privkey.pem et fullchain.pem) dans le répertoire certs sous le dossier de configuration du serveur Minio, qui est /etc/minio pour ce tutoriel. Utilisez ce qui suit pour copier privkey.pem et renommer le fichier private.key: :

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

      Ensuite, faites de même pour fullchain.pem, nommant le résultat public.crt :

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

      Maintenant, changez la propriété des fichiers vers minio-user. D’abord, faites-le pour private.key :

      • sudo chown minio-user:minio-user /etc/minio/certs/private.key

      Ensuite, pour public.crt :

      • sudo chown minio-user:minio-user /etc/minio/certs/public.crt

      Redémarrez le serveur Minio, afin qu’il prenne connaissance du certificat et commence à utiliser le HTTPS :

      • sudo systemctl restart minio

      Les certificats Let’s Encrypt ne sont valables que quatre-vingt-dix jours. Cette mesure vise à encourager les utilisateurs à automatiser le processus de renouvellement de leur certificat. Le package Certbot que vous avez installé ajoute automatiquement un script de renouvellement à /etc/cron.d. Ce script est exécuté deux fois par jour et renouvellera automatiquement tout certificat qui se trouve dans une période de trente jours avant son expiration.

      Grâce à cela, la connexion de Minio est désormais sécurisée et le certificat SSL/TLS se renouvellera automatiquement pour vous. Dans la prochaine étape, vous allez vous connecter à Minio via le navigateur pour utiliser le serveur.

      Étape 5 — Connexion sécurisée à l’interface web de Minio à l’aide du HTTPS

      Au cours de cette étape, vous allez vous connecter de manière sécurisée à l’interface web de Minio via HTTPS, puis vous allez créer des buckets et y télécharger des objets.

      Accédez à l’interface web en pointant votre navigateur vers https://minio-server.your_domain:9000.

      Vous verrez l’écran de connexion du serveur Minio :

      Écran de connexion Minio

      Maintenant, connectez-vous à l’interface principale en entrant vos identifiants. Pour Access Key, entrez le MINIO_ACCESS_KEY que vous avez défini dans le fichier d’environnement /etc/default/minio à l’Étape 1. Pour Secret Key, tapez la MINIO_SECRET_KEY que vous avez définie dans le même fichier. Une fois que vous avez saisi les identifiants, cliquez sur le bouton rond avec la flèche directement sous les champs d’entrée.

      L’interface utilisateur de Minio vous sera alors présentée. Pour créer un nouveau bucket dans lequel vous pourrez stocker des objets, cliquez sur le bouton rouge clair + en bas à droite de l’interface principale pour faire apparaître deux boutons jaunes supplémentaires.

      Interface principale de Minio

      Cliquez sur le bouton jaune au milieu et entrez un nom pour votre nouveau bucket dans l’invite, appuyez sur la touche ENTER pour enregistrer votre réponse. Votre nouveau bucket est maintenant prêt à être utilisé pour le stockage.

      Remarque : lorsque vous donnez un nom à votre bucket Minio, assurez-vous que votre nom ne contient que des lettres minuscules, des chiffres ou des traits d’union.  Minio limite les conventions de dénomination des buckets, conformément aux normes AWS S3.

      Lorsque vous souhaitez ajouter des objets dans votre bucket, cliquez sur le même bouton rouge clair que précédemment, puis sur le bouton jaune du haut pour ouvrir une invite de téléchargement de fichier.

      À ce stade, vous avez exploré toute l’interface web de base pour créer des buckets et télécharger des objets.

      Conclusion

      Vous disposez maintenant de votre propre serveur de stockage d’objets Minio auquel vous pouvez vous connecter en toute sécurité depuis l’interface web à l’aide d’un certificat SSL/TLS Let’s Encrypt. Vous pouvez également consulter les clients Minio desktop pour FreeBSD, Linux, Mac et Windows comme alternative pour utiliser et administrer votre serveur de stockage d’objets.

      De plus, si vous souhaitez augmenter la capacité de stockage de votre installation Minio au-delà de la taille du disque de votre serveur, vous pouvez utiliser le service de stockage en bloc de DigitalOcean pour attacher un volume à votre serveur, augmentant ainsi la capacité de stockage jusqu’à 80 To.

      De plus amples informations sur Minio sont disponibles sur le site web de documentation du projet. Si vous souhaitez en savoir plus sur le stockage d’objets, consultez nos tutoriels Stockage d’objets.



      Source link

      Cómo configurar un servidor de almacenamiento de objetos con Minio en Ubuntu 18.04


      El autor seleccionó a Open Internet/Free Speech Fund para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Desde las soluciones de copia de seguridad basadas en la nube hasta las redes de entrega de contenido (CDN) de alta disponibilidad, la capacidad de almacenar datos de objetos no estructurados y hacer que sean accesibles a través de API HTTP, lo que se conoce como almacenamiento de objetos, se ha convertido en una parte integral del ámbito de la tecnología moderna.

      Minio es un servidor de almacenamiento de objetos de código abierto compatible con el servicio de almacenamiento en la nube de Amazon-S3. Las aplicaciones configuradas para comunicarse con Amazon S3 también se pueden configurar para hacerlo con Minio, lo cual permite que Minio sea una alternativa viable a S3 cuando se desea obtener más control sobre el servidor de almacenamiento de objetos. El servicio almacena datos no estructurados, como fotos, videos, archivos de registro, copias de seguridad e imágenes de contenedores o VM, e, incluso, puede proporcionar un único servidor de almacenamiento de objetos que agrupa varias unidades de muchos servidores.

      Minio se escribe en Go, cuenta con un cliente de línea de comandos más una interfaz de navegador y admite un servicio de colas simple para objetivos del protocolo avanzado de colas de mensajes (AMQP), Elasticsearch, Redis, NATS y PostgreSQL.  Por todas estas razones, aprender a configurar un servidor de almacenamiento de objetos de Minio puede añadir mucha flexibilidad y utilidad a su proyecto.

      En este tutorial, hará lo siguiente:

      • Instalará el servidor Minio en su servidor de Ubuntu 18.04 y lo configurará como servicio systemd.

      • Configurará un certificado SSL/TLS con Let´s Encrypt para garantizar la comunicación entre el servidor y el cliente.

      • Accederá a la interfaz de navegador de Minio a través de HTTPS para usar y administrar el servidor.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      • Un servidor de Ubuntu 18.04 configurado conforme a nuestro tutorial de configuración inicial para servidores de Ubuntu 18.04, un usuario sudo no root y un firewall.

      • Un nombre de dominio registrado por completo. Puede adquirir uno en Namecheap u obtener uno de forma gratuita en Freenom. En este tutorial, su dominio se representará como your_domain.

      • Los siguientes registros de DNS configurados para su servidor Minio. Puede consultar nuestra documentación de registros de DNS para obtener información detallada sobre cómo añadirlos a un Droplet de DigitalOcean.

        • Un registro A con el nombre de su servidor (por ejemplo, minio-server.your_domain) orientado a la dirección de IPv4 de su servidor de objetos.
        • (Opcional) Si desea que sea posible acceder a su servidor mediante IPv6, necesitará un registro AAAA con el nombre de su servidor orientado a la dirección IPv6 de su servidor.

      Paso 1: Instalar y configurar el servidor Minio

      Puede instalar el servidor Minio compilando el código fuente o a través de un archivo binario. Para instalarlo desde la fuente, debe tener, como mínimo, Go 1.12 instalado en su sistema.

      En este paso, instalará el servidor a través del binario previamente compilado y, luego, configurará el servidor Minio.

      Primero, inicie sesión en su servidor y sustituya sammy por su nombre de usuario y your_server_ip por la dirección IP de su servidor de Ubuntu 18.04.

      Si no actualizó la base de datos de paquetes recientemente, hágalo ahora:

      A continuación, descargue el archivo binario del servidor Minio del sitio web oficial:

      • wget https://dl.min.io/server/minio/release/linux-amd64/minio

      Obtendrá un resultado similar al siguiente:

      Output

      --2019-08-27 15:08:49-- https://dl.min.io/server/minio/release/linux-amd64/minio Resolving dl.min.io (dl.min.io)... 178.128.69.202 Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 44511616 (42M) [application/octet-stream] Saving to: ‘minio’ minio 100%[===================>] 42.45M 21.9MB/s in 1.9s 2019-08-27 15:08:51 (21.9 MB/s) - ‘minio’ saved [44511616/44511616]

      Una vez que la descarga haya finalizado, se ubicará un archivo llamado minio en su directorio de trabajo. Utilice el siguiente comando para que se pueda ejecutar:

      Ahora, mueva el archivo al directorio /usr/local/bin, donde la secuencia de comandos de inicio systemd de Minio espera encontrarlo:

      • sudo mv minio /usr/local/bin

      Esto nos permitirá escribir un archivo de unidad de servicio más adelante en este tutorial para ejecutar Minio de forma automática durante el inicio.

      Por motivos de seguridad, es mejor evitar ejecutar el servidor Minio como root. Esto limitará el daño al que su sistema se expondrá si se ve comprometido. Debido a que la secuencia de comandos systemd que usará en el paso 2 busca una cuenta de usuario y un grupo denominado minio-user, se creará un nuevo usuario con este nombre:

      • sudo useradd -r minio-user -s /sbin/nologin

      En este comando, utilizó el indicador -s para establecer /sbin/nologin como shell para minio-user. Este es un shell que no permite el inicio de sesión de usuario, que no es necesario para minio-user.

      A continuación, cambie la propiedad del binario de Minio a minio-user:

      • sudo chown minio-user:minio-user /usr/local/bin/minio

      Luego, creará un directorio donde Minio almacenará archivos. Esta será la ubicación de almacenamiento de los depósitos que usará más adelante para organizar los objetos que almacenará en su servidor Minio. En este tutorial, el directorio recibirá el nombre minio:

      • sudo mkdir /usr/local/share/minio

      Conceda la propiedad de ese directorio a minio-user:

      • sudo chown minio-user:minio-user /usr/local/share/minio

      La mayoría de los archivos de configuración del servidor se almacenan en el directorio /etc. Por ello, debe crear el archivo de configuración de Minio allí:

      Conceda, también, la propiedad de ese directorio a minio-user:

      • sudo chown minio-user:minio-user /etc/minio

      Utilice Nano o el editor de texto que desee para crear el archivo de entorno necesario para modificar la configuración predeterminada:

      • sudo nano /etc/default/minio

      Una vez que el archivo esté abierto, añada las siguientes líneas para establecer algunas variables de entorno importantes en su archivo de entorno:

      /etc/default/minio

      MINIO_ACCESS_KEY="minio"
      MINIO_VOLUMES="/usr/local/share/minio/"
      MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
      MINIO_SECRET_KEY="miniostorage"
      

      Veamos estas variables y los valores que estableció:

      • MINIO_ACCESS_KEY: establece la clave de acceso que usará para acceder a la interfaz de usuario del navegador de Minio.
      • MINIO_SECRET_KEY: establece la clave privada que usará para completar sus credenciales de inicio de sesión en la interfaz de Minio. En este tutorial, se fijó el valor en miniostorage, pero aconsejamos elegir una contraseña diferente, más compleja, para proteger su servidor.
      • MINIO_VOLUMES: identifica el directorio de almacenamiento que creó para sus depósitos.
      • MINIO_OPTS: cambia el lugar y la manera en que el servidor proporciona los datos. El indicador -C apunta Minio al directorio de configuración que debe usar, y el indicador --address indica a Minio la dirección de IP y el puerto con los que se debe establecer la vinculación. Si no se especifica la dirección IP, Minio se vinculará a cualquier dirección configurada en el servidor, incluso localhost y cualquier dirección IP relacionada con Docker. Por lo tanto, se recomienda especificar la dirección IP directamente aquí. Puede cambiar el puerto predeterminado 9000 si lo desea.

      Por último, guarde y cierre el archivo de entorno cuando haya terminado de realizar cambios.

      Con esto, instaló Minio y estableció algunas variables de entorno importantes. A continuación, configurará el servidor para que se ejecute como servicio de sistema.

      Paso 2: Instalar la secuencia de comandos de inicio Systemd de Minio

      En este paso, configurará el servidor Minio para que se administre como servicio systemd.

      Primero, descargue el archivo descriptor del servicio de Minio oficial con el siguiente comando:

      • curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

      Obtendrá un resultado similar al siguiente:

      Output

      % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 835 100 835 0 0 6139 0 --:--:-- --:--:-- --:--:-- 6139

      Una vez que la descarga haya finalizado, se ubicará un archivo llamado minio.service en su directorio de trabajo.

      Para verificar el contenido de minio.service antes de aplicarlo, ábralo en un editor de texto para ver su contenido:

      Con esto, se mostrará lo siguiente:

      /etc/systemd/system/minio.service

      [Unit]
      Description=MinIO
      Documentation=https://docs.min.io
      Wants=network-online.target
      After=network-online.target
      AssertFileIsExecutable=/usr/local/bin/minio
      
      [Service]
      WorkingDirectory=/usr/local/
      
      User=minio-user
      Group=minio-user
      
      EnvironmentFile=/etc/default/minio
      ExecStartPre=/bin/bash -c "if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi"
      
      ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
      
      # Let systemd restart this service always
      Restart=always
      
      # Specifies the maximum file descriptor number that can be opened by this process
      LimitNOFILE=65536
      
      # Disable timeout logic and wait until process is stopped
      TimeoutStopSec=infinity
      SendSIGKILL=no
      
      [Install]
      WantedBy=multi-user.target
      
      # Built for ${project.name}-${project.version} (${project.name})
      

      Este archivo de unidad de servicio inicia el servidor Minio con el usuario minio-user que creó anteriormente. También implementa las variables de entorno que estableció en el último paso y hace que el servidor se ejecute automáticamente durante el inicio. Para obtener más información sobre los archivos de unidad systemd, consulte nuestra guía Información sobre unidades Systemd y archivos de unidad.

      Una vez que haya analizado el contenido de la secuencia de comandos, cierre su editor de texto.

      Systemd requiere que los archivos de unidad se almacenen en el directorio de configuración systemd, por lo tanto, mueva minio.service allí:

      • sudo mv minio.service /etc/systemd/system

      Luego, ejecute el siguiente comando para volver a cargar todas las unidades systemd:

      • sudo systemctl daemon-reload

      Por último, habilite Minio para que se inicie en el arranque:

      • sudo systemctl enable minio

      Esto generará el siguiente resultado:

      Output

      Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.

      Ahora que la secuencia de comandos systemd está instalada y configurada, es el momento de iniciar el servidor.

      Paso 3: Iniciar el servidor Minio

      En este paso, iniciará el servidor y modificará el firewall para permitir el acceso a través de la interfaz del navegador.

      Primero, inicie el servidor Minio:

      • sudo systemctl start minio

      A continuación, verifique el estado de Minio, la dirección IP a la que está vinculado, su consumo de memoria y otros aspectos mediante este comando:

      • sudo systemctl status minio

      Verá el siguiente resultado:

      Output

      ● minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-12-09 21:54:02 UTC; 46s ago Docs: https://docs.min.io Process: 3405 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCES Main PID: 3407 (minio) Tasks: 7 (limit: 1152) CGroup: /system.slice/minio.service └─3407 /usr/local/bin/minio server -C /etc/minio --address your_server_IP:9000 /usr/local/share/minio/ Dec 09 21:54:02 cart-Minion-Object-1804-1 systemd[1]: Started MinIO. Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Endpoint: http://your_server_IP:9000 Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: Browser Access: Dec 09 21:54:03 cart-Minion-Object-1804-1 minio[3407]: http://your_server_IP:9000 ...

      A continuación, habilite el acceso a través del firewall al servidor Minio en el puerto configurado. En este tutorial, se utiliza el puerto 9000.

      Primero, añada esta regla:

      Luego, habilite el firewall:

      Verá el siguiente mensaje:

      Output

      Command may disrupt existing ssh connections. Proceed with operation (y|n)?

      Pulse y e INTRO para confirmarlo. Obtendrá el siguiente resultado:

      Output

      Firewall is active and enabled on system startup

      Minio está listo para aceptar tráfico, pero antes de establecer conexión con el servidor protegerá la comunicación al instalar un certificado SSL/TLS.

      Paso 4: Proteger el acceso a su servidor Minio con un certificado TLS

      En este paso, protegerá el acceso a su servidor Minio con una clave privada y un certificado público obtenido de una autoridad de certificación (CA); en este caso, Let´s Encrypt. Para obtener un certificado SSL gratuito, usará Certbot.

      Primero, permita el acceso HTTP y HTTPS a través de su firewall. Para hacerlo, abra el puerto 80, que es el puerto para HTTP:

      A continuación, abra el puerto 443 para HTTPS:

      Una vez que haya añadido estas reglas, compruebe el estado de su firewall con el siguiente comando:

      Obtendrá un resultado similar al siguiente:

      Output

      Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp (OpenSSH) ALLOW IN Anywhere 9000 ALLOW IN Anywhere 443 ALLOW IN Anywhere 80 ALLOW IN Anywhere 22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6) 9000 (v6) ALLOW IN Anywhere (v6) 443 (v6) ALLOW IN Anywhere (v6) 80 (v6) ALLOW IN Anywhere (v6)

      Esto confirma que los puertos 80 y 443 están abiertos, lo cual garantiza que su servidor acepta solicitudes de Internet.

      A continuación, instalará Certbot. Debido a que Certbot mantiene un repositorio PPA independiente, deberá añadirlo a su lista de repositorios antes de instalar Certbot, como se indica a continuación:

      Para prepararse para agregar el repositorio PPA, primero instale software-properties-common, un paquete de administración de PPA:

      • sudo apt install software-properties-common

      Este paquete proporciona algunas secuencias de comandos útiles para añadir y eliminar PPA, y evitar hacer el proceso manualmente.

      Ahora, añada el repositorio Universe:

      • sudo add-apt-repository universe

      Este repositorio contiene software gratuito de código abierto cuyo mantenimiento está a cargo de la comunidad de Ubuntu, aunque esto no se realiza oficialmente a través de Canonical, la empresa desarrolladora de Ubuntu. Aquí es donde encontraremos el repositorio para Certbot.

      A continuación, añada el repositorio de Certbot:

      • sudo add-apt-repository ppa:certbot/certbot

      Recibirá el siguiente resultado:

      Output

      This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu(s). More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot Press [ENTER] to continue or ctrl-c to cancel adding it

      Pulse INTRO para aceptar.

      Luego, actualice la lista de paquetes:

      Por último, instale certbot:

      A continuación, usará certbot para generar un nuevo certificado SSL.

      Debido a que Ubuntu 18.04 todavía no admite la instalación automática, usará los comandos certonly y --standalone para obtener el certificado:

      • sudo certbot certonly --standalone -d minio-server.your_domain

      --standalone significa que este certificado es para un servidor web independiente incorporado. Para obtener más información al respecto, consulte nuestro tutorial Cómo utilizar el modo independiente de Certbot para obtener certificados SSL de Let´s Encrypt en Ubuntu 18.04.

      Recibirá el siguiente resultado:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

      Añada su correo electrónico y presione INTRO.

      Certbot le solicitará registrarse en Let´s Encrypt:

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel:

      Escriba A y presione ENTER para aceptar.

      A continuación, se le preguntará si está dispuesto a compartir su correo electrónico con Electronic Frontier Foundation:

      Output

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:

      Una vez que responda Y o N, se generarán y almacenarán sus claves públicas y privadas en el directorio /etc/letsencrypt/live/minio-server.your_domain_name.

      A continuación, copie estos dos archivos (privkey.pem y fullchain.pem) al directorio certs, en la carpeta de configuración del servidor Minio, que es /etc/minio en este tutorial. Utilice lo siguiente para copiar privkey.pem y cambiar el nombre del archivo private.key.

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/privkey.pem /etc/minio/certs/private.key

      Luego, realice lo mismo para fullchain.pem y asigne el nombre public.crt al resultado:

      • sudo cp /etc/letsencrypt/live/minio-server.your_domain_name/fullchain.pem /etc/minio/certs/public.crt

      Ahora, cambie la propiedad de los archivos a minio-user. Primero, hágalo con private.key:

      • sudo chown minio-user:minio-user /etc/minio/certs/private.key

      Luego, con public.crt:

      • sudo chown minio-user:minio-user /etc/minio/certs/public.crt

      Reinstalará el servidor Minio para que reconozca el certificado y se inicie con HTTPS:

      • sudo systemctl restart minio

      Los certificados de Let’s Encrypt son válidos únicamente por noventa días. El propósito de esto es incentivar a los usuarios a automatizar sus procesos de renovación de certificados. El paquete de Certbot que instaló añade automáticamente una secuencia de comandos de renovación a /etc/cron.d. Esta secuencia de comandos se ejecuta dos veces al día y renovará de forma automática cualquier certificado que caduque en treinta o menos días.

      Con esto, la conexión de Minio ahora estará protegida y el certificado SSL/TLS se renovará automáticamente. En el siguiente paso, establecerá conexión con Minio a través del navegador para usar el servidor.

      Paso 5: Conectarse de forma segura a la interfaz web de Minio con HTTPS

      En este paso, se conectará de forma segura a la interfaz web de Minio a través de HTTPS, y luego creará depósitos en los que cargará objetos.

      Acceda a la interfaz web apuntando su navegador a https://minio-server.your_domain:9000.

      Verá la pantalla de inicio de sesión del servidor Minio:

      Pantalla de inicio de sesión de Minio

      Ahora, inicie sesión en la interfaz principal ingresando sus credenciales. En Acces Key, ingrese la MINIO_ACCESS_KEY que configuró en el archivo de entorno /etc/default/minio, en el paso 1. En Secret Key, ingrese la MINIO_SECRET_KEY que configuró en el mismo archivo. Una vez que haya ingresado las credenciales, haga clic en el botón redondo que tiene la flecha y se halla directamente debajo de los campos de entrada.

      Luego, se le presentará la interfaz de usuario de Minio. Para crear un nuevo depósito en el que pueda almacenar objetos, haga clic en el botón rojo claro + en la parte inferior derecha de la interfaz principal para acceder a dos botones amarillos adicionales.

      Interfaz principal de Minio

      Haga clic en el botón amarillo del medio, ingrese un nombre para su nuevo depósito en el mensaje y pulse la tecla INTRO para guardar su respuesta. Su nuevo depósito está listo para usarse para almacenamiento.

      Nota: Al asignar un nombre a su depósito de Minio, asegúrese de que solo contenga letras minúsculas, números o guiones. Minio limita las convenciones de nomenclatura de los depósitos para que sean compatibles con las normas de AWS S3.

      Cuando desee añadir objetos en su depósito, haga clic en el mismo botón rojo claro de antes y luego en el botón amarillo superior para abrir un mensaje de carga de archivos.

      En este punto, trabajó en toda la interfaz web básica de creación de depósitos y carga objetos.

      Conclusión

      Ahora, dispondrá de su propio servidor de almacenamiento de objetos Minio al que podrá conectarse de forma segura desde la interfaz web con un certificado SSL/TLS de Let´s Encrypt. De forma opcional, posiblemente le convenga considerar los clientes de escritorio de Minio para FreeBSD, Linux, Mac y Windows como alternativas para usar y administrar su servidor de almacenamiento de objetos.

      Además, si desea aumentar la capacidad de almacenamiento de su instalación de Minio más allá de la capacidad de almacenamiento en disco de disco de su servidor, puede usar el servicio de almacenamiento de bloque de DigitalOcean para añadir un volumen a su servidor y ampliar la capacidad de almacenamiento hasta 80 TB.

      Puede encontrar más información sobre Minio en el sitio web de documentación de proyectos. Si desea obtener más información sobre el almacenamiento de objetos, consulte nuestros tutoriales de almacenamiento de objetos.



      Source link