Reintroducing Easy Install™️ Script

Hi Folks,

We have been working on revamping the Easy Install Script for some time now and the first iteration on the rework is here!

The new Easy Install is here :tada: . You can check it out on the Bench Repository

What does it do?

The previous easy install has helped a lot of folks but had a lot of moving parts. It used Ansible play-books to setup the system and configure everything. While it was easy to setup everything ,it was not easy to maintain since many new distributions required changes in the play-books and was becoming more and more tedious.

The new one uses Docker for setting everything up, and the script mainly runs using Python Stdlib, which means you won’t need to add any extra pip dependencies to make the script run. You can use the easy install script to setup a production instance as well as development instance.

The only hard dependency of the script is to have docker installed. The script tries to install docker on Linux machines but if you use a mac or windows machine, install docker first and

The script uses frappe_docker repo and make use of the compose file generation to setup a production instance. It uses the devcontainer compose file to spin up a development environment for frappe/ERPNext development.
One thing to bear in mind is that the script installs ERPNext as default and if you want to have a Frappe only instance, you can edit the generated compose file to suit your needs.

What OS are supported?

In theory the easy install script can run on any OS which is docker compatible and can spin up containers as required. Currently it has been tested on Ubuntu 18, Ubuntu 20 and Alpine using Docker inside Docker(dind).

Known Issues

Most common issues are due to permission errors for docker.

  1. Cannot connect to docker daemon socket

If you face this issue, refer this to fix the issue and rerun the script again

You can checkout more on the Bench README and you can find the code here

It would be great if you could try the script out and provide us with feedback and if you face any errors feel free to raise an issue in bench repository.

Special thanks to @revant_one for all the clearing all my docker related queries and for all the contributions to frappe_docker repository and the ERPNext ecosystem too.

Consider this as the first iteration of the script and many more features will be added in the future including backups, updates and a Frappe only setup. :smile:


Thank you. Will definitely be checking it out when i got the time. I have been able to get ERPNext running unencrypted in a local network, but that is of course far from optimal. I am trying to do SSL in a Sophos protected network.

… then try again. (?) :slight_smile:

Woah :open_mouth:

Also another issue that was raised by @Kartoffel was that the command was failing. This was because, the script uses docker compose command and doesn’t work with docker-compose.

docker compose is the latest version of compose and please refer compose’s documentation here to switch to the latest.

Very nice! Do the instructions under Basic Usage apply to the new docker method?

How do we get to the bench directory to run commands such as: bench get-app ?

Installing apps was not possible with the frappe/erpnext docker bundle and I am looking for a way to install Bench that allows for additional apps.

Also, is it possible to migrate from a previous installation?

Thank you!

1 Like

That did the trick. Thank you. Using this script lead me to having the whole website available inside of my local network.
I used this command:

python3 --prod --email myemail@mail

The certificate seems to be a default traefik one. I did not get a mail on the specified mail tho. I assume that i will get a mail from traefik now when my cert expires?!

Screenshot 2022-12-19 105012

1 Like

Im the least competent person to reply to you, but to my knowledge you can execute any command inside a container using exec. In case of the ERPNext instance that is generated by the easy install script:

docker compose --project-name frappe exec backend bench

it seems like you have to enable developer mode to use get-app

many things in pipeline new Easy install - backups and updates · Issue #1403 · frappe/bench · GitHub

after backup and update, custom images for apps will be figured out.

if you have any ideas, share here or on issues.


Did you ever get SSL working? I’m always stuck with the Traefik default certificate and can’t seem to figure out how to get this working.

can you share logs of traefik container?

This is all I see in the log file. I believe this is the correct file, it was in /var/lib/docker/traefik-container-id

Is there another log file for traefik?

To view the logs you need to enter docker compose -p frappe logs in console when you start erpnext with the easy-install script

Thank you for bringing down the learning curve with this script. I am new to this project and learning the basics.

I could set up a production environment locally on Windows smoothly, without SSL.
I wanted to setup a Dev environment but trying to figure out what is to be done after the containers are running.

I’ve tried steps given in frappe/frappe_docker and Frappe Framework Tutorial. But a detailed Developer Environment Setup Wiki would be helpful. Please let me know if there is one somewhere already. Thanks.

if you want to run Frappe the old-fashioned way (docker not required) you can try this simple script:

it requires no action on your part except supplying your site name, database and admin passwords and it will do the rest. you can set up development or production with it. It will even help you set up SSL on your production site! give it a try let me know your thoughts.

The script is actively maintained and suggestions on improvements are welcome.

1 Like

Thanks , Whether it handles some reboot requirements at some stage, if any

No it doesn’t handle reboot requirements as it is a bash script and cannot persist on system shutdown. For Ubuntu 22.04 I would recommend running apt update and apt upgrade before running the script as there’s a kernel update that currently requires reboot and breaks the script at some point.