rep2への接続において、HTTPS接続を有効にしたい場合は、以下のいずれかの方法で設定を行ってください。
対応する DNS プロバイダー(Cloudflare, Route53, Google Cloud DNS 等)を利用している場合に最も簡単で確実な方法です。
標準の Caddy バイナリには DNS-01 チャレンジ用プラグインが含まれていません。以下の手順でカスタムバイナリを導入してください。
- Caddy公式サイト から、必要なプラグイン(例:
dns.providers.cloudflare)を含んだバイナリをダウンロードします。 - ダウンロードしたバイナリを以下の場所に配置し、実行権限を付与します。
sudo mv caddy /var/lib/rep2-allinone/custom-caddy
sudo chmod +x /var/lib/rep2-allinone/custom-caddy
sudo chown rep2:rep2 /var/lib/rep2-allinone/custom-caddymv caddy $(brew --prefix)/var/lib/rep2-allinone/custom-caddy
chmod +x $(brew --prefix)/var/lib/rep2-allinone/custom-caddy※ これらのパスに実行可能なバイナリがある場合、パッケージ標準のバイナリよりも優先して使用されます。
設定ファイル(Linux: /etc/rep2-allinone/secrets.conf、macOS: $(brew --prefix)/etc/rep2-allinone/secrets.conf)に API トークンなどを記述します。このファイルに記述された内容は環境変数として Caddy から参照できます。
# Cloudflare の場合
CLOUDFLARE_API_TOKEN=your_token_here設定ディレクトリにある Caddyfile を編集し、ドメイン名と DNS チャレンジの設定を記述します。
{
email your-email@example.com
}
https://your-domain.example.com:443 {
log {
output stderr
}
tls {
issuer acme {
# Cloudflare の例
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
# 伝搬確認を 1.1.1.1 で行う(ローカルDNS環境での失敗を防ぐため)
resolvers 1.1.1.1
}
}
root * /opt/rep2-allinone/p2-php/rep2 # macOS の場合はパスを調整すること
php_fastcgi 127.0.0.1:9000
file_server
@js_files {
path *.js
}
header @js_files Content-Type "application/javascript; charset=Shift_JIS"
@css_files {
path *.css
}
header @css_files Content-Type "text/css; charset=Shift_JIS"
}Caddy プラグインが存在しないサービス(MyDNS.jp 等)を利用している場合や、すでにホスト側で Certbot を運用している場合に有効な方法です。
root 権限で生成・管理される /etc/letsencrypt/live/ 以下の証明書ファイルは、一般ユーザー(Linux の rep2 ユーザーや macOS の Homebrew ユーザー)から直接読み取ることができません。これを解決するために、Certbot のデプロイフックを利用して証明書ファイルを「アプリが読み書き可能な場所」へコピーし、所有権を変更します。
- デプロイフックスクリプトの作成
/etc/letsencrypt/renewal-hooks/deploy/rep2-allinone.sh を作成します。
#!/bin/sh
DEST="/var/lib/rep2-allinone/certs"
mkdir -p "$DEST"
cp "$RENEWED_LINEAGE/fullchain.pem" "$DEST/fullchain.pem"
cp "$RENEWED_LINEAGE/privkey.pem" "$DEST/privkey.pem"
chown -R rep2:rep2 "$DEST"
chmod 600 "$DEST/privkey.pem"
systemctl reload rep2-allinone$(brew --prefix)/etc/letsencrypt/renewal-hooks/deploy/rep2-allinone.sh を作成します。
#!/bin/sh
DEST="$(brew --prefix)/var/lib/rep2-allinone/certs"
mkdir -p "$DEST"
cp "$RENEWED_LINEAGE/fullchain.pem" "$DEST/fullchain.pem"
cp "$RENEWED_LINEAGE/privkey.pem" "$DEST/privkey.pem"
BREW_USER=$(stat -f "%Su" "$(brew --prefix)")
chown -R "$BREW_USER" "$DEST"
chmod 600 "$DEST/privkey.pem"
brew services restart rep2-allinone作成後、それぞれ実行権限を付与します(例: sudo chmod +x ...)。
-
初回コピーの実行 すでに証明書が取得済みの場合は、一度手動で上記のスクリプトを(必要に応じて
sudoで)実行してファイルを配置してください。# RENEWED_LINEAGE 環境変数をシミュレートして実行例 sudo RENEWED_LINEAGE="/etc/letsencrypt/live/your-domain.example.com" /etc/letsencrypt/renewal-hooks/deploy/rep2-allinone.sh
-
Caddyfile の設定 Caddyfile で、コピーした証明書ファイルを指定します。
https://your-domain.example.com:443 {
log {
output stderr
}
tls /var/lib/rep2-allinone/certs/fullchain.pem /var/lib/rep2-allinone/certs/privkey.pem # macOS の場合はパスを調整すること
root * /opt/rep2-allinone/p2-php/rep2
php_fastcgi 127.0.0.1:9000
file_server
@js_files {
path *.js
}
header @js_files Content-Type "application/javascript; charset=Shift_JIS"
@css_files {
path *.css
}
header @css_files Content-Type "text/css; charset=Shift_JIS"
}