readme 추가

This commit is contained in:
2026-04-13 14:45:17 +09:00
parent 8d9be8eddd
commit 79d1e561d3
5 changed files with 61 additions and 0 deletions
+29
View File
@@ -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)를 활용한 직관적인 대시보드.
+31
View File
@@ -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번 포트 기준)