Skip to content

Running the Docker Compose Stack

To get the system up and running, all you need is Docker and Docker Compose installed on your machine. All services are defined in the provided docker-compose.yml file.

  1. Ensure all files are in the same directory: Make sure the docker-compose.yml file and the n8n-workflow.json file are located in the same folder.
  2. Open your terminal and navigate to the project directory.
  3. Run the following command:
bash
docker compose up -d

This command will build and start all the services (n8n, Gotenberg, nginx, and PHP-FPM) in detached mode, meaning they will run in the background.

Configuring n8n

The provided n8n-workflow.json file contains a pre-built workflow. You just need to import it.

  1. Access the n8n UI: Open your web browser and navigate to http://localhost:5678.
  2. Import the workflow:
  • Click on the "Workflows" icon in the left sidebar.
  • Click "New" -> "Import from File".
  • Select the n8n-workflow.json file.

Activate the workflow: Once imported, click the "Active" toggle in the top-right corner to make the workflow live. The webhook will now be listening for incoming requests.

Generating a PDF

The workflow is triggered by an incoming HTTP POST request to a webhook. The request body should contain the data needed to populate the HTML template.

Webhook URL:

  • You can find the exact webhook URL by opening the workflow in n8n and clicking on the "Webhook" node.
  • The URL will look something like http://[your-n8n-address]:5678/webhook/your-unique-id.

Example Request:

You can use a tool like cURL or Postman to send a request. The data should be sent as a JSON payload in the request body.

  • Endpoint: POST /webhook/[your-unique-id]
  • Headers:
    • Content-Type: application/json

Body (JSON):

json
{
  "document": "Invoice",
  "invoiceNumber": "INV-2023-001",
  "clientName": "Acme Corp.",
  "invoiceDate": "2023-10-26",
  "items": [
    {
      "description": "Product Design",
      "sku": "SF34RTD",
      "quantity": 1,
      "price": 500
    },
    {
      "description": "Development",
      "sku": "Y46SW34",
      "quantity": 1,
      "price": 1500
    }
  ]
}

Expected Response:

  • Upon a successful request, the webhook will respond with the generated PDF file. The Content-Type header will be application/pdf, and the file content will be in the response body.

Troubleshooting

  • Containers not starting: Run docker compose logs to check the logs of each service for errors. This will help identify issues with specific containers.

  • n8n not connecting to Gotenberg: Ensure the Gotenberg URL in the n8n workflow's HTTP Request node is correctly set. It should point to the Gotenberg service within the Docker network, which is typically http://gotenberg:3000.

  • PDF is blank or has formatting issues:

    • Check the PHP-FPM logs to see if there are any PHP errors during template rendering.
    • Verify the data sent in the webhook request matches the variables expected by your PHP template.

For detailed information on creating and modifying the HTML/PHP templates, please refer to the templating.md file.