1) What you need before you start
- A Linux VPS (Ubuntu/Debian recommended) with root or sudo access
- A domain name pointed at your VPS
- SMTP mailbox credentials for your sender address (example:
noreply@yourdomain.com) - An Anthropic Console account and API key
- A Twilio account, SMS-capable number, and A2P 10DLC registration for outbound US texting
2) Clone and deploy Romp CRM on your VPS
2.1 Install platform dependencies
Install Elixir/Erlang, Node.js, Git, SQLite, and nginx on your VPS (package names vary by distro).
2.2 Clone the app
git clone https://github.com/151henry151/romp-crm.git
cd romp-crm
2.3 Create production env file
cp deploy/romp-crm.env.example .env.production
chmod 600 .env.production
2.4 Build release
MIX_ENV=prod mix deps.get
MIX_ENV=prod mix assets.deploy
MIX_ENV=prod mix release
2.5 Install systemd unit
sudo install -m 644 deploy/romp-crm.service /etc/systemd/system/romp-crm.service
sudo systemctl daemon-reload
sudo systemctl enable --now romp-crm
sudo systemctl status romp-crm
3) Configure your Romp CRM environment
At minimum, set these values in .env.production:
MIX_ENV=prod
PHX_SERVER=true
PHX_HOST=yourdomain.com
PORT=40175
SECRET_KEY_BASE=...generated...
DATABASE_PATH=/home/youruser/romp-crm/data/romp_crm.db
MAIL_FROM_NAME="Romp CRM"
MAIL_FROM_ADDRESS=noreply@yourdomain.com
SMTP_HOST=your.smtp.host
SMTP_PORT=587
SMTP_TLS=always
SMTP_USERNAME=noreply@yourdomain.com
SMTP_PASSWORD="your-mail-password"
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_MESSAGING_FROM=+1XXXXXXXXXX
TWILIO_WEBHOOK_PUBLIC_URL=https://yourdomain.com/romp-crm/webhooks/twilio/sms
TWILIO_SMS_REPLIES_ENABLED=true
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-sonnet-4-20250514
ENFORCE_REGISTRATION_ALLOWLIST=false
Keep your real
.env.production out of git. Treat every API key/password as secret.
4) Set up Anthropic and get your API key
- Create/login at console.anthropic.com.
- Set up billing for production use.
- Create an API key from API Keys section.
- Put it into
ANTHROPIC_API_KEYin.env.production. - Restart Romp CRM after updating env.
sudo systemctl restart romp-crm
5) Set up Twilio (including A2P 10DLC for outbound)
5.1 Create Twilio project and buy an SMS-capable US number
- Create/login at console.twilio.com.
- Buy a US number with SMS capability.
- Copy
Account SIDandAuth Token.
5.2 Register for A2P 10DLC (required for reliable US outbound texting)
- In Twilio Console, go to Messaging -> Regulatory Compliance -> A2P 10DLC.
- Create your Brand (business identity info).
- Create Campaign Use Case matching your SMS purpose (customer updates, transactional notifications).
- Attach your phone number to that campaign.
Without proper A2P registration, outbound messages may be filtered, delayed, or blocked in US carrier networks.
5.3 Configure inbound webhook for your number
Set your number's “A message comes in” webhook to:
https://yourdomain.com/romp-crm/webhooks/twilio/sms
Method: POST.
5.4 Optional: configure via provided Mix task
set -a && source .env.production && set +a
mix twilio.configure_sms --phone +1XXXXXXXXXX --sms-url "$TWILIO_WEBHOOK_PUBLIC_URL"
5.5 If using Twilio Messaging Service
Enable “defer inbound to sender webhook” behavior:
TWILIO_MESSAGING_SERVICE_SID=MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
mix twilio.messaging_service_inbound
6) Nginx and HTTPS (Let’s Encrypt)
- Proxy
/romp-crm/to your release port (default40175) and strip prefix with trailing slash inproxy_pass. - Expose
/.well-known/acme-challenge/for webroot cert issuance. - Issue cert for apex +
wwwwith certbot. - Enable HTTP -> HTTPS redirect and reload nginx.
See deployment files in repo for reference:
7) Verification checklist
App
https://yourdomain.com/romp-crm/loads- User registration/login works
- Login email delivers from
noreply@yourdomain.com - SPF/DKIM/DMARC configured
SMS
- Inbound text reaches webhook and creates/updates jobs
- Outbound confirmation SMS sends successfully
Once all three are green (app, email, SMS), your self-hosted Romp CRM is production-ready.