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 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
* 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 ~/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>
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/