The Terraform provider for Appwrite lets you declare TablesDB (databases, tables, columns, indexes, rows), Storage (buckets and files), Auth (users and teams), Functions (functions and variables), Sites (sites and variables), Messaging (providers, topics, subscribers), webhooks, backup policies, and more in .tf files, and apply those changes through HashiCorp Terraform. It is the official way to automate Appwrite project configuration alongside the rest of your stack.
Resources
Resource types use the appwrite_ prefix and match the Terraform Registry documentation.
| Area | Resources |
TablesDB | appwrite_tablesdb, appwrite_tablesdb_table, appwrite_tablesdb_column, appwrite_tablesdb_index, appwrite_tablesdb_row |
Storage | appwrite_storage_bucket, appwrite_storage_file |
Auth | appwrite_auth_user, appwrite_auth_team |
Functions | appwrite_function, appwrite_function_variable, appwrite_function_deployment |
Sites | appwrite_site, appwrite_site_variable, appwrite_site_deployment |
Messaging | appwrite_messaging_provider, appwrite_messaging_topic, appwrite_messaging_subscriber |
Webhooks | appwrite_webhook |
Backups | appwrite_backup_policy |
Data sources
Data sources read resources that already exist instead of creating them. Use them to reference identifiers or attributes from resources created outside Terraform or in another state.
| Name | Description |
appwrite_tablesdb | Look up a database by ID |
appwrite_storage_bucket | Look up a storage bucket by ID |
appwrite_auth_user | Look up a user by ID |
appwrite_auth_team | Look up a team by ID |
appwrite_function | Look up a function by ID |
appwrite_site | Look up a site by ID |
appwrite_messaging_topic | Look up a messaging topic by ID |
appwrite_webhook | Look up a webhook by ID |
Looking for self-hosting?
This section is about Appwrite resources inside a project (for example databases and tables) using Terraform. If you want to install or operate the Appwrite server itself (Docker, configuration, TLS, scaling), go to the self-hosting documentation instead.
What is Terraform?
Terraform is an infrastructure-as-code tool. You write configuration in a declarative language (HCL) that describes what should exist; Terraform figures out how to create or update it.
If you are new to the idea:
- Provider: A plugin that teaches Terraform how to talk to a specific API (here, Appwrite).
- Resource: Something Terraform should create and manage (for example an Appwrite database or table).
- State: Terraform remembers what it already created so the next run can update or destroy only what changed.
- Plan / apply: You run
terraform planto preview changes, thenterraform applyto execute them.
You still use the Appwrite Console and SDKs for day-to-day app development; the provider is for repeatable, version-controlled setup of project resources across environments.
Official repository and registry
Source code, issues, and contribution guidelines:
GitHub
appwrite/terraform-provider-appwrite: source and issues.
Terraform Registry
appwrite/appwrite: install, versions, generated schemas.
The provider works with Appwrite Cloud and Community Edition (self-hosted Appwrite). You point it at your API endpoint and authenticate with a project API key.
Next steps
Configuration
Install the provider, set endpoints, environment variables, and optional per-resource project_id.
Databases
TablesDB: databases, tables, columns, indexes, and rows.
Storage
Buckets and uploaded files.
Messaging
Providers, topics, and subscribers.
Auth
Users and teams.
Functions
Functions and environment variables.
Sites
Sites and site variables.
Webhooks
Event delivery to your HTTP endpoints.
Backups
Backup policies where supported.