> 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/pt/configuracao/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Este documento aborda a configuração do S3 no Server CE e no Overleaf Pro. Um [guia separado](/on-premises/pt/manutencao/s3-migration.md) pode ser encontrado sobre a migração de dados existentes para armazenamento compatível com S3.
{% endhint %}

## Quando considerar usar o S3 para armazenamento de dados

Para instâncias com menos de 1000 lugares, recomendamos usar armazenamento em disco local com cópias de segurança regulares [consistentes](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Para instâncias maiores, com mais de 1000 lugares, que atinjam os limites do seu armazenamento local (tamanho ou throughput), recomendamos usar um backend de armazenamento de objetos compatível com S3 em vez de outras soluções de armazenamento baseadas em rede, como NFS.

## Opções de armazenamento de objetos compatíveis com S3

Aqui estão as opções mais populares de armazenamento de objetos compatíveis com S3:

* [AWS S3](https://aws.amazon.com/s3/), gerido, sugerimos escolher o AWS S3 ao executar o Overleaf CE/Server Pro na AWS
* [MINIO](https://min.io/), alojado por si
* [Ceph](https://ceph.io/en/), alojado por si
* Outros fornecedores de alojamento também têm algum tipo de armazenamento de objetos compatível com S3 gerido; talvez queira usar esses em vez de executar o seu próprio, quando já estiver a executar o Overleaf CE/Server Pro junto desse fornecedor.

## Considerações sobre latência ao escolher um armazenamento de objetos compatível com S3

A latência entre a instância Server CE/Server Pro e o seu armazenamento de objetos compatível com S3 é um grande fator no tempo necessário para concluir a migração. A latência também afeta o desempenho de carregamento de ficheiros no Server CE/Server Pro, e downloads de ficheiros lentos podem também ter um grande impacto nos tempos de compilação de PDF. Sugerimos minimizar a distância geográfica entre a sua instância Server CE/Server Pro e o armazenamento de objetos compatível com S3. Num ambiente gerido, isto significaria aprovisionar um bucket na mesma região e, para uma solução no local, executar os dois no mesmo campus.

## Configuração do S3

Precisamos de quatro "buckets" e duas contas de utilizador restritas.

{% hint style="warning" %}
Os buckets devem **não** ser acessíveis publicamente
{% 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>Utilização</td><td>Serviço</td><td>Anteriormente em <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>ficheiros de utilizador do projeto</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>ficheiros de modelos</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>blobs do histórico do projeto</td><td>histórico e armazenamento de ficheiros só de leitura</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>chunks do histórico</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Talvez queira/precise escolher um nome diferente; certifique-se de usar os buckets personalizados em todos os comandos.

O seguinte usará marcadores de posição para credenciais reais:

<table><thead><tr><th width="431">Variável de ambiente</th><th>Descrição</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>A chave de acesso/nome de utilizador do utilizador restrito do serviço de armazenamento de ficheiros.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>A chave secreta/palavra-passe do utilizador restrito do serviço de armazenamento de ficheiros.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>A chave de acesso/nome de utilizador do utilizador restrito do serviço de histórico.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>A chave secreta/palavra-passe do utilizador restrito do serviço de histórico.</td></tr></tbody></table>

O Server CE e o Server Pro só precisam de um pequeno conjunto de permissões em cada bucket:

* criar objeto
* obter objeto
* eliminar objeto
* listar bucket

### Políticas de acesso

Eis como poderia ser uma política para o utilizador do armazenamento de ficheiros:

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

Eis como poderia ser uma política para o utilizador do histórico:

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

### Visão geral das variáveis

#### Ao usar o AWS S3

```bash
# Ativar backend S3 para o armazenamento de ficheiros
OVERLEAF_FILESTORE_BACKEND=s3

# Nome do bucket para ficheiros do projeto
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nome do bucket para ficheiros de modelo
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Chave para o utilizador do armazenamento de ficheiros
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Segredo para o utilizador do armazenamento de ficheiros
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Região do bucket que escolheu ao criar os buckets.
OVERLEAF_FILESTORE_S3_REGION=""

# Ativar backend S3 para o histórico
OVERLEAF_HISTORY_BACKEND=s3

# Nome do bucket para blobs do histórico do projeto
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nome do bucket para chunks do histórico
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Chave para o utilizador do histórico
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Segredo para o utilizador do histórico
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Região do bucket que escolheu ao criar os buckets.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Ao usar uma opção alojada por si

```bash
# Ativar backend S3 para o armazenamento de ficheiros
OVERLEAF_FILESTORE_BACKEND=s3

# Nome do bucket para ficheiros do projeto
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nome do bucket para ficheiros de modelo
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Chave para o utilizador do armazenamento de ficheiros
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Segredo para o utilizador do armazenamento de ficheiros
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Endpoint do fornecedor S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Endereçamento estilo caminho dos buckets. Muito provavelmente precisa de definir isto para "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Região do bucket. Muito provavelmente não precisa de configurar isto.
OVERLEAF_FILESTORE_S3_REGION=""

# Ativar backend S3 para o histórico
OVERLEAF_HISTORY_BACKEND=s3

# Nome do bucket para blobs do histórico do projeto
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nome do bucket para chunks do histórico
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Chave para o utilizador do histórico
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Segredo para o utilizador do histórico
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Endpoint do fornecedor S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Endereçamento estilo caminho dos buckets. Muito provavelmente precisa de definir isto para "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Região do bucket. Muito provavelmente não precisa de configurar isto.
OVERLEAF_HISTORY_S3_REGION=""
```

### Configuração do MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` e `MINIO_ROOT_PASSWORD` são as credenciais de raiz da instância MINIO.
{% endhint %}

Por favor, siga a [documentação oficial](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) para obter uma cópia de `mc`.

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

# Coloque o conteúdo das políticas da secção anterior no
# respetivo ficheiro JSON policy-filestore.json e policy-history.json.

# Lembrete: substitua os nomes dos buckets e as credenciais em conformidade.

# buckets, utilizador e política do armazenamento de ficheiros
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

# buckets, utilizador e política do histórico
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/pt/configuracao/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.
