user4287110
user4287110

Reputation:

Access DDEV project from other hosts

I want to access the ddev web container from another host. How can I achieve this?

For example: ddev is running on host A, I want to access the web page from host B.

Upvotes: 0

Views: 4287

Answers (3)

dading84
dading84

Reputation: 1218

If you want to access the DDev web container from another host on the same network you can run this command with a known non conflicting port:

ddev config --host-webserver-port=8080 --bind-all-interfaces

Make sure to restart DDev project if running ddev restart

You should now be able to access the web container from other computers and mobiles on the network via http://hostip:port e.g. http://192.168.5.23:8080

If you cannot connect, check firewall on the host.

This is documented in the DDev docs here: https://ddev.readthedocs.io/en/stable/users/topics/sharing/#exposing-a-host-port-and-providing-a-direct-url

Upvotes: 0

Jürgen Venne
Jürgen Venne

Reputation: 81

Update: DDEV provides a ddev share command which makes this very easy.

Upvotes: 2

rfay
rfay

Reputation: 12785

Update 2024-02-23: Mostly people use ddev share (which launches ngrok) for this in 2024. There is a full set of other options at https://ddev.readthedocs.io/en/latest/users/topics/sharing/

Original Answer

There is a good summary of techniques on https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc and I see a number of others - It suggests:

  • ngrok (ddev share or other techniques)
  • localtunnel
  • Just proxying with an ssh tunnel.

So there are at least two variants of what you're talking about:

  1. Just proxying to an exposed port on your host machine for access by another machine on your local network.
  2. Proxying your local development environment to a host on the internet for access from anywhere.

For either approach, we need to figure out what port to proxy. If you can just use http, I'd proxy the localhost port (which goes directly to the web container and doesn't care what the hostname in the URL is). So if ddev describe shows http://d7git.ddev.site:8080, https://d7git.ddev.site:8443, http://127.0.0.1:32827, use the 127.0.0.1 port (32827 in this case). If you can do this, you won't have to fiddle with faking the hostname on the host from which you're going to access this.

So for option 1 (just exposing on another port on your machine), use any of these technqiues. I'll use the socat approach on macOS (brew install socat).

socat tcp-listen:8889,reuseaddr,fork tcp:localhost:32827

where 32827 is the port listed by ddev describe as localhost access, and 8889 is the port you want to expose to others. Then find out your local network IP address (Use ifconfig or other techniques) and others can access your ddev project with that. For example, my setup today would be http://10.150.150.87:8889/

For option 2, Proxying your project for somebody else to use on the internet, via ssh tunneling:

ssh -R :9101:localhost:32827 [email protected]

That will tunnel your local port 32827 (check your own ddev describe for this) to port 9101 on the remote host.example.com. Note that you'll likely have to

  • Change the firewall config to enable access to that port on the remote host
  • Enable GatewayPorts yes in the host's sshd config.

Upvotes: 2

Related Questions