We read the docs, bugtracker and hunted for the details so you don’t have to. This is how to set up Frappe with the
- Human Resource Module (HRMS)
- Customer Relation Ship Module (CRM)
- Helpdesk / Support Module
- Enterprise Ressource Planning (Erpnext)
Before we dive in: What is Frappe?
Frappe is an Open Source project … The company behind it offers a hosted version. Maybe you should look into that.
Installation
Frappe is just the base framework. Individual docker images can be created to make applications available, a “site” created and the applications added to the site {.is-warning}
Podman-compose has issues, the dockerfiles and install scripts are community supported, devs have a history of breaking things, install paths and updates. Official documentation is often unclear, incomplete. {.is-danger}
Requirements
RAM up to ~10 concurrent users: 8 GB 10–50 concurrent users: 16 GB
Disk Space Minimally 30 GB free disk space
Get started with the Custom Image Creation
This guide is based on https://github.com/frappe/frappe_docker/blob/main/docs/02-setup/02-build-setup.md
and enhanced with currently undocumented information. Please compare the source above for changes not added to this guide.
git clone https://github.com/frappe/frappe_docker
cd frappe_docker
https://github.com/frappe/telephony is a dependency of Helpdesk, without it Helpdesk will not install into the site. Check if the telephony branch to be used is still “develop” {.is-warning}
Create JSON with desired apps
While erpnext and hrms have the “version-xx” branches, helpdesk, telephony and crm have currently not {.is-info}
Example apps.json:
{
"url": "https://github.com/frappe/erpnext",
"branch": "version-16"
},
{
"url": "https://github.com/frappe/hrms",
"branch": "version-16"
},
{
"url": "https://github.com/frappe/telephony",
"branch": "develop"
},
{
"url": "https://github.com/frappe/helpdesk",
"branch": "main"
},
{
"url": "https://github.com/frappe/crm",
"branch": "main"
}
]
To add new applications, prune the current images and rebuild the images. Adding new applications to the apps.json and running the docker build command is not enough {.is-info}
Build the images
docker build \
--build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
--build-arg=FRAPPE_BRANCH=version-16 \
--secret=id=apps_json,src=apps.json \
--tag=custom:16 \
--file=images/layered/Containerfile .
Create Compose File
Add and modify the env file
cp example.env custom.env
Then run
docker compose --env-file custom.env -f compose.yaml -f overrides/compose.mariadb.yaml -f overrides/compose.redis.yaml -f overrides/compose.noproxy.yaml config > compose.custom.yaml
Run the environment
docker compose -p frappe -f compose.custom.yaml up -d
Frappe
As designated user, download the git repository and follow: https://github.com/frappe/frappe_docker/blob/main/docs/02-setup/07-single-server-example.md
the basic auth for Traefik is user: admin, password: set in the env file
<sitename> needs to match the actual IP/HOST, that this app is running on. In my case I picked a generic name ABC_Items, which lead to 404 - Not Found and the reason I’m posting here… I changed the sitename to my actual IP 10.0.0.70 and was greeted withe the Web UI..
Commands
Create a new site docker compose -p frappe exec backend bench new-site erpnext-test.int.essyo.pl —mariadb-user-host-login-scope=‘172.%.%.%’
Add application to site docker compose -p frappe exec backend bench —site erpnext-test.int.essyo.pl install-app erpnext
Delete Site docker compose -p frappe exec backend bench drop-site dotosotest —no-backup
ISSUES
https://github.com/frappe/frappe_docker/issues/711#issuecomment-3646161854
A clear list of tools used (e.g., React, PostgreSQL, Docker, Terraform). This helps with SEO and shows your range.
Visuals: Screenshots of the UI, architecture diagrams, or “Before vs. After” performance graphs. Technical readers want to see the logic.
The “Why”: Never just say you used a tool; explain why that tool was the correct choice for that specific problem. This proves you are a consultant, not just a coder.
Lessons Learned (Optional but great): Briefly mentioning a hurdle you overcame shows maturity and honesty.