mesh/delivery-group group fix/145-a-consumer-is-held-under-its-provider rejected: composed together: the check could not run: the facts snapshot cannot be read…
mesh/merge-gate head b62bb158398d merged into trunk ebf7f3773dc7 — pass: builds gitea, mesh-knowledge, n8n, nextcloud, umami → ace, novox; no bus step; eve…
mesh/repo-check head b62bb158398d merged into trunk ebf7f3773dc7 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery ready: it delivers once merged
gitea, nextcloud, umami and n8n gain an http check that reaches their database through their own endpoint; mesh-knowledge's watch already asks the database and now names it. While postgres is unhealthy, their findings are held under its condition instead of raising one each.
166 lines
3.9 KiB
JSON
166 lines
3.9 KiB
JSON
{
|
|
"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": "."
|
|
},
|
|
{
|
|
"id": "data",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "1000:1000"
|
|
},
|
|
{
|
|
"id": "cache",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "999:999"
|
|
},
|
|
{
|
|
"id": "database-secret",
|
|
"type": "file",
|
|
"path": "${dir:state}/n8n-database.secret",
|
|
"mode": "0400",
|
|
"owner": "1000:1000",
|
|
"content": "${secret:postgres-database}"
|
|
},
|
|
{
|
|
"id": "server-env",
|
|
"type": "file",
|
|
"path": "${dir:state}/server.env",
|
|
"mode": "0600",
|
|
"content": "N8N_HOST=${bound:route:name}\nN8N_PORT=5678\nN8N_PROTOCOL=https\nWEBHOOK_URL=https://${bound:route:name}/\nNODE_FUNCTION_ALLOW_BUILTIN=*\nNODE_FUNCTION_ALLOW_EXTERNAL=*\nDB_TYPE=postgresdb\nDB_POSTGRESDB_HOST=${bound:postgres-database:at}\nDB_POSTGRESDB_PORT=${bound:postgres-database:port}\nDB_POSTGRESDB_DATABASE=${bound:postgres-database:as}\nDB_POSTGRESDB_USER=${bound:postgres-database:as}\nDB_POSTGRESDB_PASSWORD_FILE=/run/secrets/database\n"
|
|
},
|
|
{
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
}
|