Applications Azure

Frappe CRM on Ubuntu 24.04 on Azure User Guide

| Product: Frappe CRM on Ubuntu 24.04 LTS on Azure

Overview

Frappe CRM is a modern open-source sales CRM built on the Frappe framework. It gives sales teams leads and deals moving through configurable pipelines and statuses, contacts and organizations, tasks and notes, and activity timelines that capture email and comments, presented through Kanban, list and group-by views. Assignment rules route work to the right owner and service level agreements keep response times visible. The cloudimg image installs CRM v1.79.1 on Frappe framework version-15 as a full production deployment - MariaDB, Redis, a Python gunicorn web tier plus a node realtime process, background workers and a scheduler managed by supervisor, and nginx on port 80 - runs the entire headless install at build time so there is no command-line bootstrap on first use, and rotates the Frappe Administrator password, the site database password and the Frappe encryption key on the first boot of every VM. Backed by 24/7 cloudimg support.

What is included:

  • Frappe CRM v1.79.1 on Frappe framework version-15, served on port 80 by nginx in front of a gunicorn web worker
  • MariaDB on loopback (Barracuda / utf8mb4 / large packets per Frappe), tuned for a small VM
  • Redis for cache, queue and socketio; supervisor managing the Frappe web, worker, schedule and socketio processes
  • A unique Administrator password, site database password and Frappe encryption key generated on first boot, with no default login
  • nginx.service, supervisor.service, mariadb.service and redis-server.service as systemd units, enabled and active
  • 24/7 cloudimg support

Prerequisites

An active Azure subscription, an SSH key pair, and a VNet plus subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is the supported minimum; choose a larger size such as Standard_B2ms or Standard_D2s_v3 for larger sales teams or higher record volume. NSG inbound: allow 22/tcp from your management network and 80/tcp for the CRM web interface (front with TLS for public exposure - see Enabling HTTPS).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Frappe CRM by cloudimg, and select Create. On Basics pick your subscription, resource group, region and size; under Administrator account choose SSH public key and paste your key; under Inbound port rules allow SSH (22) and HTTP (80). Then Review + create -> Create.

Step 2 - Deploy from the Azure CLI

az vm create \
  --resource-group <your-rg> \
  --name frappe-crm \
  --image <marketplace-image-urn> \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard

az vm open-port --resource-group <your-rg> --name frappe-crm --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the CRM stack is running

On first boot the image rotates the Frappe encryption key, the site database password and the Administrator password, points the site at this VM's public IP, and starts the production stack. Confirm all four systemd services are active:

systemctl is-active mariadb redis-server supervisor nginx

All four services report active, and supervisor runs the Frappe web, socketio, worker and schedule processes.

Frappe CRM service status on Ubuntu 24.04

Confirm the Frappe web tier answers its health endpoint:

curl -s http://127.0.0.1/api/method/ping

Frappe returns {"message":"pong"}. You can see the exact installed apps and versions - Frappe framework version-15 and CRM v1.79.1:

sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench --site crm.localhost list-apps'

Frappe CRM health check and installed apps

Step 5 - Retrieve the Administrator password

The per-VM Administrator password is generated on first boot and written to a root-only credentials file, along with the site URL and login name:

sudo cat /root/frappe-crm-credentials.txt

Per-VM Frappe CRM credentials file

Because these secrets are generated on first boot, no two deployments share the same password, and the vendor default login is rejected:

Frappe CRM secure-by-default login check

The CRM interface at /crm requires an authenticated session, so it is not reachable anonymously. Sign in through the API with the password from your credentials file and fetch the CRM page with that session to confirm the interface is being served:

curl -s -c /tmp/crm-cookies -o /dev/null -w 'login: %{http_code}\n' \
  http://127.0.0.1/api/method/login \
  --data-urlencode 'usr=Administrator' --data-urlencode 'pwd=<CRM_ADMIN_PASSWORD>'
curl -s -b /tmp/crm-cookies -o /dev/null -w 'crm: %{http_code}\n' http://127.0.0.1/crm
rm -f /tmp/crm-cookies

Both requests return 200.

Step 6 - Sign in to Frappe CRM

Browse to http://<vm-public-ip>/crm and sign in as Administrator with the password from Step 5. Change this password after your first sign-in, from the user menu.

Frappe CRM sign-in page

Step 7 - Work with leads

After signing in you land on the CRM. The Leads section lists every lead with its name, organization, status and owner; use the filter, sort and group-by controls at the top to narrow the list, switch between list and Kanban views, and use the Create button to add a lead.

Frappe CRM leads list

Open a lead to see its full record. The side panel holds contact details, organization and status; the activity timeline records emails, comments, calls, tasks and notes, so the whole history of the relationship sits in one place. A qualified lead can be converted into a deal, which carries its contact and organization across.

A Frappe CRM lead with its activity timeline

Step 8 - Track deals through your pipeline

The Deals section holds opportunities moving through your sales pipeline. The Kanban view groups deals by status so you can drag a deal from one stage to the next, and each deal keeps its own contacts, organization, expected close date, deal value and activity timeline.

Frappe CRM deals pipeline

From the settings menu you can also configure lead and deal statuses, invite users and set their roles, define assignment rules and service level agreements, and connect an email account so replies are captured onto the record automatically.

Enabling HTTPS

For public exposure, front the CRM with TLS. Point a DNS A record at the VM's public IP, then issue a certificate with Certbot and the nginx plugin (run interactively):

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.example.com

Certbot edits the Frappe nginx site in place and sets up automatic renewal. Allow 443/tcp in your NSG.

Maintenance

The OS keeps receiving security updates through unattended-upgrades. Frappe CRM and the framework can be updated with bench as the frappe user (sudo -u frappe -H bash -lc 'cd /opt/frappe/frappe-bench && bench update'); review the CRM release notes before applying a major version upgrade. Take a snapshot of the OS disk before any upgrade.

Support

This image is published and supported by cloudimg. Frappe and Frappe CRM are trademarks of Frappe Technologies Pvt. Ltd.; cloudimg is not affiliated with or endorsed by the Frappe project. For assistance, contact cloudimg support.