홈서버 구축 과정 정리
Ubuntu 홈서버 구축기· 1 / 15
- 1 — 홈서버 구축 과정 정리
- 2 — 운영체제 선택과 설치
- 3 — Rufus로 Ubuntu USB 부팅 디스크 만들기
- 4 — Windows 디스크 파티셔닝과 Ubuntu 설치
- 5 — SSH 원격 접속 설정
- 6 — 방화벽 설정
- 7 — Cloudflare DNS 설정
- 8 — Nginx 설치와 리버스 프록시
- 9 — Nginx SSL/TLS 발급과 자동 갱신
- 10 — MySQL 설치와 설정
- 11 — Node.js 설치와 백엔드 애플리케이션 실행
- 12 — DHCP Reservation으로 내부 IP 고정
- 13 — 포트 포워딩
- 14 — 동적 DNS(DDNS) 개념과 테스트
- 15 — ddclient으로 동적 DNS(DDNS) 자동화
홈서버를 구축해보는 주된 <동기> 를 나열해보면 다음과 같다.
- 네트워크와 보안 등 배포의 모든 과정을 직접 다루며, 포괄적인 백엔드 경험을 쌓고 싶다.
- 장기적으로 안정적인 서버를 지속적으로 유지보수하며, 나만의 서버 환경을 구축해 나갈 수 있다.
- 집에 있는 PC와 네트워크를 활용해 서버를 운영하므로, 비용 측면에서 더 유연하게 관리할 수 있다.
홈서버를 구축하면서 특히 신경 쓰는 <집중 요소> 는 다음과 같다.
- 보안: 홈 네트워크를 사용하는 만큼, 외부 침입과 데이터 유출을 막기 위해 보안에 더욱 신경을 쓸 것이다.
- 시스템 자동화: DDNS, SSL/TLS 인증서 갱신 등 가능한 서버 시스템을 자동화하여, 관리의 편리성과 안정성을 높일 것이다.
- CLI 중심 작업: 최대한 GUI가 아닌 CLI를 사용하여 개발함으로써, 개발자적인 접근 방식에 집중할 것이다.
홈서버 정보
홈서버 구성에 사용한 기술 스택과 요청이 처리되는 전체 아키텍처를 정리한다.
사용 기술 정보
- 서버 기기:
WindowsOS-based laptop - 서버 OS:
Linux: Ubuntu(Desktop) - 네트워크:
Home WiFi - DNS 서비스:
Cloudflare - 자동화 도구:
Certbot(SSL/TLS)ddclient(DDNS) - 배포 대상:
Node.js web-server app
아키텍처

- 클라이언트 요청
- 클라이언트는 DNS로 등록된 도메인을 통해
요청한다. - DNS 서비스로부터 도메인 네임을 공인 IP로 해석하여 서버에 접근하게 한다.
- 클라이언트는 DNS로 등록된 도메인을 통해
- 라우터 패킷 수신
- DHCP 예약을 통해 네트워크에 연결된 기기에 고정된 내부 IP가 할당된다.
- Port-forwarding이 설정된 포트를 통해
요청을 특정 내부 IP로 전달한다.
- 기기 접근 및 방화벽
- 서버 방화벽에 승인된 포트일 경우
요청이 내부로 전달된다.
- 서버 방화벽에 승인된 포트일 경우
- 웹서버(Nginx) 접근
요청의 SSL/TLS 인증서 및 DNS를 검증하여 보안을 확인한다.- Reverse-proxy를 통해
요청을 내부 애플리케이션 서버의 포트로 라우팅한다.
- 애플리케이션(Node.js) 실행
요청에 따라 필요한 작업을 수행한다.
홈서버 구축 과정
구축 과정은 서버 설치부터 웹 서버, 애플리케이션, 네트워크, 모니터링까지 총 다섯 단계로 진행한다.
서버 구축
가장 먼저 서버로 사용할 기기에 OS를 설치하고 원격 접속 및 방화벽 환경을 구성한다.
- Ubuntu 운영체제 설치
- SSH 서버 원격 접속 설정
- 서버 방화벽 규칙 설정
웹 서버 구축
다음으로 도메인과 SSL 인증서를 준비해 Nginx 웹서버를 구성한다.
- DNS 설정
- Nginx 웹서버 설치 및 설정
- SSL/TLS 인증서 발급
애플리케이션 장착
이후 데이터베이스와 Node.js 애플리케이션을 서버에 배치한다.
- MySQL 데이터베이스 설치
- Node.js 설치 및 애플리케이션 실행
네트워크 설정
외부에서 서버에 접근할 수 있도록 네트워크 설정을 진행한다.
- DHCP Reservation
- Port Forwarding
- DDNS 설정
모니터링 및 관리
마지막으로 서버 운영을 위한 모니터링과 백업 체계를 마련한다.
- 시스템 모니터링 및 로그 관리 도구 설정
- 데이터 정기 백업 설정