mesh/merge-gate out of date: judged against trunk ebf7f3773dc7, the trunk is now e846c289c878; judged again on a recheck or when it is merged
mesh/repo-check out of date: judged against trunk ebf7f3773dc7, the trunk is now e846c289c878; judged again on a recheck or when it is merged
mesh/delivery-group group fix/145-a-consumer-is-held-under-its-provider checking: composed check out of date: novox/mesh-catalog@b62bb158398d was judged agains…
mesh/delivery superseded: a newer head of the same pull request
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"
|
|
}
|
|
]
|
|
}
|
|
}
|