Serveur Ubuntu avec MinIO + Let's Encrypt + Laravel

Installation et configuration de MinIO sur Ubuntu + Lets Encrypt + Intégration de Laravel

Vous recherchez une alternative rentable à Amazon S3 ? MinIO est une excellente option. Dans ce guide, nous vous guiderons à travers l'installation et la configuration de base de MinIO sur votre serveur Ubuntu, ainsi que des étapes bonus pour l'intégrer à Laravel/PHP.

Bien entendu, cette configuration est à vos propres risques. Nous ne sommes responsables de rien.

Étape 1 : configurer le serveur Ubuntu

Avant de commencer, assurez-vous que votre serveur Ubuntu est opérationnel.

Étape 2 : Installer MinIO

Pour installer MinIO, suivez les instructions fournies dans le documentation officielle de MinIO.

Étape 3 : Configurer le service MinIO systemd

Après l'installation, ajoutez le fichier systemd minio.service. S'il n'est pas ajouté automatiquement, vous pouvez l'ajouter manuellement. Vous pouvez trouver un fichier exemple ici.

Ouvrez le fichier minio.service et supprimez les lignes suivantes :

Utilisateur = utilisateur minio Groupe = utilisateur minio

Sans ces lignes, MinIO fonctionnera à la racine comme décrit dans ce problème GitHub.

Étape 4 : Installer le certificat SSL Let's Encrypt

MinIO prend en charge le cryptage SSL. Pour configurer SSL, vous pouvez utiliser Let's Encrypt, un fournisseur de certificats SSL gratuit et largement fiable.

Suivez les instructions sur https://certbot.eff.org pour qu'Ubuntu installe Let's Encrypt et génère votre certificat SSL.

Étape 5 : Configurer MinIO avec Let's Encrypt

Une fois le certificat SSL généré, vous devez configurer MinIO pour l'utiliser. Voici comment:

Copiez les fichiers du certificat SSL dans le répertoire MinIO :

cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /root/.minio/certs/private .clé

Configurez une crontab pour renouveler le certificat SSL chaque semaine :

0 5 * * 1 cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /root/.minio/certs/public.crt 0 5 * * 5 cp /etc/letsencrypt/live/yourdomain.com/privkey. pem /root/.minio/certs/private.key

Étape 6 : Modifier les paramètres MinIO

Modifiez le fichier de configuration MinIO :

nano /etc/default/minio

Mettez à jour les paramètres suivants :

MINIO_VOLUMES="/mnt/data" MINIO_OPTS="--adresse :9000 --console-address :9001" MINIO_ROOT_USER="votre_nom d'utilisateur" MINIO_ROOT_PASSWORD="votre_mot de passe" MINIO_SERVER_URL="https://votredomaine.com:9000" MINIO_CONFIG_ENV_FILE=/ etc/par défaut/minio

Étape 7 : Modifier le nom d'utilisateur et le mot de passe par défaut

Modifiez le nom d'utilisateur et le mot de passe par défaut pour sécuriser votre installation MinIO.

Étape 8 : Redémarrez le service MinIO

Redémarrez le service MinIO pour appliquer les modifications :

sudo systemctl restart minio.service

Vérifiez l'état pour vous assurer que MinIO est en cours d'exécution :

sudo systemctl statut minio.service

Étape 9 : Activer MinIO au démarrage

Pour permettre à MinIO de s'exécuter au démarrage, utilisez la commande suivante :

systemctl activer minio

Étape 10 : Créer un compartiment

Créez un compartiment dans MinIO pour stocker vos fichiers. Vous pouvez utiliser l'interface Web MinIO ou l'outil de ligne de commande MinIO pour créer un compartiment.

Étape 11 : Créer une stratégie pour le compartiment

Créez une stratégie pour le compartiment afin de définir les autorisations d'accès. Voici un exemple de politique :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Autoriser", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3 :::votre_bucket/*" ] } ] }

Étape 12 : Créer un utilisateur et attribuer la nouvelle stratégie

Créez un utilisateur dans MinIO et attribuez la stratégie précédemment créée à l'utilisateur.

Générez une clé d'accès et une clé secrète pour l'utilisateur. Vous aurez besoin de ces clés dans les prochaines étapes.

Étape 13 : Configurer la prise en charge de Laravel pour MinIO

Si vous utilisez Laravel ou PHP, vous pouvez intégrer MinIO à votre application en utilisant le ligue/flysystem-aws-s3-v3 emballer.

Installez le package via Composer :

le compositeur nécessite league/flysystem-aws-s3-v3 "^3.0"

Ensuite, mettez à jour le systèmes de fichiers.php fichier de configuration:

'cloud' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'driver' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// votredomaine.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'), ],

Étape 14 : Tester l'intégration de MinIO dans Laravel

Vérifiez l'intégration MinIO à l'aide de la console Tinker de Laravel :

artisan bricoleur php \Storage::cloud()->put('hello.json', '{"hello": "world"}'); \Storage::cloud()->get('hello.json');

Cela devrait renvoyer quelque chose comme « vrai » ou quelque chose de réussi. Sinon, vous pouvez ajouter cette option de débogage des systèmes de fichiers à MinIO : 'throw'=> env('APP_DEBUG'), cela deviendra donc quelque chose comme :

'cloud' => env('FILESYSTEM_CLOUD', 'minio'), ... 'minio' => [ 'driver' => 's3', 'endpoint' => env('MINIO_ENDPOINT', 'https:// votredomaine.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) ],

Cela déboguera / générera des messages d'erreur uniquement lorsque APP_DEBUG est activé. Ne l’exécutez jamais en production ou dans des environnements sensibles.

Étape 15 : Configurer le DNS inversé

Configurez un DNS inversé si possible.

Étape 16 : Redémarrer et vérifier

Redémarrez votre serveur et vérifiez que MinIO et l'intégration avec Laravel fonctionnent toujours correctement. Cela signifiera (espérons-le) que systemd fonctionne toujours correctement.

Étape 17 : Configurer les pare-feu

Pour améliorer la sécurité, vous pouvez configurer des pare-feu pour restreindre l'accès à MinIO :

  • Pour l’accès administrateur, autorisez les connexions uniquement à partir des adresses IP de votre domicile/bureau.
  • Pour l'accès au Web, autorisez les connexions uniquement à partir des adresses IP des serveurs qui ont besoin d'accès.

Méfiez-vous toujours du fait que si l’adresse IP de votre maison, de votre bureau ou de votre serveur change, vous devrez les ajouter à la liste blanche. Si les adresses IP changent trop fréquemment, prenez d'autres mesures de sécurité appropriées pour votre serveur.

En suivant ces étapes, vous pouvez installer et configurer un serveur MinIO de base sur votre serveur Ubuntu, évitant ainsi les coûts élevés associés à Amazon S3. L'intégration de MinIO à Laravel/PHP vous permet d'exploiter la puissance du stockage objet dans vos applications tout en gardant le contrôle de vos données et de vos coûts.

Créez également une tâche cron de vérification de l'espace disque qui envoie un e-mail si votre disque est presque plein, surtout si vous utilisez MinIO en mode serveur unique. MinIO a la capacité de relier plusieurs serveurs et zones de réplication entre eux.

Si cela s'avère trop complexe, nous avons également créé un guide pour mettre en place un serveur SFTP simple pour Ubuntu / Laravel.

Bonjour tout le monde

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrançais
Défiler vers le haut