Understanding the install from a 50,000 foot level

Hi,
I’m trying to do an install of ERPNext in a way that isn’t (to my eyes) covered in the install documents.

I want to install ERPNext in a production docker environment alongside a number of other containers (a business suite, if you will) such that I maximize shared assets (database, reverse proxy, etc.) and minimize RAM/storage requirements. I know it’s not optimal, but I have my reasons.

I’m trying to understand if ERPNext needs its own, internal, proxy to operate or if it can share a reverse proxy with the rest of the host (with the shared reverse proxy handling SSL). Same with redis and mariadb.

I am also trying to understand the install process. It seems/sounds like I need to install frappe-docker first, then ERPNext, but what if I have no intention of building custom apps?

I have tried to install ERPNext following the many, varied instructions on Github but have never once successfully deployed it. I really think it’s a great solution and the one I need…but the install process seems REALLY complex (or, I’m a numpty).

Appreciate whatever advice you might have.

Thanks,
Phil

Among official installations, the standard install uses nginx and I believe the docker install uses traeffik. Both can route to anything on your host. Each ERPNext tenant has its own database, and barring configuration conflicts I can’t think of any reason you couldn’t have other databases coexisting too.

I’m not going to be much help on docker build instructions, unfortunately.

1 Like

Thank you for that advice. It’s good to know it’s not technically infeasible to share RPM and DB containers. I’m hoping someone else can chime in about docker.

I cannot speak to the Official Docker Installation. I have never used it. However, I’ve done a manual installation of ERPNext countless times. Occasionally within various Docker containers.

At the 50,000 foot level, ERPNext consists of the following components:

  1. A web server (Frappe Framework)
    • There is a Python CLI program (Bench) for interacting with this web server.
    • There’s a little program that converts HTML to PDFs, which coexists there.
  2. A reverse proxy for the web server (most people use Nginx)
  3. A single MariaDB (MySQL) database.
  4. Three(3) distinct Redis databases.
  5. A job scheduler daemon.
  6. Various Python RQ workers, to perform those scheduled jobs.
  7. An instance of NodeJS that performs some socket-related stuff.

You can containerize some/all of those services. Maybe you just want the databases running in containers. Maybe you want everything in Docker. The choice is yours.

With that said (imo), the ERPNext installation process is painful. I think the volume of threads on this forum, directly related to installation issues, are a testament to my opinion.

While introducing Docker solves certain problems, it also introduces new ones. If you’re going down this path, I would strongly recommend mastering a manual installation first. Acquire a baremetal or VPS of your favorite Linux OS. Learn to install all the components, configure them, and create a working installation. Achieving this (and understanding how it all interacts), will teach you volumes of useful information, how to avoid pitfalls, and how to troubleshoot.

With that under your belt, you’d be able to then transition those components into Docker containers, and orchestrate them together.

This is a undoubtedly a lot of work. It would be nice if installation was better. But none of us have stepped up and made that happen. :pensive:

3 Likes

I too have my problems with the official Docker installation. I have a docker container for v13. everything runs in a single container and I am very happy with it. But I always have a hard time creating a new container for a V14 version with all the programs. Maybe you’ll get another tip on how to do it easily.

Stefan

1 Like