
홈랩으로 나만의 DevOps 환경 만들기
업무에서 쓰는 인프라를 그대로 집에서도 작게 구축해보고 싶어서, 오래전부터 홈랩을 운영하고 있습니다. 거창한 장비 없이 시놀로지 NAS와 유휴 PC 몇 대만으로도 꽤 쓸만한 개인 DevOps 환경을 만들 수 있었습니다.
장비 구성
- 맥미니 — 개발용
- 윈도우 노트북 2대 — 개발용
- 저사양 노트북(G4560, N5095) — 리눅스를 설치해 테스트 서버로 사용
- 시놀로지 NAS — 파일 서버 겸 핵심 인프라 허브
고성능 장비가 아니어도 역할을 나눠서 굴리면 충분히 실용적인 환경이 됩니다.
구성한 서비스들
소스 코드 관리 — Gitea + GitHub 미러링
사내에서는 GitHub이나 사내 형상관리를 쓰지만, 개인 프로젝트는 Gitea를 직접 설치해서 운영합니다. Gitea에 push하면 GitHub으로 자동 미러링되도록 구성해서, 로컬 저장소를 주력으로 쓰면서도 GitHub에 백업 겸 공개 이력을 남길 수 있게 했습니다.
컨테이너 운영 — Docker + Portainer
대부분의 서비스는 Docker 컨테이너로 띄우고, Portainer.io로 웹에서 컨테이너 상태를 관리하고 있습니다. CLI로 일일이 관리하지 않아도 되어서 여러 서비스를 동시에 운영하기에 편합니다.
리버스 프록시 — Nginx Proxy Manager
여러 서비스를 서로 다른 서브도메인으로 노출해야 해서, Nginx Proxy Manager를 앞단에 두고 도메인별 라우팅과 SSL 인증서 발급을 자동화했습니다.
CI/CD — Jenkins + Gitea Actions
Gitea에 push하면 Gitea Actions가 실행되어, 테스트 서버(N5095)로 빌드 결과물을 배포하도록 구성했습니다. 별도 스테이징 없이도 코드를 올리는 즉시 실제 도메인으로 확인할 수 있어서 개인 프로젝트를 빠르게 검증하는 데 유용합니다.
그 외 서비스
- DNS 서버 — 내부 네트워크에서 서브도메인으로 서비스 접근
- 파일 서버 — NAS 기반 공유 스토리지
- Redis — 캐시 및 세션 저장소
- MinIO — S3 호환 오브젝트 스토리지, 파일 업로드 테스트용
개인 도메인 연결
*.heejun.kr 형태의 개인 도메인을 보유하고 있어서, 서브도메인별로 서비스를 나눠 연결했습니다.
덕분에 IP나 포트 번호를 외울 필요 없이 도메인만으로 홈랩의 모든 서비스에 접근할 수 있습니다.
정리하며
홈랩을 운영하면서 가장 크게 느낀 건, 업무에서 문서로만 봤던 인프라 개념들(리버스 프록시, 컨테이너 오케스트레이션, CI/CD 파이프라인)을 직접 손으로 구성해보면 이해도가 완전히 달라진다는 점입니다. 다음 글에서는 Gitea Actions로 배포 파이프라인을 구성한 과정을 좀 더 자세히 다뤄보려 합니다.