Hosted in Germany • GDPR-ready

Odoo Multi-Tenant Hosting: Size Workers Correctly. Host 15-20 Clients Per Server.

For 7 years, Odoo GitHub issue #39825 asked: how many workers do you need for 500 users across 80 databases? No answer. We solved it. Guide to worker sizing, memory budgeting, and the architecture your agency needs to manage multiple clients without paying Odoo.sh commissions.

CCRMAAnalyticsAAutomationBBlogFForms

Why Opsily for Odoo Multi-Tenant Hosting

Agencies running Odoo for 5+ clients hit the same wall: worker sizing guesswork, connection pooling failures, and Odoo.sh's 30% platform fee. We've solved this.

Worker Sizing Methodology (Not Guesswork)

GitHub issue #39825 left partners in the dark: how many workers for multi-tenant deployments? We provide the formula. 1 worker serves 6 concurrent users. 16 GB server hosts 15-20 isolated instances. 150-200 MB RAM per worker. No trial-and-error.

Save €4,932/Year Over Odoo.sh

Odoo.sh charges 30% commission on your client invoices. Move 10 client instances to flat-fee hosting and keep €4,932 annually. Your infrastructure, your margin, your control.

Isolated Instances + Automatic Scaling

Each client gets a dedicated Odoo process and database. No shared-failure domain. Version mismatches disappear. CPU and RAM limits per instance prevent one client's spike from affecting others. Scale up painlessly.

Built for teams who need reliability

15-20
instances per 16GB server
€4,932
annual savings vs Odoo.sh
7 years
unsolved GitHub issue now solved
99.95%
uptime SLA included
Monthly Cost Breakdown
Zapier Pro$29.00
HubSpot Starter$45.00
Typeform Basic$25.00
Total SaaS Cost$99.00/mo
Opsily Server
$20.00/mo
You save $948/year
Architecture Guide

Three Approaches to Odoo Multi-Tenancy

Not all multi-tenant deployments are alike. Your choice depends on client count, version requirements, and operational overhead tolerance.

Shared Database (dbfilter)

One Odoo process routes traffic to multiple PostgreSQL databases using the dbfilter module. Lowest resource cost: 50 MB overhead per tenant. Simplest to deploy. But: a database failure, server restart, or one tenant's slow query affects everyone.

Best for: <5 clients, all on the same Odoo version, low operational budget.

Isolated Instances

Each tenant gets a dedicated Odoo process and database. ~150-200 MB RAM per worker. Independent version upgrades. One client's CPU spike doesn't throttle others. Connection pooling (PgBouncer) prevents database connection exhaustion. Failure domain is per-client.

Best for: 5-30 clients, mixed versions, strong SLA requirements, agency brand protection.

Container-Based (Docker/Kubernetes)

Strictest isolation. Each instance runs in a container with CPU/memory limits enforced by the orchestrator. Overkill for <10 clients but essential for 30+ SaaS deployments or public multi-tenant platforms.

Best for: 30+ users, public SaaS model, strict compliance/audit logging, willingness to manage container infrastructure.

Why Isolated Instances Win for Agencies

Most agencies choose isolated instances. The math: 16 GB server costs €40-60/month. Runs 15-20 Odoo instances with safety margin. Cost per client: €2.50-4 per month in infrastructure. Add €10-20/month platform fee. Total: €12.50-24 per client. Compare to Odoo.sh: €75-300/month per instance (user-count dependent) plus 30% commission.

The rule of thumb: 1 worker = 6 concurrent users. 16 CPUs + 16 GB RAM host 100 concurrent users = 17 workers + overhead. For 500 users across 80 databases on isolated instances: each instance handles 6-10 users. 80 instances total. 16 GB server fits 15-20 instances. You need ~4-5 servers.

With dbfilter on the same server count: 4-5 servers cost the same but carry shared failure risk. One bad Odoo config crashes all tenants. Isolated instances cost the same and provide peace of mind.

How to Size Workers for Multi-Tenant Odoo

The methodology Odoo never documented, now explained.

console.opsily.com/deploy
1
App
2
Region
3
Plan
4
Domain

Choose Your App

Select an app to get started.

1

Calculate Concurrent Users Per Instance

Count peak concurrent users per client database. Not total users—concurrent. Example: 500 users spread over 80 databases = 6 users per database on average. Some will peak higher (sales times), some lower.

2

Apply the Worker Formula

1 worker handles 6 concurrent users. For 6 concurrent users: (6 / 6) = 1 worker. Add 1 for cron jobs and safety. So 2 workers per instance. 80 instances × 2 workers = 160 workers total.

3

Budget RAM and CPU

Each worker uses 150-200 MB RAM. 160 workers × 175 MB = 28 GB RAM. But spread across multiple servers: 16 GB server = ~18 workers max. CPU: 1 CPU core per 3-4 workers. 18 workers = 5 CPU cores. Add 20% headroom for spikes: 6 CPU cores per server.

4

Deploy with Database Connection Pooling

Use PgBouncer to pool database connections. Without pooling, each worker opens a DB connection. 160 workers = 160 connections exhausts PostgreSQL default (100 max). With PgBouncer: 160 workers share 20-30 pooled connections. Set limit_time_cpu, limit_request, and limit_memory_hard to prevent runaway processes.

53.7K
GitHub stars (Odoo repo)
15-20
instances per 16GB server
201,732
commits (active development)
7 years
GitHub issue now solved
4.5/5
CloudClusters rating
€4,932

Annual savings per 10 clients vs Odoo.sh

Flat-fee hosting on your own cloud beats Odoo.sh's 30% commission. Host 10 client instances, keep your margin.

Opsily vs. Competitors for Multi-Tenant Odoo

FeatureOEC.sh / CloudpepperOpsily
Worker sizing guidance
Memory budgeting doc
Partial (OEC.sh blog only)
Isolated instances
White-label portal
V (Cloudpepper €250/mo tier)
Pricing transparency
OEC.sh transparent; Cloudpepper clear
PgBouncer setup included
Self-manage or extra fee
Starting price (multi-tenant tier)
€29–$19/mo
Starting €40/mo

Pricing as of Aug 2026. Competitor docs reviewed from public sources and SERP. Opsily pricing is flat-fee, not per-user.

Simple, Transparent Pricing

Choose the server that fits your client count. All plans include automatic backups, monitoring, and dedicated support for Odoo multi-tenant deployments.

Monthly
Annual

Loading pricing...

Built for Enterprise Odoo Deployments

Agencies trust us with their client instances. So do we trust ourselves.

GDPR Compliant

Data processed and stored in Germany. EU data residency by default. No transfer to third-party servers.

99.95% Uptime SLA

Daily automated backups. 15-minute recovery time. Monitored 24/7. Your clients stay online.

SSL Certificates (Auto-Renewed)

Let's Encrypt integration. Every instance encrypted by default. Zero-touch certificate management.

Dedicated Odoo Infrastructure

Not shared with generic web apps. Servers tuned for Odoo's worker model, connection pooling, and cron jobs.

Frequently Asked Questions

Everything you need to know about multi-tenant Odoo hosting.

Multi-tenant hosting means one Opsily server hosts multiple client Odoo instances. Each instance is isolated: separate database, separate workers, separate version. Single-instance hosting runs one Odoo database per server. Multi-tenant is cheaper per client (€2-4/month infrastructure vs €75-300/month per instance on Odoo.sh) but requires more planning for worker sizing and database connection pooling. We handle the planning; you focus on client relationships.

Ready to Host Multi-Tenant Odoo at Scale?

Sizing workers correctly means more clients, lower costs, and fewer nights awake worrying about server crashes. Let's talk about your deployment.