바이브 코딩으로 여러 프로젝트를 만들어보았지만 다른 더 좋은 프로젝트가 많거나 완성도가 별로였던 프로젝트가 많았다.
하지만 이번 프로젝트는 서버에 적용해서 써봐도 괜찮다고 생각하여 공유해보려고 한다.
Antigravity로 gemini3와 Sonnet 4.5를 이용해서 만들어보았다.
이 프로젝트는 서버 내의 도커 이미지를 가져와 trivy(CVE, 보안 취약점 정밀 분석 엔진)로 분석한 다음 취약점을 webui로 보여주는 기능을 한다.
주요 기능
-자동 취약점 스캔(매일 00시)
-실시간 대시보드(한국어 UI)
-CVE 상세 정보 제공
-수정 정보 자동 표시
-심각도별 필터링
-Docker Hub 이미지 지원
기술 스택
- Backend: FastAPI, PostgreSQL, Trivy
- Frontend: Next.js 16, React 19
- 라이선스: Apache 2.0
권장사양
- RAM: 최소 2GB (권장 4GB)
- 디스크: 1GB (Trivy DB 포함)
- Docker 엔진 필수
프로젝트는 docker compose로 다운가능하다.
docker-compose.yml을 생성하여 아래 내용을 복사 붙여 넣기 하면 된다.
services:
# PostgreSQL 데이터베이스
db:
image: postgres:17-alpine
container_name: scanner-db
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: Asia/Seoul
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER}" ]
interval: 10s
timeout: 5s
retries: 5
logging:
driver: "json-file"
options:
max-size: "5m"
max-file: "3"
# FastAPI 백엔드
backend:
image: dokkaeb1/scanner-backend:latest
container_name: scanner-backend
restart: always
environment:
DATABASE_URL: ${DATABASE_URL}
TZ: Asia/Seoul
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- trivy_cache:/root/.cache/trivy
depends_on:
db:
condition: service_healthy
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
# Next.js 프론트엔드
frontend:
image: dokkaeb1/scanner-frontend:latest
container_name: scanner-frontend
restart: always
environment:
NEXT_PUBLIC_API_URL: http://backend:8000
NODE_ENV: production
TZ: Asia/Seoul
ports:
- "3000:3000"
depends_on:
- backend
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
postgres_data:
trivy_cache:
추가로. env파일도 필요한데 아래 내용을 붙여 넣고 필요한 대로 수정하면 된다.
POSTGRES_DB=scannerdb
POSTGRES_USER=scanner
POSTGRES_PASSWORD=your_secure_password
DATABASE_URL=postgresql://scanner:your_secure_password@db:5432/scannerdb
webui가 지원되므로 3000번 포트로 접속하면 된다.

프로젝트에 2026-01-19 기준 특징이 있는데
백엔드에서 취약점이 2개
SQL에서 취약점이 12개
총 14개가 기본으로 있다는 점이다.
백엔드에서는 Trivy 엔진 자체 취약점이 있고
postgreSQL에는 아직 업데이트가 되지 않은 취약점이 12개가 있어서 14개의 취약점은 수정이 불가능하다.
이미지 선택, 해제 기능도 있으므로 원하는 이미지만 볼 수 있다.
'기타 서버' 카테고리의 다른 글
| Docker Security Scanner Update (0) | 2026.03.30 |
|---|---|
| Wireguard를 통해 외부에서 홈 네트워크 접속하기 (0) | 2025.11.23 |
| CUPS를 이용해 잉크젯 프린터 주기적으로 프린트하기 (0) | 2025.11.13 |