> 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/de/konfiguration/overleaf-toolkit/s3.md).

# S3

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

## Wann die Verwendung von S3 für die Datenspeicherung in Betracht gezogen werden sollte

Für Instanzen mit weniger als 1000 Plätzen empfehlen wir die Verwendung von lokaler Festplattenspeicherung 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 stoßen (Größe oder Durchsatz), empfehlen wir, ein S3-kompatibles Objektspeicher-Backend anderen netzwerkbasierten Speicherlösungen wie NFS vorzuziehen.

## S3-kompatible Objektspeicheroptionen

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

* [AWS S3](https://aws.amazon.com/s3/), verwaltet, wir empfehlen, AWS S3 zu wählen, wenn Overleaf CE/Server Pro auf AWS betrieben wird
* [MINIO](https://min.io/), selbst gehostet
* [Ceph](https://ceph.io/en/), selbst gehostet
* Andere Hosting-Anbieter haben ebenfalls irgendeine Art von verwaltetem S3-kompatiblem Objektspeicher; möglicherweise möchten Sie diese verwenden, anstatt Ihren eigenen zu betreiben, wenn Sie Overleaf CE/Server Pro bereits bei einem solchen Anbieter betreiben.

## Latenzüberlegungen bei der Auswahl eines S3-kompatiblen Objektspeichers

Die Latenz zwischen der Server-CE/Server-Pro-Instanz und Ihrem S3-kompatiblen Objektspeicher trägt wesentlich zur Dauer der Migration bei. Die Latenz beeinflusst auch die Dateiupload-Performance in Server CE/Server Pro, und langsame Dateidownloads 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 dies bedeuten, einen Bucket in derselben Region bereitzustellen, und für eine On-Premise-Lösung beide am selben 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>Zuvor in <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>Projekt-Benutzerdaten</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 Dateispeicher</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; achten Sie darauf, die benutzerdefinierten Buckets in allen Befehlen zu verwenden.

Im Folgenden werden Platzhalter für die tatsächlichen Zugangsdaten 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 Zugriffsschlüssel/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 Zugriffsschlüssel/Benutzername des eingeschränkten Benutzers des Verlaufsdienstes.</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 Verlaufsdienstes.</td></tr></tbody></table>

Server CE und Server Pro benötigen auf jedem 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 Verlaufsbenutzer 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 den 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 bei der Erstellung der Buckets gewählt haben.
OVERLEAF_FILESTORE_S3_REGION=""

# S3-Backend für den Verlauf 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 Verlaufsbenutzer
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Geheimnis für Verlaufsbenutzer
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Bucket-Region, die Sie bei der Erstellung der Buckets gewählt haben.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Bei Verwendung einer selbst gehosteten Option

```bash
# S3-Backend für den 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=...

# S3-Anbieter-Endpunkt
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Pfadstil-Adressierung von 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 den Verlauf 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 Verlaufsbenutzer
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Geheimnis für Verlaufsbenutzer
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# S3-Anbieter-Endpunkt
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Pfadstil-Adressierung von 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) zum Erhalten einer Kopie von `mc`.

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

# Platzieren Sie den Inhalt der Richtlinien aus dem vorherigen Abschnitt in der
# jeweiligen json-Datei policy-filestore.json und policy-history.json.

# Hinweis: 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

# Verlaufs-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://overleaf-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.
