Only Office

Only Office

Photo by Patrick Fore on Unsplash

Toujours dans la serie self-hosting et pour compléter l’article sur NextCloud, rien de tel que l’installation d’une suite office collaborative….

Quand on parle de suite office collaborative, on pense naturellement à Collabora et à Only Office. Personnellement, j’ai retenu la 2nd qui consomme moins de ressource coté serveur (mon VPS n’est pas un foudre de guerre et Collabora y ferait tourner LibreOffice…). Dans sa version communautaire, Only Office permet 20 accès simultanés largement suffisants pour mes besoins personnels.

Comme d’habitude sur cette serie d’articles, je pars de l’infra déjà en place:

  • un serveur VPS ( entrée de gamme chez OVH ) avec une installation Docker standard
  • Traefik en reverse proxy avec les certifcats TLS fournis par Let’s Encrypt
  • NextCloud en solution Drive

Configuration

On commence par récupérer le docker-compose fournit par le projet.

On effectue quelques modifications:

  • suppression du build au profit de l’image disponible sur le Docker Hub (ici avec le tag 6.2)
  • suppression des commentaires pour la mise en place de l’authentification JWT entre NextCloud et Only Office
  • suppression de l’exposition des ports 80 et 443 de la machine hôte (utilisés par Traefik)
  • ajouts de la conf réseau et des labels propre à ma conf Traefik
  • ajout d’un header middleware X-Forwarded-Proto pour permettre le fonctionnement d’OnlyOffice derrière un reverse proxy
 1version: '2'
 2services:
 3  onlyoffice-documentserver:
 4    image: onlyoffice/documentserver:6.2.0
 5    container_name: onlyoffice-documentserver
 6    depends_on:
 7      - onlyoffice-postgresql
 8      - onlyoffice-rabbitmq
 9    environment:
10      - DB_TYPE=postgres
11      - DB_HOST=onlyoffice-postgresql
12      - DB_PORT=5432
13      - DB_NAME=onlyoffice
14      - DB_USER=onlyoffice
15      - AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
16      - JWT_ENABLED=true
17      - JWT_SECRET=zke+lagbHi+zfVFWTsU5n5u+cnzTY6A9MpqkZj/HTzY=   # à renseigner dans la conf Nextcloud
18      - JWT_HEADER=Authorization
19      - JWT_IN_BODY=true
20    networks:
21      - "traefik_lan"
22      - "lan"
23    expose:
24      - 80
25    stdin_open: true
26    restart: unless-stopped
27    stop_grace_period: 60s
28    volumes:
29      - /var/www/onlyoffice/Data
30      - /var/log/onlyoffice
31      - /var/lib/onlyoffice/documentserver/App_Data/cache/files
32      - /var/www/onlyoffice/documentserver-example/public/files
33      - /usr/share/fonts
34    labels:
35      - "traefik.enable=true"
36      - "traefik.docker.network=traefik_lan"
37      - "traefik.http.routers.onlyofficenotls.rule=Host(`office.exemple.com`)"
38      - "traefik.http.routers.onlyofficenotls.entrypoints=webinsecure"
39      - "traefik.http.routers.onlyofficenotls.middlewares=tlsredir@file"
40      - "traefik.http.routers.onlyoffice.rule=Host(`office.exemple.com`)"
41      - "traefik.http.middlewares.secure-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
42      - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOrigin=*"
43      - "traefik.http.routers.onlyoffice.middlewares=secure-headers,cors-headers"
44      - "traefik.http.routers.onlyoffice.entrypoints=websecure"
45      - "traefik.http.routers.onlyoffice.tls.certresolver=letsencrypt"
46      - "traefik.http.routers.onlyoffice.tls=true"  
47
48  onlyoffice-rabbitmq:
49    container_name: onlyoffice-rabbitmq
50    image: rabbitmq
51    restart: unless-stopped
52    networks:
53      - "lan"
54    expose:
55      - '5672'
56
57  onlyoffice-postgresql:
58    container_name: onlyoffice-postgresql
59    image: postgres:9.5
60    environment:
61      - POSTGRES_DB=onlyoffice
62      - POSTGRES_USER=onlyoffice
63      - POSTGRES_HOST_AUTH_METHOD=trust
64    restart: unless-stopped
65    networks:
66      - "lan"
67    expose:
68      - '5432'
69    volumes:
70      - "postgresql_data:/var/lib/postgresql"
71
72networks:
73  traefik_lan:
74    external: true
75  lan:
76
77volumes:
78  postgresql_data:

On lance la stack avec un $ docker-compose up -d et on vérifie que tout est Ok (https://office.example.com)

screenshot OnlyOffice

Intégration Nextcloud

L’intégration OnlyOffice dans Nextcloud se limite à installer l’application OnlyOffice:

  • clic sur votre icône en haut à droite -> + Apps -> recherche sur ONLYOFFICE -> Download and Enable

screenshot OnlyOffice install

Il reste simplement à configurer l’application OnlyOffice dans Nextcloud:

  • clic sur votre icône en haut à droite -> Settings-> ONLYOFFICE

Je vous recommande de décocher la case: Open file in the same tab qui me semble un fonctionnement plus naturel.

screenshot OnlyOffice config

Si tout se passe bien vous devez obtenir l’affichage d’un message: Settings have been successfully updated (version 6.2.0.123)

Vous pouvez maintenant utiliser OnlyOffice !

screenshot OnlyOffice edit

Enjoy !