> ## 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>
  Dette dokument beskriver opsætningen af S3 i Server CE og Ayakaleaf Pro. En [separat vejledning](/da/on-premises/maintenance/s3-migration) om migrering af eksisterende data til S3-kompatibel lagring findes også.
</Info>

<Warning>
  Hvis du udruller Ayakaleaf Pro med [s3.md](/da/on-premises/configuration/overleaf-toolkit/s3 "mention")-lagring aktiveret, er dataene, der gemmes i S3, så krypterede?

  *<strong>Nej.</strong>* Dataene er ikke krypterede. Alle historikchunks, skabelonfiler, PDF'er og andre filer gemmes i klartekst. Hvis du bruger en ekstern S3-lagringsudbyder fra en tredjepart, skal du være meget opmærksom på datasikkerhed og privatliv.
</Warning>

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

For instanser med færre end 1000 pladser anbefaler vi 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 pladser, der når grænserne for deres lokale lagring (størrelse eller gennemløb), anbefaler vi en S3-kompatibel objektlagringsbackend frem for andre netværksbaserede lagringsløsninger som NFS.

## Muligheder for S3-kompatibel objektlagring

Her er de mest populære muligheder for S3-kompatibel objektlagring:

* [AWS S3](https://aws.amazon.com/s3/), administreret; vi foreslår at vælge AWS S3, når Overleaf CE/Server Pro kører på AWS
* [MINIO](https://min.io/), selvhostet
* [Ceph](https://ceph.io/en/), selvhostet
* Andre hostingudbydere har også en form for administreret S3-kompatibel objektlagring. Hvis du allerede kører Overleaf CE/Server Pro hos en sådan udbyder, kan det være en fordel at bruge den i stedet for at køre din egen.

## Hensyn til latens ved valg af S3-kompatibel objektlagring

Latensen mellem Server CE/Server Pro-instansen og din S3-kompatible objektlagring har stor betydning for, hvor lang tid migreringen tager. Latensen påvirker også ydeevnen ved filupload i Server CE/Server Pro, og langsomme fildownloads kan også have stor indvirkning på kompileringstiden for PDF'er. Vi foreslår, at du minimerer den geografiske afstand mellem din Server CE/Server Pro-instans og den S3-kompatible objektlagring. I et administreret miljø vil det sige at oprette en bucket i samme region, og for en lokal løsning at køre de to på samme campus.

## Opsætning af S3

Vi har brug for fire "buckets" og to begrænsede brugerkonti. `overleaf-user-files` og `OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME` er kun nødvendige før v6.

<Warning>
  Buckets må **ikke** være offentligt tilgængelige
</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>Anvendelse</td><td>Tjeneste</td><td>Tidligere i `/var/lib/overleaf/data`</td></tr><tr><td>`overleaf-user-files`</td><td>projektets brugerfiler</td><td>filestore</td><td>`user_files`</td></tr><tr><td>`overleaf-template-files`</td><td>skabelonfiler</td><td>filestore</td><td>`template_files`</td></tr><tr><td>`overleaf-project-blobs`</td><td>blobs til projekthistorik</td><td>history og skrivebeskyttet filestore</td><td>`history/overleaf-project-blobs`</td></tr><tr><td>`overleaf-chunks`</td><td>historikchunks</td><td>history</td><td>`history/overleaf-chunks`</td></tr></tbody></table></div>

Du vil måske eller er måske nødt til at vælge et andet navn. Sørg i så fald for at bruge dine egne buckets i alle kommandoerne.

Følgende bruger pladsholdere i stedet for de faktiske legitimationsoplysninger:

<div style={{ overflowX: "auto" }}><table style={{ display: "table", width: "100%" }}><thead><tr><th width="431">Miljøvariabel</th><th>Beskrivelse</th></tr></thead><tbody><tr><td>`OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID`</td><td>Adgangsnøglen/brugernavnet for den begrænsede bruger af filestore-tjenesten.</td></tr><tr><td>`OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY`</td><td>Den hemmelige nøgle/adgangskoden for den begrænsede bruger af filestore-tjenesten.</td></tr><tr><td>`OVERLEAF_HISTORY_S3_ACCESS_KEY_ID`</td><td>Adgangsnøglen/brugernavnet for den begrænsede bruger af history-tjenesten.</td></tr><tr><td>`OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY`</td><td>Den hemmelige nøgle/adgangskoden for den begrænsede bruger af history-tjenesten.</td></tr></tbody></table></div>

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

* oprette objekt
* hente objekt
* slette objekt
* liste bucket

### Adgangspolitikker

Sådan kunne en politik for filestore-brugeren se ud:

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

Sådan kunne en politik for history-brugeren se ud:

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

### Oversigt over variabler

#### Ved brug af 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=""
```

#### Ved brug af en selvhostet løsning

```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=""
```

### Opsætning af MINIO

<Info>
  `MINIO_ROOT_USER` og `MINIO_ROOT_PASSWORD` er root-legitimationsoplysningerne for MINIO-instansen.
</Info>

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

```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.