<aside>
기간 : 2025.08.01 - 2025.08.13
인원 : 1명
설명 : 클라우드 없이 사내 온프레미스 환경에서 React(정적 SPA) + Node/Express(API) 기반 웹 서비스를 구축하고, Nginx·Certbot·PM2·Deploy Key로 배포·보안·모니터링을 자동화한 운영 파이프라인을 설계했습니다. 이를 통해 안정적인 HTTPS 서비스와 반복 가능한 자동 배포 체계를 확보했습니다.
프론트엔드 구축 : React + Vite + Tailwind로 반응형 SPA 구현, 글로벌 UI 컴포넌트 정리
백엔드/API 보안 설계 : Express /api/contact 구현, validator/sanitize-html(message만), 헤더 인젝션 차단, rate-limit, CORS 화이트리스트
메일 전달성 설계 : 하이웍스 SMTPS 465 연동, from=회사계정 + replyTo=사용자로 DMARC 정렬 확보, 오류 처리/로그화
온프레미스 서버 구축 : Ubuntu Server 설치, 무선 LAN 드라이버 오프라인 설치·netplan 권한 수정, 기본 유틸 세팅
방화벽/접근 제어 : UFW로 80/443/SSH 최소 허용, 내부 백엔드 포트 비공개화
리버스 프록시·네트워크 설계 : 공유기 포트포워딩(80/443→A서버), Nginx 도메인 기반 라우팅으로 기존 서비스와 동시 운영
Nginx 설정 개선 & vhost 로그 분리 : WebSocket 업그레이드 매핑(map) 적용, aim/seyeon 서버블록 분리, vhost별 access/error 로그 경로 지정, ACME 인증 경로 우선 처리, SPA 정적/리버스 프록시 구성
HTTPS 적용 : Certbot으로 SSL 발급·HTTP→HTTPS 리다이렉트, 자동갱신 점검
배포 자동화 : GitHub Deploy Key(읽기 전용) + ~/.ssh/config 별칭, deploy.sh로 빌드 → Nginx → SSL → PM2 일괄 배포
배포 스크립트 고도화·운영 관리 : 멱등성 확보, 배포 후 헬스체크(curl) 절차, PM2 프로세스 관리 정책 정리, logrotate(회전/압축/보관일) 구성, vnstat 활성화, 크론으로 매일 03:00 로그 백업 & 7일 보관
모니터링/관측 : Nginx access/error 로그 분리, 실시간 tail 파이프라인, htop/iftop 기반 리소스/네트워크 관측
tmux 3분할 모니터링 스크립트 : htop / iftop / 서비스 로그 세로 균등 3분할, even-vertical 레이아웃, 접속 시 자동 실행
트러블슈팅·문서화 : DNS A레코드 불일치, Nginx proxy_pass 슬래시, .env 미로딩, CORS 미허용 도메인 등 이슈 해결 및 운영 가이드/PPT 작성
Frontend : JavaScript , React , Vite , Tailwind CSS , Axios
Backend : Node.js , Express , Nodemailer(SMTPS 465/TLS) , validator , sanitize-html , CORS , express-rate-limit , dotenv
DevOps : Ubuntu Server , Nginx , GitHub(Deploy Key·SSH) , PM2 , Certbot(HTTPS) , UFW , 포트포워딩·리버스프록시 , tmux/htop/iftop , logrotate , vnstat , crontab
<aside> <img src="/icons/bookmark_blue.svg" alt="/icons/bookmark_blue.svg" width="40px" />
</aside>
https://github.com/DO-MADO/aimWeb
</aside>