---
layout: article
title: Installation
description: Step-by-step guide to install Appwrite using Docker. Learn how to set up a self-hosted Appwrite instance with Docker Compose on any operating system.
---

This guide will walk you through installing Appwrite on your server using Docker. Appwrite is designed to run on any operating system that supports Docker.

# System requirements

Before installing Appwrite, ensure your system meets these minimum requirements:

- **2 CPU cores**
- **4GB of RAM**
- **2GB of swap memory**
- **Operating system** that supports Docker
- **Docker Compose Version 2**

# Install with Docker

The easiest way to install Appwrite is using our Docker installer. The installer launches a web-based setup wizard that guides you through the entire process.

Before running the installation command, ensure you have [Docker CLI](https://www.docker.com/products/docker-desktop) installed on your host machine.

**Firewall configuration**

The installation wizard runs on port **20080**. If you are installing on a remote server, ensure that port 20080 is open in your firewall or security group settings before proceeding. You can close this port after installation is complete.

## Installation commands

**macOS and Linux**

Run the following command in your terminal:

```bash
docker run -it --rm \
    --publish 20080:20080 \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
    --entrypoint="install" \
    appwrite/appwrite:1.9.6
```

**Windows (CMD)**

```cmd
docker run -it --rm ^
    --publish 20080:20080 ^
    --volume //var/run/docker.sock:/var/run/docker.sock ^
    --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
    --entrypoint="install" ^
    appwrite/appwrite:1.9.6
```

**Windows (PowerShell)**

```powershell
docker run -it --rm `
    --publish 20080:20080 `
    --volume /var/run/docker.sock:/var/run/docker.sock `
    --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
    --entrypoint="install" `
    appwrite/appwrite:1.9.6
```

Once the command is running, open your browser and navigate to `http://localhost:20080` to access the setup wizard.

# Setup wizard

The setup wizard walks you through four steps to configure your Appwrite instance.

## Step 1: Setup your app

Configure your Appwrite instance's basic settings.

![Setup your app](/images/docs/advanced/self-hosting/installation/wizard-setup.avif)

- **Hostname** - The domain or IP address where your Appwrite instance will be accessible.
- **Use HTTPS** - Turn this on when your Appwrite domain uses HTTPS, including behind a reverse proxy.
- **Database** - Choose [PostgreSQL, MariaDB, or MongoDB](/docs/advanced/self-hosting/configuration/databases) as your database backend. PostgreSQL is selected by default.
- **Advanced settings** - Optionally configure the [worker topology](/docs/advanced/self-hosting/configuration/topologies) under **Workers and schedulers**, HTTP and HTTPS ports, SSL certificate email, and an OpenAI API key for the [Appwrite Assistant](/docs/tooling/assistant).

## Step 2: Secure your app

A secret API key is automatically generated for your instance. This key is used to encrypt sensitive data.

![Secure your app](/images/docs/advanced/self-hosting/installation/wizard-secure.avif)

**Save your key**

You won't be able to see this key again after proceeding. Copy it somewhere safe before continuing.

You can use the **Copy** button to copy the key or **Regenerate** to create a new one.

## Step 3: Create your account

Set up the email and password for your Appwrite account. You'll use these credentials to sign in to the Appwrite Console after installation.

![Create your account](/images/docs/advanced/self-hosting/installation/wizard-account.avif)

## Step 4: Review your setup

Review all your configuration settings. If anything looks wrong, use the **Back** button to make changes. When you're ready, click **Install** to begin the installation.

![Review your setup](/images/docs/advanced/self-hosting/installation/wizard-review.avif)

# Manual installation

For advanced users who prefer manual setup, you can install Appwrite using Docker Compose directly.

## Generate configuration files

## Install Appwrite

1. Create a directory named `appwrite` and place the generated files inside. Every installation needs `docker-compose.yml` and `.env`; MongoDB installations also need `mongo-init.js` and `mongo-entrypoint.sh`
2. Edit the `.env` file to customize your installation. At minimum, update `_APP_OPENSSL_KEY_V1` and `_APP_EXECUTOR_SECRET` with unique secret values
3. Start the Appwrite stack:

```bash
docker compose up -d --remove-orphans
```

**Worker topologies**

By default, Appwrite runs all queue workers in a single container. To run one container per queue instead, see [Worker topologies](/docs/advanced/self-hosting/configuration/topologies).

# Post-installation

After installation completes:

1. **Access the Console** - Navigate to your machine's hostname or IP address in your browser
2. **Create your first project** - Set up your development environment

**Startup time**

On non-Linux hosts, the server might take a few minutes to start after installation completes. This is normal behavior.

## SDK version compatibility

The tables below map each released self-hosted Appwrite version to the SDK versions that were current at the time of that release. Use this to pin your SDK to a version known to work with your server. The latest stable self-hosted Appwrite release is 1.9.6.

### Client SDKs

| Appwrite | Web | Flutter | React Native | Apple | Android |
| --- | --- | --- | --- | --- | --- |
| 1.7.0 | 18.0.0 | 16.0.0 | 0.9.0 | 10.0.0 | 8.0.0 |
| 1.7.1 to 1.7.3 | 18.0.0 | 16.0.0 | 0.9.0 | 10.0.0 | 8.0.0 |
| 1.7.4 | 18.1.1 | 17.0.0 | 0.10.0 | 10.0.0 | 8.0.0 |
| 1.7.5 | 18.1.1 | 17.0.0 | 0.10.0 | 10.0.0 | 8.0.0 |
| 1.8.0 | 21.4.0 | 20.3.0 | 0.18.0 | 13.3.0 | 11.3.0 |
| 1.8.1 | 23.0.0 | 22.0.0 | 0.25.0 | 15.0.0 | 13.0.0 |
| 1.9.0 | 24.1.1 | 23.0.0 | 0.27.1 | 16.0.0 | 14.1.0 |
| 1.9.5 | 26.1.0 | 25.2.0 | 0.33.0 | 18.2.0 | 25.2.0 |
| 1.9.6 | 26.2.0 | 25.3.0 | 0.34.0 | 18.3.0 | 26.0.0 |

### Server SDKs

| Appwrite | Node.js | Python | PHP | Dart | Ruby | .NET | Go | Swift | Kotlin | CLI |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1.7.0 | 17.0.0 | 11.0.0 | 15.0.0 | 16.0.0 | 16.0.0 | 0.13.0 | v0.7.0 | 10.0.0 | 9.0.0 | 6.2.3 |
| 1.7.1 to 1.7.3 | 17.0.0 | 11.0.0 | 15.0.0 | 16.0.0 | 16.0.0 | 0.13.0 | v0.7.0 | 10.0.0 | 9.0.0 | 6.2.3 |
| 1.7.4 | 17.1.0 | 11.0.0 | 15.0.0 | 16.1.0 | 16.0.0 | 0.13.0 | v0.7.0 | 10.0.0 | 9.0.0 | 8.0.0 |
| 1.7.5 | 17.1.0 | 11.0.0 | 15.0.0 | 16.1.0 | 16.0.0 | 0.13.0 | v0.7.0 | 10.0.0 | 9.0.0 | 8.0.0 |
| 1.8.0 | 20.2.1 | 13.4.1 | 17.5.0 | 19.3.0 | 19.3.0 | 0.22.0 | v0.13.1 | 13.2.2 | 12.3.0 | 12.0.1 |
| 1.8.1 | 22.1.3 | 16.0.0 | 20.2.1 | 21.3.0 | 21.1.0 | 1.0.0 | v1.0.0 | 15.2.0 | 14.1.0 | 15.0.0 |
| 1.9.0 | 23.1.0 | 17.0.0 | 21.0.0 | 22.0.0 | 22.0.0 | 2.0.0 | v2.0.0 | 16.0.0 | 15.0.0 | 17.4.0 |
| 1.9.5 | 26.2.0 | 21.0.0 | 26.1.0 | 25.1.0 | 25.1.0 | 5.1.0 | v5.1.0 | 19.1.0 | 18.1.0 | 22.3.0 |
| 1.9.6 | 27.0.0 | 22.1.0 | 27.0.0 | 26.0.0 | 26.0.0 | 6.0.0 | v6.0.0 | 20.0.0 | 19.0.0 | 23.0.0 |

# Managing your installation

## Stop Appwrite

To stop your Appwrite containers:

```bash
docker compose stop
```

## Restart Appwrite

To restart your Appwrite containers:

```bash
docker compose start
```

## Uninstall Appwrite

To completely remove Appwrite and all its data:

```bash
docker compose down -v
```

**Data loss warning**

The uninstall command will permanently delete all your Appwrite data. Make sure to backup any important information before running this command.

# Next steps

After successfully installing Appwrite, you can:

[Deploy on cloud platforms](/docs/advanced/self-hosting/platforms/aws) - Learn how to deploy on AWS, DigitalOcean, and other cloud providers

[Configure services](/docs/advanced/self-hosting/configuration/email) - Set up email, SMS, storage, and other services

[Configure databases](/docs/advanced/self-hosting/configuration/databases) - Learn more about MongoDB and MariaDB configuration

[Production setup](/docs/advanced/self-hosting/production) - Prepare your installation for production use

[Update Appwrite](/docs/advanced/self-hosting/production/updates) - Keep your installation up to date
