Self-Hosted Server Setup Guide

Get your team on Kola CRM in under 30 minutes — no IT department required.

Professional & Business Tiers
ℹ️
Before you start You'll need: (1) your Kola CRM license file and key, (2) a domain name you control (e.g. crm.yourcompany.com), and (3) approximately 30 minutes. Estimated ongoing server cost: ~$6–12 CAD/month billed directly by your hosting provider.

Contents

  1. Create your DigitalOcean server
  2. Connect to your server
  3. Secure the server
  4. Install the web server (Nginx)
  5. Upload your Kola CRM file
  6. Point your domain
  7. Enable HTTPS (SSL certificate)
  8. Verify and go live
  9. Support scope boundary
  10. Troubleshooting FAQ
  11. Final checklist
1
Create your DigitalOcean server (Droplet)

Kola CRM requires a small always-on server (called a VPS or Droplet) so your team can access it from any browser at any time. We recommend DigitalOcean — straightforward pricing, reliable, and well-documented.

Create an account

Go to digitalocean.com and sign up. You'll need a credit card or PayPal. New accounts typically receive a free credit — check for a referral offer when signing up.

Create a Droplet (your server)

  1. Click Create → Droplets
  2. Choose region: Toronto (or nearest to your team)
  3. Choose image: Ubuntu 22.04 LTS x64
  4. Choose size: Basic — Shared CPU — Regular — $6/mo (1 vCPU, 1 GB RAM, 25 GB SSD). This is sufficient for teams up to 10 users. Business tier teams over 25 users: choose the $12/mo plan.
  5. Authentication: Select SSH Key (more secure) or Password. If you choose Password, make it long and save it in a password manager.
  6. Hostname: name it something you'll recognise, e.g. chestnut-crm
  7. Click Create Droplet
💡
Note your Droplet's IP address once it's created — you'll need it in the next steps. It will look like: 143.198.x.x
2
Connect to your server

You'll manage your server using a terminal (command line). Don't worry — you only need to do this during setup.

On Mac or Linux

Open Terminal and run:

# Replace 143.198.x.x with your Droplet's IP address
ssh root@143.198.x.x

If prompted to confirm the connection, type yes and press Enter. Enter your password when prompted.

On Windows

Open PowerShell (search for it in the Start menu) and run the same command:

ssh root@143.198.x.x

Alternatively, download PuTTY (free) and enter your IP address in the Host Name field.

You're in when you see: a prompt that looks like root@chestnut-crm:~#. You are now controlling your server.
3
Secure the server

Run these commands one at a time. Copy each line, paste into your terminal, and press Enter. Wait for each to finish before running the next.

Update the server's software
apt update && apt upgrade -y
Install the firewall and allow web traffic
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable

Type y and press Enter when prompted to enable the firewall.

⚠️
Do not skip this step. An unsecured server is a real risk. These three commands are the minimum security baseline.
4
Install the web server (Nginx)

Nginx (pronounced "engine-x") is the software that serves your Kola CRM file to your team's browsers. It's free, lightweight, and runs in the background automatically.

Install Nginx
apt install nginx -y
Start Nginx and set it to start automatically on reboot
systemctl start nginx
systemctl enable nginx
Verify it's running
systemctl status nginx

You should see Active: active (running) in green. Press q to exit.

🔍
Quick test: open a browser and go to http://143.198.x.x (your server's IP). You should see a default Nginx welcome page. This confirms the web server is working.
5
Upload your Kola CRM file

Your Kola CRM license package includes ChestnutCRM.html. You need to transfer this file to your server.

Option A — From Mac or Linux (using SCP)

Open a new terminal window on your computer (not the server) and run:

# Run this on YOUR computer, not the server
# Replace the path and IP address
scp /path/to/ChestnutCRM.html root@143.198.x.x:/var/www/html/index.html

Example: if ChestnutCRM.html is in your Downloads folder on a Mac:

scp ~/Downloads/ChestnutCRM.html root@143.198.x.x:/var/www/html/index.html

Option B — From Windows (using WinSCP)

  1. Download WinSCP (free — winscp.net)
  2. Connect using your server's IP address, username root, and your password
  3. Navigate to /var/www/html/ on the server side
  4. Drag ChestnutCRM.html from your computer to the server
  5. Rename it to index.html on the server
⚠️
File must be named index.html in the /var/www/html/ directory. This is what Nginx serves by default.
6
Point your domain to the server

You need to create a DNS record so that your chosen address (e.g. crm.yourcompany.com) points to your server's IP address. You do this at your domain registrar — wherever you bought your domain (GoDaddy, Namecheap, Google Domains, etc.).

Create an A Record

  1. Log in to your domain registrar
  2. Find the DNS settings for your domain
  3. Create a new A Record with these values:
Type: A
Name: crm                (this creates crm.yourcompany.com)
Value: 143.198.x.x    (your Droplet's IP address)
TTL: 3600              (or "Automatic")
⏱️
DNS propagation takes 5–30 minutes (sometimes up to 2 hours). You can check progress at dnschecker.org — search for your domain and look for your IP address appearing globally.
7
Enable HTTPS (SSL certificate)

HTTPS encrypts the connection between your team's browsers and the server. It's free using Let's Encrypt, and your browser will show a padlock icon. Complete Step 6 first and wait for DNS to propagate before running these commands.

Install Certbot (the SSL tool)
apt install certbot python3-certbot-nginx -y
Get your SSL certificate — replace with your actual domain
certbot --nginx -d crm.yourcompany.com

Certbot will ask for an email address (for renewal reminders) and ask you to agree to terms. Answer the prompts. When it asks whether to redirect HTTP to HTTPS, choose 2 (Redirect).

🔒
Certificate auto-renews. Let's Encrypt certificates expire every 90 days but Certbot installs an automatic renewal timer. No action required.
8
Verify and go live

Open a browser and navigate to https://crm.yourcompany.com. You should see Kola CRM load with a padlock in the address bar.

First-time setup in the CRM

  1. On first load, Kola CRM seeds sample data so you can confirm everything works
  2. Enter your license key when prompted — this unlocks your tier's features
  3. If you have an AI API key to configure, go to Settings → Ask Kola AI
  4. Share the URL with your team — they access it in any browser, no installation needed

Bookmark this address for your team

Your team's CRM address is simply: https://crm.yourcompany.com

Each team member logs in from their own browser. No apps to install. Works on Mac, Windows, and mobile.

🎉
Setup complete. Your Kola CRM is now live on your own server. Chestnut has no access to your server or your data.

⚠ Support Scope — Please Read

Chestnut support covers the Kola CRM application. Your VPS is your own infrastructure, managed by your hosting provider.

✅ Chestnut will help with

  • Questions about CRM features and how to use them
  • License key issues
  • Bugs or errors inside the Chestnut application
  • Configuration of Ask Kola AI settings
  • Guidance on steps in this guide

❌ Outside Chestnut's scope

  • Server connection issues (SSH, network, firewall)
  • DNS configuration at your registrar
  • Your server's OS or software updates
  • Server billing or account issues with DigitalOcean
  • Domain registration or domain renewal

For server infrastructure questions, DigitalOcean has excellent free documentation at docs.digitalocean.com and a responsive support team.

Troubleshooting FAQ

I can't connect via SSH — it just times out.
The most common cause is a firewall at your office or ISP blocking port 22. Try from a different network (e.g. mobile hotspot). If it works from there but not your office, speak to your IT contact about allowing outbound SSH. Also verify you're using the correct IP address from your DigitalOcean dashboard.
The domain isn't loading — browser says "This site can't be reached."
DNS hasn't propagated yet. Check dnschecker.org for your domain — wait until your server's IP address shows globally (green checkmarks). This typically takes 15–30 minutes. Do not proceed to Step 7 until DNS is confirmed.
Certbot gives an error: "Could not find a VirtualHost matching domain."
DNS is not yet pointing to your server, or hasn't fully propagated. Wait and retry. Certbot requires DNS to resolve to your server's IP before it can issue a certificate.
Kola CRM loads but shows a "License validation failed" message.
Ensure your license key is entered exactly as provided — no extra spaces. For Professional and Business tiers, the key is tied to your domain: confirm the URL in your browser exactly matches the domain you registered your license against. Contact Chestnut support at support@chestnutcompute.com with your license email and domain.
The CRM loads but shows a yellow "License check unavailable" banner.
This is a temporary network issue between your server and Chestnut's license validator — your CRM continues working normally. The banner is informational only. If it persists for more than 24 hours, contact support.
I restarted the server and the CRM is down.
Run systemctl status nginx via SSH to check if Nginx is running. If it shows inactive or failed, run systemctl start nginx. Nginx is set to start automatically on boot — if it's not starting, run systemctl enable nginx and reboot.
I uploaded a new version of ChestnutCRM.html (upgrade) and the old version still shows.
Your browser is caching the old file. Do a hard refresh: Ctrl+Shift+R (Windows) or Cmd+Shift+R (Mac). Also ask your team to do the same after any upgrade.
I forgot my server's root password.
DigitalOcean provides a console (browser-based terminal) in your dashboard under Droplets → Access → Launch Droplet Console. You can also reset the root password from the same panel. This is a DigitalOcean support matter, not a Chestnut matter.

Final Checklist — Before Sharing with Your Team

📧
Need help? Contact Chestnut support at support@chestnutcompute.com. Professional tier: 2 business day response. Business tier: 1 business day + phone by appointment. Include your license email and domain in any support request.

Prefer to skip the setup entirely? See our White Glove Setup Service — we handle everything for a one-time fee.