초보자를 위한 VPS Hetzner 및 Coolify 가이드
(bhargav.dev)- 이 글은 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 서비스 상태, 인증 로그, 네트워크 확인
권한 관련 에러
- 파일/폴더 권한, 그룹, sudo 설정 점검
서비스 미기동
- 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 호스팅에 도전하려는 이들에게 실질적 가이드 역할을 하는 콘텐츠임
Hacker News 의견
-
초보자인 내게 정말 좋은 요약임이라고 생각함, 꼭 북마크할 예정임
하지만 아쉬운 점은 제목에 Coolify가 언급되어 있지만 본문에는 거의 언급이 없음
비슷한 주제의 다른 유익한 글로는 'Setting up a Production-Ready VPS from Scratch'가 있어 아래 링크로 북마크함
https://dreamsofcode.io/blog/…
그런 주제를 좀 더 깊이 이해하고 싶을 때, 나는 주로 글 링크를 LLM에 넣고
"이건 '주제/제목'에 대한 아티클임: https://article.link. 잘 파악하고 분석한 다음, 각 섹션을 너의 지식으로 확장하고, 관련 추가 섹션도 포함해줘"
이렇게 프롬프트해서 학습함- 나는 Coolify를 처음 셋업할 때 많은 도움을 받았던 영상 튜토리얼이 있어 추천하고 싶음
https://www.youtube.com/watch?v=taJlPG82Ucw
이 설정으로 1년 정도 운영 중이며, 처음으로 셀프호스팅이 자신 있게 느껴졌음
- 나는 Coolify를 처음 셋업할 때 많은 도움을 받았던 영상 튜토리얼이 있어 추천하고 싶음
-
OVH도 Hetzner만큼 신뢰할 수 있는데, 지금은 훨씬 저렴한 상품이 있음
https://us.ovhcloud.com/vps/configurator/…
Coolify를 쓴다면 어떤 배포판을 선택할지 고민 중임
Ubuntu 24.04와 Debian 13 중 어떤 게 더 나은 선택인지 고민임-
OVH VPS - 24 vCPU(혹은 쓰레드), 96GB RAM이 월 $53.4임
Hetzner VPS(AMD 옵션 기준)는 16vCPU, 32GB, $54.9/월
DO Droplet은 16vCPU, 64GB RAM에 $504/월
Linode, Upcloud도 24~20vCPU, 96GB RAM에 $576/월로 OVH와 비교하면 훨씬 비쌈
OVH가 어떤 CPU를 쓰는지 모르겠지만, 가격 차이를 감안해도 Intel E-Core CPU라고 하더라도 이 정도면 꽤 괜찮은 조건임
참고로 Hetzner의 더 저렴한 Intel vCPU 옵션도 있는데, 구형 하드웨어이며 다른 고객의 취소로만 슬롯이 열림
그래서 최신 AMD 옵션만 비교 대상으로 삼았음 -
OVH의 유일한 문제는 VPS(월 $30 정도)를 임대하려면 내 신분증 사본을 보내야만 한다는 점임
내 개인정보를 그렇게 배포하고 싶지 않아서, 결국 더 비싼 곳을 선택함 -
내 경험(크게 길지 않음)상, Hetzner 클라우드 서버가 OVH VPS보다 성능적으로 훨씬 좋았음
두 군데 모두 만족스럽게 사용 중임 -
OVH랑 Hetzner가 다른 업체들 대비 이렇게나 가격이 싼 이유가 뭔지 궁금함
VPS가 다른 곳보다 공유가 많아서 어느 정도 이해되긴 하는데, 이 두 곳은 전용서버도 굉장히 저렴함
어떤 미끼 상품(honeypot)인가 싶기도 하고, OVH 가격이 최근에 바뀐 건지도 궁금함
몇 년 전에는 Hetzner보다 더 비쌌던 기억이 있음 -
여기 언급된 모든 CPU는 사실상 공유 자원일 가능성이 높음
그리고 실제로 얼마나 공유되는지는 공개하지 않음
Hetzner에는 동일 코어수인데 가격이 절반인 서버도 있음
표면적으로는 안 나오지만 직접 퍼포먼스를 테스트해 보면 저렴한 서버는 실제로 성능이 반밖에 안 나옴
-
-
CSS 설정 중에서 아래 두 가지를 껐더니 블로그 UI/UX가 엄청 좋아짐
pre {
margin: 2rem 0 !important;
padding: 1rem !important;
}
코드 블록에 패딩과 마진이 너무 커서 화면에 3줄밖에 안 보였음
그리고 Webmin/Virtualmin을 설치하면 새 하위도메인이나 사용자 추가 같은 작업이 훨씬 간편해짐 -
나는 Coolify가 궁금해서 클릭했지만, 실제로는 태그, 서론, 마무리 등에서만 언급될 뿐 본문에는 내용이 없음
Coolify가 거론된 것 자체가 부적절하다고 봄
이 글은 실제로는 Coolify 배포를 위한 VPS 준비법에 대한 내용임
Coolify 설치 자체에 대해서는 다루지 않음 -
나는 지금까지 VM에서 Docker Compose로 모든 서비스를 관리하고 있는데, Coolify가 이 방식보다 현저히 나은 대안일지 궁금해서 클릭했음
그런데 Coolify에 대한 실제 내용은 전혀 없었고, Coolify 준비를 위한 수동 작업들이 오히려 더 복잡해 보였음
“Docker Compose 베이스 이미지를 쓰고, 몇 가지만 손보면 되는” 내 방식이 훨씬 간단해 보여서
내가 쓰는 방법이 계속 쓸 만하다고 느낌
좋은 점은 호스트 간 이전도 Docker Compose YAML 파일 하나만 복사하면 99% 해결된다는 점임-
몇 달 전에 Coolify를 써 봤는데, 여러 컨테이너가 Compose로 연결되어 있을 때 온갖 문제가 발생했음
예를 들어, 어떤 컨테이너가 실행된 걸 까먹어서 중복해서 띄우거나, 둘 다 돌아가는데 Coolify에서는 하나만 인식하는 식임
각 서비스를 따로 Coolify에 등록하면 그나마 잘 돌아감
결국 나도 Docker Compose 기반 단독 설정으로 돌아섰고, 오히려 훨씬 운용이 쉬웠음
Coolify 같은 시도 자체는 정말 필요하다고 생각하지만, 지금은 아직 본격 운영에 쓰기엔 부족한 수준이라고 생각함 -
Coolify나 유사 프로젝트가 DB 백업과 스트리밍 리플리케이션을 지원하지 않으면, 그냥 취미 영역에 머무를 것임
나는 Docker Compose랑 bash 스크립트로 2개 VM을 운용하면서 S3에 시간당 백업, wal streaming, PG와 Redis 스트리밍 리플리케이션 등만 세팅하는 것만으로도 실제 운영 최소 요건이 충족된다고 생각함 -
사용하는 용도에 따라 다르겠지만, 나는 Coolify와 CapRover 둘 다 써봤음
결국 CapRover를 선택했는데, Git Hook으로 커밋 때마다 자동 빌드되어 노드JS 앱을 더 빠르게 띄울 수 있었기 때문임
둘 다 이 기능을 지원하지만, CapRover가 마찰이 덜함
Coolify 쪽이 기능은 더 많음 -
Coolify는 Traefik과 Docker 위에서 동작하고 실상은 UI를 얹은 것임
백업 관련 필수 기능이 많이 빠져 있고(restic 같은 걸로 해결 가능), UX도 그냥 쓸 만한 수준임 -
Coolify는 여전히 설치 시 root 권한이 필요함
root 권한 없이 설치하는 브랜치를 개발 중이라고 들었음
ssh로 서버 접속해서 Coolify 설치하고 그다음 root 로그인은 꺼도 될 거임
서버를 날리고 처음부터 다시 셋업할 각오가 있다면 그렇게 가능함
나도 최근에 Coolify 배포를 완전 처음부터 시도했는데 ssh 키에서 자꾸 오류가 났음
다른 서버에서 여러 프로젝트를 잘 배포하고 있지만 “docker compose 파일만 주면 된다”는 접근은 실제로 한 번도 잘 동작한 적이 없음
-
-
나는 최근 FreeBSD 서버를 Hetzner로 옮겼는데, 아주 쉬웠음
유일한 변수는 결제 사이클이 완전히 끝나기 전에는 메일서버용 포트가 차단된다는 점이었음
이 정책은 이해하지만, 시작할 때는 명확히 안내되지 않아서 당황했음-
혹시 신용카드가 만료되면 Hetzner는 네트워크 자체를 바로 끊어버리니 참고해야 함
사전 경고도 없었고 실제 고객이나 스태프한테 연락와서야 알게 됨
나도 이런 일이 실제로 있었음 -
Hetzner 팀에 트래픽 종류를 설명하고 문의하면 포트를 미리 열어주기도 함
나는 마이그레이션할 프로젝트를 증명 자료로 보여줬더니 바로 오픈해줬음
-
-
Coolify 같은 툴(Dokploy 등)도 괜찮아 보이지만, 서버 상태가 코드에 남지 않는 게 항상 아쉬움
그래서 NixOS나 Ansible을 선호하지만 실제 프로덕션 구축에는 너무 많은 보일러플레이트와 커스텀이 필요함
혹시 쿠버네티스가 아니면서 좀 더 선언적이고, 프로덕션 서버를 쉽게 관리해주는 인프라 코드 프레임워크를 아는 사람 있는지 궁금함- 나는 Coolify로 이걸 해보려고 시도한 적이 있음
Coolify 설정 백업할 게 거의 없고, 애플리케이션 설정들은 /data/coolify에 다 들어감
볼륨 전체는 kopia로 백업함
이건 예쁘게 만든 게 아니라 약간 꼼수긴 하지만, 재해복구에는 쓸만한 방법임
- 나는 Coolify로 이걸 해보려고 시도한 적이 있음
-
좋은 가이드임
하지만 특히 Hetzner를 쓸 때 방화벽 설정에는 동의할 수 없음
간단한 설정만 필요하다면 Hetzner 제공 방화벽만으로 충분하고, "아웃소싱" 효과도 큼
좀 더 커스텀하게 쓰고 싶으면 API로도 설정할 수 있음
https://docs.hetzner.cloud/reference/cloud#firewalls
혹시 Hetzner 방화벽에 치명적인 단점이 있는지 궁금함- 가이드에서는 Hetzner를 다른 클라우드 대신 고른 이유가, 벤더 락인 없이 구성을 어디로든 옮기기 쉽기 때문이라고 밝힘
-
"SSH를 내 IP에만 허용하라(선택이지만 권장)"라는 조언에는 위험하다고 생각함
IP가 바뀌면 완전히 접근이 막혀버릴 수 있음-
Hetzner 대시보드로 리셋할 수도 있지만, 계속 바뀌는 집 IP에 묶는 것보다 Tailscale 같은 걸 쓰거나
고정된 외부 VPN IP를 두는 게 더 나음 -
SSH는 키 인증을 쓰는 것만으로도 거의 대부분의 보안 문제를 방지할 수 있음
추가로 로그 노이즈 줄이는 계층을 얹는 것도 좋고, SSH 외에 외부에 노출할 필요 없는 서비스가 있다면
VPN 등으로 막아두는 게 좋다고 봄
사실 서버에서 SSH보다 더 취약한 서비스가 대부분임 -
확실히 위험하긴 함
집에서 동적 IP 쓰는 사람이 많음
SSH 키 설정하고 root 로그인만 막아두면 충분히 안전하다고 생각함
-
-
프로덕션 앱 셋업 부분은 Docker로 대체하는 게 좋다고 생각함
요즘은 Docker가 훨씬 반복 가능하고 구성도 쉬움- 그렇다면 그 방법에 대한 상세 워크스루가 어디 있는지 궁금함