Video tutorial coming soon.
Deploy Twenty on Ubuntu — a modern open-source CRM with a clean React UI, custom data objects, GraphQL API, and a Kanban pipeline — a genuine Salesforce and HubSpot alternative.
Grab the automated bash script from GitHub to follow along with the video.
wget -O twenty-install.sh https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/twenty/install.sh
chmod +x twenty-install.sh
sudo bash twenty-install.sh
wget -O twenty-install.sh https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/twenty/install.sh
chmod +x twenty-install.sh
The script installs Docker if needed, then deploys Twenty CRM with PostgreSQL and all required services.
sudo bash twenty-install.sh
Navigate to port 3000 in your browser to create your workspace and admin account.
http://<your-server-ip>:3000
Create custom data objects, import contacts, set up pipelines, and configure team members in the workspace settings.
| Port | Purpose |
|---|---|
| 3000 | Twenty Web UI |
| 3000/graphql | GraphQL API |
Twenty is a modern open-source CRM built as a community-driven alternative to Salesforce. It offers a clean, developer-friendly interface for managing contacts, companies, deals, and custom objects — with full API access and self-hosting so your business data never leaves your infrastructure.
Twenty is a modern, community-built CRM designed to be the open-source answer to Salesforce and HubSpot. Unlike older open-source CRMs, Twenty is built with a GraphQL-first API and a React frontend that feels polished and fast. You define your own data model — add custom objects, fields, and relations without code. It supports contact management, deal pipelines, notes, tasks, and a full activity timeline. Self-hosting means your customer relationship data never leaves your infrastructure.
Twenty runs on port 3000 (Web UI and API). Block this port from the internet using UFW and expose it only through your reverse proxy on 443. The PostgreSQL and Redis ports should never be publicly accessible.
EspoCRM is the most mature self-hosted CRM alternative with the broadest feature set for sales teams. Monica is better for personal relationship management rather than business CRM. SuiteCRM offers enterprise features like reporting and workflow automation with a more established ecosystem. Vtiger is another established open-source CRM. For cloud CRM, HubSpot Free is surprisingly capable and free forever for small teams.
Skip Twenty if your team needs a proven, stable CRM with years of real-world usage — it's a relatively young project and may have rough edges in production. Also skip it if you need advanced features like built-in email campaigns, telephony integration, or complex workflow automation — EspoCRM or SuiteCRM handle those better. If you have 2-3 people and just need a contacts list, a simple spreadsheet is zero maintenance.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Twenty takes a different approach — it's built API-first with GraphQL and focuses on a modern, fast React UI rather than a traditional web app. The key differentiator is the custom data model: you can define entirely new object types (beyond standard contacts/companies) without writing code. EspoCRM is more mature with more built-in features (email marketing, telephony, reporting), while Twenty prioritizes extensibility and developer friendliness.
Yes, and this is one of Twenty's strengths. The GraphQL API is available at /api and is self-documented with schema introspection. You can query, create, update, and delete any CRM record programmatically. Generate API tokens in your account settings. Twenty also has a Metadata API to query the data model itself, which makes it possible to build dynamic integrations that adapt to your custom objects automatically.
Twenty supports email sending (via SMTP for password resets and notifications) and has a Gmail integration in development that syncs sent/received emails to contact records. The email integration is part of Twenty's 'Messaging' feature. As of 2024-2025, full bi-directional email sync is available for Gmail via OAuth. Outlook integration is planned. Configure this under Workspace Settings → Integrations.
Twenty has a CSV import tool accessible from the People or Companies views (click the import icon). Prepare your CSV with columns matching Twenty's field names (firstName, lastName, email, phone, company). For bulk imports from other CRMs, export a CSV from your current system, clean up the columns, and import into Twenty. Custom field imports work for standard types — complex relation data may need the API.
Twenty is production-usable but is still in active development (not at a 1.0 stable release yet as of 2025). Many teams and startups use it in production. Be aware that minor versions may include database migrations and breaking changes — always backup before updating. Check the Twenty GitHub releases page and Discord for stability announcements before deploying in a high-stakes business environment.
Yes. Twenty supports multiple workspaces on a single installation. Each workspace has its own isolated data, custom objects, users, and settings. Workspace admins manage their own team members. This makes Twenty viable for agencies managing multiple clients or for organizations with multiple business units that need isolated CRM environments. Billing is not built-in for multi-workspace SaaS use cases.
The critical data is in PostgreSQL. Run `docker exec postgres pg_dump twenty -U twenty > backup.sql` for a full backup. To restore, create a fresh database and run `psql twenty -U twenty < backup.sql`. Also backup the file storage volume (STORAGE_LOCAL_PATH) which contains uploaded attachments. You can also export individual objects as CSV from the UI as a lightweight backup for contact and company records.
Run `docker compose pull && docker compose up -d` to pull the latest images. Twenty runs database migrations automatically on startup. Always backup your PostgreSQL database before updating, especially for minor version jumps. Check the Twenty GitHub changelog for migration notes. If a migration fails, you'll see error logs in the Twenty container — the Twenty Discord is active and helpful for troubleshooting update issues.