Which server do I need?
This page tells you which server size you need for which usage — with a clear recommendation, so you buy neither too small (stutters, calls drop) nor unnecessarily large.
1. Minimum (just to get it running)
| Resource | Minimum | Note |
|---|---|---|
| CPU | 2 vCPU | 1 vCPU is only good for a look, not real operation |
| RAM | 4 GB | Below that the kernel kills services under load spikes (build/marketing) |
| Disk | 40 GB SSD | System + images + DB + first attachments. HDD not recommended (Postgres + object store want IOPS) |
| OS | Linux + Docker & Docker Compose | tested on Debian/Ubuntu |
| Network | static IP recommended | required for the built-in phone system (see §5) |
That starts the full stack: app, worker,
postgres, redis, minio — plus optional
asterisk, coturn, piper for the built-in
phone system and caddy for automatic HTTPS. The installer
sets all of it up with one command.
2. What each service costs
| Service | What for | RAM (idle → load) | Driver |
|---|---|---|---|
| app | Web UI + API | 0.4 → 1.5 GB | concurrent users |
| worker | Email fetch, marketing, reminders, call post-processing | 0.25 → 1 GB | marketing size, mailboxes |
| postgres | all data | 0.5 → 1.5 GB | data volume + reports |
| redis | job queue | ~0.1 GB | — |
| minio | attachments, recordings, voicemail | ~0.25 GB | file volume (disk!) |
| asterisk | phone system | 0.2 GB → per call | concurrent calls |
| coturn | audio relay (NAT) | ~0.1 GB | calls over difficult networks |
| piper | neural announcement voice (TTS) | 0.2 → 0.5 GB | only when voicing prompts |
Rule of thumb: contacts/companies/deals are almost free for the server (database rows). What grows is disk space (attachments/recordings) and CPU/bandwidth (concurrent calls).
3. Recommended sizes by usage
Pick the column where your highest number lands — one big number is enough to move you up a tier.
| Small | Medium | Large | |
|---|---|---|---|
| Server | 2 vCPU · 4 GB · 40 GB SSD | 4 vCPU · 8 GB · 80–160 GB SSD | 8+ vCPU · 16–32 GB · 200+ GB NVMe |
| Concurrent users | up to ~5 | ~5–20 | 20–50+ |
| Emails / day | up to ~500 | ~500–3,000 | 3,000+ |
| Concurrent calls | 1–2 | 5–10 | 20+ |
| Call recording | light | yes | constant |
| Marketing / month | up to ~2,000 | ~10–20,000 | 50,000+ |
| Good for | solo office, start | growing team | call center / multiple brands |
Most companies: "Medium" — 4 vCPU / 8 GB / 80–160 GB SSD. Comfortable headroom for team, reports, marketing and ~5–10 parallel calls with recording.
Only CRM + email + web chat (barely any phone): "Small" is plenty. · Serious call center: "Large", and then keep telephony and database on separate servers (§6).
4. Plan disk space realistically
The disk is what fills up over time — plan it more generously than RAM:
- Call recordings: ~1 MB per minute of conversation. 1,000 recorded minutes/month ≈ 1 GB/month.
- Email attachments / media: highly variable; large PDFs/images add up.
- Database: grows slowly (text). Even 100,000+ conversations stay in the low GB range.
- Docker images: ~2–4 GB.
Rule of thumb: base 40 GB + estimated recording/attachment growth × 12 months + reserve. With a lot of recording, plan 160–200 GB. Old recordings/attachments can be offloaded/deleted later.
5. Telephony needs more than compute
If you use the built-in phone system, network requirements are added:
- Public, static IP (no CGNAT). Behind a home/NAT connection it's only good for testing.
- Open ports: SIP
5060/udp, RTP audio10000–10200/udp, coturn3478+49152–49252/udp. - Bandwidth: ~170 kbit/s per concurrent call (in+out, G.711). 10 in parallel ≈ ~1.7 Mbit/s stable — upload counts.
- Transcoding trap: if endpoints/trunk speak different codecs, Asterisk has to convert (costs CPU per call). Recommendation: use the same codec (G.711) everywhere.
6. Email sending: outbound ports (the most common cloud pitfall)
The CRM sends email (password reset, notifications, marketing) via your SMTP mailbox — i.e. outbound connections to port 587 (or 465/25). Many cloud/VPS providers block these outbound mail ports by default as anti-spam (incl. Hetzner, netcup, DigitalOcean, AWS/GCP/Azure).
993) is usually NOT blocked → only sending hangs.Check (from the server):
nc -zv your-mailserver 587 — timeout = blocked.Fix 1 (usually easiest): open a support ticket with your provider to "unblock outbound SMTP ports 587/465" (with your server IP; no bulk mail). For legitimate use this is generally granted.
Fix 2: use a transactional email service over HTTPS/port 443 — 443 is never blocked.
On your own/company connection this usually doesn't happen; there the static IP is the topic (§5).
7. When to split (scale-out)
A single server carries far. Only real call-center volume makes splitting worthwhile:
- First
postgresonto its own server (or managed Postgres) — the DB is the most valuable, IO-sensitive part. - Then
asterisk+coturnonto their own telephony host — so call load never disturbs the web app. miniocan point to external S3 storage when recordings/attachments get large.
8. Operations & backups
- Backups: the most important is Postgres (regular
pg_dumpor managed backup) + theminiovolume. In addition the CRM offers a per-tenant snapshot export (Settings → Backup). - HTTPS: the self-host bundle ships Caddy (automatic Let's Encrypt certificates).
- Updates: Watchtower pulls new images nightly (can be turned off); a banner in the app reports new versions and you can update instantly with a button.
- RAM reserve: leave ~20 % RAM free — marketing bulk sends + the nightly build/pull are load spikes.
"Just a CRM + mailbox + chat for a small team" → Small (2/4/40).
"Team, reports, marketing, occasional calls with recording" → Medium (4/8/160) — our standard recommendation.
"We're on the phone all day / call center" → Large (8+/16–32/NVMe), split telephony & DB later.
When in doubt, start one tier larger — adding RAM/disk later is more annoying than having reserve from the start.
Ready? → Go to the installation guide (one command, no config files) · Questions? Contact us.