One workspace, invited users
The deploy runs in single-workspace mode. The first sign-up becomes the administrator. Everyone after that is invited into that workspace rather than creating their own.
Run Twenty v2, 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.
One click. Four containers. The template deploys in about fourteen minutes.
no signup
+$5.00 added at signup · deployment choice preserved · no card
Own the relationship and the database it lives in.
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 plus 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 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.
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 | Twenty v2, pinned to a tested release |
| Database | PostgreSQL 16 |
| Redis | Redis 7 |
| Job queue | BullMQ, on Redis |
| 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 | 216 across 32 modules |
Specifications current as of September 2026.
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 | v2 | CRM app: companies, people, opportunities, kanban and table views, custom objects and fields |
| Background worker | Included | Background job processing |
| PostgreSQL | 16 | Every CRM record. Migrations run automatically |
| Redis | 7 | The background job queue (BullMQ) |
| TLS and routing | Managed by Selfhost.dev | Public HTTPS URL, auto-renewed certificates |
The deploy runs in single-workspace mode. The first sign-up becomes the administrator. Everyone after that is invited into that workspace rather than creating their own.
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.
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. Several of the gaps are ones you only find after the first 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.
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.
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. 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. If that seeding fails, the instance boots locked rather than open.
From zero to live. No server to set up.
Five steps. No Docker Compose, no Postgres to wire up, no certificate to renew.
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.
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.
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.
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.
Keep the wildcard subdomain or add your own: set DNS and verify a TXT record, then HTTPS provisions and renews automatically. Then import your contacts and invite the team.
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 release, currently on the v2 line.
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.
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.
Twenty CRM, the easy way. On a server you control.
Every record lives on a dedicated project server with live metrics and full logs, not in a SaaS you rent by the seat.
Add your domain, verify DNS and HTTPS is provisioned and renewed automatically. A wildcard subdomain works out of the box.
216 MCP tools across 32 modules. Create the project, deploy the template and manage domains from Claude or Cursor.
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. 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.
Five things we can hold you to.
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. We would rather tell you that than have you watch a spinner.
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.
Two bills with different shapes and where they cross.
Twenty sells its own hosted product. One bill grows with your team and the other does not.
| 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; $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.
Everything the template deploys is Twenty Community: companies, people, opportunities, custom objects and custom fields, kanban and table views, the GraphQL and REST APIs. There is no user limit. Twenty's own LICENSE excludes a small set of files marked @license Enterprise from the AGPL. 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.
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.
Four containers, one server.
Twenty is a heavier stack than most one-click apps.
What this does not do.
Real constraints, easier to plan around than to discover.
One image covers the whole server. A root shell gets you your own copy whenever you want it.
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.
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.
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. A tar of the twenty-local-storage volume gives you every attachment. We never see the private half of that key.
Twenty exports to CSV from inside the app. 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.
Yes. Twenty is available as a one-click template you deploy onto your project server. Selfhost.dev provisions and runs the server; you open Twenty and create your workspace.
You pay for the project server it runs on and nothing for the template itself, by the hour against prepaid credits, at the same rates as any other project. We recommend an 8 GB server for Twenty: $0.03/hr, about $23 a month in our EU locations if you leave it running. There are no per-user charges. See pricing.
No. Twenty creates the owner account and workspace on its own first-run screen, so the first person to open the URL becomes the administrator. Open it yourself right after the deploy finishes, before you share the address.
The template runs four containers: the Twenty app, its background workers, its own Postgres and its own Redis. The platform treats it as a heavy workload and holds it to more free memory and disk than a light one, so an 8 GB server is the size we recommend and a crowded small one will be refused.
Yes. Every project gets a wildcard subdomain on selfhost.dev and you can add your own domain: set the DNS records, verify with a TXT record and SSL is provisioned and renewed automatically.
Yes. Creating the project, deploying the template and managing domains are covered by 216 MCP tools, so you can self host it from Claude, Cursor or any MCP client. Explore the MCP server.
From about the third user, yes. HubSpot Sales Hub Starter is $20 per seat per month, so ten users is $200 a month. An 8 GB server here is about $23 a month in our EU locations, whatever the headcount. Below three users, HubSpot's free tier is hard to beat. Still deciding between CRMs? Wecompared eight open source CRMs.
A server with 8 GB RAM, PostgreSQL, Redis, a background worker, a reverse proxy and a TLS certificate. The template provides all of it, so the only choice is the server size.
No. SMTP is not configured by default, so you need to add your own mail settings before invitations and password-reset emails will send.
On your server's volume, not in S3. They live on the same project server as the rest of your Twenty data.
With a card on file or a past top-up, the server is powered off first and held for 24 hours; adding credit in that window restarts it. Welcome-credit-only servers are deleted at zero. We email you either way. Export your data periodically.
Not ready to launch yet?
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.
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, ClickHouse, OpenSearch and Kafka.