Table of Contents

OnlyOffice

OnlyOffice and NextCloud in Docker. Both proxied by NGINX rev proxy.

References

Installing ONLYOFFICE Docs Community Edition for Debian, Ubuntu, and derivatives

Using ONLYOFFICE Docs behind the proxy

How to Integrate OnlyOffice with NextCloud on Ubuntu

NGINX config

Additional config lines for NextCloud virtual site config:

upstream docservice {
    server 192.168.64.231:3077;
}
 
map $http_x_forwarded_proto $the_scheme {
     default $http_x_forwarded_proto;
     "" $scheme;
}
 
map $http_x_forwarded_host $the_host {
    default $http_x_forwarded_host;
    "" $host;
}
 
map $http_upgrade $proxy_connection {
    default upgrade;
    "" close;
}
 
server { 
    ..
    location /documentserver {
        return 302 /documentserver/;
    }
    location ~ ^/web-apps/(.*) {
         # rewrite     ^   https://$server_name$request_uri? permanent;
         return 302 /documentserver/web-apps/$1$is_args$args;
    }
    location /documentserver/ {
        proxy_pass http://docservice/;
        proxy_http_version 1.1;
 
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $proxy_connection;
        proxy_set_header X-Forwarded-Host $the_host/documentserver;
        proxy_set_header X-Forwarded-Proto $the_scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Based on hints from: https://github.com/ONLYOFFICE/document-server-proxy

docker-compose

https://github.com/ONLYOFFICE/docker-onlyoffice-nextcloud https://hub.docker.com/r/onlyoffice/documentserver/

OnlyOffice network in Docker is configured:

Test OnlyOffice server

Web page should be shown on link: https://nc.example.com/documentserver/welcome/

NextCloud

Install and enable `OnlyOffice` plugin.

Configure it as follows:

### Trusted domain 
./occ config:system:get trusted_domains
 
# Put correct indexes in commands below:
./occ config:system:set trusted_domains 0 --value="nc.example.com"
 
# NC http port is exposed from Docker to host port 3007
./occ config:system:set trusted_domains 1 --value="host_ip:3007"
 
### OnlyOffice config
# OnlyOffice server URL:
./occ config:system:set onlyoffice DocumentServerUrl --value="https://nc.example.com/documentserver/"
# How OnlyOffice can reach NC:
./occ config:system:set onlyoffice StorageUrl --value="http://nc.grinn-global.com/"
# NOTE; it is possible to put external URL like above, but NC can communicate directly inside private Docker network
./occ config:system:set onlyoffice DocumentServerInternalUrl --value="https://onlyoffice/"
 
# And permit NC to communicate with local addresses
# Without this you can got error: Error when trying to connect (Host violates local access rules)
./occ config:system:set allow_local_remote_servers --value true --type bool