Community Node installation with N8N running in queue mode

Hello,

I’m trying to install the community node n8n-nodes-text-manipulation on a self-hosted docker installation running in queue mode.

I got this message in settings/community node

You need to install community nodes manually because your instance is running in queue mode. More info.

When following the URL, i can’t find information in the documentation. I read a few posts on the community forum, then tried to just upload the community node in my shared n8n docker volume in the folder custom that map to ./n8n/custom in the docker image.

But nothing happens.

Any ideas ?

I cc the node creator @lublak :wink:

I’m not sure the canonical way to do it. But we build our own docker image based on these instructions N8n-node-dev build issue with a file - #10 by jan

E.g. your run command might be

RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-text-manipulation

@mcc37 hey hey! :slight_smile:


If I understand correctly, there is the option to change the mode. Regular.
Alternatively, you have to build a docker image yourself.
It should be as @pemontto describes it.

I can not switch to regular, I need performance offered bye queue execution style.

And I would like to avoid to build a custom image every week to follow N8N frequent release.

I saw a post of @RicardoE105 (but I can’t) find it anymore talking about this folder. Ideally, I would deploy the community node in the right folder.

Hey @mcc37,

At the moment building out a docker image is probably the best way that I can think of, With community nodes when they are installed we add them to the ~/.n8n/nodes/ folder. I have no idea if it would work but you could always try manually installing nodes into that folder and restarting the instance to see if that works.

I did spot an internal note the other day to document how to install community nodes when using queue mode but I don’t think we have started on that process yet.

Hey @Jon

I had a first try to set it ip through folder, but it did not work. I will have another try.

It would be pretty cool to have a simple method to install community nodes directly through the web interface even if using queue mode.

1 Like

Hey @mcc37,

I agree doing it from the UI would be the best option but I guess as it is not there already it is probably a bit tricky to do properly.

With the folder option I don’t think a shared volume would do it and you might need to do it on each instance and run the npm install command.

As far as I know though the only method we currently support is through custom docker images, I have just asked internally to see if I have missed something though.

Hey @mcc37,

So we think if you shared .n8n/custom with all your workers after doing an install of a node and restarting each worker it should be available to all of them.

I am going to set aside some time tomorrow to give it a test.

3 Likes

Thanks @Jon, I will be happy to know the results.

any luck with this?

Hey @Greg_Hadley,

Not had a chance to test it in queue mode yet but I did do some testing with manually installing nodes which would suggest the approach would work.

Hi @Jon, is there any progress on this?
I am also running on queue mode and till now did not manage to install any community nodes.

Hey @prononext,

The N8N_CUSTOM_EXTENSIONS option should do the job or another option would be to use a custom image.

Did you give it a go making sure to install the node on all of the n8n instances?

What about binding the directory to the docker queue instance?

I’m looking to the way to install Plausible community node on queue installation because I just can’t use all on the same process (we are sharing resources while a couple of services).

Hey @matenauta

You could try mapping the custom extension path to a shared folder then install the node into it using npm and restart the instances.

From what I remember about that community node though there may be something missing so it would be worth checking it in a test instance first to make sure it does what you want otherwise it will be a case of using the http request node.

1 Like

We do this for queue mode. We actually create a named docker volume, install the community nodes there, and then mount that to all our n8n containers:

To create/update the volume and community nodes:

docker volume create n8n-custom-nodes
# Set the directory permissions to the node user
docker run --rm \
    -v n8n-custom-nodes:/custom \
    --entrypoint /bin/sh \
    n8nio/n8n \
    -c "chown -R 1000:1000 /custom"
# Install the community nodes
docker run --rm \
    -v n8n-custom-nodes:/custom \
    n8nio/n8n \
    npm install --prefix /custom n8n-nodes-ldap n8n-nodes-mjml

Then you just need to mount that named volume to /home/node/.n8n/custom in your containers

    volumes:
      - n8n-custom-nodes:/home/node/.n8n/custom
3 Likes

Slight caveat I’ve noticed, the nodes installed via this method will register their ID as CUSTOM.<node name> on the canvas, which means you’ll get “dead” nodes when copying from/to an instance with community nodes installed normally.

I’m trying to use Budibase to get rid of Google Sheets or similar services (I like to self-host all that I can).

Do you think that could be possible to use http and webhook requests in that specific use case?

I tried to map the plugins from another instance but I value simplicity on methods and keep it cleanest as possible.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

New version [email protected] got released which includes the GitHub PR 10228.

2 Likes