EsupPortail / Esup-Pod

plateforme de gestion de fichier vidéo
https://pod.esup-portail.org/
GNU Lesser General Public License v3.0
35 stars 75 forks source link

[DONE] Utilisation de l'adresse `pod.localhost` pour le développement #1134

Closed azmeuk closed 4 months ago

azmeuk commented 4 months ago

1125 proposait d'uniformiser les ports utilisés à l'intérieur et hors des conteneurs dockers, cette PR propose la même chose pour le nom de domaine.

motivations

La raison pour laquelle je propose ce changement est encore liée à #1058. L'implémentation d'Activitypub délègue certaines tâches à celery, et ces tâches ont besoin parfois de construire des URL absolues. Étant dans un contexte celery, on ne peut accéder à un objet request pour en récupérer le domaine, alors on doit se fier aux objets Site de Django.

Or, pour le moment Site est initialisé pour localhost:

https://github.com/EsupPortail/Esup-Pod/blob/cb5f0d5a09949e00a8730973265d61a2c07e15d7/pod/main/fixtures/initial_data.json#L2-L9

En conséquence, dans l'environnement docker on construit des URL absolues sont la forme http://localhost:8000/... que l'on transfère à d'autres instances sur le réseau dans le cadre d'activitypub. Hors évidemment, lorsque les autres conteneurs tentent de joindre localhost:8000 ils essaient de se joindre eux même plutôt que l'instance Pod.

En plus de ça, Peertube rejette pour la fédération les noms de domaines sans TLD, comme localhost. Pour faire des tests de fédération avec Peertube dans un environnement docker, on a donc besoin d'utiliser un autre domaine.

proposition

Je vous propose d'utiliser pod.localhost comme adresse de développement, en remplacement de l'adresse pod-back qui était utilisée dans l'environnement docker, et localhost hors de docker.

compatibilité

Le serveur de développement serait donc disponible à l'adresse http://pod.localhost:8000. Les sous-domaines de localhost sont supportés par la majorité des distributions linux sans configuration particulière (voir les explications) et j'ai pu tester sur au moins Ubuntu, Debian et Archlinux.

Pour les utilisateurs de MacOS cependant, il sera nécessaire d'ajouter la ligne suivante dans /etc/hosts pour pouvoir accéder à l'adresse pod.localhost

127.0.0.1 pod.localhost
Badatos commented 4 months ago

En l'état, la PR ne passe pas les tests :

Errors in http://pod.localhost:8000/:
 • Error: net::ERR_CONNECTION_REFUSED at http://pod.localhost:8000/
azmeuk commented 4 months ago

C'est corrigé.

ptitloup commented 4 months ago

ok pour moi. Merci !

azmeuk commented 4 months ago

Je ne voulais pas proposer de trop nombreuses modifications d'un coup, mais c'est possible. J'essaie de faire ça aujourd'hui ou demain.

azmeuk commented 4 months ago

C'est bon. Il faudra penser à mettre à jour son fichier pod/custom/settings_local.py avec les nouvelles valeurs.

ptitloup commented 4 months ago

Merci, tout est mergé