Self-Host Appsmith Using Mongodb Atlas As an External Database
Goal
MongoDB stands as a stalwart companion to Appsmith's versatile architecture. MongoDB's flexible and scalable NoSQL database solution seamlessly integrates with Appsmith, serving as the backbone for data storage. MongoDB is particularly noteworthy because it powers all the Appsmith applications, regardless of the deployment scenario—be it self-hosted or on the cloud, with the Community, Enterprise, or Business edition.
This article delves into MongoDB's crucial role in the Appsmith ecosystem, emphasizing its reliability and performance across all instances. At the end of this article, you will have a self-hosted instance of Appsmith using a decoupled and external MongoDB Database running on MongoDB Atlas, making the Appsmith container stateless.
Prerequisites
A self-hosted Appsmith instance. See the installation guides for installing Appsmith.
Ensure your MongoDB user account has
readWrite
andclusterMonitor
roles assigned.
Overview
Appsmith is a turnkey solution for building internal apps in the cloud. It’s a complete workbench for creating graphical interfaces and tools that connect to your existing data sources. Appsmith is deployed as a single Docker container with a single volume for storing persistent data and also houses all five processes in one image via Supervisord. We call this the “modular monolithic” architecture.
Appsmith runs an embedded instance of MongoDB for data storage inside the docket container, but you can also decouple it to external instances and run Appsmith in a serverless/stateless architecture. Using external instances makes the Appsmith container stateless, enabling better performance and scalability.
MongoDB is the engine that powers the dynamic and responsive nature of Appsmith applications. Its schema-less, document-oriented approach aligns with Appsmith's strategy for flexibility and facilitates a seamless integration process for developers, enabling them to focus on crafting powerful graphical interfaces without the burden of rigid data structures.
As we embark on the journey of self-hosting Appsmith using MongoDB Atlas as a database, we recognize MongoDB's pivotal role in ensuring the system's efficiency, scalability, and reliability. If you want to learn in more depth about Appsmith's Decoupled/Serverless Architecture, we recommend you read this article that explains it. Let's take a look at how to make this happen.
Configure your MongoDB Atlas Cluster
Go to https://cloud.mongodb.com/ and create an account or login to your existing account, then create a new Cluster or go to the Cluster you want to use to run Appsmith. Then select a Database Deployment or create a new Database Deployment, and you will see something like this:
Now that you have selected your Database Deployment, go to its Collections to create a new Collection for Appsmith by clicking "Browse Collections"
Now create a new Collection by giving the name you want. In this case, I will call mine
appsmithlocal
. With the Database Collection made, we now need to configure the access to our Cluster. Go to the Network Access menu on the left navigation and click the "Add IP Address" button to allow access.Now, click on the "Allow Access from Anywhere" button to add
0.0.0.0/0
as the allowlist IP, then confirm to save.IMPORTANT: We do NOT recommend allowing connections from anywhere, it is a bad security practice, and you should only allow the IP address of your Appsmith instance. You can read this article to learn how to Setup a Secure Static Outbound IP Address.
Now go back to the Database Deployment page, and then click the "Connect" button to get the connection string, the structure usually is something like:
mongodb+srv://username:password@host/databasename?w=majority&retrywrites=true&authsource=admin&minpoolsize=0
For example, in my case, the connection string is:
mongodb+srv://kevin:********@cluster0.ej7ikqx.mongodb.net/appsmithlocal?w=majority&retrywrites=true&authsource=admin&minpoolsize=0
so this is what you have to copy and keep handy for the following step.Configure your Appsmith Instance
On Appsmith, you can add your external MongoDB connection to Atlas by using one of two ways: using the UI in the Admin Settings or using Environment Variables at your container level.
Admin settings
You can use Admin Settings to set up an external MongoDB. The MongoDB URI property is present under Admin Settings > Advanced Settings. Add your MongoDB URI to the setting and click the SAVE & RESTART button. The server restart establishes a connection with the external MongoDB.
If you set values using environment variables for your instance, those values take precedence over those specified in the Admin Settings UI.
Environment variable
To connect to your external MongoDB Atlas instance, you must update the environment variable
APPSMITH_MONGODB_URI.
For example:APPSMITH_MONGODB_URI=mongodb+srv://kevin:*******@cluster0.ej7ikqx.mongodb.net/appsmithlocal?w=majority&retrywrites=true&authsource=admin&minpoolsize=0
then restart the Appsmith container by using the below command:
docker-compose restart appsmith