Monitorizar el uso de disco en Ubuntu Server con el script CGI Philesight
Antes de empezar
- Requisitos: un servidor Ubuntu con pila LAMP (Linux, Apache, MySQL, PHP) y acceso a la terminal. Se asume que la raíz web es /var/www.
- Definición rápida: Philesight es un script Ruby que genera gráficos visuales del uso del disco basados en un índice de ficheros.
Pasos principales
A continuación están los comandos y archivos que hay que modificar. Ejecuta cada bloque en la terminal con permisos sudo cuando se indique.
1) Instalar dependencias
Ejecuta:
sudo apt-get install libdb4.2-ruby1.8 libcairo-ruby1.8 libapache2-mod-perl2 libapache2-mod-php5 ruby
2) Habilitar CGI si no está activo
sudo mkdir /usr/lib/cgi-bin
sudo chmod 755 /usr/lib/cgi-bin
3) Editar la configuración del sitio de Apache
sudo nano /etc/apache2/sites-available/default
Asegúrate de que existe una sección como esta (mantén exactamente los valores dentro del bloque):
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Guarda y cierra (Ctrl+X, luego Y).
4) Descargar Philesight
mkdir ~/downloads
cd ~/downloads
sudo wget http://zevv.nl/play/code/philesight/philesight-20120427.tgz
5) Descomprimir y mover
tar -xvf philesight-20120427.tgz
sudo mv philesight-20120427 philesight
cd philesight
6) Instalar los binarios Ruby
sudo mv philesight /usr/bin/philesight
sudo mv philesight.rb /usr/bin/philesight.rb
sudo chmod a+x /usr/bin/philesight
sudo chmod a+x /usr/bin/philesight.rb
7) Asegurar que el script localiza su ruta cuando lo ejecuta cron
sudo nano /usr/bin/philesight
Cambia la línea que actualmente lee:
require 'philesight'
por:
require '/usr/bin/philesight'
Guarda y cierra.
8) Crear la base de datos de índices
cd /usr/bin/
sudo /usr/bin/philesight --db /usr/lib/philesightdb --index /
Nota: este paso puede tardar según la cantidad de datos en el disco.
9) Preparar los archivos web
cd ~/downloads/philesight
sudo nano philesight.cgi
Edita la variable para que apunte al índice:
$path_db = "/usr/lib/philesightdb"
Guarda y cierra.
10) Instalar el CGI y permisos
sudo mv philesight.cgi /usr/lib/cgi-bin/philesight.cgi
sudo chmod a+x /usr/lib/cgi-bin/philesight.cgi
Hacer disponibles los scripts Ruby al CGI:
sudo ln -s /usr/bin/philesight.rb /usr/lib/cgi-bin/philesight.rb
sudo chmod a+x /usr/bin/philesight.rb
11) Reiniciar Apache
sudo apache2ctl restart
sudo service apache2 restart
sudo /etc/init.d/apache2 force-reload
12) Acceder a la interfaz
Abre en un navegador local:
http://your_server_name/cgi-bin/philesight.cgi
Si al cargar ves un gráfico que indica que “proc” usa el 100% del disco, ignóralo y baja para ver la lista de carpetas del directorio raíz. Haz clic en una carpeta para ver la representación visual de su contenido.
Cron diario para actualizar las imágenes
Crear el script en cron.daily:
sudo nano /etc/cron.daily/philesight
Pega estas líneas, guarda y cierra:
#!/bin/sh
sudo rm /usr/lib/philesightdb
sudo /usr/bin/philesight --db /usr/lib/philesightdb --index /
Hazlo ejecutable:
sudo chmod a+x /etc/cron.daily/philesight
Nota: el script elimina y vuelve a crear el índice cada día. Para índices grandes, considera programarlo semanalmente o usar una versión incremental si está disponible.
Solución de problemas frecuente
- Apache no ejecuta CGI: verifica que la sección ScriptAlias y Directory esté correctamente añadida y que Apache se haya reiniciado.
- Permisos: comprueba que /usr/lib/cgi-bin/ y /usr/bin/philesight sean ejecutables (chmod a+x).
- Indexado muy lento: limita el índice a rutas concretas en vez de “/“ o ejecuta el indexado en un período de baja carga.
- Errores Ruby: asegúrate de que Ruby y las librerías (cairo, db) están instaladas en las versiones compatibles.
Alternativas y cuándo usar cada una
- ncdu (consola): más ligera para diagnósticos rápidos por SSH.
- Baobab (GUI, GNOME): útil en escritorios, no en servidores sin entorno gráfico.
- Tools comerciales/SIEM: cuando necesitas trazabilidad, alertas y control de acceso avanzado.
Lista de comprobación por rol
- Administrador de sistemas: verificar permisos, cron y reinicio de Apache.
- Responsable de seguridad: revisar accesos web a /cgi-bin y aplicar restricción por IP si procede.
- Operador de backup: excluir la carpeta de índices /usr/lib/philesightdb de las copias de seguridad si se regenera automáticamente.
Medidas de seguridad recomendadas
- Restringe el acceso a philesight.cgi por firewall o reglas de Apache (Allow from
). - Evita exponer el CGI a Internet público. Si necesitas acceso remoto, usa VPN o túnel SSH.
- Mantén los paquetes y Ruby actualizados. Revoca permisos innecesarios en /usr/bin y /usr/lib.
Criterios de aceptación
- La URL http://your_server_name/cgi-bin/philesight.cgi carga sin errores.
- El índice se actualiza según la frecuencia esperada (cron diario o personalizada).
- Los permisos no permiten ejecución por usuarios no autorizados fuera de los procesos necesarios.
Mini-metodología de verificación rápida
- Ejecuta manualmente: sudo /usr/bin/philesight –db /usr/lib/philesightdb –index / y observa la salida. 2. Accede al CGI en el navegador. 3. Revisa logs de Apache (/var/log/apache2/) si hay errores 500/CGI.
Glosario breve
- CGI: Common Gateway Interface, método para ejecutar scripts desde un servidor web.
- Indexar: crear una base de datos de metadatos sobre archivos y carpetas para análisis rápido.
Resumen final
Philesight proporciona una forma visual y rápida de inspeccionar el uso de disco en servidores Ubuntu con un CGI accesible desde la red local. Sigue los pasos para instalar dependencias, configurar Apache para CGI, indexar el disco y programar la actualización automática. Aplica restricciones de acceso y revisa la solución de problemas si surge algún error.
Importante: no expongas esta herramienta directamente a Internet sin controles de acceso y supervisión.
Materiales similares

Fecha de instalación y uptime en Windows y Linux
Agregar Modo Seguro al menú contextual de Windows 11

Instalar Scientific Linux 6.1 desde DVD

GPS externo en iPad/iPhone: guía paso a paso
