
EasyPanelを使うようになってから、AdguardHomeを含む多くのサービスがコンテナ化された構成になりました。ワンクリックで構築できるのは快適なのですが、その分SSL証明書のパスを探すのがかなり面倒になります。今回は、EasyPanelでAdguardHomeを構築した後にぶつかったSSL証明書のパスの問題と、証明書が更新されても手動で貼り直さなくて済むようにした方法を記録しておきます。
現状の問題
AdguardHomeを構築した後、SSL証明書ファイルのパスは、コンテナ側で直接入力できる場所には用意されていません。そのため、証明書の内容を自分で手動で貼り付けるしかありませんでした。
この方法の欠点は明らかです。Let’s Encryptの証明書は3か月ごとに更新されるため、3か月に一度、手動で貼り直す作業が発生してしまいます。
証明書はどこにあるのか
探してみたところ、EasyPanelの証明書は以下のパスに置かれていることが分かりました(EasyPanelを使っていない方は、それぞれの環境で該当する場所を確認してください)。
/etc/easypanel/traefik/dump/<YOUR DOMAIN>このパスはそのまま先ほどの入力欄に指定することができないため、コンテナ側からも参照できるフォルダに、定期的に証明書をコピーする仕組みを用意する必要があります。
証明書はどこにコピーすればいいのか
再度確認したところ、コンテナ内の以下のパスが
/opt/adguardhome/work/サーバーのファイルシステム上では、次のフォルダに対応していることが分かりました(EasyPanelを使っていない方は、それぞれの環境で該当する場所を確認してください)。
/etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/workそこで、workフォルダの下に証明書を保存するためのフォルダを作成します。ここでは仮に<SSLCERT>という名前にしておきます。
crontabで定期的にファイルをコピーする
ここまで来れば、あとは簡単です。以下のコマンドで定期実行の設定を行います。
# root権限で実行します
sudo -i
# crontabを開きます
crontab -e
# certificate.crtとprivatekey.keyをそれぞれコピーします。動作確認のため5分おきに設定しています
# <YOUR DOMAIN>、<YOUR PROJECT NAME>、<SSLCERT>は、それぞれ自分の環境のパスに置き換えてください
*/5 * * * * cp /etc/easypanel/traefik/dump/<YOUR DOMAIN>/privatekey.key /etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/work/<SSLCERT>
*/5 * * * * cp /etc/easypanel/traefik/dump/<YOUR DOMAIN>/certificate.crt /etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/work/<SSLCERT>コードはここまでです。正常に設定が終わって抜けると、次のような表示が出るはずです。
少し待ってから、Winscpなどでファイルが実際にコピーされているかを確認すれば完了です。
得られる結果
これでN分おきに証明書がコンテナ内の指定フォルダにコピーされ、AdguardHomeから参照される状態になります。証明書が更新された場合でも、もう手動でコピーし直す必要はありません。
動作確認に使った環境
- Oracle Cloud の ARM インスタンス
- Ubuntu 22.04
- EasyPanel 2.11.1




