Automatización avanzada para fichar en Woffu usando Toffu dentro de contenedores Docker.
- Ejecuta
toffudentro de un contenedor, sin instalar Go ni dependencias en el host. - Gestiona automáticamente el token de Woffu.
- Permite programar entradas y salidas mediante
cron. - Notifica errores o éxitos mediante Telegram (soporta
message_thread_id). - Proporciona instalación limpia, configuración automática y desinstalación completa.
Basado en el proyecto original: https://github.com/Madh93/toffu
Agradecimientos al autor original — esta versión añade automatizaciones, Docker y características extra.
- Características
- Requisitos
- Instalación
- Estructura generada
- Uso básico
- Configuración de Telegram
- Programación automática (cron)
- Modo debug
- Desinstalación
- Archivos importantes
- Funcionamiento interno
- Ejemplos avanzados
- Créditos y licencia
- Contribuciones
- Contenedor efímero por ejecución: cada comando arranca un contenedor desde cero.
- Token de Woffu generado en runtime y nunca persistido en el host.
- Envío de notificaciones por Telegram con soporte para hilos (
message_thread_id). - Programación simple y segura de fichajes con etiquetas en
crontab. - Instalador automático que genera wrapper ejecutable en
~/.local/bin/toffu-docker.
- Docker instalado y funcionando en el host.
- (Opcional) Permisos para escribir en
~/.local/binycrontabdel usuario. - (Opcional) Bot de Telegram y
chat_idsi quieres notificaciones.
Ejecuta el instalador (reemplaza los parámetros según corresponda):
curl -s https://raw.githubusercontent.com/ruvelro/toffu-docker/main/install-toffu-cli.sh \
| bash -s -- EMAIL PASSWORD TELEGRAM_TOKEN TELEGRAM_CHAT_ID TELEGRAM_THREAD_IDUso general:
- Si pasas
EMAILyPASSWORD, el instalador almacenará credenciales. TELEGRAM_TOKEN,TELEGRAM_CHAT_IDyTELEGRAM_THREAD_IDson opcionales; si no se pasan, se pueden configurar después con el wrapper.- Si no pasas parámetros y ejecutas en TTY, el script pedirá interactivo
EMAILyPASSWORD. EMAILyPASSWORDse pueden generar, o actualizar, después.
Parámetros:
EMAIL— Usuario de Woffu (obligatorio).PASSWORD— Contraseña de Woffu (obligatorio).TELEGRAM_TOKEN— Token del bot (sin prefijobot) (opcional).TELEGRAM_CHAT_ID— Chat o canal donde enviar avisos (opcional).TELEGRAM_THREAD_ID— ID del hilo en grupos tipo foro (opcional).
Ejemplo:
curl -s https://raw.githubusercontent.com/ruvelro/toffu-docker/main/install-toffu-cli.sh \
| bash -s -- correo@empresa.com PASSWORD123 123456:ABC -1001213141516 136Al instalar, en el directorio donde ejecutes el script se crearán:
toffu-credentials.json— credenciales cifradas para Woffu.toffu-docker.conf— configuración general (incluye Telegram).Dockerfile— imagen de compilación + runtime.entrypoint.sh— genera token y lanzatoffudentro del contenedor.
Se instala también un wrapper ejecutable en:
~/.local/bin/toffu-docker
- Comprobar estado:
toffu-docker status- Fichar entrada:
toffu-docker in- Fichar salida:
toffu-docker outLos comandos retornan la salida de toffu y, según la configuración, envían notificaciones por Telegram.
Establece token, chat y thread (si procede):
toffu-docker telegram TOKEN CHAT_ID THREAD_IDEjemplo:
toffu-docker telegram 123456:ABC -1001213141516 136- Puedes usar solo
TOKEN+CHAT_ID, o añadirTHREAD_IDpara canales, supergrupos o temas. - Para cambiar el modo de notificación usa:
toffu-docker telegram-mode errorsModos disponibles:
errors— Solo envía en errores.success— Solo envía cuando el fichaje fue correcto.all— Envía ambos (éxitos y errores).
Permite programar múltiples horas de entrada y salida. Programaciones por defecto: L/V (9:00/13:00/14:30/18:00)
- Añadir una entrada:
toffu-docker schedule entrada add HH:MM- Añadir una salida:
toffu-docker schedule salida add HH:MM- Eliminar una hora:
toffu-docker schedule entrada del HH:MM
# o
toffu-docker schedule salida del HH:MM- Listar horarios:
toffu-docker schedule list- Pausar todas las tareas:
toffu-docker schedule pause- Reanudar:
toffu-docker schedule resumeCada línea añadida al crontab incluirá una etiqueta con formato:
# TOFFU_DOCKER_ENTRADA_09_00
Esto facilita su identificación y gestión por el wrapper.
Muestra información extendida y evita enviar mensajes a Telegram (útil para depuración):
toffu-docker debug inPara borrar todo lo instalado y configurado:
toffu-docker uninstallEsto elimina:
- Imagen Docker generada.
- Wrapper en
~/.local/bin/toffu-docker. Dockerfile,entrypoint.sh.toffu-credentials.jsonytoffu-docker.conf.- Entradas de
crontabgeneradas por el instalador.
toffu-credentials.json— credenciales Woffu:
{
"username": "correo",
"password": "clave"
}toffu-docker.conf— configuración general, por ejemplo:
TELEGRAM_TOKEN=
TELEGRAM_CHAT_ID=
TELEGRAM_THREAD_ID=
TELEGRAM_MODE=errors
DAYS_RANGE=1-5
PAUSED=0
Cada ejecución de toffu-docker:
- Inicia un contenedor desde la imagen definida en
Dockerfile. - El
entrypoint.shgenera un token de Woffu (autologin) usando las credenciales cifradas. - Ejecuta el comando
toffusolicitado (in,out,status, etc.). - Devuelve el resultado al host y destruye el contenedor.
- Si está configurado, envía notificación por Telegram (token nunca queda en claro en el host).
Ventajas:
- Host limpio (sin Go ni dependencias).
- Token efímero y no persistente.
- Fichar y notificar solo errores:
toffu-docker telegram-mode errors
toffu-docker in- Fichar y notificar todo:
toffu-docker telegram-mode all
toffu-docker out- Programar una jornada completa:
toffu-docker schedule entrada add 09:00
toffu-docker schedule salida add 13:00
toffu-docker schedule entrada add 14:30
toffu-docker schedule salida add 18:00- Herramienta original:
toffupor @Madh93
Repositorio original: https://github.com/Madh93/toffu
Esta versión amplía la funcionalidad con:
- Docker
- Autologin completo
- Cron
- Telegram (incluido
message_thread_id) - Sistema de configuración y wrapper CLI
- Instalación automática
Este proyecto mantiene la misma licencia que el proyecto Toffu original. Revisa el archivo LICENSE en el repositorio original para detalles.
PRs bienvenidos: https://github.com/ruvelro/toffu-docker
