mirror of
https://github.com/cheveguerra/TotalConnect.git
synced 2026-08-19 00:46:37 +00:00
Initial commit: Hybrid polling, interactive log modal and 3-second hard reset
This commit is contained in:
Executable
+81
@@ -0,0 +1,81 @@
|
||||
# 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`):
|
||||
|
||||
1. **Instalar PyInstaller en el entorno virtual actual:**
|
||||
```bash
|
||||
cd /mnt/data2/Software/Bot-WhatsApp/TotalConnect
|
||||
./venv/bin/pip install pyinstaller
|
||||
```
|
||||
|
||||
2. **Compilar el script en un único archivo:**
|
||||
```bash
|
||||
./venv/bin/pyinstaller --onefile --name totalconnect index.py
|
||||
```
|
||||
*(Este comando creará una carpeta `dist/` que contendrá el ejecutable final llamado `totalconnect`).*
|
||||
|
||||
3. **Cómo usar el ejecutable generado:**
|
||||
Puedes mover el archivo `dist/totalconnect` a 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`
|
||||
|
||||
*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`:
|
||||
|
||||
1. **Crear un archivo `Dockerfile`:**
|
||||
```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"]
|
||||
```
|
||||
|
||||
2. **Construir la imagen de Docker:**
|
||||
```bash
|
||||
docker build -t totalconnect-monitor .
|
||||
```
|
||||
|
||||
3. **Ejecutar el contenedor (montando las credenciales para poder cambiarlas desde fuera):**
|
||||
```bash
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user