22a5f5258d
In a multi-main setup, we have the following issue. The user's client connects to main A and runs a test webhook, so main A starts listening for a webhook call. A third-party service sends a request to the test webhook URL. The request is forwarded by the load balancer to main B, who is not listening for this webhook call. Therefore, the webhook call is unhandled. To start addressing this, cache test webhook registrations, using Redis for queue mode and in-memory for regular mode. When the third-party service sends a request to the test webhook URL, the request is forwarded by the load balancer to main B, who fetches test webhooks from the cache and, if it finds a match, executes the test webhook. This should be transparent - test webhook behavior should remain the same as so far. Notes: - Test webhook timeouts are not cached. A timeout is only relevant to the process it was created in, so another process retrieving from Redis a "foreign" timeout will be unable to act on it. A timeout also has circular references, so `cache-manager-ioredis-yet` is unable to serialize it. - In a single-main scenario, the timeout remains in the single process and is cleared on test webhook expiration, successful execution, and manual cancellation - all as usual. - In a multi-main scenario, we will need to have the process who received the webhook call send a message to the process who created the webhook directing this originating process to clear the timeout. This will likely be implemented via execution lifecycle hooks and Redis channel messages checking session ID. This implementation is out of scope for this PR and will come next. - Additional data in test webhooks is not cached. From what I can tell, additional data is not needed for test webhooks to be executed. Additional data also has circular references, so `cache-manager-ioredis-yet` is unable to serialize it. Follow-up to: #8155 |
||
---|---|---|
.. | ||
bin | ||
scripts | ||
src | ||
templates | ||
test | ||
.eslintrc.js | ||
BREAKING-CHANGES.md | ||
jest.config.js | ||
LICENSE.md | ||
LICENSE_EE.md | ||
nodemon.json | ||
package.json | ||
README.md | ||
tsconfig.build.json | ||
tsconfig.json |
n8n - Workflow Automation Tool
n8n is a free and open fair-code distributed node-based Workflow Automation Tool. You can self-host n8n, easily extend it, and even use it with internal tools.
Contents
- Demo
- Getting Started
- Available integrations
- Documentation
- Create Custom Nodes
- Contributing
- What does n8n mean and how do you pronounce it
- Support
- Jobs
- Upgrading
- License
Demo
📺 Here's a 📺 short video (< 4 min) that goes over key concepts of creating workflows in n8n.
Getting Started
There are a couple of ways to get started with n8n.
Use npx
To spin up n8n using npx, you can run:
npx n8n
It will download everything that is needed to start n8n.
You can then access n8n by opening: http://localhost:5678
Note: The minimum required version for Node.js is v14.15. Make sure to update Node.js to v14.15 or above.
Run with Docker
To play around with n8n, you can also start it using Docker:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
docker.n8n.io/n8nio/n8n
Be aware that all the data will be lost once the Docker container gets removed. To persist the data mount the ~/.n8n
folder:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
Refer to the documentation for more information on the Docker setup.
Install with npm
To install n8n globally using npm:
npm install n8n -g
After the installation, start n8n running the following command:
n8n
# or
n8n start
Sign-up on n8n.cloud
Sign-up for an n8n.cloud account.
While n8n.cloud and n8n are the same in terms of features, n8n.cloud provides certain conveniences such as:
- Not having to set up and maintain your n8n instance
- Managed OAuth for authentication
- Easily upgrading to the newer n8n versions
Available integrations
n8n has 280+ different nodes that allow you to connect various services and build your automation workflows. You can find the list of all the integrations at https://n8n.io/integrations
Documentation
To learn more about n8n, refer to the official documentation here: https://docs.n8n.io
You can find additional information and example workflows on the n8n.io website.
Create Custom Nodes
You can create custom nodes for n8n. Follow the instructions mentioned in the documentation to create your node: Creating nodes
Contributing
🐛 Did you find a bug?
✨ Do you want to contribute a feature?
The CONTRIBUTING guide will help you set up your development environment.
You can find more information on how you can contribute to the project on our documentation: How can I contribute?
What does n8n mean, and how do you pronounce it?
Short answer: n8n is an abbreviation for "nodemation", and it is pronounced as n-eight-n.
Long answer: In n8n, you build your automation ("-mation") workflows by connecting different nodes in the Editor UI. The project is also built using Node.js. As a consequence, the project was named nodemation.
However, the name was long, and it wouldn't be a good idea to use such a long name in the CLI. Hence, nodemation got abbreviated as "n8n" (there are eight characters between the first and the last n!).
Support
If you run into issues or have any questions reach out to us via our community forum: https://community.n8n.io.
Jobs
If you are interested in working at n8n and building the project, check out the job openings.
Upgrading
Before you upgrade to the latest version, make sure to check the changelogs: Changelog
You can also find breaking changes here: Breaking Changes
License
n8n is fair-code distributed under the Sustainable Use License.
Proprietary licenses are available for enterprise customers. Get in touch
Additional information about the license can be found in the docs.