{ "module": "only-office", "version": "1", "slug": "office", "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" }, "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 from the environment on every start and overwrites local.json; 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" } ] } }