java-ngrok is a Java wrapper for
ngrok that manages its own binary, making
ngrok available via a convenient Java
ngrok is a reverse proxy tool that opens secure tunnels from public URLs to localhost, perfect for exposing local web servers, building webhook integrations, enabling SSH access, testing chatbots, demoing from your own machine, and more, and its made even more powerful with native Java integration through
java-ngrok is available on Maven Central.
<dependency> <groupId>com.github.alexdlaird</groupId> <artifactId>java-ngrok</artifactId> <version>1.5.5</version> </dependency>
If we want
ngrok to be available from the command line, pyngrok can be
pip to manage that for us.
ngrok functionality is available through the
NgrokClient. To open a tunnel, use the
connect method, which returns a
Tunnel, and this returned object has a reference to the public URL generated by
ngrok, which can be retrieved with
final NgrokClient ngrokClient = new NgrokClient.Builder().build(); // Open a HTTP tunnel on the default port 80 // <Tunnel: "http://<public_sub>.ngrok.io" -> "http://localhost:80"> final Tunnel httpTunnel = ngrokClient.connect(); // Open a SSH tunnel // <Tunnel: "tcp://0.tcp.ngrok.io:12345" -> "localhost:22"> final CreateTunnel sshCreateTunnel = new CreateTunnel.Builder() .withProto(Proto.TCP) .withAddr(22) .build(); final Tunnel sshTunnel = ngrokClient.connect(sshCreateTunnel);
Assuming we have also installed pyngrok, all features of
ngrok are available on the command line.
ngrok http 80
For details on how to fully leverage
ngrok from the command line, see ngrok's official documentation.
For more advanced usage,
java-ngrok's official documentation is available at https://javadoc.io/doc/com.github.alexdlaird/java-ngrok.
Java 8 support is not actively maintained, but a compatible build of this project does exist for Java 8. To use it,
java8-ngrok dependency from Maven Central instead.
<dependency> <groupId>com.github.alexdlaird</groupId> <artifactId>java8-ngrok</artifactId> <version>1.4.4</version> </dependency>
The Process API was introduced in Java 9, so certain convenience methods around managing the
ngrok process (for instance, tearing it down) are not available in the Java 8 build.
If you would like to get involved, be sure to review
the Contribution Guide.
Want to contribute financially? If you've found
java-ngrok useful, a donation
would also be greatly appreciated!