Deploy your ERP on infrastructure that's under your control.
Published 2025-09-10
Term | Definition | Example |
---|---|---|
Hosting | The 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. |
When it comes to hosting software, you generally have three options:
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.
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!
Once you’ve created your account and logged in, click here to go directly to the required page for the next step.
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):
mybusiness-erp
.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.
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
.
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.
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: