n8n-io / n8n Goto Github PK
View Code? Open in Web Editor NEWFree and source-available fair-code licensed workflow automation tool. Easily automate tasks across different services.
Home Page: https://n8n.io
License: Other
Free and source-available fair-code licensed workflow automation tool. Easily automate tasks across different services.
Home Page: https://n8n.io
License: Other
When I first started using this library the main information I wanted was to know what services were already implemented. I could not find this information anywhere. I know someone can just browse through the source code and see what's available, but I think this is not easy for someone who is seeing the project for the first time.
My suggestion is to include another section in the README listing all available integrations (and maybe some actions or examples). It's the responsibility of the developer that creates a node to update this table.
My goal with this is to give a glance to someone new that n8n has a lot of integrations in place and is the right tool to what they are looking for.
PS: Maybe it would be better to add this information in the documentation (maybe even create a single page for every node or service), but in this case a link in the README directly to this page is really important.
Create an integration for MailJet similar to the Mailgun one.
https://dev.mailjet.com/guides/
Mailgun-Node is a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Mailgun/Mailgun.node.ts
Discussion in forum:
https://community.n8n.io/t/mailjet-integration/64
Hi ! I'm trying to test n8n with github trigger. I have create one token with all github api access . When I try to fetch star number on my repository I haven't any response. I haven't any error on my block. Can you help me ? I have used this documentation for creating my token : https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line
Node icons are not copied to installation directory when running n8n-node-dev build
. I copied the file manually.
Error: ENOENT: no such file or directory, stat '/root/.n8n/custom/gitlab.png'
I keep getting this Entries exist but they do not contain any JSON data.
after every workflow execution.
e.g. starring my github repo like in the example youtube video.
But a Command Execution node works
e.g.
node -e "console.log('success');"
gives out a JSON
[
{
"exitCode": 0,
"stderr": "",
"stdout": "success"
}
]
Am I doing something wrong with the access token generation on the github?
I gave all the permissions before generating the token and I still am not able to receive any JSON data.
hi,
the project description on github is:
"Free node based Workflow Automation Tool. Easily automate tasks accross different services"
s/accross/across ?
What am I missing? Does 8 translate to something that sounds like "odematio"?
I did a bit of digging and couldn't find the answer to my question.
Firebase hosting works for static files but sqlite/mongodb/postgres cannot be hosted there. I'm wondering what level of effort it would be to add Firestore as a db option?
This project is kick ass. Running locally is good but hosting this on production environments will push this project to insanely valuable.
Feature:
Searching node related events with realtime filtering while typing.
e.g: For the Github Trigger
node
image
The current development setup guide is quite light:
## Development Setup
1. Clone the repository
2. Go into repository folder
3. Run: `npm install`
4. Run: `npx lerna bootstrap --hoist`
5. Run: `npm run build` or `npx lerna exec npm run build` (if lerna is not installed)
At least, for me, it wasn't sufficient in order to get me started ๐ข
Maybe add:
### Requirements
npm install -g lerna
and then make sure the code in the HEAD of master does compile with lerna run build
.
Cloning 131823a, I've got the following issues:
error TS5014: Failed to parse file 'tsconfig.json': Unexpected token ] in JSON at position 85.
which seems to be caused by trailing commas in arraysFixing those commas, the build then fails with:
info cli using local version of lerna
lerna notice cli v3.16.4
lerna info versioning independent
lerna info Executing command in 6 packages: "npm run build"
lerna ERR! npm run build exited 1 in 'n8n-node-dev'
lerna ERR! npm run build stdout:
> [email protected] build C:\Users\tleveil\workspace\contrib\n8n\packages\node-dev
> tsc
error TS5023: Unknown compiler option 'lib'.
error TS5023: Unknown compiler option 'types'.
error TS5023: Unknown compiler option 'esModuleInterop'.
error TS5023: Unknown compiler option 'strictNullChecks'.
error TS5023: Unknown compiler option 'strict'.
error TS6047: Argument for '--target' option must be 'ES3', 'ES5', or 'ES6'.
lerna ERR! npm run build stderr:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `tsc`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\tleveil\AppData\Roaming\npm-cache\_logs\2019-08-13T12_39_58_080Z-debug.log
lerna ERR! npm run build exited 1 in 'n8n-node-dev'
lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
And there you loose potential contributors ๐
Results: 1
ERROR: 139622690989888:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
Error: 139622690989888:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
maybe my nodejs version ?
Stripe API:
https://stripe.com/docs/api
TODO:
-Create triggers for all of the webhooks
Ideally I'd like to try working on this but haven't gotten run/dev to work yet following these instructions
The Chargebee integration is currently very limited. A lot of the functionality which the API offers is not implemented. For example: create/delete/charge/void invoices, edit/get/delete customers, create/get/update subscriptions, ...
At least the above mentioned important and basic functionality should be created. Special ones can then be created on request:
https://apidocs.chargebee.com/docs/api/invoices
Source code of node:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Chargebee/Chargebee.node.ts
Hi
Unfortunately, I have below error when I want to connect to google sheet api:
ERROR: error:0909006C:PEM routines:get_name:no start line
Error: error:0909006C:PEM routines:get_name:no start line
at Sign.sign (internal/crypto/sig.js:80:26)
at Object.sign (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\jwa\index.js:152:45)
at Object.jwsSign [as sign] (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\jws\lib\sign-stream.js:32:24)
at GoogleToken.requestToken (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\gtoken\build\src\index.js:188:31)
at GoogleToken.getTokenAsync (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\gtoken\build\src\index.js:127:21)
at GoogleToken.getToken (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\gtoken\build\src\index.js:69:21)
at JWT.refreshTokenNoCache (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\google-auth-library\build\src\auth\jwtclient.js:129:36)
at JWT.refreshToken (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\google-auth-library\build\src\auth\oauth2client.js:140:25)
at JWT.authorizeAsync (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\google-auth-library\build\src\auth\jwtclient.js:112:35)
at JWT.authorize (C:\Users\Administrator\AppData\Roaming\npm\node_modules\n8n\node_modules\google-auth-library\build\src\auth\jwtclient.js:108:25)
Can anyone help to solve this error?
Hi,
Let's say I have a home directory with three files named "test1", "test2", and "test3" and I add an Execute Command node with the command as "ls ~". The stdout as of now will be one line as "test1 test2 test3". Not sure if this by design or not. Can an option be added to put the output on separate lines or honor UNIX newlines. So would like output to be like:
test1
test2
test3
Thanks to the developer. Liking this project so far BTW .
I think an integration with some AWS services would be a really good thing to have implemented. I will starting working in some of them, but it might take a while since I'm new with TS (though I have a lot of experience with AWS).
There would be multiple nodes (one for each AWS Service) but only a single credential provider, since all services require only and ACCESS_KEY and a SECRET and it can be used with multiple services.
The plus flag means that this item I consider less important or more difficult to implement.
Beeminder is a service that helps you to achieve your goals by providing accountability: https://beeminder.com
Hello,
Im new with node, its possible to you improve instalation docs for 'standalone' server installation ?
How to install latest node, npm, and dependencie to run n8n with
npm install n8n -g
example: im running ubuntu 16.04.
As far as I'm aware all triggers are just implementations of a webhook. This is the best option when available, but it's not always there.
One use case is an AWS SQS queue. Amazon doesn't provide anything other than a polling endpoint to receive new messages. It would bee necessary to have a trigger that automatically polls data every X time.
PS: The polling interval should be configured by the user (better yet per-node configuration). As I starting point, I think a default of 60 seconds should be enough (Zapier and other alternatives have an even slower poll interval).
Relevant docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property
I have depoyed n8n behind nginx under /workflow/admin
subpath.
https://example.com/ -> is main website
https://example.com/workflow/admin -> is n8n path
What are configuration changes i need to do achieve this ?
I've created a docker-compose file to use n8n with postgresql as follows:
version: '3'
services:
n8n:
image: n8nio/n8n
environment:
N8N_BASIC_AUTH_ACTIVE: ${N8N_AUTH-true}
N8N_BASIC_AUTH_USER: ${N8N_USER-dlucomposer}
N8N_BASIC_AUTH_PASSWORD: ${N8N_PW-dlucomposer}
DB_TYPE: postgresdb
DB_POSTGRESDB_DATABASE: ${N8N_PG_DB-n8n}
DB_POSTGRESDB_HOST: ${N8N_PG_HOST-n8n_db}
DB_POSTGRESDB_PORT: ${N8N_PG_PORT-5432}
DB_POSTGRESDB_USER: ${N8N_PG_USER-n8n}
DB_POSTGRESDB_PASSWORD: ${N8N_PG_PW-n8n}
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`n8n.localhost`)
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.services.n8n.loadbalancer.server.port=5678
networks:
- default
- traefik_net
db:
image: postgres
container_name: n8n_db
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${N8N_PG_PW-n8n}
POSTGRES_USER: ${N8N_PG_USER-n8n}
POSTGRES_DB: ${N8N_PG_DB-n8n}
networks:
default:
traefik_net:
external: true
volumes:
pgdata:
But n8n does not start with following errors on docker log:
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1),
(node:1) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.,
(node:1) UnhandledPromiseRejectionWarning: Error: There was an error: column cnst.consrc does not exist,
at Object.error (/usr/local/lib/node_modules/n8n/node_modules/@oclif/errors/lib/index.js:22:17),
at /usr/local/lib/node_modules/n8n/dist/commands/start.js:105:22,
at processTicksAndRejections (internal/process/task_queues.js:85:5)
And the following on postgres docker log:
2019-10-10 19:14:38.561 UTC [152] ERROR: current transaction is aborted, commands ignored until end of transaction block,
2019-10-10 19:14:38.561 UTC [152] STATEMENT: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" = 'r' AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'credentials_entity') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'execution_entity') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'workflow_entity')),
2019-10-10 19:14:38.562 UTC [152] ERROR: current transaction is aborted, commands ignored until end of transaction block,
2019-10-10 19:14:38.562 UTC [152] STATEMENT: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'credentials_entity') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'execution_entity') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'workflow_entity')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent",
2019-10-10 19:15:40.365 UTC [155] ERROR: column cnst.consrc does not exist at character 194,
2019-10-10 19:15:40.365 UTC [155] HINT: Perhaps you meant to reference the column "cnst.conkey" or the column "cnst.conbin".,
2019-10-10 19:15:40.365 UTC [155] STATEMENT: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", CASE "cnst"."contype" WHEN 'x' THEN pg_get_constraintdef("cnst"."oid", true) ELSE "cnst"."consrc" END AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" = 'r' AND (("ns"."nspname" = 'public' AND "t"."relname" = 'credentials_entity') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'execution_entity') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'workflow_entity')),
It seems to work fine when I comment out the DB_TYPE and friends from n8n environment to not use postgresql.
I think some migration or database creation routine is not right.
The versions I'm using are the ones with 'latest' tag (version 0.24 for n8n and 12 for postgres)
Thanks for this great project!
I have a webhooks URL which receives data from sources other than github etc.
Is it possible that N8N can listen for those incoming webhooks to run a workflow?
How would I go about implementing that?
Need execution time on each node instead of going into each node and checking the time
when the workflow has executed, it is intuitive to see the execution time of each node at glance instead of going instead each node and checking
also at top bar total execution time needs to be present
I tried to setup N8N behind a Reverse Proxy (Nginx) it worked, but the Control Panel said it hadn't connection to the Internet. I used also the --tunnel
option of the docker image. How about adding this possibility for securing the Panel with SSL through Let'sEncrypt?
Google recently announced this:
https://cloud.google.com/blog/products/serverless/introducing-cloud-run-button-click-to-deploy-your-git-repos-to-google-cloud
Which allows you to pretty much a button on your readme file so people can deploy straight to GCP Cloud Run. Would be neat to have that button on here as well so it's quick and easy to get started (for people who want to host it in the cloud)
From what I could understand, all of the credentials need to be manually created and inserted by the user on the CREDENTIALS menu.
Do you guys have any plan to implement an end user OAuth2 for some of them? For instance, instead of manually creating API keys to Asana with would be much better if I just have a button to click "Login with Asana" and provide the required permissions as per the OAuth2 flow.
This behavior is not acceptable. Even the Commons Clause itself tells you not to describe your software as open source, see the FAQ: https://commonsclause.com/
The Apache license is a well known and respected license, and the "Commons Clause" leverages the language of the also well known "Creative Commons", together creating a false impression that this software is distributed by a respectable group of developers. You cannot rely on putting its name there to correct your lies.
Your software is rightly called "source available". Do not gaslight us. In the words of Randall Monroe:
I just noticed CVS has started stocking homeopathic pills on the same shelves with--and labeled similarly to--their actual medicine. Telling someone who trusts you that you're giving them medicine, when you know you're not, because you want their money, isn't just lying--it's like an example you'd make up if you had to illustrate for a child why lying is wrong.
Note: If you lock this issue you are a liar and a coward. Hear the anger of those you've wronged.
Edit: this link is useful for onlookers wondering I'm angry out of the gate.
Create a Trigger node for Typeform which triggers when a submission got made:
https://developer.typeform.com/webhooks/
GithubTrigger-Node is a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Github/GithubTrigger.node.ts
Create an integration for Zulip similar to the Slack one.
https://zulipchat.com/api/
Slack-Node is a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Slack/Slack.node.ts
Hey Jan,
how do I build the source and run it from node index.js? I want to deploy on plesk.
I tried a lot of things for hours but nothing seems to work. When I try to "build" via VS Code I get following error:
error TS2688: Cannot find type definition file for 'jest'.
error TS2688: Cannot find type definition file for 'node'.
Some operation I did got me the folder "dist" but even when I run that, there are errors.
Please help or give me a hint. Thanks Sven
Create an integration for Mattermost similar to the Slack one.
https://api.mattermost.com
Slack-Node is a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Slack/Slack.node.ts
hey @janober ,
does it make sense a calculation node?
something that would interact with data to transform it
i think would be something number_transform (with math operations)
string_transform (for string operations)
does it make sense?
Create an integration for Google Drive similar to the Dropbox/NextCloud one.
https://developers.google.com/drive/
Dropbox and NextCloud-Nodes are a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Dropbox/Dropbox.node.ts
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/NextCloud/NextCloud.node.ts
Create an integration for Gitlab similar to the Github one.
https://docs.gitlab.com/ee/api/
Github-Node is a good reference and starting point:
https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Github/Github.node.ts
Discussion in forum:
https://community.n8n.io/t/gitlab-integration/21
Usecase:
Please suggest any way to achieve this
Toggl is a time tracking service: https://toggl.com/
Enable specifying a custom GitHub API root for the GitHub API credentials in order to support GitHub Enterprise installations.
Is horizontal scaling of workflows across machines supported in current version ?
I cannot find any link on the login screen.
It would be nice to be able to inject & move IMAP messages, for two reasons:
I've done this in the past in https://github.com/rcarmo/rss2imap (feel free to use the same header generation logic - I'd donate it as TypeScript if I had the time).
Hi,
I wanted to test n8n but I encountered the following error:
Error: Cannot find module '../build/Release/magic' at Object.<anonymous> (/usr/local/lib/node_modules/n8n/node_modules/mmmagic/lib/index.js:1:75)
I just did npm install n8n -g
then n8n
Did I miss something?
LEMP on Ubuntu 18.04
node v8.10.0
npm 3.5.2
Hello, try to install but no sucess... i got running only with 'npx n8n', its runs ok
:/n8n$ nodejs -v/n8n$ npm -v
v10.16.3
:
6.9.0
When running: npm install n8n -g
error: with gyp permissions
got working with
--unsafe
thanks for the app, its very nice !
It'd be great to have a CDK or SAM template to set up all required resources in 1 click/command to run n8n on AWS.
I'd imagine it'd include something like:
I have not dug into the source code to try to figure out what this tunnel feature does under the hood, but the question that arose when I read this chapter was : which server ?
It would be great if you could develop the documentation for Start with tunnel so that we can understand if our data can be seen or stored anywhere on your server when using the tunnel feature.
A schematic explaining how things are connected together would be very helpful
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.