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

news2025/3/1 23:57:41

编写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.coloradmin.cn/o/2308132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK&#xff0c;接入校园网后一人登录&#xff0c;所有人都能通过连接此路由器上网&#xff0c;无法解决遂上网搜索&#xff0c;无果&#xff0c;幸而偶然看到一个帖子说要把信号源网线接入路由器lan口&#xff0c;开启新世界。 一、wan-lan&#xff0c;lan-lan区…

DeepSeek开源周Day5压轴登场:3FS与Smallpond,能否终结AI数据瓶颈之争?

2025年2月28日&#xff0c;DeepSeek开源周迎来了第五天&#xff0c;也是本次活动的收官之日。自2月24日启动以来&#xff0c;DeepSeek团队以每天一个开源项目的节奏&#xff0c;陆续向全球开发者展示了他们在人工智能基础设施领域的最新成果。今天&#xff0c;他们发布了Fire-F…

[密码学实战]Java实现SM2数字信封(结合SM4对称加密)生成与解析

一、代码运行结果 二、什么是数字信封 2.1 基本概念 数字信封(Digital Envelope) 是一种结合对称加密与非对称加密的混合加密技术,通过以下步骤实现高效安全的数据传输: 对称加密:使用SM4算法加密原始数据,处理速度快,适合大数据量。非对称加密:使用SM2公钥加密SM4密…

Oracle 查询表空间使用情况及收缩数据文件

本文介绍Oracle收缩数据文件的相关操作&#xff0c;运维工作中有时会需要通过收缩数据文件来释放磁盘空间。 数据文件初始化方式&#xff1a; 1.我们创建表空间一般有两种方式初始化其数据文件&#xff0c;即指定初始大小为32G&#xff08;很大的值&#xff09;或指定初始大小为…

Grafana接入Zabbix数据源

1. 对接 Zabbix 1.1 安装 Zabbix 插件 在线安装&#xff1a; 1.2 配置 Zabbix 数据源 点击 Configuration > Data Sources > Add data source。选择 Zabbix&#xff0c;填写&#xff1a; URL&#xff1a;http://<zabbix-server>/api_jsonrpc.phpUsername&#x…

华为在不同发展时期的战略选择(节选)

华为在不同发展时期的战略选择&#xff08;节选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 来源&#xff1a;谢宁专著《华为战略管理法&#xff1a;DSTE实战体系》。本文有节选修改。 导言 从目前所取得的成就往回看&#xff0c;华为…

lua基础语法学习

lua基础语法学习 文章目录 lua基础语法学习1. 基础2. 输入输出3. 分支结构与循环结构4. 函数5. 元表与元方法6. 面向对象 1. 基础 注释 --单行注释--[[ 多行注释 --]]标识符 标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母&#xff0c;下划线&…

【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-1微调2.2.3.2 zero-2微调2.2.3.3 zero-3微调2.2.3.4 单卡Lora微调 2.2.4 实验2.2.4.1 实验1&#xff1a;多GPU微调-zero12.2.4.2 实验2&#xff1a;…

【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验

Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

vue框架后遗症∶被遗忘的dom操作

用多了vue、react等前端框架&#xff0c;不得不说用数据驱动视图来开发真的很香&#xff0c;但是也免不了会有不用这些框架的项目&#xff0c;dom操作还是很有必要的&#xff0c;一开始学习网页设计的时候就教过&#xff0c;后面一直开发项目基本上用框架。虽然有些想不起来了&…

基于深度学习+NLP豆瓣电影数据爬虫可视化推荐系统

博主介绍&#xff1a;资深开发工程师&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有…

快速列出MS Word中所有可用字体

Word中有很多字体&#xff0c;虽然在字体下拉列表中提供了字体的样例&#xff0c;但是并不全面&#xff0c;例如使用Batang字体的话&#xff0c;数字会显示成什么效果&#xff0c;就无法直观的看到。 打开Word应用程序&#xff0c;新建一个空白文档&#xff0c;按AltF11打开VBE…

【密码学实战】Java 实现 SM2 国密算法(签名带id、验签及 C1C3C2 加密解密)

前言 SM2是中国国家密码管理局发布的椭圆曲线公钥密码算法标准&#xff08;GB/T 32918&#xff09;&#xff0c;属于国密算法体系。与RSA和ECDSA相比&#xff0c;SM2在相同安全强度下密钥更短、计算效率更高。本文将介绍如何在Java中实现SM2的密钥生成、数字签名、验签、加密及…

flex布局自定义一行几栏,靠左对齐===grid布局

模板 <div class"content"><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"item">1222</div><div class"…

使用 Ansys Discovery 高效创建角焊缝

概括 Ansys Discovery 2024R1 中的焊缝功能是一项重大改进&#xff0c;旨在简化和精简工程模拟中焊缝的分配过程。此功能集成了间歇焊缝等高级工具和功能&#xff0c;以更直观、更高效的方式促进焊缝的准备和分配。 该功能为工程师提供了无缝的工作流程&#xff0c;以准备和分…

Rk3568驱动开发_新字符设备驱动原理_7

1.申请设备号&#xff1a; 之前用的是register_chrdev(LED_MAJOR, LED_NAME, &led_fops);手动申请很不方便 使用alloc_chrdev_region函数申请设备号&#xff0c;手动申请的话要先查询是否有空余的设备号&#xff0c;很不方便&#xff0c;用此函数内核会自动将将空余设备号…

ESP32-S3 42引脚 语音控制模块、设备运转展示 GOOUUU TECH 果云科技S3-N16R8 控制舵机 LED开关 直流电机

最近还是想玩了下esp32&#xff0c;基于原来的开发板&#xff0c;看见佬做了一个语音识别的项目&#xff0c;通过这个语音识别可以控制LED开关和直流电机这些&#xff0c;详情可见视频&#xff08;推荐&#xff09;具体硬件就在下方。 信泰微】ESP32-S3 42引脚 语音控制模块、…

2025年光电科学与智能传感国际学术会议(ICOIS 2025)

重要信息 官网&#xff1a;www.ic-icois.org 时间&#xff1a;2025年3月14-16日 地点&#xff1a;中国-长春 简介 2025年光电科学与智能传感国际学术会议&#xff08;ICOIS 2025&#xff09;将于2025年3月14-16日在中国-长春隆重召开。会议将围绕“光学光电”、“智能传感”…

深入探索Python机器学习算法:监督学习(线性回归,逻辑回归,决策树与随机森林,支持向量机,K近邻算法)

文章目录 深入探索Python机器学习算法&#xff1a;监督学习一、线性回归二、逻辑回归三、决策树与随机森林四、支持向量机五、K近邻算法 深入探索Python机器学习算法&#xff1a;监督学习 在机器学习领域&#xff0c;Python凭借其丰富的库和简洁的语法成为了众多数据科学家和机…