From cac79dea01b64793909ed505d28c9cc5667aac9b Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Thu, 2 Feb 2023 18:41:49 +0300 Subject: [PATCH 01/32] Install rabbitmq-server from default ubuntu repo, fixed bug closes #575 (#578) --- Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a0e2156..8bba423 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,6 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ chmod 644 /etc/apt/trusted.gpg.d/onlyoffice.gpg && \ locale-gen en_US.UTF-8 && \ echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \ - wget -O - https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | bash && \ - if [ $(lsb_release -cs) = focal ]; then RABBITMQ_VERSION=3.8.11-1; else RABBITMQ_VERSION=3.9 ; fi && \ apt-get -yq install \ adduser \ apt-utils \ @@ -47,7 +45,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ postgresql \ postgresql-client \ pwgen \ - rabbitmq-server=${RABBITMQ_VERSION}* \ + rabbitmq-server \ redis-server \ software-properties-common \ sudo \ From 83825d26e903a940aa8c0fc36aaa2da666fe8135 Mon Sep 17 00:00:00 2001 From: Thomas Gerbet Date: Tue, 7 Feb 2023 07:02:40 +0100 Subject: [PATCH 02/32] Generated JWT secret is too small for HMAC SHA256 (#582) The key that is automatically generated weaken the security strength. As noted in RFC7518 section 3.2 [0]: ``` A key of the same size as the hash output (for instance, 256 bits for "HS256") or larger MUST be used with this algorithm. (This requirement is based on Section 5.3.4 (Security Effect of the HMAC Key) of NIST SP 800-117 [NIST.800-107], which states that the effective security strength is the minimum of the security strength of the key and two times the size of the internal hash value.) ``` Some JWT libraries are rejecting by default keys that are too small in a attempt to prevent misusages so generating a key that does not respect the minimal length can be problematic for OO integrations. [0] https://www.rfc-editor.org/rfc/rfc7518.html#section-3.2 --- run-document-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index 91a96b5..0472299 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -87,7 +87,7 @@ fi [ -z $JWT_SECRET ] && JWT_MESSAGE='JWT is enabled by default. A random secret is generated automatically. Run the command "docker exec $(sudo docker ps -q) sudo documentserver-jwt-status.sh" to get information about JWT.' -JWT_SECRET=${JWT_SECRET:-$(pwgen -s 20)} +JWT_SECRET=${JWT_SECRET:-$(pwgen -s 32)} JWT_HEADER=${JWT_HEADER:-Authorization} JWT_IN_BODY=${JWT_IN_BODY:-false} From 985bc4020aa7644e64c2076dd3768beb4a763634 Mon Sep 17 00:00:00 2001 From: evgeniy-antonyuk Date: Tue, 7 Feb 2023 16:08:40 +0300 Subject: [PATCH 03/32] Fix database creation without onlyoffice owner --- Dockerfile | 3 +-- run-document-server.sh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8bba423..24cb240 100644 --- a/Dockerfile +++ b/Dockerfile @@ -60,9 +60,8 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ sed 's|\(application\/zip.*\)|\1\n application\/wasm wasm;|' -i /etc/nginx/mime.types && \ pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \ service postgresql restart && \ - sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE;" && \ sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \ - sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $ONLYOFFICE_VALUE TO $ONLYOFFICE_VALUE;" && \ + sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \ service postgresql stop && \ service redis-server stop && \ service rabbitmq-server stop && \ diff --git a/run-document-server.sh b/run-document-server.sh index 91a96b5..1eb86e0 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -358,9 +358,8 @@ create_postgresql_cluster(){ } create_postgresql_db(){ - sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" sudo -u postgres psql -c "CREATE USER $DB_USER WITH password '"$DB_PWD"';" - sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $DB_NAME TO $DB_USER;" + sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" } create_db_tbl() { From 6f716134dd6a2c6e0de44e0c830d7cc4d0f73354 Mon Sep 17 00:00:00 2001 From: Alexey Golubev Date: Wed, 22 Feb 2023 17:41:59 +0500 Subject: [PATCH 04/32] Fix misprint Instead https://github.com/ONLYOFFICE/Docker-DocumentServer/pull/579 --- run-document-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index ebe554f..964e850 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -497,7 +497,7 @@ update_supervisor_settings(){ # Copy modified supervisor config cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf - cp ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf etc/supervisor/conf.d/ + cp ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf /etc/supervisor/conf.d/ } update_log_settings(){ From 648ff7322f07bab24f3954511263c9f3d666efa6 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Fri, 17 Mar 2023 12:25:33 +0300 Subject: [PATCH 05/32] Fix the owner of the logrotate config (#591) --- run-document-server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index 91a96b5..fef8dfd 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -601,7 +601,7 @@ else update_welcome_page fi -find /etc/${COMPANY_NAME} -exec chown ds:ds {} \; +find /etc/${COMPANY_NAME} ! -path '*logrotate*' -exec chown ds:ds {} \; #start needed local services for i in ${LOCAL_SERVICES[@]}; do From f03bc7ec18f27ed0c6ae067a0f924789522ef266 Mon Sep 17 00:00:00 2001 From: Dmitry Kireev Date: Tue, 21 Mar 2023 13:06:05 +0300 Subject: [PATCH 06/32] Add docker-compose with prometheus and grafana (#495) * Add docker-compose with prometheus and grafana * Add dashbord installation * Fix path to config file --- tests/prometheus.yml | 46 + .../grafana/conf/default-provider.yaml | 23 + tests/prometheus/grafana/conf/prometheus.yml | 6 + .../documentserver-statsd-exporter.json | 2797 +++++++++++++++++ .../prometheus-scrape/statsd-exporter.yml | 6 + 5 files changed, 2878 insertions(+) create mode 100644 tests/prometheus.yml create mode 100644 tests/prometheus/grafana/conf/default-provider.yaml create mode 100644 tests/prometheus/grafana/conf/prometheus.yml create mode 100644 tests/prometheus/grafana/dashboards/documentserver-statsd-exporter.json create mode 100644 tests/prometheus/prometheus-scrape/statsd-exporter.yml diff --git a/tests/prometheus.yml b/tests/prometheus.yml new file mode 100644 index 0000000..3750576 --- /dev/null +++ b/tests/prometheus.yml @@ -0,0 +1,46 @@ +version: '2.1' +services: + onlyoffice-documentserver: + container_name: onlyoffice-documentserver + build: + context: ../. + depends_on: + - onlyoffice-statsd-exporter + environment: + - METRICS_ENABLED=${METRICS_ENABLED:-true} + - METRICS_HOST=${METRICS_HOST:-onlyoffice-statsd-exporter} + - METRICS_PORT=${METRICS_PORT:-9125} + - METRICS_PREFIX=${METRICS_PREFIX:-ds.} + stdin_open: true + restart: always + ports: + - '80:80' + + onlyoffice-statsd-exporter: + container_name: onlyoffice-statsd-exporter + image: prom/statsd-exporter + command: --statsd.event-flush-interval=30000ms + ports: + - '9102:9102' + - '9125:9125/tcp' + - '9125:9125/udp' + + onlyoffice-prometheus: + container_name: onlyoffice-prometheus + image: prom/prometheus + ports: + - '9090:9090' + volumes: + - ./prometheus/prometheus-scrape/statsd-exporter.yml:/etc/prometheus/prometheus.yml + + grafana: + container_name: onlyoffice-grafana + image: bitnami/grafana + ports: + - '3000:3000' + environment: + - 'GF_SECURITY_ADMIN_PASSWORD=G0pGE4' + volumes: + - ./prometheus/grafana/conf/prometheus.yml:/opt/bitnami/grafana/conf/provisioning/datasources/prometheus.yml + - ./prometheus/grafana/conf/default-provider.yaml:/opt/bitnami/grafana/conf/provisioning/dashboards/default-provider.yaml + - ./prometheus/grafana/dashboards:/opt/bitnami/grafana/dashboards diff --git a/tests/prometheus/grafana/conf/default-provider.yaml b/tests/prometheus/grafana/conf/default-provider.yaml new file mode 100644 index 0000000..b8b270b --- /dev/null +++ b/tests/prometheus/grafana/conf/default-provider.yaml @@ -0,0 +1,23 @@ +apiVersion: 1 +providers: + # an unique provider name +- name: 'default-provider' + # org id. will default to orgId 1 if not specified + orgId: 1 + # name of the dashboard folder. Required + folder: dashboards + # folder UID. will be automatically generated if not specified + folderUid: '' + # provider type. Required + type: file + # disable dashboard deletion + disableDeletion: false + # enable dashboard editing + editable: true + # how often Grafana will scan for changed dashboards + updateIntervalSeconds: 10 + options: + # path to dashboard files on disk. Required + path: /opt/bitnami/grafana/dashboards + # enable folders creation for dashboards + #foldersFromFilesStructure: true diff --git a/tests/prometheus/grafana/conf/prometheus.yml b/tests/prometheus/grafana/conf/prometheus.yml new file mode 100644 index 0000000..11428bc --- /dev/null +++ b/tests/prometheus/grafana/conf/prometheus.yml @@ -0,0 +1,6 @@ +apiVersion: 1 +datasources: + - name: Prometheus + type: prometheus + url: http://onlyoffice-prometheus:9090 + editable: true diff --git a/tests/prometheus/grafana/dashboards/documentserver-statsd-exporter.json b/tests/prometheus/grafana/dashboards/documentserver-statsd-exporter.json new file mode 100644 index 0000000..d7a7c6f --- /dev/null +++ b/tests/prometheus/grafana/dashboards/documentserver-statsd-exporter.json @@ -0,0 +1,2797 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 8, + "links": [], + "panels": [ + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 22, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "none" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 76, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_expireDoc_connections_edit", + "interval": "", + "legendFormat": "number of connections for editing", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Edit", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "none", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "none" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 1 + }, + "hiddenSeries": false, + "id": 78, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_expireDoc_connections_view", + "interval": "", + "legendFormat": "number of connections for viewing", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "View", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "none", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "none" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 1 + }, + "hiddenSeries": false, + "id": 80, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_expireDoc_connections_edit + ds_expireDoc_connections_view", + "interval": "", + "legendFormat": "sum of connections for editing and viewing", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sum", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "none", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Сonnecting", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 56, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 2 + }, + "hiddenSeries": false, + "id": 52, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_coauth_openDocument_open_sum[5m])/rate(ds_coauth_openDocument_open_count[5m])", + "interval": "", + "legendFormat": "moving average time of opening documents (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 2 + }, + "hiddenSeries": false, + "id": 54, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_openDocument_open", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 2 + }, + "hiddenSeries": false, + "id": 74, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_openDocument_open_count - ds_coauth_openDocument_open_count offset 1m", + "interval": "", + "legendFormat": "number of open documents", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Opening Documents", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 10, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": {}, + "custom": {}, + "thresholds": { + "mode": "absolute", + "steps": [] + }, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 3 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_conv_downloadFile_sum[5m])/rate(ds_conv_downloadFile_count[5m])", + "interval": "", + "legendFormat": "moving average time of downloading documents (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 3 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_downloadFile", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 3 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_downloadFile_count - ds_conv_downloadFile_count offset 1m", + "interval": "", + "legendFormat": "number of downloaded files", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Downloading Documents", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 12, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 4 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_conv_allconvert_sum[5m])/rate(ds_conv_allconvert_count[5m])", + "interval": "", + "legendFormat": "moving average time of converting documents (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 4 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_allconvert", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 4 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_allconvert_count - ds_conv_allconvert_count offset 1m", + "interval": "", + "legendFormat": "number of conversions", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Converting Documents", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 32, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_conv_spawnSync_sum[5m])/rate(ds_conv_spawnSync_count[5m])", + "interval": "", + "legendFormat": "moving average time of converting process (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 5 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_spawnSync", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 5 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_conv_spawnSync_count - ds_conv_spawnSync_count offset 1m", + "interval": "", + "legendFormat": "number of conversion process", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Converting Process", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 48, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 6 + }, + "hiddenSeries": false, + "id": 44, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_coauth_data_auth_sum[5m])/rate(ds_coauth_data_auth_count[5m])", + "interval": "", + "legendFormat": "moving average time of completing authorization (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 6 + }, + "hiddenSeries": false, + "id": 46, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_auth", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 6 + }, + "hiddenSeries": false, + "id": 42, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_auth_count - ds_coauth_data_auth_count offset 1m", + "interval": "", + "legendFormat": "number of authorizations", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Authorizations", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 64, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 60, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_coauth_data_getLock_sum[5m])/rate(ds_coauth_data_getLock_count[5m])", + "interval": "", + "legendFormat": "moving average time of getLock duration (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 7 + }, + "hiddenSeries": false, + "id": 62, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_getLock", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 7 + }, + "hiddenSeries": false, + "id": 58, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_getLock_count - ds_coauth_data_getLock_count offset 1m", + "interval": "", + "legendFormat": "number of getLocks", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Get Lock", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 40, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_coauth_data_saveChanges_sum[5m])/rate(ds_coauth_data_saveChanges_count[5m])", + "interval": "", + "legendFormat": "moving average time of saving changes (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 8 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_saveChanges", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 8 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_data_saveChanges_count - ds_coauth_data_saveChanges_count offset 1m", + "interval": "", + "legendFormat": "number of saved changes ", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Saving Changes", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 72, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 70, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "rate(ds_coauth_openDocument_imgurls_sum[5m])/rate(ds_coauth_openDocument_imgurls_count[5m])", + "interval": "", + "legendFormat": "moving average time to opening documents with uploading images (for 5 minutes)", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Average time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "s" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 8, + "y": 9 + }, + "hiddenSeries": false, + "id": 68, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_openDocument_imgurls", + "interval": "", + "legendFormat": "quantile=\"{{quantile}}\"", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Quantile (0.5, 0.9, 0.99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "cpm" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 9 + }, + "hiddenSeries": false, + "id": 66, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ds_coauth_openDocument_imgurls_count - ds_coauth_openDocument_imgurls_count offset 1m", + "interval": "", + "legendFormat": "the number of opened documents with the uploaded images", + "queryType": "randomWalk", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "cpm", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Uploading Images", + "type": "row" + } + ], + "refresh": "30s", + "schemaVersion": 27, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Statsd DS", + "uid": "LDjoK2UGz", + "version": 24 +} \ No newline at end of file diff --git a/tests/prometheus/prometheus-scrape/statsd-exporter.yml b/tests/prometheus/prometheus-scrape/statsd-exporter.yml new file mode 100644 index 0000000..b3322d0 --- /dev/null +++ b/tests/prometheus/prometheus-scrape/statsd-exporter.yml @@ -0,0 +1,6 @@ +scrape_configs: + - job_name: 'statsd' + scrape_interval: 30s + static_configs: + - targets: + - onlyoffice-statsd-exporter:9102 From f455bdf433aa54b8d78a252eeb4277262d23f9d3 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Thu, 6 Apr 2023 15:18:10 +0500 Subject: [PATCH 07/32] fix Bug 59826 - Fix database creation without onlyoffice owner (#597) * fix Bug 59826 - Fix database creation without onlyoffice owner * Fix an unnecessary space --- Dockerfile | 3 +-- run-document-server.sh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index b798712..e5d89d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -57,9 +57,8 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ sed 's|\(application\/zip.*\)|\1\n application\/wasm wasm;|' -i /etc/nginx/mime.types && \ pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \ service postgresql restart && \ - sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE;" && \ sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \ - sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $ONLYOFFICE_VALUE TO $ONLYOFFICE_VALUE;" && \ + sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \ service postgresql stop && \ service redis-server stop && \ service rabbitmq-server stop && \ diff --git a/run-document-server.sh b/run-document-server.sh index fef8dfd..c7235dc 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -358,9 +358,8 @@ create_postgresql_cluster(){ } create_postgresql_db(){ - sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" sudo -u postgres psql -c "CREATE USER $DB_USER WITH password '"$DB_PWD"';" - sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $DB_NAME TO $DB_USER;" + sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" } create_db_tbl() { From 09b9a73637651a045b258a359fc678d243780e67 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Mon, 10 Apr 2023 13:16:23 +0500 Subject: [PATCH 08/32] fix Bug 61960 - Add authentication for supervisord (#598) --- config/supervisor/supervisord.conf | 4 ++++ run-document-server.sh | 1 + 2 files changed, 5 insertions(+) diff --git a/config/supervisor/supervisord.conf b/config/supervisor/supervisord.conf index 27ef634..7a6f00b 100644 --- a/config/supervisor/supervisord.conf +++ b/config/supervisor/supervisord.conf @@ -2,6 +2,8 @@ [inet_http_server] port = 127.0.0.1:9001 +username = ds +password = supervisorpassword [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) @@ -16,6 +18,8 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl = http://localhost:9001 ; use a unix:// URL for a unix socket +username = ds +password = supervisorpassword ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or diff --git a/run-document-server.sh b/run-document-server.sh index 964e850..c075f2d 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -496,6 +496,7 @@ update_supervisor_settings(){ cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/ # Copy modified supervisor config cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf + sed "s_\(password =\).*_\1 $(pwgen -s 20)_" -i /etc/supervisor/supervisord.conf sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf cp ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf /etc/supervisor/conf.d/ } From 4499ca1d34f516e061626d300a01199dd4a5f1b5 Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Mon, 10 Apr 2023 15:10:23 +0300 Subject: [PATCH 09/32] Fix deb package link (#599) --- .github/workflows/4testing-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index 683bb80..4c5c4a1 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -124,7 +124,7 @@ jobs: BUILD_NUMBER=${{ github.event.inputs.build }} export PRODUCT_EDITION - export PACKAGE_VERSION=${PRODUCT_VERSION}-${BUILD_NUMBER}~stretch + export PACKAGE_VERSION=${PRODUCT_VERSION}-${BUILD_NUMBER} export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }}/${BUILD_CHANNEL} export BUILD_CHANNEL export PLATFORM From 44eb6c45f2d769869911ecc2c104780aa3a50ffe Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Fri, 14 Apr 2023 20:32:04 +0300 Subject: [PATCH 10/32] Fix deb package link (#602) --- .github/workflows/4testing-build.yml | 2 +- .github/workflows/stable-build.yml | 4 ++-- Makefile | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index 4c5c4a1..d88bbde 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -125,7 +125,7 @@ jobs: export PRODUCT_EDITION export PACKAGE_VERSION=${PRODUCT_VERSION}-${BUILD_NUMBER} - export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }}/${BUILD_CHANNEL} + export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }} export BUILD_CHANNEL export PLATFORM export DOCKERFILE=Dockerfile diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml index d0cc970..7063e4e 100644 --- a/.github/workflows/stable-build.yml +++ b/.github/workflows/stable-build.yml @@ -114,11 +114,11 @@ jobs: run: | set -eux export PRODUCT_EDITION=${{ matrix.edition }} - export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }}/test + export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }} export DOCKERFILE=Dockerfile export BASE_IMAGE=ubuntu:20.04 export PG_VERSION=12 export TAG=${{ github.event.inputs.tag }} - export PACKAGE_VERSION=$( echo ${TAG} | sed -E 's/(.*)\./\1-/')~stretch + export PACKAGE_VERSION=$( echo ${TAG} | sed -E 's/(.*)\./\1-/') docker buildx bake -f docker-bake.hcl documentserver-ucs --push shell: bash diff --git a/Makefile b/Makefile index 99b749b..546e5cc 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ COMPANY_NAME_ESC = $(subst -,,$(COMPANY_NAME_LOW)) PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)$(PRODUCT_EDITION) PACKAGE_VERSION ?= $(PRODUCT_VERSION)-$(BUILD_NUMBER)~stretch -PACKAGE_BASEURL ?= https://s3.eu-west-1.amazonaws.com/repo-doc-onlyoffice-com/server/linux/debian/$(BUILD_CHANNEL) +PACKAGE_BASEURL ?= https://s3.eu-west-1.amazonaws.com/repo-doc-onlyoffice-com/server/linux/debian ifeq ($(BUILD_CHANNEL),$(filter $(BUILD_CHANNEL),nightly test)) DOCKER_TAG := $(PRODUCT_VERSION).$(BUILD_NUMBER) From b011e73f646e55fa0424e8e5a916f14799d23b6d Mon Sep 17 00:00:00 2001 From: Alexey Golubev Date: Tue, 18 Apr 2023 22:34:02 +0500 Subject: [PATCH 11/32] Fix nginx secure link url (#604) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2723cc..1364ab9 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ Below is the complete list of parameters that can be set using environment varia - **REDIS_SERVER_PASS**: The Redis server password. The password is not set by default. - **NGINX_WORKER_PROCESSES**: Defines the number of nginx worker processes. - **NGINX_WORKER_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened by a nginx worker process. -- **SECURE_LINK_SECRET**: Defines secret for the nginx config directive [secure_link_md5](http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html#secure_link_md5). Defaults to `random string`. +- **SECURE_LINK_SECRET**: Defines secret for the nginx config directive [secure_link_md5](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_md5). Defaults to `random string`. - **JWT_ENABLED**: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Document Server. Defaults to `true`. - **JWT_SECRET**: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Document Server. Defaults to random value. - **JWT_HEADER**: Defines the http header that will be used to send the JSON Web Token. Defaults to `Authorization`. From c61323257ba3be23aebebe99eecfa3a2cc4aad3d Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Thu, 20 Apr 2023 20:27:35 +0500 Subject: [PATCH 12/32] Use the default supervisord configuration (#608) * Use a unix socket by default * Use the default supervisord configuration * Return the init.d supervisor file --- config/supervisor/supervisord.conf | 27 --------------------------- run-document-server.sh | 2 -- 2 files changed, 29 deletions(-) delete mode 100644 config/supervisor/supervisord.conf diff --git a/config/supervisor/supervisord.conf b/config/supervisor/supervisord.conf deleted file mode 100644 index 27ef634..0000000 --- a/config/supervisor/supervisord.conf +++ /dev/null @@ -1,27 +0,0 @@ -; supervisor config file - -[inet_http_server] -port = 127.0.0.1:9001 - -[supervisord] -logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) -pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) -childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) - -; the below section must remain in the config file for RPC -; (supervisorctl/web interface) to work, additional interfaces may be -; added by defining them in separate rpcinterface: sections -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl = http://localhost:9001 ; use a unix:// URL for a unix socket - -; The [include] section can just contain the "files" setting. This -; setting can list multiple files (separated by whitespace or -; newlines). It can also contain wildcards. The filenames are -; interpreted as relative to this file. Included files *cannot* -; include files themselves. - -[include] -files = /etc/supervisor/conf.d/*.conf diff --git a/run-document-server.sh b/run-document-server.sh index c7235dc..ed7c665 100755 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -494,8 +494,6 @@ update_nginx_settings(){ update_supervisor_settings(){ # Copy modified supervisor start script cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/ - # Copy modified supervisor config - cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf cp ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf etc/supervisor/conf.d/ } From 708684ccc1096f4ef1131ec0d16ea5c1c635fcdf Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Tue, 25 Apr 2023 18:01:14 +0300 Subject: [PATCH 13/32] Trace build commands (#609) * Trace build commands * Small fix --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index e5d89d8..6f935de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,8 @@ ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=nonint ARG ONLYOFFICE_VALUE=onlyoffice +SHELL ["/bin/sh", "-x", "-c"] + RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ apt-get -y update && \ apt-get -yq install wget apt-transport-https gnupg locales lsb-release && \ From 4c5e5f20ee08e79ba2398f6bca4174456daf3304 Mon Sep 17 00:00:00 2001 From: Alexey Golubev Date: Tue, 2 May 2023 13:25:36 +0500 Subject: [PATCH 14/32] Revert "Trace build commands (#609)" This reverts commit 708684ccc1096f4ef1131ec0d16ea5c1c635fcdf. --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6f935de..e5d89d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,8 +9,6 @@ ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=nonint ARG ONLYOFFICE_VALUE=onlyoffice -SHELL ["/bin/sh", "-x", "-c"] - RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ apt-get -y update && \ apt-get -yq install wget apt-transport-https gnupg locales lsb-release && \ From 989647852e4527bebf27e0dcd8ee08145ea63b2e Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Wed, 24 May 2023 11:51:14 +0300 Subject: [PATCH 15/32] Fix deprecated set-output (#632) --- .github/workflows/4testing-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index d88bbde..def1e2c 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -61,7 +61,7 @@ jobs: echo "None of the editions are selected." exit 1 fi - echo "::set-output name=editions::$(jq -n -c --arg s "${EDITIONS[*]}" '($s|split(" "))')" + echo "editions=$(jq -n -c --arg s "${EDITIONS[*]}" '($s|split(" "))')" >> $GITHUB_OUTPUT outputs: editions: ${{ steps.matrix.outputs.editions }} From 7d32cac40a7d0971e8c1d48925ed4793e12577c5 Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Thu, 25 May 2023 16:36:33 +0300 Subject: [PATCH 16/32] Add new stable images versioning principles (#633) * Refactoring stable images release versioning The new principle of stable docker images versioning: release numbering is now not by build number, but by serial number. * Refactoring: fix non-example image pull tag --- .github/workflows/stable-build.yml | 20 ++++++++++++++++---- docker-bake.hcl | 8 ++++++-- production.dockerfile | 6 +++--- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml index 7063e4e..9a19768 100644 --- a/.github/workflows/stable-build.yml +++ b/.github/workflows/stable-build.yml @@ -8,6 +8,11 @@ on: description: 'Tag for release (ex. 1.2.3.45)' type: string required: true + release_number: + description: 'Sequence number of the release (ex. x.x.x.)' + type: string + required: true + default: '1' env: COMPANY_NAME: "onlyoffice" @@ -42,10 +47,12 @@ jobs: run: | set -eux VERSION=${{ github.event.inputs.tag }} + RELEASE_NUMBER=${{ github.event.inputs.release_number }} PRODUCT_EDITION=${{ matrix.edition }} TESTING_IMAGE=${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION} export PRODUCT_EDITION - export TAG=${VERSION} + export PULL_TAG=${VERSION} + export TAG=${VERSION%.*}.${RELEASE_NUMBER} export SHORTER_TAG=${VERSION%.*} export SHORTEST_TAG=${VERSION%.*.*} docker buildx bake -f docker-bake.hcl ${{ matrix.images }} --push @@ -82,8 +89,11 @@ jobs: - name: build image run: | set -eux + VERSION=${{ github.event.inputs.tag }} + RELEASE_NUMBER=${{ github.event.inputs.release_number }} + export PULL_TAG=${VERSION%.*}.${RELEASE_NUMBER} export PRODUCT_EDITION=${{ matrix.edition }} - export TAG=${{ github.event.inputs.tag }} + export TAG=${VERSION%.*}.${RELEASE_NUMBER} docker buildx bake -f docker-bake.hcl ${{ matrix.images }} --push shell: bash @@ -113,12 +123,14 @@ jobs: - name: build UCS run: | set -eux + VERSION=${{ github.event.inputs.tag }} + RELEASE_NUMBER=${{ github.event.inputs.release_number }} export PRODUCT_EDITION=${{ matrix.edition }} export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }} export DOCKERFILE=Dockerfile export BASE_IMAGE=ubuntu:20.04 export PG_VERSION=12 - export TAG=${{ github.event.inputs.tag }} - export PACKAGE_VERSION=$( echo ${TAG} | sed -E 's/(.*)\./\1-/') + export TAG=${VERSION%.*}.${RELEASE_NUMBER} + export PACKAGE_VERSION=$( echo ${VERSION} | sed -E 's/(.*)\./\1-/') docker buildx bake -f docker-bake.hcl documentserver-ucs --push shell: bash diff --git a/docker-bake.hcl b/docker-bake.hcl index 28396a6..4082f4a 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -10,6 +10,10 @@ variable "SHORTEST_TAG" { default = "" } +variable "PULL_TAG" { + default = "" +} + variable "COMPANY_NAME" { default = "" } @@ -90,7 +94,7 @@ target "documentserver-stable" { equal("-ee",PRODUCT_EDITION) ? "docker.io/${COMPANY_NAME}4enterprise/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}": "",] platforms = ["linux/amd64", "linux/arm64"] args = { - "TAG": "${TAG}" + "PULL_TAG": "${PULL_TAG}" "COMPANY_NAME": "${COMPANY_NAME}" "PRODUCT_NAME": "${PRODUCT_NAME}" "PRODUCT_EDITION": "${PRODUCT_EDITION}" @@ -121,7 +125,7 @@ target "documentserver-nonexample" { tags = [ "docker.io/${COMPANY_NAME}/${PRODUCT_NAME}${PREFIX_NAME}${PRODUCT_EDITION}:${TAG}-nonexample" ] platforms = ["linux/amd64", "linux/arm64"] args = { - "TAG": "${TAG}" + "PULL_TAG": "${PULL_TAG}" "COMPANY_NAME": "${COMPANY_NAME}" "PRODUCT_NAME": "${PRODUCT_NAME}" "PRODUCT_EDITION": "${PRODUCT_EDITION}" diff --git a/production.dockerfile b/production.dockerfile index 3c7b3bd..0706a58 100644 --- a/production.dockerfile +++ b/production.dockerfile @@ -1,15 +1,15 @@ ### Arguments avavlivable only for FROM instruction ### -ARG TAG=latest +ARG PULL_TAG=latest ARG COMPANY_NAME=onlyoffice ARG PRODUCT_EDITION= ### Build main-release ### -FROM ${COMPANY_NAME}/4testing-documentserver${PRODUCT_EDITION}:${TAG} as documentserver-stable +FROM ${COMPANY_NAME}/4testing-documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-stable ### Build nonexample ### -FROM ${COMPANY_NAME}/documentserver${PRODUCT_EDITION}:${TAG} as documentserver-nonexample +FROM ${COMPANY_NAME}/documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-nonexample ARG COMPANY_NAME=onlyoffice ARG PRODUCT_NAME=documentserver From 48add9dc896cca14eebc8ed302266a3b2ad942a9 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Fri, 26 May 2023 18:59:54 +0500 Subject: [PATCH 17/32] Add the ability to enable request filtering agent (#628) --- README.md | 2 ++ run-document-server.sh | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/README.md b/README.md index 1364ab9..cfa9e46 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,8 @@ Below is the complete list of parameters that can be set using environment varia - **JWT_HEADER**: Defines the http header that will be used to send the JSON Web Token. Defaults to `Authorization`. - **JWT_IN_BODY**: Specifies the enabling the token validation in the request body to the ONLYOFFICE Document Server. Defaults to `false`. - **WOPI_ENABLED**: Specifies the enabling the wopi handlers. Defaults to `false`. +- **ALLOW_META_IP_ADDRESS**: Defines if it is allowed to connect meta IP address or not. Defaults to `false`. +- **ALLOW_PRIVATE_IP_ADDRESS**: Defines if it is allowed to connect private IP address or not. Defaults to `false`. - **USE_UNAUTHORIZED_STORAGE**: Set to `true`if using selfsigned certificates for your storage server e.g. Nextcloud. Defaults to `false` - **GENERATE_FONTS**: When 'true' regenerates fonts list and the fonts thumbnails etc. at each start. Defaults to `true` - **METRICS_ENABLED**: Specifies the enabling StatsD for ONLYOFFICE Document Server. Defaults to `false`. diff --git a/run-document-server.sh b/run-document-server.sh index 967225a..9a4d174 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -92,6 +92,8 @@ JWT_HEADER=${JWT_HEADER:-Authorization} JWT_IN_BODY=${JWT_IN_BODY:-false} WOPI_ENABLED=${WOPI_ENABLED:-false} +ALLOW_META_IP_ADDRESS=${ALLOW_META_IP_ADDRESS:-false} +ALLOW_PRIVATE_IP_ADDRESS=${ALLOW_PRIVATE_IP_ADDRESS:-false} GENERATE_FONTS=${GENERATE_FONTS:-true} @@ -344,6 +346,12 @@ update_ds_settings(){ ${JSON} -I -e "if(this.wopi===undefined)this.wopi={}" ${JSON} -I -e "this.wopi.enable = true" fi + + if [ "${ALLOW_META_IP_ADDRESS}" = "true" ] || [ "${ALLOW_PRIVATE_IP_ADDRESS}" = "true" ]; then + ${JSON} -I -e "if(this.services.CoAuthoring['request-filtering-agent']===undefined)this.services.CoAuthoring['request-filtering-agent']={}" + [ "${ALLOW_META_IP_ADDRESS}" = "true" ] && ${JSON} -I -e "this.services.CoAuthoring['request-filtering-agent'].allowMetaIPAddress = true" + [ "${ALLOW_PRIVATE_IP_ADDRESS}" = "true" ] && ${JSON} -I -e "this.services.CoAuthoring['request-filtering-agent'].allowPrivateIPAddress = true" + fi } create_postgresql_cluster(){ From 9400eedc067c854530188034c5fb196025cc44b2 Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:50:17 +0300 Subject: [PATCH 18/32] Add auto rebuild previous releases * Add the ability to rebuild images Rebuilding images will be done manually (for now). The choice of the number of rebuilt releases is available (1 by default), the choice of repositories for pushing rebuilt images is available (4testing by default). Principle of operation: Through the api of the docker hub, we get the last launched tag that falls under the pattern x.x.x.1, after that the tag with the assembly of which the minor tag x.x will be sent will be calculated. Next, at one of the build steps, the number of the previous release will be received, for example x. x.x.4 which will mean that the current one will be x.x.x.5 * Add login to dockerhub * Refactoring code Set some variables for all rebuild-info job. Also set default values for repository and quantity variables * Refactor: remove push trigger * Refactoring code * Refactor: Unlinking a version * Submitting the latest tag for the latest release only --- .github/workflows/cron-rebuild-trigger.yml | 22 ++ .github/workflows/rebuild.yml | 224 +++++++++++++++++++++ docker-bake.hcl | 36 ++++ production.dockerfile | 9 + 4 files changed, 291 insertions(+) create mode 100644 .github/workflows/cron-rebuild-trigger.yml create mode 100644 .github/workflows/rebuild.yml diff --git a/.github/workflows/cron-rebuild-trigger.yml b/.github/workflows/cron-rebuild-trigger.yml new file mode 100644 index 0000000..52cb144 --- /dev/null +++ b/.github/workflows/cron-rebuild-trigger.yml @@ -0,0 +1,22 @@ +--- +name: Trigger 4testing rebuild + +run-name: "Weekly 4testing rebuild trigger" + +on: + schedule: + # Run every Saturday at 10 p.m. + - cron: '00 22 * * 6' + +jobs: + trigger-rebuild: + name: "trigget-rebuild" + runs-on: "ubuntu-latest" + steps: + - name: Rebuild 4testing manualy + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} + run: | + gh workflow run rebuild.yml \ + --repo ONLYOFFICE/Docker-DocumentServer \ + -f repo=4test diff --git a/.github/workflows/rebuild.yml b/.github/workflows/rebuild.yml new file mode 100644 index 0000000..953eefd --- /dev/null +++ b/.github/workflows/rebuild.yml @@ -0,0 +1,224 @@ +--- +name: Rebuild Docker-Documentserver + +run-name: > + Rebuild DocumentServer with secure updates for repo: ${{ github.event.inputs.repo }} + +on: + workflow_dispatch: + inputs: + repo: + type: choice + description: Please, choose upload repo.. + options: + - '4test' + - 'stable' + +permissions: + # All other permissions are set to none + contents: read + # Technically read access while waiting for images should be more than enough. However, + # there is a bug in GitHub Actions/Packages and in case private repositories are used, you get a permission + # denied error when attempting to just pull private image, changing the token permission to write solves the + # issue. This is not dangerous, because if it is for "ONLYOFFICE/Docker-DocumentServer", only maintainers can use ds-rebuild.yaml + # If it is for a fork, then the token is read-only anyway. + packages: read + +env: + COMPANY_NAME: "onlyoffice" + PRODUCT_NAME: "documentserver" + REGISTRY_URL: "https://hub.docker.com/v2/repositories" + +jobs: + rebuild-info: + name: "Rebuild-info" + runs-on: "ubuntu-22.04" + env: + REPO_INPUTS: ${{ github.event.inputs.repo }} + EVENT: ${{ github.event_name }} + outputs: + stable-versions: ${{ steps.selective-checks.outputs.stable-versions }} + ucs-versions: ${{ steps.selective-checks.outputs.ucs-versions }} + minor-tags: ${{ steps.selective-checks.outputs.minor-tags }} + ucs-rebuild-condition: ${{ steps.selective-checks.outputs.ucs-rebuild-condition }} + prefix-name: ${{ steps.selective-checks.outputs.prefix-name }} + repo: ${{ steps.selective-checks.outputs.repo }} + steps: + - name: Selective checks + id: selective-checks + run: | + set -e + + REPO=${REPO_INPUTS:-"4test"} + + if [ "${REPO}" == "stable" ]; then + UCS_REBUILD=true + UCS_VERSIONS=($(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}-ucs/tags/?page_size=100 | \ + jq -r '.results|.[]|.name' | grep -oxE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.1' || true)) + echo "ucs-versions=$(jq -c -n '$ARGS.positional' --args "${UCS_VERSIONS[@]}")" >> "$GITHUB_OUTPUT" + elif + [ "${REPO}" == "4test" ]; then + UCS_REBUILD=false + PREFIX_NAME=4testing- + fi + + STABLE_VERSIONS=($(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 | \ + jq -r '.results|.[]|.name' | grep -oxE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.1' || true)) + + # When rebuilding stable versions of the document server, + # it is necessary to determine the version from which the + # minor x.x tag will need to be pushed. + + VERSIONS=(${STABLE_VERSIONS[@]}) + for i in {1..10}; do + if [ -z "${VERSIONS}" ]; then + break + else + TEMPLATE=${VERSIONS[0]%.*.*} + TEMPLATE_MINOR=$(printf -- '%s\n' "${VERSIONS[@]}" | grep -o -m 1 "${VERSIONS[0]%.*.*}.[0-9].[0-9]") + MINOR_TAGS+=(${TEMPLATE_MINOR%.*}) + + for v in ${MINOR_TAGS[@]}; do + VERSIONS=(${VERSIONS[@]//${v%.*}.*.*}) + done + fi + done + + echo "Stable releases that will be rebuilded" + echo "--------------------------------------" + echo "${STABLE_VERSIONS[@]}" + echo + echo + echo "Ucs releases that will be rebuilded" + echo "-----------------------------------" + echo "${UCS_VERSIONS[@]}" + + echo "stable-versions=$(jq -c -n '$ARGS.positional' --args "${STABLE_VERSIONS[@]}")" >> "$GITHUB_OUTPUT" + echo "minor-tags=${MINOR_TAGS[@]}" >> "$GITHUB_OUTPUT" + echo "ucs-rebuild-condition=${UCS_REBUILD}" >> "$GITHUB_OUTPUT" + echo "prefix-name=${PREFIX_NAME}" >> "$GITHUB_OUTPUT" + echo "repo=${REPO}" >> "$GITHUB_OUTPUT" + shell: bash + + re-build-stable: + name: "Rebuild stable:${{ matrix.version }} ${{ matrix.edition }}" + needs: [rebuild-info] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + type: ["stable"] + edition: ["", "-ee", "-de"] + version: ${{fromJSON(needs.rebuild-info.outputs.stable-versions)}} + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + # Determines the new build number based + # on data from the hub.docker registry + - name: Declare release number + id: release-number + env: + REBUILD_VERSION: ${{ matrix.version }} + run: | + MINOR_VERSION=${REBUILD_VERSION%.*} + LAST_RELEASE=$(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 \ + | jq -r '.results|.[]|.name' | grep -Eo -m1 "${MINOR_VERSION}.[0-9]{1,}") + LAST_RELEASE=${LAST_RELEASE#*.*.*.} + echo "release-number=$((LAST_RELEASE+1))" >> "$GITHUB_OUTPUT" + shell: bash + # Note: Rebuilding images with an + # extra layer to update security and + # all dependencies. Update tags got +1 to previous release. + - name: Re-build documentserver-stable + env: + MINOR_TAGS_ST: ${{ needs.rebuild-info.outputs.minor-tags }} + VERSION: ${{ matrix.version }} + RELEASE_NUMBER: ${{ steps.release-number.outputs.release-number }} + PREFIX_NAME: ${{ needs.rebuild-info.outputs.prefix-name }} + REPO: ${{ needs.rebuild-info.outputs.repo }} + PRODUCT_EDITION: ${{ matrix.edition }} + run: | + set -eux + export PULL_TAG=${VERSION} + export TAG=${VERSION%.*}.${RELEASE_NUMBER} + export SHORTER_TAG=${VERSION%.*} + export SHORTEST_TAG=${VERSION%.*.*} + + if [ "${REPO}" == "stable" ]; then + MINOR_TAGS=(${MINOR_TAGS_ST}) + for v in ${MINOR_TAGS[@]}; do + if [ "${SHORTER_TAG}" == "${v}" ]; then + export PUSH_MAJOR="true" + fi + done + if [ "${SHORTER_TAG}" == "${MINOR_TAGS[0]}" ]; then + export LATEST="true" + fi + fi + docker buildx bake -f docker-bake.hcl documentserver-stable-rebuild --push + shell: bash + re-build-ucs: + name: "Rebuild ucs: ${{ matrix.version }} ${{ matrix.edition }}" + if: needs.rebuild-info.outputs.ucs-rebuild-condition == 'true' + needs: [rebuild-info] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + type: ["ucs"] + edition: ["", "-ee"] + version: ${{fromJSON(needs.rebuild-info.outputs.ucs-versions)}} + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + # Determines the new build number based + # on data from the hub.docker registry + - name: Declare release number + id: release-number + env: + REBUILD_VERSION: ${{ matrix.version }} + run: | + MINOR_VERSION=${REBUILD_VERSION%.*} + LAST_RELEASE=$(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 \ + | jq -r '.results|.[]|.name' | grep -Eo -m1 "${MINOR_VERSION}.[0-9]{1,}") + LAST_RELEASE=${LAST_RELEASE#*.*.*.} + echo "release-number=$((LAST_RELEASE+1))" >> "$GITHUB_OUTPUT" + shell: bash + # Note: Rebuilding images with an + # extra layer to update security and + # all dependencies. Update tags +1 to previous release. + - name: Re-build documentserver-ucs + env: + VERSION: ${{ matrix.version }} + RELEASE_NUMBER: ${{ steps.release-number.outputs.release-number }} + PRODUCT_EDITION: ${{ matrix.edition }} + run: | + set -eux + export PULL_TAG=${VERSION} + export TAG=${VERSION%.*}.${RELEASE_NUMBER} + export SHORTER_TAG=${VERSION%.*} + export SHORTEST_TAG=${VERSION%.*.*} + + export UCS_REBUILD=true + export UCS_PREFIX=-ucs + + docker buildx bake -f docker-bake.hcl documentserver-stable-rebuild --push + shell: bash diff --git a/docker-bake.hcl b/docker-bake.hcl index 4082f4a..54de0b6 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -54,6 +54,14 @@ variable "BUILD_CHANNEL" { default = "" } +variable "PUSH_MAJOR" { + default = "false" +} + +variable "LATEST" { + default = "false" +} + ### ↓ Variables for UCS build ↓ variable "BASE_IMAGE" { @@ -64,6 +72,14 @@ variable "PG_VERSION" { default = "" } +variable "UCS_REBUILD" { + default = "" +} + +variable "UCS_PREFIX" { + default = "" +} + ### ↑ Variables for UCS build ↑ target "documentserver" { @@ -131,3 +147,23 @@ target "documentserver-nonexample" { "PRODUCT_EDITION": "${PRODUCT_EDITION}" } } + +target "documentserver-stable-rebuild" { + target = "documentserver-stable-rebuild" + dockerfile = "production.dockerfile" + tags = equal("true",UCS_REBUILD) ? ["docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}-ucs:${TAG}",] : [ + "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}", + equal("",PREFIX_NAME) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTER_TAG}": "", + equal("true",PUSH_MAJOR) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTEST_TAG}": "", + equal("",PREFIX_NAME) && equal("true",LATEST) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "", + equal("-ee",PRODUCT_EDITION) && equal("",PREFIX_NAME) ? "docker.io/${COMPANY_NAME}4enterprise/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}": "", + ] + platforms = ["linux/amd64", "linux/arm64"] + args = { + "UCS_PREFIX": "${UCS_PREFIX}" + "PULL_TAG": "${PULL_TAG}" + "COMPANY_NAME": "${COMPANY_NAME}" + "PRODUCT_NAME": "${PRODUCT_NAME}" + "PRODUCT_EDITION": "${PRODUCT_EDITION}" + } +} diff --git a/production.dockerfile b/production.dockerfile index 0706a58..24c6569 100644 --- a/production.dockerfile +++ b/production.dockerfile @@ -2,11 +2,20 @@ ARG PULL_TAG=latest ARG COMPANY_NAME=onlyoffice ARG PRODUCT_EDITION= +### Rebuild arguments +ARG UCS_PREFIX= +ARG IMAGE=${COMPANY_NAME}/documentserver${PRODUCT_EDITION}${UCS_PREFIX}:${PULL_TAG} ### Build main-release ### FROM ${COMPANY_NAME}/4testing-documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-stable +### Rebuild stable images with secure updates +FROM ${IMAGE} as documentserver-stable-rebuild +RUN echo "This is rebuild" \ + && apt-get update -y \ + && apt-get upgrade -y + ### Build nonexample ### FROM ${COMPANY_NAME}/documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-nonexample From c413936f1c63ca6fa76e00ed63ee4d297711610c Mon Sep 17 00:00:00 2001 From: Iskandar Kurbonov <116521281+IskandarKurbonov@users.noreply.github.com> Date: Thu, 13 Jul 2023 17:51:03 +0300 Subject: [PATCH 19/32] Fix Bug #63238 - Fix re-copying of configuration files in supervisor (#645) --- Dockerfile | 5 ++++- run-document-server.sh | 10 +--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index e5d89d8..d251e74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,7 +66,8 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ service nginx stop && \ rm -rf /var/lib/apt/lists/* -COPY config /app/ds/setup/config/ +COPY config/supervisor/supervisor /etc/init.d/ +COPY config/supervisor/ds/*.conf /etc/supervisor/conf.d/ COPY run-document-server.sh /app/ds/run-document-server.sh EXPOSE 80 443 @@ -89,6 +90,8 @@ RUN PACKAGE_FILE="${COMPANY_NAME}-${PRODUCT_NAME}${PRODUCT_EDITION}${PACKAGE_VER service postgresql start && \ apt-get -yq install /tmp/$PACKAGE_FILE && \ service postgresql stop && \ + chmod 755 /etc/init.d/supervisor && \ + sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i /etc/supervisor/conf.d/*.conf && \ service supervisor stop && \ chmod 755 /app/ds/*.sh && \ rm -f /tmp/$PACKAGE_FILE && \ diff --git a/run-document-server.sh b/run-document-server.sh index 9a4d174..5883e27 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -499,13 +499,6 @@ update_nginx_settings(){ documentserver-update-securelink.sh -s ${SECURE_LINK_SECRET:-$(pwgen -s 20)} -r false } -update_supervisor_settings(){ - # Copy modified supervisor start script - cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/ - sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf - cp ${SYSCONF_TEMPLATES_DIR}/supervisor/ds/*.conf /etc/supervisor/conf.d/ -} - update_log_settings(){ ${JSON_LOG} -I -e "this.categories.default.level = '${DS_LOG_LEVEL}'" } @@ -631,8 +624,7 @@ if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then fi update_nginx_settings - - update_supervisor_settings + service supervisor start # start cron to enable log rotating From 24d737d5b427d5dba683db6fbc4346970ecc6ecb Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Fri, 11 Aug 2023 10:40:34 +0300 Subject: [PATCH 20/32] Add instructions for ipv6 connection. Related to bug #63537 (#654) * Update README.md - add the 'ONLYOFFICE Document Server ipv6 setup' section * Fix README.md formatting --------- Co-authored-by: svetlana maleeva --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index cfa9e46..3fea1c6 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ + [Installation of the SSL Certificates](#installation-of-the-ssl-certificates) + [Available Configuration Parameters](#available-configuration-parameters) * [Installing ONLYOFFICE Document Server integrated with Community and Mail Servers](#installing-onlyoffice-document-server-integrated-with-community-and-mail-servers) +* [ONLYOFFICE Document Server ipv6 setup](#onlyoffice-document-server-ipv6-setup) * [Issues](#issues) - [Docker Issues](#docker-issues) - [Document Server usage Issues](#document-server-usage-issues) @@ -320,6 +321,30 @@ wget https://raw.githubusercontent.com/ONLYOFFICE/Docker-CommunityServer/master/ docker-compose up -d ``` +## ONLYOFFICE Document Server ipv6 setup + +(Works and is supported only for Linux hosts) + +Docker does not currently provide ipv6 addresses to containers by default. This function is experimental now. + +To set up interaction via ipv6, you need to enable support for this feature in your Docker. For this you need: +- create the `/etc/docker/daemon.json` file with the following content: + +``` +{ +"ipv6": true, +"fixed-cidr-v6": "2001:db8:abc1::/64" +} +``` +- restart docker with the following command: `systemctl restart docker` + +After that, all running containers receive an ipv6 address and have an inet6 interface. + +You can check your default bridge network and see the field there +`EnableIPv6=true`. A new ipv6 subnet will also be added. + +For more information, visit the official [Docker manual site](https://docs.docker.com/config/daemon/ipv6/) + ## Issues ### Docker Issues From c37270f61fcfa1663ee8b0c1a8fad54415af96a8 Mon Sep 17 00:00:00 2001 From: Vishwas P <62875653+RealVishy@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:02:02 +1000 Subject: [PATCH 21/32] Update README.md fix the spelling of docker engine --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfa9e46..af9e7e5 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Starting from version 6.0, Document Server is distributed as ONLYOFFICE Docs. It ONLYOFFICE Docs can be used as a part of ONLYOFFICE Workspace or with third-party sync&share solutions (e.g. Nextcloud, ownCloud, Seafile) to enable collaborative editing within their interface. -***Important*** Please update `docker-enginge` to latest version (`20.10.21` as of writing this doc) before using it. We use `ubuntu:22.04` as base image and it older versions of docker have compatibility problems with it +***Important*** Please update `docker-engine` to latest version (`20.10.21` as of writing this doc) before using it. We use `ubuntu:22.04` as base image and it older versions of docker have compatibility problems with it ## Functionality ## * ONLYOFFICE Document Editor From 709bfdd734dce4546a58db0aa4b447ae6e82df5b Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Thu, 21 Sep 2023 19:09:21 +0500 Subject: [PATCH 22/32] fix Bug 63804 - Remove gconf from dependencies since it's deprecated (#663) --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d251e74..5df4ece 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,6 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ bomstrip \ certbot \ curl \ - gconf-service \ htop \ libasound2 \ libboost-regex-dev \ From 012b35d2f8c1a99ec9890e52d181d4d30f5b4d9a Mon Sep 17 00:00:00 2001 From: Dmitry Kireev Date: Fri, 27 Oct 2023 15:08:30 +0300 Subject: [PATCH 23/32] Cancel prepare4shutdown script during cluster installation (#673) * Cancel prepare4shutdown script during cluster installation * Fix line length --- run-document-server.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/run-document-server.sh b/run-document-server.sh index 5883e27..99b580c 100644 --- a/run-document-server.sh +++ b/run-document-server.sh @@ -3,7 +3,10 @@ umask 0022 function clean_exit { - /usr/bin/documentserver-prepare4shutdown.sh + if [ ${ONLYOFFICE_DATA_CONTAINER} == "false" ] && \ + [ ${ONLYOFFICE_DATA_CONTAINER_HOST} == "localhost" ]; then + /usr/bin/documentserver-prepare4shutdown.sh + fi } trap clean_exit SIGTERM From 09ac8b546398bdb16198b9d8e4f0b370daa33807 Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Mon, 20 Nov 2023 12:05:00 +0300 Subject: [PATCH 24/32] Fix build workflow runs names (#679) --- .github/workflows/4testing-build.yml | 9 +++++++++ .github/workflows/stable-build.yml | 1 + 2 files changed, 10 insertions(+) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index def1e2c..684f898 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -1,5 +1,14 @@ ### This workflow setup instance then build and push images ### name: 4testing multiarch-build +run-name: >- + Build #${{ inputs.build }} [ + ${{ inputs.amd64 && 'AMD64' || '-' }} + ${{ inputs.arm64 && 'ARM64' || '-' }} + ] [ + ${{ inputs.community && 'CE' || '-' }} + ${{ inputs.developer && 'DE' || '-' }} + ${{ inputs.enterprise && 'EE' || '-' }} + ] on: workflow_dispatch: diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml index 9a19768..fd493f3 100644 --- a/.github/workflows/stable-build.yml +++ b/.github/workflows/stable-build.yml @@ -1,5 +1,6 @@ ### This workflow setup instance then build and push images ### name: Multi-arch build stable +run-name: ${{ inputs.tag }} (${{ inputs.release_number }}) on: workflow_dispatch: From 6fc2b27fcfacc0b4ce37e87767dcc695a4a2d919 Mon Sep 17 00:00:00 2001 From: Evgeniy Antonyuk Date: Wed, 29 Nov 2023 16:33:41 +0700 Subject: [PATCH 25/32] fix Bug 65188 - Upgrade to a current version of postgresql (#690) --- .travis.yml | 32 ++++++++++++++++---------------- docker-compose.yml | 2 +- tests/postgres.yml | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 084cddc..2e37ca6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,23 +32,23 @@ env: SSL_KEY_PATH: /var/www/onlyoffice/Data/certs/mycert.key + # postgresql 16 + - config: postgres.yml + POSTGRES_VERSION: 16 + + # postgresql 15 + - config: postgres.yml + POSTGRES_VERSION: 15 + + # postgresql 14 + - config: postgres.yml + POSTGRES_VERSION: 14 + + # postgresql 13 + - config: postgres.yml + POSTGRES_VERSION: 13 + # postgresql 12 - - config: postgres.yml - POSTGRES_VERSION: 12 - - # postgresql 11 - - config: postgres.yml - POSTGRES_VERSION: 11 - - # postgresql 10 - - config: postgres.yml - POSTGRES_VERSION: 10 - - # postgresql 9 - - config: postgres.yml - POSTGRES_VERSION: 9 - - # postgresql 9.5 - config: postgres.yml # postgresql custom values diff --git a/docker-compose.yml b/docker-compose.yml index 51fafb2..6d92501 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,7 +41,7 @@ services: onlyoffice-postgresql: container_name: onlyoffice-postgresql - image: postgres:9.5 + image: postgres:12 environment: - POSTGRES_DB=onlyoffice - POSTGRES_USER=onlyoffice diff --git a/tests/postgres.yml b/tests/postgres.yml index 8333b10..bb0b418 100644 --- a/tests/postgres.yml +++ b/tests/postgres.yml @@ -20,7 +20,7 @@ services: onlyoffice-postgresql: container_name: onlyoffice-postgresql - image: postgres:${POSTGRES_VERSION:-9.5} + image: postgres:${POSTGRES_VERSION:-12} environment: - POSTGRES_DB=${POSTGRES_DB:-onlyoffice} - POSTGRES_USER=${POSTGRES_USER:-onlyoffice} From 84a8191de9105d7dd2f7bfb6c8a15aec3d4f9898 Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Tue, 19 Dec 2023 11:24:58 +0300 Subject: [PATCH 26/32] Add DocumentServer zap scanner (#685) * Add DocumentServer zap scanner * Fix zap target url from `http` to `https` --- .github/workflows/zap-ds.yaml | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/zap-ds.yaml diff --git a/.github/workflows/zap-ds.yaml b/.github/workflows/zap-ds.yaml new file mode 100644 index 0000000..9f8a76b --- /dev/null +++ b/.github/workflows/zap-ds.yaml @@ -0,0 +1,70 @@ +--- +name: Scanning DocSpace with ZAP + +run-name: > + ZAP DocumentServer ver: ${{ github.event.inputs.version }} from branch: ${{ github.event.inputs.branch }} + +on: + workflow_dispatch: + inputs: + version: + description: 'Set DocSpace version that will be deployed' + type: string + required: true + branch: + description: 'The branch from which the scan will be performed' + type: string + required: true +jobs: + zap: + name: "Zap scanning DocumentServer" + runs-on: ubuntu-latest + permissions: + issues: write + needs: build + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Run DS + id: run-ds + env: + TAG: ${{ github.event.inputs.version }} + run: | + # Create ssl certs + openssl genrsa -out tls.key 2048 + openssl req -new -key tls.key -out tls.csr -subj "/C=RU/ST=NizhObl/L=NizhNov/O=RK-Tech/OU=TestUnit/CN=TestName" + openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt + openssl dhparam -out dhparam.pem 2048 + sudo mkdir -p /app/onlyoffice/DocumentServer/data/certs + sudo cp ./tls.key /app/onlyoffice/DocumentServer/data/certs/ + sudo cp ./tls.crt /app/onlyoffice/DocumentServer/data/certs/ + sudo cp ./dhparam.pem /app/onlyoffice/DocumentServer/data/certs/ + sudo chmod 400 /app/onlyoffice/DocumentServer/data/certs/tls.key + rm ./tls.key ./tls.crt ./dhparam.pem + + # Run Ds with enabled ssl + export CONTAINER_NAME="documentserver" + sudo docker run -itd \ + --name ${CONTAINER_NAME} \ + -p 80:80 \ + -p 443:443 \ + -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ + onlyoffice/4testing-documentserver:${TAG} + sleep 60 + sudo docker exec ${CONTAINER_NAME} sudo supervisorctl start ds:example + LOCAL_IP=$(hostname -I | awk '{print $1}') + echo "local-ip=${LOCAL_IP}" >> "$GITHUB_OUTPUT" + + # Scan DocumentServer with ZAP. + # NOTE: Full scan get a lot of time. + # If you want make scan more faster (but less accurate) remove `cmd options` field + # -j mean that scanning use AJAX Spider, with this spider the scan takes approximately an hour + # Without any cmd options will be used default spider and the scan takes approximately ~10-15 minutes + - name: ZAP Scan + uses: zaproxy/action-full-scan@v0.8.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + docker_name: 'ghcr.io/zaproxy/zaproxy:stable' + target: 'https://${{ steps.run-ds.outputs.local-ip }}/' + cmd_options: '-j' From 276c5da9f5d0edeffeaca63a9e7dd4d810b92b74 Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Tue, 19 Dec 2023 11:45:12 +0300 Subject: [PATCH 27/32] Add the ability to manually launch the zap scanner (#691) * Add zap scanning for DocumentServer * Set branch name as ref for manual trigger * Use master as default zap action branch * Move zap action to master branch * Fix token variable name * Small cosmetic fix * Modify zap action trigger condition Run zap scanner only when documentserver edition hit community and branch hit in `release/` or `hotfix/` --- .github/workflows/4testing-build.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index 684f898..9f291ff 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -101,6 +101,7 @@ jobs: password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build 4testing + id: build-ds run: | set -eux @@ -145,4 +146,29 @@ jobs: docker buildx bake -f docker-bake.hcl ${{ matrix.image }} --push echo "DONE: Build success" + + ### Set output for Zap scanner + ### NOTE: Output will be used only in release/hotfix branches + + echo "version=${TAG}" >> "$GITHUB_OUTPUT" + echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT" shell: bash + + # Run scanner only when edition is community + # and branch hit release/ or hotfix/ + - name: Trigger zap manualy + if: >- + matrix.edition == '' && + (startsWith(steps.build-ds.outputs.branch, 'release/') || + startsWith(steps.build-ds.outputs.branch, 'hotfix/')) + env: + VERSION: ${{ steps.build-ds.outputs.version }} + BRANCH: ${{ steps.build-ds.outputs.branch }} + GITHUB_TOKEN: ${{ secrets.TOKEN }} + run: | + gh workflow run zap-ds.yaml \ + --repo ${{ github.repository }} \ + -f branch=${BRANCH} \ + -f version=${VERSION} + shell: bash + From cb06c6f6e1f1ca4f13af8d1d00b9c915a995ee58 Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Wed, 20 Dec 2023 11:21:34 +0300 Subject: [PATCH 28/32] Correct startup conditions for zap scanner (#694) --- .github/workflows/4testing-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/4testing-build.yml b/.github/workflows/4testing-build.yml index 9f291ff..138cd30 100644 --- a/.github/workflows/4testing-build.yml +++ b/.github/workflows/4testing-build.yml @@ -158,7 +158,7 @@ jobs: # and branch hit release/ or hotfix/ - name: Trigger zap manualy if: >- - matrix.edition == '' && + matrix.edition == 'community' && (startsWith(steps.build-ds.outputs.branch, 'release/') || startsWith(steps.build-ds.outputs.branch, 'hotfix/')) env: From 016440fd4bf15a672eea3ecb214d235dd08d8f5a Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Wed, 20 Dec 2023 11:22:37 +0300 Subject: [PATCH 29/32] Disable issue creation from zap scanner (#695) --- .github/workflows/zap-ds.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/zap-ds.yaml b/.github/workflows/zap-ds.yaml index 9f8a76b..68f57d1 100644 --- a/.github/workflows/zap-ds.yaml +++ b/.github/workflows/zap-ds.yaml @@ -67,4 +67,5 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} docker_name: 'ghcr.io/zaproxy/zaproxy:stable' target: 'https://${{ steps.run-ds.outputs.local-ip }}/' + allow_issue_writing: false cmd_options: '-j' From 4ab054c502b169449f117817f30b187804e586dc Mon Sep 17 00:00:00 2001 From: Semyon Bezrukov Date: Wed, 20 Dec 2023 21:54:56 +0500 Subject: [PATCH 30/32] Add DOCKER_ORG make variable (#696) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 546e5cc..bb80cde 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,6 @@ BUILD_CHANNEL ?= nightly ONLYOFFICE_VALUE ?= onlyoffice COMPANY_NAME_LOW = $(shell echo $(COMPANY_NAME) | tr A-Z a-z) -COMPANY_NAME_ESC = $(subst -,,$(COMPANY_NAME_LOW)) PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)$(PRODUCT_EDITION) PACKAGE_VERSION ?= $(PRODUCT_VERSION)-$(BUILD_NUMBER)~stretch @@ -20,7 +19,8 @@ else DOCKER_TAG := $(PRODUCT_VERSION).$(BUILD_NUMBER)-$(subst /,-,$(GIT_BRANCH)) endif -DOCKER_IMAGE := $(COMPANY_NAME_ESC)/4testing-$(PRODUCT_NAME)$(PRODUCT_EDITION) +DOCKER_ORG ?= $(COMPANY_NAME_LOW) +DOCKER_IMAGE := $(DOCKER_ORG)/4testing-$(PRODUCT_NAME)$(PRODUCT_EDITION) DOCKER_DUMMY := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)$(PRODUCT_EDITION)__$(DOCKER_TAG).dummy DOCKER_ARCH := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)_$(DOCKER_TAG).tar.gz From 6416c2c32ac7aa89d1e663c0e0b9e8b0f6ab9d7b Mon Sep 17 00:00:00 2001 From: Danil Titarenko <77471369+danilapog@users.noreply.github.com> Date: Thu, 21 Dec 2023 13:22:02 +0300 Subject: [PATCH 31/32] Action small fixes (#697) --- .github/workflows/zap-ds.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/zap-ds.yaml b/.github/workflows/zap-ds.yaml index 68f57d1..022ca1c 100644 --- a/.github/workflows/zap-ds.yaml +++ b/.github/workflows/zap-ds.yaml @@ -1,5 +1,5 @@ --- -name: Scanning DocSpace with ZAP +name: Scanning DocumentServer with ZAP run-name: > ZAP DocumentServer ver: ${{ github.event.inputs.version }} from branch: ${{ github.event.inputs.branch }} @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: version: - description: 'Set DocSpace version that will be deployed' + description: 'Set DocumentServer version that will be deployed' type: string required: true branch: @@ -21,7 +21,6 @@ jobs: runs-on: ubuntu-latest permissions: issues: write - needs: build steps: - name: Checkout code uses: actions/checkout@v3 From 0a42ee66b0c25c40375f471998d0470b68504d29 Mon Sep 17 00:00:00 2001 From: Alexey Golubev Date: Thu, 18 Jan 2024 10:20:37 +0300 Subject: [PATCH 32/32] Fix bug #60688 (#703) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 5df4ece..499e72d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ apt-utils \ bomstrip \ certbot \ + cron \ curl \ htop \ libasound2 \