Ejecute su propio Pastebin con Stikked

Ejecute su propio Pastebin con Stikked

Si es un desarrollador de cualquier tipo, probablemente haya oído hablar de Pastebin.com, la aplicación web más utilizada para pegar y compartir fragmentos de texto. Pastebin.com es excelente, pero no es la única herramienta de pastebin que existe.

De hecho, cada vez es más común que los sitios web alojen sus propios pastebins. Te da más libertad. Hay muchas implementaciones de pastebin de código abierto, y Stikked es una de las más útiles con sus funciones avanzadas y su interfaz de usuario simplificada.

Stikked está construido con PHP y jQuery y utiliza el marco CodeIgniter.

Instalación de Stikked

Stikked requiere que su servidor esté funcionando:

  • Git
  • Nginx
  • Docker y composición de Docker
  • Para descargar la última versión de Stikked, visite la página de Stikked GitHub o vaya a su línea de comando y ejecute:

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

  • Ve a la carpeta Stikked:

cd. /Stikked

Una terminal que muestra el proceso de clonación de git para el repositorio Stikked.
  • Abra el archivo «docker-compose.yml» que se encuentra dentro usando su editor de texto favorito.
  • Desplácese a la variable «puertos:» en la categoría «servicios:» y cambie su valor a lo siguiente:

ports:
- 8080:80/tcp

Una terminal que muestra la variable de puertos para el contenedor acoplable Stikked.
  • Desplácese hasta la categoría «mysql:» y reemplace la subcategoría «comando:» con el siguiente código:

command: mysqld

Una terminal que muestra el nuevo comando mysql para el contenedor docker.
  • Abra el archivo de configuración principal de Stikked:

nano ~/Stikked/docker/stikked.php

  • Vaya a la línea que contiene la variable $config['base_url']y reemplace «localhost» con el nombre de dominio completo de su sistema. Guardar y salir del archivo.
Una terminal que muestra una URL base de ejemplo para la instancia.
  • Abra el archivo “nginx.conf” dentro del contenedor Stikked:

nano ~/Stikked/docker/nginx.conf

  • Elimine las tres líneas debajo de «Solo se permiten solicitudes a nuestro Host».
Una terminal que destaca una parte de la configuración de Nginx de la ventana acoplable para eliminar.
  • Cree su contenedor Docker ejecutando el siguiente comando:

docker compose up -d

Creación de un proxy inverso SSL Nginx

En este punto, ahora tiene una instalación de Stikked ejecutándose en el puerto 8080. Si bien puede usar esto tal como está, el contenedor básico de Stikked puede ser inseguro ya que no cifra su conexión de manera predeterminada. Para solucionar esto, debe crear un proxy inverso que pueda escuchar las conexiones entrantes que luego cifra a través de SSL.

  • Cree un nuevo archivo de configuración del sitio en «/etc/nginx/sites-disponible/»

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

  • Pegue el siguiente código dentro de su nuevo archivo de sitio. Este es un proxy inverso simple que escucha las conexiones no cifradas entrantes en el puerto 80 y redirige todas las consultas al puerto 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;
}}

Una terminal que muestra un ejemplo de configuración de proxy inverso de Nginx.
  • Cree un enlace simbólico para el archivo de su sitio dentro de “/etc/nginx/sites-enabled” y elimine el archivo de sitio predeterminado que contiene:

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

  • Pruebe su configuración de Nginx en busca de errores, luego habilite el servicio Nginx a través de systemctl:

sudo nginx -tsudo systemctl reload nginx.service

Instalación de un certificado SSL

Con su proxy inverso en funcionamiento, ahora puede solicitar un certificado SSL para su instancia de Stikked. La opción más sencilla es instalar el paquete certbot snap de Electronic Frontier Foundation.

  • Asegúrese de que sus archivos binarios básicos estén actualizados y en ejecución:

sudo snap install core
sudo snap refresh core

  • Instale certbot usando el complemento binario de su máquina Stikked:

sudo snap install certbot --classic

Una terminal que muestra el proceso de instalación de certbot.
  • Pruebe si el programa funciona correctamente vinculando su dirección de correo electrónico a certbot:

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

  • Vuelva a ejecutar certbot para crear un certificado SSL para su instancia de Stikked:

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

  • Abra un navegador web y verifique si su instancia de Stikked se ejecuta bajo SSL.
Una captura de pantalla que muestra una instancia de Stikked en funcionamiento.

Dar estilo a su instalación Stikked

Todos los datos de estilo existen en el directorio llamado «temas» en el directorio «htdocs» de su repositorio de Git. Para divertirse, eche un vistazo dentro del subdirectorio para ver algunas opciones interesantes.

  • Ingrese al repositorio Stikked Git y navegue hasta el directorio «htdocs/themes».

cd ~/Stikked/htdocs/themes

  • La mayoría de las opciones de estilo se realizan dentro de cada carpeta de temas. Por ejemplo, el tema geocities transforma su Stikked para que se vea como un sitio web en la década de 1990.
Una captura de pantalla que muestra un tema retro para Stikked.
  • Para modificar la apariencia de su instancia, primero debe cerrar su contenedor Docker:

docker compose down

  • Abra el archivo de configuración principal de su instancia con su editor de texto favorito:

nano ~/Stikked/docker/stikked.php

  • Desplácese hacia abajo hasta la línea que contiene la $config['theme']variable y cambie su valor a «cleanwhite».
Una terminal que muestra la variable de tema para la instancia actual.
  • Guarde su archivo de configuración principal y vuelva a cargar su contenedor Docker:

docker compose up -d

  • Abra un navegador web y cargue su nueva página web. Aquí está mi página «Crear» después de cargar el tema cleanwhite.
Una captura de pantalla que muestra a Stikked ejecutándose con un tema blanco limpio.

Características

Stikked tiene una serie de características interesantes que lo hacen destacar entre la multitud de otros scripts de pastebin.

En primer lugar, abarca toda la gama en lo que respecta al resaltado de sintaxis. Stikked admite una enorme lista de lenguajes de programación y secuencias de comandos, desde C hasta Bash. Independientemente de lo que esté codificando, su instalación de Stikked lo tiene cubierto.

Una captura de pantalla que muestra las funciones de resaltado de sintaxis de Stikked.

El idioma de cada fragmento se muestra en una tabla en la página «Reciente»; si el cartel no especificó un idioma para pegar, entonces se etiqueta como «texto». La tabla también muestra el título, el nombre del cartel y la actualidad, junto con un icono de RSS. La fuente RSS se encuentra en your-stikked-installation.com/lists/rss.

Una captura de pantalla que muestra una fuente RSS simple para la instancia de Stikked.

La página de «Tendencias» es casi idéntica pero con la adición de una columna de «éxitos» y sin fuente RSS. Los hits parecen calcularse en función de las visitas de direcciones IP únicas.

Una captura de pantalla que muestra la lista de pastas de tendencia en la instancia actual.

Cuando crea un pegado, tiene la opción de establecer una fecha de vencimiento, crear una URL corta usando el servicio en bit.ly y/o hacer que la publicación sea privada. Tenga en cuenta que un pegado «privado» no es verdaderamente privado; cualquier usuario que tenga la URL de pegado puede verla, a menos que haya habilitado la autenticación LDAP; en ese caso, todos los usuarios registrados con la URL pueden verla. «Privado» solo significa que la publicación no aparecerá en las páginas Recientes o Tendencias.

Una captura de pantalla que muestra un pegado privado.

Dejando a un lado la seguridad, Stikked proporciona algunas utilidades interesantes para ver una pasta. Estoy especialmente satisfecho con el código de inserción.

Una captura de pantalla que muestra un fragmento de inserción de ejemplo para el pegado actual.

También puede responder a pegados y agregar sus propias ediciones desde un formulario debajo del pegado original. El único inconveniente de esto es que las respuestas no se vinculan con la publicación original; si su pastebin tiene muchas publicaciones diferentes y respuestas hechas en diferentes momentos, es fácil perder el rastro de su estructura. Solo puedo esperar que el desarrollador en algún momento introduzca respuestas en hilos.

Una última característica es el control de spam, al que Stikked se refiere como «spamadmin». Configúrelo ingresando las credenciales en “docker/stikked.php” en las líneas 79 y 80:

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

Vaya a your-stikked-installation.com/spamadmin para iniciar sesión. Allí puede ver qué pegados provienen de qué direcciones IP, eliminar pegados y bloquear rangos de IP.

Una captura de pantalla que muestra el panel de control de spamadmin para Stikked.

API

La API de Stikked le permite pegar desde clientes de pastebin. La URL de API para usar en su cliente es your-stikked-installation.com/api/create.

Un ejemplo básico es usar el comando cURL para cargar un archivo llamado «smalltalk.st», configurando el título, el nombre, la privacidad, el idioma y el tiempo de vencimiento en minutos:

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

Esto devolverá la URL de la pasta.

Una captura de pantalla que muestra un ejemplo de pegado realizado con la API Stikked.

Si desea una manera fácil de recopilar y compartir fragmentos de texto en su propio sitio web, le recomiendo que pruebe Stikked.

En ese sentido, una forma de obtener rápidamente algunos fragmentos de texto para compartir es aprender un nuevo lenguaje de programación. Aprenda cómo puede escribir scripts de Bash consultando nuestra sencilla guía para principiantes . También puede ampliar este conocimiento leyendo nuestra inmersión profunda en las variables de Bash y sus usos .

Crédito de la imagen: Christopher Gower a través de Unsplash . Todas las alteraciones y capturas de pantalla por Ramces Red.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *