# Application Hosting
Jexia's Application Hosting can be used to serve your static files as well as hosting for you backend. Currently, you can host your Node JS, Go, Python, PHP applications, your Docker images or simply static files. You can fetch an application directly from a git repository and deploy it on our cloud. Application Hosting can be used for example with React, VueJs, and Angular as frameworks. The only requirement is that the project listens on port
80, please see the examples below.
# Common requirements:
- GitHub repository (open or private)
- Project in Jexia
- Configuration based on runme.io
- The application must listen on
- The application might use port
80or expose port via
# Build and run requirements:
Jexia supports runme.io specification. It means you can deploy multiple containers including needed databases and language you prefer to use. So, if you already have
.runme folder inside your repo, you can deploy it without any changes. If you do not have it you can use runme.io generator to generate specification.
Please, visit runme.io
You can run your docker image as well. Check runme.io to make proper configuration for this.
# What do you get?
- Hosting for your React, VueJS, Angular, NodeJS, Deno, Python, Go, PHP and many more projects built in a variety of languages
- A subdomain provided by Jexia, such as
- The possibility of adding your custom domain
- SSL certificates for your subdomain
- More free time to develop without spending time on issues regarding your deployment, setup, control and monitor processes
# How does it work?
When you initiate your application via Jexia's Application Hosting, Jexia will clone your GitHub repository into a secure environment. After this Jexia will read configuration file from
.runme/config.yaml and will apply building instructions. As soon as it is finished, the repository will be deployed into the cloud environment and a URL will be generated for your application. When the deployment has been completed, Jexia will run the command from your Dockerfile. As a last step, the cloned repository will be deleted from the secure environment.
Below you can see limitation per container:
- Number of requests - no limit
- 1 CPU
- 1Gb RAM
- 5Gb of storage (root file system inside container)
- We use K8s for Application Hosting. Within this, there is no state management inside each 'pod', please ensure you use persistent storage for all data.
# How to deploy?
# Step 1: Check if your GitHub repository has .runme folder
First of all, you need to be sure that your repository contains a
See the example below:
version: 1.0 publish: app services: app: build: type: dockerfile config: ./.runme/Dockerfile ports: - container: 4000 public: 80
It gives instruction for Jexia to use Dockerfile from
./.runme/Dockerfile to build an app and expose port 4000 to port 80
Dockerfile can be as you need, below you can find some common for NodeJs app:
FROM node:14.0.0 WORKDIR /app COPY . . RUN npm install ENTRYPOINT npm run serve
# Step 2: Organize your projects at Jexia
For Open Source GitHub projects.
Go to the Application Hosting menu, then click on Setup Application.
The next page is related to the GitHub repository setup. You can get it by clicking the Clone or Download button on the GitHub webpage. It should look like: https://github.com/jexia/test-node-app.git
Jexia will check if it can read the repository and will show the repository name on the page. Under the name, you will see the generated URL for your application. You can use this after your project has been deployed.
Under the General tab, you can add environment variables. Inside your NodeJS application, those variables will be available via
Under the Settings tab, you can adjust your GitHub repository.
As soon as the setup is done and you are ready to go - click the Deploy button. You will be transferred to a page where you can select your API Key and API Secret. That information will be transferred to your NodeJS application and will be accessible as:
It is not possible to use the
process.env.* approach with Angular, VueJS and React applications. This is because your API Key and Secret will be available on the frontend. In this case, we recommend using a NodeJS backend, which will enable the ability for additional validation.
After clicking Done, the deployment process will start. You will be able to see an indication to whether the deployment process has completed or not. Depending on the size of the repository, the deployment process can take around 3 to 7 minutes.
There are two states for deployment: Done (green dot) or Fail (red dot). In the case of a red dot, confirm you can build your repository locally and check if you have a
package.json with the
start commands. If these are correct and present, try to re-deploy by clicking the Deploy button again. If you need further support, feel free to contact our support team.
Failures can also be caused if you try to deploy a private repository on a free project plan. This will result in the error message: "Could not clone repository".
If everything completes successfully, you will see a green dot:
As soon as the deployment is done your application will be accessible via a URL marked in blue on the screen.
# How to update the application once deployed?
There are two possibilities to make a re-deployment. Jexia is supporting deployment without rebuilding code, this is useful when you need to update environment variables only. If you require a full re-build, the repository code will be downloaded from GitHub and the deploy process will begin again, with all previous environment variables.
To initiate a re-deployment, you need to click the Redeploy button (top right), which will appear as soon as the initial deployment has finished, instead of the Deploy button.
After this, you will see a window with deployment options, this is where you can specify your API_KEY and API_SECRET as well as switch between building options. By default, we redeploy only environment variables, without pulling the repository from GitHub and rebuild the source code.
# For private GitHub projects.
The flow for private repositories is almost the same. The only difference is that you need to allow Jexia to access your repository.
You will see another button that will allow you to authorize Jexia to clone your private repository. The rest of the process is the same as previously described.
# Custom domain
There is a possibility to add your domain to your application.
For this you need to have:
- Successfully deployed application
- A domain with an
ADNS record that points to your application's IP
- Only one
Arecord per domain should exist
- After the domain has been added to your Jexia configuration, you would need to redeploy your application. You can re-deploy without the rebuild option (see above)
It might take some time for your application to be accessible via the new domain as your DNS needs to update its records.
# Delete application
To delete the application you can go to the Settings tab and then click the Delete button. You will need to enter the repository name to confirm the deleting operation. Please note, you are not able to delete the project until you have an application running.
In our example, the repository name will be:
As for now, you can use these examples for deployment:
- VueJS TodoMVC:
- NodeJS application:
- VueJS Jexia DataViwer: