Features
Cloud Accounts
Overview

Cloud Accounts

Connect your cloud provider accounts to OEC.sh to unlock automated server provisioning, backup storage, and DNS management.

Why Connect Cloud Accounts?

Cloud accounts are the foundation of OEC.sh infrastructure management. Once connected, you can:

  • Auto-Provision Servers - Create new servers with a few clicks instead of manual SSH setup
  • Manage Backups - Use your existing cloud storage (S3, Spaces, R2) for automated backups
  • Configure DNS - Automatically manage DNS records for your Odoo domains
  • Single Credential - One account can serve multiple purposes (compute + storage + DNS)

Supported Providers

One-Click Connect (OAuth)

These providers support secure OAuth authentication - no API keys to manage:

ProviderCapabilitiesConnection Time
DigitalOceanCompute, Storage, DNS~30 seconds
Microsoft AzureCompute, Storage, DNS~1 minute
Google CloudCompute, Storage, DNS~1 minute

API Key Authentication

These providers require manual API key entry:

ProviderCapabilitiesGuide
Amazon Web ServicesCompute, Storage, DNSIAM Access Keys
Hetzner CloudCompute only*API Token
VultrCompute, Storage, DNSAPI Key
Linode (Akamai)Compute, Storage, DNSPersonal Access Token
CloudflareStorage, DNSAPI Token
ScalewayCompute, Storage, DNSAccess + Secret Key
OVHcloudCompute, StorageApplication Keys

Note on Hetzner: Hetzner Cloud and Hetzner DNS Console are separate services with different API tokens. A Hetzner Cloud token only works for servers, not DNS.


Quick Start

Step 1: Navigate to Cloud Accounts

  1. Log in to app.oec.sh (opens in a new tab)
  2. Click Settings in the sidebar
  3. Select Cloud Accounts tab

Step 2: Add Your First Account

For OAuth providers (DigitalOcean, Azure, GCP):

  1. Click Add Account
  2. Click on your provider under "One-Click Connect"
  3. A new tab opens - authorize OEC.sh access
  4. You're redirected back - account connected!

For API Key providers (AWS, Hetzner, etc.):

  1. Click Add Account
  2. Click on your provider under "API Key Authentication"
  3. Enter your API credentials (follow provider-specific guide)
  4. Click Add Account to save

Step 3: Verify Connection

After adding an account:

  • Status should show Active (green badge)
  • Click the refresh icon to re-validate credentials
  • If status shows Error or Invalid, check your credentials

Understanding Capabilities

Each cloud account has specific capabilities based on the provider:

Compute

Allows OEC.sh to create and manage virtual servers:

  • Provision new servers automatically
  • View server specifications and resources
  • Manage SSH keys on cloud provider

Storage

Enables backup storage integration:

  • Store Odoo backups in provider's object storage
  • S3-compatible storage (AWS S3, DigitalOcean Spaces, Cloudflare R2, etc.)
  • Automatic backup policies

DNS

Provides automatic DNS record management:

  • Create/update A records for Odoo domains
  • Manage custom domains for environments
  • Automatic SSL certificate provisioning via Traefik

Best Practices

Security

  1. Use Least Privilege - Only grant permissions OEC.sh needs

    • AWS: Create dedicated IAM user with limited policies
    • Azure: Use app registration with minimal roles
    • GCP: Service account with specific permissions
  2. Rotate Credentials - For API key providers, rotate keys periodically

  3. One Account Per Environment - Consider separate accounts for production vs staging

Organization

  1. Name Accounts Descriptively - Use names like "Production - AWS" or "EU Hetzner"
  2. Set Default Accounts - Mark one account as default per provider for quick access
  3. Add Descriptions - Note what each account is used for

Troubleshooting

"Invalid credentials" Error

Possible causes:

  • API key was revoked or expired
  • OAuth token expired (click "Refresh" to renew)
  • Incorrect credentials entered

Solution:

  1. Verify credentials in your cloud provider console
  2. For OAuth: Click "Reconnect" to re-authorize
  3. For API keys: Edit account and enter correct credentials

"Insufficient permissions" Error

Possible causes:

  • IAM user/role doesn't have required permissions
  • OAuth app wasn't granted all required scopes
  • Resource quotas exceeded on cloud provider

Solution:

  1. Check provider-specific guide for required permissions
  2. Update IAM policy or re-authorize OAuth with correct scopes

Account Shows "Expired" Status

This happens when OAuth tokens expire and cannot be refreshed.

Solution:

  1. Click the Reconnect button on the account
  2. Re-authorize OEC.sh in the popup
  3. Account will update to "Active"

Cannot Find My Provider

If your preferred provider isn't listed:

  • BYOS Alternative: Add any Linux server via SSH (Add Server Guide)
  • Feature Request: Contact support to request provider integration

Provider Setup Guides

Choose your provider for detailed step-by-step instructions:


API Reference

For programmatic cloud account management, see the Cloud Accounts API.

# List cloud accounts
GET /api/v1/cloud-accounts
 
# Create cloud account
POST /api/v1/cloud-accounts
 
# Validate credentials
POST /api/v1/cloud-accounts/{id}/validate