EzPaaS Server

A miniature Heroku clone for easy in-house deployments, powered by Docker.

What Is It?

At Tendigi, we build applications for a variety of clients, often simultaneously, and those applications usually require server-side infrastructure. We also build random things internally from time to time, and these often depend on services that have to live somewhere.

For production deployments, we love Heroku (when it makes financial sense) as well as systems like Deis which can be deployed on AWS / DigitalOcean / etc.

We longed for a simple, on-site PaaS solution that we could hack on as our needs evolved. Dokku is a great project, but we ran into some issues with it (problems updating to newer versions, discrepancies in application behavior compared to our other Deis deployments, a little annoying to work on because it's a collection of shell scripts, etc). As a result, we built EzPaaS: a mini Heroku clone, built in Ruby, powered by Deis images running on Docker.

Prerequsites

Docker

EzPaaS requires Docker to be installed. We recommend following the Docker Community Edition (CE) installation instructions for your platform here.

Ruby

EzPaaS also requires Ruby 2.2 or newer. It may work with older versions, but they have not been tested.

Installation

Install the gem. The easiest way is to install it for all users with sudo:

$ sudo gem install ezpaas-server

Usage

Starting The Server

The server runs on port 3000 by default, and can be started by running ezpaasd with no arguments at the command line.

All data is stored in the filesystem. Everything is stored in ~/.ezpaas/ by default, but you can override this by passing the --data-dir option to ezpaasd.

Every time you ezpaasd starts, it checks for updates to the two Docker images used for building and running your applications: deis/slugbuilder and deis/slugrunner.

server starting

After ensuring it has the latest images, the server starts and you're ready to start deploying applications using the CLI!

Project Status

  • [x] Container compilation from repository archive
  • [x] Application deployment
  • [x] Container scaling
  • [x] Control over HTTP API
  • [x] Control from CLI
  • [ ] Authentication / access control
  • [ ] Config Storage
  • [ ] Virtual hosts
  • [ ] Complete documentation
  • [ ] Tests! Lots of tests.

Contributing

Bug reports and pull requests are welcome on GitHub

License

The gem is available as open source under the terms of the MIT License.