Skip to main content
Technical Blueprints

Perfex CRM Self-Hosted Installation: An Honest Agency Guide

How I deploy Perfex CRM self-hosted on a CyberPanel VPS: licensing reality, the PHP/MySQL stack, the operational tradeoffs, and when it beats SaaS on TCO.

Published Updated 10 min read

I have run Perfex CRM as the back office for a small services company for the better part of three years, and it is the self-hosted CRM I most often recommend to agencies who already have a CyberPanel VPS and would rather pay once for a tool than rent it forever. This post is the honest version of the Perfex CRM self-hosted deployment story: what Perfex actually is, why “self-hosted” does not mean “open source”, what the install looks like on a CyberPanel box, and where the real operational costs sit two years in.

If you came here expecting a pure FOSS CRM, Perfex is not it. The codebase is closed-source commercial software you buy on CodeCanyon for a one-time fee and then host yourself. That distinction matters for credibility, and I will not pretend otherwise. What you do get is an application running on a stack you control, a database you can back up and migrate, and a license model friendlier to small agencies than per-seat SaaS.

For the right shape of business that tradeoff is good value. For the wrong shape it is a maintenance burden in disguise.

What Perfex CRM is, honestly

Perfex CRM is a PHP application sold on CodeCanyon as a self-hosted CRM and project-management suite. It targets small and medium service businesses: agencies, consultants, freelancers, IT shops. The core ships with clients, leads, contracts, projects, tasks, invoices, estimates, expenses, support tickets, a knowledge base, and a customer portal. A plugin ecosystem on CodeCanyon and Codester covers the bits the core does not (Perfex API, SMS notifications, signature workflows).

The licensing model is a CodeCanyon Regular License at around 60 dollars one-time, plus optional extended support. Plugins are sold per-plugin, typically 20 to 60 dollars each. No monthly fees, no per-seat pricing, no usage limits beyond what the server can handle.

What it is not: it is not on GitHub. It is not Apache, MIT, or GPL licensed. The product roadmap belongs to one company, and if they stop shipping, you are running the last version they cut until you migrate.

For a transparency-minded post, that is the line worth drawing. Perfex is a self-hosted commercial CRM. You own the deployment, you do not own the code.

Why I still recommend it for the right shape of agency

There are three scenarios where Perfex genuinely beats the SaaS alternatives.

The first is total cost of ownership for a 5-to-15-person services team. HubSpot Starter at around 20 dollars per seat per month for 10 people is roughly 2,400 dollars a year, every year. Perfex Regular License plus a 2GB VPS at 5 dollars a month plus my time once a quarter to patch and back up the box lands closer to 200 dollars of recurring spend. By year two the gap is real money.

The second is data ownership in privacy-sensitive contexts. “In our European VPS that I administer” is a more credible answer to a client GDPR question than “in a US SaaS we have no sub-processing contract with”. Perfex does not solve GDPR by itself, but it removes a category of vendor-risk paperwork.

The third is the customer portal. The portal that ships with Perfex is genuinely useful: clients log in to see invoices, open tickets, sign contracts, and approve estimates. SaaS equivalents either bolt this on as a paid extra or push you toward a separate product.

The deployment stack I run

Perfex is a standard LAMP-stack PHP app, which means you have options. The path I have settled on for clients and for my own deployments is CyberPanel on a 2GB VPS, with Perfex installed as a single-tenant website on its own subdomain.

Prerequisites

A VPS with at least 2GB of RAM and 40GB of SSD. A 1GB box runs Perfex fine for a solo user, but once you turn on projects with attachments and tickets with email piping, the headroom disappears. Hetzner CX22 or DigitalOcean basic 2GB both work. I have run Perfex on Hetzner CX22 for two years for a 12-seat team without resource pressure.

Before anything else, harden the box. SSH keys, no root login, UFW with deny-by-default. My Linux server security fundamentals post is the baseline I run on every fresh server. A CRM holds your client list and your invoices, it is the wrong place to skip security baseline work.

You also need a domain or subdomain (for example crm.youragency.com) pointing at the VPS, an SMTP relay for outbound email (a transactional provider keeps deliverability honest, even if you run Mailcow self-hosted email elsewhere), and a purchased Perfex license from the CodeCanyon listing.

CyberPanel as the host

CyberPanel is the OpenLiteSpeed-based control panel I default to for single-tenant PHP apps. It handles PHP version selection, MySQL database creation, free Let’s Encrypt certs, and basic firewalling out of the box. My CyberPanel installation guide walks through the install on a fresh Ubuntu box.

Once CyberPanel is up: create a website for crm.youragency.com on PHP 8.1 or 8.2 (I would not jump to 8.3 until the vendor explicitly supports it), issue a Let’s Encrypt cert, create a new database, then upload and extract the Perfex ZIP into public_html.

cd /home/crm.youragency.com/public_html
unzip ~/perfex-vX.Y.Z.zip
mv perfex-crm/* .
mv perfex-crm/.* . 2>/dev/null || true
rmdir perfex-crm
chown -R crm.youragency.com:crm.youragency.com .

Running the Perfex installer

Browse to https://crm.youragency.com/install and the Perfex web installer takes over. It checks your CodeCanyon purchase code, asks for the database connection, the admin email and password, and the company details. It writes the schema and lands you on the dashboard. Total time from a fresh CyberPanel box to a working CRM is roughly 30 minutes if license and DNS are ready.

Post-install hardening

Three things I do on every Perfex deployment before adding client data:

  1. Delete the /install folder. A reachable installer is a path to taking over the database.
  2. Lock application/config/config.php to 600 and verify the DB credentials are not world-readable.
  3. Enable TOTP in Setup > Settings > Misc on every staff account. Pair it with 2FAuth self-hosted 2FA manager if you have one running.

If the CRM is reachable from the public internet, add an OpenLiteSpeed IP allow-list on /admin paths, or front it with a Wireguard tunnel if the team is small enough.

SMTP, cron, and the things the installer does not cover

Two configuration steps the installer skips that you will trip over within a week.

The first is outbound email. Perfex sends invoices, estimates, ticket replies, and password resets via SMTP. Configure a transactional relay in Setup > Settings > Email, using a sending domain (for example crm.youragency.com) with SPF, DKIM, and DMARC records. Without DKIM, invoice emails go to spam often enough to be a problem.

The second is cron. Perfex relies on a system cron to send recurring invoices, fire overdue reminders, auto-close stale tickets, and process scheduled events:

crontab -e -u crm.youragency.com
# add:
*/5 * * * * php /home/crm.youragency.com/public_html/cron.php

Skip this, and recurring invoices silently stop generating. I have walked into more than one client deployment where cron was missing and three months of recurring invoices had not gone out.

The plugin ecosystem reality

Perfex’s marketing leans on the plugin ecosystem. Most plugins are reasonable, a few are essential, some are abandoned. Read the last-updated date carefully before buying.

Plugins I have paid for and kept running:

  • Perfex API. If you want to integrate Perfex with anything else (n8n, a custom dashboard), the official REST API plugin is non-negotiable. Without it, you are stuck on CSV imports.
  • SMS Notifications. Twilio integration for ticket and appointment reminders. Cheap and stable.

Plugins I tried and removed: a handful of accounting integrations that broke after Perfex point releases because the vendor did not maintain compatibility. The lesson is that anything hooking deep into the invoice or transaction tables is a maintenance liability.

A practical rule: before buying a plugin, check the CodeCanyon page for the last update date. If it has not seen a release in 12 months, treat it as abandoned. The cost of a failed plugin is rarely the 30 dollars, it is the half-day rolling back from a broken upgrade.

If your integration story is complex, pair Perfex with n8n self-hosted workflow automation over the Perfex API plugin. That has been a more durable pattern than relying on bespoke single-purpose Perfex plugins.

Backups, updates, and the ongoing operational cost

The Perfex install itself is roughly 30 minutes. The ongoing operational cost is where realistic TCO lives.

Backups. Perfex stores everything in MySQL plus the uploads/ directory under application/. Both need to back up. I use mariadb-dump daily plus a tarball of uploads/, pushed to Backblaze B2 via restic. Database-only backups leave you missing every uploaded file, contract attachment, and customer document. Test the restore on a staging VPS at least once before trusting the chain.

DATE=$(date +%F)
mariadb-dump -u perfex_user -p'password' perfex_db > /backups/perfex-$DATE.sql
tar -czf /backups/perfex-uploads-$DATE.tar.gz \
  /home/crm.youragency.com/public_html/application/uploads/
restic -r b2:your-bucket:perfex backup /backups

Updates. Perfex point releases land roughly every two months, applied through the Perfex update tool. The update succeeds about 9 times out of 10. The 10th time something breaks (a customised theme, a third-party plugin, a PHP mismatch). Always take a fresh DB and uploads backup first, snapshot the VPS at the provider level if it offers that, and stage non-trivial upgrades on a copy.

Patch latency. When a CVE drops on a SaaS CRM, the vendor patches their fleet. With Perfex, you read the changelog and apply it yourself. A calendar reminder on the first Monday of every month, treated as a 15-minute task, has been enough discipline for me.

When Perfex is the wrong choice

The cases where I push back on a Perfex recommendation:

  • You need a sales-led CRM with deep pipeline analytics. The Perfex leads module is functional but basic. Pipedrive or Close are better fits.
  • Your team is larger than 30. Perfex scales further on hardware, but the UX gets cramped and audit and permission features lag enterprise SaaS.
  • Nobody on staff can maintain a Linux VPS. Self-hosted sounds attractive until the box stops responding at 11pm before a payroll run. If no one owns the operational side, per-seat SaaS is buying you a vendor’s pager rotation, and that is a fair trade.
  • You expect deep native integrations with modern SaaS. The native integration list is short. Anything beyond webhook flows takes custom work.

For a 5-to-20-person services company with someone comfortable on a Linux box and a CyberPanel-or-equivalent stack already running, Perfex is genuinely a good answer. Outside that band, the picture gets murkier.

Closing the loop

Perfex CRM is a useful, affordable, self-hosted commercial app for the right kind of agency. It is not open source, and you should make the buying decision with your eyes open. What it is good at is invoicing, projects, support, and the customer portal, on a stack you own at a price that beats per-seat SaaS by year two for a small team.

The real cost is not the 60 dollars. It is the quarterly hour spent patching, the daily backup job, and the discipline to read the changelog before clicking update. If you are willing to spend that hour, Perfex earns its keep.

The companion read for the platform layer is my CyberPanel installation guide — most of my Perfex deployments sit on it. Get that right and the Perfex install itself is the easy half hour.

A note on acknowledgements. Posts on this blog usually credit the OSS projects discussed by linking to GitHub and the project homepage. Perfex CRM has no canonical open-source repository, no public Git history, no community maintainers, and no public issue tracker. Listing a third-party fork would misrepresent the relationship. The credit goes to the vendor’s CodeCanyon listing, linked once in the prerequisites above. If that ever changes, this section will too.

Watch on YouTube

Video walkthrough

Prefer the screen-recording version of this guide? Watch it on YouTube — opens in a new tab so the player only loads when you ask for it.

Frequently Asked Questions

Want this handled, not just understood?

Reading the playbook is one thing. Running it on production at 2am is another. If you'd rather have me run it for you, the door is open.

Apply for Access