Skip to content

Configure workerd for FUSE when safe to do so - #15134

Open
gpanders wants to merge 1 commit into
mainfrom
ganders/fuse
Open

Configure workerd for FUSE when safe to do so#15134
gpanders wants to merge 1 commit into
mainfrom
ganders/fuse

Conversation

@gpanders

@gpanders gpanders commented Aug 11, 2026

Copy link
Copy Markdown
Member

Check the configuration of the Docker daemon to determine if it is safe to configure workerd for use with FUSE. If the host platform is non-Linux (which means the Docker daemon is running in a VM) OR if Docker is running in rootless mode, we configure workerd with the CAP_SYS_ADMIN capability, mount the /dev/fuse device into the container, and disable the AppArmor profile.

This means that rootful Docker on Linux DOES NOT support FUSE by default. Linux users should configure rootless Docker before using FUSE.


  • Tests
    • Tests included/updated
    • Automated tests not possible - manual testing has been completed as follows:
    • Additional testing not necessary because:
  • Public documentation

@changeset-bot

changeset-bot Bot commented Aug 11, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: ca438f7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 8 packages
Name Type
wrangler Minor
miniflare Minor
@cloudflare/vite-plugin Patch
@cloudflare/vitest-pool-workers Patch
@cloudflare/deploy-helpers Patch
@cloudflare/pages-shared Patch
@cloudflare/remote-bindings Patch
@cloudflare/runtime-types Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-project-automation github-project-automation Bot moved this to Untriaged in workers-sdk Aug 11, 2026
@workers-devprod
workers-devprod requested review from a team and jamesopstad and removed request for a team August 11, 2026 18:05
@workers-devprod

Copy link
Copy Markdown
Contributor

Codeowners approval required for this PR:

  • @cloudflare/cloudchamber
  • @cloudflare/wrangler
Show detailed file reviewers
  • .changeset/local-container-fuse-privileges.md: [@cloudflare/wrangler]
  • packages/containers-shared/src/knobs.ts: [@cloudflare/cloudchamber @cloudflare/wrangler]
  • packages/containers-shared/src/types.ts: [@cloudflare/cloudchamber @cloudflare/wrangler]
  • packages/containers-shared/src/utils.ts: [@cloudflare/cloudchamber @cloudflare/wrangler]
  • packages/containers-shared/tests/utils.test.ts: [@cloudflare/cloudchamber @cloudflare/wrangler]
  • packages/miniflare/src/config/v4-schema.ts: [@cloudflare/wrangler]
  • packages/miniflare/src/plugins/do/index.ts: [@cloudflare/wrangler]
  • packages/miniflare/src/plugins/do/schema.ts: [@cloudflare/wrangler]
  • packages/miniflare/src/runtime/config/generated/workerd.ts: [@cloudflare/wrangler]
  • packages/miniflare/src/runtime/config/workerd.ts: [@cloudflare/wrangler]
  • packages/miniflare/test/config/v4-convert.spec.ts: [@cloudflare/wrangler]
  • packages/miniflare/test/runtime/config.spec.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/api/startDevWorker/MultiworkerRuntimeController.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/dev.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/dev/container-options.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/api/startDevWorker/ConfigController.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/api/startDevWorker/LocalRuntimeController.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/api/startDevWorker/MultiworkerRuntimeController.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/api/startDevWorker/types.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/dev/miniflare/index.ts: [@cloudflare/wrangler]
  • pnpm-lock.yaml: [@cloudflare/wrangler]
  • pnpm-workspace.yaml: [@cloudflare/wrangler]

@ask-bonk

ask-bonk Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

UnknownError: ProviderInitError

github run

@github-actions

Copy link
Copy Markdown
Contributor

✅ All changesets look good

@ask-bonk

ask-bonk Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@gpanders Bonk workflow failed. Check the logs for details.

View workflow run · To retry, trigger Bonk again.

devin-ai-integration[bot]

This comment was marked as resolved.

Check the configuration of the Docker daemon to determine if it is safe
to configure workerd for use with FUSE. If the host platform is
non-Linux (which means the Docker daemon is running in a VM) OR if
Docker is running in rootless mode, we configure workerd with the
CAP_SYS_ADMIN capability and mount the `/dev/fuse` device into the
container.

This means that rootful Docker on Linux DOES NOT support FUSE by
default. Linux users should configure rootless Docker before using FUSE.
@pkg-pr-new

pkg-pr-new Bot commented Aug 11, 2026

Copy link
Copy Markdown
@cloudflare/autoconfig

npm i https://pkg.pr.new/@cloudflare/autoconfig@15134

@cloudflare/build-output-utils

npm i https://pkg.pr.new/@cloudflare/build-output-utils@15134

@cloudflare/config

npm i https://pkg.pr.new/@cloudflare/config@15134

create-cloudflare

npm i https://pkg.pr.new/create-cloudflare@15134

@cloudflare/deploy-helpers

npm i https://pkg.pr.new/@cloudflare/deploy-helpers@15134

@cloudflare/kv-asset-handler

npm i https://pkg.pr.new/@cloudflare/kv-asset-handler@15134

miniflare

npm i https://pkg.pr.new/miniflare@15134

@cloudflare/pages-functions

npm i https://pkg.pr.new/@cloudflare/pages-functions@15134

@cloudflare/pages-shared

npm i https://pkg.pr.new/@cloudflare/pages-shared@15134

@cloudflare/unenv-preset

npm i https://pkg.pr.new/@cloudflare/unenv-preset@15134

@cloudflare/vite-plugin

npm i https://pkg.pr.new/@cloudflare/vite-plugin@15134

@cloudflare/vitest-pool-workers

npm i https://pkg.pr.new/@cloudflare/vitest-pool-workers@15134

@cloudflare/workers-auth

npm i https://pkg.pr.new/@cloudflare/workers-auth@15134

@cloudflare/workers-editor-shared

npm i https://pkg.pr.new/@cloudflare/workers-editor-shared@15134

@cloudflare/workers-utils

npm i https://pkg.pr.new/@cloudflare/workers-utils@15134

wrangler

npm i https://pkg.pr.new/wrangler@15134

commit: ca438f7

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 4 additional findings in Devin Review.

Open in Devin Review

Comment thread packages/containers-shared/src/knobs.ts

@emily-shen emily-shen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry - miniflare is going through a messy transition at the moment as we're soft launching a new major.

I've moved the container engine configuration to miniflare's top level, out of the durable object config. The image name is still defined on the DO, this is just the stuff like the socket. That made more sense to me as I don't think you can (or should) have multiple different container engine configs.

For some background:
Miniflare's config is now an extension of our new programmatic version of wrangler.json (in packages/config), with extensions defined all in one place in src/config/schema.ts, rather than in each individual plugin. Each plugin now gets the whole worker's options, rather than just the binding options for that resource type.

However, I think for this feature we don't need to add any user facing config, so all of this logic should just go inside miniflare. Currently the PR doesn't work with vite for example, but if you just move it all inside miniflare then it will work for any local dev.

As a followup, you could then add user-facing config so that this works on rootful linux too, or let people turn this off, but we can do that separately?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

3 participants