DirectorySecurity AdvisoriesPricing
Sign in
Directory
dify-web-fips logoFIPS

dify-web-fips

packaged by Chainguard

Last changed
Request a free trial

Contact our team to test out this image for free. Please also indicate any other images you would like to evaluate.

Tags
Overview
Comparison
Provenance
Specifications
SBOM
Vulnerabilities
Advisories

Chainguard Container for dify-web-fips

FIPS-mode Next.js web console for Dify, the platform for building agentic workflows and RAG pipelines on large language models.

Chainguard Containers are regularly-updated, secure-by-default container images.

Download this Container Image

For those with access, this container image is available on cgr.dev:

docker pull cgr.dev/ORGANIZATION/dify-web-fips:latest

Be sure to replace the ORGANIZATION placeholder with the name used for your organization's private repository within the Chainguard Registry.

Compatibility Notes

dify-web-fips is the FIPS variant of the dify-web image and is comparable to the upstream langgenius/dify-web image. It keeps the upstream entrypoint (/bin/sh ./entrypoint.sh in /app), the dify user and group (uid and gid 1001), the default environment variables, and both the Next.js and the experimental vinext servers.

The differences are:

  • The image runs on the Chainguard Node.js runtime instead of an Alpine base, and does not ship pnpm, yarn, or a package manager. The upstream build-only variables NODE_VERSION, PNPM_HOME, YARN_VERSION, and COMMIT_SHA are not set.
  • Dify's license and notices are included at /usr/share/licenses/dify-web/LICENSE.

FIPS Support

dify-web-fips adds the FIPS-hardened OpenSSL configuration, so Node.js runs with the OpenSSL FIPS provider. Server-side cryptography and HTTPS connections, such as those to SERVER_CONSOLE_API_URL or the marketplace, use FIPS-approved algorithms and negotiate TLS 1.2 or 1.3 with FIPS-approved cipher suites only, so a TLS endpoint in front of the Dify API must offer one of them. To trust a private certificate authority, mount its certificate and set NODE_EXTRA_CA_CERTS to its path:

docker run -d --name dify-web -p 3000:3000 \
  -v "$PWD/ca.pem:/certs/ca.pem:ro" \
  -e NODE_EXTRA_CA_CERTS=/certs/ca.pem \
  -e CONSOLE_API_URL= \
  -e APP_API_URL= \
  -e SERVER_CONSOLE_API_URL=https://dify-api.example.internal \
  cgr.dev/ORGANIZATION/dify-web-fips:latest

Check that Node.js runs in FIPS mode:

docker exec dify-web node -p 'require("crypto").getFips()'
1

Prerequisites

dify-web-fips is the browser console of Dify and needs a running Dify API service (langgenius/dify-api) with its PostgreSQL and Redis dependencies. Refer to the upstream Docker Compose deployment for the complete stack.

Getting Started

To use this image in the upstream Docker Compose deployment, set the image of the web service in docker/docker-compose.yaml to cgr.dev/ORGANIZATION/dify-web-fips:latest and start the stack as described upstream. Keep dify-web-fips and dify-api on the same Dify release, as the upstream Compose file does.

You can also run the console on its own and point it at an existing Dify API:

docker run -d --name dify-web -p 3000:3000 \
  -e CONSOLE_API_URL=http://localhost:5001 \
  -e APP_API_URL=http://localhost:5001 \
  -e SERVER_CONSOLE_API_URL=http://host.docker.internal:5001 \
  --add-host=host.docker.internal:host-gateway \
  cgr.dev/ORGANIZATION/dify-web-fips:latest

The entrypoint turns these variables into the NEXT_PUBLIC_* settings the console reads at runtime. Check that the console picked them up:

curl -s http://localhost:3000/signin | grep -o 'data-api-prefix="[^"]*"'
data-api-prefix="http://localhost:5001/console/api"

Open http://localhost:3000/install in a browser to create the first admin account once the API is reachable.

Configuration

A common setup puts the console and the API behind one reverse proxy, as the upstream Compose deployment does with nginx: API paths such as /console/api, /api, /v1, and /files go to the API, and / goes to dify-web-fips. In that setup, leave the public API URLs empty so the browser calls the API on the same origin, and give the server-side renderer a direct address for the API. This example joins the Docker network dify that the proxy shares with an API container named dify-api:

docker run -d --name dify-web -p 3000:3000 \
  --network dify \
  -e CONSOLE_API_URL= \
  -e APP_API_URL= \
  -e SERVER_CONSOLE_API_URL=http://dify-api:5001 \
  cgr.dev/ORGANIZATION/dify-web-fips:latest

The upstream web.defaults file lists the remaining console settings, such as MARKETPLACE_URL and TEXT_GENERATION_TIMEOUT_MS. Set EXPERIMENTAL_ENABLE_VINEXT=true to run the experimental vinext server instead of Next.js.

Documentation and Resources

What are Chainguard Containers?

Chainguard's free tier of Starter container images are built with Wolfi, our minimal Linux undistro.

All other Chainguard Containers are built with Chainguard OS, Chainguard's minimal Linux operating system designed to produce container images that meet the requirements of a more secure software supply chain.

The main features of Chainguard Containers include:

For cases where you need container images with shells and package managers to build or debug, most Chainguard Containers come paired with a development, or -dev, variant.

In all other cases, including Chainguard Containers tagged as :latest or with a specific version number, the container images include only an open-source application and its runtime dependencies. These minimal container images typically do not contain a shell or package manager.

Although the -dev container image variants have similar security features as their more minimal versions, they include additional software that is typically not necessary in production environments. We recommend using multi-stage builds to copy artifacts from the -dev variant into a more minimal production image.

Need additional packages?

To improve security, Chainguard Containers include only essential dependencies. Need more packages? Chainguard customers can use Custom Assembly to add packages, either through the Console, chainctl, or API.

To use Custom Assembly in the Chainguard Console: navigate to the image you'd like to customize in your Organization's list of images, and click on the Customize image button at the top of the page.

Learn More

Refer to our Chainguard Containers documentation on Chainguard Academy. Chainguard also offers VMs and Libraries — contact us for access.

Trademarks

This software listing is packaged by Chainguard. The trademarks set forth in this offering are owned by their respective companies, and use of them does not imply any affiliation, sponsorship, or endorsement by such companies.

Licenses

Chainguard's container images contain software packages that are direct or transitive dependencies. The following licenses were found in the "latest" tag of this image:

  • Apache-2.0

  • ISC

  • MIT

For a complete list of licenses, please refer to this Image's SBOM.

Software license agreement

Compliance

Chainguard Containers are SLSA Level 3 compliant with detailed metadata and documentation about how it was built. We generate build provenance and a Software Bill of Materials (SBOM) for each release, with complete visibility into the software supply chain.

SLSA compliance at Chainguard

This image helps reduce time and effort in establishing PCI DSS 4.0 compliance with low-to-no CVEs.

PCI DSS at Chainguard

This is a FIPS validated image for FedRAMP compliance.

This image is STIG hardened and scanned against the DISA General Purpose Operating System SRG with reports available.

Learn more about STIGsGet started with STIGs

Related images
dify-web logo

dify-web


Category
FIPS
STIG

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.