Deploy Appwrite on AWS
Deploy a production-ready Appwrite backend server on your own AWS account with Microtica — VPC, EKS cluster, and load balancer provisioned for you.
Appwrite is an open-source backend server for web and mobile applications. It provides a set of APIs and tools for developers to build and manage their app's backend.
Appwrite includes user authentication, database management, file storage, and more. It works with various programming languages and frameworks, and runs on-premises or in the cloud.
It also offers a user-friendly dashboard for managing your app's backend, making it a convenient solution for developers at any level of experience.
Infrastructure ownership
The Appwrite infrastructure will be provisioned on your own AWS account.
You retain full control over your infrastructure and data while getting all the benefits of infrastructure automation.
One-click deploy
Click Deploy with Microtica below and follow the template steps to deploy your Appwrite on your AWS account.
What will be provisioned on AWS
Since Microtica deploys on your cloud account, you get complete transparency over which resources will be provisioned.
The Appwrite template creates two components in the environment:
- VPC — VPC, subnets and networking
- EKS Cluster — Container infrastructure based on Kubernetes, application load balancer and persistent storage
Built-in environment variables
Below is the list of built-in environment variables provided in the Appwrite runtime.
| Name | Description | Required |
|---|---|---|
| DatabasePassword | Password for the MariaDB database. The same password will be used as a token for the Appwrite Executor. | Yes |
Custom environment variables
To simplify the initial setup, this template sets the default configuration for the Appwrite application. If you need to customize the configuration and use custom variables like _APP_SMTP_HOST, _APP_SMTP_PORT (see the full list of environment variables), you can do that in two ways.
The Appwrite template contains multiple containers, each with its own distinct set of supported environment variables. When defining environment variables, make sure you specify them for the correct container.
Configure environment variables from the Microtica Console
To configure an environment variable from the Microtica Console, first define the variable in the schema.json file. The input properties defined here become available in the Microtica Console. This approach gives you consistent configuration for the application along with strong validation rules.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "schema://microtica/schema.json",
"title": "Application schema",
"type": "object",
"properties": {
"inputs": {
"type": "object",
"properties": {
"_APP_SMTP_HOST": {
"type": "string",
"default": "smtp.sendgrid.net",
"description": "SMTP server host name address. Use an empty string to disable all mail sending from the server. The default value for this variable is an empty string"
}
},
"required": []
}
},
"additionalProperties": false
}Next, to inject the environment variable into the application container runtime, reference the variable using the {{ENV_VAR_NAME}} syntax.
# ...
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: "{{MIC_NAMESPACE}}"
name: "{{MIC_NAME}}-appwrite"
labels:
app: "{{MIC_NAME}}-appwrite"
microticaService: "{{MIC_NAME}}"
spec:
replicas: 1
template:
spec:
containers:
- name: "appwrite-appwrite"
image: appwrite/appwrite:1.2.0
env:
# Reference the environment variable.
# During deployment the placeholder will be replaced with the configured value.
- name: _APP_SMTP_HOST
value: "{{_APP_SMTP_HOST}}"
# ...
# ...Configure environment variables directly in the Kubernetes spec
To configure an environment variable directly in the Kubernetes spec, update the kube.config file.
As in the previous example, provide the environment variable value directly in the spec.
# ...
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: "{{MIC_NAMESPACE}}"
name: "{{MIC_NAME}}-appwrite"
labels:
app: "{{MIC_NAME}}-appwrite"
microticaService: "{{MIC_NAME}}"
spec:
replicas: 1
template:
spec:
containers:
- name: "appwrite-appwrite"
image: appwrite/appwrite:1.2.0
env:
# Provide the environment variable value directly in the spec.
- name: _APP_SMTP_HOST
value: "smtp.sendgrid.net"
# ...
# ...Estimated AWS cost
The estimated AWS cost depends on the configuration of the Appwrite infrastructure. Below is the cost breakdown, assuming the resources run all the time:
- EKS Cluster - $70/month
- Application Load Balancer - $17/month
- 2 x t3.large EC2 instances - $60/month
Total cost per month with this minimal configuration is approximately $150/month.
Optimize AWS cost
To save costs while running Appwrite in a non-production environment, run it Monday to Friday, 8 hours per day. This schedule can cut your cloud expenses by at least 65%.
In the Resources or Cost Dashboard, create a Saving Schedule to apply these savings.

Known issues
- Usage stats are not available
- Cannot add alternative custom domains
- Temporary solution: add an additional ingress resource in .microtica/kube.config
Next steps
Add custom variables
Add custom environment variables to your CloudFront ReactJS app by updating schema.json, the CloudFormation template, and the deployment logic on window.env.
Integrations
Connect the cloud providers, components, frameworks, databases, and tools you already use, and build, deploy, and scale them from one platform with Microtica.