Using systemd units instead of cron

greencopper edited this page Jan 8, 2018 · 4 revisions

1. Create a systemd unit for acme.sh:

/etc/systemd/system/acme_letsencrypt.service

[Unit]
Description=Renew Let's Encrypt certificates using acme.sh
After=network-online.target

[Service]
Type=oneshot
# Directory where the acme.sh script resides.
Environment="HOME=/path/to/"
ExecStart=/path/to/acme.sh <your acme.sh arguments here>
# acme.sh returns 2 when renewal is skipped (i.e. certs up to date)
SuccessExitStatus=0 2

2. Test that it works before creating the timer:

sudo systemctl daemon-reload
sudo systemctl start acme_letsencrypt --now

3. Create systemd timer unit for the service above:

/etc/systemd/system/acme_letsencrypt.timer

[Unit]
Description=Daily renewal of Let's Encrypt's certificates

[Timer]
OnCalendar=daily
RandomizedDelaySec=1h
Persistent=true

[Install]
WantedBy=timers.target

4. Enable timer: sudo systemctl enable acme_letsencrypt.timer

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.