> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/de/konfiguration/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Dieses Dokument behandelt die Einrichtung von S3 in Server CE und Overleaf Pro. Eine [separate Anleitung](/on-premises/de/wartung/s3-migration.md) zur Migration bestehender Daten zu S3-kompatiblem Speicher.
{% endhint %}

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

Für Instanzen mit weniger als 1000 Seats empfehlen wir die Verwendung von lokalem 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 Seats, die an die Grenzen ihres lokalen Speichers (Größe oder Durchsatz) stoßen, empfehlen wir die Verwendung eines S3-kompatiblen Objektspeicher-Backends gegenüber anderen netzwerkbasierten Speicherlösungen wie NFS.

## S3-kompatible Objektspeicher-Optionen

Hier 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
* Andere Hosting-Anbieter haben ebenfalls eine Art verwalteten S3-kompatiblen Objektspeicher; möglicherweise möchten Sie diesen anstelle eines eigenen Systems verwenden, wenn Sie Overleaf CE/Server Pro bereits bei einem solchen Anbieter betreiben.

## Überlegungen zur Latenz bei der Auswahl eines S3-kompatiblen Objektspeichers

Die Latenz zwischen der Server-CE/Server-Pro-Instanz und Ihrem S3-kompatiblen Objektspeicher trägt wesentlich zu der Zeit bei, die für den Abschluss der Migration benötigt wird. Die Latenz wirkt sich auch auf die Datei-Upload-Performance in Server CE/Server Pro aus, und langsame Datei-Downloads können sich ebenfalls stark auf die PDF-Kompilierungszeiten auswirken. Wir empfehlen, die geografische Entfernung zwischen Ihrer Server-CE/Server-Pro-Instanz und dem S3-kompatiblen Objektspeicher zu minimieren. In einer verwalteten Umgebung würde das bedeuten, einen Bucket in derselben Region bereitzustellen, und bei einer On-Premise-Lösung die beiden auf demselben Campus zu betreiben.

## S3-Einrichtung

Wir benötigen vier „Buckets“ und zwei eingeschränkte Benutzerkonten.

{% hint style="warning" %}
Buckets sollten **nicht** öffentlich zugänglich sein
{% 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>Verwendung</td><td>Dienst</td><td>Früher in <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>Projekt-Benutzerdateien</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>Vorlagendateien</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>Projektverlaufs-Blobs</td><td>Verlauf und schreibgeschützter Filestore</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>Verlaufs-Chunks</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Möglicherweise möchten/müssen Sie einen anderen Namen wählen; stellen Sie sicher, dass Sie die benutzerdefinierten Buckets in allen Befehlen verwenden.

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

<table><thead><tr><th width="431">Umgebungsvariable</th><th>Beschreibung</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Der Access Key/Benutzername des eingeschränkten Benutzers des Filestore-Dienstes.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Der geheime Schlüssel/das Passwort des eingeschränkten Benutzers des Filestore-Dienstes.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Der Access Key/Benutzername des eingeschränkten Benutzers des History-Dienstes.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Der geheime Schlüssel/das Passwort des eingeschränkten Benutzers des History-Dienstes.</td></tr></tbody></table>

Server CE und Server Pro benötigen pro Bucket nur einen kleinen Satz an Berechtigungen:

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

### Zugriffsrichtlinien

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

```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/*"
    }
  ]
}
```

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

```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/*"
    }
  ]
}
```

### Überblick über die Variablen

#### Bei Verwendung von AWS S3

```bash
# S3-Backend für Filestore aktivieren
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket-Name für Projektdateien
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket-Name für Vorlagendateien
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Schlüssel für Filestore-Benutzer
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Geheimnis für Filestore-Benutzer
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Bucket-Region, die Sie beim Erstellen der Buckets ausgewählt haben.
OVERLEAF_FILESTORE_S3_REGION=""

# S3-Backend für History aktivieren
OVERLEAF_HISTORY_BACKEND=s3

# Bucket-Name für Projektverlaufs-Blobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket-Name für Verlaufs-Chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Schlüssel für History-Benutzer
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Geheimnis für History-Benutzer
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Bucket-Region, die Sie beim Erstellen der Buckets ausgewählt haben.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Bei Verwendung einer selbst gehosteten Option

```bash
# S3-Backend für Filestore aktivieren
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket-Name für Projektdateien
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket-Name für Vorlagendateien
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Schlüssel für Filestore-Benutzer
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Geheimnis für Filestore-Benutzer
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Endpunkt des S3-Anbieters
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Pfadstil-Adressierung der Buckets. Höchstwahrscheinlich müssen Sie dies auf "true" setzen.
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Bucket-Region. Höchstwahrscheinlich müssen Sie dies nicht konfigurieren.
OVERLEAF_FILESTORE_S3_REGION=""

# S3-Backend für History aktivieren
OVERLEAF_HISTORY_BACKEND=s3

# Bucket-Name für Projektverlaufs-Blobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket-Name für Verlaufs-Chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Schlüssel für History-Benutzer
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Geheimnis für History-Benutzer
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Endpunkt des S3-Anbieters
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Pfadstil-Adressierung der Buckets. Höchstwahrscheinlich müssen Sie dies auf "true" setzen.
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Bucket-Region. Höchstwahrscheinlich müssen Sie dies nicht konfigurieren.
OVERLEAF_HISTORY_S3_REGION=""
```

### MINIO-Einrichtung

{% hint style="info" %}
`MINIO_ROOT_USER` und `MINIO_ROOT_PASSWORD` sind die Root-Zugangsdaten der MINIO-Instanz.
{% endhint %}

Bitte folgen Sie der [offiziellen Dokumentation](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) um eine Kopie von `mc`.

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

# Fügen Sie den Inhalt der Richtlinien aus dem vorherigen Abschnitt in die
# jeweilige JSON-Datei policy-filestore.json und policy-history.json ein.

# Erinnerung: Ersetzen Sie die Bucket-Namen und Zugangsdaten entsprechend.

# Filestore-Buckets, Benutzer und Richtlinie
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, Benutzer und Richtlinie
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://ayakaleaf-pro.ayaka.space/on-premises/de/konfiguration/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.
