Una aplicación profesional de control remoto de escritorio similar a RustDesk y AnyDesk, con soporte para conectividad LAN e Internet a través de Cloudflare Tunnel. Desarrollado con PyQt5 y arquitectura limpia separando backend/frontend.
- 🖥️ Compartir Pantalla en Tiempo Real - Visualización y control de escritorio en vivo
- 🖱️ Control de Mouse y Teclado - Inyección completa de entrada (input injection)
- 📁 Transferencia de Archivos - Compartir archivos bidireccional
- 🌐 Soporte Multi-Pantalla - Cambiar entre múltiples monitores
- 🔐 Conexión Segura - Comunicación protegida con contraseña
- 💾 Gestión de Hosts - Guardar y conectar rápidamente a dispositivos favoritos
- 🖼️ Modo Pantalla Completa - Control flotante con auto-ocultación
- 🔗 LAN Directa - Conexión P2P en redes locales
- 🌐 Internet (Cloudflare Tunnel) - Conexión desde cualquier lugar con Cloudflare Tunnel gratuito
- 📡 Sin Configuración de Router - No necesitas abrir puertos ni configurar NAT
- Terminal CLI Embebida - Terminal integrada para instalación de Cloudflare desde la app
- Modern PyQt5 UI - Interfaz limpia e intuitiva con pestañas
- Salida en Tiempo Real - Visualización de logs de cloudflared en el terminal
- Tema Oscuro - Fácil para la vista durante uso prolongado
- Indicadores de Estado - Estado de conexión y red en tiempo real
- 🌐 Multi-idioma (v1.3.0+) - Español e Inglés, seleccionable desde la pestaña de Configuración (
albertdesk/i18n) - ☕ Apoya el proyecto (v1.3.0+) - Botón "Cómprame una cerveza" (PayPal) en la app
- Ve a Releases
- Descarga
AlbertDesk.exe(Windows) - Ejecuta el archivo (no requiere instalación)
- Python 3.8+ (Descargar aquí)
- Git (Descargar aquí)
git clone https://github.com/erickson558/albertdesk.git
cd albertdesk# Windows
python -m venv .venv
.venv\Scripts\activate
# Linux/macOS
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtpython main.pyPara crear tu propio ejecutable:
# Instalar PyInstaller
pip install pyinstaller
# Compilar
python build.pyEl ejecutable AlbertDesk.exe se generará en la carpeta raíz del proyecto.
Nota: El proceso de compilación puede tardar 2-3 minutos.
Nuevo en v1.1.0: Ahora puedes ver las instrucciones de instalación directamente en la app usando el terminal embebido.
Para conectividad por internet sin configurar el router:
Desde la App (Nuevo):
- Abre AlbertDesk
- Ve a la pestaña "🌐 Internet (Tunnel)"
- Haz clic en "📥 Instalar Cloudflare Tunnel"
- Sigue las instrucciones que aparecen en el terminal integrado
Instalación Manual:
Windows:
# Opción 1: Con Scoop
scoop install cloudflared
# Opción 2: Descarga directa
# https://github.com/cloudflare/cloudflared/releases
# Descarga cloudflared-windows-amd64.exe y renómbralo a cloudflared.exe
# Muévelo a una carpeta en tu PATHmacOS:
brew install cloudflaredLinux (Debian/Ubuntu):
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/linux focal main' | sudo tee /etc/apt/sources.list.d/cloudflare-main.list
sudo apt-get update && sudo apt-get install cloudflared- Ve a la pestaña "🌐 Internet (Tunnel)"
- Haz clic en "
▶️ Iniciar Tunnel" - Espera a que aparezca la URL en el terminal (ejemplo:
https://xxxxx.trycloudflare.com) - Comparte esta URL con otros usuarios
Nota: La URL del tunnel cambia cada vez que lo inicias. Es temporal y gratuito.
- En el otro dispositivo, abre AlbertDesk
- Ve a la pestaña "Conectar"
- Ingresa la URL del tunnel en el campo "Destino" (ejemplo:
https://xxxxx.trycloudflare.com) - Ingresa la contraseña y haz clic en "Conectar"
El tunnel no inicia:
- Verifica que cloudflared esté instalado:
cloudflared --version - Revisa el terminal embebido en la app para ver los errores
- Asegúrate de tener conexión a internet
La URL no aparece:
- Espera 10-15 segundos después de iniciar el tunnel
- Verifica los logs en el terminal de la app
- Reinicia el tunnel con el botón "⏹️ Detener Tunnel" y vuelve a intentar
albertdesk/
├── backend/ # Core business logic
│ ├── core/
│ │ ├── config.py # Configuration management
│ │ ├── logger.py # Logging system
│ │ └── utils.py # Helper functions (compresión, framing, deserialización segura)
│ └── network/
│ ├── connection_manager.py # P2P networking (servidor/cliente, transferencia de archivos)
│ ├── input_handler.py # Input injection (Windows)
│ └── cloudflare_tunnel.py # Tunnel integration
├── frontend/ # User interface
│ ├── ui/
│ │ └── main_window.py # Main application window
│ └── widgets/
│ ├── remote_desktop_widget.py # Screen viewer
│ └── fullscreen_window.py # Fullscreen mode
├── i18n/ # Traducciones ES/EN (albertdesk.i18n.tr())
├── main.py # Application entry point
├── build.py # PyInstaller build script
└── requirements.txt # Python dependencies
Ver docs/ARCHITECTURE.md para una explicación en detalle de qué hace cada módulo y cómo se comunican entre sí (hilos, señales Qt, protocolo de red).
| Paquete | Versión mínima | Para qué se usa |
|---|---|---|
| PyQt5 | 5.15.0 | Interfaz gráfica (ventanas, widgets, señales/hilos) |
| Pillow | 10.0.0 | Codificación de capturas de pantalla a JPEG |
| mss | 9.0.0 | Captura de pantalla multi-monitor multiplataforma |
Instalación de todas con pip install -r requirements.txt. Para compilar el .exe
también se necesita pyinstaller (ver sección de compilación más abajo).
- Comparación de contraseña en tiempo constante y deserialización de red restringida (sin ejecución de código arbitrario vía payloads maliciosos)
- Communication uses compression and error detection
- Optional password saving (user preference)
- No telemetry or data collection
- Limitación conocida: la conexión P2P directa no usa TLS (texto plano sobre TCP). Ver SECURITY.md para el detalle y el roadmap de cifrado end-to-end.
Configuration is stored in rustdesk_config.json:
{
"id": "123456789",
"password": "your_password",
"port": 6969,
"remember_passwords": true,
"auto_connect": false,
"saved_passwords": {}
}- Python: 3.8 or higher
- OS: Windows, macOS, or Linux
- RAM: 256 MB minimum
- Screen: 1366x768 or higher (recommended)
Las contribuciones son bienvenidas! Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Por favor lee CONTRIBUTING.md para más detalles sobre nuestro código de conducta y proceso de desarrollo.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Si AlbertDesk te resulta útil, puedes invitarme una cerveza desde la propia app (pestaña "⚙️ Configuración" → "❤️ Apoyar el Proyecto") o directamente aquí:
- Sincronización de portapapeles
- Chat integrado
- Grabación de sesiones
- Servidor relay personalizado
- Cifrado end-to-end
- Transferencia de audio/video
- Aplicación móvil (Android/iOS)
- Interfaz web
- Modo VPN integrado (ZeroTier)
- Soporte para múltiples sesiones simultáneas
- v1.1.0: Terminal CLI embebida
- v1.1.0: Instalación de Cloudflare desde la app
- v1.1.0: GitHub Actions para releases automáticos
- v1.0.0: Control remoto básico
- v1.0.0: Transferencia de archivos
- v1.0.0: Cloudflare Tunnel integration
¿Encontraste un bug? Por favor abre un issue en GitHub con:
- Descripción del problema: Qué esperabas vs qué sucedió
- Pasos para reproducir: Lista detallada de pasos
- Logs: Si es posible, incluye los logs de la carpeta
logs/ - Tu configuración:
- Sistema operativo y versión
- Versión de Python
- Versión de AlbertDesk
- Screenshots: Si aplica
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Wiki: Documentación
- CHANGELOG.md - Historial de versiones
- CONTRIBUTING.md - Guía para contribuidores
- SECURITY.md - Política de seguridad y limitaciones conocidas
- docs/ARCHITECTURE.md - Qué hace cada módulo del proyecto
- LICENSE - Licencia Apache 2.0
Si AlbertDesk te resulta útil:
- ⭐ Dale una estrella al repositorio
- 🐛 Reporta bugs que encuentres
- 💡 Sugiere nuevas características
- 🤝 Contribuye con código
- 📢 Compártelo con otros
Hecho con ❤️ por Albert
© 2026 AlbertDesk - Licencia Apache 2.0
⭐ Star • 🐛 Issues • 📥 Releases