> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# S3

<Info>
  Dieses Dokument behandelt die Einrichtung von S3 in Server CE und Ayakaleaf Pro. Eine [separate Anleitung](/de/on-premises/maintenance/s3-migration) beschreibt die Migration bestehender Daten in S3-kompatiblen Speicher.
</Info>

<Warning>
  Wenn Sie Ayakaleaf Pro mit aktiviertem [s3.md](/de/on-premises/configuration/overleaf-toolkit/s3 "mention")-Speicher bereitstellen: Werden die in S3 gespeicherten Daten verschlüsselt?

  *<strong>Nein.</strong>* Die Daten werden nicht verschlüsselt. Alle History-Chunks, Vorlagendateien, PDFs und anderen Dateien werden im Klartext gespeichert. Wenn Sie einen externen S3-Speicheranbieter eines Drittanbieters nutzen, achten Sie bitte besonders auf Datensicherheit und Datenschutz.
</Warning>

## Wann Sie S3 für die Datenspeicherung in Betracht ziehen sollten

Für Instanzen mit weniger als 1000 Plätzen empfehlen wir lokalen Festplattenspeicher mit regelmäßigen [konsistenten Backups](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Für größere Instanzen mit mehr als 1000 Plätzen, die an die Grenzen ihres lokalen Speichers (Größe oder Durchsatz) stoßen, empfehlen wir ein S3-kompatibles Objektspeicher-Backend anstelle anderer netzwerkbasierter Speicherlösungen wie NFS.

## Optionen für S3-kompatiblen Objektspeicher

Dies sind die beliebtesten Optionen für S3-kompatiblen Objektspeicher:

* [AWS S3](https://aws.amazon.com/s3/), verwaltet; wir empfehlen AWS S3, wenn Sie Overleaf CE/Server Pro auf AWS betreiben
* [MINIO](https://min.io/), selbst gehostet
* [Ceph](https://ceph.io/en/), selbst gehostet
* Auch andere Hosting-Anbieter bieten eine Form von verwaltetem S3-kompatiblem Objektspeicher an. Wenn Sie Overleaf CE/Server Pro bereits bei einem solchen Anbieter betreiben, ist es möglicherweise sinnvoll, diesen zu nutzen, statt einen eigenen zu betreiben.

## Latenz bei der Wahl eines S3-kompatiblen Objektspeichers

Die Latenz zwischen der Server CE/Server Pro-Instanz und Ihrem S3-kompatiblen Objektspeicher trägt erheblich zur Dauer der Migration bei. Die Latenz wirkt sich außerdem auf die Leistung beim Hochladen von Dateien in Server CE/Server Pro aus, und langsame Datei-Downloads können sich auch stark auf die PDF-Kompilierzeiten auswirken. Wir empfehlen, die geografische Entfernung zwischen Ihrer Server CE/Server Pro-Instanz und dem S3-kompatiblen Objektspeicher möglichst gering zu halten. In einer verwalteten Umgebung bedeutet dies, einen Bucket in derselben Region bereitzustellen; bei einer On-Premises-Lösung, beide auf demselben Campus zu betreiben.

## S3-Einrichtung

Wir benötigen vier "Buckets" und zwei eingeschränkte Benutzerkonten. `overleaf-user-files` und `OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME` werden nur vor v6 benötigt.

<Warning>
  Buckets sollten **nicht** öffentlich zugänglich sein
</Warning>

<div style={{ overflowX: "auto" }}><table style={{ display: "table", width: "100%" }}><thead><tr><th width="279" /><th width="152" /><th width="97" /><th /></tr></thead><tbody><tr><td>Bucket</td><td>Verwendung</td><td>Service</td><td>Bisher in `/var/lib/overleaf/data`</td></tr><tr><td>`overleaf-user-files`</td><td>Benutzerdateien der Projekte</td><td>filestore</td><td>`user_files`</td></tr><tr><td>`overleaf-template-files`</td><td>Vorlagendateien</td><td>filestore</td><td>`template_files`</td></tr><tr><td>`overleaf-project-blobs`</td><td>History-Blobs der Projekte</td><td>history und schreibgeschützter filestore</td><td>`history/overleaf-project-blobs`</td></tr><tr><td>`overleaf-chunks`</td><td>History-Chunks</td><td>history</td><td>`history/overleaf-chunks`</td></tr></tbody></table></div>

Möglicherweise möchten oder müssen Sie andere Namen wählen. Verwenden Sie dann in allen Befehlen Ihre eigenen Bucket-Namen.

Im Folgenden werden Platzhalter für die tatsächlichen Zugangsdaten verwendet:

<div style={{ overflowX: "auto" }}><table style={{ display: "table", width: "100%" }}><thead><tr><th width="431">Umgebungsvariable</th><th>Beschreibung</th></tr></thead><tbody><tr><td>`OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID`</td><td>Der Access Key/Benutzername des eingeschränkten Benutzers des filestore-Service.</td></tr><tr><td>`OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY`</td><td>Der Secret Key/das Passwort des eingeschränkten Benutzers des filestore-Service.</td></tr><tr><td>`OVERLEAF_HISTORY_S3_ACCESS_KEY_ID`</td><td>Der Access Key/Benutzername des eingeschränkten Benutzers des history-Service.</td></tr><tr><td>`OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY`</td><td>Der Secret Key/das Passwort des eingeschränkten Benutzers des history-Service.</td></tr></tbody></table></div>

Server CE und Server Pro benötigen nur wenige Berechtigungen für jeden Bucket:

* Objekt erstellen
* Objekt abrufen
* Objekt löschen
* Bucket auflisten

### Zugriffsrichtlinien

So könnte eine Richtlinie für den filestore-Benutzer aussehen:

```json theme={null}
{
  "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/*"
    }
  ]
}
```

So könnte eine Richtlinie für den history-Benutzer aussehen:

```json theme={null}
{
  "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/*"
    }
  ]
}
```

### Übersicht der Variablen

#### Bei Verwendung von AWS S3

```bash theme={null}
# Enable S3 backend for filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket name for project files
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket name for template files
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Key for filestore user
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Secret for filestore user
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Bucket region you picked when creating the buckets.
OVERLEAF_FILESTORE_S3_REGION=""

# Enable S3 backend for history
OVERLEAF_HISTORY_BACKEND=s3

# Bucket name for project history blobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket name for history chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Key for history user
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Secret for history user
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Bucket region you picked when creating the buckets.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Bei Verwendung einer selbst gehosteten Option

```bash theme={null}
# Enable S3 backend for filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket name for project files
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket name for template files
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Key for filestore user
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Secret for filestore user
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# S3 provider endpoint
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Path style addressing of buckets. Most likely you need to set this to "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Bucket region. Most likely you do not need to configure this.
OVERLEAF_FILESTORE_S3_REGION=""

# Enable S3 backend for history
OVERLEAF_HISTORY_BACKEND=s3

# Bucket name for project history blobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket name for history chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Key for history user
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Secret for history user
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# S3 provider endpoint
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Path style addressing of buckets. Most likely you need to set this to "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Bucket region. Most likely you do not need to configure this.
OVERLEAF_HISTORY_S3_REGION=""
```

### MINIO-Einrichtung

<Info>
  `MINIO_ROOT_USER` und `MINIO_ROOT_PASSWORD` sind die Root-Zugangsdaten der MINIO-Instanz.
</Info>

Folgen Sie bitte der [offiziellen Dokumentation](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart), um `mc` zu beziehen.

```bash theme={null}
mc alias set s3 http://10.10.10.10:9000 MINIO_ROOT_USER MINIO_ROOT_PASSWORD

# Put the contents of the policies from the previous section in the
# respective json file policy-filestore.json and policy-history.json.

# Reminder: Replace the bucket names and credentials accordingly.

# filestore buckets, user and policy
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

# history buckets, user and policy
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
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.