当前位置: 首页 > article >正文

docker-compose部署onlyoffice8.3.0并支持ssl,且支持通过nginx代理,关闭JWT配置

编写docker-compose文件


mkdir -p /data/onlyoffice && echo "version: '3'

services:
  onlyoffice:
    container_name: OnlyOffice
    image: onlyoffice/documentserver:8.3.0
    restart: always
    ports:
      - 8088:80
      - 64431:443
    environment:
      TZ: Asia/Shanghai
      JWT_ENABLED: 'false'
    volumes:
      - ./app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice
      - ./app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data
      - ./app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice
      - ./app/onlyoffice/DocumentServer/db:/var/lib/postgresql
      - ./certs:/etc/onlyoffice/certs
      - ./certs/ds.conf:/etc/onlyoffice/documentserver/nginx/ds.conf
      - ./default.json:/etc/onlyoffice/documentserver/default.json" > /data/onlyoffice/docker-compose.yml && echo '{
        "statsd": {
                "useMetrics": false,
                "host": "localhost",
                "port": "8125",
                "prefix": "ds."
        },
        "log": {
                "filePath": "",
                "options": {
                        "replaceConsole": true
                }
        },
        "queue": {
                "type": "rabbitmq",
                "visibilityTimeout": 300,
                "retentionPeriod": 900
        },
        "email": {
                "smtpServerConfiguration": {
                        "host": "localhost",
                        "port": 587,
                        "auth": {
                                "user": "",
                                "pass": ""
                        }
                },
                "connectionConfiguration": {
                        "disableFileAccess": false,
                        "disableUrlAccess": false
                },
                "contactDefaults": {
                        "from": "from@example.com",
                        "to": "to@example.com"
                }
        },
        "notification": {
                "rules": {
                        "licenseExpirationWarning": {
                                "enable": false,
                                "transportType": [
                                        "email"
                                ],
                                "template": {
                                        "title": "%s Docs license expiration warning",
                                        "body": "Attention! Your license is about to expire on %s.\nUpon reaching this date, you will no longer be entitled to receive personal technical support and install new Docs versions released after this date."
                                },
                                "policies": {
                                        "repeatInterval": "1d"
                                }
                        },
                        "licenseExpirationError": {
                                "enable": false,
                                "transportType": [
                                        "email"
                                ],
                                "template": {
                                        "title": "%s Docs license expiration warning",
                                        "body": "Attention! Your license expired on %s.\nYou are no longer entitled to receive personal technical support and install new Docs versions released after this date.\nPlease contact sales@onlyoffice.com to discuss license renewal."
                                },
                                "policies": {
                                        "repeatInterval": "1d"
                                }
                        },
                        "licenseLimitEdit": {
                                "enable": false,
                                "transportType": [
                                        "email"
                                ],
                                "template": {
                                        "title": "%s Docs license connection limit warning",
                                        "body": "Attention! You have reached %s%% of the %s limit set by your license."
                                },
                                "policies": {
                                        "repeatInterval": "1h"
                                }
                        },
                        "licenseLimitLiveViewer": {
                                "enable": false,
                                "transportType": [
                                        "email"
                                ],
                                "template": {
                                        "title": "%s Docs license connection limit warning",
                                        "body": "Attention! You have reached %s%% of the live viewer %s limit set by your license."
                                },
                                "policies": {
                                        "repeatInterval": "1h"
                                }
                        }
                }
        },
        "storage": {
                "name": "storage-fs",
                "fs": {
                        "folderPath": "",
                        "urlExpires": 900,
                        "secretString": "verysecretstring"
                },
                "region": "",
                "endpoint": "http://localhost/s3",
                "bucketName": "cache",
                "storageFolderName": "files",
                "cacheFolderName": "data",
                "urlExpires": 604800,
                "accessKeyId": "AKID",
                "secretAccessKey": "SECRET",
                "sslEnabled": true,
                "s3ForcePathStyle": true,
                "externalHost": ""
        },
        "persistentStorage": {
        },
        "rabbitmq": {
                "url": "amqp://localhost:5672",
                "socketOptions": {},
                "exchangepubsub": {
                        "name": "ds.pubsub",
                        "options": {
                                "durable": true
                        }
                },
                "queuepubsub": {
                        "name": "",
                        "options": {
                                "autoDelete": true,
                                "exclusive": true,
                                "arguments": {
                                        "x-queue-type": "classic"
                                }
                        }
                },
                "queueconverttask": {
                        "name": "ds.converttask6",
                        "options": {
                                "durable": true,
                                "maxPriority": 6,
                                "arguments": {
                                        "x-queue-type": "classic"
                                }
                        }
                },
                "queueconvertresponse": {
                        "name": "ds.convertresponse",
                        "options": {
                                "durable": true,
                                "arguments": {
                                        "x-queue-type": "classic"
                                }
                        }
                },
                "exchangeconvertdead": {
                        "name": "ds.exchangeconvertdead",
                        "options": {
                                "durable": true
                        }
                },
                "queueconvertdead": {
                        "name": "ds.convertdead",
                        "options": {
                                "durable": true,
                                "arguments": {
                                        "x-queue-type": "classic"
                                }
                        }
                },
                "queuedelayed": {
                        "name": "ds.delayed",
                        "options": {
                                "durable": true,
                                "arguments": {
                                        "x-queue-type": "classic"
                                }
                        }
                }
        },
        "activemq": {
                "connectOptions": {
                        "port": 5672,
                        "host": "localhost",
                        "reconnect": false
                },
                "queueconverttask": "ds.converttask",
                "queueconvertresponse": "ds.convertresponse",
                "queueconvertdead": "ActiveMQ.DLQ",
                "queuedelayed": "ds.delayed",
                "topicpubsub": "ds.pubsub"
        },
        "dnscache": {
                "enable" : true,
                "ttl" : 300,
                "cachesize" : 1000
        },
        "openpgpjs": {
                "config": {
                },
                "encrypt": {
                        "passwords": ["verysecretstring"]
                },
                "decrypt": {
                        "passwords": ["verysecretstring"]
                }
        },
        "aesEncrypt": {
                "config": {
                        "keyByteLength": 32,
                        "saltByteLength": 64,
                        "initializationVectorByteLength": 16,
                        "iterationsByteLength": 5
                },
                "secret": "verysecretstring"
        },
        "bottleneck": {
                "getChanges": {
                }
        },
        "win-ca": {
                "inject": "+"
        },
        "wopi": {
                "enable": false,
                "host" : "",
                "htmlTemplate" : "../../web-apps/apps/api/wopi",
                "wopiZone" : "external-http",
                "favIconUrlWord" : "/web-apps/apps/documenteditor/main/resources/img/favicon.ico",
                "favIconUrlCell" : "/web-apps/apps/spreadsheeteditor/main/resources/img/favicon.ico",
                "favIconUrlSlide" : "/web-apps/apps/presentationeditor/main/resources/img/favicon.ico",
                "favIconUrlPdf" : "/web-apps/apps/pdfeditor/main/resources/img/favicon.ico",
                "favIconUrlDiagram" : "/web-apps/apps/visioeditor/main/resources/img/favicon.ico",
                "fileInfoBlockList" : ["FileUrl"],
                "pdfView": ["djvu", "xps", "oxps"],
                "pdfEdit": ["pdf"],
                "forms": ["pdf"],
                "wordView": ["doc", "dotm", "dot", "fodt", "ott", "rtf", "mht", "mhtml", "html", "htm", "xml", "epub", "fb2", "sxw", "stw", "wps", "wpt", "pages", "docxf", "oform"],
                "wordEdit": ["docx", "dotx", "docm", "odt", "txt"],
                "cellView": ["xls", "xlsb", "xltm", "xlt", "fods", "ots", "sxc", "xml", "et", "ett", "numbers"],
                "cellEdit": ["xlsx", "xltx", "xlsm", "ods", "csv"],
                "slideView": ["ppt", "ppsx", "ppsm", "pps", "potm", "pot", "fodp", "otp", "sxi", "dps", "dpt", "key"],
                "slideEdit": ["pptx", "potx", "pptm", "odp"],
                "diagramView": [],
                "diagramEdit": [],
                "publicKey": "",
                "modulus": "",
                "exponent": 65537,
                "privateKey": "",
                "publicKeyOld": "",
                "modulusOld": "",
                "exponentOld": 65537,
                "privateKeyOld": "",
                "refreshLockInterval": "10m",
                "dummy" : {
                        "enable": false,
                        "sampleFilePath": ""
                }
        },
        "tenants": {
                "baseDir": "",
                "baseDomain": "",
                "filenameConfig": "config.json",
                "filenameSecret": "secret.key",
                "filenameLicense": "license.lic",
                "defaultTenant": "localhost",
                "cache" : {
                        "stdTTL": 300,
                        "checkperiod": 60,
                        "useClones": false
                }
        },
        "externalRequest": {
                "directIfIn" : {
                        "allowList": [],
                        "jwtToken": true
                },
                "action": {
                        "allow": true,
                        "blockPrivateIP": true,
                        "proxyUrl": "",
                        "proxyUser": {
                                "username": "",
                                "password": ""
                        },
                        "proxyHeaders": {
                        }
                }
        },
        "services": {
                "CoAuthoring": {
                        "server": {
                                "port": 8000,
                                "workerpercpu": 1,
                                "mode": "development",
                                "limits_tempfile_upload": 104857600,
                                "limits_image_size": 26214400,
                                "limits_image_download_timeout": {
                                        "connectionAndInactivity": "2m",
                                        "wholeCycle": "2m"
                                },
                                "callbackRequestTimeout": {
                                        "connectionAndInactivity": "10m",
                                        "wholeCycle": "10m"
                                },
                                "healthcheckfilepath": "../public/healthcheck.docx",
                                "savetimeoutdelay": 5000,
                                "edit_singleton": false,
                                "forgottenfiles": "forgotten",
                                "forgottenfilesname": "output",
                                "maxRequestChanges": 20000,
                                "openProtectedFile": true,
                                "isAnonymousSupport": true,
                                "editorDataStorage": "editorDataMemory",
                                "editorStatStorage": "",
                                "assemblyFormatAsOrigin": true,
                                "newFileTemplate" : "../../document-templates/new",
                                "downloadFileAllowExt": ["pdf", "xlsx"],
                                "tokenRequiredParams": true,
                                "forceSaveUsingButtonWithoutChanges": false
                        },
                        "requestDefaults": {
                                "headers": {
                                        "User-Agent": "Node.js/6.13",
                                        "Connection": "Keep-Alive"
                                },
                                "gzip": true,
                                "rejectUnauthorized": true
                        },
                        "autoAssembly": {
                                "enable": false,
                                "interval": "5m",
                                "step": "1m"
                        },
                        "utils": {
                                "utils_common_fontdir": "null",
                                "utils_fonts_search_patterns": "*.ttf;*.ttc;*.otf",
                                "limits_image_types_upload": "jpg;jpeg;jpe;png;gif;bmp;svg;tiff;tif"
                        },
                        "sql": {
                                "type": "postgres",
                                "tableChanges": "doc_changes",
                                "tableResult": "task_result",
                                "dbHost": "localhost",
                                "dbPort": 5432,
                                "dbName": "onlyoffice",
                                "dbUser": "onlyoffice",
                                "dbPass": "onlyoffice",
                                "charset": "utf8",
                                "connectionlimit": 10,
                                "max_allowed_packet": 1048575,
                                "pgPoolExtraOptions": {
                                        "idleTimeoutMillis": 30000,
                                        "maxLifetimeSeconds ": 60000,
                                        "statement_timeout ": 60000,
                                        "query_timeout  ": 60000,
                                        "connectionTimeoutMillis": 60000
                                },
                                "damengExtraOptions": {
                                        "columnNameUpperCase": false,
                                        "columnNameCase": "lower",
                                        "connectTimeout": 60000,
                                        "loginEncrypt": false,
                                        "localTimezone": 0,
                                        "poolTimeout": 60,
                                        "socketTimeout": 60000,
                                        "queueTimeout": 60000
                                },
                                "oracleExtraOptions": {
                                        "connectTimeout": 60
                                },
                                "msSqlExtraOptions": {
                                        "options": {
                                                "encrypt": false,
                                                "trustServerCertificate": true
                                        },
                                        "pool": {
                                                "idleTimeoutMillis": 30000
                                        }
                                },
                                "mysqlExtraOptions": {
                                        "connectTimeout": 60000,
                                        "queryTimeout": 60000
                                }
                        },
                        "redis": {
                                "name": "redis",
                                "prefix": "ds:",
                                "host": "127.0.0.1",
                                "port": 6379,
                                "options": {},
                                "optionsCluster": {},
                                "iooptions": {
                                        "lazyConnect": true
                                },
                                "iooptionsClusterNodes": [
                                ],
                                "iooptionsClusterOptions": {
                                        "lazyConnect": true
                                }
                        },
                        "pubsub": {
                                "maxChanges": 1000
                        },
                        "expire": {
                                "saveLock": 60,
                                "presence": 300,
                                "locks": 604800,
                                "changeindex": 86400,
                                "lockDoc": 30,
                                "message": 86400,
                                "lastsave": 604800,
                                "forcesave": 604800,
                                "forcesaveLock": 5000,
                                "saved": 3600,
                                "documentsCron": "0 */2 * * * *",
                                "files": 86400,
                                "filesCron": "00 00 */1 * * *",
                                "filesremovedatonce": 100,
                                "sessionidle": "1h",
                                "sessionabsolute": "30d",
                                "sessionclosecommand": "2m",
                                "pemStdTTL": "1h",
                                "pemCheckPeriod": "10m",
                                "updateVersionStatus": "5m",
                                "monthUniqueUsers": "1y"
                        },
                        "ipfilter": {
                                "rules": [{"address": "*", "allowed": true}],
                                "useforrequest": false,
                                "errorcode": 403
                        },
                        "request-filtering-agent" : {
                                "allowPrivateIPAddress": true,
                                "allowMetaIPAddress": true
                        },
                        "secret": {
                                "browser": {"string": "secret", "file": ""},
                                "inbox": {"string": "secret", "file": ""},
                                "outbox": {"string": "secret", "file": ""},
                                "session": {"string": "secret", "file": ""}
                        },
                        "token": {
                                "enable": {
                                        "browser": false,
                                        "request": {
                                                "inbox": false,
                                                "outbox": false
                                        }
                                },
                                "browser": {
                                        "secretFromInbox": true
                                },
                                "inbox": {
                                        "header": "Authorization",
                                        "prefix": "Bearer ",
                                        "inBody": false
                                },
                                "outbox": {
                                        "header": "Authorization",
                                        "prefix": "Bearer ",
                                        "algorithm": "HS256",
                                        "expires": "5m",
                                        "inBody": false,
                                        "urlExclusionRegex": ""
                                },
                                "session": {
                                        "algorithm": "HS256",
                                        "expires": "30d"
                                },
                                "verifyOptions": {
                                        "clockTolerance": 60
                                }
                        },
                        "plugins": {
                                "uri": "/sdkjs-plugins",
                                "autostart": []
                        },
                        "themes": {
                                "uri": "/web-apps/apps/common/main/resources/themes"
                        },
                        "editor":{
                                "spellcheckerUrl": "",
                                "reconnection":{
                                        "attempts": 50,
                                        "delay": "2s"
                                },
                                "binaryChanges": false,
                                "websocketMaxPayloadSize": "1.5MB",
                                "maxChangesSize": "150MB"
                        },
                        "sockjs": {
                                "sockjs_url": "",
                                "disable_cors": true,
                                "websocket": true
                        },
                        "socketio": {
                                "connection": {
                                        "path": "/doc/",
                                        "serveClient": false,
                                        "pingTimeout": 20000,
                                        "pingInterval": 25000,
                                        "maxHttpBufferSize": 1e8
                                }
                        },
                        "callbackBackoffOptions": {
                                "retries": 0,
                                "timeout":{
                                        "factor": 2,
                                        "minTimeout": 1000,
                                        "maxTimeout": 2147483647,
                                        "randomize": false
                                },
                                "httpStatus": "429,500-599"
                        }
                }
        },
        "license" : {
                "license_file": "",
                "warning_limit_percents": 70,
                "packageType": 0,
                "warning_license_expiration": "30d"
        },
        "FileConverter": {
                "converter": {
                        "maxDownloadBytes": 104857600,
                        "downloadTimeout": {
                                "connectionAndInactivity": "2m",
                                "wholeCycle": "2m"
                        },
                        "downloadAttemptMaxCount": 3,
                        "downloadAttemptDelay": 1000,
                        "maxprocesscount": 1,
                        "fontDir": "null",
                        "presentationThemesDir": "null",
                        "x2tPath": "null",
                        "docbuilderPath": "null",
                        "args": "",
                        "spawnOptions": {},
                        "errorfiles": "",
                        "streamWriterBufferSize": 8388608,
                        "maxRedeliveredCount": 2,
                        "inputLimits": [
                                {
                                "type": "docx;dotx;docm;dotm",
                                "zip": {
                                        "uncompressed": "50MB",
                                        "template": "*.xml"
                                }
                                },
                                {
                                "type": "xlsx;xltx;xlsm;xltm",
                                "zip": {
                                        "uncompressed": "300MB",
                                        "template": "*.xml"
                                }
                                },
                                {
                                "type": "pptx;ppsx;potx;pptm;ppsm;potm",
                                "zip": {
                                        "uncompressed": "50MB",
                                        "template": "*.xml"
                                }
                                }
                        ]
                }
        }
}
' > /data/onlyoffice/default.json && mkdir -p /data/onlyoffice/certs && cd /data/onlyoffice/certs && echo 'include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_tokens off;

  set $secure_link_secret ;
  include /etc/nginx/includes/ds-*.conf;
}
server {

        listen 443 ssl;
        listen [::]:443;
        server_name localhost;


        ssl_certificate /etc/onlyoffice/certs/onlyoffice.crt;

        ssl_certificate_key /etc/onlyoffice/certs/onlyoffice.key;

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

  server_tokens off;


  set $secure_link_secret ;
  include /etc/nginx/includes/ds-*.conf;
}' > ds.conf && echo '-----BEGIN CERTIFICATE-----
MIIFATCCA+mgAwIBAgISBCJAwtsL2l5x1rHhX7tj3dytMA0GCSqGSIb3DQEBCwUA
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
EwNSMTAwHhcNMjUwMTE2MDUxMDM5WhcNMjUwNDE2MDUxMDM4WjAZMRcwFQYDVQQD
Ew5scDIwNzY2MzQzNi5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ANZ912eyDY9WHTQSlFyGQwhPCGwZQxsjyFv0fH8X0g/J8GGTdq0R/Qsa8wsdem7/
xQju3U1NhnWqWLPl4jG2EYjGqbp60vDlXIBOmdQ4LoGPHNT7x0oVH/PGKYcqcu2Q
dohKgNJ54v+CCEDuVeyyP6bfgsVdO2fgHovPsQXgia4m1XoxOdluDN16LCO7CTv4
eJ/eKjEcO66yNOSAw7wExdnhi3RYmy/KEdp1ItM3fGgSeY/K5oNls4Y0A+5N9N8R
6XaPacfdH1Dp2pSDTItUIADaI8yWloN6rlOXnuLB5BfLg1ByN8Eq7POmJWN+WQvg
oFRjCgIcPoOowcY4oW6Jy/8CAwEAAaOCAicwggIjMA4GA1UdDwEB/wQEAwIFoDAd
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNV
HQ4EFgQUaqd4GOj2VxUBxkYshYNSqNhe3pwwHwYDVR0jBBgwFoAUu7zDR6XkvKnG
w6RyDBCNojXhyOgwVwYIKwYBBQUHAQEESzBJMCIGCCsGAQUFBzABhhZodHRwOi8v
cjEwLm8ubGVuY3Iub3JnMCMGCCsGAQUFBzAChhdodHRwOi8vcjEwLmkubGVuY3Iu
b3JnLzAvBgNVHREEKDAmghRpbm5lci5scDIwNzY2MzQzNi5jboIObHAyMDc2NjM0
MzYuY24wEwYDVR0gBAwwCjAIBgZngQwBAgEwggEDBgorBgEEAdZ5AgQCBIH0BIHx
AO8AdQDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAAAZRtutu9AAAE
AwBGMEQCICGcbaLk28GCrCkA6XsasJgUp/L1Q+DgYxVJ3mOGUk/bAiAx23T2HavM
+Pa9OJi6hEksz8ASJ68juphzpZzs+/Q87gB2ABNK3xq1mEIJeAxv70x6kaQWtyNJ
zlhXat+u2qfCq+AiAAABlG263FIAAAQDAEcwRQIgfBTRf/3Ze4gtcI4UEdP9sm8T
ALJFjwTD0isvqCyvqoUCIQD/i3a3tuDoDhDkq7dnEO2JYf8UcDmzSyvp7AsE36V1
ZDANBgkqhkiG9w0BAQsFAAOCAQEAvP3SQRQu7sl9ofnBUX8lK/tjDt8Q1tVblr2N
qxYTZGV6lGIEX5up/lnf06swyVor0XKxenkTLJFJJbLgJY4xL5I+neom4knWr5dW
BiggsoEuhaRTYIbVcVACLz2DW7ek+1nn4xpMEXT9lFNsew982plInINalj9li/Kg
3PEg6KoKCf9hgNkEN3tMkWHUPzu5x0GQPYerR0U61bDhyHX9DKQYqvrPCMCBSjf7
2aH2TQQSgpAgVflBAFRPVuBoO4+iLf/O6l+cLGjvsvry+xdJ7RE2gsqu1UlsM2pv
isOalHzm3CiinJpwEHBHUpDPA7WfAujt8SiCK3rS/VIBOUXWsA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
bmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL
YlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a
/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4
FpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR
mudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3
DZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG
MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/
AgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5
tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG
Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD
VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B
AQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo
zwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd
u6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9
1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0
GaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh
1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ
QjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N
4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz
rsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei
RmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx
KPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=
-----END CERTIFICATE-----' > onlyoffice.crt && echo '-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDWfddnsg2PVh00
EpRchkMITwhsGUMbI8hb9Hx/F9IPyfBhk3atEf0LGvMLHXpu/8UI7t1NTYZ1qliz
5eIxthGIxqm6etLw5VyATpnUOC6BjxzU+8dKFR/zximHKnLtkHaISoDSeeL/gghA
7lXssj+m34LFXTtn4B6Lz7EF4ImuJtV6MTnZbgzdeiwjuwk7+Hif3ioxHDuusjTk
gMO8BMXZ4Yt0WJsvyhHadSLTN3xoEnmPyuaDZbOGNAPuTfTfEel2j2nH3R9Q6dqU
g0yLVCAA2iPMlpaDeq5Tl57iweQXy4NQcjfBKuzzpiVjflkL4KBUYwoCHD6DqMHG
OKFuicv/AgMBAAECggEAURHWUTS8qFEJj614EvKSMnlAuy7fLMpdB9iEF7tmo54V
c6P7ZpXWeRSSCUD2ji6xB9vUnEuxhxbAGRrJ4DUrMnG4JCoZQYDHch2DSfGELmbr
pFqXrBoI7igXeSWjs8P28TOLtkHoeN9qhDQxGNoUcdun/zXqZqwQj5KMG6cPEtmc
MTn2lbqihLkw12Ujjvh9x1blOKfWf6g/+GPLMFGSMgBxNSsBNUcdOUnpBLwo6c/v
tsZtpvVf5Eds9dT7ak2FszM2l9J8MAsbhEmMZZ3gEL5014plu6+ScDIhm68nmeKy
M2DDGCBgV74HV+NIkDqOx4O45hhO1MX5z6+b2YfVGQKBgQD6Kv/vCcXjvNgRy3Rr
SP3hALlXfddNHHEpe5xN68obLmOjI6CF5Tng2iNtgQshocbBBZLdIRdyU5RCbfnA
Dah3qNKuNRPBHQdRen3hC30TcD9zm/Il9plZDa8/v4mct6IoNl1MP4PKX2XcpYwc
pcIkZlD2Kv2NL0rJ/mf/Ru1XpwKBgQDbfezcn7ixoxqKKYAa7sxDfLjEIfsiWApT
RESgGkABJr/Q4+KvTxjQMgtF35VgRJLxgOkurGQVXwJRLI4W4qFkcYu/Xv9rVTTn
ZJjRtFP69p1JXPtNKwLOdQDE5Ysz8MOXtxRE5iuPsYf4mzGkEWHXcHndynJ7w1hN
sqUSUVNz6QKBgQDJotTsfy0QVUq2dQ1d19RBgcrhmR1rGqyfKfGe4Jji9a37dSDS
KyNOd6Qsg+FL90/yjiKEt0JltLYAIRI3WQrbf6hoH4HPmi0m4BsLw63JeCS8cwpm
zO9m1t/U+vXY6i36SW9DoMIB4IiCorBe+r+ThSBmedop7N9UFgkOucVdawKBgQDH
zx6syQnNS/mBBL6FxhVU6lkY0wZXAWaE3oTKapsRcUD03D8j8BFalfQFK8BD3qkW
CJA92NlTSyZE1xaSZsUdNvBMyiIih3KdosorPMmmkJImkuqCGUF4yLJmi7/pDKhB
mHxvLElDig2Jl13dSaWUBeQqr30AhZgBQztaLYaW4QKBgQDMz2HWZ/Iqny9o9cad
jjiNsdvtxrdGxbI9F4CEfRw1TQ2+OtH8GxnbExeGayZMDWZ6yEAYd/DppcnI/IyW
YTtWw8js44D+AAMH2rrR+cst3kSrORVdYryWoCWDMw03MUpDwzWuLmZAqBGnLw4C
m2Kt/wvsjQiG97ITT0i8zRl0Yg==
-----END PRIVATE KEY-----' > onlyoffice.key && cd ..
docker-compose up -d

进入容器后的操作

docker exec -it OnlyOffice bash
获取到对应的秘钥字符串
cat /etc/onlyoffice/documentserver/local.json
## 将获取到的下面的secretString中的字符串记录好,后面的操作会用到
"storage": {
    "fs": {
      "secretString": "xxxxx"
    }
  }
赋值上面的数据(xxxxx替换为对应的字符)
sed -i 's#set $secure_link_secret ;#set $secure_link_secret xxxxx;#g' /etc/nginx/conf.d/ds.conf && nginx

nginx代理

此时直接通过http://ip:8088或通过https://ip:64431都可以成功访问,下面是通过nginx做https代理的方法,http的代理同样的操作

    location /web-apps/apps/api {
        proxy_pass https://localhost:64431;
        proxy_set_header      Host  $host;
        proxy_set_header      X-Real-IP  $remote_addr;
        proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
    location /8.3.0 {
        proxy_pass https://localhost:64431;
        proxy_set_header      Host  $host;
        proxy_set_header      X-Real-IP  $remote_addr;
        proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    location /cache/files/data/2 {
        proxy_pass https://localhost:64431;
        proxy_set_header      Host  $host;
        proxy_set_header      X-Real-IP  $remote_addr;
        proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

我的服务器ip是192.168.14.184,可以创建html测试是否能成功预览,其中http://192.168.14.205:20020/software/cd46a0fab3614d7d8519ec58b5672529.docx需要更改成自己可下载的文件地址

<!DOCTYPE html>
<html style="height: 100%;">
<head>
    <title>ONLYOFFICE Api Documentation</title>
</head>
<body style="height: 100%; margin: 0;">
    <div id="placeholder" style="height: 100%"></div>
    <script type="text/javascript" src="https://192.168.14.184/web-apps/apps/api/documents/api.js"></script>

    <script type="text/javascript">

        let editorConfig = {
	    "secret":"kg3Zrcx8Rg4DEuQH83jrUpPMy7svxOGJ",
            "lang": "zh-CN",//设置ONLYOFFICE编辑器语言为中文
            //保存文档时最终的回调接口,用于保存在线编辑的文件到存储
            //"callbackUrl": "http://192.168.2.62:24005/prod-api/file/upload",
            "lang": "zh-CN",//设置ONLYOFFICE编辑器语言为中文
            "mode": "edit",//设置只读时使用的配置,不加则默认表示允许编辑(只读时不需要填不加callbackUrl配置)
            "customization": {
                "anonymous": { // set name for anonymous user
                    "request": false, // enable set name
                    "label": "aaa" // postfix for user name
                },
            },
            user: {
                id: '1232',
                name: '夏XX',
                group: 'group name' // for customization.reviewPermissions or permissions.reviewGroups or permissions.commentGroups. Can be multiple groups separated by commas (,) : 'Group1' or 'Group1,Group2'
            },

        }
       /*
        ONLYOFFICE编辑器有三种主要外观,针对不同用途进行了优化,可通过type属性予以配置:
          desktop,针对桌面计算机浏览器中的显示进行了优化;
          mobile,针对移动设备浏览器中的显示进行了优化;
          embedded,针对将文档嵌入网页进行了优化。
         */
        window.docEditor = new DocsAPI.DocEditor("placeholder",
            {
                "document": {
                type: "embedded",//编辑器外观,
                    "fileType": "docx",
                    "key": "2",
                    "title": "3TR069.xlsx",
                    "url": "http://192.168.14.205:20020/software/cd46a0fab3614d7d8519ec58b5672529.docx"
                },
                "documentType": "word",
                "editorConfig": {
                    "mode": "view"
                },
                "height": "100%",
                "width": "100%",

                editorConfig: editorConfig

            });

    </script>
</body>
</html>

预览截图
在这里插入图片描述


http://www.kler.cn/a/564682.html

相关文章:

  • 【MySQL学习】关系数据库标准语言SQL
  • SC95F8767的学习——新工程的建立
  • WPF学习之Prism(二)
  • 11特殊函数
  • 【数据结构】二叉树(门槛极低的系统理解)
  • Apache Flink:实时数据流处理的终极武器
  • 关于家用 电视盒子[机顶盒] 的捣鼓日志 2025/2/27
  • 数据预处理实战:缺失值处理与数据标准化
  • 企业并购中SAP系统的三大数据转型挑战以及来如何应对?
  • 李代数(Lie Algebras)与Attention:深度学习中的数学之美
  • 记一次命令行启动springboot项目的问题 java -jar的问题
  • AF3 pair_sequences函数解读
  • MongoDB—(一主、一从、一仲裁)副本集搭建
  • 利用 Windows Terminal 和 SSH Config 简化 Linux 服务器管理
  • DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程
  • python-leetcode-分割等和子集
  • 想转行做春晚那种扭秧歌的机器人,大概要会点什么?
  • 基于大模型的脑出血全周期预测与诊疗方案研究报告
  • AI大模型-提示工程学习笔记16—方向性刺激提示
  • Qt开发⑨Qt的事件_事件处理_按键事件和鼠标事件