Origins of GitPushLive


12th May 2023

I thought as our first blog post it’d make sense to give everyone a background as to why GitPushLive exists.


Our Hosting Requirements Changed

As with many products, GitPushLive was born out of a requirement to fix our own problems.

GitPushLive is a product created by Duo Design. A small web design company based in Manchester England. It originated as an internal tool back in 2015.

Around 2014 we were developing the 5th version of our content management system (DuoCMS). Previous versions of the CMS had been created in PHP, but the majority of the code within the system was written in Javascript as the front-end was increasingly the majority of the codebase. We were looking to employ some more developers to help expand and it seemed logical to switch our back-end to Node.JS, so we could focus our skills around a single language. Node had been around about 5 years at this point and was starting to feel like a mature enough replacement.

Because of the unique requirements of various features within our CMS we’d always hosted all of our clients websites. Git had formed part of our workflow for several years, but deploying updates to our sites was still done by syncing over ssh to standard LAMP servers.

At the time the hosting landscape was changing. Products like Heroku were in the ascendancy and Docker had just started to become the hot new thing. Our clients are typically SME’s (small to medium sized enterprises) and the majority of them wouldn’t want to pay the relatively high cost of something like Heroku. However the workflow of just pushing to a different remote was very appealing from a development perspective.

We came across an open source project named Dokku. This was, at the time, a collection of Bash scripts which emulated much of what heroku did, but on your own hosting utilising Docker.

The other pain point we had with our existing hosting was only using 2 dedicated servers to host all of our clients sites (around 100 in total). So any downtime would take half our sites offline. Growing our hosting was tough too, as at some point we’d need to increase our hosting costs by 1/3'rd to add another site.

VM providers like Digital Ocean and Linode were getting very competitive at the time, so our plan was to migrate all of our sites from 2 dedicated servers to multiple Linodes / Digital Ocean Droplets. We’d install Dokku on each of these and git push our sites. We still host multiple sites per VM to keep costs down, but any downtime would be much more localised to just a few sites. We’d also be able to do more fine grained scaling.


Problems with Just Using Dokku

Once we had our sites deployed, the day to day management of multiple servers created some issues.

  • It was difficult to find a site amongst many servers

  • We didn’t have one place to check if our backups were working

  • Keeping an eye on server load across many servers wasn’t easy

  • Setting up new servers with Dokku was a multi-step error prone task

  • Managing domain names was challenging as this involved multiple interfaces across different providers


Our Solution

To solve these issues GitPushLive v1 was born. We created a control panel which polled the apis of our server providers and created a dashboard of all of our running servers. We then created a Dokku plugin which reported back to GitPushLive with a list of running apps and every minute pinged it with CPU / Disk and Memory usage. We built this into an app using web-sockets so we’d get all this info in real time.

We gradually added more features to help us setup new servers, configure backups and eventually even manage our domains.


8 Years Later….

GitPushLive became part of our day to day work. It was invaluable as deployment and monitoring tool and probably worth trying to commercialise into some kind of SAAS product. However client work got in the way and we’d introduced features which probably wouldn’t match the requirements of every company out there.

Over time, many of the elements of GitPushLive v1 were starting to show their age. It was using obsolete versions of Ansible, Python and Node. The front end framework we’d used had been long since abandoned and the whole thing was built on top of Duocms v5 (we’re now up to v8). If we want to carry on using GitPushLive it was time to up date it.

The update process has taken around 6 months as a side project. We’ve removed any Duo specific setup and added more automation in places like setting up auto-updates and firewall config. We’ve added a number of other providers and made it a much more solid, well tested product. After living and working with GitPushLive for many years we feel we have a product we’d be happy to supply to others.

Launching

At the time of writing GitPushLive is almost ready for us inviting early customers. We have a few things to finish off on the T&C’s, getting the payment system in place and some final polishing on some features. We’re hoping to start inviting interested parties the opportunity to sign up soon. As a thank you for being the first few customers we’ll look to add a short free period in exchange for putting up with any rough edges. If you’re interested in being an early user of the system, sign up to our newsletter on the home page and we will aim to get in touch.