Monter un object storage avec Rclone
Rclone | Object Storage

Monter un object storage avec Rclone

Table des matières

Dernièrement je vous ai parlé de RustFS, depuis quelques semaines je test le système s3 maison. Dernièrement je suis passé sous MinIO, un tutoriel arrivera justement pour MinIO, en deux temps. Vous comprendrez pourquoi.

Ils devaient sortir avant cet article, mais comme je suis très bien organisé, c'est tout l'inverse qui se produit.

Maintenant que j'ai un s3 stable, j'ai eu envie de monter ce système sur mon desktop Debian 13 et sur une VM multimédia.

  • Sur le desktop, de façon à pouvoir avoir accès à mes fichiers.
  • Sur ma VM multimédia, pour que mes applications docker comme Navidrome ou Jellyfin puissent accéder au contenu dont elles vont s'occuper.

Pour le montage, j'étais partit sur fstab comme j'en avais l'habitude avec NFS/SMB. Mais ici ce n'est pas du tout conseillé, il vaut mieux un bon Rclone/fuse3, le tout, géré avec un service qui va s'occuper de monter tout ça au démarrage.

Il m'a fallu un bon bout de temps de recherches et de tests pour avoir quelque chose de convenable et je vais vous partager ça dans quelques instants, en espérant que ça puisse vous aider.


Créer le point de montage

Connaître son ID

Pour commencer, faites cette commande dans votre terminal :

id

Cela va retourner quelque chose qui ressemble à ça :

Prenez note de votre uid et votre gid.

Créer le dossier pour le point de montage

Dans notre exemple, nous allons créer dans le dossier /mnt, le dossier minio, qui va contenir les dossiers montés de notre S3.

Créons notre dossier de montage :

mkdir /mnt/minio

Ajuster le groupe et les permissions

Reste à effectuer ces deux commandes pour avoir les bonnes permissions afin de lire et écrire dans le dossier minio :

sudo chown 1000:1000 /mnt/minio
chmod 755 /mnt/minio
  • sudo chown 1000:1000 /mnt/minio => Remplacez 1000:1000 par votre uid et gid.

Installer et configurer fuse3

Fuse3 va vous permettre de monter un bucket S3, Google Drive, MinIO comme si c’était un dossier Linux.

Installer fuse3

sudo apt update
sudo apt install fuse3

Configurer fuse.conf

Par défaut, seul l’utilisateur qui a fait le montage peut accéder au contenu, avec allow-other, tous les utilisateurs du système peuvent accéder au montage.

S'il n'y a que votre utilisateur qui va utiliser ce service, inutile de suivre cette procédure.

Si vous n'êtes pas le seul utilisateur, faites ceci :

nano /etc/fuse.conf

Supprimez le # de

user_allow_other

Installer et configurer Rclone

Installer Rclone

curl https://rclone.org/install.sh | sudo bash

Créez, s'ils ne sont pas existants, ces deux dossiers :

mkdir -p ~/.config/rclone

Créer le fichier config

Avant de créer le fichier config, s'ils n'existent pas déjà, on va créer les deux dossiers nécessaires pour placer le rclone.config.

Rendez-vous dans le dossier votre utilisateur, dans /home/votre_utilisateur. Créez les dossiers, attention, .config est un dossier caché, pour le voir, il faut faire la commande ls -a.

Créons ces dossiers :

mkdir -p ~/.config/rclone

Vérifions que tout est bon :

ls -ld ~/.config/rclone

Vous devriez voir ceci :

Créez maintenant le fichier config :

nano ~/.config/rclone/rclone.conf

Collez ça dedans :

[minio]
type = s3
provider = Minio
access_key_id = xxxxx
secret_access_key = xxxxxxx
endpoint = https://s3.mondomaine.com
acl = private
💡
Suivant ce que vous utiliser comme s3, il se peut que vous ayez à indiquer la région, que vous n'avez probablement pas si vous faites du self-hosting.
Dans ce cas, dans région, ajoutez ceci : us-east-1
  • type => Laissez sur s3.
  • provider => Si vous utilisez MinIO, mettez Minio, dans le cas de RustFS par exemple, mettez Custom.
  • access_key_id => Indiquez l'access key.
  • secret_access_key => Indiquez la secret accesds key.
  • endpoint => Soit le nom de votre domaine qui pointe sur l'API de votre s3, ou sous cette forme sans domaine : http://192.168.1.62:9000. Adaptez l'IP de votre serveur et le port de l'API.
  • acl => Access Control List, lorsque qu'on crée un bucket, on doit définir public ou private. Dans l'immense majorité des cas, choisissez bien entendu private, sans quoi votre bucket est exposé.

Créer un service pour le montage automatique

Dans ce type de configuration, oubliez fstab. Ce n'est pas très adapté. Optez pour un service qui va s'occuper de monter tout ça au démarrage.

Créer le fichier de service pour un montage automatique au démarrage du serveur :

nano /etc/systemd/system/rclone-minio.service

Collez ça dedans :

[Unit]
Description=Mount MinIO via rclone
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=1000
Group=1000
ExecStartPre=/bin/mkdir -p /mnt/minio
ExecStart=/usr/bin/rclone mount minio: /mnt/minio \
    --vfs-cache-mode full \
    --vfs-cache-max-age 1s \
    --vfs-cache-max-size 10G \
    --dir-cache-time 10s \
    --allow-other \
    --rc \
    --log-level INFO
ExecStop=/bin/fusermount -uz /mnt/minio
Restart=always
RestartSec=10
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target
⚠️
Il existe de nombreux réglages, n'hésitez pas à vous documenter, si vous n'avez pas 100k de fichiers dans un dossier, cela devrait vous convenir.
  • ExecStart=/usr/bin/rclone mount minio: /mnt/minio \ => Paramètres très important. Il va définir si vous allez monter la racine de votre s3 (minio: /mnt/minio), et donc voir tous les buckets, ou au contraire, si vous voulez restreindre l'accès, imaginons que vous vouliez juste le bucket videos, indiquez le nom de votre bucket après les :, comme ceci : minio:videos /mnt/mini.
  • vfs-cache-mode full => Permet lecture et écriture/modification comme si le FS était local.
  • vfs-cache-max-age 1s => Cette option définit pendant combien de temps les fichiers mis en cache par Rclone sont conservés localement avant d’être supprimés du cache.
  • vfs-cache-max-size 10G => Limite le cache local à 10 Go pour éviter de remplir ton disque.
  • dir-cache-time 10s => Cette option contrôle pendant combien de temps Rclone garde en cache l’arborescence des dossiers.

Ensuite, on recharge le daemon, on active et démarre le service :

sudo systemctl daemon-reload
sudo systemctl enable rclone-minio
sudo systemctl start rclone-minio

Vous devriez voir vos dossiers :


zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.

Vous pourriez aussi aimer