ERP for Everyone 01: Hosting

Deploy your ERP on infrastructure that's under your control.

Published 2025-09-10

Glossary

TermDefinitionExample
HostingThe process of deploying and maintaining software applications on servers that are accessible over the internet.The apps you open on your phone often talk to servers running software. Those servers are hosting that software.

Options

When it comes to hosting software, you generally have three options:

  1. Self-Hosting: You can host software on your own server or a virtual private server (VPS). This gives you full control over the environment and data, but requires some level of technical knowledge to set up and maintain.
  2. Cloud Hosting: You can use cloud providers like AWS, Google Cloud, or Azure. This option offers scalability and reliability, but often incurs much higher ongoing costs and can leave you with a hefty bill if not setup correctly.
  3. Managed Hosting: Providers like Frappe offer managed hosting services for their software, where they take care of the setup, maintenance, and updates for you. This is a good option if you want to avoid the technical aspects of hosting, but it can be expensive and may limit your control over the software.

Given this blog series is all about empowering small businesses to take control of their ERP systems, I recommend going with the Self-Hosting option. I will provide you with everything you need to know to get your ERP up and running, with a great suite of shortcuts to help you along the way. Given most small businesses don’t have the hardware or internet connection to deploy software on their own servers, I recommend a VPS. They are usually billed at a flat monthly rate (no suprises!), and you can choose a server that fits your budget and performance needs.

VPS - Provider

To keep things simple, I will be setting up the VPS for this blog series on DigitalOcean. They offer a user-friendly experince and server locations all around the world. Feel free to choose another provider, just note that your setup steps might look quite different to what I show below. I’ve included some handy tips at the end of this post to help you choose a provider if you wish to shop around.

If you’re happy to go ahead with DigitalOcean, the first step is creating an account. You can support my mission to help businesses transition to an ERP they can control by signing up with the referral button below. It will give me a small kickback at no extra cost to you, and I would greatly appreciate it!

DigitalOcean Referral Badge

Once you’ve created your account and logged in, click here to go directly to the required page for the next step.

VPS - Creation

Assuming you’re on the page I linked in the last section, we can now create our VPS (or “Droplet” as DigitalOcean calls it). Please use the following selections (or better):

Once you’ve made these selections, click the “Create Droplet” button at the bottom of the page. It will take a few minutes for your droplet to be created. Once it’s ready, you will see it listed on your DigitalOcean dashboard. Click on the icon that looks like a terminal. This will open a web-based terminal that you can use to interact with your VPS. You should see a prompt asking for your username. The default username for Ubuntu is root. Enter that and press Enter. Next, it will ask for your password. Enter the password you set during the droplet creation process (note that you won’t see any characters appear as you type). Press Enter again. Leave that tab open, as we will be using it in a future section.

VPS - Domain Name

Next, we need to point your domain name to the ERP. This is important as it allows you to access your ERP through a friendly URL instead of an IP address. If you don’t have a domain name yet, you can purchase one from providers like Namecheap. Once you have a domain name, you need to setup an A record from erp to your VPS’s IP address. You can find your VPS’s IP address on the DigitalOcean dashboard where your droplet is listed. This means you will be able to access your ERP at erp.your_domain.com.

VPS - ERPNext

Jump back to the web terminal tab you opened earlier. Now we can start setting up the software on the VPS.

Start off by typing echo $DOMAIN="electronics.com" (replace electronics.com with your actual domain name) and press Enter. This sets up a variable that we will use in the next commands.

You can confirm it is set correctly by typing echo $DOMAIN and pressing Enter. It should print out your domain name.

Now, you can copy and paste all of the commands below into the terminal and press Enter. This will install Docker, set up a firewall, configure Caddy as a reverse proxy with automatic HTTPS, and finally install ERPNext using Docker.

# Add Docker's official GPG key and install Docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Enable the firewall and setup Caddy
ufw enable
sudo ufw allow 80
sudo ufw allow 443

# Install Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# Create Caddy configuration for your domain
sudo tee /etc/caddy/Caddyfile > /dev/null <<EOF
erp.$DOMAIN {
    reverse_proxy localhost:8080
}
EOF

# Start and enable Caddy
sudo systemctl enable caddy
sudo systemctl start caddy

git clone https://github.com/frappe/frappe_docker
cd frappe_docker
docker compose -f pwd.yml up -d

This will take a while to run, as it needs to download and set up a lot of software. Give it about 5-10 minutes, and if there are no errors, move to the next step.

Appendix (optional reading)

VPS Provider Choices

If you want to compare VPS offerings, here are a few popular providers I’ve heard good things about as of September 2025:

I recommend choosing a provider based on two factors:

  1. Price: Look for a provider that offers a plan that fits your budget. Most providers have plans starting from as low as $5 USD per month that would be sufficient for a small business ERP.
  2. Location: Choose a provider that has data centres close to your business location, as this will help with latency and performance.