Title: Using Firefox remote debugging feature
Author: Solène
Date: 06 August 2024
Tags: firefox network
Description: In this blog post, you will learn how to use Firefox
remote debugging feature

# Introduction

Firefox has an interesting features for developers, its ability to
connect a Firefox developers tools to a remote Firefox instance.  This
can really interesting in the case of a remote kiosk display for
instance.
The remote debugging does not provide a display of the remote, but it
gives you access to the developer tools for tabs opened on the remote.

# Setup

The remote firefox you want to connect to must be started using the
command line parameter `--start-debugger-server`.  This will make it
listen on the TCP port 6000 on 127.0.0.1.  Be careful, there is another
option named `remote-debugging-port` which is not what you want here,
but the names can be confusing (trust me, I wasted too much time
because of this).

Before starting Firefox, a few knobs must be modified in its
configuration.  Either search for the options in `about:config` or
create a `user.js` file in the Firefox profile directory with the
following content:

```
user_pref("devtools.chrome.enabled", true);
user_pref("devtools.debugger.remote-enabled", true);
user_pref("devtools.debugger.prompt-connection", false);
```

This enables the remote management and removes a prompt upon each
connection, while this is a good safety measure, it is not practical
for remote debugging.

When you start Firefox, the URL input bar should have a red background.

# Remote connection

Now, you need to make a SSH tunnel to that remote host where Firefox is
running in order to connect to the port.  Depending on your use case, a
local NAT could be done to expose the port to a network interface or
VPN interface, but pay attention to security as this would allow anyone
on the network to control the Firefox instance.

The SSH tunnel is quite standard: `ssh -L 6001:127.0.0.1:6000`, the
remote port 6000 is exposed locally as 6001, this is important because
your own Firefox may be using the port 6000 for some reasons.

In your own local Firefox instance, visit the page `about:debugging`,
add the remote instance `localhost:6001` and then click on Connect on
its name on the left panel.  Congratulations, you have access to the
remote instance for debugging or profiling websites.

# Conclusion

While it can be tricky to debug a system you can directly see,
especially if it is a kiosk in production that you can see / use in
case of a problem.