Comment installer des plugins Discourse hébergés dans des dépôts privés à l'aide d'une clé SSH ?

J’ai suivi le guide officiel de Discourse pour installer des plugins sur un site auto-hébergé (tutoriel officiel), mais il date de 2014, et je suis quasiment certain que beaucoup d’informations sont maintenant obsolètes.

J’ai également essayé certaines des solutions plus récentes et recommandées partagées dans les réponses de la discussion, comme le montage de clés SSH via des volumes et la configuration de l’accès SSH pendant le processus de bootstrap. Malheureusement, malgré ces efforts, je n’ai toujours pas réussi à cloner et installer des plugins depuis mes dépôts Git privés en utilisant SSH.

Si quelqu’un a une méthode à jour et fonctionnelle ou une meilleure pratique pour utiliser des clés SSH afin d’installer des plugins Discourse depuis des dépôts privés, vos conseils seraient grandement appréciés.

Existe-t-il un moyen de télécharger les fichiers du plugin directement sur le serveur au préalable, afin que lors du démarrage de Discourse, il n’ait pas besoin de les récupérer à nouveau sur GitHub ?

C’est toujours l’approche valide

Je l’utilise tout le temps.

2 « J'aime »

Vous pouvez probablement cloner les fichiers directement dans /plugins, puis exécuter les migrations nécessaires, mais vous ne recevrez peut-être pas les mises à jour des plugins.

Merci ! Mais la raison pour laquelle je préfère utiliser SSH est que les jetons OAuth ne permettent pas de séparer les permissions de lecture et d’écriture — ils donnent toujours plus d’accès que nécessaire.

Avec SSH, je peux générer une clé de déploiement en lecture seule, ce qui est plus sûr et correspond mieux au principe du moindre privilège.

Merci pour la suggestion !

J’ai en fait essayé de cloner le plugin directement dans /var/www/discourse/plugins, mais cela n’a pas fonctionné — même lorsque j’ai monté le dossier du plugin depuis l’hôte vers ce chemin à l’intérieur du conteneur.

Il semble que lors du démarrage, Discourse s’attende à récupérer les plugins via Git, et le placement manuel des fichiers du plugin ne contourne pas cette étape.

Si vous avez eu du succès avec cette méthode, j’aimerais en savoir plus sur les détails.

1 « J'aime »

Je crois savoir qu’il y a des problèmes si vous clonez directement (je pense ici), c’est pourquoi l’utilisation des jetons pour cloner est la méthode recommandée.

Mais je pense que vous voudrez essayer ceci, si vous voulez utiliser des clés SSH :

Merci, mais j’ai déjà essayé la méthode décrite dans le guide officiel de 2014 que vous avez lié — et je peux confirmer qu’elle ne fonctionne plus pour accéder aux dépôts privés via les clés SSH lors de l’amorçage.

J’ai également essayé la nouvelle approche mentionnée dans l’une des réponses (monter la clé SSH dans le conteneur et configurer core.sshCommand dans after_code), mais malheureusement, cela a également échoué dans mon cas. Discourse génère toujours une erreur de permission SSH lors de la tentative de clonage du plugin privé.

S’il existe un moyen fiable et actuellement fonctionnel d’utiliser un dépôt privé avec SSH dans une configuration de production, j’apprécierais grandement des conseils plus à jour.

Vous pourriez simplement le cloner localement et soit le monter dans le répertoire des plugins, soit le copier à partir d’un montage temporaire dans le répertoire des plugins.

Vous pouviez auparavant obtenir une URL GitHub avec des informations d’identification intégrées dans l’URL. Je l’ai déjà fait.