Skip to content

Deploy Odoo on Oracle Cloud Free Tier: Complete Guide (2026)

DeployMonkey Team · March 23, 2026 11 min read

Why Oracle Cloud for Odoo?

Oracle Cloud Infrastructure (OCI) offers the most generous free tier of any cloud provider. The Always Free tier includes ARM-based compute instances with up to 4 OCPUs (equivalent to 4 vCPUs) and 24GB RAM — resources that would cost $50-100 per month on other providers. For Odoo, this is enough to run a production instance serving 50-100 users at zero cost.

The catch: ARM (Ampere A1) instances require ARM-compatible software. Odoo runs perfectly on ARM with the official Docker image or native installation on Ubuntu ARM.

Oracle Cloud Always Free Resources

ResourceFree AllowanceOdoo Use
Ampere A1 Compute4 OCPU, 24GB RAMOdoo server
Boot Volume200GB totalOS + Odoo + DB
Block Volume200GB totalAdditional storage
Object Storage20GBBackups
Outbound Data10TB/moMore than enough
Load Balancer1 flexible LBSSL termination
AMD VM (E2.1)2 instances, 1/8 OCPU eachTiny, not for Odoo

Step 1: Create Oracle Cloud Account

  1. Go to cloud.oracle.com and sign up
  2. You need a credit card for verification (you will not be charged for Always Free resources)
  3. Select your home region (cannot be changed later)
  4. Wait for account activation (usually instant)

Step 2: Create ARM Instance

  1. Go to Compute → Instances → Create Instance
  2. Name: odoo-server
  3. Image: Ubuntu 24.04 (Canonical)
  4. Shape: VM.Standard.A1.Flex (Ampere ARM)
  5. OCPU count: 4, Memory: 24 GB
  6. Boot volume: 100 GB
  7. Add your SSH public key
  8. Create

Note: ARM instances may show "Out of capacity" in popular regions. Try different availability domains, or try during off-peak hours. Persistence pays off.

Step 3: Configure Security Lists

Oracle Cloud blocks all ingress traffic by default. Open the required ports:

  1. Go to Networking → Virtual Cloud Networks → your VCN → Security Lists
  2. Add ingress rules for ports 80, 443, and 22 (SSH)
# Also open ports on the instance firewall
ssh ubuntu@YOUR_OCI_IP
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Step 4: Install Odoo

# Update system
sudo apt update && sudo apt upgrade -y

# Install PostgreSQL
sudo apt install -y postgresql
sudo -u postgres createuser --createdb odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD 'secure_pw';"

# Install Odoo dependencies
sudo apt install -y git python3-pip python3-dev python3-venv \
    libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev \
    libldap2-dev build-essential libssl-dev libffi-dev \
    libjpeg-dev libpq-dev npm

# Create Odoo user and clone
sudo adduser --system --home=/opt/odoo --group odoo
sudo su - odoo -s /bin/bash -c '
git clone https://github.com/odoo/odoo.git --depth 1 --branch 19.0 /opt/odoo/odoo
python3 -m venv /opt/odoo/venv
source /opt/odoo/venv/bin/activate
pip install --upgrade pip wheel
pip install -r /opt/odoo/odoo/requirements.txt
'

# wkhtmltopdf for ARM
sudo apt install -y wkhtmltopdf

Step 5: Configure and Start

# Create odoo.conf
sudo tee /etc/odoo.conf > /dev/null << 'EOF'
[options]
admin_passwd = your_master_password
db_host = localhost
db_port = 5432
db_user = odoo
db_password = secure_pw
addons_path = /opt/odoo/odoo/addons
data_dir = /opt/odoo/data
workers = 4
max_cron_threads = 1
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_time_cpu = 600
limit_time_real = 1200
proxy_mode = True
EOF

# Create systemd service
sudo tee /etc/systemd/system/odoo.service > /dev/null << 'EOF'
[Unit]
Description=Odoo 19
After=postgresql.service

[Service]
Type=simple
User=odoo
ExecStart=/opt/odoo/venv/bin/python /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable odoo
sudo systemctl start odoo

Step 6: Nginx + SSL

sudo apt install -y nginx certbot python3-certbot-nginx

# Configure nginx
sudo tee /etc/nginx/sites-available/odoo > /dev/null << 'CONF'
upstream odoo {
    server 127.0.0.1:8069;
}
server {
    listen 80;
    server_name erp.yourdomain.com;
    
    location / {
        proxy_pass http://odoo;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
CONF

sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d erp.yourdomain.com

ARM Performance for Odoo

Ampere A1 ARM processors deliver excellent per-core performance. Benchmarks show ARM Odoo performance within 5-10% of equivalent x86 instances, sometimes faster for multi-threaded workloads. The 4 OCPU / 24GB RAM configuration handles Odoo comfortably:

  • 4 Odoo workers + 1 cron thread
  • PostgreSQL with 4GB shared_buffers
  • Comfortable headroom for nginx and system processes

Limitations of Free Tier

  • No SLA (free resources can theoretically be reclaimed, though this is rare)
  • ARM shape availability can be limited in popular regions
  • No managed database in free tier (you run PostgreSQL yourself)
  • Object storage limited to 20GB for backups

DeployMonkey + Oracle Cloud

DeployMonkey supports Oracle Cloud as a deployment target. Connect your OCI account and deploy Odoo instances on the free tier with automated configuration, monitoring, and backup management.