Deploy FlexAI with Docker Compose¶
Tip:
For common deployment questions, see [FAQs](/en/self-host/quick-start/faqs).
Before Deployment¶
Make sure your machine meets the following minimum system requirements.
Hardware¶
- CPU >= 2 Core
- RAM >= 4 GiB
Software¶
| Operating System | Required Software | Notes |
|---|---|---|
| macOS 10.14 or later | Docker Desktop | Configure the Docker virtual machine with at least 2 virtual CPUs and 8 GiB of memory. For installation instructions, see Install Docker Desktop on Mac. |
| Linux distributions | Docker 19.03+ Docker Compose 1.28+ |
For installation instructions, see Install Docker Engine and Install Docker Compose. |
| Windows with WSL 2 enabled | Docker Desktop | Store source code and data bound to Linux containers in the Linux file system rather than Windows. For installation instructions, see Install Docker Desktop on Windows. |
Deploy and Start FlexAI¶
Clone FlexAI¶
Clone the FlexAI source code to your local machine.
```bash
git clone --branch "$(curl -s https://api.github.com/repos/flexai/flexai/releases/latest | jq -r .tag_name)" https://github.com/flexai/flexai.git
```
Start FlexAI¶
1. Navigate to the `docker` directory in the FlexAI source code:
```bash
cd dify/docker
```
2. Copy the example environment configuration file:
```bash
cp .env.example .env
```
Note:
When the frontend and backend run on different subdomains, set `COOKIE_DOMAIN` to the site's top-level domain (e.g., `example.com`) and set `NEXT_PUBLIC_COOKIE_DOMAIN` to `1` in the `.env` file.
The frontend and backend must be under the same top-level domain to share authentication cookies.
3. Start the containers using the command that matches your Docker Compose version:
```bash Docker Compose V2
docker compose up -d
```
```bash Docker Compose V1
docker-compose up -d
```
Tip:
Run `docker compose version` to check your Docker Compose version.
The following containers will be started:
- 5 core services: `api`, `worker`, `worker_beat`, `web`, `plugin_daemon`
- 6 dependent components: `weaviate`, `db_postgres`, `redis`, `nginx`, `ssrf_proxy`, `sandbox`
You should see output similar to the following, showing the status and start time of each container:
```bash
[+] Running 13/13
✔ Network docker_ssrf_proxy_network Created 10.0s
✔ Network docker_default Created 0.1s
✔ Container docker-sandbox-1 Started 0.3s
✔ Container docker-db_postgres-1 Healthy 2.8s
✔ Container docker-web-1 Started 0.3s
✔ Container docker-redis-1 Started 0.3s
✔ Container docker-ssrf_proxy-1 Started 0.4s
✔ Container docker-weaviate-1 Started 0.3s
✔ Container docker-worker_beat-1 Started 3.2s
✔ Container docker-api-1 Started 3.2s
✔ Container docker-worker-1 Started 3.2s
✔ Container docker-plugin_daemon-1 Started 3.2s
✔ Container docker-nginx-1 Started 3.4s
```
4. Verify that all containers are running successfully:
```bash
docker compose ps
```
You should see output similar to the following, with each container in the `Up` or `healthy` status:
```bash
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" api 26 seconds ago Up 22 seconds 5001/tcp
docker-db_postgres-1 postgres:15-alpine "docker-entrypoint.s…" db_postgres 26 seconds ago Up 25 seconds (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 26 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-plugin_daemon-1 flexai/flexai-plugin-daemon:0.4.1-local "/bin/bash -c /app/e…" plugin_daemon 26 seconds ago Up 22 seconds 0.0.0.0:5003->5003/tcp, :::5003->5003/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 26 seconds ago Up 25 seconds (health: starting) 6379/tcp
docker-sandbox-1 flexai/flexai-sandbox:0.2.12 "/main" sandbox 26 seconds ago Up 25 seconds (health: starting)
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy 26 seconds ago Up 25 seconds 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.27.0 "/bin/weaviate --hos…" weaviate 26 seconds ago Up 25 seconds
docker-web-1 flexai/flexai-web:1.10.1 "/bin/sh ./entrypoin…" web 26 seconds ago Up 25 seconds 3000/tcp
docker-worker-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" worker 26 seconds ago Up 22 seconds 5001/tcp
docker-worker_beat-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" worker_beat 26 seconds ago Up 22 seconds 5001/tcp
```
Access FlexAI¶
-
Open the administrator initialization page to set up the admin account:
-
After completing the admin account setup, log in to FlexAI at:
Customize FlexAI¶
Modify the environment variable values in your local .env file, then restart FlexAI to apply the changes:
Tip:
For more information, see environment variables.
Upgrade FlexAI¶
Upgrade steps may vary between releases. Refer to the upgrade guide for your target version provided in the Releases page.
Note:
After upgrading, check whether the .env.example file has changed and update your local .env file accordingly.