Op zoek naar een kosteneffectief alternatief voor Amazon S3? MiniIO is een geweldige optie. In deze handleiding leiden we u door de installatie en basisconfiguratie van MinIO op uw Ubuntu-server, samen met bonusstappen om het te integreren met Laravel/PHP.
Het opzetten hiervan is uiteraard op eigen risico. Wij zijn nergens verantwoordelijk voor.
Stap 1: Stel Ubuntu-server in
Voordat we beginnen, moet u ervoor zorgen dat er een Ubuntu-server actief is.
Stap 2: Installeer MinIO
Om MinIO te installeren, volgt u de instructies in de officiële MinIO-documentatie.
Stap 3: Configureer de MinIO systemd-service
Voeg na de installatie het bestand systemd minio.service toe. Als het niet automatisch wordt toegevoegd, kunt u het handmatig toevoegen. U vindt een voorbeeldbestand hier.
Open het bestand minio.service en verwijder de volgende regels:
Gebruiker=minio-gebruiker Groep=minio-gebruiker
Zonder deze regels zal MinIO in de root werken, zoals beschreven in dit GitHub-probleem.
Stap 4: Installeer het Let's Encrypt SSL-certificaat
MinIO ondersteunt SSL-codering. Om SSL in te stellen, kunt u Let's Encrypt gebruiken, een gratis en algemeen vertrouwde SSL-certificaatprovider.
Volg de instructies op https://certbot.eff.org zodat Ubuntu Let's Encrypt installeert en uw SSL-certificaat genereert.
Stap 5: Configureer MinIO met Let's Encrypt
Zodra u het SSL-certificaat heeft gegenereerd, moet u MinIO configureren om het te gebruiken. Hier is hoe:
Kopieer de SSL-certificaatbestanden naar de MinIO-directory:
cp /etc/letsencrypt/live/uwdomein.com/fullchain.pem /root/.minio/certs/public.crt cp /etc/letsencrypt/live/uwdomein.com/privkey.pem /root/.minio/certs/private .sleutel
Stel een crontab in om het SSL-certificaat wekelijks te vernieuwen:
0 5 * * 1 cp /etc/letsencrypt/live/uwdomein.com/fullchain.pem /root/.minio/certs/public.crt 0 5 * * 5 cp /etc/letsencrypt/live/uwdomein.com/privkey. pem /root/.minio/certs/private.key
Stap 6: Wijzig de MinIO-instellingen
Wijzig het MinIO-configuratiebestand:
nano /etc/default/minio
Update de volgende instellingen:
MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--adres:9000 --console-adres:9001" MINIO_ROOT_USER="uw_gebruikersnaam" MINIO_ROOT_PASSWORD="uw_wachtwoord" MINIO_SERVER_URL="https://uwdomein.com:9000" MINIO_CONFIG_ENV_FILE=/ etc/standaard/minio
Stap 7: Wijzig de standaardgebruikersnaam en het wachtwoord
Wijzig de standaard gebruikersnaam en het wachtwoord om uw MinIO-installatie te beveiligen.
Stap 8: Start de MinIO-service opnieuw
Start de MinIO-service opnieuw om de wijzigingen toe te passen:
sudo systemctl herstart minio.service
Controleer de status om er zeker van te zijn dat MinIO actief is:
sudo systemctl-status minio.service
Stap 9: Schakel MinIO in bij het opstarten
Om MinIO in te schakelen bij het opstarten, gebruikt u de volgende opdracht:
systemctl schakel minio in
Stap 10: Maak een emmer
Maak een bucket in MinIO om uw bestanden op te slaan. U kunt de MinIO-webinterface of het MinIO-opdrachtregelprogramma gebruiken om een bucket te maken.
Stap 11: Maak een beleid voor de bucket
Maak een beleid voor de bucket om toegangsrechten te definiëren. Hier is een voorbeeldbeleid:
{ "Versie": "17-10-2012", "Verklaring": [ { "Effect": "Toestaan", "Actie": [ "s3:*" ], "Bron": [ "arn:aws:s3 :::uw_bucket/*" ] } ] }
Stap 12: Maak een gebruiker aan en wijs het nieuwe beleid toe
Maak een gebruiker aan in MinIO en wijs het eerder gemaakte beleid toe aan de gebruiker.
Genereer een toegangssleutel en een geheime sleutel voor de gebruiker. U heeft deze sleutels nodig bij de volgende stappen.
Stap 13: Laravel-ondersteuning voor MinIO instellen
Als u Laravel of PHP gebruikt, kunt u MinIO met uw applicatie integreren met behulp van de league/flysystem-aws-s3-v3
pakket.
Installeer het pakket via Composer:
componist vereist league/flysystem-aws-s3-v3 "^3.0"
Update vervolgens het bestandssystemen.php
configuratiebestand:
'cloud' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'stuurprogramma' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// jouwdomein.com:9000'), 'use_path_style_endpoint' => true, 'key' => env('MINIO_KEY', '...'), 'secret' => env('MINIO_SECRET', '...') , 'region' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), ],
Stap 14: Test MinIO-integratie in Laravel
Controleer de MinIO-integratie met behulp van de Tinker-console van Laravel:
php artisan tinker \Storage::cloud()->put('hello.json', '{"hello": "world"}'); \Storage::cloud()->get('hallo.json');
Dit zou zoiets als 'waar' of iets succesvols moeten retourneren. Als dit niet het geval is, kunt u deze debug-optie voor bestandssystemen toevoegen aan MinIO: 'throw'=> env('APP_DEBUG'), zodat het zoiets wordt als:
'cloud' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'stuurprogramma' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// jouwdomein.com:9000'), 'use_path_style_endpoint' => true, 'key' => env('MINIO_KEY', '...'), 'secret' => env('MINIO_SECRET', '...') , 'region' => env('MINIO_REGION', 'JUSTSOMETHINGRANDOM'), 'bucket' => env('MINIO_BUCKET', 'BUCKETNAME'), 'throw' => env('APP_DEBUG', false) ],
Hierdoor worden alleen fouten opgespoord/foutmeldingen weergegeven als APP_DEBUG is ingeschakeld. Voer dit nooit uit in productie of in gevoelige omgevingen.
Stap 15: Reverse DNS instellen
Stel indien mogelijk reverse DNS in.
Stap 16: Opnieuw opstarten en verifiëren
Start uw server opnieuw op en controleer of MinIO en de integratie met Laravel nog steeds correct functioneren. Dit betekent (hopelijk) dat systemd nog steeds goed werkt.
Stap 17: Firewalls configureren
Om de veiligheid te verbeteren, kunt u firewalls instellen om de toegang tot MinIO te beperken:
- Voor beheerderstoegang moet u alleen verbindingen toestaan vanaf uw thuis-/kantoor-IP-adressen.
- Sta voor webtoegang alleen verbindingen toe vanaf de IP's van de servers die toegang nodig hebben.
Wees altijd op uw hoede voor het feit dat als het IP-adres van uw huis, kantoor of server verandert, u deze aan de witte lijst moet toevoegen. Als de IP-adressen te vaak veranderen, neem dan andere passende beveiligingsmaatregelen voor uw server.
Door deze stappen te volgen, kunt u een basis MinIO-server op uw Ubuntu-server installeren en instellen, waardoor u de hoge kosten die gepaard gaan met Amazon S3 vermijdt. Door MinIO te integreren met Laravel/PHP kunt u de kracht van objectopslag in uw applicaties benutten, terwijl u de controle over uw gegevens en kosten behoudt.
Maak ook een cronjob voor het controleren van de schijfruimte die een e-mail stuurt als uw schijf bijna vol is, vooral als u MinIO in de enkele servermodus gebruikt. MinIO heeft de mogelijkheid om meerdere servers en replicatiezones aan elkaar te koppelen.
Als dit te complex is, hebben we ook een handleiding gemaakt voor het opzetten van een eenvoudige SFTP-server voor Ubuntu / Laravel.