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

# Sandbox-compilaties instellen

Er zijn enkele kleine verschillen tussen de ontwikkel- en productieomgeving als u sandbox-compilaties voor ontwikkeling wilt instellen. Er zijn 3 dingen waar u op moet letten:

* Probleem met bestandsrechten
* Gedeeld volume tussen history-v1 en filestore
* Probleem met submappen

### Sandbox-compilaties inschakelen

Hier hoeven we alleen Sandbox Compiles in te schakelen zoals we dat in Overleaf CE doen. We moeten echter wel letten op de gebruiker. Hier stellen we die in op root.

In de productieomgeving gebruiken we www-data als gedeelde gebruiker tussen de Overleaf-container en de TeX-compilatiecontainer. In de ontwikkelomgeving is node echter de standaardgebruiker in de container, en er is geen www-data-gebruiker om dit aan te koppelen. Daarom gebruiken we root als tijdelijke oplossing.

<Warning>
  Gebruik niet uw zelfgebouwde image, anders kunt u op een reeks fouten stuiten.
</Warning>

```dotenv wrap theme={null}
#################
#   Sandbox     #
#################
SANDBOXED_COMPILES=true
TEXLIVE_IMAGE_USER=root
ALL_TEX_LIVE_DOCKER_IMAGES=ghcr.io/ayaka-notes/texlive-full:2025.1, ghcr.io/ayaka-notes/texlive-full:2024.1
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=Texlive 2025, Texlive 2024
TEX_LIVE_DOCKER_IMAGE=ghcr.io/ayaka-notes/texlive-full:2025.1
```

### Bestandsrechten herstellen

LaTeX draait in de naastgelegen containers als de gebruiker die is opgegeven in de omgevingsvariabele `TEXLIVE_IMAGE_USER`. In het bovenstaande voorbeeld is dit ingesteld op `root`, met uid `0`. Dit veroorzaakt een probleem met de bovenstaande rechten, omdat de root-gebruiker geen schrijfrechten heeft op submappen van `compiles`.

Een snelle oplossing is om de groep `root` eigenaar te maken van `compiles` en lees- en schrijfrechten te geven, met `setgid` ingesteld zodat nieuwe submappen dit eigenaarschap ook overnemen:

```bash title="bash" theme={null}
sudo chown -R 1000:root compiles
sudo chmod -R g+w compiles
sudo chmod g+s compiles
```

Uitgebreide documentatie vindt u in `services/clsi/README.md`.

### Gedeeld volume tussen history-v1 en filestore

Standaard fungeert filestore als brug tussen S3 en andere services in Overleaf. In Overleaf CE of Server Pro worden alle bestanden echter standaard lokaal opgeslagen. Daarom heeft Overleaf een zeer slimme methode geïntroduceerd.

```javascript title="server-ce/config/settings.js" wrap theme={null}
switch (process.env.OVERLEAF_FILESTORE_BACKEND) {
  case 's3':
    // s3 case...
  default:
    settings.filestore = {
      backend: 'fs',
      stores: {
        template_files: Path.join(DATA_DIR, 'template_files'),

        // NOTE: The below paths are hard-coded in server-ce/config/production.json, so hard code them here as well.
        // We can use DATA_DIR after switching history-v1 from 'config' to '@overleaf/settings'.
        project_blobs:
          process.env.OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET ||
          '/var/lib/overleaf/data/history/overleaf-project-blobs',
        global_blobs:
          process.env.OVERLEAF_HISTORY_BLOBS_BUCKET ||
          '/var/lib/overleaf/data/history/overleaf-global-blobs',
      },
    }
}
```

Tegelijkertijd wordt `data/history` ook door de history-service gebruikt. Op deze manier kunnen verschillende microservices dezelfde gegevens delen. U moet het volume `history-v1-buckets` toevoegen aan uw filestore-service in de ontwikkelomgeving. Anders **kan clsi geen blob-bestanden ophalen van de filestore-service**.

```yml title="develop/docker-compose.yml" wrap theme={null}
  filestore:
    build:
      context: ..
      dockerfile: services/filestore/Dockerfile
    env_file:
      - dev.env
#    environment:
#      - ENABLE_CONVERSIONS=true
    volumes:
      - filestore-public-files:/overleaf/services/filestore/public_files
      - filestore-template-files:/overleaf/services/filestore/template_files
      - filestore-uploads:/overleaf/services/filestore/uploads
      - history-v1-buckets:/buckets
```

Daarnaast moet u de bucketnamen toevoegen aan de instellingen in `dev.env`:

```dotenv title="develop/dev.env" theme={null}
OVERLEAF_EDITOR_PROJECT_BLOBS_BUCKET='/buckets/project_blobs'
OVERLEAF_EDITOR_BLOBS_BUCKET='/buckets/blobs'
```

### Submappen gebruiken

Filestore gebruikt standaard useSubdirectories met de waarde true, maar in de ontwikkelomgeving zal history v1 <strong>alle gegevens platslaan.</strong> Dat veroorzaakt conflicten. Om dit op te lossen, moet u het volgende toevoegen:&#x20;

```dotenv title="develop/dev.env" theme={null}
OVERLEAF_EDITOR_PROJECT_BLOBS_BUCKET='/buckets/project_blobs'
OVERLEAF_EDITOR_BLOBS_BUCKET='/buckets/blobs'
NODE_CONFIG='{"persistor":{"useSubdirectories":true}}'
```

In history v1 worden alle `project_blobs`-bestanden oorspronkelijk zo opgeslagen:

```bash wrap theme={null}
node@43eb5dac5b1b:/buckets/project_blobs$ ls
169_609_71360f687c431b9796_5b_889ef3cf71c83a4c027c4e4dc3d1a106b27809  
94e_655_88cb5cc77ab70c9796_a0_e21c740cf81e868f158e30e88985b5ea1d6c19
169_609_71360f687c431b9796_a0_e21c740cf81e868f158e30e88985b5ea1d6c19
94e_655_88cb5cc77ab70c9796_fd_3c0326302e49486d3ea86c833edf9b88320c41
169_609_71360f687c431b9796_fd_3c0326302e49486d3ea86c833edf9b88320c41 

```

U moet useSubdirectories op `true` zetten om over te schakelen naar de submapmodus. Nu wordt de oorspronkelijke `_` in de blob vervangen door `/`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.