Installation d'un serveur S3 local avec réplication
Mes serveurs :
-
Serveur 1 :
nas-01.nehemiebarkia.fr(192.168.1.69) -
Serveur 2 :
nas-02.nehemiebarkia.fr(192.168.1.70)
Sur le serveur 1
mkdir /etc/minio
mkdir /etc/minio/minio_certs
mkdir /var/lib/minio
/etc/minio/docker-compose.yml :
services:
minio:
image: quay.io/minio/minio:latest
container_name: minio-srv1
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: MDP01
MINIO_SERVER_URL: "https://nas-01.nehemiebarkia.fr:9000"
MINIO_BROWSER_REDIRECT_URL: "https://nas-01.nehemiebarkia.fr:9001"
MINIO_SERVER_INSECURE: "on"
volumes:
- /var/lib/minio:/data
- ./minio_certs:/root/.minio/certs
command: server /data --console-address ":9001" --address ":9000"
restart: always
Sur le serveur 2
/etc/minio/docker-compose.yml :
minio:
image: quay.io/minio/minio:latest
container_name: minio-srv2
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: MDP02
MINIO_SERVER_URL: "https://nas-02.nehemiebarkia.fr:9000"
MINIO_BROWSER_REDIRECT_URL: "https://nas-02.nehemiebarkia.fr:9001"
MINIO_SERVER_INSECURE: "on"
volumes:
- /var/lib/minio:/data
- ./minio_certs:/root/.minio/certs
command: server /data --console-address ":9001" --address ":9000"
restart: always
Sur le serveur 1
Génération des certificats :
# 1. Création de l'arborescence propre
mkdir -p /etc/minio/minio_certs/CAs
cd /etc/minio/minio_certs
# 2. Génération de l'Autorité de Certification (CA) partagée
openssl genrsa -out shared-ca.key 4096
openssl req -x509 -new -nodes -key shared-ca.key -sha256 -days 3650 -out shared-ca.pem \
-subj "/CN=Minio-Shared-CA"
# 3. Génération du certificat pour NAS-01 (192.168.1.69)
openssl genrsa -out private.key 2048
cat > nas01.ext << EOF
subjectAltName = IP:192.168.1.69,DNS:nas-01.nehemiebarkia.fr
EOF
openssl req -new -key private.key -out nas01.csr -subj "/CN=nas-01.nehemiebarkia.fr"
openssl x509 -req -in nas01.csr -CA shared-ca.pem -CAkey shared-ca.key -CAcreateserial -out public.crt -days 3650 -extfile nas01.ext
# 4. Préparation du certificat pour NAS-02 (192.168.1.70)
# On crée un sous-dossier temporaire pour ne pas écraser les fichiers de nas-01
mkdir -p ./for_nas02
openssl genrsa -out ./for_nas02/private.key 2048
cat > nas02.ext << EOF
subjectAltName = IP:192.168.1.70,DNS:nas-02.nehemiebarkia.fr
EOF
openssl req -new -key ./for_nas02/private.key -out nas02.csr -subj "/CN=nas-02.nehemiebarkia.fr"
openssl x509 -req -in nas02.csr -CA shared-ca.pem -CAkey shared-ca.key -out ./for_nas02/public.crt -days 3650 -extfile nas02.ext
# 5. Mise en place de la confiance (CA) pour les deux
cp shared-ca.pem ./CAs/public.crt
cp shared-ca.pem ./for_nas02/public_ca.crt # On le garde sous le coude pour le transfert
# 6. Droits finaux sur NAS-01
chmod 644 public.crt && chmod 600 private.key && chmod 644 CAs/public.crt
echo "-----------------------------------------------------------------------"
echo "✅ GÉNÉRATION TERMINÉE SUR NAS-01"
echo "-----------------------------------------------------------------------"
echo "ÉTAPES POUR LE NAS-02 :"
echo "1. Créez le dossier : mkdir -p /etc/minio/minio_certs/CAs"
echo "2. Copiez les fichiers depuis NAS-01 vers NAS-02 :"
echo " - /etc/minio/minio_certs/for_nas02/public.crt -> /etc/minio/minio_certs/public.crt"
echo " - /etc/minio/minio_certs/for_nas02/private.key -> /etc/minio/minio_certs/private.key"
echo " - /etc/minio/minio_certs/for_nas02/public_ca.crt -> /etc/minio/minio_certs/CAs/public.crt"
echo "-----------------------------------------------------------------------"
Réplication
Commandes à exécuter sur le serveur nas-01
Démarage du conteneur pour utiliser mc :
docker run -it --entrypoint=/bin/sh minio/mc
Authentification site 1 :
mc alias set site1 https://192.168.1.69:9000 admin MDP01
Authentification site 1 :
mc alias set site1 https://192.168.1.70:9000 admin MDP02