docker-compose部署onlyoffice8.3.0并支持ssl,且支持通过nginx代理,关闭JWT配置
编写docker-compose文件
mkdir -p /data/onlyoffice && echo "version: '3'services:onlyoffice:container_name: OnlyOfficeimage: onlyoffice/documentserver:8.3.0restart: alwaysports:- 8088:80- 64431:443environment:TZ: Asia/ShanghaiJWT_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>
预览截图

相关文章:
docker-compose部署onlyoffice8.3.0并支持ssl,且支持通过nginx代理,关闭JWT配置
编写docker-compose文件 mkdir -p /data/onlyoffice && echo "version: 3services:onlyoffice:container_name: OnlyOfficeimage: onlyoffice/documentserver:8.3.0restart: alwaysports:- 8088:80- 64431:443environment:TZ: Asia/ShanghaiJWT_ENABLED: falsevol…...
如何配置虚拟机的IP上网
要配置虚拟机的IP地址以便上网,你可以按照以下步骤操作: 打开虚拟机软件,确保虚拟机的网络设置为“桥接模式”或“NAT模式”,这样虚拟机可以与物理网络连接。 在虚拟机操作系统中,打开网络设置界面,一般在…...
【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别
老式路由器TPLINK,接入校园网后一人登录,所有人都能通过连接此路由器上网,无法解决遂上网搜索,无果,幸而偶然看到一个帖子说要把信号源网线接入路由器lan口,开启新世界。 一、wan-lan,lan-lan区…...
Python--内置模块和开发规范(下)
2. 开发规范 2.1 单文件应用 文件结构示例 # 文件注释 import os import jsonDB_PATH "data.json" # 常量放顶部def load_data():"""函数注释:加载数据"""if os.path.exists(DB_PATH):with open(DB_PATH, "r"…...
DeepSeek开源周Day5压轴登场:3FS与Smallpond,能否终结AI数据瓶颈之争?
2025年2月28日,DeepSeek开源周迎来了第五天,也是本次活动的收官之日。自2月24日启动以来,DeepSeek团队以每天一个开源项目的节奏,陆续向全球开发者展示了他们在人工智能基础设施领域的最新成果。今天,他们发布了Fire-F…...
[密码学实战]Java实现SM2数字信封(结合SM4对称加密)生成与解析
一、代码运行结果 二、什么是数字信封 2.1 基本概念 数字信封(Digital Envelope) 是一种结合对称加密与非对称加密的混合加密技术,通过以下步骤实现高效安全的数据传输: 对称加密:使用SM4算法加密原始数据,处理速度快,适合大数据量。非对称加密:使用SM2公钥加密SM4密…...
redis序列化设置
redis序列化设置 redis序列化设置序列化对象里有org.joda.time.DateTime1)、报错内容如下2)、解决方案:分别自定义时间的序列化和反序列化,以对象形式关联到redisTemplate redis序列化设置 redis序列化设置,通过自定义…...
Sqlserver安全篇之_TLS的证书概念
证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…...
【HarmonyOS Next】 鸿蒙应用useNormalizedOHMUrl详解
【HarmonyOS Next】 鸿蒙应用useNormalizedOHMUrl详解 一、useNormalizedOHMUrl是什么? useNormalizedOHMUrl指的是是否使用标准化OHMUrl拼接。 在开发过程中,需要根据不同的环境或配置动态生成 URL。例如,在加载一些远程模块或者资源时,…...
Oracle 查询表空间使用情况及收缩数据文件
本文介绍Oracle收缩数据文件的相关操作,运维工作中有时会需要通过收缩数据文件来释放磁盘空间。 数据文件初始化方式: 1.我们创建表空间一般有两种方式初始化其数据文件,即指定初始大小为32G(很大的值)或指定初始大小为…...
怎么进行mysql的优化?
MySQL 的优化是一个系统性的工作,涉及多个层面,包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法: 查询优化 避免全表扫描:确保查询能够使用索引,避免 SELECT *,只选择需要…...
docker-compose方式启动Kafka Sasl加密认证(无zk)
首先参考文档,思考过程可以进行参考https://juejin.cn/post/7294556533932884020#heading-3 用的镜像是Bitnami,对SASL配置进行了简化,需要按照特定格式去配置jass验证 完整配置如下 镜像版本参考:https://hub.docker.com/r/bitn…...
Grafana接入Zabbix数据源
1. 对接 Zabbix 1.1 安装 Zabbix 插件 在线安装: 1.2 配置 Zabbix 数据源 点击 Configuration > Data Sources > Add data source。选择 Zabbix,填写: URL:http://<zabbix-server>/api_jsonrpc.phpUsername&#x…...
华为在不同发展时期的战略选择(节选)
华为在不同发展时期的战略选择(节选) 添加图片注释,不超过 140 字(可选) 来源:谢宁专著《华为战略管理法:DSTE实战体系》。本文有节选修改。 导言 从目前所取得的成就往回看,华为…...
【计算机网络】TCP协议相关总结,TCP可靠性的生动讲解
TCP 可靠性 确保快递不丢、不乱、不过载 机制作用(快递类比)防止的问题检验和检查包裹是否损坏,损坏就重新发数据出错序列号给每个包裹编号,按顺序整理乱序、重复确认应答每送到一件,就让收件人签收丢失滑动窗口控制…...
lua基础语法学习
lua基础语法学习 文章目录 lua基础语法学习1. 基础2. 输入输出3. 分支结构与循环结构4. 函数5. 元表与元方法6. 面向对象 1. 基础 注释 --单行注释--[[ 多行注释 --]]标识符 标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母,下划线&…...
【个人开发】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:多GPU微调-zero12.2.4.2 实验2:…...
【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…...
手机放兜里,支付宝“碰一下”被盗刷?
大家好,我是小悟。 近期,网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上,不少用户对此心生疑虑。 首先,要明确一点:“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…...
Java Web应用中获取客户端的真实IP地址
Java Web应用中获取客户端的真实IP地址,尤其在存在代理服务器的情况下。 代码示例: public static String getClientIP(HttpServletRequest request) {String ip = parseCommaSeparatedIPs(request.getHeader("X-Forwarded-For"));if (isInvalid(ip)) {ip = pars…...
vue框架后遗症∶被遗忘的dom操作
用多了vue、react等前端框架,不得不说用数据驱动视图来开发真的很香,但是也免不了会有不用这些框架的项目,dom操作还是很有必要的,一开始学习网页设计的时候就教过,后面一直开发项目基本上用框架。虽然有些想不起来了&…...
基于深度学习+NLP豆瓣电影数据爬虫可视化推荐系统
博主介绍:资深开发工程师,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有…...
8. 示例:对32位数据总线实现位宽和值域覆盖
文章目录 前言示例一:示例二:示例三:仿真与覆盖率分析覆盖点详细说明覆盖率提升技巧常见错误排查 示例四:仿真步骤 前言 针对32位数据总线实现位宽和值域的覆盖,并且能够用xrun运行,查看日志和波形。cover…...
深度剖析Seata源码:解锁分布式事务处理的核心逻辑
文章目录 写在文章开头如何使用源码(配置转掉)基于AT模式详解Seata全链路流程Seata服务端启动本地服务如何基于GlobalTransaction注解开启事务客户端如何开启分布式事务RM和TC如何协调处理分支事务RM生成回滚日志事务全局提交与回滚小结参考写在文章开头 在当今分布式系统日益…...
快速列出MS Word中所有可用字体
Word中有很多字体,虽然在字体下拉列表中提供了字体的样例,但是并不全面,例如使用Batang字体的话,数字会显示成什么效果,就无法直观的看到。 打开Word应用程序,新建一个空白文档,按AltF11打开VBE…...
SpringDataJPA使用deleteAllInBatch方法逻辑删除失效
概述 在使用Spring Boot JPA时,执行批量删除操作时,遇到逻辑删除失效的问题。具体而言,当使用deleteAllInBatch方法时,数据会被物理删除,而不是进行逻辑删除;但是当使用deleteAll时,逻辑删除操…...
【密码学实战】Java 实现 SM2 国密算法(签名带id、验签及 C1C3C2 加密解密)
前言 SM2是中国国家密码管理局发布的椭圆曲线公钥密码算法标准(GB/T 32918),属于国密算法体系。与RSA和ECDSA相比,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"…...
Harmony os next~鸿蒙应用开发入门教程
鸿蒙应用开发入门教程 基础准备与环境搭建 1. 了解鸿蒙系统 1.1 核心理念学习 HarmonyOS(鸿蒙系统)是华为推出的全场景分布式操作系统,其核心特点如下: 分布式能力 设备协同:手机、平板、智能手表、IoT设备等可无…...
使用 Ansys Discovery 高效创建角焊缝
概括 Ansys Discovery 2024R1 中的焊缝功能是一项重大改进,旨在简化和精简工程模拟中焊缝的分配过程。此功能集成了间歇焊缝等高级工具和功能,以更直观、更高效的方式促进焊缝的准备和分配。 该功能为工程师提供了无缝的工作流程,以准备和分…...
