Skip to content

Conversation

@JUVOJustin
Copy link
Contributor

Currently, the traefik dashboard is exposed with port 10999 to be publically accessible if router_bind_all_interfaces=true. This can leak information when ddev is used for public hosting.

How This PR Solves The Issue

The PR binds the port only to localhost.

Manual Testing Instructions

  • Clone branch
  • make
  • router_bind_all_interfaces=true globally
  • Make sure ddev hostname is not locally resolved to localhost
  • Try accessing http://my-domain.ddev.site:10999

I also installed this dev branch on my public host machine and validated that the port is actually not exposed to the public anymore.

Automated Testing Overview

The new test checks the port binding in the docker composer and tries if the dashboard can still be accessed locally.

Release/Deployment Notes

No breaking changes as far as i can tell. The traefik rest api can still be accessed from the host. curl 127.0.0.1:10999/api/version would still work.

@JUVOJustin JUVOJustin requested a review from a team as a code owner December 15, 2025 13:43
Copy link
Member

@rfay rfay left a comment

Choose a reason for hiding this comment

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

I tested this manually with both router-bind-all-interfaces=true and false, and it did the right thing. The code is right. I didn't carefully examine the test, but it looked right.

I tested access to the port(s) using telnet, and looked at ~/.ddev/.router-compose-full.yaml to confirm that it was right.

@rfay rfay requested a review from stasadev December 17, 2025 18:17
Copy link
Member

@stasadev stasadev left a comment

Choose a reason for hiding this comment

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

Looks good to me.

@rfay rfay merged commit 489df08 into ddev:main Dec 17, 2025
29 of 32 checks passed
@rfay rfay changed the title fix(router): ensure Traefik monitor port is always bound to localhost fix(router): ensure Traefik dashboard port is always bound to localhost Dec 27, 2025
@rfay
Copy link
Member

rfay commented Dec 27, 2025

@JUVOJustin I note that the Traefik dashboard can also be turned off in Traefik (It's enabled in ~/.ddev/traefik/.static_config.yaml).

api:
    dashboard: true
    insecure: true

Another useful approach would be to disable that completely on publicly accessible systems.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants