---
title: "Multi-tenancy"
space: "Frappe Framework"
url: "https://www.prilk.com/nl/docs/frappe-framework/multi-tenancy"
updated: "2026-05-14"
---

## Multi-tenancy

Eén Frappe **bench** kan veel **sites** hosten. Elke site is volledig geïsoleerd — eigen database, bestanden, gebruikers, geïnstalleerde apps. Zo bedienen Frappe Cloud en Prilk-managed meerdere klanten vanaf gedeelde infrastructuur.

### Bench vs Site

| Term | Wat |
|---|---|
| **Bench** | Werkdirectory: Python-env, app-broncode, gemeenschappelijke config |
| **Site** | Eén geïsoleerde installatie: eigen DB, bestanden, gebruikers |
| **App** | Code gedeeld over de bench; per site te installeren |

### Site-isolatie
Elke site heeft:
- Eigen MariaDB / PostgreSQL-database (`<site>_xxxxxxx`-conventie)
- Eigen `sites/<site>/public/files/` en `private/files/`
- Eigen `site_config.json`
- Mogelijk andere apps dan de buur

Twee sites op dezelfde bench kunnen verschillende minor-versies van dezelfde app draaien (meestal gelijk).

### URL-routing
Nginx routeert op hostname:

```
klant-a.voorbeeld.nl → site "klant-a"
klant-b.voorbeeld.nl → site "klant-b"
```

Lokaal: pas `/etc/hosts` aan om hostnames naar localhost te wijzen; Frappe leest de `Host`-header.

### Cross-site operaties
Sites delen geen data. Voor cross-site rapportage of admin: één proces per site:

```bash
for site in $(bench --site all list-apps | cut -d' ' -f1 | sort -u); do
    bench --site $site execute my_app.report.run_summary
done
```

### Wanneer nieuwe bench vs nieuwe site

| Nood | Toevoegen |
|---|---|
| Nieuwe geïsoleerde klant, zelfde Frappe-versie | **Nieuwe site** |
| Andere Frappe-versie | **Nieuwe bench** |
| Andere Python / OS-omgeving | **Nieuwe bench** |

Meerdere benches op één server is gangbaar tijdens upgrades — oude blijft draaien terwijl de nieuwe naast hem wordt opgezet.
