Product Guide
Cloud Accounts
OVHcloud

Connect OVHcloud Account

OVHcloud gives you compute, DNS, and S3-compatible object storage from a single provider -- popular in Europe with competitive pricing.

⚠️

OVH uses three separate credentials (Application Key, Application Secret, Consumer Key) instead of a single API token. All three are required.

Step 1: Create API credentials

  1. Go to api.ovh.com/createToken (opens in a new tab)
  2. Log in with your OVHcloud account
  3. Select your API endpoint based on your region:
EndpointRegion
ovh-euEurope (default)
ovh-usUnited States
ovh-caCanada

Step 2: Set access rights

Under Rights, add these rules at minimum:

MethodPathPurpose
GET/cloud/*List projects, instances, images
POST/cloud/*Create instances, snapshots
PUT/cloud/*Update instances
DELETE/cloud/*Delete instances

If you also want OVHcloud DNS management, add:

MethodPathPurpose
GET/domain/*List DNS zones and records
POST/domain/*Create DNS records
PUT/domain/*Update DNS records
DELETE/domain/*Delete DNS records

Set Validity to Unlimited unless you want the keys to expire automatically.

Step 3: Copy your three keys

After clicking Create, you'll see:

  • Application Key -- identifies your application
  • Application Secret -- signs API requests (shown once, save it)
  • Consumer Key -- authorizes access to your account
🚫

The Application Secret is only shown once at creation time. If you lose it, you'll need to create new credentials.

Step 4: Add to OEC.sh

Go to Settings > Cloud Accounts > Add Account > OVHcloud.

Paste all three keys and click Add Account. OEC.sh validates by calling /1.0/me (account info) and /1.0/cloud/project (cloud projects list).

You need at least one OVH Public Cloud project in your account. If you only have Web Hosting or Domain products, validation will fail.

Capabilities

OVHcloud supports all three capabilities:

CapabilityWhat it does
ComputeProvision Public Cloud instances for Odoo hosting
DNSManage DNS zones hosted on OVHcloud
StorageS3-compatible Object Storage for backups

Instance types

OVHcloud Public Cloud instances follow OpenStack naming. Common types for Odoo:

TypevCPURAMDisk~Monthly
d2-212 GB25 GB~7 EUR
d2-424 GB50 GB~14 EUR
d2-848 GB50 GB~27 EUR
b2-15415 GB100 GB~50 EUR
b2-30830 GB200 GB~100 EUR

For Odoo: d2-4 for dev/staging, d2-8 for small production, b2-15 for medium production.

Regions

CodeLocation
GRAGravelines, France
SBGStrasbourg, France
BHSBeauharnois, Canada
WAWWarsaw, Poland
DEFrankfurt, Germany
UKLondon, United Kingdom
SGPSingapore
SYDSydney, Australia

Object Storage (for backups)

OVHcloud Object Storage is S3-compatible and uses separate credentials from the API keys above.

  1. Go to OVH Manager > Public Cloud > your project > Users & Roles
  2. Click Create User and assign the ObjectStore operator role
  3. After creation, click the user, then Generate S3 credentials
  4. Copy the Access Key and Secret Key

In OEC.sh, add an OVHcloud storage configuration using these S3 credentials with the endpoint for your region (e.g. s3.gra.io.cloud.ovh.net for Gravelines).

⚠️

Don't confuse the API keys (for compute/DNS) with the S3 credentials (for object storage). They are different systems with different credentials.

Troubleshooting

"Invalid credentials" -- One of the three keys is wrong. Double-check that you're using the Application Key, Application Secret, and Consumer Key together. They must all be from the same token creation.

"No cloud projects found" -- You need an active OVH Public Cloud project. Go to OVH Manager > Public Cloud > Create a Project.

"Insufficient permissions" -- Your Consumer Key doesn't have the right access rules. Create new credentials with GET/POST/PUT/DELETE /cloud/* rights.

"Expired consumer key" -- If you set a validity period when creating the token, it may have expired. Create new credentials at api.ovh.com/createToken (opens in a new tab).

Server creation fails -- Check that your Public Cloud project has billing enabled and sufficient quota. New projects may have instance limits.

DNS records not updating -- Make sure you added /domain/* rights when creating the API credentials. Cloud-only permissions won't cover DNS.