Project

General

Profile

Support #718

Updated by Daniel Curtis over 7 years ago

This is a guide on how I installed the Firefox Auth and Content components to form the Firefox Accounts Server on FreeBSD. 

 h2. Prepare the Environment 

 * Make sure the system is up to date: 
 <pre> 
 pkg update && pkg upgrade -y 
 </pre> 

 * Install a few dependencies: 
 <pre> 
 pkg install portmaster bash git node npm gmp graphicsmagick redis gmake python2 py27-virtualenv sqlite py27-sqlite3 gcc48 scrypt 
 </pre> 

 * Install node4 and npm2 from ports: 
 <pre> 
 portmaster www/node4 www/npm2 
 </pre> 

 * Add the Firefox Accounts user: 
 <pre> 
 pw add user -n ff-accounts -m -s /bin/sh -c "Firefox Accounts" 
 </pre>  
 * Create a symlink for bash in order for the fxa-local-dev package to install correctly: 
 <pre> 
 ln -s /usr/local/bin/bash /bin/bash 
 </pre>  

 h2. Install Accounts Server 

 * Switch to the Firfox accounts user: 
 <pre> 
 su - ff-accounts 
 </pre> 

 * Then set the CC, CXX, and CPP environment variables to use GCC instead of Clang: 
 <pre> 
 export CC=gcc48 
 export CXX=g++48 
 export CPP=cpp48 
 </pre> 

 * Download the local development setup scripts from GitHub: 
 <pre> 
 git clone https://github.com/mozilla/fxa-local-dev 
 </pre> 

 * Edit the @install_all.sh@ setup script: 
 <pre> 
 cd fxa-local-dev 
 vi _scripts/install_all.sh 
 </pre> 
 #* On line 45, change the make build to gmake build: 
 <pre> 
 cd syncserver; gmake build; cd .. 
 </pre> 

 * Install the local development scripts: 
 <pre> 
 npm install 
 </pre> 

 * When the install finishes the scripts will automatically start all of the Firefox Accounts components. When the components finish loading open a web browser and go to http://localhost:3030 

 * To stop the Firefox Accounts server use pm2: 
 <pre> 
 ./pm2 kill 
 exit 
 </pre> 
 #* *NOTE*: By default, account information is stored in memory and +will not be saved+ if the server reboots. 

 h3. MySQL Database 

 * Install MariaDB: 
 <pre> 
 pkg install mariadb100-server 
 </pre> 

 * Start and enable MariaDB at boot: 
 <pre> 
 echo 'mysql_enable="YES"' >> /etc/rc.conf 
 service mysql-server start 
 </pre> 

 * Secure the mysql installation: 
 <pre> 
 mysql_secure_installation 
 </pre> 

 * Log into the MySQL console: 
 <pre> 
 mysql -u root -p 
 </pre> 
 #* Create the fxauser user with the SuperSecretPassword password and the fxadb database: 
 <pre> 
 CREATE USER 'fxauser'@'localhost' IDENTIFIED BY 'SuperSecretPassword';    
 CREATE DATABASE IF NOT EXISTS    `fxadb` CHARACTER SET utf8 COLLATE utf8_general_ci; 
 GRANT ALL PRIVILEGES ON `fxadb`.* TO 'fxauser'@'localhost'; 

 flush privileges; 
 exit 
 </pre> 

 * Switch to the Firefox Accounts user: 
 <pre> 
 su - ff-accounts 
 </pre> 

 * Switch to the fxa-local-dev directory: 
 <pre> 
 cd fxa-local-dev 
 </pre> 

 * Stop the Firefox Account Servers: 
 <pre> 
 ./pm2 kill 
 </pre>  

 * Edit the servers.json config file: 
 <pre> 
 vi servers.json 
 </pre> 
 #* And modify the "oauth-server PORT 9010" and "oauth-server-internal PORT 9011" objects and add the MySQL environment variables: 
 <pre> 
     { 
       "name": "oauth-server PORT 9010", 
       "script": "bin/server.js", 
       "cwd": "fxa-oauth-server", 
       "env": { 
         "NODE_ENV": "prod", 
         "DB": "mysql", 
         "MYSQL_USERNAME": "fxauser", 
         "MYSQL_PASSWORD": "SuperSecretPassword", 
         "MYSQL_DATABASE": "fxadb", 
         "MYSQL_HOST": "127.0.0.1" 
       }, 
       "max_restarts": "1", 
       "min_uptime": "2m" 
     }, 
      { 
       "name": "oauth-server-internal PORT 9011", 
       "script": "bin/internal.js", 
       "cwd": "fxa-oauth-server", 
       "env": { 
         "NODE_ENV": "prod", 
         "DB": "mysql", 
         "MYSQL_USERNAME": "fxauser", 
         "MYSQL_PASSWORD": "SuperSecretPassword", 
         "MYSQL_DATABASE": "fxadb", 
         "MYSQL_HOST": "127.0.0.1" 
       }, 
       "max_restarts": "1", 
       "min_uptime": "2m" 
     }, 
 </pre> 
 *NOTE*: Additional environment variables are stored in fxa-oauth-server/lib/config.js 

 * And restart the Firefox Accounts Servers: 
 <pre> 
 ./pm2 start servers.json 
 </pre> 

 h2. Resources 

 * https://docs.services.mozilla.com/howtos/run-fxa.html 
 * https://docs.services.mozilla.com/howtos/run-sync-1.5.html 
 * https://github.com/mozilla/fxa-auth-server/ 
 * https://github.com/mozilla/fxa-content-server/

Back