256 lines
8.7 KiB
JSON
256 lines
8.7 KiB
JSON
{
|
|
"module": "matrix",
|
|
"version": "1",
|
|
"capabilities": [
|
|
"container-runtime"
|
|
],
|
|
"listens": [
|
|
{
|
|
"name": "client",
|
|
"port": 6167,
|
|
"protocol": "tcp",
|
|
"from": "mesh",
|
|
"why": "Conduit's client-server and federation APIs over plain HTTP. Both arrive through the route on 443: Conduit answers /.well-known/matrix/server with <its name>:443, so other homeservers federate through the proxy and nothing needs the traditional 8448"
|
|
},
|
|
{
|
|
"name": "web",
|
|
"port": 80,
|
|
"protocol": "tcp",
|
|
"from": "mesh",
|
|
"why": "Element Web, the static browser client, served by the image's nginx; reached through its route"
|
|
}
|
|
],
|
|
"requires": [
|
|
"route"
|
|
],
|
|
"contributes": {
|
|
"route": {
|
|
"homeserver": {
|
|
"label": "matrix",
|
|
"endpoint": "client"
|
|
},
|
|
"element": {
|
|
"label": "element",
|
|
"endpoint": "web"
|
|
}
|
|
}
|
|
},
|
|
"binds": {
|
|
"route": "${dir:state}/route.json"
|
|
},
|
|
"data": {
|
|
"own": [
|
|
{
|
|
"id": "db",
|
|
"path": "${dir:db}",
|
|
"class": "valuable",
|
|
"why": "every room, message and account"
|
|
}
|
|
]
|
|
},
|
|
"config": {
|
|
"default_server_name": {
|
|
"type": "string",
|
|
"description": "Element's default_server_name setting of config.json: the homeserver Element signs in to by default, by name; the file's default is the module's own route.",
|
|
"trusted": true,
|
|
"default": "${bound:route:name-homeserver}"
|
|
},
|
|
"default_server_config": {
|
|
"type": "object",
|
|
"description": "Element's default_server_config setting of config.json: the homeserver and identity server Element uses by default, by URL.",
|
|
"trusted": true,
|
|
"default": {
|
|
"m.homeserver": {
|
|
"base_url": "https://${bound:route:name-homeserver}"
|
|
},
|
|
"m.identity_server": {
|
|
"base_url": "https://vector.im"
|
|
}
|
|
}
|
|
},
|
|
"brand": {
|
|
"type": "string",
|
|
"description": "Element's brand setting of config.json: the name Element shows itself as.",
|
|
"trusted": true,
|
|
"default": "Element"
|
|
},
|
|
"integrations_ui_url": {
|
|
"type": "string",
|
|
"description": "Element's integrations_ui_url setting of config.json: the integration manager's page, a URL.",
|
|
"trusted": true,
|
|
"default": "https://scalar.vector.im/"
|
|
},
|
|
"integrations_rest_url": {
|
|
"type": "string",
|
|
"description": "Element's integrations_rest_url setting of config.json: the integration manager's API, a URL.",
|
|
"trusted": true,
|
|
"default": "https://scalar.vector.im/api"
|
|
},
|
|
"integrations_widgets_urls": {
|
|
"type": "list",
|
|
"description": "Element's integrations_widgets_urls setting of config.json: the URLs whose widgets Element trusts as the integration manager's.",
|
|
"trusted": true,
|
|
"default": [
|
|
"https://scalar.vector.im/_matrix/integrations/v1",
|
|
"https://scalar.vector.im/api",
|
|
"https://scalar-staging.vector.im/_matrix/integrations/v1",
|
|
"https://scalar-staging.vector.im/api",
|
|
"https://scalar-staging.riot.im/scalar/api"
|
|
]
|
|
},
|
|
"bug_report_endpoint_url": {
|
|
"type": "string",
|
|
"description": "Element's bug_report_endpoint_url setting of config.json: where Element sends a bug report, a URL; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
|
|
"trusted": true,
|
|
"default": ""
|
|
},
|
|
"uisi_autorageshake_app": {
|
|
"type": "string",
|
|
"description": "Element's uisi_autorageshake_app setting of config.json: the app name Element files an automatic report of an undecryptable message under.",
|
|
"trusted": true,
|
|
"default": "element-auto-uisi"
|
|
},
|
|
"show_labs_settings": {
|
|
"type": "boolean",
|
|
"description": "Element's show_labs_settings setting of config.json: whether Element shows its Labs settings.",
|
|
"trusted": true,
|
|
"default": true
|
|
},
|
|
"room_directory": {
|
|
"type": "object",
|
|
"description": "Element's room_directory setting of config.json: the servers whose room directories Element offers; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
|
|
"trusted": true,
|
|
"default": {}
|
|
},
|
|
"enable_presence_by_hs_url": {
|
|
"type": "object",
|
|
"description": "Element's enable_presence_by_hs_url setting of config.json: whether Element shows presence, per homeserver URL.",
|
|
"trusted": true,
|
|
"default": {
|
|
"https://matrix.org": false,
|
|
"https://matrix-client.matrix.org": false
|
|
}
|
|
},
|
|
"terms_and_conditions_links": {
|
|
"type": "list",
|
|
"description": "Element's terms_and_conditions_links setting of config.json: the links Element shows as its terms, each a URL and its text; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
|
|
"trusted": true,
|
|
"default": []
|
|
},
|
|
"features": {
|
|
"type": "object",
|
|
"description": "Element's features setting of config.json: Element's feature switches, each on or off.",
|
|
"trusted": true,
|
|
"default": {
|
|
"feature_video_rooms": true,
|
|
"feature_rust_crypto": true
|
|
}
|
|
},
|
|
"element_call": {
|
|
"type": "object",
|
|
"description": "Element's element_call setting of config.json: where Element starts a call with Element Call, a URL.",
|
|
"trusted": true,
|
|
"default": {
|
|
"url": "https://call.element.dev"
|
|
}
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": "."
|
|
},
|
|
{
|
|
"id": "db",
|
|
"type": "directory",
|
|
"mode": "0700"
|
|
},
|
|
{
|
|
"id": "conduit-conf",
|
|
"type": "file",
|
|
"path": "${dir:state}/conduit.toml",
|
|
"mode": "0644",
|
|
"template": "files/conduit.toml",
|
|
"names-on-purpose": {
|
|
"matrix.org": "the federation's public key server, trusted by default; the world's, not this mesh's"
|
|
}
|
|
},
|
|
{
|
|
"id": "element-conf",
|
|
"type": "file",
|
|
"path": "${dir:state}/element.json",
|
|
"mode": "0644",
|
|
"merge": "json",
|
|
"takes-config": ["default_server_name", "default_server_config", "brand", "integrations_ui_url", "integrations_rest_url", "integrations_widgets_urls", "bug_report_endpoint_url", "uisi_autorageshake_app", "show_labs_settings", "room_directory", "enable_presence_by_hs_url", "terms_and_conditions_links", "features", "element_call"],
|
|
"template": "files/element.json",
|
|
"names-on-purpose": {
|
|
"matrix.org": "the public room directory and the federation's largest homeserver; the world's",
|
|
"matrix-client.matrix.org": "the same homeserver's client endpoint; the world's",
|
|
"vector.im": "Element's public identity server; the world's",
|
|
"scalar.vector.im": "Element's public integration manager; the world's",
|
|
"scalar-staging.vector.im": "Element's staging integration manager, named by the upstream default config; the world's",
|
|
"scalar-staging.riot.im": "the same, under its former name; the world's",
|
|
"element.io": "Element's bug reports, privacy and cookie pages; the world's",
|
|
"gitter.im": "a public room directory; the world's",
|
|
"libera.chat": "a public room directory; the world's",
|
|
"call.element.dev": "Element Call's public instance; the world's"
|
|
}
|
|
},
|
|
{
|
|
"id": "net",
|
|
"type": "network",
|
|
"name": "matrix"
|
|
},
|
|
{
|
|
"id": "homeserver",
|
|
"type": "container",
|
|
"name": "matrix",
|
|
"image": "matrixconduit/matrix-conduit@sha256:b0d24248e94f944ca49f90f10c429e3d65f4472bdde25661ecea9840134fb133",
|
|
"network": "matrix",
|
|
"env": {
|
|
"CONDUIT_CONFIG": "/etc/conduit/conduit.toml"
|
|
},
|
|
"ports": [
|
|
"6167"
|
|
],
|
|
"volumes": [
|
|
"${dir:db}:/var/lib/matrix-conduit",
|
|
"${dir:state}/conduit.toml:/etc/conduit/conduit.toml:ro"
|
|
],
|
|
"restart-on": [
|
|
"conduit-conf"
|
|
]
|
|
},
|
|
{
|
|
"id": "element",
|
|
"type": "container",
|
|
"name": "element-web",
|
|
"image": "vectorim/element-web@sha256:a8f415462ab8d2600a592ba1b92bea51efe5a4d10eb738aab9bed769f7099613",
|
|
"health": {
|
|
"kind": "runtime"
|
|
},
|
|
"network": "matrix",
|
|
"ports": [
|
|
"80"
|
|
],
|
|
"volumes": [
|
|
"${dir:state}/element.json:/app/config.json:ro"
|
|
],
|
|
"restart-on": [
|
|
"element-conf"
|
|
]
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|