Appsmith ecosystem banner

Omosekeji Olawale Verified user

Technical Support Engineer

Appsmith

The Appsmith Self-Hosted Architecture

Appsmith is available via the cloud as well as self-hosted instances. It comes in three versions: Community, Business, and Enterprise. They're all extremely similar in build and architecture and are deployed as a single Docker container with a single volume for storing persistent data.

Read further to learn about how the Appsmith platform works under the hood.

Self-hosted instance architecture.

The diagram below illustrates the different components and how these services communicate with each other.
 

Diagram showing the Appsmith Architecture in Details

How it works

A single Docker container runs the following processes to deploy and get started with Appsmith:

  1. The Appsmith Server (backend) as a Java process, which handles:
    • Authentication: login credentials, OAuth 2.0 with Google and GitHub, SSO with OIDC and SAML
    • A CRUD API for users, workspaces, applications, pages, and widgets
    • An action execution module that executes your queries to your databases and APIs
    • A git module that maintains clones of your Git-connected apps on the file system
  2. The NGINX Server, which routes:
    • Requests to static assets like Javascript, CSS, and images
    • Incoming requests to the backend server, or the RTS depending on the request path
    • Path-unidentified requests to an index.html page with a 200 status code. This is like a typical single-page application where the client React code is expected to understand the path and show the UI accordingly.
  3. The Realtime Server (RTS), a tiny NodeJS server that handles a few features such as mapping dependencies between APIs, queries, and web UI components. It also updates references for all reference-able entities when their names change in Appsmith.
  4. The MongoDB Server, which stores all persistent data needed and generated by Appsmith’s building blocks, like:
    • Your users’ details and permissions
    • Workspaces you have created
    • Applications you are building and have deployed
    • Datasources you have connected to
    • Queries that connect those datasources to your apps.
  5. The Redis Cache, which is used for storing user sessions and cache permissions that a user has access to directly and indirectly.