Guía de despliegue

Certimate en un VPS: automatiza tus certificados SSL con ACME

Desplegar en un VPS Cloud →

Tutorial

Certimate en un VPS: automatiza tus certificados SSL con ACME

Autoalojamiento6 min de lectura3 pasos

Un certificado caducado es un sitio que muestra una alerta roja a cada visitante, una API a la que ya no llama ningún cliente y un lunes por la mañana perdido averiguando por qué certbot no se ejecutó en ese servidor concreto. Certimate, un gestor de certificados de código abierto con licencia MIT, centraliza todo el ciclo: obtiene los certificados por ACME, los despliega en tus servidores, los renueva antes de que caduquen y te avisa cuando algo falla. Esta guía lo instala con Docker Compose en un VPS, sustituye su contraseña de fábrica, lo publica con HTTPS detrás de nginx y construye un primer flujo DNS-01 y un despliegue por SSH.

Contenido· Por qué centralizar tus certificados1/12
  1. 01Por qué centralizar tus certificados
  2. 02Lo que aporta Certimate
  3. 03Certimate, certbot y Nginx Proxy Manager
  4. 04Requisitos previos
  5. 05Instalar Certimate con Docker Compose
  6. 06No dejes nunca activa la contraseña de fábrica
  7. 07Publicar la consola con HTTPS detrás de nginx
  8. 08Primer flujo: un certificado wildcard por DNS-01
  9. 09Desplegar por SSH en tus servidores nginx
  10. 10Renovación planificada y alertas
  11. 11Seguridad y copia de seguridad
  12. 12Certimate en un clic en ServOrbit

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

CertimatecertbotNginx Proxy Manager
Interfaz webSí, flujos visualesNo, línea de comandosSí
Varios servidoresSí, despliegue por SSH y APINo, uno por servidorNo, sus propios hosts
Wildcard por DNS-01Sí, más de 70 proveedoresSí, con complementosSí
Alertas de falloSí, multicanalNo, hay que programarlasNo
Proxy inversoNoNoSí, es su función
Historial de ejecucionesSíRegistro localParcial

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

  1. Preparar el directorio y la contraseña

    Crea el directorio de la aplicación y un archivo .env con 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 .env
  2. Escribir el archivo compose

    Crea compose.yaml. Solo en el primer arranque, el comando aplica ADMIN_PASSWORD a 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: {}
  3. 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/certdeploy

En 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 start

Certimate 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.

Tus certificados, renovados sin pensar en ello

Un VPS de ServOrbit con Ubuntu 24.04 y 512 MB de RAM basta para Certimate. Instalación en un clic desde el Marketplace, contraseña de administrador generada por ti, HTTPS en tu dominio o en el subdominio gratuito del VPS.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva