For the complete documentation index, see llms.txt. This page is also available as Markdown.

Lets Encrypt jail

Lets Encrypt jail

Setup for letsencrypt service jail with iocage.

On FreeNAS

Create jail:

iocage create --release 11.1-RELEASE --name letsencrypt \
          boot="on" vnet=on bpf=on \
          allow_raw_sockets="1" \
          ip4_addr="vnet1|172.20.40.38/24" \
          interfaces="vnet1:bridge1" \
          defaultrouter="172.20.40.1" \
          resolver="search ramsden.network;nameserver 172.20.40.1;nameserver 8.8.8.8"

Datasets

On FreeNAS create user and group acme, GID/UID 169.

In web ui create mount datasets:

  • letsencrypt

    • letsencrypt Data

      • mountpoint: /var/db/acme/ * /mnt/tank/data/database/letsencrypt/acme

    • certs

      • mountpoints: /mnt/certs/<cert> * couchpotato.ramsden.network

        • /mnt/certs/couchpotato.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/couchpotato.ramsden.network * emby.ramsden.network

        • /mnt/certs/emby.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/emby.ramsden.network * lilan.ramsden.network

        • /mnt/certs/lilan.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/lilan.ramsden.network * sabnzbd.ramsden.network

        • /mnt/certs/sabnzbd.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/sabnzbd.ramsden.network * sickrage.ramsden.network

        • /mnt/certs/sabnzbd.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/sabnzbd.ramsden.network * syncthing.ramsden.network

        • /mnt/certs/syncthing.ramsden.network

        • /mnt/tank/data/database/letsencrypt/certs/syncthing.ramsden.network

Have the acme user own thedatasettank/data/database/letsencrypt/acme.

Mount /mnt/tank/data/database/letsencrypt/acme to /var/db/acme/ Mount the certs under /var/db/acme/certs/

Nullfs mount datasets in jail:

letsencrypt data:

Setup directories for certs:

Mount the directories:

Check fstab:

Start jail and enter.

Jail

In the jail, update all packages and install acme.sh.

Switch to the ‘acme’ user which renews the certificate on a cron job add configuration.

Issue cert

Add acme to le in FreeNAS and jail.

chown certs dir in freenas to acme:le recursively.

Set Install Location

Now, to set the install location for the certificates use the installcert command, for example:

Cert deploy location: /etc/certificates

Various Services

Various Services need their certificates installed two different locations, and some of them need some changes. There are a few that I make changes to from the default.

Emby

Emby needs pks file, to convert cert key cert and ca are needed

Set deploy location

Install directory in jail: /var/db/emby-server/ssl

Cron:

Crontab from freenas:

You probably want to renew starts on a crontab so they get done every month. I use the following script to renew my various services:

Last updated