Skip to main content
For common deployment questions, see FAQs.

Before Deployment

Make sure your machine meets the following minimum system requirements.

Hardware

  • CPU >= 2 Core
  • RAM >= 4 GiB

Software

Operating SystemRequired SoftwareNotes
macOS 10.14 or laterDocker DesktopConfigure 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 distributionsDocker 19.03+

Docker Compose 1.28+
For installation instructions, see Install Docker Engine and Install Docker Compose.
Windows with WSL 2 enabledDocker DesktopStore 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 Dify

1

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
2

Start Dify

  1. Navigate to the docker directory in the Dify source code:
    cd dify/docker
    
  2. Copy the example environment configuration file:
    cp .env.example .env  
    
    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:
    docker compose up -d
    
    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:
    [+] 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:
    docker compose ps
    
    You should see output similar to the following, with each container in the Up or healthy status:
    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
    

Access Dify

  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 Dify at:
    # Local environment
    http://localhost  
    
    # Server environment
    http://your_server_ip
    

Customize Dify

Modify the environment variable values in your local .env file, then restart Dify to apply the changes:
docker compose down
docker compose up -d
For more information, see environment variables.

Upgrade Dify

Upgrade steps may vary between releases. Refer to the upgrade guide for your target version provided in the Releases page.
After upgrading, check whether the .env.example file has changed and update your local .env file accordingly.