The Project-FiFo Developer Hub

Welcome to the Project-FiFo developer hub. You'll find comprehensive guides and documentation to help you start working with Project-FiFo as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Installing FiFo

The steps involved in getting FiFo up and running

Make life easier!

Starting with 0.8.0 Project FiFo releases pre-made datasets. See "Installing via FiFo AIO Dataset" for instructions. This is the quickest and easiest way to get FiFo running.

Please see the Requirements section for details on the requirements.

1: Dataset Import

From the GZ (Global Zone) import the base dataset which we will use as the foundation for our FiFo Zone. Once imported we then confirm it is installed.

Please consult Zone requirements for details.

2: Zone Creation

JSON Payload file used for zone creation

 "autoboot": true,
 "brand": "joyent",
 "image_uuid": "<zone uuid>",
 "delegate_dataset": true,
 "indestructible_delegated": true,
 "max_physical_memory": 3072,
 "cpu_cap": 100,
 "alias": "fifo",
 "quota": "40",
 "resolvers": [
 "nics": [
   "interface": "net0",
   "nic_tag": "admin",
   "ip": "",
   "gateway": "",
   "netmask": ""

Next we create our FiFo JSON payload file and save it in case we need to re-install at a later stage.

cd /opt
vi setupfifo.json
vmadm create -f setupfifo.json

3: FiFo Packages Install

We now zlogin to our newly created FiFo Zone and proceed with adding the FiFo package repository. Then we install the required FiFo packages.

zlogin <fifo-vm-uuid>

First we do need to configure the delegate dataset to be mounted to /data we can do this from within the zone with the following command:

zfs set mountpoint=/data zones/$(zonename)/data

Starting with 14.4.0 Datasets, Joyent introduced signed packages. Starting with Version 0.7.0 - FiFo has now also started signing it's packages. To properly install FiFo packages, the FiFo public key is required and can be installed with the following command.

cd /data
curl -O
gpg --primary-keyring /opt/local/etc/gnupg/pkgsrc.gpg --import < fifo.gpg
gpg --keyring /opt/local/etc/gnupg/pkgsrc.gpg --fingerprint

The key id is BB975564 and the fingerprint CE62 C662 67D5 9129 B291 62A0 ADDF 278A BB97 5564 should be returned respectively.

Now we can install the packages.

echo "" >> /opt/local/etc/pkgin/repositories.conf
pkgin -fy up
pkgin install fifo-snarl fifo-sniffle fifo-howl fifo-cerberus

4: Configuring FiFo Services

If this is a fresh installation the installer will create default configuration files for each service. When updating the configuration files do not get overwritten, but new *.conf.example files will be added.

The generated files contain some defaults. However is it advised to take some time to configure Sniffle , Snarl and Howl.

Datasets origin

By default, the FiFo UI Cerberus, will list and download available datasets (VM images) from If you have a local mirror, you can point to it changing the file /opt/local/fifo-cerberus/config/config.js

Service Startup

svcadm enable epmd
svcadm enable snarl
svcadm enable sniffle
svcadm enable howl
svcs epmd snarl sniffle howl

Initial administrative tasks

The last step is to create an admin user and organisation, this can be done with one simple command:

 # snarl-admin init <realm> <org> <role> <user> <pass>
 snarl-admin init default MyOrg Users admin admin

5: LeoFS initialization

LeoFS Storage should be working before proceeding

A working and fully functional two Zone LeoFS setup MUST be up and running before you proceed with the below step.

If you have not previously setup your LeoFS Storage Zones, you should pause now at this point and proceed with the LeoFS Install Guide before continuing with the last step below. The guide can be found here:

LeoFS Install Guide

Once LeoFS is configured and up and running, the init-leofs command can be used from sniffle-admin to set up the required, users, buckets and endpoints. You can use the service or your own domain name, if you setup your DNS with wildcard:

sniffle-admin init-leofs

That's it. You can now log out of your FiFo Zone and back into the Global Zone and continue with installing the Chunter service.

Go to chunter install

6: Configure FiFo

Now that you have FiFo installed and chunter running, you can now start managing and create virtual machines.

We got to add some dataset servers:

# Official and community images
sniffle-admin datasets servers add

# For FiFo custom images
sniffle-admin datasets servers add

# for free bsd images
sniffle-admin datasets servers add 

You can login to the web console and use the Configuration menu to setup the following:

At the point you should be able to create some VMs

7: Historical Data with Tachyon & DalmatinerDB

The ability to monitor your cloud data in real-time (cerberus metric graphs) or over time (historical data) is of fundamental importance to most cloud operators.

FiFo has some ultra-performant, purpose built services that have been designed specifically for this task. Excelling at both efficiently storing huge volumes of data as well as performing extremely fast queries that can scale to handle very large cloud installations.

Although an optional service, we do encourage this to be setup for all FiFo installations to truly complete your cloud offering.

First you need to setup the metric storage database called "DalmatinerDB"

Then the "tachyon-meter" service is installed in each hypervisor's Global Zone and the aggregation service called "Tachyon" is installed within its own separate Zone.

Note: The DalmatinerDB and the Tachyon aggregation service can be installed together on the same zone.

A detailed setup is covered in the comprehensive setup guide below:

Metrics Setup Guide

Installing FiFo

The steps involved in getting FiFo up and running