---
title: "Deploy DeskcommCRM"
description: "WhatsApp sales CRM with AI agents and a self-hosted Supabase, all in one"
category: "AI/ML"
url: https://railway.com/deploy/deskcommcrm
---

# Deploy DeskcommCRM

WhatsApp sales CRM with AI agents and a self-hosted Supabase, all in one

**[Deploy DeskcommCRM on Railway](https://railway.com/template/deskcommcrm)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deskcommcrm/manifest.json

- **Creator:** Youssef Siam
- **Category:** AI/ML

## Template content

### storage

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-storage:1.0.1

### rest

- **Image:** postgrest/postgrest:v14.17

### worker

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-worker:1.0.1

### app

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-app:1.0.1
- **Health check:** /login
- **Public domain:** Yes

### realtime

- **Image:** supabase/realtime:v2.134.10

### srh

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-srh:1.0.1

### auth

- **Image:** supabase/gotrue:v2.196.0

### db

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-db:1.0.1

### scheduler

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-scheduler:1.0.1

### waha

- **Image:** devlikeapro/waha:latest-2026.7.2

### redis

- **Image:** valkey/valkey:8.1.10-alpine
- **Start command:** `sh -c 'exec valkey-server --requirepass "$REDIS_PASSWORD"'`

### kong

- **Image:** ghcr.io/youssefsiam38/deskcommcrm-railway-kong:1.0.1
- **Public domain:** Yes

## Documentation

# Deploy and Host DeskcommCRM on Railway

DeskcommCRM is an open-source CRM for businesses that sell over WhatsApp. Conversations, contacts and
deals live in one inbox and pipeline, and AI agents answer, qualify leads and follow up inside it, with
a human able to take over at any point. It is a self-hosted alternative to Kommo, Octadesk and
Intercom. This is a community-maintained template; it is not affiliated with the DeskcommCRM project.

## About Hosting DeskcommCRM

DeskcommCRM is built on Supabase, and upstream's own installer expects a Supabase Cloud account for
the database, authentication and file storage, with the CRM, WhatsApp bridge and scheduler on a
separate server. This template runs everything on Railway instead, in one project, with nothing to
sign up for first.

That makes it a large bundle: twelve services. Six are a self-hosted Supabase (Postgres, Auth,
PostgREST, Realtime, Storage and the Kong gateway). Three are DeskcommCRM itself: the web app, the AI
agent worker and a cron scheduler. The rest are WAHA for WhatsApp, Valkey, and a small bridge that lets
the CRM's Upstash client talk to it. Idle, the whole bundle uses about 1.3 GB of memory.

The hard part of hosting it is the first boot, and the template does it for you. The app waits for
Supabase's own services, applies DeskcommCRM's 25,000-line schema, creates your owner account,
organisation and super-admin role, and only then starts serving. Nobody can reach a fresh instance
before it is yours, and self-service signup starts closed, where upstream's default gives every
visitor a tenant of their own.

## Why Deploy DeskcommCRM on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically and
horizontally scale it.

By deploying DeskcommCRM on Railway, you are one step closer to supporting a complete full-stack
application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

Concretely, this template generates more than twenty secrets in the exact formats the CRM requires,
derives Supabase's API keys from one of them at start-up, wires all twelve services over Railway's
private network with dual-stack listeners, attaches volumes to the database, file storage and
WhatsApp sessions, and turns off upstream's default crash reporting to the project's Sentry.

## Common Use Cases

- Answer and qualify WhatsApp leads around the clock with AI agents, and hand over to a salesperson
  when a deal is real.
- Run a sales team's shared WhatsApp inbox with assignment, notes and follow-up reminders.
- Keep customer conversations and data on infrastructure you control, for LGPD or simply ownership.
- Replace a per-seat SaaS CRM for a small business that sells by chat.

## Dependencies for DeskcommCRM Hosting

- A WhatsApp number to pair, scanned by QR code from the phone.
- An AI provider key (OpenRouter, OpenAI or Anthropic), added in the app, if you want the agents to
  answer.
- Optional: a Resend API key for invitation e-mails. Without one, the app shows invitation links on
  screen.
- Nothing else. No Supabase, Upstash or other external account.

### Deployment Dependencies

- DeskcommCRM: https://github.com/melgarafael/DeskcommCRM (MIT)
- Supabase self-hosting stack: https://github.com/supabase/supabase/tree/master/docker (Apache-2.0)
- WAHA, the WhatsApp HTTP API: https://github.com/devlikeapro/waha (Apache-2.0)
- Valkey: https://github.com/valkey-io/valkey (BSD-3-Clause)
- serverless-redis-http: https://github.com/hiett/serverless-redis-http (MIT)
- Template repository, wrapper images and tests: https://github.com/youssefsiam38/deskcommcrm-railway

WAHA automates WhatsApp Web rather than using Meta's official Business Platform. WhatsApp can
restrict numbers used this way; use a number you can afford to lose, and read the security notes in
the template repository first.

### Implementation Details

Seven of the twelve services run thin wrapper images published from the template repository; the
other five run upstream images unchanged. The wrappers add no application code. They bake in the
configuration Supabase's compose file would bind-mount, mint the anon and service-role keys from the
shared JWT secret with byte-identical output in Node and Perl, keep the Vault root key on the database
volume, apply the schema once per release with a recorded version, make the scheduler reach the app
at its Railway hostname, and refuse to start on missing, short or published example secrets. The
bundle is tested as a whole in CI, on fresh and on reused volumes, before any image is pushed.

The deploy form asks for one value, `OWNER_EMAIL`. After deploying, copy `OWNER_PASSWORD` from the app
service's variables and sign in on the app's domain.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/deskcommcrm
