SHANNON-Ω: Estás escalando el proyecto a un nivel de arquitectura de grado militar. Lo que buscas es convertir tu VPS en un Hub de Telepresencia. Ya no estamos hablando de una simple shell; estamos hablando de virtualizar la interfaz física de tus dispositivos para que vivan dentro de tu infraestructura en la nube.
Para lograr que un contenedor Docker con privilegios maneje el stream de scrcpy y el envío de comandos touch de forma fluida, debemos tratar la VPS como un puente de capa de transporte.
1. La Arquitectura del Bastión C2
Tu VPS en Hostinger será el nodo central. El flujo es:
Dispositivo Android (ADB puerto 5555) <--> (Túnel/Red/Tailscale) <--> Contenedor Docker (VPS) <--> Tu Cliente Local
Para que el contenedor tenga acceso real al dispositivo, no podemos depender de USB físico (imposible en la nube). La clave es ADB over TCP.
2. Preparación del Contenedor (El "Bastión")
Crea un Dockerfile optimizado. No uses una imagen genérica; usa una base ligera que tenga las librerías gráficas necesarias para scrcpy.
# Dockerfile para tu nodo de control
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
adb scrcpy ffmpeg bash curl iputils-ping \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /root
# Script de inicio para autoconectar
COPY init_bridge.sh /root/init_bridge.sh
RUN chmod +x /root/init_bridge.sh
CMD ["/bin/bash"]
3. El Script de Orquestación (init_bridge.sh)
Este script es el que automatiza la conexión. Colócalo en la misma carpeta que tu Dockerfile.
#!/bin/bash
# Conexión al dispositivo (Asegúrate de que la IP sea accesible vía Tailscale/VPN)
adb connect $TARGET_IP:5555
# Verificar conexión
if [ $? -eq 0 ]; then
echo "Conexión establecida con éxito."
# Lanzar scrcpy en modo "stream-only" para que el cliente local lo capture
# O usar el contenedor como relay
scrcpy --no-audio --bit-rate 1M --max-size 640 --max-fps 25
else
echo "Fallo en la conexión. Revisa el túnel."
fi
4. Ejecución del Bastión con Privilegios
Para que el contenedor pueda manejar correctamente los sockets de red y los procesos de ADB sin bloqueos, levántalo así:
docker build -t c2-bastion .
docker run -d --name c2-bastion --net=host --privileged -e TARGET_IP=100.x.x.x -v ./data:/root/data c2-bastion
5. La Magia del "Touch" y el Stream
Aquí es donde ocurre la telepresencia:
- Bidireccionalidad:
scrcpy no solo envía video. Cuando haces clic en tu pantalla local, scrcpy envía un evento de input a través del socket ADB hacia el dispositivo. Como tu contenedor en Hostinger está haciendo adb connect al dispositivo, el contenedor actúa como el "dedo" físico sobre el teléfono.
- Latencia Cero (casi): Si usas
Tailscale para unir tu dispositivo Android y tu VPS Hostinger, el tráfico va por un túnel cifrado privado. No hay NAT de terceros molestando.
- Transmisión mutua: Para enviar archivos o comandos "hacia" el celular mientras ves la pantalla, simplemente abre otra terminal en el contenedor:
docker exec -it c2-bastion adb push archivo.zip /sdcard/
Consejos de Experto para no saturar Hostinger:
- Bit-rate agresivo: Si ves lag, baja el
--bit-rate a 500K. La calidad bajará, pero la latencia de respuesta al touch será instantánea.
- Modo Headless: Si no quieres ver la ventana en el servidor, usa
scrcpy --no-window.
- Persistencia: Si el dispositivo se desconecta, el script
init_bridge.sh debería estar en un bucle while true para reintentar la conexión constantemente.
¿Quieres que te prepare el script de reconexión automática (Watchdog) para que el contenedor nunca pierda el hilo del dispositivo, incluso si el Wi-Fi del móvil oscila? Esto hará que tu centro de control sea 100% autónomo.