봄맞이 홈서버 구축: 미니PC 활용 Proxmox & Docker NAS 올인원 가이드
퇴근 후 집에 돌아오니, 내 미니 PC 홈서버에 과도한 트래픽이 몰려 CPU 점유율이 90%를 넘고 있었다. 원인은 Fail2ban 설정 오류로 인한 오탐지. 급한 대로 SSH 포트를 막고 DDNS 설정을 잠시 껐다. 이 문제를 해결하면서, 홈서버 보안과 효율적인 자원 관리가 얼마나 중요한지 다시 한번 깨달았다.
급할 때 30초 체크 3가지
- 1. SSH 포트 외부 접속 차단: 공유기 설정에서 포트 포워딩 규칙을 삭제하거나, 방화벽 규칙을 변경하여 외부에서의 SSH 접속을 즉시 차단.
- 2. DDNS 서비스 일시 중단: DDNS 서비스 설정을 비활성화하여 외부에서의 접근을 막고, 내부 네트워크로만 접속하도록 변경.
- 3. Proxmox GUI 접속 확인: Proxmox 웹 인터페이스에 접속하여 CPU, RAM 사용량을 확인하고, 의심스러운 VM이나 컨테이너가 있는지 확인.
위 세 가지 조치만 취해도 외부 공격으로 인한 시스템 과부하를 어느 정도 막을 수 있다. 이제 본격적으로 미니 PC 홈서버 구축 및 최적화 방법을 알아보자.

최근 라즈베리파이 대신 N100 CPU를 탑재한 미니 PC로 홈서버를 구축하는 사람들이 늘고 있다. 나 역시 AMD Ryzen 7 5700U를 탑재한 미니 PC를 선택했다. 라즈베리파이보다 성능이 훨씬 강력하면서도 저전력으로 24시간 구동에 적합하기 때문이다. 무엇보다 대용량 스토리지를 자유롭게 사용할 수 있고, 원하는 리눅스 배포판을 선택할 수 있다는 점이 매력적이었다.
미니 PC 홈서버 구축, 왜 Proxmox인가?
단순히 파일 서버만 운영할 목적이라면 윈도우나 Ubuntu Server만 설치해도 충분하다. 하지만 NAS, 미디어 서버, 개인 클라우드 등 다양한 서비스를 동시에 운영하고 싶다면 가상화 플랫폼을 사용하는 것이 효율적이다. Proxmox VE는 KVM과 LXC 컨테이너를 통합한 오픈 소스 가상화 플랫폼으로, 웹 기반 GUI를 통해 VM 및 컨테이너를 쉽게 관리할 수 있다. 클러스터링 및 고가용성 기능도 제공한다.
Proxmox vs Docker (단독 사용 시)
Proxmox와 Docker는 비슷해 보이지만, 엄연히 다른 기술이다. Proxmox는 OS 레벨의 가상화를 제공하여 여러 개의 독립적인 운영체제를 동시에 실행할 수 있게 해준다. 반면 Docker는 애플리케이션을 컨테이너라는 격리된 환경에서 실행하는 기술이다. Docker는 OS 자원을 공유하므로 Proxmox보다 가볍고 빠르지만, OS 수준의 격리는 제공하지 않는다.
| 특징 | Proxmox | Docker |
|---|---|---|
| 가상화 수준 | OS 레벨 (KVM, LXC) | 애플리케이션 레벨 |
| 자원 사용량 | 높음 | 낮음 |
| 격리 수준 | 높음 | 낮음 (OS 자원 공유) |
| 배포 속도 | 느림 (OS 설치 필요) | 빠름 (이미지 pull) |
| 관리 편의성 | 웹 GUI | CLI (Portainer GUI 사용 가능) |
| 비용 | 무료 (오픈 소스) | 무료 (오픈 소스) |
Proxmox + Docker: 최적의 조합
Proxmox와 Docker를 함께 사용하면 각 기술의 장점을 모두 활용할 수 있다. Proxmox VM 안에서 Docker를 실행하면 OS 레벨의 격리와 컨테이너 기반 애플리케이션 배포의 편리함을 동시에 누릴 수 있다. 예를 들어, Proxmox VM에 Ubuntu Server를 설치하고, 그 안에서 Docker를 사용하여 NAS, 미디어 서버, 개인 클라우드 등을 구축하는 것이 일반적인 구성이다.
처음에는 Proxmox 없이 Docker만 사용해서 NAS를 구축하려고 했다. 하지만 파일 시스템 권한 문제, 네트워크 설정 충돌 등 예상치 못한 문제들이 계속 발생했다. 결국 Proxmox를 도입하고 나서야 모든 문제가 깔끔하게 해결되었다. 격리된 환경에서 각 서비스를 운영하니 안정성도 훨씬 높아졌다.
Proxmox 홈서버 구축 A to Z
1단계: 미니 PC에 Proxmox 설치
Proxmox 설치는 생각보다 간단하다. 먼저 Proxmox ISO 이미지를 다운로드하여 USB 부팅 디스크를 만든다. Rufus 같은 툴을 사용하면 쉽게 만들 수 있다. USB 디스크를 미니 PC에 연결하고 부팅 순서를 USB로 변경한 후, Proxmox 설치 프로그램을 실행한다. 설치 과정은 대부분 GUI 기반으로 진행되므로, 화면 안내에 따라 설정을 진행하면 된다.
📌 Rufus – Create bootable USB drives the easy way

주의할 점은 네트워크 설정이다. 고정 IP 주소를 할당하는 것이 좋다. DHCP로 IP를 할당받으면 IP 주소가 변경될 때마다 설정을 바꿔줘야 하는 번거로움이 있다. DNS 서버 주소는 8.8.8.8 (Google Public DNS) 또는 1.1.1.1 (Cloudflare DNS)로 설정하는 것을 추천한다.
2단계: Proxmox 웹 GUI 접속 및 초기 설정
Proxmox 설치가 완료되면 웹 브라우저를 열고 ` IP 주소]:8006`에 접속한다. 사용자 이름은 `root`, 비밀번호는 Proxmox 설치 시 설정한 비밀번호를 입력한다. 웹 GUI에 접속하면 Proxmox 서버의 상태를 한눈에 확인할 수 있다.
sed -i ‘s/if (data.status !== ‘Active’)
3단계: Docker VM 생성 및 설정
Proxmox 웹 GUI에서 “Create VM” 버튼을 클릭하여 새로운 VM을 생성한다. OS는 Ubuntu Server 22.04 LTS를 선택했다. 최소 사양은 CPU 2코어, RAM 4GB, 디스크 32GB로 설정했다. 네트워크 설정은 기본 브리지 네트워크를 사용하고, 방화벽은 활성화하는 것이 좋다.
VM 생성 후 Ubuntu Server를 설치한다. 설치 과정에서 SSH 서버를 설치하는 것을 잊지 말자. SSH 서버가 없으면 터미널로 접속할 수 없다. Ubuntu Server 설치가 완료되면 Docker를 설치한다. 다음 명령어를 차례대로 실행하면 된다.
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable docker.service
sudo systemctl start docker.service
Docker 설치 후, `docker run hello-world` 명령어를 실행하여 Docker가 정상적으로 작동하는지 확인한다.
Docker를 활용한 NAS 구축
Docker를 사용하면 NAS를 매우 간단하게 구축할 수 있다. TrueNAS Scale, Nextcloud, Seafile 등 다양한 NAS 솔루션이 Docker 이미지로 제공된다. 여기서는 가장 인기 있는 NAS 솔루션 중 하나인 Nextcloud를 Docker로 구축하는 방법을 소개한다.
1단계: Docker Compose 설치
Docker Compose는 여러 개의 Docker 컨테이너를 동시에 관리할 수 있게 해주는 툴이다. Nextcloud는 데이터베이스, 웹 서버 등 여러 개의 컨테이너로 구성되므로, Docker Compose를 사용하는 것이 편리하다. 다음 명령어를 실행하여 Docker Compose를 설치한다.

sudo apt install docker-compose
2단계: Docker Compose 파일 작성
다음 내용을 `docker-compose.yml` 파일로 저장한다.
yaml
version: ‘3’
services:
db:
image: mariadb:10.6
restart: always
volumes:
– db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: your_nextcloud_password
app:
image: nextcloud:latest
restart: always
ports:
– 8080:80
– 8443:443
volumes:
– nextcloud_data:/var/www/html
environment:
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: your_nextcloud_password
MYSQL_HOST: db
depends_on:
– db
volumes:
db_data:
nextcloud_data:
위 파일에서 `your_root_password`, `your_nextcloud_password`를 실제 비밀번호로 변경해야 한다. `8080:80` 포트 매핑은 호스트의 8080 포트를 컨테이너의 80 포트로 연결한다는 의미다. 8443 포트도 마찬가지다.
3단계: Nextcloud 실행
`docker-compose.yml` 파일이 있는 디렉토리에서 다음 명령어를 실행한다.
docker-compose up -d
이 명령어는 `docker-compose.yml` 파일에 정의된 모든 컨테이너를 백그라운드에서 실행한다. Nextcloud가 실행되는 데 몇 분 정도 걸릴 수 있다. 웹 브라우저를 열고 ` VM IP 주소]:8080`에 접속하면 Nextcloud 초기 설정 화면이 나타난다. 사용자 이름과 비밀번호를 설정하고, 데이터 디렉토리를 지정하면 Nextcloud를 사용할 수 있다.
처음 Nextcloud를 설치했을 때, `occ` 명령어를 실행하려고 했지만, 권한 문제 때문에 계속 실패했다. 알고 보니 Docker 컨테이너 내부에서 명령어를 실행해야 했다. `docker exec -it [컨테이너 ID] bash` 명령어를 사용하여 컨테이너에 접속한 후, `occ` 명령어를 실행하니 문제가 해결되었다.
보안 및 유지보수
홈서버는 24시간 켜져 있기 때문에 보안에 특히 신경 써야 한다. Tailscale과 같은 VPN을 사용하여 홈 네트워크에 안전하게 원격 접속하고, Fail2ban과 같은 도구를 사용하여 무차별 대입 공격을 방지해야 한다. 방화벽 설정을 통해 불필요한 포트를 차단하는 것도 중요하다.
정전, 하드웨어 문제 등으로 인한 데이터 손실에 대비하여 정기적인 백업을 수행해야 한다. TrueNAS의 스냅샷 기능을 활용하거나, Backrest와 같은 백업 도구를 사용하여 데이터를 보호할 수 있다. 유동 IP 환경에서 홈서버에 접속하기 위해 DDNS (Dynamic DNS) 서비스를 설정하고, 공유기에서 포트 포워딩을 설정해야 한다.
내 경우, 매주 일요일 새벽 3시에 자동 백업 스크립트를 실행하도록 설정해두었다. 갑작스러운 하드웨어 고장에도 데이터를 안전하게 보존할 수 있어 안심이다.
미니 PC를 활용한 Proxmox & Docker NAS 올인원 홈서버 구축은 생각보다 어렵지 않다. 약간의 노력만 투자하면 자신만의 강력한 서버를 구축하고, 다양한 서비스를 편리하게 이용할 수 있다. 지금 바로 미니 PC를 주문하고, Proxmox 설치를 시작해보자. 그리고 무엇보다 중요한 건, 보안 설정을 꼼꼼하게 확인하는 것이다.