Added MMR metrics proxying support
This commit is contained in:
parent
cb7726f4a8
commit
2c360a99fe
@ -3611,6 +3611,12 @@ matrix_media_repo_container_labels_traefik_internal_media_entrypoints: "{{ matri
|
|||||||
matrix_media_repo_container_labels_traefik_internal_matrix_client_media_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}"
|
matrix_media_repo_container_labels_traefik_internal_matrix_client_media_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}"
|
||||||
matrix_media_repo_container_labels_traefik_internal_matrix_client_media_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}"
|
matrix_media_repo_container_labels_traefik_internal_matrix_client_media_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}"
|
||||||
|
|
||||||
|
matrix_media_repo_metrics_proxying_enabled: "{{ matrix_media_repo_metrics_enabled and matrix_metrics_exposure_enabled }}"
|
||||||
|
matrix_media_repo_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}"
|
||||||
|
matrix_media_repo_metrics_proxying_path: "{{ matrix_metrics_exposure_path_prefix }}/matrix-media-repo"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}"
|
||||||
|
|
||||||
matrix_media_repo_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}"
|
matrix_media_repo_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}"
|
||||||
matrix_media_repo_database_username: matrix_media_repo
|
matrix_media_repo_database_username: matrix_media_repo
|
||||||
matrix_media_repo_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mediarepo.db', rounds=655555) | to_uuid }}"
|
matrix_media_repo_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mediarepo.db', rounds=655555) | to_uuid }}"
|
||||||
@ -4880,11 +4886,6 @@ grafana_provisioning_dashboard_template_files: |
|
|||||||
'path': 'roles/custom/matrix-prometheus-nginxlog-exporter/templates/grafana/nginx-proxy.json',
|
'path': 'roles/custom/matrix-prometheus-nginxlog-exporter/templates/grafana/nginx-proxy.json',
|
||||||
'name': 'nginx-proxy.json',
|
'name': 'nginx-proxy.json',
|
||||||
}] if matrix_prometheus_nginxlog_exporter_enabled else [])
|
}] if matrix_prometheus_nginxlog_exporter_enabled else [])
|
||||||
+
|
|
||||||
([{
|
|
||||||
'path': 'roles/custom/matrix-media-repo/templates/grafana/media-repo.json',
|
|
||||||
'name': 'media-repo.json',
|
|
||||||
}] if matrix_media_repo_metrics_enabled else [])
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
grafana_default_home_dashboard_path: |-
|
grafana_default_home_dashboard_path: |-
|
||||||
|
@ -44,6 +44,11 @@ matrix_media_repo_container_network: "{{ matrix_media_repo_identifier }}"
|
|||||||
# Use this to expose this container to another reverse proxy, which runs in a different container network.
|
# Use this to expose this container to another reverse proxy, which runs in a different container network.
|
||||||
matrix_media_repo_container_additional_networks: []
|
matrix_media_repo_container_additional_networks: []
|
||||||
|
|
||||||
|
# Controls whether media repo metrics should be proxied (exposed) on `matrix.DOMAIN/metrics/matrix-media-repo`
|
||||||
|
matrix_media_repo_metrics_proxying_enabled: false
|
||||||
|
matrix_media_repo_metrics_proxying_hostname: ""
|
||||||
|
matrix_media_repo_metrics_proxying_path: "/metrics/matrix-media-repo"
|
||||||
|
|
||||||
# Controls whether the matrix-media-repo container exposes its HTTP port (tcp/8000 in the container).
|
# Controls whether the matrix-media-repo container exposes its HTTP port (tcp/8000 in the container).
|
||||||
#
|
#
|
||||||
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8000"), or empty string to not expose.
|
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8000"), or empty string to not expose.
|
||||||
@ -134,6 +139,18 @@ matrix_media_repo_container_labels_traefik_t2bot_entrypoints: "{{ matrix_media_r
|
|||||||
matrix_media_repo_container_labels_traefik_t2bot_tls: "{{ matrix_media_repo_container_labels_traefik_t2bot_entrypoints != 'web' }}"
|
matrix_media_repo_container_labels_traefik_t2bot_tls: "{{ matrix_media_repo_container_labels_traefik_t2bot_entrypoints != 'web' }}"
|
||||||
matrix_media_repo_container_labels_traefik_t2bot_tls_certResolver: default # noqa var-naming
|
matrix_media_repo_container_labels_traefik_t2bot_tls_certResolver: default # noqa var-naming
|
||||||
|
|
||||||
|
# Controls whether labels will be added that expose the media repo metrics endpoint
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_enabled: "{{ matrix_media_repo_metrics_enabled and matrix_media_repo_metrics_proxying_enabled }}"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_rule: "Host(`{{ matrix_media_repo_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_media_repo_metrics_proxying_path }}`)"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_priority: 0
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_entrypoints: "{{ matrix_media_repo_container_labels_traefik_entrypoints }}"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_tls: "{{ matrix_media_repo_container_labels_traefik_t2bot_entrypoints != 'web' }}"
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_tls_certResolver: default # noqa var-naming
|
||||||
|
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_enabled: false
|
||||||
|
# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
|
||||||
|
matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_users: ''
|
||||||
|
|
||||||
# Traefik labels handling the old `/_matrix/media` endpoints on the federation entrypint.
|
# Traefik labels handling the old `/_matrix/media` endpoints on the federation entrypint.
|
||||||
# These are being superseded by `/_matrix/federation/VERSION/media` endpoints - see `matrix_media_repo_container_labels_traefik_federation_matrix_federation_media_*`.
|
# These are being superseded by `/_matrix/federation/VERSION/media` endpoints - see `matrix_media_repo_container_labels_traefik_federation_matrix_federation_media_*`.
|
||||||
matrix_media_repo_container_labels_traefik_media_federation_enabled: true
|
matrix_media_repo_container_labels_traefik_media_federation_enabled: true
|
||||||
|
@ -1,59 +1,16 @@
|
|||||||
{
|
{
|
||||||
"__inputs": [
|
|
||||||
{
|
|
||||||
"name": "DS_PROMETHEUS",
|
|
||||||
"label": "Prometheus",
|
|
||||||
"description": "",
|
|
||||||
"type": "datasource",
|
|
||||||
"pluginId": "prometheus",
|
|
||||||
"pluginName": "Prometheus"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"__elements": {},
|
|
||||||
"__requires": [
|
|
||||||
{
|
|
||||||
"type": "grafana",
|
|
||||||
"id": "grafana",
|
|
||||||
"name": "Grafana",
|
|
||||||
"version": "10.1.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "panel",
|
|
||||||
"id": "heatmap",
|
|
||||||
"name": "Heatmap",
|
|
||||||
"version": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "datasource",
|
|
||||||
"id": "prometheus",
|
|
||||||
"name": "Prometheus",
|
|
||||||
"version": "1.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "panel",
|
|
||||||
"id": "timeseries",
|
|
||||||
"name": "Time series",
|
|
||||||
"version": ""
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"annotations": {
|
"annotations": {
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"builtIn": 1,
|
"builtIn": 1,
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "datasource",
|
"type": "grafana",
|
||||||
"uid": "grafana"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"hide": true,
|
"hide": true,
|
||||||
"iconColor": "rgba(0, 211, 255, 1)",
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
"name": "Annotations & Alerts",
|
"name": "Annotations & Alerts",
|
||||||
"target": {
|
|
||||||
"limit": 100,
|
|
||||||
"matchAny": false,
|
|
||||||
"tags": [],
|
|
||||||
"type": "dashboard"
|
|
||||||
},
|
|
||||||
"type": "dashboard"
|
"type": "dashboard"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -153,7 +110,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"expr": "rate(media_http_requests_total[2m])",
|
"expr": "rate(media_http_requests_total{host=\"$host\"}[2m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "{{ '{{host}}: {{method}} {{action}}' }}",
|
"legendFormat": "{{ '{{host}}: {{method}} {{action}}' }}",
|
||||||
@ -166,7 +123,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"expr": "rate(media_invalid_http_requests_total[2m])",
|
"expr": "rate(media_invalid_http_requests_total{host=\"$host\"}[2m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "{{ 'Invalid Host: {{method}} {{action}}' }}",
|
"legendFormat": "{{ 'Invalid Host: {{method}} {{action}}' }}",
|
||||||
@ -265,7 +222,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"expr": "rate(media_http_responses_total[2m])",
|
"expr": "rate(media_http_responses_total{host=\"$host\"}[2m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "{{ '{{host}}: {{method}} {{action}} {{statusCode}}' }}",
|
"legendFormat": "{{ '{{host}}: {{method}} {{action}} {{statusCode}}' }}",
|
||||||
@ -278,7 +235,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"expr": "rate(media_invalid_http_requests_total[2m])",
|
"expr": "rate(media_invalid_http_requests_total{host=\"$host\"}[2m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"hide": false,
|
"hide": false,
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
@ -369,7 +326,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": false,
|
"exemplar": false,
|
||||||
"expr": "sum(rate(media_http_response_time_seconds_bucket{action=~\"download|thumbnail\"}[2m])) by (le)",
|
"expr": "sum(rate(media_http_response_time_seconds_bucket{action=~\"download|thumbnail\", host=\"$host\"}[2m])) by (le)",
|
||||||
"format": "heatmap",
|
"format": "heatmap",
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"interval": "",
|
"interval": "",
|
||||||
@ -460,7 +417,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": false,
|
"exemplar": false,
|
||||||
"expr": "sum(rate(media_http_response_time_seconds_bucket{action=\"upload\"}[2m])) by (le)",
|
"expr": "sum(rate(media_http_response_time_seconds_bucket{action=\"upload\", host=\"$host\"}[2m])) by (le)",
|
||||||
"format": "heatmap",
|
"format": "heatmap",
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"legendFormat": "{{ '{{method}} {{action}} - {{le}}' }}",
|
"legendFormat": "{{ '{{method}} {{action}} - {{le}}' }}",
|
||||||
@ -560,7 +517,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_alloc_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_alloc_bytes",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
@ -574,7 +531,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_sys_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_sys_bytes",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"legendFormat": "memory usage (sys)",
|
"legendFormat": "memory usage (sys)",
|
||||||
"refId": "C"
|
"refId": "C"
|
||||||
@ -585,7 +542,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_heap_alloc_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_heap_alloc_bytes",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"legendFormat": "heap usage (alloc)",
|
"legendFormat": "heap usage (alloc)",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
@ -596,7 +553,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_heap_idle_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_heap_idle_bytes",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"legendFormat": "heap usage (idle)",
|
"legendFormat": "heap usage (idle)",
|
||||||
"refId": "D"
|
"refId": "D"
|
||||||
@ -607,7 +564,7 @@
|
|||||||
"uid": "${DS_PROMETHEUS}"
|
"uid": "${DS_PROMETHEUS}"
|
||||||
},
|
},
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_heap_inuse_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_heap_inuse_bytes",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"legendFormat": "heap usage (used)",
|
"legendFormat": "heap usage (used)",
|
||||||
"refId": "E"
|
"refId": "E"
|
||||||
@ -619,7 +576,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_memstats_heap_released_bytes{job=\"media_repo\"}",
|
"expr": "go_memstats_heap_released_bytes",
|
||||||
"hide": false,
|
"hide": false,
|
||||||
"legendFormat": "heap usage (released)",
|
"legendFormat": "heap usage (released)",
|
||||||
"range": true,
|
"range": true,
|
||||||
@ -718,7 +675,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_goroutines{job=\"media_repo\"}",
|
"expr": "go_goroutines",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"interval": "",
|
"interval": "",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
@ -733,7 +690,7 @@
|
|||||||
},
|
},
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "go_threads{job=\"media_repo\"}",
|
"expr": "go_threads",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"hide": false,
|
"hide": false,
|
||||||
"interval": "",
|
"interval": "",
|
||||||
@ -1263,9 +1220,51 @@
|
|||||||
"refresh": "1m",
|
"refresh": "1m",
|
||||||
"schemaVersion": 38,
|
"schemaVersion": 38,
|
||||||
"style": "dark",
|
"style": "dark",
|
||||||
"tags": [],
|
"tags": [
|
||||||
|
"matrix"
|
||||||
|
],
|
||||||
"templating": {
|
"templating": {
|
||||||
"list": []
|
"list": [
|
||||||
|
{
|
||||||
|
"current": {},
|
||||||
|
"hide": 0,
|
||||||
|
"includeAll": false,
|
||||||
|
"label": "Datasource",
|
||||||
|
"multi": false,
|
||||||
|
"name": "DS_PROMETHEUS",
|
||||||
|
"options": [],
|
||||||
|
"query": "prometheus",
|
||||||
|
"queryValue": "",
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"type": "datasource"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"current": {},
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "${DS_PROMETHEUS}"
|
||||||
|
},
|
||||||
|
"definition": "label_values(media_http_response_time_seconds_bucket,host)",
|
||||||
|
"hide": 0,
|
||||||
|
"includeAll": false,
|
||||||
|
"label": "Host",
|
||||||
|
"multi": false,
|
||||||
|
"name": "host",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(media_http_response_time_seconds_bucket,host)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"skipUrlSync": false,
|
||||||
|
"sort": 0,
|
||||||
|
"type": "query"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"from": "now-1h",
|
"from": "now-1h",
|
||||||
|
@ -6,6 +6,7 @@ traefik.docker.network={{ matrix_media_repo_container_labels_traefik_docker_netw
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
traefik.http.services.matrix-media-repo.loadbalancer.server.port={{ matrix_media_repo_port }}
|
traefik.http.services.matrix-media-repo.loadbalancer.server.port={{ matrix_media_repo_port }}
|
||||||
|
traefik.http.services.matrix-media-repo-metrics.loadbalancer.server.port={{ matrix_media_repo_metrics_port }}
|
||||||
|
|
||||||
{% set middlewares = [] %}
|
{% set middlewares = [] %}
|
||||||
|
|
||||||
@ -243,6 +244,43 @@ traefik.http.routers.matrix-media-repo-public-t2bot.tls.certResolver={{ matrix_m
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if matrix_media_repo_container_labels_traefik_metrics_enabled %}
|
||||||
|
############################################################
|
||||||
|
# #
|
||||||
|
# Metrics #
|
||||||
|
# #
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
{% set metricsMiddlewares = ['matrix-media-repo-metrics-replace-path'] %}
|
||||||
|
traefik.http.middlewares.matrix-media-repo-metrics-replace-path.replacepath.path=/metrics
|
||||||
|
|
||||||
|
{% if matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_enabled %}
|
||||||
|
{% set metricsMiddlewares = metricsMiddlewares + ['matrix-media-repo-metrics-basic-auth'] %}
|
||||||
|
traefik.http.middlewares.matrix-media-repo-metrics-basic-auth.basicauth.users={{ matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_users }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.rule={{ matrix_media_repo_container_labels_traefik_metrics_rule }}
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.middlewares={{ metricsMiddlewares | join(',') }}
|
||||||
|
|
||||||
|
{% if matrix_media_repo_container_labels_traefik_metrics_priority | int > 0 %}
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.priority={{ matrix_media_repo_container_labels_traefik_metrics_priority }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.service=matrix-media-repo-metrics
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.entrypoints={{ matrix_media_repo_container_labels_traefik_metrics_entrypoints }}
|
||||||
|
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.tls={{ matrix_media_repo_container_labels_traefik_metrics_tls | to_json }}
|
||||||
|
{% if matrix_media_repo_container_labels_traefik_metrics_tls %}
|
||||||
|
traefik.http.routers.matrix-media-repo-metrics.tls.certResolver={{ matrix_media_repo_container_labels_traefik_metrics_tls_certResolver }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# #
|
||||||
|
# /Metrics #
|
||||||
|
# #
|
||||||
|
############################################################
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if matrix_media_repo_homeserver_federation_enabled %}
|
{% if matrix_media_repo_homeserver_federation_enabled %}
|
||||||
# Matrix Federation
|
# Matrix Federation
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user