oCoreoCore Docs

Instances

Create and manage Odoo instances with full lifecycle control, module management, and terminal access.

An instance is a running Odoo application deployed as a Docker container on one of your managed servers. oCore supports Odoo versions 14.0 through 19.0 in Community (CE), Enterprise (EE), and OCA (OCB) editions. This page covers the entire instance lifecycle: creation, management, module installation, file editing, terminal access, and deletion.

Instance Management

View and manage all your Odoo instances.

Open in Dashboard

Creating an Instance

Navigate to Instances in the sidebar and click Create Instance.

Fill in the instance details:

FieldRequiredDescription
NameYesDisplay name (max 100 characters)
SlugYesURL-safe identifier (2-50 chars, lowercase alphanumeric + hyphens)
ServerYesTarget server to deploy on
Odoo VersionYesOne of: 14.0, 15.0, 16.0, 17.0, 18.0, 19.0
Odoo EditionNoce (Community), ee (Enterprise), or ocb (OCA) -- defaults to ce
TemplateNoCreate from an existing instance template
Addons PathNoCustom addons directory path
Environment VarsNoKey-value pairs for instance configuration

Optionally link to a project by specifying:

  • Project ID -- An existing project
  • Branch -- Git branch to track
  • Environment Type -- production, staging, or development

Click Create. oCore enqueues a provisioning job that pulls the Odoo Docker image, creates the container, allocates ports, and starts the instance.

curl -X POST https://ocore.example.com/api/instances \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Odoo 18",
    "slug": "my-odoo-18",
    "serverId": "SERVER_UUID",
    "odooVersion": "18.0",
    "odooEdition": "ce",
    "envVars": {
      "WORKERS": "4"
    }
  }'
ocore instance create \
  --name "My Odoo 18" \
  --slug my-odoo-18 \
  --server SERVER_UUID \
  --version 18.0 \
  --edition ce

Port Allocation

oCore automatically allocates ports for each instance:

PortPurpose
HTTP PortMain Odoo web interface (base port)
Longpolling PortReal-time bus for live chat, notifications (base + 1)

Ports are allocated starting from a base of 10000 with a gap of 10 between instances. You can view the assigned ports on the instance detail page.

Auto-Subdomain

Each instance gets an automatically generated subdomain based on its slug (e.g., my-odoo-18.ocore.example.com) for quick access without custom domain configuration.

Instance Lifecycle

Control your instance state from the dashboard or API using lifecycle actions.

Available Actions

ActionDescription
StartStart a stopped instance container
StopGracefully stop the running container
RestartStop and start the container (useful after config changes)
curl -X POST https://ocore.example.com/api/instances/{instanceId}/control \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "restart"}'
ocore instance restart <instance-id>

Instance Statuses

StatusDescription
pendingCreated, provisioning not started
provisioningContainer being set up
runningActive and serving requests
stoppedContainer stopped
errorProvisioning or runtime error
removingDeletion in progress

The instance detail page shows the restart count and last restart timestamp for operational awareness.

Accessing the Instance

Once running, access your Odoo instance through:

  1. Web URL -- The auto-generated subdomain or a custom domain attached to the instance
  2. Admin Password -- The default Odoo admin password (set during creation or via environment variables)
  3. SSH Gateway -- Connect directly via ssh -p 2222 slug@ocore.example.com (see SSH Access)

Instance Settings

Update instance configuration from the settings tab:

SettingDescription
NameDisplay name (max 100 chars)
Addons PathCustom addons directory path
Environment VariablesKey-value pairs injected into the container
WorkersNumber of Odoo worker processes
Active ColorBlue-green deployment color indicator
curl -X PUT https://ocore.example.com/api/instances/{instanceId} \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Odoo 18 Production",
    "envVars": {"WORKERS": "6", "LIMIT_MEMORY_HARD": "2684354560"}
  }'
ocore instance update <instance-id> --name "My Odoo 18 Production"

Module Management

oCore provides built-in module management for installing, updating, and browsing Odoo modules directly from the dashboard.

Installing Modules

Browse the available modules list (sourced from the instance's addons path) and install them with a single click or via the API. The module installation runs inside the Odoo container and reports progress in real time.

Updating Modules

Trigger module updates after deploying new code. oCore runs odoo -u <module> inside the container and streams the output.

File Editor

The built-in file editor lets you browse and edit files inside the running instance container without SSH access.

Features

  • File tree browser -- Navigate the instance filesystem
  • Syntax-highlighted editor -- Edit Python, XML, CSV, and configuration files
  • Save and apply -- Changes are written directly to the container volume

File Editor

Browse and edit files inside your Odoo instance.

Open in Dashboard

Production Editing

Direct file edits bypass version control. For production instances, use the deployment pipeline instead. The file editor is best suited for development and debugging.

Web Terminal and Odoo Shell

Web Terminal

The web terminal provides a browser-based shell session inside the instance container. Use it for:

  • Running Odoo commands (odoo scaffold, odoo shell)
  • Checking logs (tail -f /var/log/odoo/odoo.log)
  • Debugging issues interactively

Odoo Shell

The dedicated Odoo shell gives you a Python REPL connected to the running Odoo instance database. Use it for:

  • Querying records: env['res.partner'].search_count([])
  • Running one-off scripts
  • Debugging data issues

Web Terminal

Open a terminal session inside your Odoo instance.

Open in Dashboard

Domains

Attach custom domains to your instance for production access. See the Domains and DNS page for detailed instructions.

Each instance can have multiple domains with one marked as primary. oCore manages SSL certificates automatically.

Deleting an Instance

Deleting an instance removes the Docker container and its associated data from the server.

Data Loss Warning

Instance deletion is permanent. Back up your database and filestore before deleting. Consider creating a backup or snapshot first.

curl -X DELETE https://ocore.example.com/api/instances/{instanceId} \
  -H "Authorization: Bearer $TOKEN"
ocore instance delete <instance-id>

The instance status changes to removing and a background job handles cleanup. The API returns 202 Accepted.

Required Permissions

Instance management requires the manage:instances permission. Users with Owner, Admin, or a custom role with this permission can create, update, control, and delete instances.

Troubleshooting

Instance stuck in "provisioning"

  • Check that the target server is in active status
  • Review the provisioning logs on the server detail page
  • Verify Docker is running on the server: docker ps
  • Check for port conflicts on the server

Instance shows "error" after creation

  • View the instance logs for specific error messages
  • Common causes: Docker image pull failure (network issue), insufficient disk space, port already in use
  • Try deleting and recreating the instance

Cannot access the Odoo web interface

  • Verify the instance is in running status
  • Check that the server's firewall allows traffic on the assigned HTTP port
  • If using a custom domain, verify DNS resolution (see Domains and DNS)
  • Check the reverse proxy configuration on the server

Module installation hangs

  • Open the web terminal and check for Odoo process locks
  • Restart the instance and retry the module installation
  • Check the Odoo log for dependency errors

wkhtmltopdf issues

  • The instance detail shows wkhtmltopdfStatus and wkhtmltopdfVersion
  • If wkhtmltopdf is not installed, PDF report generation will fail
  • oCore installs wkhtmltopdf during provisioning; if missing, check provisioning logs
Was this page helpful?