Por qué los equipos de desarrollo autoalojan Twenty en lugar de pagar Salesforce
La mayoría de los CRM están pensados para los responsables comerciales, no para los ingenieros. El esquema es rígido, la API está sujeta a límites de tasa y cada integración pasa por un marketplace propietario. Twenty invierte la lógica: cada entidad (contactos, empresas, oportunidades o cualquier objeto personalizado que usted defina) se modela en PostgreSQL y se expone mediante una API GraphQL totalmente documentada desde el primer día. Usted es propietario de la base de datos, escribe las migraciones y se integra con sus propias herramientas, sin middleware ni facturación por llamada a la API.
Lo que obtiene de entrada
- Objetos y campos totalmente personalizables: modele cualquier entidad útil para su actividad, no solo las que impone Salesforce.
- Vistas Kanban, lista y tabla, con actualizaciones colaborativas en tiempo real para todo el equipo.
- Notas, tareas e hilo de actividad asociados a cada registro, sin ningún plugin adicional.
- API GraphQL + REST que cubre cada objeto, relación y campo personalizado que usted cree.
- Worker en segundo plano para las automatizaciones, los webhooks y las tareas programadas: se ejecuta junto al contenedor del servidor.
- Importación CSV para migrar contactos y empresas desde HubSpot, Pipedrive o cualquier CRM anterior.
- Licencia AGPL-3.0: sin dependencia de un proveedor, sin facturación cloud por usuario y sin ningún dato almacenado fuera de su infraestructura.
Requisitos previos
Dos vCPU y 4 GB de RAM con Ubuntu 22.04 y Docker instalado cubren la producción con holgura. La stack completa (servidor + worker + PostgreSQL + Redis) consume alrededor de 1,2 GB de RAM en reposo; prevea 4 GB para dejar a PostgreSQL margen ante consultas concurrentes. Un nombre de dominio y un reverse proxy Caddy o Nginx para el HTTPS. Eso es todo: sin GPU, sin clave de licencia y sin ningún servicio externo.
Desplegar Twenty en un VPS en 6 pasos
Aprovisionar el VPS
Contrate un VPS Power (4 vCPU, 8 GB, Ubuntu 22.04): es el primer plan del catálogo que supera los 4 GB que Twenty necesita. Una vez arrancado, conéctese por SSH e instale Docker:
curl -fsSL https://get.docker.com | sh. Active el servicio Docker:systemctl enable --now docker.Crear su archivo .env
Cree
/opt/twenty/.envcon cuatro variables:APP_SECRET(generada conopenssl rand -hex 32),DB_NAME=twenty,DB_USER=twenty,DB_PASSWORD=<strong-password>ySERVER_URL=https://crm.votre-domaine.com(indíquela ya: Twenty la incorpora en las cabeceras CORS y en los enlaces de los correos).APP_SECRETes el único secreto criptográfico; todo lo demás se deriva de él.Redactar docker-compose.yml y arrancar la stack
Cree
/opt/twenty/docker-compose.ymlcon los cuatro servicios:db(postgres:16-alpine),redis(redis:7-alpine),twenty-server(twentycrm/twenty:latest, puerto 3000) ytwenty-worker(la misma imagen, comandoyarn worker:prod). Enlácelos mediantePG_DATABASE_URLyREDIS_URL. Después:docker compose up -d. En el primer arranque, Twenty ejecuta las migraciones de base de datos: cuente entre 60 y 90 segundos antes de que la interfaz esté lista.Finalizar la configuración del espacio de trabajo
Abra
http://<vps-ip>:3000y siga el asistente de configuración: cree su cuenta de administrador, ponga nombre al espacio de trabajo y, si lo desea, invite a sus compañeros por correo electrónico. Importe sus contactos existentes desde un archivo CSV en los ajustes del espacio de trabajo → Import.Poner Twenty detrás de HTTPS con Caddy
Instale Caddy:
apt install -y caddy. Cree/etc/caddy/Caddyfile:crm.votre-domaine.com { reverse_proxy localhost:3000 }. Recargue:systemctl reload caddy. Caddy obtiene y renueva el certificado TLS automáticamente. Restrinja el puerto 3000 en su firewall:ufw deny 3000; todo el tráfico pasa ya por el 443.Conectar sus herramientas de automatización
En los ajustes de Twenty → API, copie su endpoint GraphQL y su token de API personal. Úselos directamente en n8n (nodo HTTP Request) o Activepieces para sincronizar contactos, disparar acciones al cambiar de etapa una oportunidad o enviar datos desde fuentes externas. Twenty también emite webhooks salientes en cada evento sobre un registro: configúrelos en los ajustes → Webhooks.
Conectarse por primera vez
Abra la URL y haga clic en «Sign up»: el primero en registrarse se convierte automáticamente en administrador del espacio de trabajo y, después, los registros se cierran. Hágalo inmediatamente después de la instalación.
Respalde cada día los tres volúmenes Docker — twenty_db (datos de PostgreSQL), twenty_data (almacenamiento de archivos local) y twenty_redis (útil solo si usa colas de tareas persistentes) — hacia una ubicación fuera del servidor. Un simple comando de una línea, docker run --rm -v twenty_db:/data -v /backups:/out alpine tar czf /out/twenty-db-$(date +%F).tar.gz /data, colocado en una tarea cron basta para respaldar la base de datos.
La documentación oficial
Para la configuración avanzada y las opciones propias de la herramienta, consulte la documentación oficial de Twenty. Esta guía cubre la puesta en línea en un VPS; la documentación del editor sigue siendo la referencia para los ajustes finos, las actualizaciones mayores y los casos de uso específicos.