SmartOS Datasets

All datasets are built with automated SmartOS MIBE (Machine Image Build Environment). All datasets auto-create databases and generate unique random database passwords on machine provisioning. A great blog post on installing up and building with MIBE can be find on MerlinDMC Blog. All datasets can be installed or downloaded directly from or installed automatically within the Project-FiFo web interface.

WordPress 0.1.1

UUID: 6732eec0-3ca3-11e4-9dcd-bbd118e1656d


A WordPress MIBE repo that builds a very fast WordPress dedicated vps environment. Compiled with Nginx 1.7.4, FastCGI Cache Purge and Geoip support. Configured with MySQL Percona and php-fpm using opcache. Will auto-tune my.cnf in relation to zone memory size at the time of provisioning.

All pages are statically cached and purged from the cache when a page/post is changed or updated. Extremely efficient – configured to serve hundreds of concurrent WordPress requests at blazing speeds with minimal CPU or Database Load.

Unique Passwords are generated for MySQL root user as well as wordpress database. All information is passed into /etc/motd after zone init.

metadata support

Certain metadata passed to the JSON payload file at creation time will dictate how the new wordpress instance is configured. Currently Supported Metadata:

wpsite_url - wordpress site url
wphome_url - wordpress home url
wpadmin_usr - wordpress admin user
wpadmin_psw - wordpress admin password
wpadmin_ema - wordpress admin email

If no metadata is passed then default username and password will be used for wordpress admin user:

Admin User: wpadmin
Admin Password: wppass
Admin Email: admin@site.local

example: Project FiFo Metadata in use
result: Custom Machine Provisioned

ssl support

An auto generated self signed certificate is created at zone init and there is a ready to go nginx conf file that just has to be enabled in:


Please note in order for selective cache purge to work with SSL you will need to install a valid SSL Certificate for your site or figure out how to make “curl” ignore SSL validation.

0.1.1 Changelog

  • Compiles Nginx 1.7.4 with FastCGI Cache purge Module, Geoip and HTTPS SPDY support
  • Generates unique self-signed SSL certs on zoneinit /var/db/ssl/certs/
  • Nginx configured to store FastCGI cache in /var/run/nginx-cache
  • Configures php 5.5 with php-fpm configured to use opcache
  • Mdata-get zoneinit support for “wpsite_url” “wphome_url” “wpadmin_usr” “wpadmin_psw” “wpadmin_ema”
  • If mdata-get metadata is not supplied it will fall-back to defaults
  • Generates unique mysql root password
  • Generates unique wordpress db password
  • All custom information displayed in /etc/motd
  • At zone init – installs and configures LATEST version of WordPress via wp-cli
  • At zone init – installs/activates LATEST “Yoast wordpess SEO” and “nginx cache plugin” via wp-cli
  • Add optimal wp-config.php settings for efficiency
  • Will auto purge wordpress page/post from the cache on edit or change
  • Configured to serve hundreds of concurrent requests at blazing speeds with minimal cpu or db load
  • Enables system cron entry for wp-cron
  • Auto tunes MySQL Percona my.cnf based on memory provisioning size
  • Includes optional wordpress-ssl.conf to be used should you want ssl site
  • Installs in webroot/opcache/opcache.php only accessible from specified ip range in nginx wordpress.conf – currently for Cache Monitoring


FusionPBX 3.6.1

UUID: b6a90570-382a-11e4-ad27-6fa41813af0e

  • Nginx
  • PostgreSQL 9.3
  • FreeSwitch 1.4.7
  • Memcached
  • Opcache

Recommended Ram: 1-2GB

This Dataset has been tested running behind NAT in a Zone with 2GB of RAM handling 300 simultaneous concurrent calls with no loss and perfect call clarity.

If running behind NAT environment, set the following to your public ip:

-> system -> variables

Also make sure you are forwarding the correct SIP and RTP ports to your servers private ip from your firewall.

If running on a public ip – then remove the current FreeSwitch manifest and replace it with this one which removes the NAT startup option.



OwnCloud 7.0.2

UUID: b6a90570-382a-11e4-ad27-6fa41813af0e

  • Nginx
  • PostgreSQL 9.3
  • Memcached
  • Opcache

Recommended Ram: 1024MB

Note: Remember to disable the appstore in your owncloud config.php as leaving it enabled will slow down your app screen to a crawl. The command below is provided for your convenience if you have not already run it.

sed -i "5i 'appstoreenabled' => false," /opt/local/www/owncloud/config/config.php


There is a bug with the Owncloud bookmark app used with PostgreSQL. The bug reults in tagged bookmarks not filtering when clicked. A simple fix is to patch 3 lines of code in:
/opt/local/www/owncloud/apps/bookmarks/lib/bookmarks.php Lines 91-93

Github Commit: 793733479a4669bdc49b7ba57a605551f03d7929

if($CONFIG_DBTYPE == 'pgsql') {
- $sql = "SELECT * FROM (SELECT *, (select array_to_string(array_agg(`tag`),',') from `*PREFIX*bookmarks_tags` where `bookmark_id` = `b`.`id`) as `tags`
- FROM `*PREFIX*bookmarks` `b`
- WHERE `user_id` = ? ) as `x` WHERE true ";
+ $sql = "SELECT * FROM (SELECT *, (select array_to_string(array_agg(`tag`),',') from `*PREFIX*bookmarks_tags` where `bookmark_id` = `b2`.`id`) as `tags`
+ FROM `*PREFIX*bookmarks` `b2`
+ WHERE `user_id` = ? ) as `b` WHERE true ";
view raw gistfile1.txt hosted with ❤ by GitHub


  1. Rohan
    Sep 28, 2014 @ 10:34:46

    Hey! I just used your owncloud dataset and was up and running in under a minute after it finished downloading!

    Great work.



    • Mark Slatem
      Sep 28, 2014 @ 12:53:25

      Hi there Rohan – Glad you like it and thanks for the feedback.


      • Rashid
        Oct 07, 2014 @ 07:17:52

        What’s the default root password for the dataset? I have been trying to ssh into the original dataset from fifo’s site.


        • Mark Slatem
          Oct 08, 2014 @ 14:40:53

          There is no default root password for the dataset – you either specify passwords in fifo at provisioning time or you add your ssh key to you username in fifo and ssh directly to the zone. You can also use zlogin from global zone to manually setup and ssh key or password as well.


  2. Christian Peralta
    Oct 08, 2014 @ 07:54:49

    For the wordpress dataset what is the Recommended RAM? I was unable to get the dataset to provision until I increased RAM to > 3GB. Can I provision this dataset at this RAM level and then use zonecfg to decrease allocated ram to 512M and have the vm work effectively?


    • Mark Slatem
      Oct 08, 2014 @ 14:43:49

      Hi Christian, the default Ram I use for largish wordpress sites with this dataset is 1024MB. The ram should not have anything to do with your provisioning. The reason it takes awhile to provision is that at zone creation and first boot time it actually pulls down and installs the latest version of WordPress. So every time you provision you will always get the very latest wordpress available at the time. If your internet is very slow the provisioning potentially could timeout – although I have never seen this happen yet.


      • Christian Peralta
        Oct 08, 2014 @ 22:03:35

        I guess I should have been more clear. The zone actually does provision. The issue occurs when the zone is provisioned and it begins going through the zoneinit scripts. Zoneinit goes into maintenance and it fails on due to php complaining about being out of shared memory. (Wed Oct 8 13:55:14 2014 (24349): Fatal Error Unable to allocate shared memory segment of 134217728 bytes: unknown: Not enough space (12)). The command that is being called is “wp core download”. The only time this has not happened is when I allocated the zone 3048MB Ram in my json for provisioning the zone. Hardware is Spare office Dell with a Core 2 Duo 5GB of ram and no other zones running when I provision this zone. Thanks for the help and I am thankful for demystifying smartos.

        Also if I indicate dhcp as the ip in the json payload for the zone, script fails since percona goes into maintenance due to the bind address being blank.


        • Mark Slatem
          Oct 09, 2014 @ 01:05:37

          Hi there – I am pretty sure this related to the limited RAM on your node you need some ram for ZFS filesystem itself at least a couple of GB dedicated. Not sure why it works for you when you assign more ram. Have a look at the following quick video I made for you showing it provisioning in a small memory zone.

          I also suggest you have a look at how much free ram you really do have before provisioning. Have a look from the global zone and run “vmstat 5” this will show actual ram you have available – my guess is that zfs is using most of it if you only have 5GB of ram.


  3. saul
    Dec 28, 2015 @ 08:28:12

    consulta, fusion PBX fuciona para 15.000 llamadas simultaneas?

    ando buscando una solucion de pbx virtual para un carrier


Leave a Reply