It has been five months since we launched RunCloud. What is most satisfying is getting all the great feedback from our users on how they are using RunCloud everyday. Whether you are a paid user or even on free tier, we are happy that you are with us. Thank for you trusting us with this important task, which gives us strength to work harder, learn more and improve our services.
Some of our users (maybe you) did ask about the tech behind our agent development. Up to this recent update, it was developed with NodeJS. And because of that, when we got inquiries where users wanted to use NVM. Unfortunately we just couldn’t allow that because that will break our agent. When that happens, you will no longer be able to use RunCloud to monitor and manage your servers.
Dark secret of NodeJS as RunCloud Agent
Building RunCloud is the biggest challenge that we ever undertake. Though holding true to lean startup methods, building our RunCloud MVP alone cannot just be a mere MVP. It has to be a fully functioning MVP for us to be able to compete in the marketplace. And to be honest, we amazed ourselves when we were able to launch a well-received MVP for our users. Or perhaps, our users were too kind and helpful (Thank you).
But one thing that we wish we should have known before we chose NodeJS is this — the agent application will break if you run NodeJS with a different version than the one which the RunCloud agent was compiled with. Yes, we built our agent packed with native modules so that your server doesn’t have to run
npm install to run the agent. If you enable automatic update inside RunCloud and Ubuntu Repository decided to upgrade their NodeJS version to v6 LTS, the agent will break because the agent was compiled to run only using NodeJS v4 LTS.
A silly mistake but at least we know this before Ubuntu’s update, which is happening some time in the future. Knowing this now have helped us save countless hours of customer support nightmare, and even perhaps lost a number of customers in the future.
Moving to the Go Language (or Golang)
A programmer should always be upgrading his or her skills, and be up to date with the current tech. This will determine how far RunCloud will grow in the future. And gladfully, we have a dedicated team that is always eager to learn new things, take up new tech challenges and be on the edge of this fast pace industry.
Looking into the issue at hand with the NodeJS-base agent, to overcome this problem, we know that we need to redevelop our agent using a programming language or a platform that will compile the agent software into binary codes, and not another scripting language. This will prevent future problems with module version updates, like with the NPM.
We considered C/C++ and Python. But when we discovered the Go Language (Golang) by Google, we found that Golang was an obvious choice because it is a safer and faster route to rebuild the features in the (then) NodeJS agent. Golang would also allow us to access more OS functions and data, and develop more new features to RunCloud in the future.
Together with the new Golang-based agent, we are also rolling out a set of new features in RunCloud. Below are new things that you can do from inside your RunCloud dashboard panel now.
Unblock Fail2Ban Blocked IP Address
Many of our customers are facing this problem if they are not using SSH Key to access their server using SSH. After five failed attempts to connect to your server with SSH, the server will block their IP address from attempting to connect again. With the new agent, we are providing function to unblock the blocked IP Address. This function can be access inside security section of the RunCloud server dashboard.
PHP-FPM Process Manager Selection
When we started the company, all of the Web Applications was created to run using ondemand process manager for PHP-FPM. With the latest update, you can now choose all the pm inside FPM setting. You can use ondemand, dynamic or static depending on your preference.
GitLab and Private Git Server
RunCloud’s main objective is to help PHP programmers deploys their source codes to their servers. What better way to do it other than with Git. Previously this, only Github and Bitbucket were supported for Git deploy. But with the latest agent and panel version, we included the option of deploying Git projects from GitLab.com, other custom providers and even your own private self-hosted Git server.
Better Git Deployment Error Message
When you are deploying with Git, you push your code to your server. Should anything goes wrong, you should be getting a message or at least a notification of the event. This is not the case with the previous update. The errors were only logged in the server log and your were not notified of the errors. But with latest agent and panel update, you will have ability to view the stdout and stderr of your deployment should there be any errors.
This deployment error message can be view inside Git tab in Web Application section. We even push the stdout and stderr to your Slack channel and send you an email to get you alerted.
All the new features have been rolled out and is ready for you inside your RunCloud panel. When you look inside your dashboard panel, you should be able to see that your RunCloud Agent should have been upgraded to version 2.0.1.
If this is not the case for you, do not hesitate to get in touch with us.