まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Changer la date de publication d'une vidéo Peertube

J'ai récemment crée plusieurs chaînes Peertube sur mon serveur auto-hébergé (dans ma cuisine donc hein, pas un truc loué dans une salle machine).
Plusieurs afin de cloisonner un peu les sujets des vidéos publiées, à défaut de fonctionnalité « playlist » (disponible pour bientôt), bien que le raccourci « locales » présente tout par date décroissante.
Et autant en publiant au long court, comme un blog, les vidéos sont disponibles chronologiquement, autant lorsqu'on a déjà un stock de vidéos à mettre à disposition, il peut-être utile de pouvoir anti-dater les vidéos, et ce pour deux raisons :
- Je veux lister telle vidéo avant telle autre dans la liste des vidéos locales.
- Je veux simuler la publication des vidéos de l'époque, car Peertube n'existait pas encore.

J'ai donc gratté un peu, car une telle fonctionne n'existe pas, et conclu assez rapidement qu'il me faudrait éditer la base de donnée PostgreSQL de Peertube.
peertube.png

Prérequis :

  • On a besoin du nom de la base, du nom d'utilisateur et du mot de passe associé.

En fonction du type d'installation, vous n'aurez peut-être pas eu accès à ces infos. C'est le cas avec Yunohost qui m'a permis d'installer Peertube en un click !
Il faut donc consulter le fichier production.yaml pour y lire ces infos :

cat /var/www/peertube/config/production.yaml
# Your database name will be "peertube"+database.suffix
database:
  hostname: 'localhost'
  port: 5432
  suffix: '_peertube'
  username: 'peertube'
  password: 'xxxxxxxxxxx'

Le mot de passe est en clair, j'ai mis des xxxxx à la place.

Précautions :

  • Avant de faire quoique ce soit, il est sage de sauvegarder la base de donnée.

On peut le faire avec Yunohost par la fonctionnalité de backup > app, qui fait qu'on retrouve la base sous forme de fichier texte /apps/peertube/backup/db.sql dans l'archive.
Pour le faire manuellement, l'équivalent est cette commande :

pg_dump --file peertubeBasePostgreSQL_20181201.txt -d peertube_peertube -U peertube

Il peut être intéressant d'en profiter pour faire aussi une sauvegarde dans le format custom, l'intérêt peut se révéler utile en cas de soucis particulier, comme indiqué ici.

pg_dump --format=custom --file peertubeBasePostgreSQL_20181201.dump -d peertube_peertube -U peertube


Logiciel :

Pour éditer la base, j'ai choisis le logiciel pgAdmin qui sera installé sur un poste client du réseau local, car évidemment, le serveur qui fait tourner Peertube ne dispose pas d'interface graphique.

sudo apt install pgadmin3
  • Une fois installé, via le menu « Fichier > Ajouter un serveur…» on va pourvoir renseigner les infos utiles récoltées précédemment pour se connecter à la base :

pgadmin.png

Dans « Hôte » on renseigne donc l'adresse IP locale du serveur.
À ce stade, cliquer sur « Valider » pour se connecter risque de ne pas fonctionner !

Autorisation d'accès à la base :

  • Pour autoriser l'édition de la base par un logiciel tiers, il faut éditer postgresql.conf.

Par défaut l'accès est totalement désactivé :

nano /etc/postgresql/9.6/main/postgresql.conf

J'ai laissé la première ligne telle quelle (et donc commentée), pour écrire cette seconde et permettre l'accès à toutes machines :

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'          # what IP address(es) to listen on;
  • Il faut ensuite autoriser l'accès à la machine cliente (sur laquelle est installé pgAdmin donc)
nano /etc/postgresql/9.6/main/pg_hba.conf

Et ajouter la ligne suivante en renseignant l'adresse IP du client :

host    all            peertube            AdresseIPClient/24            trust
  • Et enfin redémarrer postgresql :
service postgresql restart
  • Dernière chose, il faut ouvrir le port 5432 sur le firewall du serveur (c'est facile avec Yunohost, sinon avec ipTable)

Éditer la base :

  • Nous voici donc connecté, il faut maintenant se rendre sur la table « video » :

pgadmin2.png

  • Et avec un click droit sur la table « video », cliquer : « Afficher les données > Visualiser toutes les lignes ».

Une fenêtre va s'ouvrir et afficher les données de la table, à savoir toutes les vidéos, autant locale que celles des autres instances abonnées.
pgadmin3.png
Ici j'ai donc retrouvé ma première vidéo de test, et changé la date dans la colonne « publishedAT » pour la passer en 2014, ensuite je vais rafraîchir ma page Peertube et c'est instantané, la vignette de la vidéo est déplacée, et il est bien indiqué il y a 4 ans - 6 vues.

  • Voilà, c'est fait, mais c'est local pour le moment, en effet pour que cette modif se répercute sur les autres instances, il faut aussi aller éditer la vidéo sur l'interface Peertube, afin de la « mettre à jour ». Pas besoin de faire de modif, juste « Mettre à jour suffit ».

C'était facile, mais il aura fallu chercher un peu comment tout cela fonctionne, pour moi qui n'ai jamais touché à du PostgreSQL (4h en comptant la rédaction de cette documentation).

  • Astuce :

Pour retrouver facilement une vidéo, on peut en parallèle de pgAdmin ouvrir le fichier texte de sauvegarde de la base (bosser sur une copie, c'est mieux !) et faire une recherche par mot clef. Une fois la ligne retrouvée, relever le N° en début de ligne. Ce N° correspond à la première colonne « id [PK] serial » dans pgAdmin.

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet