3.1 KiB
Executable File
Guía de Empaquetado y Portabilidad: TotalConnect 2.0
Para hacer que este proyecto sea lo más portable posible y evitar configurar entornos virtuales (venv), instalar pip o gestionar dependencias manualmente en cada servidor, existen dos enfoques recomendados:
🚀 Método 1: Empaquetar como un Ejecutable Único (PyInstaller)
Este método compila tu script de Python y todas sus dependencias (incluyendo el intérprete de Python, las librerías total-connect-client, zeep, etc.) dentro de un único archivo ejecutable binario para Linux.
👍 Ventajas:
- Genera un solo archivo (ej.
totalconnect). - Cero dependencias: No necesitas tener instalado Python,
pip, ni crear entornos virtuales en el servidor destino. Solo copias el archivo y lo corres. - Súper ligero (~15-20 MB).
🛠️ Cómo empaquetarlo (Ejecutar en la VM Linux 192.168.100.50):
-
Instalar PyInstaller en el entorno virtual actual:
cd /mnt/data2/Software/Bot-WhatsApp/TotalConnect ./venv/bin/pip install pyinstaller -
Compilar el script en un único archivo:
./venv/bin/pyinstaller --onefile --name totalconnect index.py(Este comando creará una carpeta
dist/que contendrá el ejecutable final llamadototalconnect). -
Cómo usar el ejecutable generado: Puedes mover el archivo
dist/totalconnecta cualquier parte (por ejemplo, a/usr/local/bin/para que sea un comando global) y correrlo directamente:- Modo Servidor:
./totalconnect --server 8080 - Modo On-Demand:
./totalconnect
- Modo Servidor:
Nota: Recuerda que credentials.json y locations_cache.json deben estar en la misma carpeta desde donde ejecutes el binario, ya que busca esos archivos en su directorio relativo.
🐳 Método 2: Contenedorizar con Docker
Este método empaqueta todo el entorno (sistema operativo base, Python, librerías y código) dentro de una imagen de Docker.
👍 Ventajas:
- Portabilidad absoluta: Funciona de forma idéntica en cualquier sistema (Windows, macOS, Linux, AWS, Proxmox) que tenga instalado Docker.
- Aislamiento total: No interfiere en lo absoluto con las librerías del sistema operativo.
- Gestión de reinicios integrada (Docker se encarga de mantenerlo vivo).
🛠️ Archivos necesarios en la carpeta /TotalConnect:
-
Crear un archivo
Dockerfile:FROM python:3.11-slim WORKDIR /app # Instalar dependencias RUN pip install --no-cache-dir total-connect-client # Copiar código COPY index.py /app/index.py # Exponer puerto del servidor EXPOSE 8080 # Comando para arrancar el servidor por defecto CMD ["python", "index.py", "--server", "8080"] -
Construir la imagen de Docker:
docker build -t totalconnect-monitor . -
Ejecutar el contenedor (montando las credenciales para poder cambiarlas desde fuera):
docker run -d \ --name tc-monitor \ --restart unless-stopped \ -p 8080:8080 \ -v $(pwd)/credentials.json:/app/credentials.json \ -v $(pwd)/locations_cache.json:/app/locations_cache.json \ totalconnect-monitor