포트폴리오 직접 호스팅에서 시작한 홈랩
포트폴리오 직접 호스팅에서 시작해 연구 계산, 데이터 저장과 개인 서비스 운영으로 확장한 홈랩을 소개합니다.

목차
업무 안내 페이지에서 포트폴리오로
홈랩으로 이어진 첫 계기는 2024~2025년 사회복무요원으로 근무하던 시기에 만든 업무 안내 페이지였습니다. 사무실이 담당 업무에 따라 나뉘어 있어, 방문자가 어디로 가야 하는지 알려주는 간단한 페이지였습니다.
정적인 내용만 보여준다면 PPT로도 충분했지만, 웹페이지에서는 점심시간이 되면 업무 중단 안내로 화면을 자동 전환하고 날씨와 초미세먼지 정보도 갱신하도록 만들었습니다. 이 페이지를 만들면서 개인 포트폴리오도 필요하겠다는 생각이 들었고, 학부연구생 때의 경험을 살려 퇴근 후 취미로 직접 호스팅을 시작했습니다. 지금은 웹서비스 배포와 운영을 배우는 공간으로 사용하고 있습니다.

현재 홈랩의 가장 큰 목적은 포트폴리오 운영입니다. 그다음으로 연구 계산과 데이터 저장, 개인 서비스 운영과 자료 백업에 활용합니다.
역할에 따라 나눈 구성
Raspberry Pi 5는 Nginx 리버스 프록시와 포트폴리오 웹 애플리케이션의 Docker 컨테이너를 실행합니다.
연구 계산에는 8코어 16스레드와 메모리 48GB를 갖춘 미니PC 한 대, 그리고 각각 6코어 12스레드와 12코어 24스레드인 2013년형 Mac Pro 두 대를 사용합니다. 두 Mac Pro의 메모리는 각각 64GB입니다. 로컬 우주론 N-body 시뮬레이션의 분산 실행을 위해 UniFi 기반 10G 네트워크를 구성했습니다.
Synology NAS는 CalDAV 서비스와 데이터 저장, 개인 자료 백업을 담당합니다. 직접 운영하는 수고는 들지만, 로컬 전송 속도와 데이터 소유권을 확보할 수 있다는 점이 가장 큰 이유입니다.
포트폴리오를 직접 공개한다는 것
포트폴리오는 Cloudflare를 앞단에 두고 Raspberry Pi 5의 Nginx와 Docker 환경에서 운영하고 있습니다.
외부에 서비스를 공개한 뒤에는 웹 애플리케이션뿐 아니라 그 앞단도 직접 관리하게 되었습니다. 호스트 방화벽에는 UFW를 사용하고, Nginx에 ModSecurity를 모듈로 구성해 웹 요청을 검사합니다. CrowdSec은 로그를 바탕으로 반복적인 공격 행동을 탐지하는 데 사용하고 있습니다.
직접 운영하며 알게 된 점
로그를 수집하는 것과 그 내용을 꾸준히 확인하는 것은 전혀 다른 문제였습니다. 기록이 많아질수록 무엇을 먼저 살펴봐야 하는지 판단하기 어려워졌고, 공개 서비스를 스스로 지켜야 한다는 부담도 커졌습니다.
업데이트 역시 단순하지 않았습니다. ModSecurity를 Nginx 모듈로 직접 빌드했기 때문에 Nginx 버전을 올릴 때 모듈 호환성이 깨진 적이 있습니다. 방어 수단을 추가하는 일은 그 구성요소를 계속 유지해야 하는 일과 함께 온다는 것을 체감했습니다.
직접 호스팅은 가장 간편한 방법은 아닙니다. 하지만 웹서비스가 실제로 배포되고 유지되는 과정을 배우는 것이 목적이라면, 이런 시행착오까지 포함해 좋은 학습 환경이라고 생각합니다.
