mesh/merge-gate head 29b4c0270987 merged into trunk cac09a4e203e — pass: builds only-office → novox; no bus step; every machine composes with the change as…
mesh/repo-check head 29b4c0270987 merged into trunk cac09a4e203e — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery delivered
mesh/check failed: forge: novox/mesh-catalog#448: checks/agenthome/go.mod cannot be read to check its mesh-sdk pin: nats: no responders available for …
The image opens everything below each mount to every account on every start, so with the module root and lib at 0711 any account on the machine could read the document cache. The mounts now sit under a root-owned 0700 box the container never sees; the root stays 0711 for the converter. The old lib keeps its id so mesh-host closes it to 0700 (a new id there would be used as found, issue 339).
302 lines
6.4 KiB
JSON
302 lines
6.4 KiB
JSON
{
|
|
"module": "only-office",
|
|
"version": "1",
|
|
"slug": "office",
|
|
"provides": [
|
|
{
|
|
"name": "document-server",
|
|
"scope": "mesh",
|
|
"credential": {
|
|
"own": "jwt"
|
|
}
|
|
}
|
|
],
|
|
"serves": {
|
|
"document-server": {
|
|
"scheme": "http",
|
|
"port": 9070,
|
|
"public-root": "https://${bound:route:name}/"
|
|
}
|
|
},
|
|
"capabilities": [
|
|
"container-runtime"
|
|
],
|
|
"requires": [
|
|
"route"
|
|
],
|
|
"contributes": {
|
|
"route": {
|
|
"label": "office",
|
|
"endpoint": "web"
|
|
}
|
|
},
|
|
"seats": [
|
|
{
|
|
"name": "document-converter",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"convert"
|
|
]
|
|
}
|
|
],
|
|
"claims": [
|
|
{
|
|
"name": "document-converter",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"convert"
|
|
]
|
|
}
|
|
],
|
|
"streams": [
|
|
{
|
|
"name": "convert-asks",
|
|
"events": [
|
|
"convert.asked"
|
|
],
|
|
"max-age-days": 1,
|
|
"max-mib": 8,
|
|
"retention": "work-queue",
|
|
"max-deliveries": 3,
|
|
"duplicates": 24
|
|
}
|
|
],
|
|
"state": [
|
|
{
|
|
"name": "convert-answers",
|
|
"ttl-seconds": 600
|
|
}
|
|
],
|
|
"binds": {
|
|
"route": "${dir:state}/route.json"
|
|
},
|
|
"own-secrets": {
|
|
"jwt": {
|
|
"path": "${dir:state}/jwt.secret",
|
|
"owner": "only-office-converter",
|
|
"taken": "at-start"
|
|
},
|
|
"secure-link": {
|
|
"path": "${dir:state}/secure-link.secret",
|
|
"taken": "at-start"
|
|
},
|
|
"broker-converter": {
|
|
"path": "${dir:state}/broker-converter.secret",
|
|
"owner": "only-office-converter"
|
|
}
|
|
},
|
|
"listens": [
|
|
{
|
|
"name": "web",
|
|
"port": 9070,
|
|
"protocol": "tcp",
|
|
"from": "mesh",
|
|
"why": "the document server over http; its public name is a route grant, and route-proxy reaches it on this published port"
|
|
}
|
|
],
|
|
"data": {
|
|
"own": [
|
|
{
|
|
"id": "data",
|
|
"path": "${dir:data}",
|
|
"class": "rebuildable",
|
|
"why": "documents being edited; the documents themselves are the file store's"
|
|
},
|
|
{
|
|
"id": "lib",
|
|
"path": "${dir:server-lib}",
|
|
"class": "rebuildable",
|
|
"why": "the document server's working files"
|
|
},
|
|
{
|
|
"id": "db",
|
|
"path": "${dir:db}",
|
|
"class": "rebuildable",
|
|
"why": "the document server's own database of editing sessions"
|
|
},
|
|
{
|
|
"id": "fonts",
|
|
"path": "${dir:fonts}",
|
|
"class": "rebuildable",
|
|
"why": "fonts, installed again"
|
|
},
|
|
{
|
|
"id": "logs",
|
|
"path": "${dir:logs}",
|
|
"class": "cache",
|
|
"why": "logs"
|
|
},
|
|
{
|
|
"id": "rabbitmq",
|
|
"path": "${dir:rabbitmq}",
|
|
"class": "cache",
|
|
"why": "its queue's working set"
|
|
},
|
|
{
|
|
"id": "redis",
|
|
"path": "${dir:redis}",
|
|
"class": "cache",
|
|
"why": "its cache"
|
|
}
|
|
]
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0711",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "converter-account",
|
|
"type": "user",
|
|
"name": "only-office-converter",
|
|
"shell": "/usr/bin/nologin"
|
|
},
|
|
{
|
|
"id": "server-env",
|
|
"type": "file",
|
|
"path": "${dir:state}/server.env",
|
|
"mode": "0600",
|
|
"template": "files/server.env"
|
|
},
|
|
{
|
|
"id": "box",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "logs",
|
|
"type": "directory",
|
|
"path": "${dir:box}/logs",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "data",
|
|
"type": "directory",
|
|
"path": "${dir:box}/data",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "server-lib",
|
|
"type": "directory",
|
|
"path": "${dir:box}/lib",
|
|
"mode": "0711",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "lib",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "db",
|
|
"type": "directory",
|
|
"path": "${dir:box}/db",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "rabbitmq",
|
|
"type": "directory",
|
|
"path": "${dir:box}/rabbitmq",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "redis",
|
|
"type": "directory",
|
|
"path": "${dir:box}/redis",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "fonts",
|
|
"type": "directory",
|
|
"path": "${dir:box}/fonts",
|
|
"mode": "0700",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "net",
|
|
"type": "network",
|
|
"name": "only-office"
|
|
},
|
|
{
|
|
"id": "server",
|
|
"type": "container",
|
|
"name": "only-office",
|
|
"image": "onlyoffice/documentserver@sha256:3ab6ebc7c605e5a32b7ae3ff19daed4925090245acc8100ce2230bd766c88212",
|
|
"network": "only-office",
|
|
"env-file": [
|
|
"${dir:state}/server.env"
|
|
],
|
|
"ports": [
|
|
"9070:80"
|
|
],
|
|
"volumes": [
|
|
"${dir:logs}:/var/log/onlyoffice",
|
|
"${dir:data}:/var/www/onlyoffice/Data",
|
|
"${dir:server-lib}:/var/lib/onlyoffice",
|
|
"${dir:db}:/var/lib/postgresql",
|
|
"${dir:rabbitmq}:/var/lib/rabbitmq",
|
|
"${dir:redis}:/var/lib/redis",
|
|
"${dir:fonts}:/usr/share/fonts/truetype/custom"
|
|
],
|
|
"secrets-in-environment": "run-document-server.sh regenerates JWT_SECRET and SECURE_LINK_SECRET from the environment on every start and overwrites local.json and nginx's ds.conf; not convertible"
|
|
},
|
|
{
|
|
"id": "converter",
|
|
"type": "process",
|
|
"name": "only-office-converter",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./only-office",
|
|
"converter"
|
|
],
|
|
"user": "only-office-converter",
|
|
"env": {
|
|
"ONLY_OFFICE_BROKER": "${dir:state}/broker-converter.secret",
|
|
"ONLY_OFFICE_JWT": "${dir:state}/jwt.secret",
|
|
"ONLY_OFFICE_SERVER": "http://127.0.0.1:9070"
|
|
},
|
|
"bus": {
|
|
"queues": [
|
|
"convert-asks"
|
|
],
|
|
"state": [
|
|
"convert-answers"
|
|
]
|
|
},
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/only-office",
|
|
"binary": "only-office",
|
|
"loads": [
|
|
"only-office"
|
|
]
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|