Skip to content

n8n

In this example, we will create an app marketplace SKU for n8n distributed as a Docker Container via DockerHub. The app itself is available via DockerHub at "https://hub.docker.com/r/n8nio/n8n"


Prerequisites

As a service provider, you already have completed the following:

  1. Provisioned a Kubernetes cluster (e.g. Rafay MKS)
  2. Deployed a cluster blueprint with critical addons (i.e. Ingress Controller)
  3. Have access to a domain (e.g. paas.demo.gorafay.net) with TLS certificates to support https based access
  4. Your Kubernetes cluster has connectivity to the Internet to download container images from DockerHub

Create n8n App SKU

  • Login into the "Default Org" and navigate to the PaaS Studio
  • Click on Service Profiles and click on "New Service Profile"

This will launch a wizard to create a new service profile.

  • Provide a unique name (e.g. n8n-app)
  • Provide an optional Display Name
  • Provide an optional description (This will be presented to the end user when they select and launch the card for the SKU)

Create Service SKU

  • For Environment Template, select "system-serverless-pods"
  • For version, select the latest version (e.g. v6)
  • For Service Type, select from the dropdown list (managed by the super admin role)
  • Enable the toggle for auto creation of compute
  • Save & Continue

Profile Configuration

General

Update the fields in the "general" section if needed


Card Design

Card Design

Info

Click on "Preview" to view what the readme will look like for the end user.


Input Settings

In this section, you get to specify

  • Default values for required inputs
  • Which inputs can be overriden by end users
  • How the inputs can be selected by end users (e.g. dropdown list, text box etc)

Here is the documentation to run n8n from DockerHub is

docker volume create n8n_data

The volume is used to persist workflow data, credentials, and configuration across container restarts. Without this, all n8n settings would be lost when the container stops.

` docker run -it --rm \ --name n8n \ -p 5678:5678 \ -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \ -e TZ="<YOUR_TIMEZONE>" \ -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \ -e N8N_RUNNERS_ENABLED=true \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8n

  • Maps container port 5678 → host port 5678 so you can access the n8n UI
  • Sets the container’s timezone (e.g., "America/Los_Angeles" or "Asia/Kolkata").
  • Ensures strict permissions on n8n’s configuration files (security hardening — prevents overly permissive access).
  • Enables n8n Runners, which allow: Offloading long-running jobs, Distributed workflow execution and Parallel task processing
  • Mounts the persistent volume into the location where n8n stores: workflows, credentials, execution data, configuration files

Info

Due to security considerations, service providers will prefer to have web apps be accessed on "port 443" (https).


User Overrides

Disable "Allow Overrides for All" This disables all overrides for end users when they use it. We will selectively enable some fields in the subsequent steps.


Default Inputs

In this step, you will customize the standard profile with "default" values that are relevant for your deployment.

Name Value Override
Container Port 5678 NO
CPU 1024 NO
Enable Web Access true NO
Enable Storage true NO
Env Vars ["GENERIC_TIMEZONE=America/Los_Angeles","TZ=America/Los_Angeles","N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true","N8N_RUNNERS_ENABLED=true"] NO
Hostname Suffix paas.demo.gorafay.net NO
Ingress Class Name nginx NO
Kubeconfig NO
Memory 512 NO
Pod Image n8nio/n8n NO
Storage Path /home/node/.n8n NO
Storage Size 10Gi NO

Once configured, it should look like the image below.

Input


Hostname Suffix

Specify the DNS hostname that you intend to use to serve the web applications. In our example, we are using "paas.demo.gorafay.net". Every instance of the web app can be acccessed on a dynamically generated URL pattern that will look like "https://random prefix.paas.demo.gorafay.net"

Kubeconfig

  • In the Infrastructure portal, click on the "gear" symbol on the far right of the target Kubernetes cluster
  • Select "Download ZTKA Kubeconfig"
  • Open the downloaded file with an IDE
  • Copy the content and paste it into the Kubeconfig field in the above step.

Download Kubeconfig


Output Settings

Once the web application has been successfully deployed, we need to help user quickly find the URL for the app.

  • Click on "Add Output"
  • Under name, enter "Host Name"
  • Under label, enter "URL for n8n App"

Outputs

Info

The name "Host Name" will dynamically retrieve the https URL for the deployed web app.


Schedules & Actions

Skip these


Click on "Save" to save the profile. Now, we have a ready to use n8n App SKU. It should look like the following

Saved SKU


Test n8n App SKU

Now, we are ready to test our newly created n8n App SKU.

  • In the SKU Studio, click on "Service Instances"
  • Ensure the "system-catalog" project is selected
  • Click on New Service Instance

New n8n App

You should now see your newly created "n8n App". Now, enter a name for the instance and click on Deploy. In ~50-60 seconds, you should see a successfully deployed instance. See example below.

Successful Instance

Now, click on the URL and you should be taken to your n8n App. You should see something like the image below.

Successful Access

Info

You will need to register and specify credentials before you can access your n8n instance.


Share SKU with Customer Orgs

At this point, although the SKU works, it is not available to Customer Orgs automatically. Service Providers need to perform the following to make the SKU available to customer orgs

  • Login into the Rafay Ops Console
  • Click on System Resources
  • Click on Service Profiles

You should now see the newly created SKU (e.g. n8n-app).

  • Click on Actions to initiate SKU sharing
  • You will be presented with the option to share the SKU with "Select Orgs" or "All Orgs"
  • Select one of these options and the SKU will now be immediately available and usable by the selected customer orgs.

Share SKU