概要
AmazonLinux 2023でEPEL repo が利用できず、caddyのインストールはマニュアルインストールしか手段が見当たらなかったので、その作業メモです
対象者
- ルール上でAny許可できるtcpポートがhttp/https等に限られている。わざわざALB用意したくない
- httpsには対応したい。だけど証明書の用意は面倒
- caddyで証明書付きのリバプロ構築しようとしたが、AmazonLinux2023でEPEL利用できず、つまづいた
対応手順
caddyを手動でインストールし、内部証明書を使ってhttps対応のリバースプロキシロを起動します。
バイナリをダウンロード
curl -OL https://github.com/caddyserver/caddy/releases/download/v2.6.4/caddy_2.6.4_linux_amd64.tar.gz
tar -xvf caddy_2.6.4_linux_amd64.tar.gz caddy
sudo mv caddy /usr/bin/
# 実行可能であることを確認
caddy version
他のバージョン利用時はこちらから
https://github.com/caddyserver/caddy/releases
設定追加
caddy用のディレクトリおよび設定ファイルを配置
sudo mkdir -p /etc/caddy/conf.d
# 設定追加
cat <<EOF | sudo tee /etc/caddy/Caddyfile
http:// {
redir https://{host}{uri}
}
import conf.d/*.conf
EOF
http → https のリダイレクトおよびimport設定追加
利用アプリケーション向けのリバプロ設定を追加 (ドメイン指定時はDNS登録もしくは名前解決可能であること)
※設定は利用環境にあわせて行ってください
細かな設定方法は本記事では割愛します
/etc/caddy/Caddyfile
http:// {
redir https://{host}{uri}
}
import conf.d/*.conf
/etc/caddy/conf.d/myapp.conf
vault.sample.net localhost 127.0.0.1 {
tls internal
reverse_proxy https://127.0.0.1:8200 {
health_uri /v1/sys/health
health_timeout 10s
health_status 2xx
transport http {
tls_insecure_skip_verify
}
}
}
systemd で起動設定
起動に使用するユーザー、グループ追加
sudo groupadd --system caddy
sudo useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
/etc/systemd/system/caddy.service
を作成
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
起動、動作チェック
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy
# 起動状況を確認
ss -lnt
# https 応答チェック
curl -k https://vault.sample.net/v1/sys/health
# httpが適切にリダイレクトされることを確認
curl -k http://vault.sample.net/v1/sys/health
curl --head http://vault.sample.net/v1/sys/health
curl -k -L http://vault.sample.net/v1/sys/health
最後に
マニュアルインストールの内容はほぼ公式ドキュメントのコピーです。
もし今後AmazonLinux2023用のインストール手順が追加されたら、そちらを参照してください。
Link
https://caddyserver.com/docs/running
https://github.com/caddyserver/