Skip to content

Commit

Permalink
documentation: add procedure to have functional cloud sharing files f…
Browse files Browse the repository at this point in the history
…or local environment
  • Loading branch information
LoanR committed Apr 24, 2024
1 parent 5f7eb2e commit 1d93035
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 0 deletions.
118 changes: 118 additions & 0 deletions documentation/developers/imitateProduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# 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. ({doc}`voir ici <contributing>`).

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](https://dashboard.ngrok.com/get-started/setup/linux).

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 !
1 change: 1 addition & 0 deletions documentation/developers/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ Cette documentation est à destination des développeurs.
dockerPersistence
translation
meetingFiles
imitateProduction

0 comments on commit 1d93035

Please sign in to comment.