Periodically, we turn over control of the CenturyLink Cloud blog to members of our certified technology ecosystem to share how they leverage our platform to enable customer success. This week’s guest author from the Cloud Marketplace Provider Program is mobile backend-as-a-service CloudMine.

Enterprise mobile development has been "hard" for awhile. As enterprises increasingly feel the pressure to create innovative experiences through mobile and connected devices, most continue to struggle with the endless complexities of modern mobility for a number of very legitimate reasons.

  • Mobile expertise is hard to come by, and building mobile systems and competencies requires a variety of expertise to cover all necessary components.
  • Data security policies may inhibit the delivery of successful mobile initiatives by presenting new risks to an organization, both from a privacy and compliance perspective that they are unprepared to address on a timescale that aligns with the mobile app rollout schedule.
  • Finding highly responsive IT organizations geared to readily support mobile development requirements can be difficult to find as many struggle to keep up with the pace of new mobile and cloud-based technologies and application development practices.

CloudMine Simplifies Enterprise Mobility

Rethink mobile apps

At CloudMine, our Mobile Backend as a Service (MBaaS) platform is aimed at reducing these complexities to enable leading enterprises to keep up with the pace of innovation while focusing their resources on efficiently creating engaging experiences for our consumers and employees.

Key Features

Our team at CloudMine has spent four years building out our backend infrastructure. As the industry's first HIPAA-compliant MBaaS, we offer a number of enterprise grade features, such as:

  • Automatic load balancing using HAProxy - For years, HAProxy has been used by some of the world's highest traffic sites as a high-efficiency TCP and HTTP load balancer.
  • Server Partitioning - separate server clusters dedicated to specific tasks, such as push and websites
  • Sharded NoSQL Database Storage - MongoDB cluster with shard control and multiple replica sets.
  • End-to-end encryption - CloudMine, coupled with CenturyLink Cloud, offers the option of hosting HIPAA-compliant architecture, encrypting all data in motion and at rest.

In addition to this ready-made mobile platform, we enable developers to simplify the implementation of features such as social integration and single sign-on, push notification services, and running custom business logic. You'll find much more in our documentation. Now let's get to using CloudMine with CenturyLink Cloud

Use CloudMine on the CenturyLink Cloud

This tutorial shows you how to spin up your own basic version of the CloudMine offering on CenturyLink.

  1. In the dashboard menu, navigate to the Blueprints Library under Blueprints. Blueprints Library in Control Portal

  2. In the keyword search bar on the right side of the page, search "cloudmine" to find the CloudMine Mobile Blueprint.

    Search Blueprints

  3. Select "CloudMine Mobile Blueprint - Single Server." That should take you to a new page.

    Choose CloudMine single server

  4. Click "deploy blueprint", the large green button in the middle of the page.

    Deploy Cloudmine Blueprint

Customize the Blueprint

  1. Enter a password for the server. This is the password for root access to the server. Keep the password in a secure place.
  2. Set the Primary DNS option to "Manually Specify" and use "" (or any other public DNS server of your choice).
    • (OPTIONAL) Set a server name prefix.
  3. Read and accept the CloudMine terms of service.
  4. Feel free to keep the default options for the rest of the form and continue to "step 2: Review."

    Customize your Blueprint

Review your deployment

  1. Review the fields. If everything looks good, click "deploy blueprint." You can track the deployment process. It usually takes about 15 or 20 minutes to configure all components.

    Review your Blueprint

  2. After the process is complete, you need to determine the public IP address for the newly deployed host.

  3. Navigate to the "Servers" panel and look under "recent activity." You should see a status about "Mapping a Public IP."

  4. Make a note of the public IP, as you will reference that in later steps.

    IP address in server overview

  5. Before navigating to the browser interface, you need to ssh into the public IP address as root to run a script and complete the setup process.

    $ ssh root@PUBLIC_IP

  6. Once in the server, run the following command:

    # ./ PUBLIC_IP

  7. The script completes in a few seconds. You're officially ready to start using CloudMine!

  8. You can also use the DNS zone management features of CenturyLink Cloud to enter a fully-qualified domain name for your CloudMine server.

Access the CloudMine Web Interface

The CloudMine Web Interface is accessible on port 8080 of the server's public IP address, for example, You now have access to the CloudMine dashboard which is the springboard for all new apps built on the CloudMine platform. From here you can create new applications and manage all of their options and data.

As an example, let's say that you'd like to create a simple "health tracker" app that allows users to upload their healthy living habits and share them with their friends. Since you're starting from scratch, you'll need to do a few things before you get into coding the app. Here's a general outline of the setup involved:

  • Create a CloudMine account with your own email and password.
  • Create a new Application called "FitShare."
  • Implement the front-end code.

Create an Account

A CloudMine account is used to store all of the data associated with a single CloudMine user. Dashboard users can create and update applications, play around with application data, plug applications into social media networks, extend the API with custom backend logic, and do much more.

To create a Dashboard user account, load the web interface as described above, and click the orange "Sign up for a new account" button. Once you fill in all of your information, create the new account; you will be logged in automatically.

You now have access to the basic CloudMine offering and are on your way to creating the next hit application with FitShare. Feel free to take a few seconds to look around the dashboard before moving forward to Create an App. The majority of the Dashboard's functionality is based on application logic.

Create an App

Once you're finished taking a quick, self-guided tour of the landing page on the Dashboard, it's time to get down to business. Applications are at the core of the CloudMine offering, storing all of the information associated with your front-end app.

To get started, click on the large "+" button labeled "Create New App." You can have a number of different applications with different names, but let's stick with FitShare for now.

Note -- In addition to creating different applications to mirror totally different front-end apps, many CloudMine users create different applications in the Dashboard to emulate different environments of the same app. For instance, if we were working on a production-ready app, we might want to have "FitShare - Development", "FitShare - Staging", and "FitShare" (production) applications for testing purposes.

The environment section doesn't have any impact on the setup of the FitShare application, but it is a quick and easy way to download the necessary CloudMine SDK for your development environment. FitShare is going to be a website to begin with, so let's select the radio button under the logos for node.js, jQuery, and zepto.js to start.

Download the minified version of the library (and the Developer one as well, if you're curious), and insert it into your front-end project folder where appropriate. This file contains all of the logic connecting your app to the CloudMine backend.

Now that you have an application setup, you can really get an idea of what CloudMine has to offer. In just a few minutes (maybe even seconds) on the CloudMine dashboard, you've set up a highly-scalable, incredibly secure backend on which to build your front-end app. You can now create and manage objects, users, permissions, files and custom server code, plug in social networks, setup SSO with SAML and share your application with other CloudMine users. All of this is managed through our unified API, making your life as a developer incredibly easy.

You are now ready to start coding your front-end app on CloudMine. See the next section, Use the SDKs, for more information on how to incorporate CloudMine into the front-end of the FitShare project. Happy Coding!

Use the SDKs

To use any of the CloudMine SDKs, you'll need to update the API root address, so that the requests go to the CenturyLink version of CloudMine that you've just set up, instead of the default


When you download the JavaScript SDK and include it in your project, locate cloudmine-js/js/cloudmine.js

Skip all of the commented out config lines at the beginning of the file and look at the following section:

function WebService(options){ this.options = opts(this, options); if(!this.options.apiroot) this.options.apiroot = ""; ...

In this block, change the apiroot option value from to the endpoint mentioned at the beginning of this section ( After making this change, your JavaScript code should use the CenturyLink-hosted CloudMine instance setup above.

Check out the CloudMine JavaScript SDK Documentation.


After incorporating the iOS SDK into your project, locate cloudmine-ios/ios/ios/src/CMConstants.h

This should be a simple file with only a few lines of actual code in it. Find the following line:

#define CM_BASE_URL @""

And replace @ with the endpoint mentioned at the beginning of this section (@ After making this change, your iOS code should use the CenturyLink-hosted CloudMine instance setup above.

Check out the CloudMine iOS SDK Documentation.


After incorporating the Android SDK into your project, locate cloudmine-android/src/main/java/com.cloudmine.api/rest/

Find the following line:

  public abstract class CloudMineRequest<RESPONSE> extends Request<RESPONSE> implements HasHandler{

    public static final String REQUEST_TAG = "CloudMineRequest";

    private static final int RETRY_TIME_MS = 35000;
    protected static String BASE_URL = "";

And replace with the endpoint mentioned at the beginning of this section (@ After making this change, your Android code should use the CenturyLink-hosted CloudMine instance setup above.

Check out the CloudMine Android SDK Documentation.


CloudMine's Mobile Backend as a Service (MBaaS) empowers developers to build secure, compliant and performant applications. Our mission is to ensure that developers are able to build compelling app content without sacrificing security, data privacy, or auditability. By blending best-of-breed tools centered on mobile-specific services (push notifications, geolocation, etc.), data security/encryption, app scale, auditability, logging and continuous availability, developers are able to begin with a foundation for mobile success. Moreover, CloudMine developers have the flexibility to select the best programming language to fit their resource and technical needs. As a leader in embracing JavaScript in the enterprise, CloudMine empowers customers to quickly repurpose resources with web skills to usher in a new era of app offerings for connected devices. All of this while benefiting from the agility and power of the cloud.


All support requests can be sent to Please include as much detail as possible regarding your issue and list pertinent contact information so that our team can address your question quickly.