Mettre en place OnlyOffice Docker avec Nextcloud
Prérequis :
- Avoir un nom de domaine
- Dans notre cas nous utiliserons le nom de domaine :
miraceti.net
- Dans notre cas nous utiliserons le nom de domaine :
- Avoir une configuration de Nextcloud Docker fonctionnel
- Sinon suivre le tuto suivant : Déployer Nextcloud Docker
Il est conseillé de rajouter les configurations suivantes (docker-compose.yml et .env) directement dans les fichiers correspondants à la configuration Nextcloud.
Mais il est aussi possible de séparer la configuration Nextcloud et la configuration Onlyoffice. Cependant il faudra mettre le conteneur Nextcloud dans un même network que le conteneur Onlyoffice.
Préparation des fichiers de configuration
Se placer dans le dossier contenant les fichiers docker-compose.yml et .env de la configuration Nextcloud Docker.
Edition du fichier docker-compose.yml :
...(services nextcloud)...
postgres-onlyoffice:
image: ${ONLYOFFICE_DOCUMENT_POSTGRES_IMAGE_TAG}
container_name: postgres-onlyoffice
volumes:
- onlyoffice-document-postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: ${ONLYOFFICE_DOCUMENT_DB_NAME}
POSTGRES_USER: ${ONLYOFFICE_DOCUMENT_DB_USER}
POSTGRES_HOST_AUTH_METHOD: trust
networks:
- onlyoffice-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 10s
timeout: 5s
retries: 3
start_period: 60s
restart: unless-stopped
redis-onlyoffice:
image: ${ONLYOFFICE_DOCUMENT_REDIS_IMAGE_TAG}
container_name: redis-onlyoffice
volumes:
- redis-onlyoffice-document-data:/data
networks:
- onlyoffice-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
start_period: 60s
restart: unless-stopped
rabbitmq-onlyoffice:
image: ${ONLYOFFICE_DOCUMENT_RABBITMQ_IMAGE_TAG}
container_name: rabbitmq-onlyoffice
volumes:
- rabbitmq-onlyoffice-document-data:/bitnami/rabbitmq/mnesia
environment:
RABBITMQ_USERNAME: ${ONLYOFFICE_DOCUMENT_RABBITMQ_USER}
RABBITMQ_PASSWORD: ${ONLYOFFICE_DOCUMENT_RABBITMQ_PASSWORD}
POSTGRES_PASSWORD: ${ONLYOFFICE_DOCUMENT_DB_PASSWORD}
RABBITMQ_MANAGEMENT_ALLOW_WEB_ACCESS: true
networks:
- onlyoffice-network
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
restart: unless-stopped
onlyoffice-document:
image: ${ONLYOFFICE_DOCUMENT_IMAGE_TAG}
container_name: onlyoffice
volumes:
- onlyoffice-document-data:/var/www/onlyoffice/Data
- onlyoffice-document-log:/var/log/onlyoffice
- onlyoffice-document-cache-files:/var/lib/onlyoffice/documentserver/App_Data/cache/files
- onlyoffice-document-public-files:/var/www/onlyoffice/documentserver-example/public/files
- onlyoffice-document-fonts:/usr/share/fonts
environment:
DB_TYPE: postgres
DB_HOST: postgres-onlyoffice-document
DB_PORT: 5432
DB_NAME: ${ONLYOFFICE_DOCUMENT_DB_NAME}
DB_USER: ${ONLYOFFICE_DOCUMENT_DB_USER}
DB_PWD: ${ONLYOFFICE_DOCUMENT_DB_PASSWORD}
AMQP_URI: amqp://${ONLYOFFICE_DOCUMENT_RABBITMQ_USER}:${ONLYOFFICE_DOCUMENT_RABBITMQ_PASSWORD}@rabbitmq-onlyoffice-document
REDIS_SERVER_HOST: redis-onlyoffice-document
REDIS_SERVER_PORT: 6379
JWT_ENABLED: true
JWT_SECRET: ${ONLYOFFICE_DOCUMENT_JWT_SECRET}
JWT_HEADER: Authorization
JWT_IN_BODY: 'true'
networks:
- onlyoffice-network
- bddnetwork
restart: unless-stopped
depends_on:
postgres-onlyoffice:
condition: service_healthy
rabbitmq-onlyoffice:
condition: service_healthy
# nextcloud:
# condition: service_healthy
Edition du fichier .env :
...(Nextcloud Variables)..
# OnlyOffice Variables
ONLYOFFICE_DOCUMENT_POSTGRES_IMAGE_TAG=postgres:15
ONLYOFFICE_DOCUMENT_REDIS_IMAGE_TAG=redis:7.2
ONLYOFFICE_DOCUMENT_RABBITMQ_IMAGE_TAG=bitnami/rabbitmq:3.13.4
ONLYOFFICE_DOCUMENT_IMAGE_TAG=onlyoffice/documentserver:8.1
ONLYOFFICE_DOCUMENT_HOSTNAME=office.miraceti.net
ONLYOFFICE_DOCUMENT_DB_NAME=onlyoffice
ONLYOFFICE_DOCUMENT_DB_USER=onlyofficedbuser
ONLYOFFICE_DOCUMENT_DB_PASSWORD=yVNyHP2keUeD5wD3vkrb
ONLYOFFICE_DOCUMENT_JWT_SECRET=7bukHBGUEzvCjHrYKuT8
ONLYOFFICE_DOCUMENT_RABBITMQ_USER=rabbitmqdb
ONLYOFFICE_DOCUMENT_RABBITMQ_PASSWORD=FX7zuRA7y2wVUNkYwtwH
Création du network pour OnlyOffice
Nous allons créer un network "office-network" pour lier les conteneurs/services suivants entre eux :
- postgres-onlyoffice
- redis-onlyoffice
- rabbitmq-onlyoffice
- onlyoffice
sudo docker network create office-network