Docs v1.0

Documentation

Build on CloudVantage

Everything you need to provision, manage, and scale your cloud infrastructure — from signing up to running production workloads.

Start here

Compute

Storage

Networking

Managed Services

Coming soon

API Reference

Full REST API documentation and interactive explorer.

Coming soon
CLI Reference

Command-line tools for scripting and automation.

Coming soon
Home/Introduction

Overview

Who is CloudVantage?

Cloudvantage is a fast, reliable, and scalable cloud provider solutions that help businesses deploy infrastructure with just a few clicks.

CloudVantage provides fast, reliable, and scalable cloud solutions that enable businesses and organisations to deploy servers and infrastructure with just a few clicks. With CloudVantage, you can easily create and manage virtual machines (Dews), networks, storage, and other cloud resources needed to run your applications efficiently.

CloudVantage allows you to scale and customise your servers easily, providing flexibility and efficient resource utilisation. Whether you are running a small web application or a large-scale enterprise system, CloudVantage gives you the tools to deploy and manage infrastructure confidently.

Key concepts

Familiarise yourself with these terms first — they are used throughout the documentation and will help you navigate it more easily.

TermDescription
DewA virtual server (VM) hosted in the cloud. Functions like a traditional machine but is fully managed on the CloudVantage platform. Configurable with different CPU, memory, and storage specifications called flavors. Common uses: hosting applications and websites, running databases, processing data, file storage, and network services.
WalletPrepaid balance used to pay for all resources. Must have sufficient funds before provisioning. Charges are deducted immediately when a resource is created; deleting a resource before the billing period ends triggers a refund for the unused time, returned directly to your wallet.
RegionThe physical location your resources run in. CloudVantage operates a Europe region and a Lagos region, the latter hosted in Nigeria. Both offer the same services, but pricing differs between them. Every project belongs to one region permanently. See Regions.
ProjectAn organisational unit that groups your cloud resources together. Every project belongs to a single region, chosen when it is created and fixed thereafter. Project names must be unique within their region and a description is required. You can create multiple projects to separate different workloads, and move between them using Switch Region on the top bar.
FlavorA server size configuration defining vCPUs, RAM, and disk. CloudVantage offers predefined flavors (e.g., Vantage Nano: 1 vCPU / 1 GB RAM / 30 GB disk) and supports custom flavors for specific workload requirements. Disk size cannot be reduced once allocated — only increased.
SnapshotA point-in-time backup. Server snapshots capture the entire instance state (data, system configuration, current state). Volume snapshots capture a storage volume. Both can be used to restore or create new resources.
Floating IPA publicly routable IP address that can be assigned to a private instance to make it accessible from the internet. Maximum 3 per project. Contact support if you require additional Floating IPs.
Security GroupA virtual firewall that controls inbound (ingress) and outbound (egress) network traffic to and from your servers. When a Dew is provisioned, two groups are automatically created: a default group (allows all outbound) and a group with port 22 (SSH) open.
RouterEnables communication between different networks and to external networks. Automatically connected to the external network upon creation. Interfaces connect routers to private subnets, enabling traffic to flow between subnets and out to the internet.
VolumeA persistent virtual storage device (like a hard drive) that can be attached to a Dew. Data persists independently of the VM's lifecycle — even if the server is restarted or terminated. Must be detached before it can be deleted.
Load BalancerDistributes incoming traffic across multiple backend servers. Consists of a Listener (accepts traffic), a Pool (group of backends), Pool Members (individual servers), and a Health Monitor (checks backend health).
Auto Scaling GroupAutomatically adjusts the number of running VMs based on demand using CPU and RAM thresholds. Integrates with a Load Balancer for traffic distribution and health monitoring.
Certificate ManagerSecure vault for SSL/TLS certificates. Certificates stored here are used by Load Balancers (TERMINATED HTTPS) and Auto Scaling Groups. Certificates cannot be downloaded after upload.

Quick start path

  1. Register at www.cloudvantage.com.ng and verify your email address before signing in.

  2. Projects help you organise and manage your cloud resources. You'll be prompted to create one immediately after signing in for the first time. Every project belongs to a single region, and project names must be unique within their region. A description is required.

  3. CloudVantage uses a prepaid wallet model. A virtual bank account is automatically created for you at registration. You must fund your wallet before provisioning any resources. Charges are deducted from your wallet immediately when a resource is created; unused time is refunded when you delete a resource.

  4. Create a virtual server (Dew) with your chosen operating system, size (flavor), authentication method, and network configuration.

Platform overview

The CloudVantage platform is organised into the following sections, all accessible from the sidebar navigation:

  • Compute — Dews (virtual servers), Server Snapshots, Auto Scaling
  • Storage — Volumes, Volume Snapshots, Volume Backups
  • Networking — Private Networks, Security Groups, Routers, Floating IPs, Load Balancer
  • Security — Certificate Manager
  • Account — Billing, Event Logs, Settings, Support
Home/Getting Started/Creating an Account

Getting Started

Creating an Account

Register on CloudVantage to access your dashboard and begin provisioning resources.

To begin using the CloudVantage platform, you need to create an account at www.cloudvantage.com.ng.

Registration steps

  1. Visit the platform

    Go to www.cloudvantage.com.ng.

  2. Click My Account

    Select My Account from the top navigation menu.

  3. Register or sign in

    Click Create an Account if you're new. Existing users sign in with their email address and password.

  4. Complete registration

    Enter all required details on the registration page and click Create Account.

  5. Verify your email

    A verification email will be sent to your registered address. Open it and confirm your account before signing in.

ℹ️
Email confirmation required

Your account won't be active until you confirm it via the verification email. Check your spam folder if the email doesn't arrive within a few minutes.

Once signed in, you'll be prompted to create a project. Continue to Projects →

Getting Started

Regions

Where your resources physically run — and why Nigerian financial institutions should choose Lagos.

A region is the physical location your cloud resources run in. CloudVantage operates two:

RegionLocation
EuropeCloudVantage's original region
LagosHosted in Nigeria

Every project belongs to exactly one region, and every resource you create — Dews, volumes, buckets, networks, load balancers — belongs to a project. Your choice of region therefore decides where your data physically lives.

Both regions offer the same services. Anything you can build in Europe you can build in Lagos.

Choosing a region

Three things separate them.

  • Data residency. Resources in the Lagos region run on infrastructure located in Nigeria. For Nigerian financial institutions this is usually the deciding factor — see Data residency and the CBN directive.
  • Proximity to your users. If the people and systems using your application are in Nigeria, the Lagos region puts your infrastructure closer to them.
  • Pricing. Prices differ between regions. Check the Pricing page for the region you are deploying into before provisioning — the same tier does not cost the same in both.
⚠️
A project's region is permanent

You choose a project's region when you create it, and it cannot be changed afterwards. To run workloads in a different region, create a new project in that region. Resources cannot be moved between regions — they have to be recreated.

What is shared across regions

 Shared across regions?
Your account and sign-inYes — one account covers every region
Wallet balanceYes — a single wallet funds resources in both regions
Available servicesYes — both regions offer the same services
ProjectsNo — each project belongs to one region
ResourcesNo — servers, volumes, buckets, and networks belong to a project, and so to that project's region
Project namesNo — names must be unique within a region, so the same name can exist in both
Bucket namesNo — each region is a separate namespace
PricingNo — each region has its own prices
ℹ️
Resources in one region can reach resources in another

A Dew in Lagos can talk to a bucket or a database in Europe. Two things to weigh before designing across regions: traffic between regions travels further, so expect higher latency than traffic within one; and if a Lagos workload reads or writes data held in Europe, that data is leaving Nigeria. If you chose Lagos for data residency reasons, keep the regulated data and everything that touches it in Lagos.

Your first projects

New accounts start in the Europe region. When you sign in for the first time you are prompted to create a project there, and a second project is created for you automatically in Lagos, named after your email address.

That Lagos project is ready to use straight away — switch to it whenever you need it. Its name is only a placeholder, so rename it to something meaningful; see Projects.

Seeing all your projects and their regions

  1. Click Manage project

    In the top bar, next to your project name.

  2. Review the project list

    The Manage Projects page lists every project across every region, with its Project Name, Description, and Region.

  3. Filter the list

    Use Region to show one region's projects only, or Project Name to search by name.

  4. Click Manage

    Opens that project.

Switching to another region

  1. Click Switch Region

    In the top bar, beneath your project name. The Available Regions panel opens.

  2. Choose a region

    Select Europe or Lagos. The panel then lists the projects you have in that region.

  3. Choose a project

    Select one to switch to it. Use ← Back to regions to return to the region list.

The top bar then shows the new project name with its region beneath it, and the dashboard shows only that project's resources.

Creating a project in a region

  1. Click Manage project

    In the top bar.

  2. Click + Create New Project

    In the top-right corner of the Manage Projects page.

  3. Select the region

    Choose Europe or Lagos. This is where the project and everything in it will run, and it cannot be changed later.

  4. Enter a name and description

    Both are required. The name must be unique within the region you selected.

  5. Click Create Project

    Switch to it using Switch Region in the top bar.

Data residency and the CBN directive

On 15 June 2026 the Central Bank of Nigeria issued a directive requiring that payment transaction data generated in Nigeria be stored and managed on domestic servers. It takes effect on 1 January 2027 and applies across the payments ecosystem — deposit money banks, microfinance banks, mobile money operators, payment service providers, payment solution service providers, payment terminal service providers, switching and processing companies, and super agents.

The Lagos region runs on infrastructure located in Nigeria, so workloads and data placed there stay in the country.

ℹ️
Preparing ahead of the deadline

If your organisation handles Nigerian payment transaction data, start by reviewing where that data is stored and processed today, which workloads already run in Nigeria, and which rely on infrastructure abroad. Large infrastructure moves take time to plan, validate, and roll out — beginning early keeps the work controlled rather than rushed. Contact support if you would like help with the assessment or the migration.

⚠️
Placing resources in Lagos is one part of compliance, not all of it

Hosting in the Lagos region keeps that data in Nigeria. Whether your organisation meets the directive overall depends on your full architecture — where backups are held, which third-party platforms process regulated data, and how data flows between systems. Review your own data flows end to end, and take your own regulatory advice.

Getting Started

Projects

Isolated workspaces that organise your cloud resources. Every server, volume, and network belongs to a project.

Projects are the primary organisational unit on CloudVantage. Every resource you create — Dews, volumes, networks, load balancers — belongs to a specific project. You can create multiple projects to separate different workloads or environments (e.g., development, staging, production).

Creating your first project

After signing in for the first time, you'll be automatically prompted to create a project before accessing your dashboard. New accounts start in the Europe region, so this first project is created there.

  1. Enter a project name

    Choose a name that is not already in use in this region.

  2. Provide a description

    A description is required. Use it to identify this project's purpose or environment (e.g., "Production web infrastructure").

  3. Click Create Project

    You'll be redirected to your dashboard where you can start provisioning resources.

⚠️
Project names must be unique within a region

If the name is already taken in that region, you'll receive an error. Choose a different, more specific name (e.g., include your company name or environment). The same name can be used again in another region.

ℹ️
You also get a Lagos project

Alongside the project you create, a second project is set up for you automatically in the Lagos region, named after your email address. It is ready to use — switch to it whenever you need it, and rename it to something meaningful. See Regions.

Editing your current project

  1. Click Manage Project

    Select Manage Project from the sidebar.

  2. Update details

    Edit the project name or description as needed.

  3. Save changes

    Click Save to apply the changes.

Creating additional projects

You can create as many projects as you need to separate workloads or environments. Every new project is created in a region, so the steps live with the rest of the region documentation — see Creating a project in a region.

To move between projects, use Switch Region in the top bar: pick the region, then the project. See Switching to another region.

ℹ️
A project belongs to one region

Every project is created in a region — Europe or Lagos — and stays there permanently. This decides where the project's resources physically run, and what they cost. See Regions.

ℹ️
Resources are project-scoped

Resources created in one project are not visible or accessible from other projects. This isolation makes projects ideal for separating environments like development and production.

Home/Getting Started/Funding Your Wallet

Getting Started

Funding Your Wallet

CloudVantage uses a prepaid wallet model. You must have sufficient balance before provisioning any resource.

When you register, a virtual bank account is automatically created for you. All resource costs are deducted from your wallet balance immediately upon provisioning. If you delete a resource before the billing period ends, the unused portion is refunded directly to your wallet.

How to fund your wallet

  1. Click Fund Wallet

    Click the Fund Wallet button in the top-right corner of your dashboard.

  2. View your virtual account details

    Your virtual bank account number and other details will be displayed on screen.

  3. Copy the account details

    Copy the account number and bank details for your transfer.

  4. Make a payment

    Transfer the desired amount using the provided account details. Once payment is confirmed, the funds will reflect in your CloudVantage wallet balance.

ℹ️
Keep your wallet funded

If your balance runs low or reaches zero, resource provisioning and Auto Scaling events may be interrupted. Monitor your balance regularly from the Fund Wallet button.

🚫
Non-payment will result in server shutdown and permanent deletion

When your billing period ends, you have a 15-day grace period to make payment. If payment is not received within 15 days, your server will be shut down. If payment is still not made after a further 45 days, your server will be permanently deleted and decommissioned — all data will be lost and cannot be recovered. Ensure your wallet is funded before your billing period ends to avoid any interruption or data loss.

Switching billing currency

CloudVantage allows you to switch your billing currency between Naira (₦) and US Dollars ($).

  1. Click Fund Wallet

    In the top-right corner of your dashboard.

  2. Click Currency Settings

    Click Currency Settings below the account information.

  3. Switch currency

    Select Switch to Dollar to change billing from Naira to USD, or the reverse to switch back.

ℹ️
Also accessible from Settings

Currency preferences can also be changed at cloudvantage.com.ng/settings.

Home/Compute/Dews (Servers)

Compute

Dews (Servers)

Virtual servers that provide the computing resources required to run applications and services on CloudVantage.

Dews function like traditional machines but are hosted in the cloud. They can be configured with different amounts of CPU, memory, and storage depending on your workload requirements. CloudVantage allows you to scale and customise your servers easily, providing flexibility and efficient resource utilisation.

Common use cases

  • Hosting applications and websites
  • Running databases
  • Processing and transforming data
  • File storage and backup targets
  • Network services (DNS, VPN endpoints, proxies)
  • Continuous integration / build servers

3.1 Provisioning a Dew

ℹ️
Pay-as-you-go billing

When you provision a Dew, the full amount for the selected billing term is deducted from your wallet immediately. Ensure sufficient funds are available before proceeding.

🚫
Missed payments will lead to shutdown and permanent data loss

When your billing period expires, you have a 15-day grace period to renew. After 15 days without payment, your server is shut down. After a further 45 days without payment, your server is permanently deleted and all data is lost with no possibility of recovery. Always ensure your wallet has sufficient funds before your billing period ends.

  1. Navigate to your Dashboard

    Click Resources, then select Create Dew.

  2. Select a plan

    You will see a list of available server plans (flavors) with their specifications and pricing. Example plans include:

    • Vantage Nano — 1 vCPU, 1 GB RAM, 30 GB Disk
    • Additional flavors with increasing CPU/RAM/disk are available
    • Custom flavors can be created to match specific requirements

    Select your desired plan and click Configure to proceed.

  3. Configure your server

    Set the following options:

    • Term Length — select your preferred billing period (monthly or yearly)
    • Operating System — choose your OS and version: Ubuntu, CentOS, Debian, Windows, and others. Example: Ubuntu 22.04 LTS
    • Instance Name — enter a name to identify this Dew within your project
  4. Choose an authentication method

    See Authentication Methods below.

  5. Configure the network

    Select one of the following options:

    OptionAccessibilityWhen to use
    Public NetworkAccessible from the internet — server receives a public IP addressWeb servers, APIs, or any service that needs to be reached externally
    Private NetworkInternal only — not reachable from the internetDatabases, backend services, or instances you want to keep off the public internet. A private network must already exist in your project. You can assign a Floating IP later if external access is needed.

    If you choose Private Network, pick the network from the first dropdown, then choose the subnet to provision the Dew in from the Select Subnet dropdown beneath it. The Dew takes its private IP address from that subnet's range, so pick the subnet that fits its role. See Managing Subnets.

  6. Review and provision

    Review the server configuration summary and price. Ensure your wallet has sufficient funds, then click Provision. Your new Dew will be created shortly.

Authentication methods

1. SSH Key Authentication (Recommended)

Select an existing keypair or create a new one. The keypair will be downloaded as a .pem file. Keep this file secure — it is required to access your server and cannot be retrieved from the platform again.

  • Select from Existing Keypairs — click "Select from Existing Keypairs" and choose from the dropdown
  • Create a New Keypair — click "Create New Keypair", enter a name, click "Create Key". The .pem file downloads automatically.

2. Password Authentication

Enter and confirm a password. The login username will be automatically generated for you.

🚫
Your keypair is generated once — you cannot get it again

When a new SSH keypair is created, the .pem file is available for download at that moment only. It is never stored on the platform and cannot be recovered if lost. Before proceeding to the next step, confirm you have downloaded and saved the file in a secure location. If you lose it, you will be unable to SSH into the server and will need to rebuild it.

3.2 Viewing Dew Information

To view details of any provisioned Dew:

  1. Locate the Dew on your Dashboard
  2. Click the Dew name

    A panel will appear displaying: public or private IP address, flavor specification, operating system, keypair used for authentication, and network configuration.

3.3 Monitoring & Metrics

You can monitor the performance of each provisioned Dew through the metrics dashboard. The platform provides visual graphs for the following metrics:

CPU Usage
Processor utilisation %
Memory Usage
RAM consumption %
Disk Usage
Storage consumption %
Egress Usage
Outbound traffic

You can filter metrics by selecting a start and end date to analyse usage within a specific period.

  1. Locate the instance on your dashboard
  2. Click Show Metrics

    Click Show Metrics next to the instance.

  3. View and filter

    The metrics page will display graphs for CPU, memory, disk, and egress. Use the date range selectors to analyse a specific period.

3.4 Alarms

Alarms notify you by email when resource usage exceeds defined thresholds. You can configure CPU, RAM, and disk thresholds independently and control how often notification emails are sent.

ℹ️
One alarm per instance

You can create only one alarm per Dew instance. Configure all thresholds within that single alarm configuration.

Creating an alarm

  1. Click Show Metrics

    Locate the instance and click Show Metrics.

  2. Select Alarming

    On the Metrics page, click the Alarming tab.

  3. Click New Alarm and configure
    • CPU Threshold (%) — trigger level for CPU usage alerts
    • RAM Threshold (%) — trigger level for memory usage alerts
    • Disk Threshold (%) — trigger level for disk usage alerts
    • Notification Frequency — how often alert emails are sent while the threshold is breached
    • Maximum Emails Per Day — cap on daily alert emails to prevent inbox flooding
    • Statistic Type — Average, Maximum, or Minimum measurement used for threshold evaluation
    • Email Recipient — primary alert email address
    • CC Emails — optional additional recipients

Updating an alarm

  1. Click Show Metrics next to the instance
  2. Select Alarming → Edit Alarm

    Locate the alarm and click Edit Alarm.

  3. Update and save

    Update the required fields and click Save.

Deleting an alarm

  1. Click Show Metrics next to the instance
  2. Select Alarming → Delete Alarm
  3. Confirm

    The instance will no longer send alert notifications.

3.5 Resizing a Dew

Resizing a Dew allows you to adjust the resources allocated to it (vertical scaling). You can increase or decrease vCPUs and RAM, but disk size cannot be reduced once allocated — only increased.

OptionDescription
Resize to a Preconfigured FlavorChoose from a predefined list of flavors offering different CPU/RAM/disk combinations.
Resize to a Custom FlavorManually specify vCPU count and RAM. Disk size can only be increased, not decreased.
  1. Open Manage

    Locate the Dew and click Manage next to the instance.

  2. Select Resize

    Click Resize Instance to open the resize configuration page.

  3. Select option and configure

    Select your preferred resizing option (preconfigured or custom) and set the desired resources.

  4. Click Initiate Resize

    The platform will begin the resize operation.

  5. Confirm or stop

    A confirmation dialog appears. Click Confirm Resize to apply or Stop Resize to revert.

⚠️
Do not refresh during resize

Do not refresh the page until you have either confirmed or cancelled the resize operation. Refreshing prematurely may leave the Dew in an intermediate state.

3.6 Shutting Down & Restarting a Dew

You can shut down a running Dew at any time from the dashboard. A shut-down Dew becomes inactive but is not deleted — it continues to exist in your project and can be restarted whenever needed.

Shutting down a Dew

  1. Locate the Dew on your dashboard
  2. Click Manage next to the instance
  3. Select Shutdown Server

    The server will power off and its status will change to Inactive.

Restarting a Dew

  1. Locate the inactive Dew on your dashboard
  2. Click Manage next to the instance
  3. Select Restart Server

    The server will boot back up and its status will return to Active.

3.7 Deleting a Dew

Deleting a Dew permanently removes it from your project. Any unused time remaining in the billing period will be refunded to your wallet.

🚫
Deletion is permanent and cannot be undone

Once a Dew is deleted, it cannot be recovered. If you need to preserve its state, create a snapshot before deleting.

  1. Locate the Dew on your dashboard
  2. Click Manage next to the instance
  3. Select Delete Server
  4. Confirm the action

    A confirmation prompt will appear. Confirm to permanently delete the server.

Home/Compute/Server Snapshots

Compute

Server Snapshots

A point-in-time backup of an entire virtual machine — capturing its data, system configuration, and current state.

Snapshots allow you to restore an instance in the event of data loss, a system failure, or issues arising from an update. The snapshot captures the full state of the Dew at the moment it is taken, including all files, installed packages, configuration, and running state.

Common uses for server snapshots:

  • Pre-upgrade checkpoints — take a snapshot before applying major updates or changes
  • Disaster recovery — restore an instance to a known-good state after failure
  • Cloning — launch multiple identical servers from a single snapshot template
  • Migration — move a server configuration to a new instance with different resources

4.1 Creating a Server Snapshot

  1. Locate the instance

    Find the Dew you want to snapshot on your dashboard.

  2. Open Manage

    Click the Manage icon next to the instance.

  3. Select Create Snapshot
  4. Enter a name

    Enter a descriptive name for the snapshot (e.g., prod-web-pre-upgrade-2025-01).

  5. Choose a payment option

    Select monthly or yearly billing for snapshot storage.

  6. Click Create Snapshot

    Snapshot creation may take several minutes depending on disk size.

4.2 Viewing Snapshots

Navigate to Server Snapshots on the sidebar. This page displays a list of all snapshots created for your Dews, showing: snapshot name, OS Distro, creation date, size, and status.

4.3 Managing Snapshots

Click Manage Snapshot next to any snapshot. Available actions include:

  • Create a Volume from Snapshot — extract the snapshot's data as a new volume
  • Edit Snapshot — update the name or description
  • Launch a New Dew from Snapshot — spin up a new server using this snapshot as its disk image
  • Delete Snapshot — permanently remove the snapshot (irreversible)

Launching a Dew from a Snapshot

  1. Go to Server Snapshots from the sidebar
  2. Click Manage Snapshot → Launch

    Select Launch next to the snapshot you want to use.

  3. Proceed through the Dew creation process

    Configure the new Dew as needed (flavor, authentication, network) and provision it.

Creating a Volume from a Snapshot

  1. Click Server Snapshots on the sidebar
  2. Click Manage Snapshot → Create Volume from Server Snapshot
  3. Provide details

    Enter Volume Name, Volume Size (cannot be smaller than the snapshot size), Payment Option, and an optional Description.

  4. Click Create Volume

    The new volume will appear on the Volumes page, ready to attach to any instance.

Deleting a Snapshot

  1. Navigate to Server Snapshots
  2. Click Manage Snapshot → Delete Snapshot
  3. Confirm

    Once deleted, the snapshot is permanently removed and cannot be recovered. Ensure you no longer need it before proceeding.

Home/Compute/Auto Scaling

Compute

Auto Scaling

Automatically adjust the number of running VMs based on demand — scaling up during traffic spikes and down during quiet periods.

Auto Scaling automatically adjusts the number of virtual machines running your application based on demand. Instead of manually provisioning or removing servers, the platform continuously monitors resource usage and automatically increases or decreases instances as needed.

  • High availability — maintain service during periods of increased traffic without manual intervention
  • Cost efficiency — automatically scale down during low-demand periods to avoid paying for idle capacity
  • Reduced operational overhead — eliminate the need to manually monitor and adjust server counts

5.1 Infrastructure & Networking

These settings form the template for every server the Auto Scaling Group launches. All instances in the group are created from the same configuration.

SettingDescription
ImageA snapshot of an existing instance containing your fully configured application. Ensure your application is running correctly before taking the snapshot. This becomes the disk image for all instances launched by the group.
FlavorVM size (CPU, memory, disk). All instances in the group use the same flavor. Choose a flavor sized for your application's peak load requirements.
Key PairSSH key pair used to access all instances created by the Auto Scaling Group.
VM NameBase name for instances. The platform appends unique identifiers automatically — e.g., web-server becomes web-server-01, web-server-02.
NetworkPrivate network where instances will be deployed. All instances join this network.
SubnetSubnet within the private network. Ensure it has enough available IP addresses to accommodate your maximum instance count.
Security GroupsSecurity groups defining network access. Ensure required ports are open: SSH (22), HTTP (80), HTTPS (443), and any application-specific ports.
Application PortPort your application listens on (e.g., 80, 443, 8080). Used by the Load Balancer when adding pool members and by Health Monitoring to check instance status.

5.2 Scaling & Capacity Management

These settings control when and how the Auto Scaling Group adds or removes instances in response to demand.

SettingDescription
Minimum SizeThe minimum number of instances that must always remain running. The system never scales below this number. Set to at least 1 (or 2 for high availability).
Maximum SizeMaximum number of instances that can run simultaneously. Prevents uncontrolled scaling that could exhaust your wallet balance.
Desired CapacityInitial number of instances launched when the Auto Scaling Group is first created. The group scales up or down from this starting point.
Cooldown PeriodHow long (seconds) the system waits after a scaling action before evaluating whether to scale again. Prevents rapid repeated scaling ("flapping"). Typical value: 300 seconds (5 minutes).

Scaling policies

SettingDescription
Scale Up AdjustmentNumber of instances added when a scale-up threshold is triggered. Set to 1 for gradual scaling, higher for faster response to traffic spikes.
Scale Down AdjustmentNumber of instances removed when a scale-down condition is met. Lower values (e.g., 1) are safer and reduce the risk of over-aggressive scale-down.
Scaling CooldownStabilisation period between scaling actions. After adding or removing instances, the system waits this duration before re-evaluating.

CPU-based scaling rules

SettingDescription
CPU Scale Up Threshold (%)Average CPU usage % that triggers adding more instances (e.g., 70%). When average CPU across all running instances exceeds this value for the configured evaluation periods, a scale-up action is triggered.
CPU Scale Down Threshold (%)Average CPU usage % below which instances are removed (e.g., 30%). When usage consistently stays below this value, a scale-down action is triggered.
CPU Evaluation PeriodsNumber of consecutive monitoring intervals the threshold must be exceeded before scaling occurs. Higher values prevent premature scaling from temporary spikes — e.g., value of 3 means threshold must be exceeded in 3 consecutive checks.

Memory (RAM) based scaling rules

SettingDescription
RAM Scale Up Threshold (%)Triggers a scale-up when average memory usage across instances exceeds this percentage.
RAM Scale Down Threshold (%)Triggers a scale-down when average memory usage falls below this percentage.
RAM Evaluation PeriodsNumber of consecutive checks required before a memory-based scaling action is triggered. Prevents scaling due to temporary memory spikes.

5.3 Traffic Management & Health Monitoring

The Auto Scaling Group integrates with a Load Balancer to distribute traffic across instances and verify their health.

SettingDescription
Listener ProtocolHow users connect — HTTP, HTTPS, or TCP. HTTPS requires an SSL certificate in Certificate Manager first.
Listener PortPort exposed to users (e.g., 80 for HTTP, 443 for HTTPS).
Pool ProtocolProtocol between Load Balancer and backend instances. Default is HTTP — the LB handles SSL termination and forwards plain HTTP to backends.
Load Balancing AlgorithmHow traffic is distributed: Round Robin (evenly in sequence) or Least Connections (to the instance with fewest active connections).
Health Check TypeHTTP — sends a request to a URL path and checks the response code. TCP — attempts a connection on the application port.
Delay (seconds)Time between health check attempts. Lower values detect failures faster but generate more traffic.
Timeout (seconds)Max time to wait for a health check response before marking the check as failed. Must be less than Delay.
RetriesNumber of consecutive failed checks before an instance is marked unhealthy and removed from the pool.
Health Check URL PathEndpoint for HTTP checks (e.g., /health, /status, /ping). Must return a successful HTTP response code.
Expected HTTP CodesHTTP response codes considered healthy (e.g., 200, 200-299).

5.4 Editing an Auto Scaling Stack

The following settings are locked after creation. If you need to change these, you must delete and recreate the Auto Scaling Group:

  • Image (snapshot template)
  • Flavor (VM size)
  • Key Pair (SSH access)
  • Network and Subnet
  • Security Groups

All other parameters — scaling thresholds, capacity limits, cooldown periods, health check settings, and traffic configuration — can be modified after creation as your workload requirements change.

5.5 Pricing & Billing

Resources created within an Auto Scaling Group are billed the same way as standalone resources. Each instance carries two charges: the instance itself, and its membership in the load balancer's pool. A group with a maximum size of 5 can therefore reach 5 instances and 5 pool memberships at full scale — 10 billed items, not 5.

⚠️
Fund your wallet for the group's maximum size, not just its current size

Size your wallet balance against the group's maximum instance count, not the number of instances currently running — a quiet group can scale up suddenly under load.

If your balance cannot cover a scale-up when one is triggered, that scale-up is skipped: the group stays at its current size and is re-evaluated at the next check. Instances already running are never removed for this reason — insufficient funds blocks new capacity from being added, it does not take away capacity you already have. Fund your wallet to restore normal scaling.

Home/Storage/Volumes

Storage

Volumes

Virtual storage devices that function like hard drives attached to a cloud VM — persisting data independently of the VM's lifecycle.

A Volume is a persistent block storage device that can be attached to a Dew. Unlike the Dew's built-in disk, a Volume exists independently — data persists even if the server is restarted or terminated. Volumes can be detached from one Dew and reattached to another.

6.1 Creating a Volume

  1. Click Volumes on the sidebar

    Select Volumes from the dropdown menu.

  2. Click Create Volume

    In the top-right corner of the Volumes page.

  3. Enter details

    Enter the Name, Size (in GB), and Payment Option (Monthly or Yearly). Review the estimated cost before confirming.

  4. Click Create Volume

    Ensure your wallet has sufficient funds before proceeding.

6.2 Attaching and Detaching Volumes

Attaching a volume to an instance

  1. Navigate to Volumes from the sidebar
  2. Locate the volume and click Manage Volume
  3. Select Attach to Instance

    Choose the target instance from the dropdown and click Attach. The volume will appear as a new block device on the server (e.g., /dev/vdb).

Detaching a volume from an instance

  1. Navigate to Volumes from the sidebar
  2. Click Manage Volume for the volume
  3. Select Detach from Instance

    Confirm the detachment. The volume will move to "Available" status and can be attached to a different instance or deleted.

6.3 Deleting a Volume

  1. Navigate to Volumes from the sidebar
  2. Locate the volume, click Manage Volume, then select Delete Volume
  3. Confirm the action
⚠️
Detach before deleting

A volume must be detached from any instance (status must be Available) before it can be deleted. Attempting to delete an in-use volume will fail.

6.4 Volume Snapshots

A Volume Snapshot is a point-in-time copy of a storage volume. It preserves the exact state of the volume's data at the moment it is taken, and can be used to create a new volume from that saved state.

ℹ️
Volume must be Available

Volume snapshots can only be created when the volume status is Available. If the volume is currently In Use (attached to an instance), you must detach it first.

Creating a volume snapshot

  1. Navigate to Volumes → Volumes from the sidebar
  2. Locate the volume, click Manage Volume → Create Volume Snapshot
  3. Enter details

    Enter a Snapshot Name, Description, and Payment Option. The size is auto-populated from the source volume.

  4. Click Create Volume Snapshot

    The snapshot will appear on the Volume Snapshots page.

Editing a volume snapshot

  1. Navigate to Volumes → Volume Snapshots from the sidebar
  2. Click Manage Volume Snapshot → Edit Volume Snapshot
  3. Update Name or Description and click Update Snapshot

Creating a new volume from a snapshot

  1. Navigate to Volumes → Volume Snapshots
  2. Click Manage Volume Snapshot → Create Volume
  3. Fill in details

    Enter Volume Name, Size (must be ≥ snapshot size), Billing Plan, and optional Description.

  4. Click Create Volume

    The new volume will be listed on the Volumes page, ready to attach.

Deleting a volume snapshot

  1. Navigate to Volumes → Volume Snapshots
  2. Click Manage Volume Snapshot → Delete Volume Snapshot and confirm

6.5 Volume Backups

A Volume Backup is a secure, independent copy of your volume stored separately from your running system. Unlike snapshots (which are tied to the volume's lifecycle), backups exist independently — making them suitable for longer-term data protection and disaster recovery.

ℹ️
Backups work while attached

Unlike snapshots, volume backups can be created while the volume is attached and the server is running. You do not need to detach the volume first.

Creating a volume backup

  1. Navigate to Volumes → Volumes from the sidebar
  2. Locate the volume, click Manage Volume → Create Volume Backup
  3. Enter details

    Enter a Backup Name, Description, and Payment Option. The size is auto-populated.

  4. Click Create Volume Backup

    The backup will appear on the Volume Backups page.

Restoring a volume from a backup

  1. Navigate to Volumes → Volume Backups
  2. Click Manage Backup → Restore Backup
  3. Choose destination
    • New Volume — enter a name for the new volume to be created from the backup
    • Existing Volume — select a volume from the dropdown to overwrite it with the backup data

    Click Restore to confirm.

Deleting a volume backup

  1. Navigate to Volumes → Volume Backups
  2. Click Manage Volume Backup → Delete Volume Backup and confirm
Home/Storage/Object Storage

Storage

Object Storage

Bucket-based storage for files, documents, and media — reachable over the network and independent of any server.

Object Storage lets you keep files in buckets rather than on a disk attached to a server. Where a Volume behaves like a hard drive bolted to a single Dew, a bucket is reached over the network and belongs to your project rather than to any one machine. That makes it the right choice for documents, images, backups, static website assets, and anything several servers or people need to reach.

Buckets are managed from the dashboard — upload, browse, preview, and download files without touching a command line. To read and write objects from your own application, see Developer API.

To get started, open Manage Object Storages from the Create panel on your dashboard.

ℹ️
Buckets belong to a region

A bucket lives in the region selected in the top bar. Switching regions shows a different set of buckets, and pricing differs between regions. Create the bucket in the same region as the servers that will use it.

7.1 Storage tiers and pricing

Every bucket sits on a tier, and the tier sets its capacity. Cost depends on the tier and on the region the bucket is created in — check the Pricing page for current figures before creating a bucket, rather than relying on a number written down elsewhere.

TierCapacity
Basic150 GB
Standard300 GB
Advanced500 GB

You pay for the tier, not for what you actually store — a Basic bucket holding 2 GB costs the same as one holding 140 GB. The bucket details page shows both figures: Size of the Bucket is the capacity your tier provides, and The local size used is what you are currently consuming.

⚠️
Fund your wallet first

Creating a bucket draws on your wallet balance like any other resource. If the balance will not cover the first month, creation fails. See Funding Your Wallet.

7.2 Creating a bucket

  1. Open Manage Object Storages

    From the Create panel on your dashboard, select Manage Object Storages.

  2. Click New Bucket

    In the top-right corner of the Bucket Storages page.

  3. Enter a bucket name

    Between 1 and 256 characters. Names are case-sensitive and cannot contain a forward slash (/).

  4. Select a tier

    Choose Basic, Standard, or Advanced. The tier can be changed later.

  5. Set the visibility

    Buckets are Public by default. Tick Private if the contents should not be reachable without authentication.

  6. Click Create

    The bucket appears as a card on the Bucket Storages page, with its visibility shown as a badge.

ℹ️
Bucket names are unique per region, not per project

A bucket name must be unique across your entire account within a single region. If you already have a bucket named reports in one Europe project, no other Europe project on your account can use that name. You can create a second reports bucket in Lagos, because each region is a separate namespace.

⚠️
Bucket names are permanent

A bucket cannot be renamed after it is created. If you need a different name, create a new bucket, move the files across, and delete the old one. Choose the name with that in mind.

⚠️
Public is the default

A new bucket is public unless you tick Private. Visibility governs whether objects can be fetched through the API without authentication — it changes nothing in the dashboard, where you are always signed in. Set a bucket to Private before uploading anything confidential, rather than uploading first and changing it afterwards.

7.3 Finding a bucket

The Bucket Storages page lists every bucket in the current region as a card showing its name and visibility badge. Use Search buckets… at the top of the page to filter by name as the list grows.

Each card carries a ⋮ menu with three actions:

  • Edit — change the tier
  • Details — open the bucket and work with its contents
  • Delete — remove the bucket

7.4 Changing a bucket's tier

Move a bucket up or down a tier as its storage needs change.

  1. Open the ⋮ menu on the bucket card and select Edit
  2. Select the new tier

    Choose Basic, Standard, or Advanced.

  3. Click Save
ℹ️
How an upgrade is billed

You are charged the full price of the new tier immediately, and refunded the unused portion of the old one on a pro-rata basis, returned to your wallet. Upgrading from Basic to Standard halfway through the month, for example, charges the full Standard price and refunds roughly half of what you had already paid for Basic that month. See the Pricing page for current tier prices.

7.5 Bucket details

Select Details from the ⋮ menu to open a bucket. The panel at the top summarises it:

FieldMeaning
NameThe bucket name
Tier DetailsThe tier the bucket is on — Basic, Standard, or Advanced
VisibilityPublic or Private
Size of the BucketTotal capacity provided by the tier
ObjectsNumber of files currently stored
VersioningNot available — shows N/A for every bucket
The local size usedHow much of the capacity is in use
CreatedWhen the bucket was created

Below the summary is the object list, showing Name, Size, Type, and Last Modified for every file, with Download and Delete on each row. Search files… filters the list by name.

⚠️
Versioning is not available

Object Storage does not retain previous versions of a file. Uploading a file with the same name as an existing one in the same folder replaces it, and the earlier copy cannot be recovered. Keep your own copy of anything you cannot afford to lose.

7.6 Uploading files

  1. Open the bucket

    From the ⋮ menu, select Details.

  2. Click Add File

    In the top-right corner of the bucket page.

  3. Select a folder

    Choose a destination folder from the dropdown, or leave it unset to upload to the top level of the bucket.

  4. Choose the files

    Click Change files and select one or more files from your computer. The panel lists everything you have selected.

  5. Click Upload

    The files appear in the object list and the Objects count increases.

Upload limits

TypeMaximum sizeAccepted formats
Video100 MB.mp4, .mov, .avi, or any video/* content type
Images and PDFs20 MB.jpg, .jpeg, .png, .gif, .webp, .svg, .pdf, or any image/* content type
All other files100 MBArchives, documents, and data files such as .zip, .csv, .docx, and .sql

Requests are limited to 70 per minute per account, which applies to the dashboard and the API together.

ℹ️
Images and PDFs have the tightest limit

The 20 MB cap on images and PDFs is lower than the 100 MB allowed for everything else, so a large scanned PDF can be rejected where a bigger archive would upload without complaint. If a PDF is too large, compress it, or upload it inside a .zip.

7.7 Working with folders

Folders group objects inside a bucket, the way directories organise files on your computer.

Creating a folder

  1. Open the bucket

    From the ⋮ menu, select Details.

  2. Click Add Folder
  3. Enter a folder name and click Create Folder

Uploading into a folder

Click Add File, then pick the folder from the Select a folder dropdown before choosing your files. Leaving the dropdown unset uploads to the top level of the bucket instead.

7.8 Previewing and downloading

Click a file name in the object list to open a preview panel — useful for checking a PDF or an image without pulling it down first. The preview panel has its own Download button, and every row in the object list has one as well. Either saves the file to your computer unchanged.

ℹ️
Downloading is the only sharing route in the dashboard

There is no copy-link action for objects yet. To pass a file to someone from the dashboard, download it and send it on. Applications can fetch objects directly through the API.

7.9 Deleting files and folders

To delete a file, click Delete on its row in the object list and confirm.

To delete a folder, first delete every file inside it, then delete the folder itself.

⚠️
Empty the folder first

A folder that still contains files cannot be deleted. Remove its contents, then delete the folder.

🚫
Deletion is permanent

Deleted objects cannot be recovered, and there is no versioning to fall back on. Download anything you may need again before removing it.

7.10 Deleting a bucket

  1. Empty the bucket

    Delete every file, then every folder. See Deleting files and folders.

  2. Open the ⋮ menu on the bucket card and select Delete
  3. Confirm the action

    Billing for the bucket stops as soon as it is deleted.

⚠️
The bucket must be empty

A bucket that still contains objects cannot be deleted. Clear its contents first.

7.11 Billing and the grace period

A bucket is billed monthly at its tier price for the region it was created in, charged to your wallet. If your wallet cannot cover the renewal, the bucket moves through four stages, all counted from the original due date:

WhenStateWhat you can do
Payment dueGrace period — day 0–7Upload, download, and use the bucket normally
Day 7Read-onlyDownload and browse existing objects. Uploads, edits, and new folders are blocked
Day 30InaccessibleThe bucket and its objects can no longer be browsed or downloaded. Nothing is deleted yet
Day 90DeletedThe bucket and its contents are permanently removed and cannot be recovered
🚫
Fund your wallet within 30 days to keep your data downloadable

You have 7 days to pay before the bucket goes read-only. Read-only lasts until day 30 — while it does, your data is still yours to download. After day 30 the bucket becomes inaccessible: you can no longer reach the data at all, even though it has not yet been deleted. The bucket and everything in it are permanently removed on day 90. Once a bucket passes day 30, getting your data back means paying before day 90 and asking support to restore access — it is not something you can do yourself from the dashboard.

7.12 Developer API

Everything above describes the dashboard. To read and write objects from your own code — an application storing user uploads, a scheduled backup job, a deployment pipeline — use the Object Storage API instead.

The full API reference covers authentication, endpoints, and request formats:

buckets.cloudvantage.com.ng/bucketaas/docs

Buckets created in the dashboard are reachable through the API, and buckets created through the API appear in the dashboard. The same limit of 70 requests per minute per account applies; unauthenticated routes are additionally limited per source IP.

Home/Networking/Private Networks

Networking

Private Networks

Allows your servers to communicate securely with each other within your cloud environment without exposing traffic to the public internet.

A Private Network allows your servers to communicate securely with each other within your cloud environment. Traffic between servers on the same private network stays internal — it is never exposed to the public internet. You can attach the subnets within a private network to a router's interface and assign the instances within the subnet floating IPs when external access is needed.

Creating a Private Network

  1. Click Networks on the sidebar → Private Networks
  2. Click Create Network

    In the top-right corner.

  3. Enter a Network Name

    Choose a name that identifies this network's purpose (e.g., prod-network, backend-db-net).

  4. Enter the network CIDR

    Required. The overall IP address range for the network, in CIDR notation (e.g., 192.168.0.0/16). Every subnet you create in this network must fall inside this range, and the CIDR cannot be changed after the network is created. Use RFC 1918 private ranges: 10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16.

  5. Add a Description (optional)
  6. Click Create Network

The new network appears in the Private Networks list with its CIDR. It has no subnets yet. A subnet is what gives your servers their addresses, so create one next — see Managing Subnets.

⚠️
The network CIDR cannot be changed

Every subnet in a network must fall inside its CIDR, so choose a range large enough for all the subnets you expect to create. If you outgrow it, the only way to get a bigger range is to create a new network. If you plan to connect this network to another one — over a VPN, for example — make sure the two ranges do not overlap. See Before you start on the VPN page.

The Private Networks list

The Private Networks page lists every network in the project:

ColumnWhat it shows
Network nameThe name you gave the network
CIDRThe network's overall address range
Subnets AssociatedThe subnets created in this network
SharedWhether the network is shared with other projects. Always No for a private network
ExternalWhether the network is an external, internet-facing network. Always No for a private network
StatusThe network's current state. ACTIVE means it is ready to use
Admin StateUP when the network is enabled
ActionsManage opens the actions for that network: view details, edit, create a subnet, or delete

Viewing Network Details

  1. Click Networks → Private Networks
  2. Click Manage Network → View Network Details

    Displays the network's configuration, attached subnets, and connected resources.

Editing a Private Network

Only the network name and description can be changed after creation. The CIDR is fixed.

  1. Go to Networks → Private Networks
  2. Click Manage Network → Edit Network
  3. Update the network name and/or description and click Update Network

Managing Subnets

A subnet defines the IP address range that servers within a private network can use. A network can have several subnets, as long as each one falls inside the network's CIDR. The subnet uses CIDR notation to define its IP range.

ℹ️
Subnets live inside the network's CIDR

Each subnet's range must fall within the CIDR you set when you created the network — the Create Subnet form shows that range beside the Network Address field — and subnets in the same network cannot overlap each other. For example, a network with CIDR 192.168.0.0/16 could hold 192.168.10.0/24 for application servers and 192.168.20.0/24 for databases.

A subnet's CIDR and IP version cannot be changed after creation, so plan the ranges before you create them.

Creating a Subnet

  1. Go to Networks → Private Networks

    Locate the network and click Manage Network → Create Subnet.

  2. Fill in the Subnet tab
    • Subnet Name (required) — a descriptive label
    • Network Address (required) — the subnet's range in CIDR notation (e.g., 192.168.10.0/24). It must fall inside the network's CIDR, which is shown beside the field label.
    • IP Version — IPv4 by default
  3. Click Next

    Opens the Subnet Details tab, where the advanced settings live.

  4. Review the Subnet Details tab
    • DHCP — enable automatic IP assignment for connected instances. Enabled by default. Recommended for most use cases.
    • Allocation Pools — optionally restrict which IPs within the range are auto-assigned via DHCP
    • DNS Name Servers — optionally specify DNS servers (e.g., 8.8.8.8, 8.8.4.4)
  5. Click Create Subnet

Editing a Subnet

Only the subnet name can be modified after creation. To change the CIDR, IP version, or other core settings, delete and recreate the subnet.

  1. Go to Networks → Private Networks → Manage Network → View Network Details → Subnets tab
  2. Click Manage Subnet → Edit Subnet

    Update the name and save.

Deleting a Subnet

  1. Navigate to Networks → Private Networks → Manage Network → View Network Details → Subnets tab
  2. Click Manage Subnet → Delete Subnet and confirm

Deleting a Private Network

⚠️
Disconnect all instances first

Before deleting a network, ensure no instances or ports are connected to it. Attempting to delete a network with active connections will fail. The same applies to deleting a subnet.

  1. Go to Networks → Private Networks

    Click Manage Network → Delete Network and confirm.

Home/Networking/Security Groups

Networking

Security Groups

A virtual firewall for servers, controlling both inbound and outbound network traffic using rules you define.

A Security Group acts as a virtual firewall for your servers, controlling which network traffic is allowed to reach them (ingress) and which traffic they are allowed to send out (egress). Rules within a security group specify the protocol, port range, and source or destination of allowed traffic.

When a Dew is provisioned, two security groups are automatically created:

  • The default security group — allows all outbound (egress) traffic
  • A server-specific group with port 22 (SSH) open for remote access
ℹ️
Default group cannot be deleted

The default security group cannot be deleted, but it can be detached from instances. You can create additional security groups and attach them as needed. A Dew can have multiple security groups attached simultaneously — rules from all attached groups are combined.

Creating a Security Group

  1. Click the Networks tab → Security Groups
  2. Click Create Security Group
  3. Enter a name and description, then click Create Security Group

    Use descriptive names that identify the group's purpose (e.g., web-servers, database-access, allow-https-only).

Creating a Security Group Rule

  1. Click Manage Rule next to the security group → Add New Rule
  2. Configure the rule
    • Rule Type — predefined rules (SSH, HTTP, HTTPS, etc.) auto-fill the port and protocol. Select Custom TCP or Custom UDP to specify your own values.
    • Direction — Ingress controls inbound traffic; Egress controls outbound traffic.
    • EtherType — select IPv4 for most use cases.
    • Port Range — auto-fills based on rule type, or specify manually. Enter a single port (e.g., 8080) or a range (e.g., 8000-8999).
    • Remote — source (ingress) or destination (egress). This can be specified as:
    • CIDR block — e.g., 0.0.0.0/0 for anywhere, 203.0.113.0/24 for a range, 192.168.1.50/32 for a single IP
    • Security Group — restrict to traffic from instances in another security group
    • Description — optional label to document the rule's purpose
  3. Click Submit

Attaching or Detaching Security Groups

  1. Click Manage Rules next to the security group
  2. Choose Attach to Instance or Detach from Instance

    Select the target instance from the dropdown and attach or detach.

Deleting Security Groups and Rules

To delete a rule, click the delete icon next to it and confirm. To delete an entire security group, first ensure it is not attached to any Dew.

Common rules reference

Rule TypeProtocolPortDirectionSourceUse Case
SSHTCP22IngressYour IP / 0.0.0.0/0Remote server access via SSH
HTTPTCP80Ingress0.0.0.0/0Public web traffic
HTTPSTCP443Ingress0.0.0.0/0Secure public web traffic
Custom TCPTCP3306IngressApp server CIDRMySQL database access
Custom TCPTCP5432IngressApp server CIDRPostgreSQL database access
Custom TCPTCP6379IngressApp server CIDRRedis cache access
Custom TCPTCP8080Ingress0.0.0.0/0Application server (alternate HTTP)
Custom UDPUDP53IngressSpecific CIDRDNS queries
ICMPICMPAllIngressSpecific CIDRAllow ping / network testing
All TCPTCP1–65535IngressPeer network CIDRAllow all TCP from a trusted private network
⚠️
Restrict SSH access in production

Avoid opening SSH (port 22) to 0.0.0.0/0 in production environments. Restrict the source CIDR to your known IP address, or use a bastion/jump server pattern to reduce your attack surface.

Networking

Routers

Enable communication between different networks — connecting private subnets and allowing traffic to flow to external networks.

A router enables communication between different networks. Routers connect private networks and allow traffic to flow between subnets or to external networks such as the internet. When a router is created on CloudVantage, it is automatically connected to the external network, giving it a publicly routable external IP address.

To allow a server on a private network to communicate outside that network (e.g., to reach the internet or another subnet), the private subnet must be connected to a router via a router interface.

Creating a Router

  1. Click Networks → Routers

    Click Create Router in the top-right corner.

  2. Enter a Name and Description

    Choose a name that identifies this router's purpose or the networks it will connect.

  3. Choose a Payment Method

    Pay Monthly or Yearly. Monthly is selected by default. The estimated cost is shown beneath the field before you confirm.

  4. Click Create Router

    The router is automatically connected to the external network upon creation.

ℹ️
You pay when you create the router

Payment is taken when you create the router, according to the payment method you choose. Adding an interface to it afterwards does not ask for a separate payment. See the Pricing page for current prices.

Managing a Router

Go to Networks → Routers, locate the router, and click Manage Router. Available actions:

  • View Router Details — configuration, external IP, and attached interfaces
  • Edit Router — update name or description
  • Delete Router — permanently remove (must be disconnected from all subnets first)

Creating a Router Interface

Interfaces allow a router to connect to one or more subnets, enabling communication between those subnets and other networks (including the internet via the router's external gateway). Without an interface, servers on a private network within a subnet cannot reach resources outside that subnet.

A single interface can connect several subnets of a private network, so a network with more than one subnet does not need an interface per subnet.

  1. Go to Networks → Routers → Manage Router → View Router Details → Interfaces tab
  2. Select Create Interface

    Select the subnets to connect (required) and add an optional description.

  3. Click Create Interface

    The router will now route traffic between the connected subnets and the external network.

Deleting a Router Interface

  1. Navigate to Networks → Routers → Manage Router → View Router Details → Interfaces tab
  2. Click Delete Interface next to the interface and confirm

    Removing an interface disconnects the subnets it connects from the router. Servers on those subnets will lose external connectivity.

Deleting a Router

⚠️
Remove all interfaces before deleting

Before deleting a router, remove all router interfaces first. Attempting to delete a router with active subnet connections will fail.

  1. Go to Networks → Routers

    Click Manage Router → Delete Router and confirm.

Home/Networking/Floating IPs

Networking

Floating IPs

Publicly routable IP addresses that can be attached to private instances, making them accessible from the internet.

A Floating IP is a publicly routable IP address that can be attached to a private instance or a load balancer, allowing it to be accessible from the internet. Floating IPs are separate from instances — you allocate the IP to your project first, then associate it with a specific resource. You can reassociate a Floating IP between resources at any time without releasing it. You just have to disassociate it from the current resource and associate it with another resource.

ℹ️
Maximum 3 Floating IPs per project

A project can have a maximum of three Floating IPs at a time. Contact support if your project requires additional Floating IPs.

Allocating a Floating IP

Allocating a Floating IP reserves it for your project. Once allocated, you can associate it with any instance or load balancer port within your project.

  1. Go to Networks → Floating IPs

    Click Allocate IP to Project.

  2. Configure

    Select the Pool (External — the public IP pool), choose a Payment Option, and add an optional Description.

  3. Click Allocate IP

    The IP address is reserved for your project and appears in your Floating IPs list.

Associating a Floating IP with an Instance

  1. Go to Networks → Floating IPs

    Click Associate Floating IP next to the IP address.

  2. Select the port

    Choose the target port from the dropdown — a Dew port or a load balancer port. Click confirm.

ℹ️
Attaching to Load Balancers

Floating IPs can be attached to Load Balancers provisioned on a private network, making them internet-accessible without placing the Load Balancer directly on the external network.

Releasing a Floating IP

Releasing a Floating IP removes it from your project entirely. The IP is returned to the public pool and is no longer available to you.

  1. Go to Networks → Floating IPs

    Click Release Floating IP next to the address and confirm.

⚠️
Update DNS before releasing

If you have DNS records pointing to a Floating IP, update them before releasing the IP. Once released, the IP may be reassigned to another user.

Home/Networking/Load Balancer

Networking

Load Balancer

Distributes incoming traffic across multiple backend servers, ensuring high availability, scalability, and resilience to failures.

A Load Balancer acts as a traffic distributor that sits between your users and backend servers. It receives incoming requests and intelligently routes them to healthy backend servers based on the configured algorithm and health monitoring rules.

Common use cases

  • High Availability — eliminate single points of failure by distributing traffic across multiple servers
  • Scalability — handle increased traffic by adding backend servers to the pool
  • SSL/TLS Termination — offload SSL/TLS encryption from backend servers to the load balancer
  • Traffic Management — route requests using different protocols and ports
  • Health Monitoring — automatically detect and remove unhealthy servers from rotation

Key components

ComponentDescription
Load BalancerThe main component that receives traffic and distributes it
ListenerDefines what traffic the load balancer accepts (protocol and port)
PoolA group of backend servers that handle requests
Pool MembersIndividual backend servers within a pool
Health MonitorChecks backend health and removes unhealthy members from rotation

Prerequisites

  • At least one running backend instance to receive traffic
  • Network configuration: access to an external or private network
  • SSL certificates uploaded to Certificate Manager (required only for TERMINATED HTTPS listeners)

Creating a Load Balancer

Navigate to Networks → Load Balancers and click Create Load Balancer. The creation wizard has five steps.

Step 1 — Load Balancer Details

Name (Required) — enter a descriptive name (e.g., production-web-lb, api-load-balancer).

IP Address (Optional) — leave blank to have an IP assigned automatically. Specifying an IP is not recommended for most deployments.

Network (Required)

  • External Network — the load balancer receives a public IP directly. Use for public-facing websites and APIs.
  • Private Network — accessible only within your private infrastructure. Use for internal services and backends. Attach a Floating IP to make it publicly accessible.

Step 2 — Listener Details

Protocol (Required)

ProtocolDefault PortSSL/TLSUse Case
HTTP80NoneUnencrypted web traffic, redirects to HTTPS, internal services
HTTPS443Backend handles SSLEnd-to-end encryption; backends need their own certificates
TERMINATED HTTPS443Load balancer terminates SSLSSL offloaded to LB; backends run plain HTTP; certificate required in Certificate Manager
TCPSpecify manuallyNoneDatabase connections, custom applications, non-HTTP services
UDPSpecify manuallyNoneDNS, streaming media, gaming servers, VoIP
SCTPSpecify manuallyNoneTelecommunications, signalling protocols
⚠️
TERMINATED HTTPS requires a certificate

Upload your SSL certificate to Certificate Manager before creating the listener. Without a valid certificate, TERMINATED HTTPS listeners cannot function.

Timeout settings

SettingDefaultDescription
Client Data Timeout50,000 msMax time to wait for client data. Increase for file uploads or streaming; decrease for high-traffic APIs.
TCP Inspect Timeout0 (disabled)Time to wait during TCP inspection. Leave at 0 for most use cases.
Member Connect Timeout5,000 msMax time to wait when connecting to a backend. Increase for slow backends or high-latency networks.
Member Data Timeout50,000 msMax time to wait for data from a backend. Increase for long-processing requests.
Connection Limit-1 (unlimited)Max concurrent connections. Use -1 for most deployments; set a limit to protect against traffic spikes.

Step 3 — Pool Details

Load Balancing Algorithm (Required)

AlgorithmHow it worksBest for
ROUND_ROBINDistributes requests sequentially to each backend in order, then repeats.Homogeneous backends; stateless applications; general-purpose load balancing.
LEAST_CONNECTIONSRoutes new requests to the server with the fewest active connections.Long-lived connections; applications with variable request duration; WebSocket; database connection pooling.
SOURCE_IPUses a hash of the client IP to consistently map to a specific backend.Applications requiring client affinity; UDP protocols.

Session Persistence (Required)

OptionDescriptionNotes
NoneNo persistence — each request can go to any available backend.Best load distribution. Use for stateless apps or apps with shared session storage (Redis, Memcached).
SOURCE_IPRoutes requests from the same client IP to the same backend.Issues with clients behind NAT.
HTTP_COOKIELoad balancer inserts a cookie to maintain backend affinity.HTTP/HTTPS only. Works well with proxies and NAT.
APP_COOKIEUses an existing cookie from your application.HTTP/HTTPS only. Requires configuring the cookie name.

Step 4 — Pool Members

Pool members are the backend servers that receive traffic. For each backend server:

FieldRequiredDescription
IP AddressYesMust be reachable from the load balancer's network. Use private IPs for private-network load balancers.
PortYesPort your backend listens on — can differ from the listener port (e.g., listener on 443, backend on 8080). Common values: 80, 443, 8080, 3000, 5000.
WeightYes (default: 1)Relative traffic proportion. Range 1–256. Weight 2 receives twice the traffic of weight 1. Set equal for even distribution.
NameNoA label for the member (e.g., web-server-1). Helpful for troubleshooting.

Weight example: Server A (weight 2) + B (weight 1) + C (weight 1) → A receives 50%, B and C each receive 25%.

Step 5 — Health Monitor

🚫
Always enable health monitoring

Without health monitoring, the load balancer won't detect failed backends and will continue sending traffic to non-functional servers.

Health monitor types:

TypeCompatible ListenersHow it works
HTTPHTTP, HTTPS, TERMINATED HTTPSSends GET request to a URL path. Expects a successful HTTP response code.
HTTPSHTTPS, TERMINATED HTTPSSame as HTTP but uses an encrypted connection.
TCPTCP, HTTP, HTTPSAttempts to open a TCP connection. Healthy if connection succeeds.
PINGAnySends ICMP echo request. Note: some networks block ICMP.
UDP-CONNECTUDPSends UDP packets and checks connectivity.
TLS-HELLOHTTPS, TERMINATED HTTPSInitiates SSL/TLS handshake. Healthy if handshake succeeds.
SCTPSCTPChecks SCTP protocol connectivity.

Health monitor settings:

SettingDefaultDescription
Delay (sec)5Time between health check attempts. Must be ≥ Timeout.
Timeout (sec)5Max time to wait for response. Must be < Delay.
Max Retries3Successful checks required before marking a server healthy (1–10).
Max Retries Down3Failed checks before marking a server unhealthy (1–10).
HTTP MethodGETHTTP method used for the health check request.
URL Path/Endpoint for HTTP checks (e.g., /health, /ping, /status).
Expected Codes200Codes considered healthy: single (200), list (200,201), or range (200-299).

After creation

  • Note the IP address — needed for DNS records or direct traffic routing
  • Monitor health checks — ensure all pool members show as healthy in the dashboard
  • Test connectivity — send test requests to verify traffic is being distributed
  • Configure DNS — point your domain name to the load balancer IP address

Best practices

High availability

  • Use at least 2 pool members — a single member defeats the purpose of a load balancer
  • Always configure health checks to detect failures automatically

Security

  • Use TERMINATED HTTPS for public services — centralises certificate management
  • Monitor certificate expiration dates in Certificate Manager
  • Keep backend servers accessible only through the load balancer where possible
  • Use private networks for backends to reduce attack surface

Performance

  • Choose the right algorithm — ROUND_ROBIN for similar-capacity servers; LEAST_CONNECTIONS for variable request durations or long-lived connections
  • Tune timeout values — balance fast failure detection with tolerance for slow responses
  • Avoid unnecessary session persistence — prefer stateless architectures with shared session storage (Redis, Memcached)
  • Adjust member weights based on server capacity

Cost optimisation

  • Start with the minimum required pool members and scale as traffic grows
  • Monitor actual utilisation and remove unnecessary pool members
  • Right-size your backend servers based on actual load

Troubleshooting

IssuePossible CausesSolution
Pool members showing unhealthyServer down; firewall blocking health checks; wrong port; app not responding on health pathVerify server is running; check security group rules; verify port; check app logs
Uneven traffic distributionSession persistence enabled; SOURCE_IP with limited client diversity; different weights; some members unhealthyDisable session persistence if not needed; switch to ROUND_ROBIN; equalise weights; check health status
SSL/TLS errors (TERMINATED HTTPS)Certificate expired; domain mismatch; incomplete CA chain; wrong certificate selectedCheck expiration in Certificate Manager; verify certificate matches domain; ensure CA chain was uploaded
Timeout errorsMember connect timeout too low; member data timeout too low; slow backendsIncrease connect and data timeouts; investigate backend performance
🚫
Deleting a load balancer stops all traffic immediately

Before deleting: update your DNS records, migrate traffic to another load balancer if needed, and back up any configuration you may need to recreate.

Networking

VPN

Site-to-site IPsec tunnels that join a CloudVantage private network to another network over the public internet, encrypted end to end.

A site-to-site VPN links the private network behind one of your routers to a network somewhere else, so machines on both sides reach each other by private address as though they shared a network. Traffic crossing the internet between the two is encrypted.

The other side does not have to be CloudVantage. A tunnel can join:

  • Two projects on CloudVantage — connecting dev to production, for instance
  • Two regions — a Lagos project to a Europe project
  • CloudVantage and another cloud provider, such as AWS
  • CloudVantage and your own on-premises network, behind a compatible IPsec device
ℹ️
Both ends must be configured

A tunnel is two matching halves. Everything on this page describes the CloudVantage side; somebody has to build the mirror image on the other side, whether that is a second CloudVantage project, an AWS Site-to-Site VPN connection, or a firewall in your office. The tunnel stays down until both halves agree — see Matching both sides.

Pricing

A VPN is billed per IPsec site connection, per month. IKE policies, IPsec policies, VPN services, and endpoint groups cost nothing on their own — only a site connection is chargeable. For current pricing, check the Pricing page — the source of truth for prices, which can change.

The price is the same in both regions — a tunnel in Lagos costs what a tunnel in Europe costs.

If you delete a connection partway through a month, you are refunded for the unused portion, the same way Dews are handled.

Before you start

Gather these first. Most failed tunnels come from one of them being wrong rather than from a mistake in the dashboard.

  • A router with an external gateway in the project, and its public IP address.
  • Non-overlapping subnets. The private CIDRs on each side must not overlap — 192.168.10.0/24 talking to 172.16.20.0/24 is fine, 192.168.10.0/24 on both sides cannot work. Use RFC 1918 ranges.
  • The peer's public IP address — the external address of the router, gateway, or firewall at the far end.
  • The peer's private CIDR — the range on the other side you need to reach.
  • An agreed pre-shared key, exchanged with whoever runs the other end through a secure channel.
  • Agreed encryption settings — see Matching both sides.
⚠️
Plan your CIDRs before you build anything

Overlapping address ranges are the one problem no VPN setting can work around, and the fix is renumbering a network — painful once servers are running on it. If you expect to link several environments later, give each one a distinct range now: for example 192.168.10.0/24 for dev, 192.168.20.0/24 for staging, 172.16.20.0/24 for production.

The five pieces

Open VPN from the dashboard. The page has five tabs, and they are built in this order because each one depends on those before it.

#TabWhat it is
1IKE PoliciesHow the two sides authenticate each other and negotiate keys
2IPSec PoliciesHow traffic inside the tunnel is encrypted
3VPN ServicesAttaches VPN capability to one of your routers
4Endpoint GroupsWhich subnets at each end are allowed through the tunnel
5IPSec Site ConnectionsThe tunnel itself, tying the other four together

1. Create an IKE policy

  1. Open the IKE Policies tab and click + Add IKE Policy
  2. Name the policy

    A description is optional. The name does not need to match the other side.

  3. Choose the algorithms

    These must be identical to the far end. Recommended: authorization sha256, encryption aes-256, IKE version v2, PFS group14, lifetime 3600 seconds.

  4. Click Create
SettingOptionsRecommended
Authorization algorithmsha1, sha256, sha384, sha512sha256
Encryption algorithm3des, aes-128, aes-192, aes-256aes-256
IKE versionv1, v2v2
PFSgroup2, group5, group14group14
LifetimeSeconds3600
Phase 1 negotiation modemain, aggressivemain
⚠️
Avoid 3des and group2

3des is deprecated and group2 is a 1024-bit Diffie-Hellman group; neither is considered strong today. Choose them only if an older device at the far end genuinely cannot do better, and treat that as something to fix rather than live with.

2. Create an IPsec policy

  1. Open the IPSec Policies tab and click + Add IPSec Policy
  2. Name the policy
  3. Choose the algorithms

    Again, identical to the far end.

  4. Click Create
SettingOptionsRecommended
Authorization algorithmsha1, sha256, sha384, sha512sha256
Encryption algorithm3des, aes-128, aes-192, aes-256aes-256
Encapsulation modetunnel, transporttunnel — site-to-site requires it
Transform protocolesp, ah, esp-ahesp — encrypts as well as authenticates
PFSgroup2, group5, group14group14
LifetimeSeconds3600

3. Create a VPN service

A VPN service attaches VPN capability to one router. You need one per router, and the router must already have an external gateway.

  1. Open the VPN Services tab and click + Add VPN Service
  2. Enter a name

    A description is optional.

  3. Select the router

    Choose the router whose network you want to reach through the tunnel.

  4. Leave Admin State Up ticked, then click Create

The VPN Services list shows the service's Local Side Public IPs — the address the far end must use as its peer address. Note it down; whoever configures the other end needs it.

ℹ️
PENDING_CREATE is normal

A new VPN service shows PENDING_CREATE while it is being provisioned, and moves on by itself. You do not need to wait for it before creating endpoint groups.

4. Create the endpoint groups

Endpoint groups say which address ranges are allowed through the tunnel. You need two: one for your side, one for the far side.

Local endpoint group

  1. Open the Endpoint Groups tab and click + Add Endpoint Group
  2. Name it

    Something that makes the side obvious, such as local-endpoint-group.

  3. Set Endpoint Type to "Subnet (for local systems)"
  4. Tick the subnets to expose

    Select from your project's own subnets. Only ticked subnets are reachable over the tunnel.

  5. Click Create

Remote endpoint group

  1. Click + Add Endpoint Group again
  2. Name it

    For example remote-endpoint-group.

  3. Set Endpoint Type to "CIDR (for external systems)"
  4. Enter the far side's CIDRs

    Comma-separated, for example 192.168.100.0/24. Several ranges are allowed.

  5. Click Create
⚠️
Local uses Subnet, remote uses CIDR

Your own side is chosen from real subnets in your project. The far side is typed in as an address range, because CloudVantage has no visibility of it. Using the wrong type is a common cause of a tunnel that builds but carries no traffic.

5. Create the IPsec site connection

This is the tunnel itself, and the only chargeable piece.

  1. Open the IPSec Site Connections tab and click + Add IPSec Site Connection
  2. Enter a name

    A description is optional.

  3. Select the VPN service, IKE policy, and IPsec policy

    The ones you created above.

  4. Select the local and remote endpoint groups

    Local is your Subnet group; remote is your CIDR group.

  5. Enter the peer gateway address

    The far end's public IPv4 or IPv6 address, or an FQDN.

  6. Enter the peer router identity

    Usually the same value as the peer gateway address.

  7. Enter the pre-shared key

    Character for character what the other side uses. It is case-sensitive.

  8. Review the optional parameters

    On the Optional Parameters tab: MTU (default 1500), dead peer detection action, interval, and timeout, and initiator state. The defaults suit most setups. Dead peer detection settings apply to your side only and do not have to match the far end, but the timeout must be larger than the interval.

  9. Click Create

    The connection shows PENDING_CREATE, then becomes active once both ends agree.

🚫
Treat the pre-shared key like a password

Anyone holding the PSK and your gateway address can attempt to build a tunnel into your network. Send it to the far end over a secure channel — not email, not chat. Generate a long random string rather than choosing something memorable.

Matching both sides

A tunnel comes up only when both ends agree. Some values must be identical, some must be mirror images, and some can differ freely.

Must be identical

  • Pre-shared key — exactly, including case. The most common reason a tunnel stays down.
  • IKE policy settings — authorization algorithm, encryption algorithm, IKE version, PFS, lifetime.
  • IPsec policy settings — authorization algorithm, encryption algorithm, encapsulation mode, transform protocol, PFS, lifetime.

Must be swapped

SettingYour sideTheir side
Peer gateway addressTheir public IPYour public IP
Peer router identityTheir public IPYour public IP
Local endpoint groupYour subnetsTheir subnets
Remote endpoint groupTheir CIDRsYour CIDRs

Can differ

Names and descriptions, which router each side uses, MTU, initiator state, and dead peer detection settings. One side may be bi-directional while the other is response-only.

ℹ️
Dead peer detection is a local setting

Each side decides for itself how often to check the peer is alive and how long to wait before giving up, so the interval and timeout are never negotiated between the two ends and do not need to match. The action is local too — it is simply what your side does once it concludes the peer has gone. The only hard rule is that your timeout must be larger than your interval.

One combination is worth avoiding: if your side is set to clear and the far side is response-only, neither end will rebuild the tunnel after a drop, and it stays down until something forces a renegotiation. Pair clear with a peer that will initiate, or use hold or restart instead.

Allow the traffic through your security groups

A tunnel that is up does not by itself let anything through. Your security groups still apply, and by default they do not permit traffic from the peer network.

On each side, add ingress rules allowing the protocols you need from the peer's CIDR — ICMP if you want to test with ping, TCP 22 for SSH, and whatever ports your applications use.

⚠️
Active tunnel, no traffic? Look here first

A connection showing as active while nothing can reach anything is almost always security groups. Start permissive while testing to confirm the tunnel works, then tighten the rules to the ports you actually need. Check firewalls on the servers themselves too — ufw or iptables inside a Dew will block traffic no matter what the security group says.

Editing and deleting

To change or remove any VPN resource, click Manage on its row, then Edit or Delete.

What you can change depends on whether the resource is in use by a live tunnel.

ResourceBefore it is attached to a live connectionOnce attached to a live connection
IKE policyEverything — name, description, algorithms, PFS, lifetimeLocked. Cannot be edited or deleted
IPsec policyEverything — name, description, algorithms, PFS, lifetimeLocked. Cannot be edited or deleted
VPN serviceName and description onlyName and description only
Endpoint groupName and description onlyName and description only
IPsec site connectionName, description, peer gateway address, peer router identity, PSK, MTU, DPD settings, initiator state
⚠️
Get the algorithms right the first time

Once a live connection uses an IKE or IPsec policy, that policy is frozen — you cannot change so much as its name. Changing an algorithm means deleting the connection, editing the policy, and building the connection again, with the same coordination on the far end. Agree the settings with the other side before you create anything.

⚠️
Some changes need a rebuild

Endpoint groups and VPN services only ever allow their name and description to be changed. To reach a different subnet, or to move the tunnel to another router, delete the resource and create a replacement — which means tearing down the connection that uses it. Adding a subnet later is not a small change, so include everything you expect to need when you first create the endpoint group.

Deleting a connection

Deleting an IPsec site connection stops the tunnel immediately and releases the IKE and IPsec policies for editing again. Billing stops on deletion, and you are refunded for the unused part of the month.

Troubleshooting

The connection never leaves DOWN

  • Check the pre-shared key on both sides, character for character. This is the single commonest cause.
  • Confirm each side's peer gateway address is the other side's public IP, not its own.
  • Compare the IKE and IPsec settings on both ends — one mismatched algorithm is enough.
  • Confirm both routers have an external gateway and can reach each other over the internet.

The connection is active but nothing gets through

  • Check security groups on both sides allow traffic from the peer CIDR.
  • Check the endpoint groups: local should list your subnets, remote should list theirs, and the two must not overlap.
  • Check firewalls running inside the servers themselves.

SSH works but other services fail

  • Check the security group covers those ports, not just 22.
  • Try lowering the MTU on the connection to 1400. Large packets can be dropped on paths that cannot carry a full 1500-byte frame.

Connecting to AWS or another provider

The CloudVantage side is identical regardless of what sits at the far end. On the other provider you will be configuring their equivalent pieces — on AWS, a customer gateway holding your public IP, a virtual private gateway, and a site-to-site VPN connection carrying the matching algorithms and PSK.

The rules on this page still decide whether it works: identical algorithms and PSK, mirrored addresses and endpoint ranges, non-overlapping CIDRs, and security groups open on both sides.

Home/Security/Certificate Manager

Security

Certificate Manager

A secure vault for storing and managing SSL/TLS certificates and their associated private keys.

Certificate Manager allows you to upload SSL/TLS certificates once and reuse them across services such as Load Balancers and Auto Scaling Groups, without needing to store certificates directly on individual servers. All certificates are securely encrypted at rest — only you have access to your stored certificates and keys.

Common use cases

  • Load Balancer SSL/TLS Termination — secure HTTPS traffic without managing certs on each backend
  • Auto Scaling Groups — manage certificates for dynamically created instances
  • Centralised Certificate Storage — keep all certificates in one secure, organised location
  • Certificate Lifecycle Management — track expiration dates and manage renewals
🚫
Certificates cannot be downloaded after upload

This is a security feature protecting sensitive cryptographic material. Once uploaded, certificates and private keys cannot be retrieved from the platform. Always maintain your own secure backups before uploading.

Accessing Certificate Manager

  1. Navigate to Certificate Manager from the sidebar
  2. You'll see two tabs: Overview and Secrets
    • Overview — total number of stored secrets
    • Secrets — list of all certificates with create/delete actions

Creating a Certificate

Before uploading, ensure you have:

  • Created secure backups of certificate files and private keys in an encrypted location
  • Documented which certificates are used for which services
  • Verified you have all required files: Private Key, Server Certificate, and CA Chain
  1. Click the Secrets tab → Create Secret
  2. Fill in certificate details
    • Name — a descriptive identifier (e.g., production-web-cert, staging-api-cert)
    • Secret Type — select Certificate from the dropdown
    • Expiration Date — enter in DD/MM/YYYY format
  3. Upload the three certificate files (all must be in PEM format)
    • Private Key (.pem) — your certificate's private key
    • Server Certificate (.pem) — the certificate file from your CA
    • CA Chain Certificate (.pem) — the certificate authority chain file
  4. Click Create Secret

    Your certificate appears in the Secrets list showing name, type, and expiration date.

Accepted file formats

Certificate Manager accepts certificates in PEM format. To check if a file is PEM format, open it in a text editor — it should begin with -----BEGIN CERTIFICATE-----.

  • .crt or .cer files in PEM format — upload directly or rename to .pem
  • DER binary or PKCS#7 (.p7b) files — convert to PEM first:
# Convert .crt (DER format) to PEM
openssl x509 -inform der -in certificate.crt -out certificate.pem

# Extract certificates from PKCS#7 (.p7b)
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem

Safe certificate rotation

To replace a certificate without service disruption, always follow this order:

  1. Upload the new certificate

    Give it a different name from the existing certificate.

  2. Update your Load Balancer

    Attach the new certificate to your Load Balancer and any other affected services.

  3. Verify HTTPS is working with the new certificate

    Test thoroughly before proceeding to the next step.

  4. Delete the old certificate

    Only after confirming the new certificate is fully active and working.

🚫
Deleting a certificate in use causes immediate outage

If you delete a certificate attached to a Load Balancer with HTTPS termination, the Load Balancer will immediately stop terminating HTTPS connections and users will receive SSL errors. Always verify a certificate is not in use before deleting.

Recovery from accidental deletion

  1. Re-upload the certificate immediately using your local backup (this is why maintaining backups is critical)
  2. Re-attach the certificate to affected Load Balancers or services
  3. Monitor your services to confirm they're functioning correctly

Note: there may be downtime between deletion and re-upload.

Best practices

  • Maintain secure backups — certificates cannot be downloaded after upload; always keep encrypted backups locally
  • Use descriptive names — clearly identify purpose (e.g., production-web-cert-2026)
  • Monitor expiration dates — check regularly and plan renewals well in advance
  • Rotate before expiry — upload and attach new certificates before old ones expire
  • Never delete certificates in use — verify no services reference a certificate before deleting
  • Secure your private keys — delete key files from insecure locations after uploading

Troubleshooting

ProblemSolution
My certificate file has a .crt or .p7b extensionSee the Accepted File Formats section above for OpenSSL conversion commands.
I don't have a private key fileThe private key should be on the server where you originally generated the Certificate Signing Request (CSR). If lost, generate a new private key and request a certificate reissue from your CA.
My HTTPS Load Balancer stopped working after deleting a certificateRe-upload the certificate using your local backup, then re-attach it to the Load Balancer immediately.
My certificate is expiring soonUpload the new certificate with a different name, update your Load Balancers, verify everything is working, then delete the old certificate.
Home/Billing

Account

Billing

CloudVantage operates on a pay-as-you-go pricing model — you only pay for the resources you use.

When you provision any resource, the cost for the selected billing term is deducted immediately from your wallet balance. CloudVantage's billing model is designed to be transparent and flexible:

  • Charges are deducted immediately when a resource is provisioned
  • Deleting a resource before the billing period ends triggers a refund for the unused portion
  • Refunds are returned directly to your CloudVantage wallet — not to your bank account
  • This allows you to scale resources up or down without financial waste

Viewing your invoices

The CloudVantage Billing page allows you to view and download your monthly invoices. Visit cloudvantage.com.ng/billing or click Billing in the sidebar.

ℹ️
Keep your wallet funded

If your balance runs out, resource provisioning and Auto Scaling events may be interrupted. Maintain a buffer balance sufficient to cover your peak resource usage, especially if you use Auto Scaling Groups.

🚫
Non-payment will result in server shutdown and permanent deletion

When your billing period ends, you have a 15-day grace period to make payment. If payment is not received within 15 days, your server will be shut down. If payment is still not made after a further 45 days, your server will be permanently deleted and decommissioned — all data will be lost and cannot be recovered. Ensure your wallet is funded before your billing period ends to avoid any interruption or data loss.

Billing by resource type

ResourceBilled whenRefund on deletion
Dew (Server)On provisioningYes — unused time refunded to wallet
VolumeOn creationYes — unused time refunded to wallet
Floating IPOn allocationYes — unused time refunded on release
Load Balancer Pool MemberOn additionYes — on removal
Router InterfaceOn creationYes — on deletion
Volume SnapshotOn creationYes — on deletion
Volume BackupOn creationYes — on deletion
Home/Event Logs

Account

Event Logs

A chronological record of important actions and activities that occur within your project.

Event logs provide an audit trail of system and user events within your project. Each log entry includes the timestamp and a description of the action performed.

Event logs are useful for:

  • Auditing — track what changed, when, and by whom
  • Change tracking — review configuration changes across your project over time
  • Troubleshooting — identify the sequence of events leading to unexpected behaviour or failures
  • Compliance — maintain a record of infrastructure operations for governance purposes

Accessing Event Logs

  1. Click Event Logs on the sidebar
  2. Browse the list of recorded events

    Events are displayed in reverse chronological order. Review recent activity within your project.

Home/Account/Password & Security

Account

Password & Security

Signing in, recovering a forgotten password, and protecting your account with two-factor authentication.

Your CloudVantage account is the key to every project and every resource you own, in both regions, along with your wallet. This page covers signing in, getting back in if you forget your password, and adding a second layer of protection.

Signing in

Enter your email address and password, then click Sign in. The eye icon in the password field reveals what you have typed, which is useful for checking a long password before submitting it.

If two-factor authentication is enabled on your account, you will be asked for a verification code after your password is accepted.

Password requirements

Every password you set — at sign-up, when changing it, or when resetting a forgotten one — must contain:

  • At least 12 characters
  • At least 1 uppercase letter
  • At least 1 lowercase letter
  • At least 1 number
  • At least 1 special character
ℹ️
Use a password manager

A password that meets these rules and is reused from another service gives you very little protection — the commonest way accounts are taken over is a password leaked from somewhere else entirely. Generate a unique password for CloudVantage and store it in a password manager.

Resetting a forgotten password

If you cannot remember your password, reset it from the sign-in page. CloudVantage emails a one-time verification code to your registered address.

  1. Click "Forgot password?"

    Beneath the password field on the sign-in page.

  2. Enter your email address

    Use the address your account is registered with, then click Send verification code.

  3. Check your email for the code

    CloudVantage sends a numeric verification code to that address.

  4. Enter your email and the code

    On the Verify reset code page, then click Verify code.

  5. Create a new password

    Enter the new password twice — in New password and Confirm password — meeting the requirements above, then click Reset password. You can then sign in with it.

⚠️
The code expires after 10 minutes

If it expires before you use it, click Resend code on the Verify reset code page to get a fresh one.

ℹ️
No code arrived?

Check your spam folder, and confirm you entered the address the account is registered with. Use Resend code if it still has not appeared. If nothing arrives at all, contact Support.

Changing your password

If you know your current password and simply want to replace it, do that from Settings rather than the reset flow. You will be asked to confirm your current password before setting a new one.

Two-factor authentication

Two-factor authentication (2FA) asks for a second piece of evidence when you sign in, on top of your password. Someone who obtains your password still cannot reach your account without it.

Every account starts with 2FA set to None. Two methods are available:

MethodHow it worksNotes
NoneSign in with email and password onlyThe default. Not recommended for accounts running production infrastructure
Email OTPA one-time code is sent to your registered email each time you sign inNothing to install. Only as secure as your email account
Authenticator AppAn app on your phone generates a six-digit code that changes every 30 secondsStronger — codes never travel over email, and are generated without a network connection
⚠️
Turn 2FA on if you run production workloads

Your account controls every project, every server, and your wallet balance. With 2FA set to None, a single leaked or reused password is enough for someone else to reach all of it. Authenticator App is the stronger of the two options, because a code sent by email is only as safe as the email account it lands in.

Enabling Email OTP

  1. Open Settings

    Go to the Two-Factor Authentication section.

  2. Select Email OTP

    It takes effect immediately — there is nothing further to confirm.

From then on, each sign-in sends a one-time code to your registered email address, which you enter after your password.

Enabling an Authenticator App

You will need an authenticator app on your phone — Google Authenticator, Microsoft Authenticator, Authy, or any other compatible app.

  1. Open Settings

    Go to the Two-Factor Authentication section.

  2. Select Authenticator App

    The Set up Authenticator App panel appears, showing a QR code.

  3. Scan the QR code

    Open your authenticator app and scan it. If you cannot scan — on a desktop app, for instance — type the setup key shown beneath the code into your app manually instead.

  4. Enter the six-digit code

    Your app now shows a code that changes every 30 seconds. Type the current one into Authenticator verification code and confirm.

🚫
Never share the setup key

The key beneath the QR code is the secret your codes are generated from. Anyone who has it can generate valid codes for your account indefinitely — a screenshot of it is as dangerous as your password. Do not paste it into a chat, a ticket, or a shared document.

Changing or turning off 2FA

Switch methods at any time from the Two-Factor Authentication section of Settings. What each switch asks of you depends on the method you are moving away from:

From ↓  To →NoneEmail OTPAuthenticator App
None—Applies immediatelyScan the QR code and enter a verification code
Email OTPApplies immediately—Scan the QR code and enter a verification code
Authenticator AppCurrent passwordCurrent password—

Moving to Authenticator App always runs the full setup again — see Enabling an Authenticator App above. Scanning the new QR code replaces any earlier CloudVantage entry in your app, so delete the old one once the new code is accepted.

Moving away from Authenticator App — to Email OTP or to None — brings up a Confirm security change panel. Enter your current password and click Confirm Change; the change does not apply until you do.

ℹ️
Why the password is asked for

Turning off the authenticator is the change that most weakens your account, so it is the one held behind your password. Someone who reaches an already-signed-in browser cannot quietly remove it without also knowing what you typed to sign in.

⚠️
Keep a way back in

Recovery codes are not available yet. Until they are, losing the phone means losing the ability to generate codes — add the CloudVantage account to an authenticator app that syncs across your devices, or set up a second device at the same time using the same QR code, so that one lost phone does not lock you out.

Home/Settings

Account

Settings

Manage your account preferences, including billing currency and password.

Accessing Settings

  1. Click the Wallet Balance in the top-right corner of your dashboard
  2. Select Currency Settings

    This navigates to the Settings page. You can also visit cloudvantage.com.ng/settings directly.

Available settings

SettingDescription
Billing CurrencySwitch between Naira (₦) and US Dollars ($). This affects how resource costs are displayed and charged from your wallet.
PasswordChange your account password. You will need to verify your current password before setting a new one. If you have forgotten it, use the reset flow instead — see Resetting a forgotten password.
Two-Factor AuthenticationRequire a second verification step when signing in, using Email OTP or an Authenticator App. Set to None by default. Changing it asks for your current password. See Two-factor authentication.
Home/Support

Help

Support

Get help from the CloudVantage support team.

If you need assistance or have any questions, click the Support tab on the sidebar. From there, you can send a message to our support team via email, and we will respond to help resolve your issue.

ℹ️
Check troubleshooting sections first

Each resource guide includes a troubleshooting section. See Load Balancer and Certificate Manager for common issues and resolutions.

Self-service resources

Home/Managed Services/Managed Databases

Managed Services

Managed Databases

Run MySQL on CloudVantage without building or maintaining the server — create a new database, or migrate an existing one in.

A managed database is a MySQL server that CloudVantage provisions and runs for you. You choose how much RAM, CPU, and storage it gets, and how you want to reach it; CloudVantage builds the machine, installs and configures MySQL, opens only the ports your chosen access method needs, and gives you the credentials.

There are two ways to get one:

ButtonUse it when
Create Managed DatabaseYou want a new, empty database
Migrate DatabaseYou already have a MySQL database elsewhere and want to move it here

Both end at the same place: a running MySQL instance listed on the Managed Databases page, with backups, version upgrades, and credential retrieval available from Manage DB.

Flavors, versions, and pricing

A flavor sets the RAM, CPU, and storage of the server your database runs on. Named flavors run from small development sizes up to large production ones, and Custom Flavor lets you specify RAM, CPU, and storage yourself.

Prices differ between the Europe and Lagos regions. Whichever flavor you pick, including a custom one, the price is shown before you confirm, and the estimated monthly cost appears beside the create button.

MySQL 8.0 and MySQL 8.4 are available.

ℹ️
Sizing for a migration

If you are migrating an existing database, at least 4 GB of RAM makes the transfer noticeably faster. Large databases benefit from more. You are not stuck with the choice — the version can be upgraded later, and support can advise on resizing.

Creating a new database

  1. Open Managed Databases and click Create Managed Database
  2. Select a flavor

    Pick a named flavor, or Custom Flavor to set RAM, CPU, and storage yourself. The price is shown alongside each option.

  3. Name the database

    Letters, numbers, and underscores only — hyphens and spaces are rejected. CloudVantage appends a unique suffix, so a database named employees appears in the list as something like employees-1e0367c243.

  4. Choose the MySQL version

    MySQL 8.0 or MySQL 8.4. Customers are advised to use the more recent version of MySQL.

  5. Click Run Vulnerability Check

    This scans the selected MySQL version for known critical vulnerabilities. It must pass before the database can be created.

  6. Set the database username and password

    Enter the password twice. This is the account your application will use, unless you decide to create another database user or account.

  7. Choose a management interface

    None, PhpMyAdmin, or Adminer. This decides how you reach the database and which ports are opened — see Choosing how to connect.

  8. Click Version Safe Create Database

    The button at the bottom, with the estimated cost beside it. It becomes available once the vulnerability check has passed.

The database appears in the list as In progress while the server is built, briefly showing Waiting for server IP, and becomes Completed when it is ready.

ℹ️
Why the vulnerability check comes first

The check confirms the MySQL version you picked has no known critical vulnerabilities before a server is built on it. Running it is not optional — the create button stays unavailable until it passes.

Choosing how to connect

Your choice of management interface determines which ports CloudVantage opens in the database's security group. Only what your chosen method needs is opened.

InterfaceHow you reach the databasePorts opened
NoneDirectly, using the MySQL protocol — the mysql client, or your application's driver. You are given the IP address and port.3306 only
PhpMyAdminIn a browser, at a URL supplied with your credentials80 and 443
AdminerIn a browser, at a URL supplied with your credentials — lighter than PhpMyAdmin80 and 443
⚠️
Restrict port 3306 to the addresses that need it

With None selected, port 3306 is open. Leaving it reachable from anywhere means your database is exposed to the whole internet, with only the password in the way. Open the database's security group and narrow the rule to the specific IP address or range your application connects from. Do this before you put real data in it.

⚠️
Choosing a GUI does not open 3306

With PhpMyAdmin or Adminer, only 80 and 443 are opened, so applications cannot connect over the MySQL protocol. If you need direct access as well as the web interface, add a rule for port 3306 to the security group yourself — and restrict it to known addresses when you do.

Migrating an existing database

The Database Migration Service moves an existing MySQL database from any external environment into CloudVantage with minimal downtime.

Before you start

  • Your source database is reachable over the network
  • The source database's IP address and port — MySQL's default is 3306
  • A source username and password with sufficient privileges
  • The exact database name, which must match on both sides
  • At least 4 GB of RAM on the target flavor is recommended

Step 1 — Select a database flavor

  1. Open Managed Databases and click Migrate Database
  2. Choose the target flavor

    Match it to your workload. A minimum of 4 GB RAM is recommended for a faster migration; for large databases, choose more.

  3. Click Next

Step 2 — Database setup

FieldWhat to enter
Database EngineMySQL
Database NameMust exactly match the name on your source server, for example employees
Target UsernameThe username to create for the new database
Target PasswordEnter and confirm. Use a strong password.
Management InterfacePhpMyAdmin, Adminer, or None — see Choosing how to connect
Payment OptionMonthly or yearly, billed according to the selected flavor
⚠️
The database name must match exactly

The name entered here has to be identical to the one on your source server. A mismatch causes the migration to fail.

Click Next: Source DB Info.

Step 3 — Source database information

FieldWhat to enter
Source IP AddressThe address of your source database server
Source PortMySQL's default is 3306
Source UsernameA user with migration privileges
Source PasswordThat user's password
ℹ️
Use a dedicated migration user

Create a user on the source database specifically for the migration, with only the privileges it needs, and delete it once the migration is finished. That way the credentials you type here never outlive the job they were made for.

Click Check Database Connection. This verifies that the database is reachable, the credentials are valid, and the required permissions are present. If it fails, re-check the IP address, source database name, username, password, and port. Once it succeeds, click Next: Migration Settings.

Step 4 — Migration settings

TypeWhat happensWhen to use it
Test MigrationThe source stays read-write and nothing is locked. The process is simulated end to end.First, always — to estimate how long it takes, check compatibility, and validate the process without risk
Live MigrationThe source is placed in read-only mode. Writes are blocked for the duration to keep the data consistent.The final production move. Afterwards, point your application at the CloudVantage database.
ℹ️
Run a test migration first

A test migration tells you how long the live one will take and surfaces compatibility problems, at no risk to your source data. Use what it tells you to schedule the live migration during low-traffic hours — your application cannot write to the source database while it runs.

Select the migration type and click Start Migration. You can watch both provisioning and migration progress from the dashboard: provisioning completes first, then migration runs, and Migration Status reaches complete.

After the migration

  • Verify all tables and data are present in the new database
  • Test your application against the new credentials
  • Update your application's connection settings
  • Delete the temporary migration user from the source database

The database list

Every database in the project is listed with its name, IP address, engine, version, server type, status, and migration status. Filter DB Servers and Search Databases… narrow the list.

Migration Status reads complete for a migrated database and N/A for one created from scratch.

Retrieving your credentials

Click the eye icon beside a database's status to reveal its credentials. You get the database name, username, password, and — if you chose PhpMyAdmin or Adminer — the web interface URL and a reset URL for changing the database password later. Copy All takes the lot in one go.

🚫
Credentials are shown once and once only

Closing the modal removes them permanently — they cannot be retrieved again. Copy them into a password manager or another encrypted store before you close it, not afterwards. If you lose the password for a database with a web interface, the reset URL is your way back in; save that too.

Managing a database

Click Manage DB on any row to view its details, upgrade its MySQL version, and work with backups.

Upgrading the MySQL version

  1. Click Manage DB, then Upgrade Database Version

    The dialog shows the current version.

  2. Select the target version
  3. Click Run Version Check

    This validates that the upgrade can proceed.

  4. Click Upgrade Database

    Available once the check passes.

⚠️
Take a backup first

Create a backup before upgrading, and test your application against the new version afterwards. A version upgrade changes the engine your data sits on, and having a restore point costs nothing next to not having one.

Backups

Click Manage DB, then Backups. The dialog has three tabs.

Available Backups lists every backup you hold, each with an ID, a timestamp, and a Restore action. Create Backup takes one immediately.

Schedule Backup controls automatic backups. Tick Enable Scheduled Backups, choose a frequency, and click Save Schedule:

FrequencyBehaviour
DailyA backup every day
WeeklyA backup every week
IntervalA backup every n days, where you set n

The Current Schedule panel at the top shows whether the schedule is Active or Inactive, and what it is set to.

Restore History records past restores — the database, the backup ID used, how many tables were restored out of the total, and whether it succeeded.

🚫
Nothing is backed up until you switch it on

Scheduled backups are disabled by default on every database, whether created new or migrated in. Until you enable them, the only backups that exist are ones you created by hand — so a database that has been running happily for months may have no recovery point at all. Turn on a schedule as soon as the database holds anything you would not want to re-enter by hand.

Deleting a database

Click Manage DB on the database's row, then Delete, and confirm. Billing stops on deletion, and you are refunded for the unused portion of the month — the same pro-rata refund applied when a Dew or a VPN connection is deleted.

🚫
Deletion is permanent

Deleting a database removes it and its data immediately.