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 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>  

 h2. 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'; 
 </pre> 
 #* Create the fxasyncuser user with the SuperDuperPassword password and the fxasyncdb database: 
 <pre> 
 CREATE USER 'fxasyncuser'@'localhost' IDENTIFIED BY 'SuperDuperPassword';    
 CREATE DATABASE IF NOT EXISTS    `fxasyncdb` CHARACTER SET utf8 COLLATE utf8_general_ci; 
 GRANT ALL PRIVILEGES ON `fxasyncdb`.* TO 'fxasyncuser'@'localhost'; 
 </pre> 
 #* Exit the mysql console: 
 <pre> 
 flush privileges; 
 exit 
 </pre> 

 h2. Install Accounts Server 

 * Add the Firefox Accounts user: 
 <pre> 
 pw add user -n ff-accounts -m -s /bin/sh -c "Firefox Accounts" 
 </pre>  

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

 * Download the firefox auth server from GitHub: 
 <pre> 
 git clone https://github.com/mozilla/fxa-auth-server.git 
 cd fxa-auth-server 
 </pre> 

 * Install the auth server: 
 <pre> 
 npm install 
 </pre> 
 #* And test the auth server: 
 <pre> 
 npm start 
 </pre> 
 *NOTE*: Press Ctrl+C to stop the test server. 

 * Download the firefox content server from GitHub: 
 <pre> 
 cd .. 
 git clone https://github.com/mozilla/fxa-content-server.git 
 cd fxa-content-server 
 </pre> 

 * Install the content server: 
 <pre> 
 npm install 
 </pre> 
 #* And test the content server: 
 <pre> 
 npm run start-remote 
 </pre> 
 *NOTE*: Press Ctrl+C to stop the test server.  

 * Create a dev config file: 
 <pre> 
 vi config/dev.js ~/fxa-auth-server/config/dev.js 
 </pre> 
 #* And add the following: 
 <pre> 
 { 
   "master": { 
     "user": "fxauser", 
     "password": "SuperSecretPassword", 
     "database": "fxadb", 
     "host": "db.example.com", 
     "port": "3306" 
   }, 
   "slave": { 
     "user": "fxauser", 
     "password": "SuperSecretPassword" 
     "database": "fxadb", 
     "host": "db.example.com", 
     "port": "3306" 
   } 
 } 
 </pre> 

 * Start the server in dev MySQL store mode: 
 <pre> 
 npm run start-mysql 
 </pre> 

 * Exit from the firefox auth server account: 
 <pre> 
 exit 
 </pre> 

 h2. Firefox Content Server 

 * Add the Firefox Content user: 
 <pre> 
 pw add user -n ff-content -m -s /bin/sh -c "Firefox Content" 
 </pre>  

 * Switch to the Firefox Content user: 
 <pre> 
 su - ff-content 
 </pre> 

 * Download the firefox content server from GitHub: 
 <pre> 
 cd .. 
 git clone https://github.com/mozilla/fxa-content-server.git 
 cd fxa-content-server 
 </pre> 

 * Install the content server: 
 <pre> 
 npm install 
 </pre> 
 #* And test the content server: 
 <pre> 
 npm run start-remote 
 </pre> 
 *NOTE*: Press Ctrl+C to stop the test server.  

 h2. Firefox Sync Server 

 * Get the latest version of the syncserver: 
 <pre> 
 cd ~ 
 git clone https://github.com/mozilla-services/syncserver.git 
 cd syncserver 
 </pre> 

 * Build the Sync Server: 
 <pre> 
 gmake build 
 </pre> 

 * Edit the syncserver config file: 
 <pre> 
 vi syncserver.ini 
 </pre> 
 #* And modify the following values: 
 <pre> 
 [syncserver] 
 public_url = http://ff-sync.example.com:5000/ 
 sqluri = pymysql://fxasyncuser:SuperDuperPassword@db.example.com/fxasyncdb 
 </pre> 

 * Test run the syncserver: 
 <pre> 
 gmake serve 
 </pre> 

 h2. Init Scripts 

 *  

 h2. Connect Firefox 

 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