Logo

Command Palette

Search for a command to run...

Deploying your first app

You can have your first application up and running on Cloud 66 in under 5 mins. Follow the steps below to see how easy it is to get your app configured, built, and deployed.

What you’ll need

Before you start, please check you have the following:

  • A Cloud 66 Account — If you don’t already have one, sign up for a Cloud 66 account. Your first server is free, no credit card required.
  • Application code and/or pre-built images — Application code should be hosted in a (secure) publicly accessible git repository and pre-built images should be hosted in image publicly accessible repositories.
  • An account with a supported cloud provider or your own servers set up — Cloud 66 supports a range of cloud providers. Select your preferred provider from the dropdown under Step 4 below.

If you don't have images or code ready, you can use this simple visit counter application we've created on Github.

Once you're ready, click the green New Application button to start the process.

Step 1: Choose a source

The first thing we need is access to your code, so that we can build and deploy it for you. Click the tab below which best suits your needs:

The easiest option is to give us (read-only) access to a Github repo. To do this:

  1. Click Get Started
  2. On the next page click Link with Github
  3. We’ll send you to our app on Github (you’ll need to sign in)
  4. Once you’re signed in, click Configure & then select the Github account you wish to link to Cloud 66
  5. Install and authorize our Github app (you can restrict our access to specific repos if needed)
  6. You will be redirected back to your Cloud 66 dashboard and you can move on to Step 2.

Step 2: Define your application

Now that we have access to your git host, you can tell us which repo you want to deploy:

  1. Choose the repo you want to deploy and set the branch
  2. Choose an environment for your application
  3. Give your application a name (this will be used to label your application throughout the Cloud 66 dashboard, and will not be visible to public users.)
  4. Click Analyze - we will now scan your repo and suggest the optimal settings

Step 3: Configure and build

Static generation or server-side rendering?

If we detect that your application uses Next.js we will ask you to confirm whether your application is statically generated (AKA prerendered) or uses server-side rendering.

Statically generated applications are rendered entirely during the build process and then then deployed as flat files. For applications that are rendered server-side, the application code runs on the server and renders pages as required. Apps that use server-side rendering will not build if you attempt to deploy them using static generation methods, and vice versa.

If you’re unsure of which kind of app you have, you should read the official documentation and examine your code to confirm before you try to deploy.

Add more services Optional

If you need to add another service to your app that is not included in your Dockerfile:

  1. Click the + Add New Service button at the top right of the Services panel
  2. Name the service
  3. Specify a source for the service. This can be a Github repo, or any other git repo, or an image repository (for pre-built images)
  4. Click Analyze Source.

You’ll need to configure each service using the steps below.

Configure services

Next we need to configure network access and (where needed) storage for each of your app's services. You can also specify how many instances of each service you'd like to run and a variety of other custom settings.

A. Configure ports

To configure the internal and external ports for a service:

  1. Click the Configure Ports link in the Network column
  2. Set the Container Port, HTTP Port and HTTPS port
  3. You can also add traffic matching arguments if needed
  4. Click Save Service

If you're using our sample application you should set the HTTP port to 80 and the Container port to 5000.

B. Configure storage Optional

To configure storage volumes for a service:

  1. Specify the path inside the container where the storage will be mounted
  2. Specify the path on the host server where the data will actually be stored
  3. You can use the Add Volume button to specify additional storage volumes

Once all your storage volumes are configured, click Save Service.

C. Set the desired number of instances Optional

To add instances of a service:

  1. Click on the number in the Desired instances column
  2. Change the number in the Desired Count input box
  3. You can also add a start command to your service if required
  4. Click Save Service

Add and confirm environment variables Optional

During initial analysis we automatically generate environment variables based on the framework and components used by your app, but you can also add your own by clicking the Add environment variables link above the main panel.

Additionally, if we detect environment variables used directly in your code, we will present you with a list of the detected variables. Here you can either supply values for the variables, check the Allow empty value box (we will save the variable with a blank value) or, delete them (in which case we will then ignore them).

Once your app is completely configured, click the Next → button.

Step 4: Add a cloud provider

A. Configure access to your cloud provider

We need access to your cloud account in order to provision and manage servers on your behalf. How you configure that access differs from provider to provider. Select your cloud provider from the dropdown for more help.

First you need to configure your AWS account to allow Cloud 66 to access it:

  1. Log into the web interface for your AWS account
  2. Click on the name of your account in the top right corner of your AWS account, and select My Security Credentials.

On the next screen, some users will be asked to choose between Security Credentials and IAM users. We support both methods but we recommend that experienced users select IAM (Identity and Access Management) for better security because allows you to set permissions for specific users. Click on your chosen option below for more instructions.

Cloud 66 supports both VPC and (for AWS accounts created before 2014) EC2-Classic. We also support reserved instances. To use a VPC, your account must conform with the default VPC guidelines.

Help with advanced AWS features:

B. Add your cloud provider as a deployment target

To add your cloud credentials click the Add a Deployment Target button. This will open a panel that will enable you to grant Cloud 66 access to your provider.

Click the green Add Deployment Target button once complete.

C. Specify servers

Next you need to specify where your servers will be situated, how large they should be, and where your data will be stored:

  1. Choose a Server Region
  2. We will suggest a size for your application server - you can change it as needed
  3. Specify whether your datastore will share the app server (not recommended for Production), or have its own server. You can also use an existing external database server if you prefer.

If you're using our sample application you will need to set up a Redis instance at this point.

Our customization section has more details on the available options.

Step 5: Deploy your app

When you’re satisfied with your configuration, click the Start Deployment button. During the build and deployment process you can view the log to see what’s happening behind the scenes.

You can also close the window and come back later. We will email you once the application is deployed (or if it fails).

Server build states

In order to allow you to start working with your new app as soon as possible, there are two build states (or stages) for application servers:

  1. Ready - server is available to use, with the minimum required configuration
  2. Optimized - all the latest packages are installed & optimized

Customizing your app

If your application relies on specific components or non-standard settings or package versions then you can easily customize your configuration to match your requirements.

The method you use to configure a component depends on the nature of the customization. The table below will help you find the right tool:

Customization requiredConfiguration tool
Specific versions of a framework or packageManifest file
Cloud-provider-specific settings for servers (e.g. security groups, subnets)Manifest file
Component configuration (e.g. database engine config files)CustomConfig
Environment VariablesDashboard or Toolbelt
Non-standard Linux packages or librariesDeploy hooks
Running multiple database types or versions (groups)Manifest file or Dashboard