Back to Certificates Center main section
Artica renews Let's Encrypt certificates automatically, whether they were issued through the HTTP-01 challenge (port 80 validation) or the DNS-01 challenge (TXT record validation through a DNS provider such as Cloudflare, OVH, Route53…).
The Renewal events feature adds a persistent, queryable journal of every renewal attempt the appliance performs
Successes and failures, with the exact ACME error message — and automatically reloads the reverse-proxy websites that use a certificate once it has been renewed.
Before this feature, renewal outcomes were only visible in transient notifications and log files:
after a daemon restart, there was no way to answer “was my certificate renewed last night, and if not, why?”. The renewal journal answers that question for a full year of history.
Open Your System → Certificates Center. The Let's Encrypt wizard is opened by the Let's Encrypt Certificate button:

Inside the wizard, a new Renewal history tab sits next to the request tabs:


The header line shows the totals — and each label is a clickable filter: click Success or Failed to restrict the table, and the total to show everything again.
| Date | When the renewal attempt started. |
| Domain | The certificate CommonName. Hover it to see the full SAN list (all hosts covered by the certificate). |
| Challenge | http-01 (port-80 validation) or dns-01 (TXT record validation). |
| Provider | The DNS provider used for a DNS-01 renewal (cloudflare, ovh…). Empty for HTTP-01. |
| Status | Success or Failed. |
| Duration | Total time of the attempt. DNS-01 renewals typically take 40–60 seconds (TXT propagation), HTTP-01 a few seconds. |
| New expiry | The NotAfter date of the freshly issued certificate (successes only). |
| Websites reloaded | A green check when the reverse-proxy websites using this certificate were rebuilt and reverse-proxy service was gracefully reloaded after the renewal. |
| Error | The exact error for failed attempts, truncated for display — hover it to read the complete ACME message. |

Typical failure signatures:
urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.<host>urn:ietf:params:acme:error:unauthorized :: Invalid response from http://<host>/.well-known/acme-challenge/…: 404 A certificate bound to the manual DNS provider cannot be renewed unattended A failed attempt is retried on the next cycle automatically;
the journal keeps one entry per attempt, so a recurring problem is immediately visible as a series of failed rows on the same domain.
When the appliance runs the reverse-proxy, renewing a certificate is only half of the job: the websites using it must be rebuilt so reverse-proxy service serves the new certificate.
This is now automatic for both renewal engines:
If reverse-proxy service is not enabled on the appliance, the renewal is stored normally and no reload is attempted.
The journal is exposed on the local articarest socket (and on the authenticated REST port):
SOCKET="/usr/share/artica-postfix/bin/run/articarest.sock"
# Last renewal events (most recent first)
curl -s --unix-socket $SOCKET "http://localhost/letsencrypt/renewals/logs?limit=100"
# Only failures for one domain
curl -s --unix-socket $SOCKET "http://localhost/letsencrypt/renewals/logs?domain=www.example.com&status=failed"
# Global counters
curl -s --unix-socket $SOCKET "http://localhost/letsencrypt/renewals/stats"
Parameters of /letsencrypt/renewals/logs:
Each entry returns: date, common_name, domains, challenge, provider, status, error, duration_ms, new_expiry.
Example answer of /letsencrypt/renewals/stats:
{
"stats": {
"total": 6,
"success": 4,
"failed": 2,
"last_success": "2026-08-02 23:31:45",
"last_failure": "2026-07-29 23:31:45"
},
"success": true
}