Exécutez votre propre Pastebin avec Stikked

Exécutez votre propre Pastebin avec Stikked

Si vous êtes un développeur de quelque sorte que ce soit, vous avez probablement entendu parler de Pastebin.com, l’application Web la plus utilisée pour coller et partager des extraits de texte. Pastebin.com est génial, mais ce n’est pas le seul outil pastebin disponible.

En fait, il devient de plus en plus courant que les sites Web hébergent leurs propres pastebins. Cela vous donne plus de liberté. Il existe de nombreuses implémentations de pastebin open source, et Stikked est l’une des plus utiles avec ses fonctionnalités avancées et son interface utilisateur simplifiée.

Stikked est construit avec PHP et jQuery et utilise le framework CodeIgniter.

Installation de Stikked

Stikked nécessite que votre serveur soit en cours d’exécution :

  • Gite
  • Nginx
  • Docker et Docker Compose
  • Pour télécharger la dernière version de Stikked, visitez la page Stikked GitHub ou accédez à votre ligne de commande et exécutez :

git clone https://github.com/claudehohl/Stikked.git

  • Allez dans le dossier Stikked :

cd. /Stikked

Un terminal montrant le processus de clonage git pour le référentiel Stikked.
  • Ouvrez le fichier « docker-compose.yml » à l’intérieur à l’aide de votre éditeur de texte préféré.
  • Faites défiler jusqu’à la variable « ports : » sous la catégorie « services : » et modifiez sa valeur comme suit :

ports:
- 8080:80/tcp

Un terminal affichant la variable ports pour le conteneur docker Stikked.
  • Faites défiler jusqu’à la catégorie « mysql : » et remplacez la sous-catégorie « command : » par le code suivant :

command: mysqld

Un terminal affichant la nouvelle commande mysql pour le conteneur docker.
  • Ouvrez le fichier de configuration principal de Stikked :

nano ~/Stikked/docker/stikked.php

  • Allez à la ligne qui contient la variable $config['base_url']et remplacez « localhost » par le nom de domaine complet de votre système. Enregistrez et quittez le fichier.
Un terminal affichant un exemple d'URL de base pour l'instance.
  • Ouvrez le fichier « nginx.conf » dans le conteneur Stikked :

nano ~/Stikked/docker/nginx.conf

  • Supprimez les trois lignes sous « Seules les demandes adressées à notre hôte sont autorisées ».
Un terminal mettant en avant une partie de la configuration docker Nginx à supprimer.
  • Créez votre conteneur Docker en exécutant la commande suivante :

docker compose up -d

Créer un proxy inverse SSL Nginx

À ce stade, vous avez maintenant une installation Stikked exécutée sur le port 8080. Bien que vous puissiez l’utiliser tel quel, le conteneur Stikked de base peut ne pas être sécurisé car il ne crypte pas sa connexion par défaut. Pour résoudre ce problème, vous devez créer un proxy inverse capable d’écouter les connexions entrantes qu’il crypte ensuite via SSL.

  • Créez un nouveau fichier de configuration de site sous « /etc/nginx/sites-available/ »

sudo nano /etc/nginx/sites-available/stikked

  • Collez le code suivant dans votre nouveau fichier de site. Il s’agit d’un simple proxy inverse qui écoute les connexions entrantes non chiffrées sur le port 80 et redirige toutes les requêtes vers le port 8080.

server {
listen 80;
listen [::]:80;

root /var/www/html;
server_name my-stikked-installation.com;


location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:8080;
}}

Un terminal montrant un exemple de configuration de proxy inverse Nginx.
  • Créez un lien symbolique pour votre fichier de site dans « /etc/nginx/sites-enabled » et supprimez le fichier de site par défaut à l’intérieur :

sudo ln -s /etc/nginx/sites-available/stikked /etc/nginx/sites-enabled/

  • Testez votre configuration Nginx pour détecter d’éventuelles erreurs, puis activez le service Nginx viasystemctl :

sudo nginx -tsudo systemctl reload nginx.service

Installation d’un certificat SSL

Avec votre proxy inverse opérationnel, vous pouvez maintenant demander un certificat SSL pour votre instance Stikked. L’option la plus simple consiste à installer le package snap certbot de l’Electronic Frontier Foundation.

  • Assurez-vous que vos fichiers binaires snap principaux sont à jour et en cours d’exécution :

sudo snap install core
sudo snap refresh core

  • Installez certbot à l’aide du binaire snap de votre machine Stikked :

sudo snap install certbot --classic

Un terminal montrant le processus d'installation de certbot.
  • Testez si le programme fonctionne correctement en liant votre adresse e-mail à certbot :

sudo certbot register --agree-tos -m ramces@email.invalid

  • Exécutez à nouveau certbot pour créer un certificat SSL pour votre instance Stikked :

sudo certbot --nginx -d my-stikked-installation.com

  • Ouvrez un navigateur Web et vérifiez si votre instance Stikked fonctionne sous SSL.
Une capture d'écran montrant une instance Stikked fonctionnelle.

Styliser votre installation Stikked

Toutes les données de style existent dans le répertoire appelé « thèmes » sous le répertoire « htdocs » de votre référentiel Git. Pour les coups de pied, jetez un oeil à l’intérieur du sous-répertoire pour voir quelques choix intéressants.

  • Allez dans le référentiel Stikked Git et accédez au répertoire « htdocs/themes ».

cd ~/Stikked/htdocs/themes

  • La plupart des choix de style sont effectués dans chaque dossier de thème. Par exemple, le thème geocities transforme votre Stikked pour ressembler à un site Web dans les années 1990.
Une capture d'écran montrant un thème rétro pour Stikked.
  • Afin de modifier l’apparence de votre instance, vous devez d’abord fermer votre conteneur Docker :

docker compose down

  • Ouvrez le fichier de configuration principal de votre instance à l’aide de votre éditeur de texte préféré :

nano ~/Stikked/docker/stikked.php

  • Faites défiler jusqu’à la ligne qui contient la $config['theme']variable et changez sa valeur en « cleanwhite ».
Un terminal affichant la variable de thème pour l'instance actuelle.
  • Enregistrez votre fichier de configuration principal et rechargez votre conteneur Docker :

docker compose up -d

  • Ouvrez un navigateur Web et chargez votre nouvelle page Web. Voici ma page « Créer » après avoir chargé le thème cleanwhite.
Une capture d'écran montrant Stikked en cours d'exécution avec un thème cleanwhite.

Caractéristiques

Stikked a un certain nombre de fonctionnalités intéressantes qui le distinguent de la foule des autres scripts pastebin.

Tout d’abord, il couvre toute la gamme en ce qui concerne la coloration syntaxique. Stikked prend en charge une énorme liste de langages de programmation et de script, de C à Bash. Quoi que vous codiez, votre installation Stikked vous couvre.

Une capture d'écran montrant les fonctionnalités de coloration syntaxique de Stikked.

La langue de chaque extrait est affichée dans un tableau sur la page « Récent » ; si l’affiche n’a pas spécifié de langue pour un collage, elle est étiquetée « texte ». Le tableau affiche également le titre, le nom de l’affiche et la récence, ainsi qu’une icône RSS. Le flux RSS se trouve à your-stikked-installation.com/lists/rss.

Une capture d'écran montrant un flux RSS nu pour l'instance Stikked.

La page « Tendance » est presque identique mais avec l’ajout d’une colonne « hits » et pas de flux RSS. Les visites semblent être calculées en fonction des visites provenant d’adresses IP uniques.

Une capture d'écran montrant la liste des collages de tendance dans l'instance actuelle.

Lorsque vous créez un collage, vous avez la possibilité de définir une date d’expiration, de créer une URL courte à l’aide du service bit.ly et/ou de rendre la publication privée. Notez qu’un collage « privé » n’est pas vraiment privé ; tout utilisateur disposant de l’URL de la pâte peut la voir, sauf si vous avez activé l’authentification LDAP – dans ce cas, chaque utilisateur enregistré avec l’URL peut la voir. « Privé » signifie uniquement que la publication n’apparaîtra pas sur les pages Récent ou Tendance.

Une capture d'écran montrant un collage privé.

Sécurité mise à part, Stikked fournit quelques utilitaires soignés pour visualiser une pâte. Je suis particulièrement satisfait du code d’intégration.

Une capture d'écran montrant un exemple d'extrait de code intégré pour le collage actuel.

Vous pouvez également répondre aux collages et ajouter vos propres modifications à partir d’un formulaire sous le collage d’origine. Le seul inconvénient est que les réponses ne renvoient pas au message d’origine ; si votre pastebin contient de nombreux messages différents et des réponses faites à des moments différents, il est facile de perdre la trace de leur structure. Je ne peux qu’espérer que le développeur introduira à un moment donné des réponses filetées.

Une dernière fonctionnalité est le contrôle du spam, que Stikked appelle « spamadmin ». Configurez-le en entrant les informations d’identification dans « docker/stikked.php » aux lignes 79 et 80 :

$config['spamadmin_user'] = 'stikked';
$config['spamadmin_pass'] = 'stikked';

Allez sur your-stikked-installation.com/spamadmin pour vous connecter. Là, vous pouvez voir quels collages proviennent de quelles adresses IP, supprimer des collages et bloquer des plages d’adresses IP.

Une capture d'écran montrant le panneau de contrôle spamadmin pour Stikked.

API

L’API de Stikked vous permet de coller depuis des clients pastebin. L’URL de l’API à utiliser dans votre client est your-stikked-installation.com/api/create.

Un exemple de base consiste à utiliser la commande cURL pour télécharger un fichier appelé « smalltalk.st », en définissant le titre, le nom, la confidentialité, la langue et le délai d’expiration en minutes :

curl -d title='cURL test' -d name='Ramces' -d private=1 -d lang=c -d expire=45 --data-urlencode text@count.c https://my-stikked-installation.com/api/create

Cela renverra l’URL de la pâte.

Une capture d'écran montrant un exemple de pâte réalisée à l'aide de l'API Stikked.

Si vous voulez un moyen simple de collecter et de partager des extraits de texte sur votre propre site Web, je vous recommande d’essayer Stikked.

Sur cette note, une façon d’obtenir rapidement des extraits de texte à partager consiste à apprendre un nouveau langage de programmation. Apprenez à écrire des scripts Bash en parcourant notre guide simple pour les débutants . Vous pouvez également approfondir ces connaissances en lisant notre analyse approfondie des variables Bash et de leurs utilisations .

Crédit image : Christopher Gower via Unsplash . Toutes les modifications et captures d’écran par Ramces Red.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *