NextCloud and OnlyOffice via Docker: Difference between revisions
Line 60: | Line 60: | ||
- './config/etc/onlyoffice/documentserver/supervisor:/etc/onlyoffice/documentserver/supervisor' | - './config/etc/onlyoffice/documentserver/supervisor:/etc/onlyoffice/documentserver/supervisor' | ||
restart: unless-stopped | restart: unless-stopped | ||
# https://hub.docker.com/r/onlyoffice/documentserver/ | |||
# https://github.com/ONLYOFFICE/onlyoffice-owncloud/issues/108 | |||
version: "3" | |||
services: | |||
onlyoffice-docs: | |||
container_name: onlyoffice-docs | |||
#image: onlyoffice/documentserver:latest | |||
image: onlyoffice/documentserver:7.2 | |||
hostname: docs | |||
#network_mode: host | |||
ports: | |||
- "8081:80/tcp" | |||
environment: | |||
TZ: 'Europe/Sofia' | |||
# Volumes store your data between container upgrades | |||
volumes: | |||
- './config/logs:/var/log/onlyoffice' | |||
- './config/mysql:/var/lib/mysql' | |||
- './config/data:/var/www/onlyoffice/Data' | |||
- './config/data:/var/www/onlyoffice/DocumentServerData' | |||
- './config/etc/supervisor:/etc/supervisor' | |||
- './config/etc/onlyoffice:/etc/onlyoffice' | |||
restart: unless-stopped | |||
</syntaxhighlight>Download the Docker images and run the container in detached (persistent) mode.<syntaxhighlight lang="shell" line="1"> | </syntaxhighlight>Download the Docker images and run the container in detached (persistent) mode.<syntaxhighlight lang="shell" line="1"> |
Revision as of 11:40, 25 September 2022
Here is a short step-by-step manual: How to setup OnlyOffice Docker container and proxy it by Apache2 for NextCloud usage.
Install Docker
According to the Docker and Docker-compose installation, read the guide Docker Basic Setup. The rest part of this section is deprecated, but is leaved here as historical note :)
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
$USER
without using sudo
.sudo groupadd docker
sudo usermod -aG docker $USER
su - $USER
id -nG
sudo crontab -l | grep -i 'docker'
0 2 * * 7 /usr/bin/docker container prune
sudo sed 's/^#DOCKER_OPTS/DOCKER_OPTS/' /etc/default/docker -i
sudo systemctl restart docker
Setup the OnlyOffice Docker Container
Create a directory where the configuration file docker-compose.yaml
and the persistent volumes will live.
mkdir /home/docker/onlyoffice
cd /home/docker/onlyoffice
Create the docker-compose.yaml
file. Tweak the value of the hist port 8081
, and the time zone TZ
.
nano docker-compose.yaml
# https://hub.docker.com/r/onlyoffice/documentserver/
# https://github.com/ONLYOFFICE/onlyoffice-owncloud/issues/108
version: "3"
services:
onlyoffice-docs:
container_name: onlyoffice-docs
image: onlyoffice/documentserver:latest
hostname: docs
#network_mode: host
ports:
- "8081:80/tcp"
environment:
TZ: 'Europe/Sofia'
# Volumes store your data between container upgrades
volumes:
- './config/docs/log:/var/log/onlyoffice'
- './config/docs/data:/var/www/onlyoffice/Data'
- './config//etc/supervisor/conf.d:/etc/supervisor/conf.d'
- './config/etc/onlyoffice/documentserver/supervisor:/etc/onlyoffice/documentserver/supervisor'
restart: unless-stopped
# https://hub.docker.com/r/onlyoffice/documentserver/
# https://github.com/ONLYOFFICE/onlyoffice-owncloud/issues/108
version: "3"
services:
onlyoffice-docs:
container_name: onlyoffice-docs
#image: onlyoffice/documentserver:latest
image: onlyoffice/documentserver:7.2
hostname: docs
#network_mode: host
ports:
- "8081:80/tcp"
environment:
TZ: 'Europe/Sofia'
# Volumes store your data between container upgrades
volumes:
- './config/logs:/var/log/onlyoffice'
- './config/mysql:/var/lib/mysql'
- './config/data:/var/www/onlyoffice/Data'
- './config/data:/var/www/onlyoffice/DocumentServerData'
- './config/etc/supervisor:/etc/supervisor'
- './config/etc/onlyoffice:/etc/onlyoffice'
restart: unless-stopped
Download the Docker images and run the container in detached (persistent) mode.
docker-compose up -d
Open the OnlyOffice document server via the browser. Note the host port 8081
must be open (for you) within the host's firewall.
http://<host-ip>:8081/welcome/
The rest part of this section is deprecated, but is leaved here as historical note :)
wget -q https://registry.hub.docker.com/v1/repositories/onlyoffice/documentserver/tags -O - | jq -r '.[].name'
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