Installing Sapwood is perhaps the trickiest part of the whole process. But we've put forth a good deal of effort to help make this process a little less painful.

Here's how we typically download and install Sapwood. You're welcome to stray from this guide in whatever way you're comfortable. Just know your mileage may vary.

(And please let us know if something in this guide is not working for you. We want this to be as smooth of a process as possible.)

Step 01: Get A Server

First thing's first: you need a server. Our favorite vendor is Digital Ocean. They offer virtual private servers (VPS) for very little money, relatively.

We have a few different Sapwood servers running. They all use Digital Ocean's $10/month plan, which is 1GB RAM, 1 Core Processor, and a 30GB SSD. Now, we don't have crazy tasks running on these servers or crazy traffic loads. But we've done fine so far. It's a good place to start.

We use Ubuntu distributions on our servers. Use what you're comfortable with, but note that some of the packages listed below may be specific to Ubuntu.

Step 02: Setup The Server

Next, you should install the tools on the server. Sean has a quick script that will set everything up for you (there are a few known bugs in the script). You're welcome to use that, but manually setting it up isn't that difficult.

In any case, these are the (Ubuntu) libraries we typically install:

  • build-essential
  • imagemagick
  • libmagic-dev
  • libmagickwand-dev
  • libreadline-gplv2-dev
  • libssl-dev
  • libxml2
  • libxml2-dev
  • libxslt1-dev
  • make
  • nodejs
  • python-software-properties
  • zlib1g-dev

And you'll also want these tools:

  • Git
  • NGINX
  • PostgreSQL
  • Ruby (2.2+)
  • Bundler (Ruby Gem)

We also recommend:

  • Creating a user (with sudo permissions) instead of using the root user (we recommend naming the user sapwood)
  • Adding a Swapfile to help when memory runs high
  • Reading through this awesome guide on some quick ways to increase security on a new server

Step 03: Third-Party Services

Look, we really want Sapwood to be even more flexible in the future, but we launched it using the tools we know and love. So, while there may be options over time, right now it is required that you have Amazon AWS and SendGrid accounts.

For Amazon, you will need to create a bucket and create a user with admin permissions. You'll want to save the key and secret of that user for the last step.

With SendGrid, you'll only need your username, password, and domain for the last step.

Step 04: DNS

You'll want Sapwood hosted on a domain or subdomain. So, you'll want to create an A record that points your domain to the IP address of your new Sapwood server.

If you don't currently own any domains, we recommend Hover.

Step 05: Install Sapwood

After your server is ready, you should navigate to the home directory of your sapwood user, and download the repo via git:

$ git clone https://github.com/seancdavis/sapwood.git

Change into the directory and install the gems.

$ cd sapwood
$ bundle install

If you have rake installed globally, you can skip to the next step, omit bundle exec and the installation task will install the gems for you.

After the gems are installed, you'll be able to use the rake command to run through the installation task:

$ bundle exec rake sapwood:install

This will ask you a series of questions which will help perform some of the installation for you. This is where you'll need your Amazon and SendGrid credentials.

The task will complete by providing you with an admin user, but ... that's it. You should be able to navigate to the domain you've pointed to your Sapwood server, and if you followed the instructions correctly, you should have a working instance of Sapwood.