diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..2c6c226 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -e + +### ===== 설정값 ===== +GIT_REPO="git@git.siane.kr:firstgarden/caddyfile.git" +CADDY_USER="caddy" +HOME_DIR="/root" +CADDY_HOME="${HOME_DIR}/caddy" +CADDY_ETC="/etc/caddy" +CONF_DIR="${CADDY_ETC}/conf.d" + +echo "== Caddy LXC bootstrap 시작 ==" + +### 1. 필수 패키지 확인 +echo "[1/6] 필수 패키지 설치" +apt update +apt install -y git curl + +### 2. git clone +if [ -d "${CADDY_HOME}" ]; then + echo "⚠ ${CADDY_HOME} 이미 존재, clone 생략" +else + echo "[2/6] Caddy 설정 repo clone" + git clone "${GIT_REPO}" "${CADDY_HOME}" +fi + +### 3. /etc/caddy 구조 준비 +echo "[3/6] /etc/caddy 디렉터리 확인" +mkdir -p "${CADDY_ETC}" +mkdir -p "${CONF_DIR}" + +### 4. 심볼릭 링크 설정 +echo "[4/6] 심볼릭 링크 생성" + +# Caddyfile +if [ ! -L "${CADDY_ETC}/Caddyfile" ]; then + ln -s "${CADDY_HOME}/Caddyfile" "${CADDY_ETC}/Caddyfile" +fi + +# conf.d +if [ ! -L "${CONF_DIR}" ]; then + rm -rf "${CONF_DIR}" + ln -s "${CADDY_HOME}/conf.d" "${CONF_DIR}" +fi + +### 5. 권한 설정 +echo "[5/6] 권한 정리" +chown -R ${CADDY_USER}:${CADDY_USER} "${CADDY_ETC}" +chown -R ${CADDY_USER}:${CADDY_USER} "${CADDY_HOME}" + +### 6. Caddy 설정 검증 +echo "[6/6] Caddy 설정 검증" +caddy validate --config "${CADDY_ETC}/Caddyfile" || { + echo "❌ Caddy 설정 검증 실패" + exit 1 +} + +echo "✅ bootstrap 완료" +echo "👉 sudo systemctl reload caddy"