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.iso1.3 부팅 USB 생성
| OS | 도구 | 비고 |
|---|---|---|
| Windows | Rufus | DD 모드 선택 |
| Windows | Etcher | 자동 감지 |
| Linux | dd | dd bs=1M conv=fdatasync if=proxmox-ve_*.iso of=/dev/sdX |
| macOS | dd | dd 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 | 스냅샷, 압축, 중복제거, 자가복구, RAID | RAM 많이 사용 (최소 8GB) | RAM 충분, 데이터 무결성 중요, 홈랩 |
| XFS + LVM | 대용량 파일 성능 좋음 | ext4 대비 장점 적음 | 대용량 파일 위주 워크로드 |
| Btrfs | CoW, 스냅샷 | ⚠️ 실험적 (기술 프리뷰) | 비추천 (프로덕션 미검증) |
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 레벨 | 최소 디스크 | 장애 허용 | 가용 용량 | 추천 |
|---|---|---|---|---|
| Single | 1 | 0 | 100% | 테스트만 |
| Mirror | 2 | 1 | 50% | 홈랩 |
| RAIDZ-1 | 3 | 1 | (N-1)/N | 소규모 |
| RAIDZ-2 | 4 | 2 | (N-2)/N | 프로덕션 권장 |
| RAIDZ-3 | 5 | 3 | (N-3)/N | 대규모 |
💡 설치 후 파일시스템 변경은 재설치가 필요함. 처음에 신중하게 선택할 것. 디스크가 1개면 ext4+LVM이 무난, 2개 이상이면 ZFS Mirror 추천.
2.3 네트워크 설정
설치 중 입력하는 네트워크 설정:
| 항목 | 설명 | 예시 |
|---|---|---|
| Management Interface | 관리용 NIC | eno1 / enp0s3 |
| Hostname (FQDN) | 정규화된 호스트명 | pve1.lab.local |
| IP Address | 고정 IP (DHCP 비추천) | 192.168.1.100/24 |
| Gateway | 기본 게이트웨이 | 192.168.1.1 |
| DNS Server | DNS 서버 | 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 접속.
| 항목 | 값 |
|---|---|
| URL | https://192.168.1.100:8006 |
| Username | root |
| Password | 설치 시 설정한 비밀번호 |
| Realm | Linux 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 tracking4. 보안 강화
4.1 SSH 보안
Proxmox는 설치 직후 root SSH 접속이 허용된 상태.
일반 사용자 생성 + sudo 설정:
adduser pvadmin
usermod -aG sudo pvadmin
apt install sudo -ySSH 설정 강화:
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 sshdSSH 키 인증 설정:
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
EOFProxmox에서 사용하는 포트:
| 포트 | 프로토콜 | 용도 | 필수 |
|---|---|---|---|
| 22 | TCP | SSH | ✅ |
| 8006 | TCP | 웹 UI (HTTPS) | ✅ |
| 3128 | TCP | SPICE Proxy | VNC/SPICE 사용 시 |
| 5900-5999 | TCP | VNC Console | VM 콘솔 |
| 5405-5412 | UDP | Corosync | ✅ 클러스터 |
| 60000-60050 | TCP | Live Migration | 마이그레이션 시 |
| 6789 | TCP | Ceph Monitor | Ceph 사용 시 |
| 6800-7300 | TCP | Ceph OSD | Ceph 사용 시 |
| 111 | TCP/UDP | NFS (rpcbind) | NFS 사용 시 |
| 2049 | TCP/UDP | NFS | NFS 사용 시 |
4.3 웹 UI 인증 강화
2FA(Two-Factor Authentication) 활성화:
웹 UI에서: Datacenter → Permissions → Two Factor
| 방식 | 설명 | 추천 |
|---|---|---|
| TOTP | Google 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 | 전체 권한 | 인프라 관리자 |
| PVEVMAdmin | VM 생성/관리 | VM 운영자 |
| PVEVMUser | VM 사용 (콘솔 접속) | 일반 사용자 |
| 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/vz | ISO, 템플릿, 백업, 스니펫 |
local-lvm | LVM-thin | LV data | VM 디스크, 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.iso6. 설치 후 체크리스트
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
| 순서 | 항목 | 우선순위 | 명령어/위치 |
|---|---|---|---|
| 1 | Enterprise 리포지토리 비활성화 | ✅ 필수 | sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list |
| 2 | No-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 |
| 7 | SSH 보안 강화 | ⚠️ 권장 | /etc/ssh/sshd_config.d/hardening.conf |
| 8 | 방화벽 활성화 | ⚠️ 권장 | 웹 UI → Datacenter → Firewall |
| 9 | 2FA 활성화 | ⚠️ 권장 | 웹 UI → Permissions → Two Factor |
| 10 | 이메일 알림 | ⚠️ 권장 | postfix + SMTP relay |
| 11 | ISO 업로드 | 💡 선택 | /var/lib/vz/template/iso/ |
| 12 | SMART 모니터링 | 💡 선택 | 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 updateQ: 웹 UI에 접속할 수 없다
systemctl status pveproxy
systemctl restart pveproxy
ss -tlnp | grep 8006Q: 부팅 후 네트워크가 안 된다
cat /etc/network/interfaces
ip link show
brctl show
ifreload -aQ: 시간이 맞지 않는다
chronyc tracking
chronyc makestep
chronyc sources -v정리
Proxmox VE 설치는 10분이면 끝나지만, 설치 직후 설정이 실제 운영 품질을 결정함.
핵심은 3가지:
- 리포지토리 전환 — 없으면 업데이트 자체가 안 됨
- 보안 강화 — SSH, 방화벽, 2FA는 기본
- 모니터링 — 시간 동기화, 디스크 상태, 이메일 알림
다음 글
→ #3 Network Configuration — Linux Bridge, VLAN, Bonding, SDN 구성
🔗 관련 문서
- Proxmox VE Overview — 아키텍처, 비교
- Proxmox VE Series Index — 시리즈 목차
- Linux Fundamentals — Linux 기초