[PeerTube] Partager iframe site externe

:fr: Bonjour à tous et toutes, j’ai essayer d’intégrer l’iframe d’une vidéo de mon espace peertube au sein d’un autre site mais cela n’a pas fonctionné. je me suis tournée vers la communauté de framasoft et il semblerait que ce soit dû à la configuration du serveur nginx (cf ici : https://framacolibri.org/t/peertube-grav-iframe/4987/8?u=plumf) et au fait que l’iframe n’est pas accessible aux autre domaines que le mien.

Comment puis je solutionner cela pour permettre l’utilisation d’iframe sur d’autres sites ? Merci d’avance

:uk: Hello everyone, I tried to integrate the iframe of a video from my peertube space into another site but it didn’t work. I turned to the framasoft community and it seems to be due to the configuration of the nginx server (see here: https://framacolibri.org/t/peertube-grav-iframe/4987/8?u=plumf) and the fact that the iframe is not accessible to domains other than mine.

How can I solve this to allow the use of iframe on other sites? Thank you in advance

À mon avis, il te faut rajouter cette ligne dans la configuration nginx de peertube :

more_set_headers "X-Frame-Options : ALLOWALL";

Comme ici :

1 Like

Je ne suis pas très à l’aise pour modifier les fichier comme ça à la volée… Ou puis je trouver ce fichier ?

Il s’agit probablement de /etc/nginx/conf.d/ton.domaine.tld.d/peertube.conf

J’ai trouvé ces lignes là qui semble correspondre :

add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Methods’ ‘GET, OPTIONS’;
add_header ‘Access-Control-Allow-Headers’ ‘Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type’;

Je rajoute la ligne de code en dessous ?

yupyup

Puis nginx -t, et si ça a l’air ok, systemctl reload nginx

1 Like

Tout c’est bien passé mais ça ne fonctionne pas pour autant… Toujours un block vide à la place de l’iframe…

Salut Plumf,

As-tu ajouté la ligne suivante ?

more_set_headers "X-Frame-Options : ALLOWALL";

Si oui, essaye de la remplacer par celle qui suit

add_header 'X-Frame-Options' 'ALLOWALL';

Ensuite, comme l’a proposé Aleks, exécute la commande nginx -t pour voir si il n’y a aucune erreur dans la configuration. Et enfin, recharge le web server avec systemctl reload nginx. Soit attentif à ce qu’aucun message d’erreur n’apparaisse après exécution de ces commandes.

Apres changement avec add_header idem pas de problème ou d’errer avec nginx -t

et j’ai redemarré le service et …

…J’ai maintenant une erreur Nginx 502 en arrivant sur l’adresse de peertube.
… Rien n’a changé vidéo toujours inaccessible )=

Quel est le chemin d’accès à ce fichier de configuration que tu modifies ? (Je me demande si c’est le bon)

Avant tout, il y a longtemps que j’ai configuré un serveur web et encore plus un sous nginx. Sois indulgent. :wink:

Enfin, bref! J’ai jeté un oeil sur le fichier de configuration nginx qui est proposé par défaut sur le dépôt officiel de Chocobuzz.

Je remarque que les lignes dont tu nous a parlé (celles sous lesquelles tu as écrit la ligne que nous t’avons recommandé) sont incluses dans un bloc location. Un bloc est reconnaissable aux accolades { }.

Donc, si je ne me trompe pas, en remontant un peu dans le fichier, tu devrais trouver une accolade ouvrante { à la fin d’une ligne qui devrait commencer par location ~ ^/static/(thumbnails|avatars)/.

Cette ligne nous signale que le bloc contient des règles de configuration qui seront appliquées que pour les parties du sites dont l’URL débute par /static/thumbnails ou /static/avatars. Si tu as bien placé la ligne de configuration dans ce bloc, il n’est normal que cela ne fonctionne pas car, dans ton cas, la partie devrait être /videos/embed.

Voilà pour l’explication technique… pas du tout claire :sweat_smile:

Pour essayer de résoudre ton problème, je te propose de faire ceci (en considérant que le fichier que tu modifies est bien celui qui est utilisé par nginx. :smile:) :

  1. Supprime la ligne que nous t’avons fait ajouter auparavant
  2. Repère la ligne qui commence par error_log /var/log/nginx/peertube... vers le début du fichier
  3. En dessous, écrit le code ci-dessous
location ^~ /videos/embed {
    add_header 'X-Frame-Options' 'ALLOWALL';
}
  1. Teste la configuration et recharge le serveur web comme précédemment.

Attention, après le ^, c’est une vaguellete ~ qu’il faut mettre.

Je dis de mettre ce code de configuration en dessous de la ligne error_log parce qu’il y a de forte chance que la ligne error_log ne se trouve déjà pas dans un bloc de configuration d’une sous-partie du site et que le code que je te fais rajouter s’appliquera bien.

Tiens nous au courant

Un grand merci de tous le temps que tu m’accordes pour mon serveur et sa configuration, je ne suis pas non plus facilitant il faut le reconnaitre… Donc juste merci.

Je n’arrive pas à trouver la ligne

J’ai bien vue le jeu d’accolade j’ai posté la config de mon serveur sur un pastbin ici : https://pastebin.com/UZJizMxi

D’un point de vue grammaticale la vaguelette est un tilde :wink: Merci encore de ton aide

Pas de soucis, j’aime bien aider. Plus facilement encore quand la personnne est accomodante et ne rechigne pas à apprendre. Et ainsi j’acquiert encore d’autres compétences. Des cordes de rechange à mettre à mon arc. On ne sait jamais :wink:

Merci pour le pastebin, je vois mieux ta configuration.

Je te confirme que les premières modifications que nous t’avons fait faire ne devaient pas se trouver là où tu les as mises. De plus, je ne peux que constater que cela ressemble un peu au fichier de configuration que j’ai vu sur le site officiel. Mais pas totalement, car, en effet, tu n’as pas de ligne avec error_log.

L’endroit où je pense qu’il faille mettre les lignes de configuration que je t’ai proposées en dernier lieu, se situe juste au dessus de la ligne qui contient # Websocket tracker

Je mettrai les lignes là, car il me semble qu’il y a une réécriture de l’URL de base dans le bloc précédent cette partie. Et que cette réécriture pointe finalement vers le dossiers videos (i.e. rewrite ^/static/webseed/(.*)$ /videos/$1 break;). Les mettre juste après cette réécriture devrait nous garantir que l’entête x-frame-options: ALLOWALL soit appliquée dans ce cas là également.

Donc, dans ton cas, j’écrirais:

   try_files $uri /;
   
   
}

# Autoriser les iframes vers les vidéos hébergées à partir de n'importe quel site
location ^~ /videos/embed {
    add_header 'X-Frame-Options' 'ALLOWALL';
}

# Websocket tracker

Ah, bah, j’apprends quelque-chose. Je pensais que tilde était le terme anglais de la vaguelette (dont en fait j’ignorais le nom réel français).

Oh, et si parfois, j’ai l’air scolaire, ce n’est pas pour t’infantiliser mais simplement au cas où quelqu’un n’aurait pas toutes les connaissances nécessaires pour comprendre tout ce que je dis. Et donc, je rajoute des explications pour que la personne qui pourrait également être intéressée par le sujet soit le moins perdue possible.

Au contraire je te remercie d’expliquer et d’expliciter tes réponses ça me permet de comprendre pourquoi et comment (ça sert à ça les forum) donc non après cet épisode de configuration je dirais plus

Mais je m’en sors un petit peu avec la modification des fichiers à la volée !

Mais toujours pas de résultat cela ne change rien … toujours pas d’iframe visible … page demo ici avec une iframe sous les deux premiers titres

Sorry pour le délais de réponse. Et sorry pour ma réponse précédente. Comme j’ai dit plus haut, ça fait longtemps que je n’ai plus configuré un serveur web et surtout, un nginx.

Et je me rends compte de mon erreur que maintenant.

L’opérateur ^~ est là pour dire que le bloc de configuration sous-jacent doit s’appliquer aux URI qui ne correspondent pas à l’expression à droite de l’opérateur. Donc dans notre cas elle ne s’appliquera que si ce n’est pas un URL qui contient /videos/embed.

Supprime l'opérateur et retente le coup. Donc, écris cela:
# Autoriser les iframes vers les vidéos hébergées à partir de n'importe quel site
location /videos/embed {
    add_header 'X-Frame-Options' 'ALLOWALL';
}

J’édite mon post ici pour barrer mes explications précédentes. Car, après relecture de la directive location dans la documentation officielle de nginx, l’opérateur ^~ est utilisé pour arrêter la recherche d’une correspondance de l’URI avec d’autres directvies location (dont le type est une expression régulière). Ce qui revient à dire qu’avec ou sans, cela revient (presque au même) mais qu’il est tout de même préférable de laisser l’opérateur ^~ pour un peu d’optimisation.

Même si je veux trouver une solution à ce problème aucun problèmes de temporalités. :smile:

Après les modifications suivant les dernières recommandations, toujours un iframe blanc mais quand je tente de me rendre sur l’interface de mon peertube je tombe sur la page d’accueil de Nginx et son eternel : Welcome to niginx … En souhaitant une bonne soirée

[Add-on] Malgrès le retours au fichier initiale et un reload des services la page d’accueil du serveur reste sur Welcome to nginx

La suite au petit déjeuner.

Bonjour Plumf,

Grr, c’est bien casse-tête, tout ça! :slight_smile:

En tout cas, lorsque je vais sur ton instance peertube, j’arrive bien à une page avec les thumbnails des vidéos. Si ça peut te rassurer.

Quoi qu’il en soit, j’ai barré mon explication précédente. Elle était mauvaise. Même si les changements que je t’avais proposés restaient tout de même valides.

Cependant, je n’arrive pas à imaginer la raison pour laquelle cela ne fonctionne pas. La dernière modification (la précédente même), aurait du forcer le server web à déterminer que l’URI source corresponde à la location /videos/embed et à appliquer l’entête x-frame-options

Salut Plumf,

Hé non, je ne t’abandonne pas ! :slight_smile:

Ce qui m’ennuie dans ton pastebin, c’est que je ne vois pas les directives http ou server

Normalement, tu devrais avoir quelque chose comme ceci dans ton fichier de configuration:

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name peertube.example.com;

Mais cela ne s’y trouve pas dans ton pastebin. Peut-être as-tu coupé cette partie.

Car la question que je me pose, ou plutôt, le schéma que je m’imagine, c’est que ta configuration est scindée en deux fichiers: un avec les directives http et server, qui fait usage du second fichier (le contenu de ton pastebin) via une directive include.

Quel fichier as-tu modifié pour l’instant ? Quel est son chemin d’accès ?

l’instance sur laquel je bricole est une de mes instances encore au travail sur un projet ici. Avec la belle page d’accueil de Nginx :smile:

J’ai modifié le fichier situé ici :

/etc/nginx/conf.d/tube.metadoc.cc/peertube__2.conf

C’est le seul endroit ou j’ai modifié quelque chose, le fichier se nomme peertube__2 car j’ai plusieurs instances PeerTube.

OK. Je comprends pourquoi je vois toujours ton site, vu que je visitais toujours tube.open-plug.eu. :slight_smile:

Mais ce fichier peertube__2.conf doit bien être référencé dans un autre fichier de configuration, non ?

Car je ne vois nulle part de directive server dans ce que tu nous as montré. J’ai l’impression que ce fichier de configuration n’est pas du tout utilisé par ton serveur nginx.

D’après moi, tu devrais avoir un fichier qui contiendrait une ligne à peu près comme celle-ci:

include peertube__2.conf;

Un moyen de le savoir serait de te positionner au niveau de /etc/nginx/conf.d et d’exécuter la commande suivante :

grep -r -i 'peertube__2\.conf' *

Si jamais tu n’as rien d’afficher suite à cette commande qui t’indiquerai le fichier où serait inclus peertube__2.conf, c’est qu’il y a de forte chance que celui-ci ne soit pas utilisé au sein de ton serveur web et que les modifications que tu avais faites dedans n’ont donc eu aucun impact. (Par ailleurs, le fait que tu ais un résultat ne veut pas dire “Charette! Il est bien utilisé” :wink: )