Faveo Invoicing Docker


Deploying Faveo Invoicing (Community Edition) on Docker

drawing

Faveo Invoicing on Docker

A simplified Docker Compose workflow that sets up a network of containers for Faveo Invoicing (Community Edition).

The setup script clones the source code directly from the official Faveo Invoicing Community Edition GitHub repository - no license or order number is required.

Usage


To get started, make sure you have Docker and Docker Compose installed on your system, and then clone this repository with the command below.

git clone https://github.com/faveosuite/faveo-helpdesk-docker-v2.git

cd faveo-helpdesk-docker-v2/faveo-invoicing-docker

Next, navigate in your terminal to the directory you cloned this into, and give the setup script executable permissions.

chmod +x faveo-run.sh

Prerequisites to run the script:

  1. A valid domain name fully propagated to your server’s IP.
  2. Sudo privilege.
  3. Unreserved ports 80 and 443. (If reserved, feel free to edit and change the ports of your choice in docker-compose.yml.)
  4. SSL Certificate (for Paid SSL users) - if you’re using a paid SSL, have the SSL certificate files ready before installation.
  5. Operating Systems Ubuntu 20,22,24
  6. Internet connectivity - the script clones the Faveo Invoicing Community Edition source from GitHub, and (for the Apache/Supervisor images) builds Docker images locally on first run.

Complete the below steps to get the containers up.


Running the script

Run the script faveo-run.sh by passing the necessary arguments. You can also run ./faveo-run.sh --help at any time to print this usage information from the terminal.

NOTE: You should have a valid domain name pointing to your public IP. This domain name is used to obtain SSL certificates, and the email is used for the same purpose.

SSL Certificate Options: Pass the option based on your SSL requirement.

  • Option A: Let’s Encrypt (Free SSL)

  • Option B: Self-Signed SSL

  • Option C: Paid SSL

    In case of Paid SSL, please ensure your SSL files are ready on your system. If you choose Option C (Paid SSL), you must specify the paths of the SSL certificate files when prompted.

    SSL Certificate Path: /path/to/certificate.crt

    SSL Key Path: /path/to/private.key

    SSL CA Bundle: /path/to/ca_bundle.crt

Usage:

./faveo-run.sh -domainname <your domainname> -email <example@email.com> -ssl <A|B|C>

Example: It should look something like this.

./faveo-run.sh -domainname yourdomianname.com -email yourgmail@gmail.com -ssl A

Help:

./faveo-run.sh --help

What the script does

  1. Checks prerequisites (Docker, Docker Compose, unzip, curl, git).
  2. Obtains an SSL certificate based on the option chosen (Let’s Encrypt, Self-Signed, or Paid).
  3. Clones the faveo-invoicing-community repository (master branch) into the faveo directory.
  4. Generates a random database root password and application database credentials, and writes them into a .env file (based on example.env).
  5. Creates the Docker network and volume used by the containers.
  6. Builds the faveo-apache and faveo-supervisor images locally from the Dockerfiles under Dockerfile/apache and Dockerfile/supervisor, and brings up the containers (Apache, MySQL, Redis, Supervisor) via docker-compose.yml.
  7. Saves the generated database credentials to credentials.txt.

After the Docker installation is completed, you will be prompted with database credentials. These credentials are saved in a file named credentials.txt. Make sure to store them somewhere safe.

A cronjob will be set to auto-renew SSL certificates from Let’s Encrypt if you select SSL option A.

Example credentials.txt:

Faveo Invoicing Docker Setup Credentials
----------------------------------------
Faveo Docker installed successfully. Visit https://yourdomain.com from your browser.
Database Hostname: faveo-mysql
Mysql Database root password: BEJOwAfcCtHowJRs
Faveo Invoicing DB name: faveo
Faveo Invoicing DB User: faveo
Faveo Invoicing DB Password: /PV3/ubrtb4Jdk+N

Visit https://yourdomainname.com and complete the readiness probe. Now you can install Faveo Invoicing via the GUI installer wizard. Input the database details when prompted, and complete the installation.

There is one final step needed to complete the installation.

You have to edit the .env file which is generated under the Faveo root directory after completing the installation in the browser.

Open the terminal and navigate to the project directory. Here you will find the faveo directory, cloned when running the script, which contains the Faveo Invoicing codebase. Inside it, edit the .env file and add REDIS_HOST=faveo-redis. faveo-redis is the DNS name of the Redis container.

Finally, run the command below for changes to take effect.

docker compose down && docker compose up -d --build


Updated: