Skip to main content

Prerequisites

Before installing Dify, make sure your machine meets the following minimum system requirements:
  • CPU >= 2 Core
  • RAM >= 4 GiB
Operating SystemSoftwareExplanation
macOS 10.14 or laterDocker DesktopSet the Docker virtual machine (VM) to use a minimum of 2 virtual CPUs (vCPUs) and 8 GB of initial memory. Otherwise, the installation may fail. For more information, please refer to the Docker Desktop installation guide for Mac.
Linux platforms

Docker 19.03 or later

Docker Compose 1.28 or later

Please refer to the Docker installation guide and the Docker Compose installation guide for more information on how to install Docker and Docker Compose, respectively.
Windows with WSL 2 enabledDocker DesktopWe recommend storing the source code and other data that is bound to Linux containers in the Linux file system rather than the Windows file system. For more information, please refer to the Docker Desktop installation guide for using the WSL 2 backend on Windows.

Clone Dify

Clone the Dify source code to your local machine:
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git

Start Dify

  1. Navigate to the Docker directory in the Dify source code
    cd dify/docker
    
  2. Copy the environment configuration file
    cp .env.example .env
    
  3. Update directory ownership on the host
    sudo chown -R 1001:1001 ./volumes/app/storage
    
  4. Start the Docker containers Choose the appropriate command to start the containers based on the Docker Compose version on your system. You can use the docker compose version command to check the version, and refer to the Docker documentation for more information:
    • If you have Docker Compose V2, use the following command:
    docker compose up -d
    
    • If you have Docker Compose V1, use the following command:
    docker-compose up -d
    
    After executing the command, you should see output similar to the following, showing the status and start time of all containers:
    [+] 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 
    
  5. Check if all containers are running successfully
    docker compose ps
    
    This includes 5 core services: api / worker / worker_beat / web / plugin_daemon, and 6 dependent components: weaviate / db_postgres / redis / nginx / ssrf_proxy / sandbox .
    NAME                     IMAGE                                       COMMAND                  SERVICE         CREATED          STATUS                             PORTS
    docker-api-1             langgenius/dify-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   langgenius/dify-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         langgenius/dify-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             langgenius/dify-web:1.10.1                  "/bin/sh ./entrypoin…"   web             26 seconds ago   Up 25 seconds                      3000/tcp
    docker-worker-1          langgenius/dify-api:1.10.1                  "/bin/bash /entrypoi…"   worker          26 seconds ago   Up 22 seconds                      5001/tcp
    docker-worker_beat-1     langgenius/dify-api:1.10.1                  "/bin/bash /entrypoi…"   worker_beat     26 seconds ago   Up 22 seconds                      5001/tcp
    
With these steps, you should be able to install Dify successfully.

Upgrade Dify

Enter the docker directory of the dify source code and execute the following commands:
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
  • If the .env.example file has been updated, be sure to modify your local .env file accordingly.
  • Check and modify the configuration items in the .env file as needed to ensure they match your actual environment. You may need to add any new variables from .env.example to your .env file, and update any values that have changed.

Access Dify

Access administrator initialization page to set up the admin account:
# Local environment
http://localhost/install

# Server environment
http://your_server_ip/install
Dify web interface address:
# Local environment
http://localhost

# Server environment
http://your_server_ip

Customize Dify

Edit the environment variable values in your .env file directly. Then, restart Dify with:
docker compose down
docker compose up -d
The full set of annotated environment variables along can be found under docker/.env.example. For more information, see environment variables.

Read More

If you have any questions, see FAQs.