NextCloud and OnlyOffice via Docker
References
- …
- …
Section 1
… Here is a short step-by-step manual:
How I do setup OnlyOffice 6.x Docker container and proxy it by Apache2 for NextCloud 22.x usage at my Ubuntu 20.04 Server.
Install Docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt install docker-ce
docker --version
sudo systemctl start docker
sudo systemctl enable docker
Allow Docker usage by your $USER
without using sudo
.
sudo groupadd docker
sudo usermod -aG docker $USER
su - $USER
id -nG
Prune unused Docker containers and images periodically.
sudo crontab -l | grep -i 'docker'
0 2 * * 7 /usr/bin/docker container prune
In my case the following was the most importaint step to get OnlyOffice container works correctly.
sudo sed 's/^#DOCKER_OPTS/DOCKER_OPTS/' /etc/default/docker -i
sudo systemctl restart docker
Install latest OnlyOffice
Get a list of all available versions of OnlyOffice images (reference).
wget -q https://registry.hub.docker.com/v1/repositories/onlyoffice/documentserver/tags -O - | jq -r '.[].name'
Downlad the latest OnlyOffice image and run it at port 81
of 127.0.0.1 localhost
.
# docker pull onlyoffice/documentserver
docker run -i -t -d -p 81:80 --restart=always onlyoffice/documentserver:latest
- Note the option
–restart=always
means the container will run automatically when Docker is started/restarted. - Docker will pull the image automatically when it is not available locally.
Apache2 Proxy Virtual Host
Test Whether the cesessary Apache2 modules are enabled.
sudo apache2ctl -M | grep -E 'auth[nz]_core|unixd|proxy|headers|setenvif'
unixd_module (static) # Required
authn_core_module (shared) # Required
authz_core_module (shared) # Required
headers_module (shared) # Required
proxy_module (shared) # Required
proxy_fcgi_module (shared)
proxy_http_module (shared) # Required
proxy_http2_module (shared)
proxy_wstunnel_module (shared) # Required
setenvif_module (shared) # Required
Setup a new virtual host as follow and restart Apache2. Note in this scenariou you need a valid SSL/TLS certivicate.
sudo nano /etc/apache2/sites-enabled/docs.example.com.conf
<VirtualHost *:80>
ServerName docs.example.com
ServerAdmin admin@example.com
Redirect permanent "/" "https://docs.example.com/"
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName docs.example.com
ServerAdmin admin@example.com
ErrorLog ${APACHE_LOG_DIR}/docs.example.com.error.log
CustomLog ${APACHE_LOG_DIR}/docs.example.com.access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
<IfModule pagespeed_module>
ModPagespeed off
</IfModule>
<IfModule security2_module>
# SecRuleEngine Off
</IfModule>
# ProxyPreserveHost On
# ProxyRequests Off
SetEnvIf Host "^(.*)$" THE_HOST=$1
Header edit Set-Cookie ^(.*)$ "$1; HttpOnly; Secure"
RequestHeader setifempty X-Forwarded-Proto https
RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e
ProxyAddHeaders Off
ProxyPassMatch (.*)(\/websocket)$ "ws://localhost:81/$1$2"
ProxyPass / "http://localhost:81/"
ProxyPassReverse / "http://localhost:81/"
</VirtualHost>
</IfModule>
References
- OnlyOffice Help Center: Installing ONLYOFFICE Docs Community Edition for Docker on a local server
- Docker Hub: onlyoffice/documentserver
- GitHub: ONLYOFFICE/onlyoffice-nextcloud
- GitHub: ONLYOFFICE/onlyoffice-nextcloud/releases
- OnlyOffice Api Docs: Nextcloud ONLYOFFICE integration app
- GitHub: ONLYOFFICE/onlyoffice-nextcloud/issues/[Can't connect do document server after update to NC19 #297]
- phoenixNAP: How To Install and Use Docker on Ubuntu 20.04