oCoreoCore Docs

Requirements

Hardware, software, and network requirements for self-hosting oCore.

Before deploying oCore, review these requirements to ensure your infrastructure is ready.

Hardware Requirements

oCore resource usage scales with the number of managed Odoo instances and concurrent users.

Minimum (Small Team)

For teams managing fewer than 10 Odoo instances:

ResourceSpecification
CPU2 vCPU
RAM4 GB
Storage40 GB SSD
Network100 Mbps

This configuration is suitable for small agencies or internal teams with modest workloads.

For teams managing up to 50 Odoo instances:

ResourceSpecification
CPU4 vCPU
RAM8 GB
Storage100 GB SSD
Network500 Mbps

This is the recommended starting point for most production deployments.

Large (Agency Scale)

For organizations managing 50+ Odoo instances:

ResourceSpecification
CPU8+ vCPU
RAM16+ GB
Storage500 GB SSD (NVMe recommended)
Network1 Gbps

At this scale, consider separating the PostgreSQL database onto its own server. See the Scaling guide for details.

Software Requirements

Docker

oCore runs entirely in Docker containers. You need:

  • Docker Engine 24.0 or later
  • Docker Compose v2 (included with Docker Desktop, or install the docker-compose-plugin)

Verify your installation:

docker --version
# Docker version 24.0+

docker compose version
# Docker Compose version v2.x.x

Operating System

oCore is tested on:

  • Ubuntu 22.04 LTS, 24.04 LTS (recommended)
  • Debian 12 (Bookworm)
  • Rocky Linux 9
  • Amazon Linux 2023

Any Linux distribution with Docker 24+ support will work. macOS and Windows via Docker Desktop are suitable for development but not recommended for production.

PostgreSQL

The included Docker Compose file runs PostgreSQL 16 Alpine. If you prefer to use an external database:

  • PostgreSQL 15 or 16
  • Extensions: uuid-ossp (typically included by default)
  • SSL connections recommended for external databases

Network Requirements

Ports

The following ports must be accessible:

PortProtocolServicePurpose
80TCPReverse proxyHTTP (redirect to HTTPS)
443TCPReverse proxyHTTPS (dashboard and API)
2222TCPBackendSSH gateway for Odoo instance access

The backend API server listens on port 8080 internally but should not be exposed directly. Route traffic through a reverse proxy instead.

DNS

Configure DNS records pointing to your server's public IP:

Record TypeNameValue
Aocore.example.comYour server IP
A (optional)docs.ocore.example.comYour server IP

If using Caddy or Certbot for TLS certificates, DNS must resolve before starting the stack.

Firewall

Example firewall configuration using ufw:

# Allow SSH (management)
sudo ufw allow 22/tcp

# Allow HTTP/HTTPS (reverse proxy)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Allow SSH gateway (Odoo instance access)
sudo ufw allow 2222/tcp

# Enable firewall
sudo ufw enable

Environment Variables

oCore requires several environment variables for production operation. At minimum:

VariableRequiredDescription
DATABASE_URLYesPostgreSQL connection string
JWT_SECRETYesSecret key for JWT tokens (min 32 characters)
APP_URLYesPublic URL of your oCore dashboard
SMTP_HOSTYesMail server for transactional emails
SSH_ENCRYPTION_KEYProductionEncryption key for stored SSH credentials (min 32 chars)

See the Environment Variables reference for the complete list.

Pre-deployment Checklist

Before proceeding to the Docker Compose setup:

  • Server meets minimum hardware requirements
  • Docker 24+ and Docker Compose v2 installed
  • DNS records configured and propagated
  • Firewall rules applied (ports 80, 443, 2222)
  • Generated strong secrets for JWT_SECRET and SSH_ENCRYPTION_KEY:
# Generate a 64-character random secret
openssl rand -base64 48
  • SMTP credentials ready for transactional email delivery
Was this page helpful?