Skip to content
Monorepo for Firefox Accounts
Branch: master
Clone or download
ianb Merge pull request #1167 from mozilla/stub-support-panel
feat(support): implement a stub support panel app
Latest commit 846575e May 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci fix(docker): Build fxa-payments-server:latest docker tag May 22, 2019
_scripts feat(support): implement a stub support panel app May 23, 2019
docs feat: add event broker for subscription platform ADR May 22, 2019
packages Merge pull request #1167 from mozilla/stub-support-panel May 23, 2019
test prepare for monorepo Apr 1, 2019
.nvmrc Switch .nvmrc to 10 Mar 18, 2019
AUTHORS Release 1.137.0 May 14, 2019 prepare for monorepo Apr 1, 2019 chore(docs): Update README/CONTRIBUTING for monorepo/commit signing. Apr 22, 2019 Add pull reminder badge May 20, 2019
lerna.json prepare for monorepo Apr 1, 2019
mysql_servers.json feat(support): implement a stub support panel app May 23, 2019
package-lock.json chore(adrs): initial setup of docs/adr using MADR format May 7, 2019
package.json chore(adrs): initial setup of docs/adr using MADR format May 7, 2019 fix(scripts): use train number rather than full version in deploy bug May 14, 2019
servers.json feat(support): implement a stub support panel app May 23, 2019


Firefox Accounts

The Firefox Accounts (fxa) monorepo

Getting Started

  1. Manually install the system dependencies for OS X or Ubuntu.

  2. Clone this repository.

    git clone
  3. Run:

    cd fxa
    npm install
  4. Visit

Use the PM2 tool to stop and start the servers, and read server logs.

To start all servers with mysql database

  • ./pm2 start mysql_servers.json

To start all servers with memory

  • ./pm2 start servers.json

    The most common commands are:

    • ./pm2 kill - stop all servers.

    • ./pm2 status - display running servers.

    • ./pm2 logs - logs for all servers (note: this must be used to verify accounts).

    • ./pm2 logs 1 - display logs for process 1.

    • ./pm2 stop 1 - stop process 1.

    • ./pm2 restart 1 - restart process 1.

    • More commands in the PM2 Readme.

When you want to fetch the latest changes to all servers:

npm run update


See the separate to learn how to contribute.


This is an example workflow for fxa.

After installing fxa the servers should automatically start up. Use ./pm2 status command to check the status of the servers:

To avoid wasting computer resources while not working on FxA make sure to stop the servers using ./pm2 kill. Once you are back working on FxA just use the ./pm2 start servers.json command to bring the servers back up. Keep in mind that the memory store will restart and all your database data will be brand new.

Verifying email and viewing logs

Use the ./pm2 logs command to get the logs of all servers. You may also use ./pm2 logs [id] to just see the logs for that particular server.

When you signup for an account using the form on the (mailer) logs will print out the verification link that you need to copy paste into your browser to verify your account locally:

If you get an error status for any of the servers please verify that you installed all required dependencies. Otherwise file an issue on this repository.


Required developer dependencies: Git, node.js 10+ with npm 6, Python 2.6+, Java 8+, Rust nightly+, libgmp, graphicsmagick, docker, grunt

OS X (with Brew):

Xcode and OS X Command Line Tools are required, install it and verify that command line tools installed:

xcode-select --install


sudo easy_install pip && sudo pip install virtualenv

Install Docker for Mac | Docs

sudo apt-get install build-essential git-core libgmp3-dev graphicsmagick  python-virtualenv python-dev docker-io pkg-config libssl-dev

Docker commands require sudo, to avoid it, follow steps below:

  1. Add the docker group if it doesn't already exist
sudo groupadd docker
  1. Add the connected user $USER to the docker group
sudo gpasswd -a $USER docker
  1. Restart the docker daemon
sudo service docker restart

Installing Node.js

We currently use Node 10. See

Alternatively, the Node Version Manager makes working with different versions of Node easy.

nvm install 10
nvm alias default 10

Installing Java

Java is used to run Selenium functional tests


Download from

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Installing grunt

npm install -g grunt-cli

Firefox Custom Profile

Use npm start to start Firefox with local server configurations. Available options:

  • FXA_ENV=local or latest or stable or stage (NOTE: local is default).
  • FXA_E10S=true - add this flag to turn on E10S. (NOTE: false by default).
  • FXA_DESKTOP_CONTEXT - context= value. (NOTE: fx_desktop_v2 is default).
  • FIREFOX_BIN=/Applications/ npm start
  • FIREFOX_DEBUGGER=true - open Browser Toolbox on start (NOTE: false by default for speed).

Functional Tests

The following requires the JDK and tests the local servers only.

Use npm test - all functional tests

Android debugging

The following technique works with any Android application and can also be used for Firefox for Android (making the Firefox for Android section optional).

Simply forward the following ports from the host machine to the Android device:

adb reverse tcp:3030 tcp:3030 # Content server
adb reverse tcp:9000 tcp:9000 # Auth server
adb reverse tcp:9010 tcp:9010 # OAuth server
adb reverse tcp:1111 tcp:1111 # Profile server
adb reverse tcp:5000 tcp:5000 # Sync server

Then run ./pm2 start servers.json and get to work!

Firefox for Android

Skip this if you are not working on Firefox for Android and FxA.

You can test sync locally in Firefox for Android using an emulator or a device on the same network. These docs were tested with the Genymotion simulator.

  • Install Firefox on the device or emulator.
  • Run npm run start-android this will: stop all local FxA servers, create a local PM2 configuration and rerun the servers.

The script will tell you which IP to use to work with FxA.

Follow the instructions of the script to update values in about:config.

Firefox for iOS

Skip this if you are not working on Firefox for iOS and FxA.

You can test sync locally in Firefox iOS using the XCode simulator. Follow the steps at and setup firefox-ios build locally. Currently there is no way to dynamically switch servers in Firefox for iOS, to use local servers you need to run the script below:

FIREFOX_IOS_HOME=<path_to_firefox_ios_project> npm run config-fxios

After the script you need to rebuild firefox-ios.

Running with MailDev

If you want to inspect emails, you can run fxa with MailDev.


npm install maildev -g


./pm2 start servers.json
./pm2 stop 0

Once services have started, you can start MailDev on port 9999. You might have to start MailDev with sudo permissions.

sudo maildev -s 9999

All emails sent can be viewed from http://localhost:1080.

Other tasks

You can’t perform that action at this time.