Deploy
Twenty CRM self hosted. Open source CRM on a server we run.
Run Twenty v1.15, the open source CRM for people, companies, deals and pipelines, as a one-click template on a dedicated server we provision, secure and run. Your customer data stays on your server. Nobody counts your seats.
Own the relationship and the database it lives in.
One click. Four containers. The template deploys in about fourteen minutes.
no signup
+$5.00 added at signup · deployment choice preserved · no card
What is Twenty CRM self hosted?
A real CRM.
On a server in full view.
What it is. Twenty is an open source CRM for companies, people, opportunities and sales workflows, with kanban and table views, custom objects and fields, and GraphQL and REST APIs. Here it deploys as a one-click template onto a dedicated server we run.
Who it is for. Teams who want their pipeline and contact data on a server they control, and who would rather not pay per seat as they hire.
When to use it. From about the third user, when a per-seat CRM bill starts growing with headcount, or when customer data cannot sit in someone else's SaaS.
Twenty CRM self hosted requirements
What Twenty needs, and what we already provide.
Twenty CRM self hosted means four containers: the app, a background worker, PostgreSQL and Redis, behind a reverse proxy with TLS. The template ships all of it on one server, so the only system requirement you choose is the server size.
| What Twenty needs | This deployment |
|---|---|
| Twenty version | v1.15, pinned |
| Database | PostgreSQL 16 |
| Cache | Redis 7, cache only |
| Job queue | pg-boss, inside PostgreSQL |
| Containers | App, background worker, PostgreSQL, Redis |
| Workspace mode | Single workspace |
| Memory | 8 GB recommended |
| Architecture | x86 or ARM |
| APIs | GraphQL and REST |
| SMTP is not configured by default | |
| File attachments | Server volume by default; the S3 variables exist and are empty |
| API rate limit | 100 requests per 100 seconds, upstream's default |
| What Selfhost.dev provides | Detail |
|---|---|
| Server | Dedicated project server, provisioned and run by us |
| Regions | Falkenstein, Nuremberg, Helsinki, Ashburn, Hillsboro, Singapore. Which locations are open depends on the machine you pick |
| HTTPS | Automatic, wildcard subdomain or your own domain |
| Backups | Optional. Daily, whole-VM, last 7 kept, +20% of the server price |
| Monitoring | Metrics, logs, and a health check every 60 seconds |
| Deploy time | About 14 minutes for the template, once the server exists |
| Per-seat fee | None |
| MCP tools | 189 across 31 modules |
Specifications current as of September 2026.
What's in the Twenty CRM deployment
Four containers. One click.
Four containers on one project server, deployed together. Database migrations run automatically on first boot.
| Component | Version | What it does |
|---|---|---|
| Twenty | v1.15 | CRM app: companies, people, opportunities, kanban and table views, custom objects and fields |
| Background worker | Included | Background job processing |
| PostgreSQL | 16 | Every CRM record and the job queue. Migrations run automatically |
| Redis | 7 | Caching |
| TLS and routing | Managed by Selfhost.dev | Public HTTPS URL, auto-renewed certificates |
One workspace, invited users
The deploy runs in single-workspace mode. The first sign-up becomes the administrator, and everyone after that is invited into that workspace rather than creating their own.
Your own Postgres and Redis
Twenty gets a dedicated PostgreSQL 16 and Redis 7 on your project server, not a shared tenancy. Both are included in the server price with no separate service fee.
What we set up for you
The wiring the stock image leaves to you.
Twenty's own Docker Compose gets you four containers. It does not get you a running CRM on a public address, and several of the gaps are ones you only find after the first redeploy.
Your sessions survive a redeploy
APP_SECRET signs every session and token Twenty issues. The stock compose file generates a new one whenever it cannot find the old one, which means the first redeploy signs your whole team out. We generate it once and persist it, so a redeploy is a redeploy and not a logout.
Two containers, one set of migrations
The app and the worker run the same image, so both would try to run the database migrations at boot. We enable them on the web container and disable them on the worker, so two containers can never race the same migration. We also relax the readiness gate and give it a five-minute start window, because a first boot that is running migrations is not an unhealthy one and should not be killed for taking its time.
Nothing resolves across stacks
Your Postgres and Redis get per-service DNS names, not postgres and redis. A generic name on a shared Docker network resolves to whatever answers first, and Twenty is the template that proved it: it crash-looped in production before the naming was fixed. Behind that sits a default-deny firewall with only 22, 80 and 443 open, a Let's Encrypt certificate per hostname, and one virtual machine per customer.
No Selfhost.dev template ever boots on a documented default password. Where an app ships one, we replace it before the container is reachable, and if that seeding fails the instance boots locked rather than open.
How to self host Twenty CRM in 5 steps
From zero to live.
No server to set up.
Five steps. No Docker Compose, no Postgres to wire up, no certificate to renew.
1. Create a project
Name it and pick a server. Twenty runs four containers, so 8 GB is the size we recommend. We provision it, no cloud account to connect.
2. Add the Twenty template
Add service → Template → Twenty. All four containers deploy together and database migrations run on first boot. Six provisioning stages, about fourteen minutes, then we email the URL and credentials.
3. Claim the workspace · do it now
No admin password is set at deploy. The first person to open the URL creates the owner account and workspace and becomes the administrator. Claim it yourself immediately, before you share the address.
4. Configure SMTP · before you invite anyone
Email is not configured by default. Twenty needs your SMTP details before invitations and password-reset emails will send, so set that up before you add the team.
5. Point your domain and invite the team
Keep the wildcard subdomain or add your own: set DNS, verify a TXT record, and HTTPS provisions and renews automatically. Then import your contacts and invite the team.
What we run, and what you run
The honest split.
We manage the infrastructure. You own what happens inside Twenty. This is managed hosting, not managed CRM administration.
| We run | You run |
|---|---|
| Server provisioning and capacity | Your records, pipeline and custom objects |
| PostgreSQL 16 and Redis 7 containers | Your workspace users and who you invite |
| Reverse proxy, TLS, renewals | Your SMTP configuration |
| Firewall and network rules | Data retention inside Twenty |
| Optional daily backups | Your Twenty version, and when to move to a newer one |
| Metrics, logs, and a health check every 60 seconds |
We pin the template to a tested Twenty version, currently v1.15.
What an 8 GB server handles
What else fits on the box, and where Twenty's own ceiling sits.
A project server holds up to five workloads in total, counting apps, databases and one-click apps together. The platform reserves 1,536 MB for the host, a heavy workload reserves 2,048 MB and a light one 512 MB. Twenty is classed heavy. An 8 GB server carries three heavy workloads and one light one in total, so Twenty leaves room for two more heavy services and a light one alongside it: the CRM does not have to be the only thing on the machine. A 4 GB server carries one heavy and one light, which is Twenty plus a single small sidecar and nothing else. That is why 8 GB is the size we recommend rather than the size we require: the backend will not refuse a 4 GB box if you pick one deliberately.
Twenty's own API ceiling is 100 requests per 100 seconds per client. That is upstream's default and we have not changed it, so an integration that polls hard is the thing to size for, not the number of people logging in.
Why host Twenty CRM on Selfhost.dev
Twenty CRM, the easy way.
On a server you control.
Your customer data on your server
Every record lives on a dedicated project server with live metrics and full logs, not in a SaaS you rent by the seat.
Custom domain + SSL
Add your domain, verify DNS and HTTPS is provisioned and renewed automatically. A wildcard subdomain works out of the box.
Drive it from your editor
189 MCP tools across 31 modules. Create the project, deploy the template, manage domains and env vars from Claude or Cursor.
Twenty CRM self hosted cost: what you actually pay
One server rate. No seats to count.
You pay for the server and nothing else. An 8 GB server is $0.03/hr, about $23 a month in our EU locations if you leave it running, billed hourly against prepaid credits. Adding users does not change the bill, and neither does the traffic they generate.
| What you pay for | Cost |
|---|---|
| 8 GB project server | $0.03/hr in our EU locations, $23.36/mo at 730 hours |
| Twenty template, worker, PostgreSQL 16, Redis 7 | $0 |
| HTTPS and custom domain | $0 |
| Users | $0, no per-seat fee |
| Bandwidth | $0. Traffic is included |
| Daily server backups | Optional. Daily, whole-VM, last 7 kept, +20% of the server price |
Monthly figures assume 730 hours. Rates are for our EU locations; US and Singapore machines are different types at different rates, priced live in the calculator.
What running it here actually promises
Five things we can hold you to.
Every service is health-checked every 60 seconds. A stalled deploy is retried automatically, not abandoned. A deploy is never reported done until the URL actually answers. Retrying a create never leaves you paying for two copies. Your Twenty version never moves on its own: v1.15 stays v1.15 until you decide otherwise.
Twenty's template deploys in about fourteen minutes, against a twenty-minute limit. It is one of the slower templates we run, because four containers and a first-boot migration is a real amount of work, and we would rather tell you that than have you watch a spinner.
Working out what a self hosted CRM costs?
Tell us your team size and we will send back the server size, the monthly cost and what it replaces on your current CRM bill. One email, no newsletter.
Twenty Cloud vs Twenty self hosted
Two bills with different shapes, and where they cross.
Twenty sells its own hosted product. Twenty Cloud Pro is $12 per user per month on monthly billing, or $9 if you commit to a year. The Community edition deployed here is free under AGPL-3.0 with no user limit, and you pay for the server it runs on. One bill grows with your team and the other does not, so they cross at two users on monthly billing, or three if you pay Twenty annually. Below that, Twenty Cloud is cheaper and worth taking. Above it, the gap only widens.
| Twenty Cloud Pro | Twenty self hosted here (8 GB, EU) | |
|---|---|---|
| Pricing model | Per user, per month | Per server hour |
| 1 user | $12/mo | $23.36/mo |
| 2 users | $24/mo | $23.36/mo |
| 3 users | $36/mo | $23.36/mo |
| 10 users | $120/mo | $23.36/mo |
| 25 users | $300/mo | $23.36/mo |
| Adding a user | Increases the bill | No change |
| SSO, SAML, row-level permissions | Organization plan, $25/user/mo | The same Organization licence, bought from Twenty |
| Where your data lives | Twenty's infrastructure | Your dedicated server |
Twenty Cloud list prices as published, checked 15 September 2026 at Twenty pricing: Pro $12 and Organization $25 per user per month on monthly billing, or $9 and $19 on yearly, which Twenty shows as 25% off. Our figure is an 8 GB server in our EU locations at 730 hours.
What the Community edition includes
Everything the template deploys is Twenty Community: companies, people, opportunities, custom objects and custom fields, kanban and table views, the GraphQL and REST APIs, and no user limit. Twenty's own LICENSE excludes a small set of files marked @license Enterprise from the AGPL, and SSO, SAML and row-level permissions live in that proprietary package. Those are a licence key you buy from Twenty, priced the same whether you run on their cloud or on your own server: Twenty's pricing page lists self hosting at $0 per user per month on Pro, and the same $25 on Organization.
Self hosted CRM vs per-seat CRM
Where the two cross over.
A hosted CRM charges per seat per month, so the bill grows every time you hire. A self hosted CRM charges for one server, so it does not. The two cross over at about three users.
| HubSpot Sales Hub | Twenty self hosted here (8 GB, EU) | |
|---|---|---|
| Pricing model | Per seat, per month | Per server hour |
| Free tier | Up to 2 users | $5 in free credit at signup |
| Entry paid plan | $20/seat/mo (Starter, monthly) | $23.36/mo flat |
| 3 users | $60/mo | $23.36/mo |
| 10 users | $200/mo | $23.36/mo |
| 25 users | $500/mo | $23.36/mo |
| 10 users on Professional | $1,000/mo, plus $1,500 one-time onboarding | $23.36/mo |
| Adding a user | Increases the bill | No change |
| Where your data lives | HubSpot's infrastructure | Your dedicated server |
HubSpot Sales Hub list prices as published, 28 August 2026. Source: HubSpot pricing.
When a hosted CRM is the better choice
HubSpot's free tier covers two users at no cost, and no self hosted setup beats free. It also comes with support, onboarding and email that works without you configuring SMTP. Self hosting starts paying from about the third user, and the gap widens with every hire.
Still deciding between CRMs rather than between hosting models? We compared eight open source CRMs on what each one needs running underneath it. Twenty is the pick there for teams who want a modern interface and can run Redis alongside it.
What size server does Twenty CRM need?
Four containers, one server.
Twenty is a heavier stack than most one-click apps: the app, its background workers, its own Postgres and its own Redis all run on your project server. The platform classes it as heavy, which means it wants more free memory and disk than a light app before it will deploy, so 8 GB is the size we recommend. It is still one project server rate, with no seats to count.
Twenty CRM self hosted limitations
What this does not do.
Real constraints, easier to plan around than to discover.
- SMTP is not configured by default. Invitations and password-reset emails will not send until you set it up.
- File attachments are stored on the server volume, not S3.
- The first person to open the URL claims the instance and becomes the administrator. Claim it immediately.
- Single-workspace mode. Users are invited into the one workspace rather than creating their own.
- The sign-up window is open until you close it. Twenty disables sign-up on its own once the first workspace exists, but until that happens the URL will accept whoever reaches it first. Nothing on our side can close that window for you, which is why step 3 says claim it immediately.
- Pick your size at the start. A server cannot be resized in place, so moving to a bigger box means a new project and a data migration.
- One project server holds up to five things total, counting apps, databases and one-click apps together.
Twenty CRM backup and restore
One image covers the whole server, and a root shell gets you your own copy whenever you want it.
What a backup covers
Daily, optional, 20% of the server price. There is no separate data volume, so one image is every container, the PostgreSQL database and every Docker volume together. The last seven are kept, rotating. A restore brings back a working Twenty, not a database you then have to re-wire.
They do not survive deletion
Backup images live with the server. If the server is destroyed, they go with it. Backups protect you from mistakes, not from an unpaid bill.
Your own copy, whenever you want one
Add your public key to the project server and you have root over SSH. From there docker exec against the Postgres container gives you a pg_dump of every CRM record, and a tar of the twenty-local-storage volume gives you every attachment. We never see the private half of that key.
Nothing here is designed to make leaving hard
Twenty exports to CSV from inside the app, and root SSH gives you everything byte for byte. There is no export button and we will not pretend there is one, but there is no lock either.
Related guides.
Frequently asked questions
Can I self host Twenty CRM on Selfhost.dev?
How much does it cost to self host Twenty?
Do I set an admin password when I deploy Twenty?
Why does Twenty want an 8 GB server?
Can I use my own domain with self hosted Twenty?
Can I deploy Twenty with AI?
Is Twenty CRM self hosted cheaper than a per-seat CRM?
What do I need to self host Twenty CRM?
Do email invitations work out of the box?
Where are file attachments stored?
What happens if my credit balance reaches zero?
About Selfhost.dev
Selfhost.dev is a managed self hosting platform for developers and small teams. Open source apps and databases on dedicated servers you control, billed by the hour with no subscription tiers.
Best for: Twenty CRM, n8n, Supabase and managed PostgreSQL, MySQL, Redis and ClickHouse.