This is a quick and easy one.
Prerequisites
- An Alpine Linux container
- An internet connection
Install nginx
apk add nginx
rc-update add nginx default
rc-service nginx start
Nginx Configuration
Config file is located at /etc/nginx/nginx.conf
.
Use service nginx reload
to reload the configuration after editing it.
Install Certbot
Currently certbot only lives in the community repository. You can find out which repo a package is in by looking at the Alpine Packages website. You’ll need to add the community repository by editing /etc/apk/repositories
and adding the following line:
@community http://dl-2.alpinelinux.org/alpine//v3.4/community
Note that this is for version 3.4. You may have to update the version number
After editing your repositories you need to update them and install certbot.
apk update && apk upgrade
apk add certbot@community
Adding a new cert
Certificates can be added with certbot using the wizard. Don’t forget to stop any instances of nginx first!
certbot certonly
Updating certs automatically
Let’s Encrypt certs only last 3 months. This is by design. One of the beautiful parts of Let’s Encrypt is that we can update the certs automatically. I have created a script in etc/periodic/weekly
to update my scripts. It only has one line:
/usr/bin/certbot renew --standalone --pre-hook "service nginx stop" --post-hook "service nginx start"
Don’t forget to make this script executable!
This script is run by cron on a weekly basis. It automatically stops nginx before it starts and starts it back up when it’s finished.