
1. 클라우드 업체 선택 안내
1.1 시장에는 다양한 선택지가 존재함
대표적인 선택지는 다음과 같다.
- Amazon Web Services
- Google Cloud Platform
- Microsoft Azure
- DigitalOcean
- Vultr
- Akamai Linode
- OVHcloud
- Hetzner
1.2 본 가이드에서 Hetzner를 사용하는 이유(가성비 관점)
- Dedicated Resources(전용 리소스) 플랜 제공: 지속적 고부하/상시 운영에 적합한 플랜군을 별도로 제공한다.
- CCX13(예시 스펙): 2 vCPU / 8GB RAM / 80GB NVMe SSD / 20TB 트래픽 등 “소형 상시 서버”로 자주 쓰이는 구성이 명시되어 있다.
- 본 문서는 위와 같은 이유로 Hetzner 기준 화면/용어(프로젝트, SSH 키, Volume 등)로 설명한다. 독자는 편의상 동일 선택을 권장한다.
2. 사전 준비물
- Windows PC(원격 접속 및 키 생성용)
- PuTTY 및 PuTTY Key Generator(PuTTYgen) 설치
- Hetzner 계정(결제 수단 등록 포함)
참고: macOS/Linux 사용자는 PuTTY 없이 기본
ssh user@ip방식으로 접속할 수 있으나, 본 가이드는 Windows + PuTTY 기준으로 설명한다.
2.1 Hetzner 가입 및 계정 보안(OTP) 설정 절차(필수 선행)
2.1.1 Hetzner 계정 생성(가입)
- 웹 브라우저에서 Hetzner Console에 접속한다.
- 회원가입(Sign up / Register) 메뉴에서 이메일, 비밀번호, 기본 정보를 입력한다.
- 가입 완료 후, 이메일 인증(Verify)이 요구되는 경우 안내 메일을 확인하여 인증을 완료한다.
- Console 로그인에 성공해야 한다.
2.1.2 결제수단 등록(서버 생성 전 필수)
- Hetzner Console에서 Billing/Payment(결제) 관련 메뉴로 이동한다.
- 카드 등 결제수단을 등록한다.
- 결제수단 등록이 완료되어야 서버(Server) 및 볼륨(Volume) 생성이 원활하다.
2.1.3 OTP(2단계 인증, 2FA) 활성화(강력 권장)
- 스마트폰에 OTP 앱(예: Google Authenticator, Microsoft Authenticator 등)을 설치한다.
- Hetzner Console의 계정 설정(Account) 또는 Security 영역에서 2FA/OTP 설정 메뉴로 이동한다.
- QR 코드를 OTP 앱으로 스캔한다.
- OTP 앱에 표시되는 6자리 코드를 Console에 입력하여 등록을 완료한다.
- 복구 코드(Recovery codes)가 제공되는 경우, 반드시 별도로 안전하게 보관한다.
- 권장 보관: 오프라인 출력 보관 또는 암호화된 비밀번호 관리자
주의: 복구 코드가 없으면 OTP 기기 분실/초기화 시 계정 접근이 어려워질 수 있다.
3. PuTTYgen으로 SSH 키 페어 생성
3.1 목적
비밀번호 로그인 대신 SSH 키 로그인을 사용하면 보안과 운영 편의성이 크게 개선된다. Hetzner는 서버 생성 시 SSH Public Key를 등록하여 초기 접속을 키 기반으로 구성할 수 있다.
3.2 생성 절차(Windows)
- PuTTYgen 실행
- Key type 선택(권장 예시)
- 일반적으로 RSA 2048 이상 또는 Ed25519를 사용한다(환경/정책에 따라 선택).
- Generate 클릭
- 마우스를 움직여 난수 생성 진행(푸티젠 안내에 따름)
- (권장) Key passphrase 설정
- 개인키 파일 유출 시 피해를 줄이기 위한 비밀번호이다.
- Save private key
- 파일 확장자는 보통
.ppk로 저장한다.
- 파일 확장자는 보통
- 상단/텍스트 영역의 Public key(공개키)를 복사한다
- “ssh-…”로 시작하는 한 줄 형태가 일반적이다.
3.3 저장 권장 정책
- 개인키(.ppk)는 PC 내 암호화 디렉터리/비밀번호 관리자/암호화 드라이브 등에 저장한다.
- 공개키는 외부로 노출되어도 무방하나, 개인키는 절대 공유하지 않는다.
4. Hetzner 콘솔에서 SSH Key 등록
4.1 목적
서버 생성 시 “SSH 키를 붙여서” 생성하면, 초기 접속부터 키 기반 로그인으로 운영할 수 있다.
4.2 등록 절차(콘솔)
- Hetzner Console 로그인
- Project 생성(또는 기존 Project 선택)
- 좌측 메뉴에서 Security(또는 SSH Keys 영역) 진입
- Add SSH Key 클릭
- 이름(Name) 지정(예:
ain-laptop-2026) - PuTTYgen에서 복사한 Public Key 붙여넣기
- 저장(Save)
5. 서버(인스턴스) 생성: 모델 선택 및 OS 선택
5.1 서버 생성 화면 진입
- Project 내부에서 Servers → Create Server로 이동
5.2 위치(Location) 선택
- 사용자 지리적 위치/지연시간/규정 준수 등을 고려하여 Region을 선택한다.
5.3 OS(Image) 선택
- 본 가이드는 Ubuntu 22.04 LTS를 기준으로 한다.
5.4 서버 타입(Type) 및 모델(Plan) 선택
- 상시 운영(노드 운영 등)의 예시로 Dedicated Resources 계열을 사용할 수 있다.
- 예시 모델: CCX13
- 2 vCPU / 8GB RAM / 80GB NVMe SSD / 20TB 트래픽 등의 구성이 안내된다.
주의: 모델명/가격/세부 옵션은 시점에 따라 변경될 수 있으므로, 최종 선택은 콘솔에 표시되는 최신 값을 기준으로 한다.
5.5 SSH Key 선택(중요)
- “SSH Keys” 항목에서 4장에서 등록한 SSH Key를 체크한 뒤 생성한다.
5.6 네트워크/방화벽(옵션)
- 초기에는 SSH(22) 접근이 가능해야 한다.
- 클라우드 방화벽 기능을 사용한다면 SSH(22)를 허용한다.
- (노드 운영 단계에서) 필요 포트는 추후 별도 가이드에서 추가한다.
5.7 서버 생성 완료 후 확보해야 할 정보
- Public IPv4 주소
- 초기 접속 계정 정보(초기 root 또는 생성 사용자)
- 서버명(식별용)
6. 추가 SSD(Volume) 생성 및 연결(250GB 예시)
루트 디스크(예: 80GB)는 OS/패키지/로그 용도로 사용하고, 노드 데이터는 추가 Volume에 저장하는 구성이 일반적으로 안전하다.
6.1 Volume 생성
- 좌측 메뉴 Volumes 이동
- Create Volume 선택
- 크기(Size) 선택: 예) 250GB
- Mount 옵션 선택
- Automatic: Hetzner가 자동으로 포맷/마운트까지 수행
- Manual: 사용자가 직접 포맷/마운트 수행(본 가이드는 이해를 위해 Manual 절차도 함께 제공)
6.2 Volume을 서버에 Attach
- Volume 생성 후 해당 Volume을 서버에 Attach(연결)한다.
7. PuTTY로 서버 접속(키 기반)
7.1 PuTTY 세션 생성
- PuTTY 실행
- Host Name: 서버 Public IPv4 입력
- Port: 22 / SSH 선택
- (권장) Connection → Data → Auto-login username에
root또는 사용할 유저명 입력 - (중요) Connection → SSH → Auth에서 개인키(.ppk) 선택
- Open 클릭하여 접속
7.2 최초 접속 확인 명령
whoami
uname -a
8. 서버 초기 세팅(필수 보안/기초 설정)
8.1 패키지 업데이트 및 기본 도구 설치
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl wget ca-certificates ufw fail2ban htop nano
8.2 일반 사용자 생성 및 sudo 권한 부여(권장)
sudo adduser ain
sudo usermod -aG sudo ain
이후에는 ain으로 접속하여 운영하는 것이 원칙이다.
8.3 UFW 방화벽 최소 설정(SSH만 우선 허용)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
9. (중요) 추가 Volume을 리눅스에 마운트하는 방법
Automatic을 선택했더라도 확인은 필요하며, Manual을 선택했다면 아래 절차를 수행한다.
9.1 디스크 확인
lsblk -f
sudo blkid
추가 디스크가 보통 /dev/sdb 등으로 표시된다.
9.2 파일시스템 포맷(Manual일 때만)
경고: 포맷은 디스크 데이터를 삭제한다. 새 볼륨일 때만 수행한다.
sudo mkfs.ext4 -F /dev/sdb
9.3 마운트 포인트 생성 및 마운트
sudo mkdir -p /data
sudo mount /dev/sdb /data
df -h | grep /data
9.4 재부팅 후에도 유지되도록 /etc/fstab 등록(UUID 방식)
sudo blkid
/dev/sdb의 UUID를 확인한 뒤:
sudo nano /etc/fstab
아래 한 줄을 추가한다(예시):
UUID=볼륨_UUID /data ext4 defaults,nofail,x-systemd.device-timeout=10 0 2
적용 확인:
sudo mount -a
df -h | grep /data
10. 구축 완료 체크리스트
- PuTTYgen으로 키 페어 생성 완료(.ppk 저장, 공개키 복사)
- Hetzner Console에 SSH Key 등록 완료
- Server 생성 완료(예: Dedicated Resources / CCX13, Ubuntu 22.04)
- PuTTY로 키 기반 SSH 접속 성공
- 업데이트/기본 패키지 설치 완료
- 일반 사용자 생성 및 UFW 기본 설정 완료
- 추가 Volume 250GB 생성/Attach 완료
- /data 마운트 및 fstab(UUID) 영구 마운트 등록 완료