From 6eaceb1c834013d52ede4b3dc1655475dfb079ac Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Fri, 5 Sep 2025 12:11:54 +0200 Subject: [PATCH 1/8] feat: add community container nextcloud-exporter - allows monitoring your nextcloud with prometheus - You can create a Dashboard in Grafana to visualize the collected data Signed-off-by: Benjamin Brahmer --- .../nextcloud-exporter.json | 37 ++++++++++++++++ .../nextcloud-exporter/readme.md | 43 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 community-containers/nextcloud-exporter/nextcloud-exporter.json create mode 100644 community-containers/nextcloud-exporter/readme.md diff --git a/community-containers/nextcloud-exporter/nextcloud-exporter.json b/community-containers/nextcloud-exporter/nextcloud-exporter.json new file mode 100644 index 00000000..b2277494 --- /dev/null +++ b/community-containers/nextcloud-exporter/nextcloud-exporter.json @@ -0,0 +1,37 @@ +{ + "aio_services_v1": [ + { + "container_name": "nextcloud-aio-nextcloud-exporter", + "display_name": "Prometheus Nextcloud Exporter", + "documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter", + "image": "ghcr.io/xperimental/nextcloud-exporter", + "image_tag": "0.8.0", + "internal_port": "9205", + "restart": "unless-stopped", + "depends_on": [ + "nextcloud-aio-nextcloud" + ], + "ports": [ + { + "ip_binding": "%APACHE_IP_BINDING%", + "port_number": "9205", + "protocol": "tcp" + } + ], + "environment": [ + "TZ=%TIMEZONE%", + "NEXTCLOUD_SERVER=https://%NC_DOMAIN%", + "NEXTCLOUD_AUTH_TOKEN=%NEXTCLOUD_EXPORTER_TOKEN%", + "NEXTCLOUD_LISTEN_ADDRESS=0.0.0.0:9205", + "NEXTCLOUD_TIMEOUT=5s", + "NEXTCLOUD_TLS_SKIP_VERIFY=true" + ], + "secrets": [ + "NEXTCLOUD_EXPORTER_TOKEN" + ], + "nextcloud_exec_commands": [ + "php /var/www/html/occ config:app:set serverinfo token --value \"%NEXTCLOUD_EXPORTER_TOKEN%\"" + ] + } + ] +} diff --git a/community-containers/nextcloud-exporter/readme.md b/community-containers/nextcloud-exporter/readme.md new file mode 100644 index 00000000..cea7a723 --- /dev/null +++ b/community-containers/nextcloud-exporter/readme.md @@ -0,0 +1,43 @@ +## Prometheus Nextcloud Exporter + +A Prometheus exporter that collects metrics from your Nextcloud instance for monitoring and alerting. + +### What it does +- Monitors user activity, file counts, and storage usage +- Tracks system health, database size, and app statistics +- Exposes metrics on port `9205` for Prometheus to scrape +- Uses Nextcloud's serverinfo API with secure token authentication + +### Use cases +- Monitor Nextcloud performance and capacity +- Set up alerts for system issues or resource limits +- Create dashboards showing usage trends and system health +- Track active users and storage growth over time + +### Prometheus Configuration +Add this to your `prometheus.yml` to scrape the exporter: + +```yaml +scrape_configs: + - job_name: 'nextcloud' + scrape_interval: 90s + static_configs: + - targets: ['your-nextcloud-domain.com:9205'] + metrics_path: /metrics + scheme: http +``` + +Replace `your-nextcloud-domain.com` with your actual Nextcloud domain. + +### Notes +Automatically configures the required serverinfo token for authentication between Nextcloud and the exporter. + +Compatible with Grafana for visualization (dashboard ID `20716` available). + +https://grafana.com/grafana/dashboards/20716-nextcloud/ + +### Repository +https://github.com/xperimental/nextcloud-exporter + +### Maintainer +https://github.com/grotax From 4c2eac43e46efd4243bc9c6c87590fcf76cb1a0e Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:32:22 +0200 Subject: [PATCH 2/8] Update community-containers/nextcloud-exporter/nextcloud-exporter.json Co-authored-by: Simon L. Signed-off-by: Benjamin Brahmer --- .../nextcloud-exporter/nextcloud-exporter.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/community-containers/nextcloud-exporter/nextcloud-exporter.json b/community-containers/nextcloud-exporter/nextcloud-exporter.json index b2277494..43f5d6a3 100644 --- a/community-containers/nextcloud-exporter/nextcloud-exporter.json +++ b/community-containers/nextcloud-exporter/nextcloud-exporter.json @@ -23,8 +23,7 @@ "NEXTCLOUD_SERVER=https://%NC_DOMAIN%", "NEXTCLOUD_AUTH_TOKEN=%NEXTCLOUD_EXPORTER_TOKEN%", "NEXTCLOUD_LISTEN_ADDRESS=0.0.0.0:9205", - "NEXTCLOUD_TIMEOUT=5s", - "NEXTCLOUD_TLS_SKIP_VERIFY=true" + "NEXTCLOUD_TIMEOUT=5s" ], "secrets": [ "NEXTCLOUD_EXPORTER_TOKEN" From 7812561c8273ebd942467243d71f772dc0b1b91b Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:32:36 +0200 Subject: [PATCH 3/8] Update community-containers/nextcloud-exporter/nextcloud-exporter.json Co-authored-by: Simon L. Signed-off-by: Benjamin Brahmer --- community-containers/nextcloud-exporter/nextcloud-exporter.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community-containers/nextcloud-exporter/nextcloud-exporter.json b/community-containers/nextcloud-exporter/nextcloud-exporter.json index 43f5d6a3..4d354ef2 100644 --- a/community-containers/nextcloud-exporter/nextcloud-exporter.json +++ b/community-containers/nextcloud-exporter/nextcloud-exporter.json @@ -29,7 +29,7 @@ "NEXTCLOUD_EXPORTER_TOKEN" ], "nextcloud_exec_commands": [ - "php /var/www/html/occ config:app:set serverinfo token --value \"%NEXTCLOUD_EXPORTER_TOKEN%\"" + "php /var/www/html/occ config:app:set serverinfo token --value %NEXTCLOUD_EXPORTER_TOKEN%" ] } ] From c9655040f17540e342c3d6648f4db6dc5ccd8c50 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:33:48 +0200 Subject: [PATCH 4/8] Update community-containers/nextcloud-exporter/nextcloud-exporter.json Co-authored-by: Simon L. Signed-off-by: Benjamin Brahmer --- .../nextcloud-exporter/nextcloud-exporter.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/community-containers/nextcloud-exporter/nextcloud-exporter.json b/community-containers/nextcloud-exporter/nextcloud-exporter.json index 4d354ef2..8f2fa794 100644 --- a/community-containers/nextcloud-exporter/nextcloud-exporter.json +++ b/community-containers/nextcloud-exporter/nextcloud-exporter.json @@ -8,9 +8,6 @@ "image_tag": "0.8.0", "internal_port": "9205", "restart": "unless-stopped", - "depends_on": [ - "nextcloud-aio-nextcloud" - ], "ports": [ { "ip_binding": "%APACHE_IP_BINDING%", From 3b849b150753aed5698d83420401c59cdb666edf Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:35:35 +0200 Subject: [PATCH 5/8] Update community-containers/nextcloud-exporter/readme.md Co-authored-by: Simon L. Signed-off-by: Benjamin Brahmer --- community-containers/nextcloud-exporter/readme.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/community-containers/nextcloud-exporter/readme.md b/community-containers/nextcloud-exporter/readme.md index cea7a723..af685e86 100644 --- a/community-containers/nextcloud-exporter/readme.md +++ b/community-containers/nextcloud-exporter/readme.md @@ -30,11 +30,9 @@ scrape_configs: Replace `your-nextcloud-domain.com` with your actual Nextcloud domain. ### Notes -Automatically configures the required serverinfo token for authentication between Nextcloud and the exporter. - -Compatible with Grafana for visualization (dashboard ID `20716` available). - -https://grafana.com/grafana/dashboards/20716-nextcloud/ +- Automatically configures the required serverinfo token for authentication between Nextcloud and the exporter. +- Compatible with Grafana for visualization (dashboard ID `20716` available). +- https://grafana.com/grafana/dashboards/20716-nextcloud/ ### Repository https://github.com/xperimental/nextcloud-exporter From 71090c045f54c55c4f01a8f78e3c0e2b5201c4a5 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:40:17 +0200 Subject: [PATCH 6/8] add note about install Signed-off-by: Benjamin Brahmer --- community-containers/nextcloud-exporter/readme.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/community-containers/nextcloud-exporter/readme.md b/community-containers/nextcloud-exporter/readme.md index af685e86..f01157e3 100644 --- a/community-containers/nextcloud-exporter/readme.md +++ b/community-containers/nextcloud-exporter/readme.md @@ -2,6 +2,10 @@ A Prometheus exporter that collects metrics from your Nextcloud instance for monitoring and alerting. +### How to install + +See the [Community Containers documentation](https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers) for instructions on how to install this in your Nextcloud All-in-One setup. + ### What it does - Monitors user activity, file counts, and storage usage - Tracks system health, database size, and app statistics From 8de6c38a644629279619e02c5b42ed5df7131769 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:42:04 +0200 Subject: [PATCH 7/8] only listen on localhost Signed-off-by: Benjamin Brahmer --- community-containers/nextcloud-exporter/nextcloud-exporter.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community-containers/nextcloud-exporter/nextcloud-exporter.json b/community-containers/nextcloud-exporter/nextcloud-exporter.json index 8f2fa794..1bfc3362 100644 --- a/community-containers/nextcloud-exporter/nextcloud-exporter.json +++ b/community-containers/nextcloud-exporter/nextcloud-exporter.json @@ -10,7 +10,7 @@ "restart": "unless-stopped", "ports": [ { - "ip_binding": "%APACHE_IP_BINDING%", + "ip_binding": "127.0.0.1", "port_number": "9205", "protocol": "tcp" } From ea4d66de78fac47e4fdd4a7f24ff32db15a6ad01 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Wed, 10 Sep 2025 18:54:16 +0200 Subject: [PATCH 8/8] extend regex to allow for 127.0.0.1 Signed-off-by: Benjamin Brahmer --- php/containers-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php/containers-schema.json b/php/containers-schema.json index cd746ebf..5ed57e34 100644 --- a/php/containers-schema.json +++ b/php/containers-schema.json @@ -81,7 +81,7 @@ "properties": { "ip_binding": { "type": "string", - "pattern": "^(%[A-Z_]+%)?$" + "pattern": "^((%[A-Z_]+%)|127\\.0\\.0\\.1)?$" }, "port_number": { "type": "string",