Skip to content

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

  1. Open the administrator initialization page to set up the admin account:

    # Local environment
    http://localhost/install
    
    # Server environment
    http://your_server_ip/install
    
  2. After completing the admin account setup, log in to FlexAI at:

    # Local environment
    http://localhost  
    
    # Server environment
    http://your_server_ip
    

Customize FlexAI

Modify the environment variable values in your local .env file, then restart FlexAI to apply the changes:

docker compose down
docker compose up -d

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.