Proxmox VE Installation & Initial Setup

설치부터 운영 준비까지 — “설치하고 뭐부터 하지?”에 대한 체크리스트


📌 이 글의 목적

Proxmox VE를 설치하고 실제 운영에 들어가기 전에 반드시 해야 할 초기 설정을 정리함. 설치 자체는 10분이면 끝나지만, 설치 직후의 설정을 빠뜨리면 나중에 되돌리기 어렵거나 운영 중 문제가 됨.

이 글에서 다루는 것

flowchart LR
    subgraph Phase1["설치"]
        A1["ISO 준비"]
        A2["설치 진행"]
        A3["첫 로그인"]
    end
    
    subgraph Phase2["필수 설정"]
        B1["리포지토리 전환"]
        B2["구독 팝업 제거"]
        B3["시스템 업데이트"]
        B4["시간 동기화"]
    end
    
    subgraph Phase3["보안 강화"]
        C1["SSH 보안"]
        C2["방화벽"]
        C3["인증 설정"]
        C4["2FA"]
    end
    
    subgraph Phase4["운영 준비"]
        D1["스토리지 확인"]
        D2["네트워크 확인"]
        D3["백업 설정"]
        D4["모니터링"]
    end
    
    Phase1 --> Phase2 --> Phase3 --> Phase4

1. 설치 전 준비

1.1 하드웨어 확인

설치 전에 반드시 확인할 항목:

항목확인 방법필수 여부
CPU 가상화 (VT-x/AMD-V)BIOS에서 확인/활성화✅ 필수
IOMMU (VT-d/AMD-Vi)BIOS에서 확인/활성화PCI Passthrough 시 필수
64-bit CPU✅ 필수
RAM 최소 2GB✅ (ZFS 시 8GB+)
부팅 디스크 32GB+
네트워크유선 연결 권장

BIOS 설정 체크리스트:

# Intel 시스템
Intel Virtualization Technology (VT-x) → Enabled
Intel VT-d → Enabled (PCI Passthrough용)
Hyper-Threading → Enabled (권장)

# AMD 시스템  
SVM Mode → Enabled
IOMMU → Enabled (PCI Passthrough용)

# 공통
Boot Mode → UEFI 권장 (Legacy도 지원)
Secure Boot → Disabled (Proxmox는 미지원)

⚠️ Secure Boot: Proxmox VE는 현재 Secure Boot를 지원하지 않음. BIOS에서 반드시 비활성화.

1.2 ISO 다운로드

Proxmox VE 공식 다운로드에서 최신 ISO를 다운로드함.

# 다운로드 (예시 — 최신 버전 확인 후 URL 수정)
wget https://enterprise.proxmox.com/iso/proxmox-ve_8.3-1.iso
 
# SHA256 검증
wget https://enterprise.proxmox.com/iso/SHA256SUMS
sha256sum -c SHA256SUMS 2>/dev/null | grep proxmox-ve_8.3-1.iso

1.3 부팅 USB 생성

OS도구비고
WindowsRufusDD 모드 선택
WindowsEtcher자동 감지
Linuxdddd bs=1M conv=fdatasync if=proxmox-ve_*.iso of=/dev/sdX
macOSdddd if=proxmox-ve_*.iso of=/dev/rdiskN bs=1m

⚠️ Rufus 사용 시 “DD Image” 모드를 선택해야 함. ISO 모드로 굽으면 부팅 실패할 수 있음.


2. 설치 과정

2.1 설치 흐름

flowchart TD
    Boot["USB 부팅"] --> EULA["EULA 동의"]
    EULA --> Disk["디스크 선택"]
    Disk --> DiskOpt{"디스크 옵션"}
    DiskOpt -->|"기본"| ExtLVM["ext4 + LVM"]
    DiskOpt -->|"ZFS"| ZFS["ZFS (RAID)"]
    DiskOpt -->|"Btrfs"| Btrfs["Btrfs (실험적)"]
    DiskOpt -->|"XFS"| XFS["XFS + LVM"]
    
    ExtLVM --> Country["국가/시간대/키보드"]
    ZFS --> Country
    Btrfs --> Country
    XFS --> Country
    
    Country --> Password["root 비밀번호 + 이메일"]
    Password --> Network["네트워크 설정"]
    Network --> Summary["설정 요약 확인"]
    Summary --> Install["설치 진행"]
    Install --> Reboot["재부팅"]
    Reboot --> WebUI["웹 UI 접속<br/>https://IP:8006"]

2.2 디스크 옵션 선택

설치 시 가장 중요한 결정: 파일시스템 선택.

파일시스템장점단점추천 상황
ext4 + LVM안정적, 검증됨, 리소스 적음스냅샷 기능 제한기본 설치, 소규모, RAM 적을 때
ZFS스냅샷, 압축, 중복제거, 자가복구, RAIDRAM 많이 사용 (최소 8GB)RAM 충분, 데이터 무결성 중요, 홈랩
XFS + LVM대용량 파일 성능 좋음ext4 대비 장점 적음대용량 파일 위주 워크로드
BtrfsCoW, 스냅샷⚠️ 실험적 (기술 프리뷰)비추천 (프로덕션 미검증)

ZFS RAID 옵션:

flowchart LR
    subgraph Single["디스크 1개"]
        S1["ZFS Single<br/>RAID 없음"]
    end
    
    subgraph Mirror["디스크 2개"]
        M1["ZFS Mirror<br/>(RAID1 동등)<br/>용량: 50%"]
    end
    
    subgraph RAIDZ["디스크 3개+"]
        R1["RAIDZ-1<br/>(RAID5 동등)<br/>1개 장애 허용"]
        R2["RAIDZ-2<br/>(RAID6 동등)<br/>2개 장애 허용"]
        R3["RAIDZ-3<br/>3개 장애 허용"]
    end
    
    Single --- Mirror --- RAIDZ
ZFS 레벨최소 디스크장애 허용가용 용량추천
Single10100%테스트만
Mirror2150%홈랩
RAIDZ-131(N-1)/N소규모
RAIDZ-242(N-2)/N프로덕션 권장
RAIDZ-353(N-3)/N대규모

💡 설치 후 파일시스템 변경은 재설치가 필요함. 처음에 신중하게 선택할 것. 디스크가 1개면 ext4+LVM이 무난, 2개 이상이면 ZFS Mirror 추천.

2.3 네트워크 설정

설치 중 입력하는 네트워크 설정:

항목설명예시
Management Interface관리용 NICeno1 / enp0s3
Hostname (FQDN)정규화된 호스트명pve1.lab.local
IP Address고정 IP (DHCP 비추천)192.168.1.100/24
Gateway기본 게이트웨이192.168.1.1
DNS ServerDNS 서버192.168.1.1 또는 8.8.8.8

⚠️ 호스트명은 설치 후 변경이 까다로움. 클러스터 구성 시 호스트명이 고정되므로, 처음부터 체계적인 이름을 정할 것.

⚠️ 반드시 고정 IP를 사용함. DHCP로 설치하면 IP가 변경될 때 웹 UI 접속, 클러스터 통신, VM 네트워크 모두 깨짐.

2.4 설치 완료

설치 후 재부팅하면 콘솔에 접속 정보가 표시됨:

Welcome to the Proxmox Virtual Environment. Please use your web browser to
configure this server - connect to:

  https://192.168.1.100:8006/

3. 첫 로그인 & 필수 설정

3.1 웹 UI 접속

브라우저에서 https://<IP>:8006 접속.

항목
URLhttps://192.168.1.100:8006
Usernameroot
Password설치 시 설정한 비밀번호
RealmLinux PAM standard authentication
Language한국어 선택 가능 (영어 권장)

자체 서명 인증서를 사용하므로 브라우저에서 보안 경고가 뜸. 이는 정상이며, “고급” → “계속 진행”으로 접속 가능. 이후 Let’s Encrypt 인증서를 설정할 수 있음.

3.2 리포지토리 전환 (구독 없는 경우)

설치 직후 기본 리포지토리는 Enterprise(유료 구독 필요) 로 설정되어 있음. 구독이 없으면 apt update 시 401 에러가 발생함.

Enterprise 리포지토리 비활성화 + No-Subscription 활성화:

# 1. Enterprise 리포지토리 비활성화
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
 
# 2. Ceph Enterprise 리포지토리도 비활성화 (있는 경우)
if [ -f /etc/apt/sources.list.d/ceph.list ]; then
    sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/ceph.list
fi
 
# 3. No-Subscription 리포지토리 추가
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
 
# 4. 패키지 목록 업데이트
apt update

리포지토리 구조:

flowchart TB
    subgraph Repos["리포지토리"]
        Enterprise["Enterprise<br/>(유료 구독 필요)<br/>안정, 검증됨"]
        NoSub["No-Subscription<br/>(무료)<br/>충분히 안정"]
        Test["Test<br/>(무료)<br/>최신, 불안정 가능"]
    end
    
    subgraph Usage["용도"]
        Prod["프로덕션"]
        HomeLab["홈랩 / 개발"]
        Dev["테스트 전용"]
    end
    
    Enterprise --> Prod
    NoSub --> HomeLab
    Test --> Dev
    
    style Enterprise fill:#d4edda,stroke:#28a745
    style NoSub fill:#fff3cd,stroke:#ffc107
    style Test fill:#f8d7da,stroke:#dc3545

💡 No-Subscription 리포지토리는 Proxmox가 공식으로 제공하는 리포지토리이므로 품질은 충분함. 많은 프로덕션 환경에서도 사용 중.

3.3 구독 알림 팝업 제거

구독이 없으면 웹 UI 로그인 시마다 “유효한 구독이 없습니다” 팝업이 뜸.

# PVE 8.x 기준
sed -Ei.bak "s/res === null \|\| res === undefined \|\| \!res \|\| res\.data\.status\.toLowerCase\(\) !== 'active'/false/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
 
systemctl restart pveproxy.service

⚠️ 비공식 방법이며, proxmox-widget-toolkit 패키지 업데이트 시 원복됨. 업데이트 후 재적용 필요.

3.4 시스템 업데이트

apt update && apt full-upgrade -y
 
# 커널 업데이트가 있었을 경우 재부팅
reboot

apt upgrade 대신 apt full-upgrade를 사용함. Proxmox 패키지는 의존성이 변경되는 경우가 있어 full-upgrade가 더 안전함.

3.5 시간 동기화 (NTP)

가상화 환경에서 시간 동기화는 필수. VM의 시간이 호스트와 어긋나면 인증, 로그, 클러스터 동기화에 문제가 생김.

# Proxmox는 chrony가 기본 설치되어 있음
chronyc tracking
chronyc sources
 
# 한국 NTP 서버로 변경 (선택)
cat > /etc/chrony/chrony.conf << 'EOF'
server time.google.com iburst
server time.cloudflare.com iburst
server ntp.postech.ac.kr iburst
 
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync
EOF
 
systemctl restart chrony
chronyc tracking

4. 보안 강화

4.1 SSH 보안

Proxmox는 설치 직후 root SSH 접속이 허용된 상태.

일반 사용자 생성 + sudo 설정:

adduser pvadmin
usermod -aG sudo pvadmin
apt install sudo -y

SSH 설정 강화:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
 
cat > /etc/ssh/sshd_config.d/hardening.conf << 'EOF'
PermitRootLogin prohibit-password
PermitEmptyPasswords no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
Protocol 2
EOF
 
sshd -t
systemctl restart sshd

SSH 키 인증 설정:

ssh-keygen -t ed25519 -C "pvadmin@proxmox"
ssh-copy-id pvadmin@192.168.1.100

⚠️ 순서 중요: 1) 일반 사용자 생성 → 2) SSH 키 복사 → 3) 키 인증 확인 → 4) root 직접 로그인 차단. 순서를 틀리면 서버에 접속할 수 없게 됨.

4.2 Proxmox 방화벽

Proxmox는 자체 방화벽 관리 기능이 내장되어 있음.

웹 UI: Datacenter → Firewall → Options → Firewall: Yes (활성화)

cat > /etc/pve/firewall/cluster.fw << 'EOF'
[OPTIONS]
enable: 1
policy_in: DROP
policy_out: ACCEPT
 
[RULES]
IN ACCEPT -p tcp -dport 22 -log nolog
IN ACCEPT -p tcp -dport 8006 -log nolog
IN ACCEPT -p tcp -dport 3128 -log nolog
IN ACCEPT -p tcp -dport 5900:5999 -log nolog
IN ACCEPT -p udp -dport 5405:5412 -log nolog
IN ACCEPT -p icmp -log nolog
EOF

Proxmox에서 사용하는 포트:

포트프로토콜용도필수
22TCPSSH
8006TCP웹 UI (HTTPS)
3128TCPSPICE ProxyVNC/SPICE 사용 시
5900-5999TCPVNC ConsoleVM 콘솔
5405-5412UDPCorosync✅ 클러스터
60000-60050TCPLive Migration마이그레이션 시
6789TCPCeph MonitorCeph 사용 시
6800-7300TCPCeph OSDCeph 사용 시
111TCP/UDPNFS (rpcbind)NFS 사용 시
2049TCP/UDPNFSNFS 사용 시

4.3 웹 UI 인증 강화

2FA(Two-Factor Authentication) 활성화:

웹 UI에서: Datacenter → Permissions → Two Factor

방식설명추천
TOTPGoogle Authenticator 등 앱 기반
U2F / WebAuthn하드웨어 키 (YubiKey 등)
Recovery Keys복구용 일회성 키백업용

💡 2FA 설정 전에 Recovery Keys를 먼저 생성하고 안전한 곳에 보관할 것. 2FA 장치를 분실하면 접속 불가.

4.4 관리 사용자 분리

root로 직접 로그인하는 것보다 관리 전용 사용자를 만드는 것이 좋음.

pveum user add admin@pve --password <password> --comment "Proxmox Admin"
pveum acl modify / --users admin@pve --roles Administrator

역할 기반 접근 제어(RBAC):

역할권한용도
Administrator전체 권한인프라 관리자
PVEVMAdminVM 생성/관리VM 운영자
PVEVMUserVM 사용 (콘솔 접속)일반 사용자
PVEDatastoreAdmin스토리지 관리스토리지 관리자
PVEAuditor읽기 전용감사/모니터링

5. 스토리지 초기 설정

5.1 기본 스토리지 구조 확인

pvesm status
# Name             Type     Status    Total      Used      Available  %
# local            dir      active    96636      5765      85915      5.97%
# local-lvm        lvmthin  active    409600     0         409600     0.00%
스토리지타입경로용도
local디렉토리/var/lib/vzISO, 템플릿, 백업, 스니펫
local-lvmLVM-thinLV dataVM 디스크, CT 볼륨

5.2 ISO 업로드

VM 설치에 필요한 ISO를 미리 업로드함.

웹 UI: local (스토리지) → ISO Images → Upload

cd /var/lib/vz/template/iso/
 
# Ubuntu Server
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso
 
# Rocky Linux (RHEL 호환)
wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.5-x86_64-minimal.iso
 
# Windows용 VirtIO 드라이버 (Windows VM 필수)
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

6. 설치 후 체크리스트

flowchart TD
    subgraph Must["✅ 필수 (즉시)"]
        M1["리포지토리 전환"]
        M2["시스템 업데이트"]
        M3["시간 동기화 확인"]
        M4["고정 IP 확인"]
    end
    
    subgraph Should["⚠️ 권장 (1일 내)"]
        S1["SSH 보안 강화"]
        S2["관리 사용자 생성"]
        S3["방화벽 활성화"]
        S4["2FA 설정"]
        S5["이메일 알림"]
    end
    
    subgraph Nice["💡 선택 (운영 전)"]
        N1["SMART 모니터링"]
        N2["로그 로테이션"]
        N3["추가 스토리지 설정"]
        N4["VLAN/Bonding 설정"]
    end
    
    Must --> Should --> Nice
순서항목우선순위명령어/위치
1Enterprise 리포지토리 비활성화✅ 필수sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
2No-Subscription 리포지토리 추가✅ 필수/etc/apt/sources.list.d/pve-no-subscription.list
3시스템 업데이트✅ 필수apt update && apt full-upgrade -y
4시간 동기화 확인✅ 필수chronyc tracking
5구독 팝업 제거⚠️ 권장proxmoxlib.js 수정
6관리 사용자 생성⚠️ 권장adduser, pveum
7SSH 보안 강화⚠️ 권장/etc/ssh/sshd_config.d/hardening.conf
8방화벽 활성화⚠️ 권장웹 UI → Datacenter → Firewall
92FA 활성화⚠️ 권장웹 UI → Permissions → Two Factor
10이메일 알림⚠️ 권장postfix + SMTP relay
11ISO 업로드💡 선택/var/lib/vz/template/iso/
12SMART 모니터링💡 선택smartctl -a /dev/sda
13로그 로테이션💡 선택/etc/systemd/journald.conf.d/

7. 트러블슈팅

Q: apt update 시 401 Unauthorized

sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
apt update

Q: 웹 UI에 접속할 수 없다

systemctl status pveproxy
systemctl restart pveproxy
ss -tlnp | grep 8006

Q: 부팅 후 네트워크가 안 된다

cat /etc/network/interfaces
ip link show
brctl show
ifreload -a

Q: 시간이 맞지 않는다

chronyc tracking
chronyc makestep
chronyc sources -v

정리

Proxmox VE 설치는 10분이면 끝나지만, 설치 직후 설정이 실제 운영 품질을 결정함.

핵심은 3가지:

  1. 리포지토리 전환 — 없으면 업데이트 자체가 안 됨
  2. 보안 강화 — SSH, 방화벽, 2FA는 기본
  3. 모니터링 — 시간 동기화, 디스크 상태, 이메일 알림

다음 글

#3 Network Configuration — Linux Bridge, VLAN, Bonding, SDN 구성


🔗 관련 문서


📝 참고 자료