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

# S3

{% hint style="info" %}
Dette dokument dækker opsætningen af S3 i Server CE og Overleaf Pro. En [separat guide](/on-premises/da/vedligeholdelse/s3-migration.md) kan findes om migrering af eksisterende data til S3-kompatibel lagring.
{% endhint %}

## Hvornår man bør overveje at bruge S3 til datalagring

For instanser med færre end 1000 sæder anbefaler vi at bruge lokal disklagring med regelmæssige [konsistente sikkerhedskopier](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

For større instanser med mere end 1000 sæder, der når grænserne for deres lokale lagring (størrelse eller gennemløb), anbefaler vi at bruge et S3-kompatibelt objektlager som backend frem for andre netværksbaserede lagringsløsninger som NFS.

## S3-kompatible objektlager-muligheder

Her er de mest populære muligheder for S3-kompatibelt objektlager:

* [AWS S3](https://aws.amazon.com/s3/), administreret, anbefaler vi at vælge AWS S3, når du kører Overleaf CE/Server Pro på AWS
* [MINIO](https://min.io/), selvhostet
* [Ceph](https://ceph.io/en/), selvhostet
* Andre hostingudbydere har også en form for administreret S3-kompatibelt objektlager; du kan vælge at bruge disse i stedet for at køre dit eget, hvis du allerede kører Overleaf CE/Server Pro hos en sådan udbyder.

## Latenshensyn ved valg af et S3-kompatibelt objektlager

Latensen mellem Server CE/Server Pro-instansen og dit S3-kompatible objektlager er en stor bidragyder til den tid, det tager at gennemføre migreringen. Latensen påvirker også filupload-ydelsen i Server CE/Server Pro, og langsomme fil-downloads kan også have en stor indvirkning på PDF-kompileringstider. Vi anbefaler at minimere den geografiske afstand mellem din Server CE/Server Pro-instans og det S3-kompatible objektlager. I et administreret miljø vil det betyde at provisionere en bucket i samme region, og for en on-prem-løsning at køre de to på samme campus.

## S3-opsætning

Vi har brug for fire "buckets" og to begrænsede brugerkonti.

{% hint style="warning" %}
Buckets bør **ikke** være offentligt tilgængelige
{% 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>Brug</td><td>Tjeneste</td><td>Tidligere i <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>projektbrugerfiler</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>skabelonfiler</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>projekt-historikblobs</td><td>historik og skrivebeskyttet filestore</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>historik-chunks</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Du vil måske/skulle vælge et andet navn; sørg for at bruge de brugerdefinerede buckets i alle kommandoerne.

Det følgende vil bruge pladsholdere for de faktiske legitimationsoplysninger:

<table><thead><tr><th width="431">Miljøvariabel</th><th>Beskrivelse</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Adgangsnøglen/brugernavnet for den begrænsede bruger til filestore-tjenesten.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Den hemmelige nøgle/adgangskoden for den begrænsede bruger til filestore-tjenesten.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Adgangsnøglen/brugernavnet for den begrænsede bruger til historiktjenesten.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Den hemmelige nøgle/adgangskoden for den begrænsede bruger til historiktjenesten.</td></tr></tbody></table>

Server CE og Server Pro har kun brug for et lille sæt tilladelser på hver bucket:

* opret objekt
* hent objekt
* slet objekt
* oplist bucket

### Adgangspolitikker

Her er et eksempel på, hvordan en politik for filestore-brugeren kunne se ud:

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

Her er et eksempel på, hvordan en politik for historikbrugeren kunne se ud:

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

### Oversigt over variabler

#### Ved brug af AWS S3

```bash
# Aktivér S3-backend til filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket-navn for projektfiler
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket-navn for skabelonfiler
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Nøgle til filestore-bruger
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Hemmelig nøgle til filestore-bruger
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Bucket-regionen, du valgte, da du oprettede buckets.
OVERLEAF_FILESTORE_S3_REGION=""

# Aktivér S3-backend til historik
OVERLEAF_HISTORY_BACKEND=s3

# Bucket-navn for projekt-historikblobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket-navn for historik-chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Nøgle til historikbruger
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Hemmelig nøgle til historikbruger
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Bucket-regionen, du valgte, da du oprettede buckets.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Ved brug af en selvhostet mulighed

```bash
# Aktivér S3-backend til filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Bucket-navn for projektfiler
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Bucket-navn for skabelonfiler
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Nøgle til filestore-bruger
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Hemmelig nøgle til filestore-bruger
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# S3-udbyderens endpoint
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Bucket-adressering med sti-format. Du skal højst sandsynligt sætte dette til "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Bucket-region. Du behøver højst sandsynligt ikke at konfigurere dette.
OVERLEAF_FILESTORE_S3_REGION=""

# Aktivér S3-backend til historik
OVERLEAF_HISTORY_BACKEND=s3

# Bucket-navn for projekt-historikblobs
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Bucket-navn for historik-chunks
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Nøgle til historikbruger
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Hemmelig nøgle til historikbruger
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# S3-udbyderens endpoint
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Bucket-adressering med sti-format. Du skal højst sandsynligt sætte dette til "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Bucket-region. Du behøver højst sandsynligt ikke at konfigurere dette.
OVERLEAF_HISTORY_S3_REGION=""
```

### MINIO-opsætning

{% hint style="info" %}
`MINIO_ROOT_USER` og `MINIO_ROOT_PASSWORD` er root-legitimationsoplysningerne for MINIO-instansen.
{% endhint %}

Følg venligst den [officielle dokumentation](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) for at få en kopi af `mc`.

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

# Læg indholdet af politikkerne fra det forrige afsnit i den
# respektive json-fil policy-filestore.json og policy-history.json.

# Påmindelse: Erstat bucket-navnene og legitimationsoplysningerne tilsvarende.

# filestore-buckets, bruger og politik
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

# historik-buckets, bruger og politik
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/da/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.
