I’m currently using Odoo for my business operations. While it has been effective, I’ve been considering switching to ERPNext since it’s open-source, which I believe offers more flexibility and benefits in the long run.
However, I have a few concerns:
Ease of Deployment and Maintenance:
My plan is to deploy ERPNext using Docker Compose on a server where multiple other applications are already running. From the documentation and blog posts I’ve reviewed, the deployment process for ERPNext seems more complex than I expected.
Resource Intensity:
Some articles have mentioned that ERPNext is resource-intensive. How true is this, and what are the recommended minimum server specifications to run ERPNext alongside other applications without performance issues?
Comparison to Odoo:
The main reason I’m looking to migrate from Odoo is the lack of an upgrade script, which has caused issues in managing updates. How does ERPNext handle upgrades, and can I expect a smoother experience in this regard?
I’d appreciate any guidance or tips from the community, especially regarding deployment in a shared environment and managing resources effectively.
Which other applications are you planning to run alongside ERPNext ? Are you planning on running those apps beside ERPNext on the same VM, on the same instance ?
Frappe Cloud handles DevOps and provides super smooth experience when it comes to updating, upgrading and managing your Frappe apps including ERPNext as well as handling backups, domains, SSL and more.
With the $25 bench plan you can smoothly run multiple Frappe Apps at once including ERPNext with millions of database entries. You can also develop your own custom apps and install them using Github.*
With that plan you can also leverage system scripts which offers powerful customizations including API methods.
Edit: Just noticed you are interested in docker, you can check frappe framework’s official documentation on setting up docker, I never tried it before.
Self-hosting definitely assumes a solid understanding of server admin. If you don’t have that, I’ll second the suggestion for Frappe Cloud.
For major version upgrades, I’ve always had best luck starting from a new installation and restoring from an export. Others prefer to use roll the version forward. Both approaches definitely work.
The docker production setup seems to be designed more for scale than simplicity. It’s fairly complicated but, as I understand it, quite performant. I would not recommend managing it yourself unless you have good docker knowledge. Processes are documented here:
For requirements, I think 4gb ram and 2 processors is minimum for a low-demand system. It’s generally not recommended to install ERPNext on a shared server/vps. But, if you do, there’s no way to say what the requirements will be because it depends entirely on what those other applications are using.
There are some serious users and contributors who actively use and contribute to frappe/frappe_docker and frappe/helm. Both repositories are community work. We all use the same base images, containers, helm charts that largest enterprises will be using. In fact we all benefit from the contributed open knowledge. Because of that, it is has become complex for beginners.
In my opinion, hosting business applications is complex in the first place. Problems begin when your business is growing and the application is not working as expected. Only your knowledge and skills can save you then. When you know what you are entering into, it will be pleasant experience. Knowledge empowers the users and developers.
HAVE A STAGING SETUP. It is required because many times you may not like what you get after upgrade. Some component changes that your company may be expecting to work differently. Not just about frappe apps, anything in open source world can change and you might not like it. Easier to reset the staging and raise issues instead of getting stuck on production setup.
Re-build image with new app code (pipeline refer above)
re-deploy built images on docker-swarm or kubernetes (gitops or pipeline or webhook)
Run bench --site all migrate as a separate task / job with the new image, that will migrate the schema and run patches achieving db upgrade.
The above docker-swarm how-to has a run-once migration container that will run on re-deploy by webhooks or gitops.
On kubernetes, create a migration Job along with helm upgrade and it takes care of everything.
Create release pipeline to automate upgrades.
Backups:
Start with db dump and copy of uploaded files.
If data grows over 5 GB take incremental snapshots using restic and mariadb-backup.
ERPNext is much superior to Oddo in terms of flexibility. There is only one version of ERPNext and that is the free version.
But if you are installing ERPNext alongside Nextcloud and other applications, in the same VM without virtualization under the same root, there might be issues. I don’t think anyone has tried that. Other applications might interfere with ERPNext.
I suggest you have a separate instance for ERPNext and you can swiftly integrate NextCloud and others as per need.
Deploying ERPNext is fairly easy on a standalone setup. Docker might be complicated, never tried that. Manual install is easy-go.
ERPNext is not that resource intense. You can start with a bare minimum of 2vcpus and 4GB of RAM if thats a dedicated VPS. For shared VPS, go for a minimum of 4 vcpus and 8GB of RAM. NVMe Storage is better, start with a minimum of 50 GB. File uploads can quickly take up space. This is based on pure experience and not an official recommendation. If you are looking for intense work with more than 10 active users, I suggest you have a dedicated VPS with at least 4vcpus and 16Gb RAM for better performance.
We have always upgraded with relative ease. Unless you have broken things, updates and upgrades are smooth.
If you are asking how much scripting is needed for updates/upgrades, I might be able to answer you with this:
A simple bench update command updates all apps to their latest versions. If you are looking to update one app only: bench update --apps myapp
If you are looking for upgrades, it might involve a few more commands depending on how much changes are brought in by the latest major release.