Crontab-UI es una interfaz Web de usuario para administrar trabajos programados en sistemas basados en Unix/Linux. Permite programar tareas recurrentes en momentos específicos utilizando el servicio "cron" que está disponible en la mayoría de los sistemas operativos de tipo Unix.
La interfaz de usuario de Crontab-UI es una herramienta gráfica que simplifica la creación, edición y eliminación de tareas cron. Permite a los usuarios establecer tareas en intervalos regulares, como horas, días, semanas o meses, y también ofrece la posibilidad de configurar tareas cron avanzadas, como tareas programadas en días de la semana específicos o días festivos.
En este artículo te explicaremos cómo instalarlo y configurarlo en un Ubuntu/Debian con un proxy inverso con NGINX para utilizar Certbot para adquirir y renovar el certificado SSL (también un servicio systemd para crontab-ui).
Cómo instalar Node.js, NPM y Crontab-UI
Primero, actualiza los repositorios y paquetes:
# apt update && apt upgrade -y
E instala las dependencias esenciales:
# apt install build-essential
Luego utiliza el script oficial de Node.js:
# curl -sL https://deb.nodesource.com/setup_18.x | bash -
Posteriormente instala Node.js (también instala NPM):
# apt install -y nodejs
Y utiliza NPM para crontab-ui:
# npm install -g crontab-ui
Cómo configurar proxy inverso para Crontab-UI
Para configurar el proxy inverso, primero instala NGINX:
# apt install nginx -y
E instala los utils de Apache para auth_basic de NGINX:
# apt install apache2-utils -y
Luego utiliza htpasswd para crear el archivo y el usuario crontab:
# htpasswd -c /etc/nginx/.htpasswd crontab
Asigna la contraseña deseada y recuerda que serán las credenciales de acceso al crontab-ui. Después elimina la configuración por defecto de NGINX:
# rm /etc/nginx/sites-enabled/default
Créalo de nuevo el archivo con un editor:
# nano /etc/nginx/sites-enabled/default
Y añade el siguiente contenido en él:
server {
listen 80;
server_name crontab.ejemplo.com;
auth_basic "Acceso restringido";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://localhost:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Por seguridad, modifica la propiedad del archivo htpasswd y sus permisos:
# chown root:www-data /etc/nginx/.htpasswd && chmod 640 /etc/nginx/.htpasswd
Cómo configurar servicio systemd para Crontab-UI
Crea un usuario crontabui para levantar un servicio para Crontab-UI (por seguridad sin permisos sudo):
# adduser crontabui
Asígnale la propiedad del directorio de Crontab-UI:
# chown -R crontabui:crontabui /usr/lib/node_modules/crontab-ui
Y posteriormente, crea el archivo para el servicio systemd con un editor:
# nano /etc/systemd/system/crontab-ui.service
Añade el siguiente contenido:
[Unit]
Description=Crontab UI
After=network.target
[Service]
ExecStart=/usr/bin/node /usr/bin/crontab-ui
WorkingDirectory=/home/crontabui
Restart=always
User=crontabui
[Install]
WantedBy=multi-user.target
Guarda los cambios y sal del editor. Luego activa el servicio y levántalo:
# systemctl enable crontab-ui.service && systemctl start crontab-ui.service
Puedes comprobar el estado del servicio ejecutando:
# systemctl status crontab-ui.service
Cómo configurar certificado SSL en el proxy inverso
Instala Certbot para adquirir y configurar el certificado:
# apt install python3-certbot-nginx -y
Y ejecuta certbot con el registro configurado en la configuración de NGINX:
# certbot --nginx --redirect -d crontab.ejemplo.com
Una vez realizada esta última acción, tendrás listo Crontab-UI y puedes acceder a él con el registro DNS configurado, en el navegador te aparecerá una ventana para la introducción de el usuario creado utilizando htpasswd.
Esperamos que este artículo te haya sido de ayuda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en contactar a soporte@clouding.io. ¡Estamos para ayudarte!