Skip to main content

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

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 "-----------------------------------------------------------------------"
docker compose up -d

Sur le serveur 2

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-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
docker compose up -d

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://nas-01.nehemiebarkia.fr:9000 admin MDP01 --insecure

Authentification site 1 : 

mc alias set site1 https://nas-02.nehemiebarkia.fr:9000 admin MDP02 --insecure

Activation de la réplication : 

mc admin replicate add site1 site2 --insecure