> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/fr/configuration/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Ce document couvre la configuration de S3 dans Server CE et Overleaf Pro. Un [guide séparé](/on-premises/fr/maintenance/s3-migration.md) se trouve sur la migration des données existantes vers un stockage compatible S3.
{% endhint %}

## Quand envisager d’utiliser S3 pour le stockage des données

Pour les instances de moins de 1000 sièges, nous recommandons d’utiliser un stockage sur disque local avec des sauvegardes régulières [sauvegardes cohérentes](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Pour les grandes instances de plus de 1000 sièges qui atteignent les limites de leur stockage local (taille ou débit), nous recommandons d’utiliser un stockage d’objets compatible S3 plutôt que d’autres solutions de stockage basées sur le réseau comme NFS.

## Options de stockage d’objets compatibles S3

Voici les options les plus populaires pour le stockage d’objets compatible S3 :

* [AWS S3](https://aws.amazon.com/s3/), géré, nous suggérons de choisir AWS S3 lorsque vous exécutez Overleaf CE/Server Pro sur AWS
* [MINIO](https://min.io/), auto-hébergé
* [Ceph](https://ceph.io/en/), auto-hébergé
* D’autres fournisseurs d’hébergement proposent également une forme de stockage d’objets compatible S3 géré ; vous pourriez vouloir utiliser ceux-ci plutôt que de l’exécuter vous-même lorsque vous faites déjà fonctionner Overleaf CE/Server Pro chez un tel fournisseur.

## Considérations de latence lors du choix d’un stockage d’objets compatible S3

La latence entre l’instance Server CE/Server Pro et votre stockage d’objets compatible S3 contribue fortement au temps nécessaire pour terminer la migration. La latence a également un impact sur les performances de téléversement des fichiers dans Server CE/Server Pro, et des téléchargements de fichiers lents peuvent aussi avoir un impact important sur les temps de compilation PDF. Nous suggérons de minimiser la distance géographique entre votre instance Server CE/Server Pro et le stockage d’objets compatible S3. Dans un environnement géré, cela signifierait provisionner un bucket dans la même région, et pour une solution sur site, faire fonctionner les deux sur le même campus.

## Configuration de S3

Nous avons besoin de quatre « buckets » et de deux comptes utilisateurs restreints.

{% hint style="warning" %}
Les buckets doivent **ne pas** être accessibles publiquement
{% endhint %}

<table data-header-hidden><thead><tr><th width="279"></th><th width="152"></th><th width="97"></th><th></th></tr></thead><tbody><tr><td>Bucket</td><td>Utilisation</td><td>Service</td><td>Auparavant dans <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>fichiers utilisateur du projet</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>fichiers de modèle</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>blobs d’historique de projet</td><td>historique et magasin de fichiers en lecture seule</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>morceaux d’historique</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Vous souhaiterez peut-être/devrez peut-être choisir un nom différent ; assurez-vous d’utiliser les buckets personnalisés dans toutes les commandes.

Ce qui suit utilisera des espaces réservés pour les identifiants réels :

<table><thead><tr><th width="431">Variable d’environnement</th><th>Description</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>La clé d’accès/le nom d’utilisateur de l’utilisateur restreint du service de magasin de fichiers.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>La clé secrète/le mot de passe de l’utilisateur restreint du service de magasin de fichiers.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>La clé d’accès/le nom d’utilisateur de l’utilisateur restreint du service d’historique.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>La clé secrète/le mot de passe de l’utilisateur restreint du service d’historique.</td></tr></tbody></table>

Server CE et Server Pro n’ont besoin que d’un petit ensemble d’autorisations sur chaque bucket :

* créer un objet
* obtenir un objet
* supprimer un objet
* lister le bucket

### Politiques d’accès

Voici à quoi pourrait ressembler une politique pour l’utilisateur du magasin de fichiers :

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-user-files"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-user-files/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-template-files"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-template-files/*"
    }
  ]
}
```

Voici à quoi pourrait ressembler une politique pour l’utilisateur de l’historique :

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-chunks"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-chunks/*"
    }
  ]
}
```

### Présentation des variables

#### Lors de l’utilisation d’AWS S3

```bash
# Activer le backend S3 pour le magasin de fichiers
OVERLEAF_FILESTORE_BACKEND=s3

# Nom du bucket pour les fichiers de projet
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nom du bucket pour les fichiers de modèle
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Clé pour l’utilisateur du magasin de fichiers
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Secret pour l’utilisateur du magasin de fichiers
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Région du bucket que vous avez choisie lors de la création des buckets.
OVERLEAF_FILESTORE_S3_REGION=""

# Activer le backend S3 pour l’historique
OVERLEAF_HISTORY_BACKEND=s3

# Nom du bucket pour les blobs d’historique de projet
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nom du bucket pour les morceaux d’historique
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Clé pour l’utilisateur de l’historique
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Secret pour l’utilisateur de l’historique
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Région du bucket que vous avez choisie lors de la création des buckets.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Lors de l’utilisation d’une option auto-hébergée

```bash
# Activer le backend S3 pour le magasin de fichiers
OVERLEAF_FILESTORE_BACKEND=s3

# Nom du bucket pour les fichiers de projet
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nom du bucket pour les fichiers de modèle
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Clé pour l’utilisateur du magasin de fichiers
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Secret pour l’utilisateur du magasin de fichiers
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Point de terminaison du fournisseur S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Adressage de bucket de type path-style. Il est fort probable que vous deviez le définir à « true ».
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Région du bucket. Il est fort probable que vous n’ayez pas besoin de la configurer.
OVERLEAF_FILESTORE_S3_REGION=""

# Activer le backend S3 pour l’historique
OVERLEAF_HISTORY_BACKEND=s3

# Nom du bucket pour les blobs d’historique de projet
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nom du bucket pour les morceaux d’historique
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Clé pour l’utilisateur de l’historique
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Secret pour l’utilisateur de l’historique
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Point de terminaison du fournisseur S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Adressage de bucket de type path-style. Il est fort probable que vous deviez le définir à « true ».
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Région du bucket. Il est fort probable que vous n’ayez pas besoin de la configurer.
OVERLEAF_HISTORY_S3_REGION=""
```

### Configuration de MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` et `MINIO_ROOT_PASSWORD` sont les identifiants racine de l’instance MINIO.
{% endhint %}

Veuillez suivre la [documentation officielle](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) pour obtenir une copie de `mc`.

```bash
mc alias set s3 http://10.10.10.10:9000 MINIO_ROOT_USER MINIO_ROOT_PASSWORD

# Placez le contenu des politiques de la section précédente dans les
# fichiers JSON respectifs policy-filestore.json et policy-history.json.

# Rappel : remplacez les noms des buckets et les identifiants en conséquence.

# buckets, utilisateur et politique du magasin de fichiers
mc mb --ignore-existing s3/overleaf-user-files
mc mb --ignore-existing s3/overleaf-template-files
mc admin user add s3 \\
  OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID \\
  OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY
mc admin policy create s3 overleaf-filestore policy-filestore.json
mc admin policy attach s3 overleaf-filestore \\
  --user=OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID

# buckets, utilisateur et politique de l’historique
mc mb --ignore-existing s3/overleaf-project-blobs
mc mb --ignore-existing s3/overleaf-chunks
mc admin user add s3 \\
  OVERLEAF_HISTORY_S3_ACCESS_KEY_ID \\
  OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY
mc admin policy create s3 overleaf-history policy-history.json
mc admin policy attach s3 overleaf-history \\
  --user=OVERLEAF_HISTORY_S3_ACCESS_KEY_ID
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/fr/configuration/overleaf-toolkit/s3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
