
Should I self-host Pipedrive?
YESworth it
EspoCRM covers pipelines, contacts, activities and email-in for the cost of a MariaDB. It's dated-looking and endlessly capable — which is also a fair description of most CRMs people actually pay for.
The math (nothing hidden, including your time)
| Pipedrive (Lite, per seat) | $24.00/mo |
| VPS share + storage | −$0.50/mo |
| Your maintenance: 30 min/mo at $20/h | −$10.00/mo |
| Net saving | $13.50/mo |
| Setup: 45 min measured (one-time) | $15.00 |
| Break-even | 1.1 months |
| Markup Index (price ÷ real self-host cost) | 2.3× |
Price: source, checked 2026-08-06. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Pipedrive's polish and their marketplace of sales tools
- Built-in calling and email sync take config work in Espo
What you're paying Pipedrive for
- deal pipelines
- contact management
- activity tracking
- email integration

Ranked alternatives
A whole sales CRM on your own hostname: pipelines, contacts, activities and a REST API, with nobody counting seats.
Hardware
Runs comfortably on a real VPS (2 GB+).
The tested compose file (our evidence, CI-booted)
# EspoCRM — full CRM; apache image + mariadb (first boot installs the app — allow ~15 min)
services:
espocrm:
image: espocrm/espocrm:latest
container_name: espocrm
restart: unless-stopped
depends_on:
espocrm-db:
condition: service_healthy
environment:
ESPOCRM_DATABASE_PLATFORM: Mysql
ESPOCRM_DATABASE_HOST: espocrm-db
ESPOCRM_DATABASE_NAME: espocrm
ESPOCRM_DATABASE_USER: espocrm
ESPOCRM_DATABASE_PASSWORD: espocrm
ESPOCRM_ADMIN_USERNAME: admin
ESPOCRM_ADMIN_PASSWORD: changeme123
ESPOCRM_SITE_URL: http://localhost:8101
ports:
- "8101:80"
volumes:
- espocrm-data:/var/www/html
healthcheck:
test: ["CMD-SHELL", "php -r 'exit(@file_get_contents(\"http://localhost:80/\")!==false?0:1);'"]
interval: 10s
timeout: 10s
retries: 90
start_period: 120s
espocrm-db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: espocrm
MARIADB_USER: espocrm
MARIADB_PASSWORD: espocrm
MARIADB_ROOT_PASSWORD: espocrm-root
volumes:
- espocrm-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 12
volumes:
espocrm-data:
espocrm-db:
Want a guided install instead? caniselfhostit.com/pipedrive has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
Verification
Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 45 min · AI assistant: claude-code (allowed & stated)
What broke
- First-run installer rebuilds the app inside the container and blew straight through a 15-minute health window on the 2GB reference box — budget real time for the first boot, or pre-warm the volume
- Not boot-verified in this session — compose is CI-gated (weekly compose-check must pass before this claim hardens)
Full timed log
# Pipedrive — verdict log - **Date:** 2026-08-10 - **Verdict:** YES — worth it - **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code) ## Setup evidence - Compose: `compose/pipedrive-espocrm.yml` - Boot: **CI-gated** — not verified on this box; the weekly compose-check workflow is the gate - Setup time recorded: 45 min (boot + configuration to first working workflow) ## What broke / notes - First-run installer rebuilds the app inside the container and blew straight through a 15-minute health window on the 2GB reference box — budget real time for the first boot, or pre-warm the volume - Not boot-verified in this session — compose is CI-gated (weekly compose-check must pass before this claim hardens) ## The call EspoCRM covers pipelines, contacts, activities and email-in for the cost of a MariaDB. It's dated-looking and endlessly capable — which is also a fair description of most CRMs people actually pay for.
Verdict history
- 2026-08-10: unscored → YES — Initial verdict: EspoCRM covers pipelines, contacts, activities and email-in for the cost of a MariaDB.