Intégrer ONLYOFFICE à Nextcloud
Ce guide vous explique comment connecter le Serveur de Documents ONLYOFFICE à votre instance Nextcloud. De cette façon, vous pourrez avoir votre suite office personnelle hébergée sur votre propre serveur. Ce tutoriel a été effectué avec Ubuntu Server 24.04.3 LTS
Prérequis
- Docker installé sur votre serveur (nécessaire pour exécuter ONLYOFFICE Document Server).
- Votre instance Nextcloud est accessible via HTTPS (SSL/TLS).
ÉTAPE 1. Installation de Docker
1. Mise à jour et installation des prérequis
sudo apt update
sudo apt install ca-certificates curl gnupg
2. Ajout de la clé GPG officielle de Docker
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Ajout du dépôt Docker à Apt
echo \ « deb [arch=\ »$(dpkg –print-architecture)\ » signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ \ »$(. /etc/os-release && echo « $VERSION_CODENAME »)\ » stable » | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. Installation de Docker Engine
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ÉTAPE 2. Création du container
1. Téléchargement de l’image la plus récente.
sudo docker pull onlyoffice/documentserver:latest
2. Vérification des ports utilisés.
nous allons vérifier quels sont les ports utilisés par votre serveur Ubuntu. Il est crucial de ne pas utiliser des ports déjà utilisés pour un bon fonctionnement.
- Port 8099 (pour le trafic HTTP/WS).
- Port 8443 pour l’HTTPS du conteneur.
sudo netstat -tulnp | grep LISTEN
3. Création du Conteneur avec Clé Secrète (JWT)
Nous créons un conteneur qui s’exécute en arrière-plan (-d), redémarre automatiquement (–restart=always), monte un volume pour la persistance des données (-v), et définit une clé secrète JWT.
Changez motdepasse par le mot de passe que vous voulez. et conservez-le vous en aurez besoin plus tard.
sudo docker run -i -t -d –restart=always \
–name onlyoffice-ds \
-p 8099:80 -p 8499:443 \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-e JWT_SECRET=motdepasse \
onlyoffice/documentserver:latest
| Paramètre | Description | Rôle pour la Production |
sudo docker run | Commande de base pour créer et démarrer un conteneur. | Démarre l’exécution. |
-i -t -d | Options combinées : -i (interactif), -t (alloue un pseudo-TTY), -d (détaché, exécute en arrière-plan). | Garantit que le conteneur tourne sans bloquer votre terminal. |
--restart=always | Politique de redémarrage. | Essentiel : Assure que le conteneur redémarre automatiquement si le serveur redémarre ou si le conteneur plante. |
--name onlyoffice-ds | Nomme le conteneur. | Facilite la gestion (arrêt, redémarrage, logs) car vous n’utilisez plus l’ID long du conteneur. |
-p 8099:80 | Mappage de port (HTTP). Le port 80 interne au conteneur est exposé sur le port 8099 de la machine hôte. | Permet à votre Reverse Proxy Apache (sur l’hôte) d’accéder au Document Server via http://127.0.0.1:8099. |
-p 8499:443 | Mappage de port (HTTPS). Le port 443 interne est exposé sur le port 8499 de l’hôte. | Port de secours pour une connexion HTTPS directe si nécessaire (non utilisé par votre configuration actuelle, mais bonne pratique de l’exposer). |
-v .../data:/var/www/onlyoffice/Data | Volume de Données Persistant. Lie le dossier /var/www/onlyoffice/Data du conteneur (où sont stockés les polices, certificats, logs) au dossier /app/onlyoffice/DocumentServer/data sur votre hôte. | Crucial : Garantit que vous ne perdez aucune donnée ou configuration lors de la mise à jour ou de la suppression du conteneur. |
-e JWT_SECRET=motdepasse | Variable d’Environnement. Définit la clé secrète (motdepasse) pour le jeton JWT. | Sécurité : Active l’authentification des requêtes, empêchant toute personne n’ayant pas cette clé d’accéder ou de modifier vos documents. |
onlyoffice/documentserver:latest | Spécifie l’image Docker. | Télécharge et utilise la version la plus récente de l’image ONLYOFFICE Document Server. |
4. Vérification du Secret JWT
On vérifie que la clé est bien passée au conteneur. Cette clé doit être copiée exactement dans le GUI de Nextcloud.
sudo docker exec onlyoffice-ds env | grep JWT_SECRET
Cette étape vous confirmera que le mot de passe est bien enregistré dans votre conteneur.
ÉTAPE 3. Configuration Sécurité et Proxy (HTTPS)
Un enregistrement de type A est créé dans Cloudflare, pointant le sous-domaine office.votredomaine.com vers l’adresse IP publique de votre serveur hôte.
1. Obtention du Certificat SSL
sudo certbot apache -d office.votredomaine.com
Il vous informera qu’il ne trouve pas de Virtual Host correspondant à votre certificat demandé et c’est tout à fait normal nous ne l’avons pas créé. Vous pouvez faire cancel, le certificat vous sera quand même délivré.
Nous allons chercher manuellement les deux informations nécessaires de notre certificat SSL pour l’inclure dans notre Virtual Host que nous allons créer par la suite.
- fullchain.pem
- privkey.pem
sudo certbot certificates
Vous verrez tous les certificat SSL que vous avez obtenus sur votre serveur. Intéressez-vous à celui qui nous concerne.
Domains: office.votredomaine.com
Expiry Date: 2026-02-16 17:40:32+00:00 (VALID: 88 days)
Certificate Path: /etc/letsencrypt/live/office.votredomaine.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/office.votredomaine.com/privkey.pem
Les deux lignes qui nous intéressent sont les suivantes
/etc/letsencrypt/live/office.votredomaine.com/fullchain.pem
/etc/letsencrypt/live/office.votredomaine.com/privkey.pem
Nous allons les intégrer à notre Virtual Host de la façon suivante
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/office.votredomaine.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/office.votredomaine.com/privkey.pem
2. Configuration Détaillée d’Apache (Virtual Host)
sudo nano /etc/apache2/sites-available/onlyoffice-ssl.conf
<VirtualHost *:443>
ServerName office.votredomaine.com
# Ces en-têtes sont essentiels pour le fonctionnement via un proxy/Cloudflare
# Ils s’assurent que la connexion est vue comme HTTPS par ONLYOFFICE
RequestHeader set X-Forwarded-Proto « https »
RequestHeader set X-Forwarded-SSL « on »
# le port qui vous avez choisi si 8099
ProxyPass / http://127.0.0.1:8099/
ProxyPassReverse / http://127.0.0.1:8099/
# Configuration pour les WebSockets (nécessaire pour la co-édition en temps réel) modifiez l’adresse si nécessaire
ProxyPassMatch « /([^\/]+)\/ws$ » ws://127.0.0.1:8099/$1/ws
ProxyPassReverse /ws ws://127.0.0.1:8099/ws
# Gérer le délai d’attente
ProxyTimeout 1800
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/office.votredomaine.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office.votredomaine.com/privkey.pem
# Ajout de l’en-tête de sécurité pour autoriser l’intégration par Nextcloud (Option 1)
# Ceci résout l’erreur « Firefox ne peut pas ouvrir cette page »
Header set Content-Security-Policy « frame-ancestors ‘self’ https://cloud.votredomaine.com »
# Note : Si cela ne fonctionne pas, essayez de retirer ‘self’ : « frame-ancestors https://cloud.votredomaine.com »
# Options de sécurité
<Location />
Require all granted
</Location>
</VirtualHost>
3. Modules apache à Activer.
# 1. Base du Proxy
sudo a2enmod proxy
sudo a2enmod proxy_http
# 2. WebSockets (Crucial pour la co-édition en temps réel)
sudo a2enmod proxy_wstunnel
# 3. Sécurité et Headers
sudo a2enmod ssl
sudo a2enmod headers
4. Activation du site.
sudo a2ensite onlyoffice-ssl.conf
Redémarrage d’apache.
sudo systemctl restart apache2
ÉTAPE 4. Configuration dans l’interface graphique de Nextcloud
1. Télécharger l’application dans Nextcloud


2. Paramètres d’administration


3. Entrez les informations selon la configuration.
- Clé secrète votre clé JWT (motdepasse)

Cliquez sur enregistrer et vous devriez voir apparaître un message en vert vous indiquant que la connexion a réussi.
Voilà vous avez votre propre suite office intégré à votre instance de Nextcloud.