Files
mesh-catalog/modules/only-office/module.json
T
jochen 35e4764d35
mesh/merge-gate head 35e4764d354a merged into trunk 7bf63b0ac597 — pass: builds only-office → novox; no bus step; every machine composes with the change as…
mesh/repo-check head 35e4764d354a merged into trunk 7bf63b0ac597 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery delivered
mesh/check failed: unit: modules/gitea.test: [gitea] where the poll of merges last looked from could not be read, so none is kept — no runtime | 35e47…
Pin only-office's secure-link secret, so its document service and nginx sign and check Editor.bin links with one value across restarts (issue 1837)
2026-10-22 13:40:42 +02:00

283 lines
5.9 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: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": "logs",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "data",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "lib",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "db",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "rabbitmq",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "redis",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "fonts",
"type": "directory",
"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: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"
}
]
}
}