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