Server Farmer comes with over 60 powerful functional extensions. You can see these extensions on this page.

Installing extensions

All standard extensions are named "sf-something", where the name points to the associated repository, eg.:


                  https://github.com/serverfarmer/sf-helloworld
              

Installing extensions is very straightforward, you can install them in 2 different ways:

1. Manually (or scripted) on a single server, by executing:


                  /opt/farm/scripts/setup/extension.sh sf-helloworld
              

where sf-helloworld in an example extension name.

2. Manually or automatically (using your custom script) on a single server, by just checking out any GIT or Subversion repository contents into /opt/farm/ext/your-extension-name directory.

3. Automatically, during Server Farmer setup, on all servers - you just have to add the name of such extension to /opt/farm/dist/default.extensions file.

After installing, an extension will be updated each time Server Farmer's setup will be run.

Creating your own extensions

Before creating your own extension, you have to consider, how will you install it. If you want to install it using /opt/farm/scripts/setup/extension.sh script, you first have to make a small change in it: duplicate the last 11 lines of code, which recognizes "sf-" extension name prefix and handles the installation. You need to find out your own extension name prefix and add similar code, that will recognize it and perform the installation using your custom repository address. Then, you can optionally add the name of your new extension to /opt/farm/.private.extensions file, which will cause its setup.sh script to be executed each time when /opt/farm/setup.sh script is executed.

Of course, if you want to create some universal extension, you can always ask us to create a repository for you under https://github.com/serverfarmer namespace.

When you found out, how do you want to install your own extension, it's time to start creating it. Take a look at sf-helloworld extension as an example.