Por qué centralizar tus certificados
certbot hace muy bien una cosa: renovar el certificado del servidor en el que se ejecuta. En cuanto gestionas varios servidores, un certificado wildcard compartido o sitios de clientes, cada máquina se convierte en un vencimiento que vigilar por separado, y un fallo silencioso solo se descubre cuando el navegador muestra su aviso.
Además, la vida útil de los certificados públicos se acorta año tras año, lo que multiplica las renovaciones. Centralizar la emisión, el despliegue y la vigilancia en un solo lugar, con historial y alertas, es la forma más segura de no dejar caducar nunca más un certificado.
Lo que aporta Certimate
- Flujos visuales — solicitud, despliegue y notificación encadenados en un mismo flujo, planificado para la renovación.
- DNS-01 y HTTP-01 — certificados wildcard y multidominio por DNS-01 en más de 70 proveedores, entre ellos Cloudflare, OVHcloud y Hetzner.
- Varias autoridades — Let's Encrypt, ZeroSSL, Google Trust Services, SSL.com; claves RSA o ECC.
- Más de 160 destinos de despliegue — SSH, cPanel, Nginx Proxy Manager, Proxmox VE, Kubernetes, CDN y servicios en la nube.
- Formatos PEM, PFX y JKS — para nginx, Apache, IIS o una aplicación Java.
- Alertas — correo, Telegram, Slack, Discord, Matrix o webhook ante cada fallo y antes de la caducidad.
Certimate, certbot y Nginx Proxy Manager
Desplace la tabla
| Certimate | certbot | Nginx Proxy Manager | |
|---|---|---|---|
| Interfaz web | Sí, flujos visuales | No, línea de comandos | Sí |
| Varios servidores | Sí, despliegue por SSH y API | No, uno por servidor | No, sus propios hosts |
| Wildcard por DNS-01 | Sí, más de 70 proveedores | Sí, con complementos | Sí |
| Alertas de fallo | Sí, multicanal | No, hay que programarlas | No |
| Proxy inverso | No | No | Sí, es su función |
| Historial de ejecuciones | Sí | Registro local | Parcial |
Requisitos previos
Basta un VPS Ubuntu 24.04 con 512 MB de RAM y Docker instalado: Certimate consume unos veinte megabytes. Prevé un subdominio para la consola (por ejemplo certs.example.com) que apunte al VPS, y nginx como proxy inverso. Para los flujos, ten a mano un token de API de tu proveedor DNS y acceso SSH a los servidores que recibirán los certificados.
Instalar Certimate con Docker Compose
Preparar el directorio y la contraseña
Crea el directorio de la aplicación y un archivo
.envcon una contraseña de administrador generada al azar.mkdir -p /opt/certimate && cd /opt/certimate printf 'ADMIN_PASSWORD=%s\n' "$(openssl rand -hex 16)" > .env chmod 600 .envEscribir el archivo compose
Crea
compose.yaml. Solo en el primer arranque, el comando aplicaADMIN_PASSWORDa la cuenta de fábrica antes de lanzar el servidor; el marcador evita sobrescribir después una contraseña cambiada en la interfaz. El puerto solo se publica en la interfaz local: únicamente nginx accede a él.services: certimate: image: certimate/certimate:v0.4.36 restart: unless-stopped ports: - "127.0.0.1:8109:8090" environment: ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD requis} entrypoint: ["sh", "-c"] command: - >- if [ ! -f /app/pb_data/.admin-seeded ]; then ./certimate superuser upsert [email protected] "$$ADMIN_PASSWORD" && touch /app/pb_data/.admin-seeded || exit 1; fi; exec ./certimate serve --http 0.0.0.0:8090 volumes: - certimate-data:/app/pb_data volumes: certimate-data: {}Arrancar y comprobar
Lanza la pila. Certimate aplica sus migraciones al arrancar y después la sonda de salud debe responder.
docker compose up -d docker compose ps curl -fsS http://127.0.0.1:8109/api/health
No dejes nunca activa la contraseña de fábrica
La imagen trae una cuenta [email protected] con la contraseña 1234567890, documentada en el README del proyecto. Una consola expuesta con esas credenciales entrega a cualquiera tus tokens DNS y tus claves SSH. El comando anterior la sustituye antes incluso de que el servidor escuche; si lanzas la imagen de otra forma, cámbiala antes de publicar el dominio.
Publicar la consola con HTTPS detrás de nginx
Añade un bloque de servidor que redirija a la interfaz local. Para empezar, usa un certificado obtenido una vez con certbot; después Certimate podrá renovar el suyo como los demás.
server {
listen 443 ssl;
server_name certs.example.com;
# ssl_certificate / ssl_certificate_key: tu certificado actual
location / {
proxy_pass http://127.0.0.1:8109;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}Abre https://certs.example.com, inicia sesión con [email protected] y la contraseña del archivo .env, y cambia el correo y la contraseña en los ajustes de la cuenta.
Primer flujo: un certificado wildcard por DNS-01
En Accesos, crea un acceso a Cloudflare (u OVHcloud, Hetzner…) con un token de API limitado al permiso de edición DNS de la zona afectada. En Flujos de trabajo, crea un flujo: nodo de solicitud con example.com y *.example.com, desafío DNS-01, autoridad Let's Encrypt y clave ECC.
Ejecuta el flujo a mano: Certimate crea el registro TXT, espera su propagación, obtiene el certificado y lo guarda en Certificados con su fecha de caducidad. El desafío DNS-01 no exige ningún puerto abierto en los servidores de destino, y es el único que permite un wildcard.
Desplegar por SSH en tus servidores nginx
En cada servidor de destino, crea una cuenta dedicada que solo pueda escribir en el directorio de certificados y recargar nginx:
useradd -m -s /bin/bash certdeploy
install -d -o certdeploy -m 750 /etc/ssl/certimate
echo 'certdeploy ALL=(root) NOPASSWD: /usr/sbin/nginx -t, /usr/bin/systemctl reload nginx' > /etc/sudoers.d/certdeployEn Certimate, añade un acceso SSH por clave a esa cuenta y luego un nodo de despliegue SSH tras la solicitud: rutas /etc/ssl/certimate/example.com.pem y .key, comando sudo nginx -t && sudo systemctl reload nginx. Apunta ssl_certificate y ssl_certificate_key de tus vhosts a esos archivos.
Renovación planificada y alertas
Activa el disparador planificado del flujo (una ejecución al día basta: Certimate solo renueva cuando se acerca la caducidad) y añade un nodo de notificación hacia Telegram, Slack o el correo. Cada ejecución conserva su registro: si algo falla, sabes si se rompió el desafío DNS, la autoridad o el despliegue, y lo sabes antes de la caducidad.
Seguridad y copia de seguridad
La base de Certimate contiene tus tokens DNS, tus claves SSH y tus claves privadas: trata la consola como una caja fuerte. Contraseña robusta, solo HTTPS, tokens y cuentas SSH con los permisos mínimos. Haz copia del volumen con regularidad y cifra el archivo antes de copiarlo fuera del VPS:
cd /opt/certimate
docker compose stop
docker run --rm -v certimate_certimate-data:/data -v "$PWD":/backup alpine \
tar czf /backup/certimate-$(date +%F).tar.gz -C /data .
docker compose startCertimate en un clic en ServOrbit
Desde el Marketplace de tu área de cliente, Certimate se instala en un VPS Ubuntu 24.04 en un clic: contenedor oficial, contraseña de administrador generada y aplicada antes del primer arranque, volumen de datos y proxy inverso nginx con HTTPS en tu dominio o en el subdominio gratuito del VPS. La contraseña aparece en tu área de cliente, en la ficha de la aplicación.