Private cloud

A superior cloud that puts you on dedicated hardware in a physically isolated environment. Enjoy the same flexibility and high performance of our public cloud without any noisy neighbours and our industry-leading 100% uptime SLA.

Contact sales

Starting from $2056 / month

Key features

Security by complete isolation

Same great service as on our public cloud, but on dedicated compute hosts. No other customers on the same hardware.

Connectivity options

Manage private networks for additional network level isolation. Seamlessly connect to public cloud resources. Connect to any on-premises or hosted data centers using VPN or fiber. Bring your own IP networks for enhanced customization.

Performance

Use all the CPU power on your
dedicated compute hosts. Benefit from
the combination of dedicated CPUs and MaxIOPS, world’s fastest cloud storage.

Virtual data center, no heavy lifting required

Build your infrastructure on UpCloud private and public clouds without a hassle. No obligatory long term commitments and no need to invest in owning, installing and servicing your own hardware.

100% uptime SLA

No need to invest in spare hardware or capacity. Your private cloud resources are always available and covered by UpCloud’s 100% uptime SLA.

Scalability and manageability

Create your own cloud server plans. Distribute vCPUs and memory as you see fit. Use the same control panel, API and infrastructure management tools as on UpCloud’s public cloud.

Global availability

Private cloud is available in all eight UpCloud data centers worldwide. Use a multi-region setup for additional geographical redundancy across continents.

Control over your resources

You are in control over your resources. Unlike on the public cloud, choose on which hosts to deploy to have a total control over your infrastructure.

Embrace the

Hybrid cloud

Enjoy the best of both worlds by joining the powers of public and private clouds.

Deploy your most critical resources on private cloud and enjoy the limitless scalability of the public cloud for any fluctuating capacity needs.

On UpCloud, a private cloud is always also a hybrid cloud. Combine resources from both worlds.

Global private networking between private and public zones works out of the box and is included in all private cloud setups.

Simple but powerful API:

Automate your cloud

Our easy-to-use control panel and API let you spend more time coding and less time managing your infrastructure. Deploy in 45 seconds using the simple but powerful control panel, the Restful API or any software such as Ansible, Go or Python.

View Developer API

Easily integrate your app with UpCloud's infrastructure

- hosts: localhost
  connection: local
  serial: 1
  gather_facts: no

  tasks:
    - name: Create upcloud server
      upcloud:
        state: present
        hostname: web1.example.com
        title: web1.example.com
        zone: uk-lon1
        plan: 1xCPU-1GB
        storage_devices:
            - { size: 25, os: Ubuntu 14.04 }
        user: root
        ssh_keys:
            - ssh-rsa AAAAB3NzaC1yc2EAA[...]ptshi44x [email protected]
            - ssh-dss AAAAB3NzaC1kc3MAA[...]VHRzAA== [email protected]
      register: upcloud_server

    - name: Wait for SSH to come up
      wait_for: host={{ upcloud_server.public_ip }} port=22 delay=5 timeout=320 state=started

    - name: tag the created server
      upcloud_tag:
        state: present
        uuid: "{{ upcloud_server.server.uuid }}"
        tags: [ webservers, london ]
resource "upcloud_server" "server1" {
    hostname = "terraform.example.com"
    zone = "nl-ams1"
    plan = "1xCPU-1GB"
    storage_devices = [
        {
            size = 25
            action = "clone"
            storage = "01000000-0000-4000-8000-000030080200"
            tier = "maxiops"
        }
    ]
    login {
        user = "root"
        keys = [
            "ssh-rsa public key xxx"
        ]
    }
}
{
   "variables": {
      "UPCLOUD_USERNAME": "{{ env `UPCLOUD_API_USER` }}",
      "UPCLOUD_PASSWORD": "{{ env `UPCLOUD_API_PASSWORD` }}"
   },
   "builders": [
      {
         "type": "upcloud",
         "username": "{{ user `UPCLOUD_USERNAME` }}",
         "password": "{{ user `UPCLOUD_PASSWORD` }}",
         "zone": "nl-ams1",
         "storage_uuid": "01000000-0000-4000-8000-000030060200"
      }
   ],
   "provisioners": [
      {
         "type": "shell",
         "inline": [
           "apt update",
           "apt upgrade -y",
           "echo '' | tee /root/.ssh/authorized_keys"
         ]
      }
   ]
}
for image in driver.list_images():
    if image.name.startswith('Ubuntu') \
    and image.name.count('16.04') \
    and image.id.endswith('0'):
        break

for size in driver.list_sizes():
    if size.name == '1xCPU-1GB':
        break

for location in driver.list_locations():
    if location.name.startswith('London'):
        break

node = driver.create_node(
    image=image,
    size=size,
    location=location,
    name='Libcloud Example',
    ex_hostname='libcloud.example.com'
    )

pprint(node.state)

Multiple open source API-clients available

// Create the server
serverDetails, err := svc.CreateServer(&request.CreateServerRequest{
	Zone:             "fi-hel1",
	Title:            "My new server",
	Hostname:         "server.example.com",
	PasswordDelivery: request.PasswordDeliveryNone,
	StorageDevices: []request.CreateServerStorageDevice{
		{
			Action:  request.CreateStorageDeviceActionClone,
			Storage: "01000000-0000-4000-8000-000030060200",
			Title:   "disk1",
			Size:    30,
			Tier:    upcloud.StorageTierMaxIOPS,
		},
	},
	IPAddresses: []request.CreateServerIPAddress{
		{
			Access: upcloud.IPAddressAccessPrivate,
			Family: upcloud.IPAddressFamilyIPv4,
		},
		{
			Access: upcloud.IPAddressAccessPublic,
			Family: upcloud.IPAddressFamilyIPv4,
		},
		{
			Access: upcloud.IPAddressAccessPublic,
			Family: upcloud.IPAddressFamilyIPv6,
		},
	},
})
import upcloud_api
from upcloud_api import Server, Storage, ZONE, login_user_block

manager = upcloud_api.CloudManager('api_user', 'password')
manager.authenticate()


login_user = login_user_block(
    username='theuser',
    ssh_keys=['ssh-rsa AAAAB3NzaC1yc2EAA[...]ptshi44x [email protected]'],
    create_password=False
)

cluster = {
    'web1': Server(
        core_number=1, # CPU cores
        memory_amount=1024, # RAM in MB
        hostname='web1.example.com',
        zone=ZONE.London, # ZONE.Helsinki and ZONE.Chicago available also
        storage_devices=[
            # OS: Ubuntu 14.04 from template
            # default tier: maxIOPS, the 100k IOPS storage backend
            Storage(os='Ubuntu 14.04', size=10),
            # secondary storage, hdd for reduced cost
            Storage(size=100, tier='hdd')
        ],
        login_user=login_user  # user and ssh-keys
    ),
    'web2': Server(
        core_number=1,
        memory_amount=1024,
        hostname='web2.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10),
            Storage(size=100, tier='hdd'),
        ],
        login_user=login_user
    ),
    'db': Server(
        plan='2xCPU-4GB', # use a preconfigured plan, instead of custom
        hostname='db.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10),
            Storage(size=100),
        ],
        login_user=login_user
    ),
    'lb': Server(
        core_number=2,
        memory_amount=1024,
        hostname='balancer.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10)
        ],
        login_user=login_user
    )
}

for server in cluster:
    manager.create_server(cluster[server]) # automatically populates the Server objects with data from API
import upcloud_api
from upcloud_api import Server, Storage, ZONE, login_user_block

manager = upcloud_api.CloudManager('api_user', 'password')
manager.authenticate()


login_user = login_user_block(
    username='theuser',
    ssh_keys=['ssh-rsa AAAAB3NzaC1yc2EAA[...]ptshi44x [email protected]'],
    create_password=False
)

cluster = {
    'web1': Server(
        core_number=1, # CPU cores
        memory_amount=1024, # RAM in MB
        hostname='web1.example.com',
        zone=ZONE.London, # ZONE.Helsinki and ZONE.Chicago available also
        storage_devices=[
            # OS: Ubuntu 14.04 from template
            # default tier: maxIOPS, the 100k IOPS storage backend
            Storage(os='Ubuntu 14.04', size=10),
            # secondary storage, hdd for reduced cost
            Storage(size=100, tier='hdd')
        ],
        login_user=login_user  # user and ssh-keys
    ),
    'web2': Server(
        core_number=1,
        memory_amount=1024,
        hostname='web2.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10),
            Storage(size=100, tier='hdd'),
        ],
        login_user=login_user
    ),
    'db': Server(
        plan='2xCPU-4GB', # use a preconfigured plan, instead of custom
        hostname='db.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10),
            Storage(size=100),
        ],
        login_user=login_user
    ),
    'lb': Server(
        core_number=2,
        memory_amount=1024,
        hostname='balancer.example.com',
        zone=ZONE.London,
        storage_devices=[
            Storage(os='Ubuntu 14.04', size=10)
        ],
        login_user=login_user
    )
}

for server in cluster:
    manager.create_server(cluster[server]) # automatically populates the Server objects with data from API
var upcloud = require('upcloud');

var defaultClient = upcloud.ApiClient.instance;

// Configure HTTP basic authorization: baseAuth
var baseAuth = defaultClient.authentications['baseAuth'];
baseAuth.username = 'UPCLOUD_USERNAME';
baseAuth.password = 'UPCLOUD_PASSWORD';

var api = new upcloud.AccountApi();
api.getAccount().then(
  function(data) {
    console.log('API called successfully. Returned data: ' + data);
  },
  function(error) {
    console.error(error);
  },
);
require_once(__DIR__ . '/vendor/autoload.php');

$api_instance = new Upcloud\ApiClient\Upcloud\AccountApi();
$config = $api_instance->getConfig();
$config->setUsername('YOUR UPCLOUD USERNAME');
$config->setPassword('YOUR UPCLOUD PASSWORD');

try {
    $result = $api_instance->getAccount();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling AccountApi->getAccount: ', $e->getMessage(), PHP_EOL;
}

The most performant and simple-to-use private cloud

Unparalleled performance

Most performant private cloud

UpCloud’s high performance is built on three cornerstones: compute capacity, storage responsiveness and network availability. On UpCloud, performance means a combination of all these and translates to concrete benefits such as faster loading times, less required cloud resources and better quality of life for your devops team.

Build your own cloud plans

Distribute your CPU and memory resources as you wish. Create your own plans for any CPU hungry services. Have as many cloud servers as you like. Distribute vCPUs across compute hosts as you wish.

Dedicated CPU power

On public cloud, you are entitled to moderate CPU usage on your assigned vCPUs. On private cloud, feel free to use all the available CPU power on your dedicated private compute hosts.

Consistent performance

Always the same award winning performance. No noisy neighbors, guaranteed. Absolutely no surprises included, just stable day-to-day, year-to-year operations.

Storage power from MaxIOPS

Combine enterprise-grade computing capacity with the power of MaxIOPS, UpCloud’s in-house developed, award winning storage platform. World’s fastest block storage as a service, attached to your private cloud.

Networking, reimagined

Use any of UpCloud’s public networking, dedicated networks or bring your own networks. Redundant VPN and fiber services can be attached to any private cloud deployment.

Security
and isolation

Secure by design

More secure than public cloud by design. Dedicated hosts on a private cloud offer isolated and managed cloud infrastructure, without public cloud’s shared security model.

Control over your cloud

Secure your private corner of the cloud. You decide how the resources are allocated between compute hosts.

Hardware isolation

On UpCloud’s private cloud, compute hosts are always dedicated for a single customer. Hardware level isolation offers added security from other customers.

Private cloud, managed

You manage your apps. We manage the cloud servers. All systems are monitored and security patches applied.

No noisy neighbors

Public clouds are known for intermittents issues from other customers sharing the same physical hardware. Completely avoid noisy neighbor issues with dedicated compute resources.

Private networking

In addition to the ubiquitous private network spanning all UpCloud private and public cloud zones, benefit from native VLANs available in your private cloud deployments for custom networking needs.

Connectivity
options

Private networks

Secure networking across your private clouds, public cloud and our multi-region datacenters. Works out of the box, no configuration necessary.

Bring your own IP addresses

UpCloud’s extensive core network allows using IP blocks from your own assignments.

Connect private and public resources

All your resources connected to the same network. Secure connectivity between all UpCloud data centers.

Multi-cloud networking

Using multiple cloud providers? No problem. UpCloud connects directly to any existing cloud infrastructure.

Dedicated and shared public networks

Use addresses from UpCloud’s public IP pools or have an IP subnet dedicated for your own private use.

Connect to on-premises

Connect directly to your data center or manage your cloud infrastructure securely from your office network. Fiber and VPN connections from multiple providers are available.

Private cloudPricing, Simplified

Choose your plan, deploy as many cloud servers as you like.

Hosts

1

Memory

350 GB

CPU

48 cores

$2056/mo

Hosts

2

Memory

700 GB

CPU

96 cores

$3594/mo

Hosts

4

Memory

1400 GB

CPU

192 cores

$6623/mo

Hosts

8

Memory

2800 GB

CPU

384 cores

$12495/mo

Faster-than-SSD block storage

MaxIOPS

$0.22 /GB /mo

General purpose block storage

HDD

$0.06 /GB /mo

Networking

1 Gbit/s per cloud server

Included

Deploy your cloud servers worldwide

Our datacentres

Helsinki FI-HEL1

+358 9 4272 0661

Helsinki FI-HEL2

+358 9 4272 0661

London

+44 20 358 80000

Chicago

+1 415 830 8474

Frankfurt

+44 20 358 80000

Amsterdam

+44 20 358 80000

Singapore

+65 3163 7151

San José

+1 415 830 8474

Get in touch Learn More

Interested in how UpCloud can help you increase your performance, security and stability? UpCloud is the easiest way to manage your infrastructure. We’ve built our own proprietary storage technology, called MaxIOPS. This gives you up to 2x the performance compared to industrt-standard SSD VPS hosting.

Get started by filling out the form. We’ll get back to you shortly and schedule your demo.

Locations

Helsinki (HQ)

In the capital city of Finland, you will find our headquarters, and our first data centre. This is where we handle most of our development and innovation.

London

London was our second office to open, and a important step in introducing UpCloud to the world. Here our amazing staff can help you with both sales and support, in addition to host tons of interesting meetups.

Seattle

Seattle is our 4th and latest office to be opened, and our way to reach out across the pond to our many users in the Americas.

Singapore

Singapore was our 3rd office to be opened, and enjoys one of most engaged and fastest growing user bases we have ever seen.