Saludos amigos, hoy os traigo una de estas utilidades que nunca sabes cuando pueden ser útiles, o cuando pueden encajar en un Entorno Corporativo, se trata de Pastebin, sí, todos conocemos la página web original del proyecto que alberga miles y miles de textos copiados, pero la verdad es, si necesitamos enviar un texto de Log de un cliente, o una parte de código a un compañero, usar un servicio público no es buena ídea.
Es por ello que hoy os traigo un tutorial sobre: Cómo instalar Pastebin sobre LEMP, para que podamos usarlo a nivel corporativo, publicado o no a Internet.
- Diagrama del Proyecto
- El proyecto PHP-Pastebin en Github
- Instalar PHP-Pastebin
- Dando el retoque a Nginx para las redirecciones
- Probando PHP-Pastebin
Diagrama del Proyecto
El proyecto será instalado sobre un servidor Nginx, en este caso con 1vCPU, 1GB RAM y 15GB disco, pero se adapta a cualquier necesidad o tamaño. El servidor Nginx puede estar o no expuesto al exterior, algunos ejemplos útiles:
Departamento de Soporte o Helpdesk
Se permite trabajar con Pastebin de forma interna, todos los operadores, de Nivel 0, 1 y 2 tienen acceso al servidor y pueden consultar las Notas de sus compañeros.
Departamento de Soporte o Helpdesk, con Sedes en diferente ubicación además para Clientes
Este concepto es más grande, hay varios Niveles de Soporte, qué a su vez se separan en diferentes ubicaciones, y además se permite el acceso “controlado” a Clientes. De esta manera los Clientes pueden crear Pastebin con los Logs que les fallan, o con líneas de código que no funcionan, etc.
Perfecto para Formación, ya sean formaciones profesionales de IT o a nivel académico
Si imaginamos este servidor habilitado en un Grado Superior o Medio de Informática, encontramos el elemento ídeal para pegar cierta información de unos a otros sin usar medios como pueden ser Skype, o servicios en Cloud como puede ser Evernote. Con este servidor de manera interna, conseguimos fidelizar a los alumnos para que hagan uso de él en sus apuntes, etc. Muchas veces aquí pueden caer esas notas o “chorizos” de código o Logs que posteriormente encajan a la perfección en un Wiki interno 🙂 Además, si el profesor tiene tiempo suficiente, puede preparar ciertos Pastebin antes de comenzar el curso y simplemente facilitar la URL, o las URL al empezar el curso.
El proyecto PHP-Pastebin en Github
Hay diferentes proyectos que realizan las mismas funcionalidades, en mi caso me he decidido por PHP-pastebin, que además tienen repositorio gratuito en Github – https://github.com/atmoner/php-pastebin-v3
El proyecto no ha tenido mucha actividad en los últimos años, excepto algunas actualizaciones hace unos meses, pero cómo es código abierto, sentiros libres de hacer un fork y añadir la traducción a Castellano, o lo que vuestro despliegue necesite.
Instalar PHP-Pastebin
El proceso de instalación no tiene mucho misterio, deberemos clonar el repositorio de Github a nuestro entorno, y descomprimirlo en la carpeta adecuada donde servimos la página web:
[syntax type=”php”]root@nginx-pastebin:/home/oper# cd /usr/share/nginx/html/
root@nginx-pastebin:/usr/share/nginx/html# wget https://github.com/atmoner/php-pastebin-v3/archive/master.zip
root@nginx-pastebin:/usr/share/nginx/html# unzip master.zip
root@nginx-pastebin:/usr/share/nginx/html# mv php-pastebin-v3-master/* .[/syntax]
Una vez hecho esto iremos a la interfaz web a la pagina de instalación install.php
Recibiremos un error porque no hemos ajustado los permisos en las carpetas adecuadas, sencillo de resolver:
[syntax type=”php”]root@nginx-pastebin:/usr/share/nginx/html# chmod 777 cache
root@nginx-pastebin:/usr/share/nginx/html# chmod 777 cache/compile_tpl
root@nginx-pastebin:/usr/share/nginx/html# chmod 777 libs/db.php [/syntax]
Si pulsamos sobre el botón Permissions Test, podremos continuar.
Ahora deberemos introducir los datos de MariaDB, el otro día instalamos phpmyadmin en el servidor, podemos usar la interfaz gráfica para crear una Base de Datos y un usuario, no se muestra en este Tutorial.
Si hemos introducido todos los datos bien, nos aparecerá un mensaje como este y pulsaremos sobre Install Database.
Definiremos también nuestro Usuario de Administrador para Pastebin, el Administrador puede editar la configuración, crear otros usuarios, borrar Pastebin, etc.
Y después de 3 segundos, tendremos Pastebin instalado y listo para ser lanzado. No sin antes seguir los pasos que nos indica el Asistente.
[syntax type=”php”]root@nginx-pastebin:/usr/share/nginx/html# rm install.php
root@nginx-pastebin:/usr/share/nginx/html# rm libs/db.sql
root@nginx-pastebin:/usr/share/nginx/html# chmod 644 libs/db.php [/syntax]
Si pulsamos sobre el botón nos llevará finalmente a nuestro Pastebin, toda la interfaz puede ser editada libremente, es todo PHP y CSS, sentiros libres. 
Dando el retoque a Nginx para las redirecciones
Por defecto PHP-Pastebin trae el .htaccess listo para poner y que funcione en Apache, pero en este caso tenemos nginx en nuestro servidor LEMP. Por lo que en este caso deberemos añadir las siguientes redirecciones en el fichero de configuración de nuestro Sitio:
[syntax type=”php”]root@nginx-pastebin:/usr/share/nginx/html# vi /etc/nginx/sites-available/default [/syntax]
En la parte donde empieza location / { añadir lo siguiente, debe finalizar dentro de la llave que cierra } :
[syntax type=”php”]if (!-e $request_filename){
rewrite ^/(.*)\.html$ /?page=$1 break;
}
rewrite “^/([[:alnum:]]{8})/*$” /?page=paste&id=$1 break;
rewrite ^/([^-]*)/([^-]*)/$ /?page=$1&act=$2 break;
}
location /search {
rewrite ^/search/([^-]*)$ /?page=last-pastes&searchPaste=$1 break;[/syntax]
Después hacer un restart del servidor nginx:
[syntax type=”php”]service nginx restart[/syntax]
Probando PHP-Pastebin
La interfaz es ligera, rápida y muy potente, tiene lo necesario, sin llegar a saturarnos.
Cuando estamos creando un pastebin, tiene el campo principal donde pegamos el texto, y luego podemos observar que nos deja seleccionar:
- Tipo de formato del texto que hemos pegado.
- Si queremos que caduque después de cierto tiempo, ideal para formaciones de varios días.
- Si queremos que sea público o privado
- El nombre del Paste
- Y el Captcha para confirmar (podemos deshabilitarlo desde el Admin)
Y ya está, así es cómo queda un Pastebin que he creado con un ejemplo de Javascript, tan solo tengo que enviar a mi compañero o Contacto el link, en este caso interno, y podrá ver la nota, sin enviar todo por email, o peor, por Skype.
Si vamos a la pestaña de View all pastes, podemos ver el historial de Pastes, muy útil para encontrar Pastes.
Este Paste por ejemplo es de un Log, que en vez de enviar por correo o skype a un compañero, he pegado aquí y luego puedo mandarle la URL.
Cómo Admin tenemos varias opciones el menú de la derecha.
En Admin Settings podemos editar varios valores del Sitio en General, URL, Nombre del sitio, Idioma, etc.
En Users podemos crear nuevos usuarios para Clientes o Compañeros.
Y en Pastes podemos gestionar las entradas, borrarlas, editarlas, etc.
Eso es todo, espero que os haya gustado y os sirva en el futuro.















Muy interesante el articulo Jorge,
una pregunta que se me ocurre, así de primeras para que sea perfecto para entornos corporativos, se puede configurar la autenticación de usuarios de alguna fuente externa tipo ldap?
Gracias y un saludo