Skip to main content

Logo Twenty

About

Building a modern alternative to Salesforce, powered by the community.

Multiple workspaces

By default Twenty runs in single-workspace mode - one workspace served on the app's domain. Twenty can also run in multi-workspace mode, where the app hosts many workspaces and gives each its own subdomain.

How the domains work

In multi-workspace mode Twenty puts every workspace on a subdomain of the app's own domain. If the app is installed on twenty.domain.local, then:

  • sign in / sign up lives on app.twenty.domain.local
  • a workspace is served on <workspace>.twenty.domain.local, e.g. sales.twenty.domain.local

Because the workspace subdomains are created by Twenty on the fly, the app needs to answer for any subdomain under its domain. That is what the wildcard domain *.twenty.domain.local is for: it points every <something>.twenty.domain.local at this app, and Cloudron issues a single wildcard certificate that covers all of them.

Enabling multi-workspace mode

warning

Add the wildcard domain before enabling multi-workspace mode. Once enabled, sign in moves to app.twenty.domain.local, so without the wildcard domain in place that address does not resolve and you are locked out.

  1. Add the wildcard domain first. In the Cloudron dashboard open the app's Location and add *.twenty.domain.local as an additional domain next to the primary twenty.domain.local. Wait until Cloudron shows the certificate as ready.

  2. Turn on multi-workspace mode. Edit /app/data/env (via the File Manager or a Web Terminal) and set:

    IS_MULTIWORKSPACE_ENABLED=true
    DEFAULT_SUBDOMAIN=app

    DEFAULT_SUBDOMAIN is the subdomain used for sign in / sign up (app by default, giving app.twenty.domain.local). It is independent of the per-workspace subdomains.

  3. Restart the app.

Renaming a workspace subdomain

Each workspace has an editable subdomain. Open Settings → General and edit the Workspace Domain field. The new address stays under the app's wildcard domain, so sales.twenty.domain.local can become crm.twenty.domain.local. There is no separate "Domains" entry in the sidebar - this setting lives under General.

To change the address of the app itself (the part before the wildcard, e.g. twenty.domain.local), open the app's Location in the Cloudron dashboard instead.

note

Twenty also has a per-workspace custom domain feature - a workspace served on its own external domain such as crm.example.com. This is not supported on Cloudron. Twenty provisions the TLS certificate for a custom domain through the Cloudflare API and refuses to save the domain unless CLOUDFLARE_API_KEY is set (twenty#17101). Cloudron issues its certificates through Let's Encrypt, so this Cloudflare-only path does not apply. Use a workspace subdomain (above) instead.