Reproduire des conditions de production entre les services

Le docker-compose.override.yml permet de reproduire des conditions proches de la production en lançant tous les services requis et en permettant la communication entre chacun. (voir ici).

Il reste cependant difficile de partager des fichiers depuis un nextcloud local vers une instance BigBlueButton.

En effet, les différents services communiquent localement entre eux grâce au réseau mis en place par Docker. l’application B3Desk est accessible localement sur localhost:5000 et grâce à la configuration du etc/host la machine locale peut accéder avec un navigateur au keycloak sur keycloak:8080 et au nextcloud sur nextcloud:80.

La problématique que l’on rencontre sur le partage de fichier depuis Nextcloud par exemple pour le partage d’un second fichier qui va nécessairement passer par le worker Celery, est que l’url partagée par B3Desk pointe sur localhost:5000 qui est son domaine local. Or, lorsque le worker Celery communique cette url à une instance BigBlueButton, ce domaine ne va rien signifier pour lui, et le fichier ne sera pas téléchargé dans la visio.

Voilà un contournement possible pour le partage de fichiers via Nextcloud :

Avoir un vrai domaine pour B3Desk

Exposer le local sur un domaine

NGrok permet de rendre accessible un environnement local depuis un domaine temporaire.

Il suffit de l’installer, de créer un compte sur le service, de configurer votre authtoken comme précisé dans la documentation.

Nous avons besoin de deux domaines, un pour B3Desk et un pour le Nextcloud.

Trouvez le fichier de configuration avec :

ngrok config check

Cette commande doit vous rendre le chemin de la config que vous pouvez alors éditer pour qu’elle contienne :

version: "xxxx"
authtoken: secret_token
tunnels:
  B3Desk:
    addr: 5000
    proto: http
  B3nc:
    addr: 80
    proto: http

Vous pouvez alors lancer la commande suivante pour obtenir deux domaines

ngrok start --all

Vous devriez voir apparaitre :

ngrok                                                                                                (Ctrl+C to quit)

Session Status                online
Account                       userxyz
[...]
Forwarding                    https://firsttemporarydomain.ngrok-free.app -> http://localhost:5000
Forwarding                    https://secondtemporarydomain.ngrok-free.app -> http://localhost:80

Ainsi que le trafic sur ces url.

Configurer B3Desk pour ce domaine

Pour que B3Desk soit fonctionnel sur l’url fournie par NGrok, il faut modifier la configuration du web.env :

SERVER_NAME=firsttemporarydomain.ngrok-free.app
PREFERRED_URL_SCHEME=https

Attendez avant de relancer votre service, vous ne pouvez malheureusement pas encore vous authentifier depuis ce domaine.

S’authentifier depuis un vrai domaine

Avoir un OIDC fonctionnel

Maintenant que votre site dispose d’un vrai domaine, il faut encore qu’il puisse communiquer avec le Keycloak qui tourne localement et que celui-ci renvoie bien sur ce nouveau domaine.

Vous devez donc modifier à nouveau votre web.env avec :

OIDC_REDIRECT_URI=firsttemporarydomain.ngrok-free.app/oidc_callback

Vous pouvez maintenant relancer votre service pour que cette configuration soit prise en compte :

docker compose up --build web -d

Si vous vous rendez maintenant sur https://firsttemporarydomain.ngrok-free.app vous devriez arriver sur l’accueil du site.

Configurer Keycloak

Il reste encore à configurer le Keycloak.

Rendez-vous sur http://keycloak:8080 et connectez-vous en tant qu’admin.

Dans la partie “Clients”, cliquez sur le “Client ID” de B3Desk pour pouvoir le modifier.

Ajoutez l’entrée https://firsttemporarydomain.ngrok-free.app/* dans la liste de “* Valid Redirect URIs” et sauvegardez.

Pouvoir acceder au Nextcloud depuis le domaine temporaire

Accéder au Nextcloud depuis la nouvelle url

Pour pouvoir accéder au fichiers du Nextcloud depuis la page d’ajout de fichiers dans la visio, avec le bouton “depuis le Nuage”, il faut que la nouvelle url temporaire de Nextcloud https://secondtemporarydomain.ngrok-free.app soit dans la liste des trusted_domains.

Vous devez modifier la variable d’environnement NEXTCLOUD_TRUSTED_DOMAINS dans le fichier docker-compose.override.yml et réinstaller Nextcloud en supprimant la base de données avec sudo rm -rf nextcloud/html postgres/data et en relançant les services :

docker compose up --build nextcloud -d

Récupérer un token valide

Il faut modifier le NC_HOST du service tokenmock pour y indiquer https://secondtemporarydomain.ngrok-free.app et non plus nextcloud qui n’existe plus.

Vous devez ensuite relancer ce service :

docker compose up --build tokenmock -d

Autoriser le domaine de B3Desk à utiliser WebAppPassword

Dans les “Paramètres d’administration” de Nextcloud (avec le compte admin), il faut ajouter le nouveau domaine de B3Desk https://firsttemporarydomain.ngrok-free.app dans les “Allowed origins” de WebAppPassword.

Configuration terminée

Vous êtes maintenant capable de vous authentifier et de partager des fichiers depuis le Nextcloud local sur B3Desk, tout en surveillant les logs !