{"id":2992,"date":"2022-09-25T23:46:21","date_gmt":"2022-09-25T15:46:21","guid":{"rendered":"https:\/\/www.yaoge123.com\/blog\/?p=2992"},"modified":"2023-03-07T16:44:33","modified_gmt":"2023-03-07T08:44:33","slug":"onlyoffice-document-server-%e5%ae%b9%e5%99%a8%e9%83%a8%e7%bd%b2%e5%92%8c%e7%9b%91%e6%8e%a7","status":"publish","type":"post","link":"https:\/\/www.yaoge123.com\/blog\/archives\/2992","title":{"rendered":"OnlyOffice Document Server \u5bb9\u5668\u90e8\u7f72\u548c\u76d1\u63a7"},"content":{"rendered":"\n<p>\u5927\u4f53\u67b6\u6784\u662f\uff1a\u524d\u7aef Nginx \u5378\u8f7dSSL\u540e\u53cd\u4ee3\u7ed9 OnlyOffice\uff0cOnlyOffice \u5c06\u76d1\u63a7\u4fe1\u606f\u5582\u7ed9 statsd-exporter\uff0cPrometheus \u4ece statsd-exporter \u62c9\u53d6\u6570\u636e\uff0c\u6700\u7ec8\u7528 Grafana \u53ef\u89c6\u5316\u5c55\u793a\u3002<\/p>\n<p>\u5148\u6765 docker-compose.yml \u914d\u7f6e\u5982\u4e0b\uff0c\u6709\u4e00\u4e9b\u6ce8\u610f\u4fee\u6539\u7684\u5730\u65b9\uff1a<\/p>\n<ol>\n<li>\u53ef\u4ee5\u628a\u4e00\u4e9bonlyoffice\u63d2\u4ef6\u6302\u8fdb\u5bb9\u5668\u4e2d \/var\/www\/onlyoffice\/documentserver\/sdkjs-plugins\/ \u76ee\u5f55\u4e0b\uff0c\u542f\u52a8\u65f6\u4f1a\u81ea\u52a8\u52a0\u8f7d\u3002<\/li>\n<li>onlyoffice\u81ea\u5e26\u7684\u4e2d\u6587\u5b57\u4f53\u5c11\u7684\u53ef\u601c\uff0c\u4e00\u5b9a\u8981\u6574\u7406\u4e00\u4e9b\u5e38\u7528\u5b57\u4f53\uff08\u7279\u522b\u662fWindows\/Office\u81ea\u5e26\u7684\u5b57\u4f53\uff09\uff0c\u5c06ttf\/otf\u5b57\u4f53\u6587\u4ef6\u6302\u8fdb\u5bb9\u5668\u4e2d \/usr\/share\/fonts\/ \u76ee\u5f55\u4e0b\uff0c\u542f\u52a8\u65f6\u4f1a\u81ea\u52a8\u52a0\u8f7d\u3002<\/li>\n<li>onlyoffice\u7684\u6301\u4e45\u5316\u914d\u7f6e\u6302\u8fdb\u5bb9\u5668 \/etc\/onlyoffice\/documentserver\/local-production-linux.json\uff0c\u8fd9\u6837\u5347\u7ea7\u91cd\u542f\u7684\u65f6\u5019\u914d\u7f6e\u624d\u80fd\u4fdd\u7559\u4e0b\u6765\uff1b\u5bb9\u5668\u91cc\u9762\u7684\u914d\u7f6e\u6587\u4ef6\u6539\u4e86\u4e5f\u6ca1\u7528\uff0c\u91cd\u5efa\u5c31\u5168\u4e22\u4e86\u3002<\/li>\n<li>JWT_SECRET \u914d\u7f6e\u4e00\u4e2a\u8db3\u591f\u5f3a\u7684Token\uff0c\u548c\u5e94\u7528\u8f6f\u4ef6\u914d\u7f6e\u8981\u4e00\u6837\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  onlyoffice:\n    image: onlyoffice\/documentserver-ee\n    container_name: onlyoffice\n    volumes:\n      - .\/onlyoffice\/logs:\/var\/log\/onlyoffice\n      - .\/onlyoffice\/data:\/var\/www\/onlyoffice\/Data\n      - .\/onlyoffice\/lib:\/var\/lib\/onlyoffice\n      - .\/onlyoffice\/db:\/var\/lib\/postgresql\n      - .\/onlyoffice\/fonts\/dejavu:\/usr\/share\/fonts\/dejavu\n      - .\/onlyoffice\/fonts\/founder:\/usr\/share\/fonts\/founder\n      - .\/onlyoffice\/fonts\/liberation:\/usr\/share\/fonts\/liberation\n      - .\/onlyoffice\/fonts\/libertinus:\/usr\/share\/fonts\/libertinus\n      - .\/onlyoffice\/fonts\/noto-cjk:\/usr\/share\/fonts\/noto-cjk\n      - .\/onlyoffice\/fonts\/noto-emoji:\/usr\/share\/fonts\/noto-emoji\n      - .\/onlyoffice\/fonts\/sarasa-gothic:\/usr\/share\/fonts\/sarasa-gothic\n      - .\/onlyoffice\/fonts\/source-code-pro:\/usr\/share\/fonts\/source-code-pro\n      - .\/onlyoffice\/fonts\/source-han-sans:\/usr\/share\/fonts\/source-han-sans\n      - .\/onlyoffice\/fonts\/source-han-serif:\/usr\/share\/fonts\/source-han-serif\n      - .\/onlyoffice\/fonts\/source-sans:\/usr\/share\/fonts\/source-sans\n      - .\/onlyoffice\/fonts\/source-serif:\/usr\/share\/fonts\/source-serif\n      - .\/onlyoffice\/fonts\/windows:\/usr\/share\/fonts\/windows\n      - .\/onlyoffice\/local-production-linux.json:\/etc\/onlyoffice\/documentserver\/local-production-linux.json\n    environment:\n      - TZ=Asia\/Shanghai\n      - JWT_ENABLED=true\n      - JWT_SECRET=yaoge123\n  statsd-exporter:\n    image: prom\/statsd-exporter\n    container_name: statsd-exporter\n    ports:\n      - 9102:9102\n    depends_on:\n      - onlyoffice \n  nginx:\n    image: nginx:alpine\n    container_name: nginx\n    ports:\n      - 80:80\n      - 443:443\n    volumes:\n      - .\/nginx\/conf.d\/:\/etc\/nginx\/conf.d\/:ro\n      - .\/nginx\/ssl\/:\/etc\/nginx\/ssl\/:ro\n    environment:\n      - TZ=Asia\/Shanghai\n  nginx-exporter:\n    image: nginx\/nginx-prometheus-exporter\n    container_name: nginx-prometheus-exporter\n    ports:\n      - 9113:9113\n    command:\n      - -nginx.scrape-uri\n      - http:\/\/nginx:8080\/stub_status\n    depends_on:\n      - nginx\n\u2026\u2026<\/code><\/pre>\n\n\n\n<p>\u5728 local-production-linux.json \u5bf9 OnlyOffice \u8fdb\u884c\u6301\u4e45\u5316\u914d\u7f6e\uff0c\u4e3b\u8981\u662f\u4e09\u90e8\u5206\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5f00\u542fstatsd\u76d1\u63a7\u63a8\u9001\uff0c\u586b\u5199statsd-exporter\u7684\u4e3b\u673a\u540d\u548c\u7aef\u53e3<\/li>\n\n\n\n<li>\u5f00\u542f\u81ea\u52a8\u4fdd\u5b58<\/li>\n\n\n\n<li>\u6253\u5f00\u6587\u4ef6\u5c3a\u5bf8\u6269\u5927\u81f31GB\uff08\u9ed8\u8ba4\u662f100MB\uff09<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n        \"statsd\": {\n                \"useMetrics\": true,\n                \"host\": \"statsd-exporter\",\n                \"port\": \"9125\",\n                \"prefix\": \"ds.\"\n        },\n\t\"services\": {\n\t\t\"CoAuthoring\": {\n\t\t\t\"autoAssembly\": {\n\t\t\t\t\"enable\": true,\n\t\t\t\t\"interval\": \"5m\"\n\t\t\t}\n\t\t}\n\t},\n\t\"FileConverter\": {\n\t\t\"converter\": {\n\t\t\t\"maxDownloadBytes\": 1073741824,\n\t\t\t\"downloadAttemptMaxCount\": 3\n\t\t}\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p>Nginx \u914d\u7f6e\u53cd\u4ee3\u5378\u8f7dSSL<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>map $http_host $this_host {\n    \"\" $host;\n    default $http_host;\n}\n\nmap $http_x_forwarded_proto $the_scheme {\n     default $http_x_forwarded_proto;\n     \"\" $scheme;\n}\n\nmap $http_x_forwarded_host $the_host {\n    default $http_x_forwarded_host;\n    \"\" $this_host;\n}\n\nmap $http_upgrade $proxy_connection {\n    default upgrade;\n    \"\" close;\n}\n\nserver {\n\tlisten 80;\n\tlisten &#91;::]:80;\n\tserver_name onlyoffice.nju.edu.cn;\n\trewrite ^ https:\/\/$http_host$request_uri? permanent;\n\tserver_tokens off;\n}\n\nserver {\n        listen 443 ssl http2;\n        listen &#91;::]:443 ssl http2;\n\tserver_name onlyoffice.nju.edu.cn;\n\tserver_tokens off;\n\n        include ssl\/nju_edu_cn.conf;\n\n\tadd_header X-Content-Type-Options nosniff;\n\n\tlocation \/ {\n\t\tproxy_pass http:\/\/onlyoffice;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection $proxy_connection;\n\t\tproxy_set_header X-Forwarded-Host $the_host;\n\t\tproxy_set_header X-Forwarded-Proto $the_scheme;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t}\n}\n\nserver {\n\tlisten 8080;\n\tlisten &#91;::]:8080;\n\tserver_name localhost;\n\n\tlocation \/stub_status {\n\t\tstub_status on;\n\t\taccess_log off;\n\t}\n}\n\n<\/code><\/pre>\n\n\n\n<p>\u5728 Consul \u4e2d\u6ce8\u518c OnlyOffice \u548c Nginx \u7684\u76d1\u63a7<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;yaoge123 ~]$ curl -X PUT -d '{\"id\": \"onlyoffice.nju.edu.cn_statsd-exporter\",\"name\": \"statsd_exporter\",\"address\": \"onlyoffice.nju.edu.cn\",\"port\": 9102,\"tags\": &#91;\"prometheus\",\"vm\"],\"checks\": &#91;{\"http\": \"http:\/\/onlyoffice.nju.edu.cn:9102\/metrics\",\"interval\": \"30s\"}]}' http:\/\/consul:8500\/v1\/agent\/service\/register\n\n&#91;yaoge123 ~]$ curl -X PUT -d '{\"id\": \"onlyoffice.nju.edu.cn_nginx-exporter\",\"name\": \"nginx_exporter\",\"address\": \"onlyoffice.nju.edu.cn\",\"port\": 9113,\"tags\": &#91;\"prometheus\",\"vm\"],\"checks\": &#91;{\"http\": \"http:\/\/onlyoffice.nju.edu.cn:9113\/metrics\",\"interval\": \"30s\"}]}' http:\/\/consul:8500\/v1\/agent\/service\/register<\/code><\/pre>\n\n\n\n<p>\u5728Grafana\u4e2d\u5bfc\u5165\u57fa\u4e8e\u5b98\u65b9Dashboard\u7684\u4fee\u6539\u7248<\/p>\n\n\n\n<p><a href=\"https:\/\/grafana.com\/grafana\/dashboards\/17048\">https:\/\/grafana.com\/grafana\/dashboards\/17048<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5927\u4f53\u67b6\u6784\u662f\uff1a\u524d\u7aef Nginx \u5378\u8f7dSSL\u540e\u53cd\u4ee3\u7ed9 OnlyOffice\uff0cOnlyOffice \u5c06\u76d1\u63a7\u4fe1\u606f\u5582\u7ed9  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[8],"tags":[],"class_list":["post-2992","post","type-post","status-publish","format-standard","hentry","category-network"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paOwEq-Mg","_links":{"self":[{"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/posts\/2992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/comments?post=2992"}],"version-history":[{"count":7,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/posts\/2992\/revisions"}],"predecessor-version":[{"id":3042,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/posts\/2992\/revisions\/3042"}],"wp:attachment":[{"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/media?parent=2992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/categories?post=2992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yaoge123.com\/blog\/wp-json\/wp\/v2\/tags?post=2992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}