Support #718
Updated by Daniel Curtis over 8 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 bash git node npm gmp graphicsmagick redis gmake python2 py27-virtualenv sqlite py27-sqlite3 gcc48 scrypt </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