🟢 Mini cPanel – Procedimiento Completo para Raspberry Pi 3B
1️⃣ Instalación de FileBrowser
Descarga e instala el binario oficial de FileBrowser:
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
Inicia FileBrowser manualmente por primera vez:
sudo filebrowser -d /etc/filebrowser.db -r /var/www/apps
- Esto crea la base de datos inicial y un usuario
admincon contraseña aleatoria, estate atento y COPIALA!

- Solo escucha en
127.0.0.1(localhost) - La carpeta raíz para las apps será
/var/www/apps
2️⃣ Ajuste de permisos para LAN y servicio
sudo chown www-data:www-data /etc/filebrowser.db
sudo chmod 600 /etc/filebrowser.db
sudo chown -R www-data:www-data /var/www/apps
sudo chmod -R 750 /var/www/apps
3️⃣ Probar acceso desde otro PC de la LAN
Ejecuta FileBrowser escuchando en todas las IP de la Raspberry:
sudo -u www-data /usr/local/bin/filebrowser -d /etc/filebrowser.db -r /var/www/apps -a 0.0.0.0 -p 8080
- Desde tu navegador en otro PC de la LAN:
http://IP_DE_LA_RASPI:8080 - Usuario:
admin - Contraseña: la que se generó al iniciar FileBrowser
- Cambia la contraseña al entrar por primera vez
4️⃣ Crear scripts de administración
Cierra el FileBrowser desde la Raspi: Crtl+C
Crea la carpeta para scripts del mini cPanel:
sudo mkdir -p /var/www/apps/admin-scripts
sudo chown -R www-data:www-data /var/www/apps/admin-scripts
sudo chmod -R 750 /var/www/apps/admin-scripts
Ejemplos de scripts
Los puedes crear en la carpeta admin-scripts directamente desde el FileBrowser
- reiniciar-php.sh
#!/bin/bash
touch /tmp/restart_php_fpm.flag
echo "Solicitud de reinicio registrada"
- ajustar-permisos.sh
#!/bin/bash
sudo chown -R www-data:www-data /var/www/apps
sudo chmod -R 750 /var/www/apps
echo "Permisos ajustados correctamente"
- backup.sh (definitivo, funciona con sudo)
#!/bin/bash
sudo mkdir -p /home/pi/backups
sudo cp -r /var/www/apps /home/pi/backups/apps_$(date +%Y%m%d_%H%M%S)
echo "Backup realizado en /home/pi/backups"
Dar permisos de ejecución:
# 1. Asegúrate de que las carpetas superiores permitan el paso
sudo chmod 755 /var/www/apps
sudo chmod 755 /var/www/apps/admin-scripts
# 2. Ahora intenta el chmod de los archivos
sudo chmod +x /var/www/apps/admin-scripts/*.sh
Permitir que www-data ejecute el script de backup con sudo sin contraseña:
sudo visudo
Añadir al final:
www-data ALL=(ALL) NOPASSWD: /var/www/apps/admin-scripts/backup.sh
www-data ALL=(ALL) NOPASSWD: /var/www/apps/admin-scripts/reiniciar-php.sh
www-data ALL=(ALL) NOPASSWD: /var/www/apps/admin-scripts/ajustar-permisos.sh
5️⃣ Crear mini panel web PHP
Archivo: /var/www/html/admin.php ← importante: mover a /html
o
Creamos el archivo directamente en la ruta correcta: sudo nano /var/www/html/admin.php
sudo mv /var/www/apps/admin.php /var/www/html/
sudo chown www-data:www-data /var/www/html/admin.php
sudo chmod 750 /var/www/html/admin.php
Contenido del archivo (muy básico):
<?php
session_start();
$secret_pass = "TU_PASSWORD_SEGURA"; // Cambiar antes de producción
if(isset($_POST['password'])){
if($_POST['password'] === $secret_pass){
$_SESSION['logged_in'] = true;
} else {
$error = "Contraseña incorrecta";
}
}
if(!isset($_SESSION['logged_in'])){
?>
<form method="POST">
<input type="password" name="password" placeholder="Contraseña">
<input type="submit" value="Entrar">
<?php if(isset($error)) echo "<p>$error</p>"; ?>
</form>
<?php
exit;
}
function runScript($script){
$output = shell_exec("sudo /var/www/apps/admin-scripts/$script 2>&1");
echo "<pre>$output</pre>";
}
if(isset($_GET['action'])){
switch($_GET['action']){
case 'reiniciar_php':
runScript('reiniciar-php.sh'); break;
case 'ajustar_permisos':
runScript('ajustar-permisos.sh'); break;
case 'backup':
runScript('backup.sh'); break;
}
}
?>
<h1>Mini cPanel Profesional</h1>
<ul>
<li><a href="?action=reiniciar_php">Reiniciar PHP-FPM</a></li>
<li><a href="?action=ajustar_permisos">Ajustar permisos apps</a></li>
<li><a href="?action=backup">Hacer backup de JSON + DB</a></li>
</ul>
Ahora el panel PHP se accede desde:
http://IP_DE_LA_RASPI/admin.php
6️⃣ Crear servicio systemd para FileBrowser (ejecución en segundo plano)
Archivo: /etc/systemd/system/filebrowser.service
sudo nano /etc/systemd/system/filebrowser.service
[Unit]
Description=FileBrowser Web Manager
After=network.target
[Service]
Type=simple
User=www-data
Group=www-data
ExecStart=/usr/local/bin/filebrowser \
-d /etc/filebrowser.db \
-r /var/www/apps \
-a 0.0.0.0 \
-p 8080
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Comprueba que el binario existe:
ls -l /usr/local/bin/filebrowser
Debe existir y ser ejecutable.
Comprueba la base de datos:
ls -l /etc/filebrowser.db
Debe ser propiedad de www-data.
Recargar y habilitar:
sudo systemctl daemon-reload
sudo systemctl enable filebrowser
sudo systemctl start filebrowser
sudo systemctl status filebrowser
Parar / arrancar manualmente:
sudo systemctl stop filebrowser
sudo systemctl start filebrowser
📌 Nota importante (buenas prácticas)
- NO ejecutes FileBrowser como
root - NO guardes apps en
/var/www/html /html→ solo panel y frontend/apps→ backend, uploads, datos
7️⃣ Seguridad y recomendaciones
- Acceso solo desde LAN
- Cambiar la contraseña
adminal entrar por primera vez - Opcional: configurar HTTPS con certificado self-signed
- Usar usuario admin separado y no usar
pipara administración - Ajustar firewall si es necesario (puerto 8080 abierto solo LAN)
8️⃣ Estado final
✅ Gestionas WebApps desde navegador (subida, permisos, estructura)
✅ Reinicio de PHP-FPM desde web
✅ Backups automáticos de JSON + DB funcionando con sudo
✅ Panel seguro solo LAN
✅ Escalable: firewall, MariaDB, phpMyAdmin visual
🐉 En la siguiente entrada del Blog…
- Añadimos herramientas
- Mejoramos la UX (User Experience)
