Skip to content

Docker Compose with nginx

codedge edited this page Aug 17, 2020 · 4 revisions

⚠️ The following guides aims at a completely fresh install of Invoice Ninja with the nginx webserver. The is no migration scenario covered.

We especially do not provide any TLS setup here. If you want to have TLS either use our setup with Caddy or read some guidline how to set up TLS with nginx.

Table of content

Prerequisites

ℹ️ Read the prerequisites section carefully as you need all of these information for a proper setup.

Guide for Invoice Ninja 4

📁 Create a new folder

First we need an empty folder where our docker files for IN 4 will reside.

Command: mkdir ~/invoiceninja4; cd ~/invoiceninja4

💻 Clone this repository

Now we need to clone this repository to get all the files necessary to corretctly configure and run IN 4 with Docker Compose.

Command: git clone https://github.com/invoiceninja/dockerfiles.git .

🔨 Configure your installation

To get the complete overview what things can be configured please check the docker-compose.yml. Each section and value that can or should be configured is commented.

Replace Caddy with nginx

The first thing is to change the server container from Caddy to nginx. This is easily done with replacing the existing image with image: nginx.

Add vhost configuration

Next you need to change the configuration file. Exchange the existing one with this one

...

volumes:
  # Vhost configuration
  - ./config/nginx/in-vhost.conf:/etc/nginx/conf.d/default.conf:ro

...

The config file in-vhost.conf comes bundled with the repository.

That's it. Nothing more is needed for a setup with nginx instead of Caddy. 💯

Some more things you might want to check:

  • APP_URL: Environment variable where to reach your installation. The default one is in.localhost.
    • ⚠️ If you change this, you also need to change this in the file config/nginx/in-vhost.conf.
  • Image: Set this to invoiceninja/invoiceninja:alpine-4 to get the most recent version of IN 4
  • Ports: Ports are configured for 80 and 443. If you only operate o 80, remove the 443.
  • Database settings: You can find the default settings in the docker-compose.yml file at the db service. So for the app service the environment variables that should be added are:
    • DB_HOST=db
    • DB_USERNAME=ninja
    • DB_PASSWORD=ninja
    • DB_DATABASE=db-ninja-01

🚀 Run your installation

After you finished the afore mentioned steps you can now run your installation.

Command: docker-compose up -d

This will run Invoice Ninja 4 with the configuration made. You should now be able to reach your installation at the APP_URL configured.

Guide for Invoice Ninja 5

📁 Create a new folder

First we need an empty folder where our docker files for IN 5 will reside.

Command: mkdir ~/invoiceninja5; cd ~/invoiceninja5

💻 Clone this repository

Now we need to clone this repository to get all the files necessary to corretctly configure and run IN 5 with Docker Compose.

Command: git clone https://github.com/invoiceninja/dockerfiles.git .

🔨 Configure your installation

To get the complete overview what things can be configured please check the docker-compose.yml. Each section and value that can or should be configured is commented.

Replace Caddy with nginx

The first thing is to change the server container from Caddy to nginx. This is easily done with replacing the existing image with image: nginx.

Add vhost configuration

Next you need to change the configuration file. Exchange the existing one with this one

...

volumes:
  # Vhost configuration
  - ./config/nginx/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf:ro

...

The config file in-vhost.conf comes bundled with the repository.

That's it. Nothing more is needed for a setup with nginx instead of Caddy. 💯

Some more things you might want to check:

  • APP_URL: Environment variable where to reach your installation. The default one is in.localhost.
  • Ports: Ports are configured for 80 and 443. If you only operate o 80, remove the 443.
  • Database settings: You can find the default settings in the docker-compose.yml file at the db service. So for the app service the environment variables that should be added are:
    • DB_HOST=db
    • DB_USERNAME=ninja
    • DB_PASSWORD=ninja
    • DB_DATABASE=db-ninja-01

🚀 Run your installation

After you finished the afore mentioned steps you can now run your installation.

Command: docker-compose up -d

This will run Invoice Ninja 5 with the configuration made. You should now be able to reach your installation at the APP_URL configured.