The ServerWarp Control Panel

My friends I am ecstatic to share with you the next chapter for ServerWarp Xojo Web hosting. Its been a long time coming but at last it is here: the control panel.

WarpPanel is an always-on always-available management system for your Linux server. Whether it be a virtual machine or dedicated server we designed WarpPanel to be easy to use, accessible, modern, and secure. 

The web interface runs on a special port and requires SSL to connect. Upon logging in with your server user account you will be greeted with the dashboard overview:

Every 30 seconds the server will refresh the doughnut pie charts giving you near realtime information about the health and performance of your server. Using the containers page you can start, stop, and restart any active service, application, or web server running on your server:

The web interface is the easiest way to modify your system configuration or add new capabilities to your server. 

Your server is always kept up to date as new features are rolled out however the fastest way to try out new capabilities is to use our new desktop application:

The desktop application allows our customers who have several machines with us to stay connected to them all at the same time. In general new features and capabilities will be delivered in the desktop application before arriving on the web.

An example is the ability to view the console output logs for any of the applications or services running on your server.

Most importantly however is the foundation behind WarpPanel that sets it apart. Unlike traditional hosting control panels that are centrally managed ours runs directly on your machine.

The linux host operating system has been completely optimized for secure delivery of web and database applications by running everything inside of unprivileged Docker containers. WarpPanel helps you manage these containers while maintaining strict controls on who and what has access to those resources. 

The foundation is built directly on top of a REST API that powers all clients whether it be the web based interface, the desktop app, or the coming iOS mobile app. The desktop app even provides you with the cURL commands for every action so that you can learn to build and automate your server with your own tools. It will also soon provide Xojo and PHP code as well.

The ServerWarp control panel is available immediately for all new customer servers. Existing customers will be notified about scheduling an upgrade and/or migration to our new server platform to take advantage of these new features. 

A follow up post is forthcoming regarding the technical specifications of our new platform. You can check out a demo of WarpPanel by entering your information on our new homepage at

As always thank you for your business and happy coding.

Phillip Zedalis
Chief Warp Engineer
ServerWarp, Inc.
Managing Developer
1701 Software, Inc.

Upgrading Xojo CGI Apps

One of the things my customers and I have discovered is that updating Xojo CGI applications can be difficult.

Some people used special key combinations or administrator-only buttons to shut down their application executable. Others just tried to upload the new binary executable right over the old. Of course the FTP may let you do that but the old version is still running because people are still hitting it! Then you encounter “can not launch application on port 1234” for example because the old version of your binary is still running on that port.

So working with our customers we have developed a solution:

1. Add a timer to your WebApplication’s properties.

2. In the App.Open event let’s instantiate that timer and set it to fire every 5 seconds. Let’s also use AddHandler to handle the Timer.Action() event.

3. Let’s create the “timerShutdown_Action” method. This method will be fired every 5 seconds and it will look for the existence of the Appname.cgi. This file is created for you by Xojo when the application is compiled as a Linux CGI. Don't forget to add "sender As Timer" to the parameters or it won't compile!

You can see here we are getting a FolderItem object for the current directory. We are then appending the path of our current directory to the lowercase version of our application’s executable + “.cgi”. So if you name your Xojo WebApplication “TestApp” then when you compiled there was an accessory “testapp.cgi” file created. This is the file that connects your web application to the web server. It is the gate way in which your users use the application.

So we check to see if its still in the root folder sitting next to your application. If it is, great! That means everything is humming along exactly as it should. However if that file were to go missing, the WebApplication would just shut itself down.

4. So to deploy a new version of your Xojo Web Application you just delete the accessory .cgi file for your app, then wait a healthy 5-10 seconds and the app will shut itself down. Replace your files (including the CGI) with your new version and your users will be back in business.

If you attempt to shut down all sessions or shut down the app from inside the application itself you will run into issues. One customer was doing exactly this. They had set the WebApplication.AutoQuit property to true and then would loop through all the sessions performing WebSession.Quit(). This sounds great in theory but the problem is even if all sessions disappeared and the application shutdown, the CGI file sitting next to your application will just launch a new version of it.

So I hope this solution works for you as a quick and easy way to update your Xojo CGI Web Applications.