LetsEncryptをdockerで走らせるコード

この記事は約3分で読めます。
スポンサーリンク
#!/bin/sh
DOMAIN=ここに適応させたいドメイン
WEBROOT=ウェブルートの場所
EMAIL=メールアドレスを入力
ROOTPATH=$(
    cd $(dirname $0)
    pwd
)

docker run \
    --rm \
    -v ${ROOTPATH}/etc:/etc/letsencrypt \
    -v ${ROOTPATH}/log:/var/log/letsencrypt \
    -v ${ROOTPATH}/../www/:/var/www/ \
    certbot/certbot certonly \
    --webroot -w $WEBROOT \
    -d $DOMAIN \
    -d www.${DOMAIN} \
    -m $EMAIL \
    --agree-tos -n
# --test-cert

このコードをコピペしてファイル保存。
必要箇所を入力。応じてディレクトリの変更
あとはbashとして実行するだけでLetsEncryptの新規作成が可能だ。
ボリュームで仮想呼び出ししてるので、ホスト側にデータが作成される。
動作テストしたい場合は–agree-tos -nを–test-certにする。

ホスト側にcertbotのインストールは不要でdockerのみで完結する。

もちろん、更新作業もdockerで行う

#!/bin/sh
ROOTPATH=$(
    cd $(dirname $0)
    pwd
)
docker run \
    --rm \
    -v ${ROOTPATH}/etc:/etc/letsencrypt \
    -v ${ROOTPATH}/log:/var/log/letsencrypt \
    -v ${ROOTPATH}/../www/:/var/www/ \
    certbot/certbot renew

# nginxのリロード
docker exec -i webのコンテナ名 service nginx reload

こちらもファイルに保存する。実行はクロンを設定しておく。
必要に応じて最後の行のnginxのリロードの設定をする。
以下、cron設定の一例

30 9 1 * * root sh /usr/local/libexec/lets_encrypt_renew.sh > /dev/null 2>&1

もちろん実行時は80ポートを使えるようにして、ウェブページを作成しておくこと。また、volumeの設定で、ルートディレクトリを指定しておく必要がある。

参考
https://qiita.com/inakadegaebal/items/29d21d1f5a904a6ba92d
https://qiita.com/tkykmw/items/9b6ba55bb2a6a5d90963
https://qiita.com/kawaz/items/308240f2dfb2e08c1729
http://www.hakopako.net/entry/2017/10/01/000000

コメント

タイトルとURLをコピーしました