Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jpbarbatic/webapp/llms.txt

Use this file to discover all available pages before exploring further.

WebApp Admin Panel incluye el script sync.sh para automatizar el despliegue al servidor de producción mediante FTP. El script utiliza lftp, una herramienta de línea de comandos que permite espejear directorios locales en servidores remotos de forma eficiente, subiendo únicamente los archivos que hayan cambiado y excluyendo automáticamente ficheros sensibles o innecesarios como credenciales, dependencias y metadatos de Git.

Prerrequisitos

Antes de ejecutar sync.sh asegúrate de tener instalado lftp en tu sistema:
  • Debian / Ubuntu: sudo apt install lftp
  • macOS (Homebrew): brew install lftp
  • Fedora / RHEL: sudo dnf install lftp
También necesitas tener acceso FTP al servidor de destino con los permisos de escritura necesarios sobre el directorio remoto.

Configurar .env

Las credenciales FTP se gestionan a través de un archivo .env en la raíz del proyecto. El repositorio incluye .env-ejemplo como plantilla:
cp .env-ejemplo .env
El contenido de .env-ejemplo es el siguiente:
FTP_HOST=
FTP_USER=
FTP_PASS=
FTP_LOCAL=
FTP_REMOTE=
Rellena cada variable con los valores de tu servidor:
VariableDescripción
FTP_HOSTNombre de host o dirección IP del servidor FTP, por ejemplo ftp.miservidor.com.
FTP_USERNombre de usuario FTP proporcionado por tu proveedor de hosting.
FTP_PASSContraseña del usuario FTP.
FTP_LOCALDirectorio local que se sincronizará. Usa . para sincronizar desde la raíz del proyecto.
FTP_REMOTERuta del directorio de destino en el servidor FTP, por ejemplo /public_html/webapp.
Un ejemplo de archivo .env completamente configurado:
FTP_HOST=ftp.miservidor.com
FTP_USER=mi_usuario
FTP_PASS=mi_contraseña_segura
FTP_LOCAL=.
FTP_REMOTE=/public_html/webapp

Ejecutar la sincronización

1

Copiar .env-ejemplo a .env y rellenar las credenciales FTP

cp .env-ejemplo .env
Abre el archivo .env con tu editor y completa los cinco valores: FTP_HOST, FTP_USER, FTP_PASS, FTP_LOCAL y FTP_REMOTE.
2

Hacer el script ejecutable

Si es la primera vez que ejecutas el script, otórgale permisos de ejecución:
chmod +x sync.sh
3

Ejecutar la sincronización

Puedes lanzar el despliegue de dos formas equivalentes:Con npm (recomendado):
npm run sync-ftp
Directamente:
./sync.sh
El script mostrará el progreso de la transferencia en tiempo real gracias al flag -v de lftp y confirmará la finalización con el mensaje Sincronización finalizada.

Contenido completo de sync.sh

#!/bin/bash
. .env
EXCLUDE="-x .git/ -x config.php -x .env -x node_modules -x vendor -x .git"
cat << 'EOF'
 ____  _                            _                    _       
/ ___|(_)_ __   ___ _ __ ___  _ __ (_)______ _ _ __   __| | ___  
\___ \| | '_ \ / __| '__/ _ \| '_ \| |_  / _` | '_ \ / _` |/ _ \ 
 ___) | | | | | (__| | | (_) | | | | |/ / (_| | | | | (_| | (_) |
|____/|_|_| |_|\___|_|  \___/|_| |_|_/___\__,_|_| |_|\__,_|\___/ 
                                                                 
__        __   _             _         _____ _____ ____  
\ \      / /__| |__   __   _(_) __ _  |  ___|_   _|  _ \ 
 \ \ /\ / / _ \ '_ \  \ \ / / |/ _` | | |_    | | | |_) |
  \ V  V /  __/ |_) |  \ V /| | (_| | |  _|   | | |  __/ 
   \_/\_/ \___|_.__/    \_/ |_|\__,_| |_|     |_| |_|    
   
EOF

echo "Conectando con $FTP_HOST"
lftp -c "open -u $FTP_USER,$FTP_PASS $FTP_HOST; mirror -v -R $EXCLUDE $FTP_LOCAL $FTP_REMOTE; quit"
echo "Sincronización finalizada"

Archivos excluidos

La variable EXCLUDE del script define qué rutas omite lftp durante la sincronización. La opción -x de mirror indica a lftp que ignore cada patrón especificado:
Patrón excluidoMotivo
.git/Metadatos del repositorio Git. No tienen ninguna utilidad en el servidor de producción y ocupan espacio innecesario.
config.phpArchivo de configuración local con credenciales de base de datos. Debe configurarse directamente en el servidor o subirse de forma independiente y segura.
.envCredenciales FTP. Subirlo al servidor expondría públicamente las contraseñas de acceso FTP.
node_modulesDependencias JavaScript de desarrollo. No son necesarias en el servidor.
vendorDependencias PHP gestionadas por Composer. Se excluyen por su gran tamaño; lo habitual es ejecutar composer install directamente en el servidor.
.gitExclusión redundante del directorio .git (sin la barra final) para garantizar que ninguna variante de la ruta sea subida.
El directorio vendor/ queda excluido por defecto de la sincronización FTP. Tienes dos opciones para gestionar las dependencias PHP en producción:
  • Opción recomendada: conéctate al servidor por SSH y ejecuta composer install en el directorio de instalación. Esto descargará mPDF y sus dependencias directamente en el servidor sin saturar la transferencia FTP.
  • Opción alternativa: si el servidor de hosting no dispone de Composer ni acceso SSH, elimina -x vendor de la variable EXCLUDE en sync.sh antes de ejecutar la sincronización, lo que incluirá la carpeta vendor/ en la subida.
El bloque cat << 'EOF' ... EOF del script pinta un banner ASCII con el texto “Sincronizando / WebApp FTP” puramente con fines decorativos. No realiza ninguna operación sobre los archivos ni afecta al comportamiento de la sincronización; puedes eliminarlo o modificarlo sin consecuencias.

Build docs developers (and LLMs) love