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.
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
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.
Choose Your App
Select an app to get started.
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.
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.
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.
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.
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
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.
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.