Home

Awesome

Docker Ngrok

A Docker image for ngrok service to expose a local docker environment or any other local server to the public internet over secure tunnels. The image is built using official busybox:glibc docker image, so no third party libraries are used, only official busybox and ngrok binary.

Usage

Command-line

Example
The example below assumes that you have running web server docker container named dev_web_1 with exposed port 80.

docker run --rm -it --link dev_web_1 shkoliar/ngrok http dev_web_1:80

With command line usage, ngrok session is active until it won't be terminated by Ctrl+C combination.

Command details

Using ngrok parameters

docker run --rm -it --link <web-container-name> [--net <default-netowrk-name>] shkoliar/ngrok <ngrok-parameters> <web-container-name>:<port>

For information about ngrok parameters, please refer to ngrok documentation.

Passing parameters to ngrok via env variables

docker run --rm -it --link <web-container-name> [--net <default-netowrk-name>] --env DOMAIN=<web-container-name> --env PORT=<port> shkoliar/ngrok

Available env variables can be found below, at environment variables section.

Troubleshooting

If you are getting an error like

docker: Error response from daemon: Cannot link to /dev_web_1, as it does not belong to the default network.

You need to specify default docker network, for example

docker run --rm -it --link dev_web_1 --net dev_default shkoliar/ngrok http dev_web_1:80

As part of docker-compose.yml file

ngrok:
  image: shkoliar/ngrok:latest
  ports:
    - 4551:4551
  links:
    - web
  environment:
    - DOMAIN=web
    - PORT=80

Where web in example above is a web server service name of this docker-compose.yml file.

If ngrok container is created as part of docker-compose.yml file, ngrok session is active while container is running. To restart or stop session, you will need to restart or stop container respectively. Ngrok web interface available at http://localhost:4551.

Environment variables

List of available environment variables to configure ngrok in command line usage or as part of docker-compose.yml file.

NameValuesDefaultInformation
PROTOCOLhttp, tls, tcphttpNgrok tunneling protocol.
DOMAIN*localhostHostname or docker container, service name which is referred to by ngrok.
PORT*80Port which is referred to by ngrok.
REGIONus, eu, ap, au, sa, jp, inusRegion where the ngrok client will connect to host its tunnels.
HOST_HEADER*Optional, rewrite incoming HTTP requests with a modified Host header. e.g. HOST_HEADER=localdev.test
BIND_TLStrue, falseOptional, forward only HTTP or HTTPS traffic, but not both. By default, when ngrok runs an HTTP tunnel, it opens endpoints for both HTTP and HTTPS traffic.
SUBDOMAIN*Optional, specifies the subdomain to use with ngrok, if unspecified ngrok with generate a unique subdomain on each start.
AUTH_TOKEN*Optional, token used to authorise your subdomain with ngrok.
DEBUGtrueOptional, write logs to stdout.
PARAMS*Pass all ngrok parameters by one string. When specified, any other env variables are skipped (Except AUTH_TOKEN).

For more information about ngrok parameters, please refer to ngrok documentation.

License

MIT