- 이 글은 Hetzner와 Coolify를 이용한 VPS 자가 호스팅 절차를 단계별로 자세하게 문서화한 체크리스트임
- Hetzner는 유럽에서의 낮은 지연시간, 뛰어난 가격 대비 성능, 투명한 요금제로 추천됨
- 보안 중심의 초기 서버 셋업, SSH 보안, 방화벽, 자동 업데이트 설정법 등 실무에서 자주 만나는 이슈를 포함함
- Node.js 앱을 안전하게 배포하는 프로덕션 환경 구성, 모니터링, 백업, 문제 해결 방법 등을 상세히 안내함
- 스스로 서버를 구축하면서 DevOps 역량과 자유로운 관리 능력을 기를 수 있는 실용적인 안내서임
VPS 셋업 준비 체크리스트
- VPS 서비스 공급자를 선택하는 항목에서 Hetzner가 가격/성능 면에서 추천 항목으로 언급됨
- 최소 1GB RAM, 20GB 스토리지를 갖춘 사양 선택, 서버의 IP 주소 및 루트 계정 정보 기록 필요
- 로컬 머신에 SSH 클라이언트 준비, 강력한 비밀번호 생성기를 활용할 것
VPS 공급자 선택 이유
-
Hetzner Cloud는 유럽 지역에서는 저렴하고 빠르며 신뢰도가 높음
- 대안: DigitalOcean(온보딩/문서 우수, 가격 상승), AWS Lightsail(AWS에 종속, 초보에 난이도 높음), Linode(안정적이나 가격경쟁력 낮음), Render/Fly.io(PaaS로 편리하나 비용과 제약이 많음)
- Hetzner는 동일 사양 대비 2~3배 저렴함, 불투명한 과금 없음, 유럽 데이터센터 강점
초기 서버 셋업 체크리스트
첫 접속 및 시스템 업데이트
- 패키지 목록 업데이트와 시스템 업그레이드
- 시스템 정보 확인을 위한 명령어 제공(예: uname -a, cat /etc/os-release)
루트 계정 보안 설정
-
복잡한 비밀번호 지정 및 안전한 저장 필요
- 'admin', 'user'와 같은 관습적 계정 이름 대신 고유한 사용자 계정 생성
- 신규 계정에 sudo 권한 부여, 정상적으로 적용여부 확인
SSH 키 인증 구성
-
로컬 머신에서 Ed25519(권장) 혹은 RSA 키 쌍 생성
- 공개키를 서버의 .ssh/authorized_keys에 추가 후 권한 설정
- SSH 키 로그인 정상 작동 확인(패스워드 입력 없이 접속되는지)
- 패스워드 인증 비활성화, 필요시 cloud-init 별도 파일도 점검
- SSH 데몬 재시작 및 정상 작동상태 확인
-
루트 로그인 비활성화로 원격 루트 접속 차단 확인
방화벽(Firewall) 설정 체크리스트
UFW 기본 설정
-
모든 인커밍 기본 거부, 아웃고잉 허용
- SSH, HTTP(80), HTTPS(443) 포트 허용 및 UFW 적용여부 확인
- 옵션: SSH 포트 특정 IP로 제한, 포트 번호 변경(보안 강화 목적) 하여 추가 방어층 구현
자동 업데이트 설정 체크리스트
Unattended Upgrades 구성
- unattended-upgrades, apt-listchanges 패키지 설치, 기본 사용 동의 선택
-
보안 업데이트 항목 주석 해제 및 이메일 알림, 자동 재부팅 옵션 구성 가능
- 자동 업데이트 동작 테스트, 상태 확인
프로덕션 애플리케이션 배포 체크리스트
Node.js 운영 환경 구성
- Node.js LTS 설치, 버전 확인
- 애플리케이션 파일 서버에 업로드 후, 의존성 설치로 실운영 준비
프로세스 매니저(PM2) 활용
- PM2로 앱을 production 모드로 실행, 클러스터링 옵션
- PM2 부팅 시 자동시작 설정, 재시작/모니터링 명령 제공
Reverse Proxy(Nginx) 설정
- Nginx 사이트 설정파일 생성 및 프록시 패스 적용
- 사이트 활성화 및 Nginx 재시작
SSL 인증서 설정 체크리스트
Let's Encrypt와 Certbot
- certbot, python3-certbot-nginx 설치 후 도메인 기반 SSL 인증서 자동 발급
- 갱신 자동화 옵션 및 인증서 유효성 테스트
모니터링 및 유지관리 체크리스트
기본 모니터링 방법
- htop, iotop 등 시스템 자원 확인 툴 설치
- syslog, auth.log 실시간 로그 모니터링 및 로그 순환 정책(logrotate) 설정
백업 전략
- tar 이용 애플리케이션 및 데이터베이스 백업 스크립트 작성
- 일정(crontab)에 따라 주기적 백업 수행
문제 해결 체크리스트
SSH 접속 문제
- 방화벽 설정, SSH 서비스 상태, 인증 로그, 네트워크 확인
권한 관련 에러
서비스 미기동
- systemctl, journalctl로 상태 및 로그 확인, 설정파일 문법 확인
리소스 과다 사용
- 프로세스/디스크/네트워크/애플리케이션 로그 분석
최종 검증 체크리스트
보안 검증
- SSH 키 인증/비밀번호 로그인/루트 로그인/방화벽/자동 업데이트/제품 모드/SSL/백업 등 전 항목 작동 여부 검토
성능 테스트
- Apache Bench로 부하 테스트 및 자원 모니터링, 로그 에러 확인
빠른 참고 명령어 목록
시스템 정보 확인
- htop, df -h, free -h, uname -a
프로세스 관리
- pm2 status, pm2 restart all, pm2 logs, pm2 monit
보안 관련
- sudo ufw status, sudo fail2ban-client status, sudo lynis audit system
서비스 관리
- sudo systemctl status nginx, sudo systemctl restart nginx, sudo journalctl -u nginx
마무리
- 이 체크리스트는 완전한 VPS 셋업·관리 절차를 제공함
- 저렴한 비용 뿐 아니라 직접 관리와 학습, DevOps 자율성을 얻을 수 있음
- Hetzner와 Coolify를 통한 셀프 호스팅은 실전 경험을 통한 신뢰와 자유로움 경험을 가능케 함
- VPS 호스팅에 도전하려는 이들에게 실질적 가이드 역할을 하는 콘텐츠임