목표
미니PC(FIREBAT F2)에 Proxmox VE를 설치해 물리 서버 한 대 위에서 여러 VM을 운영할 수 있는 기반을 만든다. 모니터 없이 웹 UI로 관리하고, Tailscale로 집 밖에서도 접속할 수 있게 구성한 뒤 첫 Ubuntu Server VM을 만든다. 1번 프로젝트에서 AWS가 대신 해주던 가상화와 네트워크를 직접 운영해보는 것이 목적이다.
A. Proxmox 설치와 초기 설정
개요
- 장비: FIREBAT F2 (Intel i5-14450HX, RAM 16GB, NVMe 512GB), 유선 LAN
- OS: Proxmox VE 9.2 (Debian 13 trixie 기반)
- 기존 윈도우는 삭제하고 디스크 전체를 Proxmox에 할당
1. 설치 USB 준비
- Proxmox VE ISO를 받아 balenaEtcher로 USB에 구움
- ISO를 USB에 파일로 복사하는 것과 구우는 것은 다르다. 처음에 복사만 해서 부팅이 되지 않았음 (트러블슈팅 1)
2. BIOS 확인
- Advanced → CPU Configuration → Intel (VMX) Virtualization Technology: Enabled 확인
- CPU의 가상화 기능. 꺼져 있으면 Proxmox에서 VM이 뜨지 않는다
- Boot → Boot Option #1: USB (UEFI)
- Security → Secure Boot: Disabled
3. 설치
- Install Proxmox VE (Graphical) 선택
| 항목 | 값 |
|---|---|
| Filesystem | ext4 |
| Disk | /dev/nvme0n1 |
| Country / Timezone | South Korea / Asia/Seoul |
| Keymap | en-us |
| Hostname | pve.home.lan |
| IP | <내부 IP>/24 |
| Gateway | <내부 IP> |
- 설치 후 재부팅 시 USB 제거. 콘솔에 웹 UI 주소가 표시되면 성공
4. 웹 UI 접속
- 데스크톱 브라우저에서
https://<내부 IP>:8006접속 - 인증서 경고는 Proxmox가 직접 만든 자체 서명 인증서라서 뜨는 것. 집 안 네트워크라 그대로 진행
- root / Linux PAM으로 로그인
- No valid subscription 창은 유료 지원 안내일 뿐 기능 제한 없음
- 이후 모니터·키보드는 분리. 네트워크 설정이 꼬여 웹 접속이 안 될 때만 다시 연결
5. 저장소 설정과 업데이트
- pve → Updates → Repositories
- pve-enterprise, ceph enterprise 비활성화
- No-Subscription 저장소 추가
- Refresh 시 IPv6 연결 실패 → apt를 IPv4로 고정 (트러블슈팅 3)
- Upgrade 결과: Your System is up-to-date (받은 ISO가 최신이라 받을 것 없음)
B. Tailscale 원격 접속
필요한 이유
<내부 IP>는 집 안(사설망)에서만 통하는 주소라 밖에서는 접속할 수 없다- Tailscale은 내 기기끼리만 쓰는 전용 통로(VPN)를 만든다. 같은 계정으로 로그인한 기기끼리 어디서든 같은 네트워크에 있는 것처럼 연결된다
- 공유기 포트를 열 필요가 없어서 Proxmox 관리 화면이 인터넷에 노출되지 않는다
1. Proxmox 호스트에 설치
- pve → Shell
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
- 출력된 인증 링크를 브라우저에서 열고 구글 계정으로 로그인 →
Success. - 인증 대기 중 셀에서 Ctrl+C를 누르면 인증이 취소된다 (트러블슈팅 4)
tailscale ip -4
- Tailscale 주소(100.x.x.x) 확인. 밖에서는 이 주소로 접속
2. 맥북에 설치
- App Store에서 Tailscale 설치 → 같은 구글 계정으로 로그인
- 앱스토어용 애플 아이디와 Tailscale 로그인 계정은 별개
3. 접속 확인
- 맥북 브라우저에서
https://<Tailscale 주소>:8006→ Proxmox 로그인 화면 확인
C. Ubuntu Server VM 생성
1. ISO 업로드
- pve → local (pve) → ISO Images → Upload
- ubuntu-26.04.1-live-server-amd64.iso (2.73GiB)
- VM도 컴퓨터라 OS 설치 디스크가 필요하다. USB 대신 Proxmox 저장소에 ISO를 넣어두고 거기서 설치한다
2. VM 생성
| 항목 | 값 |
|---|---|
| VM ID / Name | 100 / portfolio |
| OS | Ubuntu Server 26.04.1 ISO |
| Qemu Agent | 체크 |
| Disk | 40GiB (local-lvm, SCSI) |
| CPU | 4 cores, Type host |
| Memory | 4096 MiB |
| Network | vmbr0, VirtIO |
- 미니PC RAM 16GB를 이후 만들 산학용 VM과 나눠 써야 해서 자원을 적당히만 배정. 필요하면 나중에 늘릴 수 있다
3. Ubuntu 설치
- Type of install: Ubuntu Server
- Network: DHCP로
<내부 IP>할당 - Server name: portfolio
- OpenSSH server 설치 체크. 이후 맥북 터미널에서 SSH로 접속하기 위함
4. 로그인 확인
- Proxmox → 100 (portfolio) → Console에서 로그인 성공
- Ubuntu 26.04.1 LTS, IPv4
<내부 IP>
5. 이후 처리 (2단계에서 완료)
- 맥북에서 SSH 접속: VM에 Tailscale 설치 후 접속 성공
- 업데이트 적용: 21개 → 0개
- 루트 파티션 확장: 18.5GB → 38GB (
lvextend) - 자세한 내용은 2. VM 원격 접속과 Docker 환경 구성 참고
트러블슈팅
1. USB로 부팅해도 윈도우로 넘어감
- 증상: BIOS에서 Boot Option #1이 USB인데도 윈도우 복구 화면이 뜨거나 윈도우로 부팅됨. Use a device로 USB를 골라도 동일
- 확인한 것
- BIOS Boot 탭에 USB(UEFI)는 정상 인식됨 → 부팅 순서 문제 아님
- Secure Boot 비활성화 후에도 동일
- USB를 데스크톱에 꼽아보니 기존 파일이 그대로 보임
- 원인: ISO를 USB에 파일로 복사만 하고 굽지 않음. USB 안에 파일 하나가 들어간 것일 뿐 부팅 가능한 디스크가 아니었음
- 해결: balenaEtcher로 ISO를 USB에 구움 → Proxmox 설치 화면 진입
- 재발 방지: 제대로 구운 USB는 윈도우에서 열리지 않고 포맷 요청이 뜨는 게 정상. 기존 파일이 보이면 굽기가 안 된 것
2. 설치 직후 apt-get update 실패
- 증상: Tasks에
Error: command 'apt-get update' failed - 원인: Proxmox 기본 저장소가 유료 구독자용 enterprise 저장소. 구독이 없어 거절됨
- 해결: Updates → Repositories에서 enterprise 2개 비활성화, No-Subscription 저장소 추가
3. No-Subscription 저장소 연결 실패 (IPv6)
- 증상
Err:5 http://download.proxmox.com/debian/pve trixie Release
Cannot initiate the connection to download.proxmox.com:80 (<퍼블릭 IP>). - connect (101: Network is unreachable)
- 확인한 것: Debian 저장소(deb.debian.org, security.debian.org)는 정상으로 받아짐. Proxmox 저장소만 IPv6 주소(2400:...)로 접속을 시도하다 실패
- 원인: 집 네트워크에 IPv6 경로가 없는데 apt가 IPv6로 접속을 시도함
- 해결: apt가 IPv4만 쓰도록 설정 파일 추가
echo 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/99force-ipv4
apt update
- 결과: 이후 Update package database OK
- 참고: Tasks 목록은 맨 위가 최신. 아래 빨간 줄은 수정 전 기록
4. Tailscale 인증 링크 404
- 증상:
tailscale up후 링크를 복사하려고 Ctrl+C를 누름 →context canceled. 그 링크로 접속하면 Error 404 (만료) - 원인: 터미널에서 Ctrl+C는 복사가 아니라 실행 중인 프로그램을 중단하는 신호. 인증 링크는 해당
tailscale up이 대기하는 동안만 유효함 - 해결:
tailscale up재실행 후 셀은 건드리지 않고 링크를 바로 인증 →Success.
1단계 용어
- Proxmox VE : 물리 서버 한 대 위에서 VM과 컨테이너를 만들고 관리하는 가상화 플랫폼. Debian 기반
- 하이퍼바이저 : 물리 컴퓨터의 자원(CPU, 메모리, 디스크)을 나눠 여러 VM에 나눠주는 소프트웨어. AWS에서 EC2를 띄울 때도 뒤에서 하이퍼바이저가 돌고 있다
- VM : 컴퓨터 안에 만든 가상 컴퓨터. 자기 OS를 통째로 가진다
- ISO : OS 설치 디스크를 파일 하나로 만든 것
- 굽기 (Flash) : ISO를 USB에 썬서 USB 자체를 부팅 가능한 설치 디스크로 만드는 것. 파일 복사와 다르다
- BIOS / UEFI : 컴퓨터를 켜면 OS보다 먼저 실행되는 설정 화면. 부팅 순서, 하드웨어 기능을 여기서 켜고 끈다
- VT-x (VMX) : Intel CPU의 가상화 지원 기능. 꺼져 있으면 VM이 뜨지 않는다
- Secure Boot : 인증된 부팅 프로그램만 실행하게 막는 BIOS 보안 기능
- 저장소 (Repository) : 패키지(프로그램)를 받아오는 서버. apt가 여기서 업데이트를 받는다
- apt : Debian/Ubuntu의 패키지 관리 도구. 설치·업데이트·삭제를 담당
- IPv4 / IPv6 : 인터넷 주소 체계. IPv4는 192.168.x.x 같은 형식, IPv6는 2400:... 같은 긴 형식
- 사설 IP : 집·회사 네트워크 안에서만 통하는 주소 (192.168.x.x 등). 밖에서는 접속할 수 없다
- DHCP : 공유기가 기기에 IP를 자동으로 나눠주는 방식
- 자체 서명 인증서 : 공인 기관이 아니라 서버가 스스로 만든 HTTPS 인증서. 암호화는 되지만 브라우저가 경고를 띄운다
- Tailscale : 내 기기끼리만 연결되는 VPN. 포트포워딩 없이 밖에서 집 서버에 접속할 수 있게 해준다
- vmbr0 : Proxmox의 가상 네트워크 브리지. VM을 집 공유기 네트워크에 연결해주는 가상 스위치
- VirtIO : VM용으로 만든 가상 장치 방식. 실제 하드웨어를 흉내 내는 것보다 빠르다
- SSH : 다른 컴퓨터의 터미널에 암호화된 통로로 접속하는 방식. OpenSSH는 그 서버 프로그램
배운 점
직접 작성A. Proxmox 설치와 초기 설정
- Proxmox VE : 가상컴퓨터 (VM)를 만들고 관리하는 데 특화된 OS
- Debian : 리눅스 종류 중 하나. Proxmox 는 Debian 위에 만들어짐
- ISO : 설치 CD를 파일 하나 만든 것
- balenaEtcher : ISO를 USB에 굽는 프로그램 —> Proxmox VE ISO를 이 프로그램에 넣어서 USB 자체를 설치 CD로 바꿈
- BIOS : 전원 누르자마자 OS보다 먼저 켜지는 프로그램
- Advanced에서 VMX (Virtualization Technology) 활성화 : CPU의 가상 컴퓨터 만들기 기능 활성
- proxmox는 이 cpu 기능을 빌려서 VM을 만듦. 꺼져있으면 빌리지를 못 함
- Boot 에서 Boot Option #1 을 USB를 1순위로 설정
- UEFI : BIOS의 정식 이름.
- Security에서 Secure Boot를 끔 : 인증받은 OS만 켜지게 막는 보안기능을 끔. 윈도우 기준이라 우선 설정 끄고 시작
- Advanced에서 VMX (Virtualization Technology) 활성화 : CPU의 가상 컴퓨터 만들기 기능 활성
- 설치
- Install Proxmox VE (Graphical) —> 마우스로 누르는 화면 방식
- Filesystem : ext4 → 디스크에 파일 정리하는 규칙. 리눅스는 ext4
- IP :
<내부 IP>/24 —> 집 안 컴퓨터 주소 - Gateway :
<공유기 IP>—> 공유기 주소 : 인터넷 나가는 문
- 설치 후 재부팅 시 USB 제거 : 제거 안 하면 설치화면 다시
- Install Proxmox VE (Graphical) —> 마우스로 누르는 화면 방식
- 웹 UI 접속
https://<내부 IP>:8006<내부 IP>: 미니피씨 주소- 8006 : 컴퓨터 포트 → proxmox 관리화면은 8006 사용. 웹사이트는 보통 80/443 사용
- root/LinuxPAM으로 로그인
- root : 리눅스 최고 관리자 계정
- LinuxPAM : 리눅스 기본 로그인 방식
- 저장소 설정 및 업데이트
-
Repositories : 저장소 (프로그램, 업데이트 파일 받아오는 창고 서버)
- 유료 회원으로 돼있는 설정들 변경
- enterprise , ceph (저장장치 여러 대를 묶는 기능) 끔
- no-Subscription : 킴
- 유료 회원으로 돼있는 설정들 변경
-
Refresh시 apt를 IPv6 연결 실패해서 IPv4 로 고정
- Refresh : 창고에게 업데이트 여부 확인
- apt : 창고에서 프로그램 받아오는 도구
echo 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/99force-ipv4 apt update- apt.conf.d/ : apt 설정 파일을 넣는 폴더
- Acquire::ForceIPv4 "true" : apt가 받아올 때 IPv4만 쓰게 함
- 파일 이름 앞 99 : 이 폴더는 파일을 이름순으로 읽어서, 99로 시작하면 마지막에 읽혀 다른 설정을 덮어씀
- apt update : 바뀜 설정으로 저장소 다시 확인
-
B. Tailscale 원격 접속
- 문제점 :
<내부 IP>는 집 안 (사설망)에만 통해서 밖에선 접속 불가- 사설망 : 집, 회사 안에서 쓰는 네트워크
- 사설 IP : 집 안에서만 통하는 주소
- Tailscale : 내 기기끼리만 쓰는 전용 통로 (VPN) 만들어 줌
- VPN : 인터넷 위에 나만의 통로를 깔기
- Tailscale : 그 VPN을 쉽게 만들어주는 서비스. 같은 계정끼리 묶어줌
- 주소 : Tailscale을 깔면 기기마다 100.x.x.x 주소가 더 생김
- 접속할 때 Tailscale 주소로 접속.
- 같은 네트워크 내에선 기존 사설 IP로 접속 가능
- 포트포워딩 : 밖에서 들어오는 원래 방법. (전 세계에 문을 여는 것) ↔ 메시 VPN : TailScale → 내 기기에게만 열림
- 설치
- pve shell 에서 명령어 입력
- curl -fsSL https://tailscale.com/install.sh | sh —> 인터넷에서 설치 스크립트 받아서 바로 실행
- curl : 인터넷에서 파일 받기
- fsSL : 에러나면 멈추고 조용히 주소 바뀌면 따라가는 옵션 묶음
- install.sh : 설치 스크립트
- |: 앞 결과를 뒤로 넘기기
- sh : 스크립트 실행
- curl -fsSL https://tailscale.com/install.sh | sh —> 인터넷에서 설치 스크립트 받아서 바로 실행
- tailscale up 명령어
- tailscale 실행 후 계정에 기기 등록 → 로그인 링크 나옴
- tailscale ip -4
- tailscale 주소 받기
- pve shell 에서 명령어 입력
C. Ubuntu Server VM 생성
- ISO 업로드
- local(pve) → ISO Images
- local(pve) : proxmox 안의 파일 보관 창고
- ISO Images : 창고 안의 설치 파일 칸
- local(pve) → ISO Images
- VM 생성
- VM ID : 100 (VM ID, proxmox는 100부터 시작)
- NAME : portfolio
- Qemu Agent : proxmox랑 VM이 대화하는 통로
- Disk : VM에게 줄 저장공간
- local-lvm : proxmox 안의 VM 디스크 전용 창고
- SCSI : 디스크 연결 방식
- Type : host —> 미니 피씨 CPU 기능을 그대로 VM에게 넘김
- vmbr0 : proxmox 가상 스위치
- virtIO : VM 전용 랜카드 방식
- Ubuntu 설치
- Type of install : Ubuntu server : 기본판
- Network : DHCP →
<내부 IP>- DHCP : 공유기가 자동으로 주소 할당
- proxmox(pve) : 설치 때 주소 직접 고정, VM : 자동으로 받음
- OpenSSH server : 다른 컴퓨터에서 ssh로 원격 접속할 수 있게 받아주는 프로그램
- 로그인 확인
- 콘솔에서 로그인 확인
- Ubuntu 26.04.1 LTS
- LTS : Long Term Support : 5년 이상 보안 업데이트 해주는 안정판
트러블슈팅
- USB로 부팅해도 윈도우로 넘어감
- 원인 : ISO를 USB에 복사만 하고 안 구움
- 해결 : balenaEtcher로 구움
- 설치 직후 apt-get update 실패
- 원인 : 기본 저장소가 유료(enterprise)
- 해결 : enterprise 끄고 No-Subscription 켬
- No-Subscription 저장소 연결 실패
- 원인 : 집 네트워크에 IPv6 경로가 없는데 IPv6로 접속 시도
- 해결 : apt를 IPv4로 고정 (99force-ipv4)
- Tailscale 인증 링크 404
- 원인 : 링크 복사하려고 Ctrl+C → 터미널에선 프로그램 중단이라 링크 만료
- 해결 : tailscale up 다시 실행 후 건드리지 않고 바로 인증
