Roll your own PaaS - Heroku alternative (Part 2)

This is part two of the Roll your own PaaS tutorial.

Part 1 - Create a Droplet (VPS)
Part 2 - Install & Configure CapRover

1. Setup CapRover

Now that most of the hard work is done and we have a DigitalOcean droplet setup and running with a Firewall and CapRover installed, we need to finish the CapRover setup.

To do this open up your favourite CLI (I’ll just use Terminal on Mac). Assuming you have npm installed on your local machine (e.g., your laptop), simply run (add sudo if needed):

npm install -g caprover

After that has installed, run:

caprover serversetup

You’ll be asked a series of questions. Just follow the onscreen prompts.

It will ask for your Droplet’s IP address, the domain name we created in Step 1 (i.e - paas.mydomain.com), a new admin password, an email address for Let’sEncrypt SSL certificates, and finally the hostname of our VPS (in my case it is demo-vps).

You’ll get a success message and the URL to login (https://captain.paas.mydomain.com)

:tada: Congratulations :tada: CapRover is now installed and you can access the dashboard via your domain.

2. Captain Definition File

Each of our app(s) requires a definition file. An app in CapRover is a container that will hold anything from HTML/PHP/Node code through to your Database. A definition file sits at the root of your project and it simply tells CapRover what you’d like to run.

For example, in a NodeJS app it sits next to package.json, (or next to index.php in case of PHP). It’s a simple JSON called captain-definition and looks like this:

  "schemaVersion": 2,
  "templateId": "node/8.7.0"

schemaVersion is always 2.

templateId is the piece which defines the foundation you need in order to run your app. It is in LANGUAGE/VERSION format. LANGUAGE can be one of these: node , php , python-django , ruby-rack . And VERSION is the version of the language you want to use.

There is a sample NodeJS app here so that you can see the file structure.