The node-engine owns the composition it alone runs (H1, H2)
ADR 0593 §1 and §7: compose, its bus reader and runtime reader, takein, validate, the overlay generator, the composer's run and mesh-compose, and the judgement of a move leave mesh-sdk for the node-engine's internal packages, so no other module composes and a change to them rebuilds only the node-engine. The shapes others read (the composer's request and verdict, the overlay's names, compositions and answers) stay in mesh-sdk. The node's grant is now a golden file of what the grants part composes, since the composer of the bus's user list leaves mesh-sdk too. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"module": "n8n",
|
||||
"version": "1",
|
||||
"capabilities": [
|
||||
"container-runtime"
|
||||
],
|
||||
"requires": [
|
||||
"postgres-database",
|
||||
"route"
|
||||
],
|
||||
"contributes": {
|
||||
"postgres-database": {
|
||||
"name": "n8n"
|
||||
},
|
||||
"route": {
|
||||
"label": "n8n",
|
||||
"endpoint": "web"
|
||||
}
|
||||
},
|
||||
"binds": {
|
||||
"postgres-database": "${dir:state}/database.json",
|
||||
"route": "${dir:state}/route.json"
|
||||
},
|
||||
"secrets": {
|
||||
"postgres-database": "${dir:state}/database.secret"
|
||||
},
|
||||
"accesses": [
|
||||
{
|
||||
"id": "media",
|
||||
"mode": "read-write"
|
||||
}
|
||||
],
|
||||
"listens": [
|
||||
{
|
||||
"name": "web",
|
||||
"port": 5678,
|
||||
"protocol": "tcp",
|
||||
"from": "mesh",
|
||||
"why": "the n8n editor, its REST API and the webhook endpoints workflows are triggered through; a public name is the route's"
|
||||
}
|
||||
],
|
||||
"data": {
|
||||
"own": [
|
||||
{
|
||||
"id": "data",
|
||||
"path": "${dir:data}",
|
||||
"class": "valuable",
|
||||
"why": "the instance's encryption key, settings and binary data; workflows are in the database"
|
||||
},
|
||||
{
|
||||
"id": "cache",
|
||||
"path": "${dir:cache}",
|
||||
"class": "cache",
|
||||
"why": "scratch space"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"id": "state",
|
||||
"type": "directory",
|
||||
"mode": "0700",
|
||||
"place": ".",
|
||||
"unknown": "program"
|
||||
},
|
||||
{
|
||||
"id": "data",
|
||||
"type": "directory",
|
||||
"mode": "0700",
|
||||
"owner": "1000:1000",
|
||||
"unknown": "program"
|
||||
},
|
||||
{
|
||||
"id": "cache",
|
||||
"type": "directory",
|
||||
"mode": "0700",
|
||||
"owner": "999:999",
|
||||
"unknown": "program"
|
||||
},
|
||||
{
|
||||
"id": "database-secret",
|
||||
"type": "file",
|
||||
"path": "${dir:state}/n8n-database.secret",
|
||||
"mode": "0400",
|
||||
"owner": "1000:1000",
|
||||
"template": "files/n8n-database.secret"
|
||||
},
|
||||
{
|
||||
"id": "server-env",
|
||||
"type": "file",
|
||||
"path": "${dir:state}/server.env",
|
||||
"mode": "0600",
|
||||
"template": "files/server.env"
|
||||
},
|
||||
{
|
||||
"id": "net",
|
||||
"type": "network",
|
||||
"name": "n8n"
|
||||
},
|
||||
{
|
||||
"id": "server",
|
||||
"type": "container",
|
||||
"health": {
|
||||
"kind": "http",
|
||||
"endpoint": "web",
|
||||
"path": "/healthz/readiness",
|
||||
"status": 200,
|
||||
"needs": "postgres-database"
|
||||
},
|
||||
"name": "n8n",
|
||||
"artifact": "server",
|
||||
"network": "n8n",
|
||||
"env-file": [
|
||||
"${dir:state}/server.env"
|
||||
],
|
||||
"ports": [
|
||||
"5678"
|
||||
],
|
||||
"volumes": [
|
||||
"${dir:data}:/home/node/.n8n",
|
||||
"${dir:state}/n8n-database.secret:/run/secrets/database:ro",
|
||||
"${access:media}:/media-library"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cache-server",
|
||||
"type": "container",
|
||||
"name": "n8n-redis",
|
||||
"image": "redis@sha256:8a1efc5f479551822b47424ccae982026b633f28818eab0387348120a61e10e2",
|
||||
"network": "n8n",
|
||||
"args": [
|
||||
"redis-server",
|
||||
"--appendonly",
|
||||
"yes"
|
||||
],
|
||||
"volumes": [
|
||||
"${dir:cache}:/data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "browser",
|
||||
"type": "container",
|
||||
"name": "n8n-selenium",
|
||||
"image": "selenium/standalone-chrome@sha256:9ae1c78e9b2ca9fe4b22e57873b5ee34aeb8e814e3122293eef4c3abe4c5f448",
|
||||
"network": "n8n",
|
||||
"env": {
|
||||
"SE_ENABLE_TRACING": "false",
|
||||
"SE_NODE_MAX_SESSIONS": "5",
|
||||
"SE_NODE_OVERRIDE_MAX_SESSIONS": "true"
|
||||
}
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"on": [
|
||||
{
|
||||
"arg": "N8N_BASE",
|
||||
"image": "n8nio/n8n@sha256:4846eb2f4b874ab04cde7fc1e249d2ddaec66e9aea64439beb2972cfea88e3c0"
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"name": "server",
|
||||
"kind": "image",
|
||||
"from": "Dockerfile"
|
||||
},
|
||||
{
|
||||
"name": "files",
|
||||
"kind": "archive",
|
||||
"from": "files"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user