diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b0ac3ed --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.aider* diff --git a/doc/vault-keeper 상세 설계도.txt b/doc/vault-keeper 상세 설계도.txt new file mode 100644 index 0000000..ce34056 --- /dev/null +++ b/doc/vault-keeper 상세 설계도.txt @@ -0,0 +1,29 @@ +🏗️ VaultKeeper 프로젝트 상세 설계도 (Ver 2.0) +1. 개요 +목적: Nginx의 .htpasswd 파일을 웹 GUI를 통해 관리하는 초경량 도구. + +타겟 환경: Google Cloud e2-micro (저사양 서버). + +주요 언어: Go (백엔드), Vanilla JS (프론트엔드). + +2. 보안 전략 (핵심) +인증 분리: 백엔드 자체에 로그인 로직을 구현하지 않고, Nginx의 auth_basic 모듈에 인증을 위임함. + +접근 권한: 서버 관리자가 터미널에서 직접 생성한 계정으로만 웹 UI에 접근 가능. + +입력값 검증: os/exec 실행 시 쉘 인젝션을 방지하기 위해 사용자 이름에 특수문자 입력을 제한함. + +3. 구성 요소 +Backend (main.go): + +환경 변수 HTPASSWD_PATH를 통해 대상 파일 경로 지정. + +표준 패키지 net/http를 사용하여 메모리 점유 최소화. + +htpasswd 시스템 명령어를 서브프로세스로 호출하여 계정 추가/삭제. + +Frontend (index.html): + +단일 파일 SPA 구조. + +Tailwind CSS(CDN)를 활용한 직관적인 대시보드. \ No newline at end of file diff --git a/doc/지시서.txt b/doc/지시서.txt new file mode 100644 index 0000000..faed974 --- /dev/null +++ b/doc/지시서.txt @@ -0,0 +1,31 @@ +프로젝트: VaultKeeper (Nginx .htpasswd 관리 도구) + +1. 백엔드 구현 (main.go) + +언어: Go (표준 라이브러리 위주로 매우 가볍게). + +기능: + +GET /api/users: .htpasswd 파일을 읽어 유저 목록을 JSON으로 반환. + +POST /api/users: username, password를 받아 htpasswd -b 실행. + +DELETE /api/users/{username}: htpasswd -D 실행. + +보안: 사용자 이름 입력값에서 쉘 인젝션이 발생하지 않도록 유효성 검사 로직 포함. + +설정: .htpasswd 경로를 환경 변수 HTPASSWD_PATH에서 읽어오도록 설정. + +2. 프론트엔드 구현 (index.html) + +단일 파일 SPA로 작성하고 Tailwind CSS를 사용하여 깔끔한 UI 제공. + +유저 목록 표시, 추가 폼, 삭제 버튼 구현. + +3. 배포 가이드 (deployment.md) 생성 + +go build를 이용한 경량 바이너리 빌드 방법 (-s -w 옵션 포함). + +터미널에서 최초 관리자 계정을 생성하는 명령어 안내. + +이 서비스를 Nginx auth_basic 뒤에 배치하기 위한 location 블록 설정 예시. (8000번 포트 기준) \ No newline at end of file diff --git a/deployment.md b/readme.md similarity index 100% rename from deployment.md rename to readme.md diff --git a/vaultkeeper b/vaultkeeper new file mode 100644 index 0000000..f34de78 Binary files /dev/null and b/vaultkeeper differ