Info
home server 구축 과정을 정리한 페이지 입니다.
계획
미니pc 를 통해서 ProxmoxVE 를 OS 로 설치한 뒤 Opnsense kubernetes 등 여러가지 도구들을 사용하여 실제 여러 홈페이지 및 application 을 운영해 볼 생각입니다.
미니pc 스펙
모델명 : FIREBAT T8 플러스 N100
CPU : N100 (4core)
Memory : 16GB
storage : 512GB
local : 100GB
local-lvm : 375GBHomeLab 네트워크 구성
통합 네트워크 구성 (192.168.x.0/24)
🌐 업데이트된 IP 할당 테이블
| 구분 | 역할 | 스펙 | |
|---|---|---|---|
| SKB 공유기 | Gateway | 기본 게이트웨이 | |
| Proxmox VE | 호스트 | 물리: 4CPU 16GB | |
| WireGuard Server | VPN 서버 | 내장 | |
| PC VPN | VPN 클라이언트 | WireGuard Client | |
| OpnSense | 방화벽/HAProxy | 2CPU 2GB 20GB | |
| K3s Master | 컨트롤 플레인 | 4CPU 4GB 30GB | |
| K3s Worker-1 | 워커 노드 | 4CPU 9GB 100GB | |
| K3s Worker-2 | 워커 노드 | 4CPU 9GB 100GB |
⚖️ BALANCED OVERCOMMIT
| 구분 | 물리 | 할당 | 배수 | 안전성 |
|---|---|---|---|---|
| CPU | 4 Core | 20 vCPU | 5배 | ✅ 안전 |
| Memory | 15.41GB | 24GB | 1.56배 | ✅ 균형 |
| Disk | 512GB | 250GB | 0.49배 | ✅ 넉넉 |
🔧 DHCP 범위 (기존 기기)
192.168.x.2 - 192.168.x.99 : 자동 할당 (스마트폰, TV 등)네트워크 흐름
🔄 VPN 연결 흐름
MacBook (외부)
↓ 인터넷 (공인ip:51820)
SKB 공유기 (포트포워딩)
↓ 192.168.x.x:51820
OpnSense WireGuard
↓ VPN 터널 구성
MacBook ←→ 내부 네트워크 🌐 외부 → 내부 서비스 접근
사용자 → 인터넷 → SKB 공유기 → OpnSense HAProxy → K3s Nginx Ingress → PodsHAProxy + Let’s Encrypt 구성
🌐 도메인 라우팅
*.homelab.yourdomain.com 와일드카드 인증서
라우팅 규칙:
- homelab.yourdomain.com → Flutter Web
- api.homelab.yourdomain.com → Django API
- admin.homelab.yourdomain.com → Django Admin
- grafana.homelab.yourdomain.com → Grafana
- jenkins.homelab.yourdomain.com → Jenkins
- kibana.homelab.yourdomain.com → Kibana🔒 SSL 처리
OpnSense HAProxy:
- SSL 터미네이션 (HTTPS → HTTP)
- 자동 인증서 갱신
- 로드밸런싱 (Worker-1, Worker-2 분산)
K3s Nginx Ingress:
- HTTP 기반 내부 라우팅
- Path 기반 서비스 분기
- 헬스체크 및 업스트림 관리다이어그램
Info
K8s 클러스터에서는 실제로 서비스들이 특정 노드에 고정되지 않고, 클러스터 전체에 분산 배치 됩니다. 아래 다이어 그램은 “예상 배치 및 리소스 계획” 입니다.

더 간단하게 표현한 다이어그램.

사용할 기술 스택
코드 관리 & 배포
- Repository: GitHub (Private Repository)
- Registry: Docker Hub (Private Repository)
- CI/CD: Jenkins, ArgoCD
인프라 & 가상화
- HypervisorOS: Proxmox VE
- Container Orchestration: K3s (Kubernetes)
- Firewall/Load Balancer: OpnSense / HAProxy
- VPN: WireGuard
- Infrastructure as Code: Ansible
애플리케이션 스택
- Backend: Django (Python)
- Frontend Web: Flutter Web
- Mobile: Flutter
- Web Server: Nginx Ingress Controller
- API: Django REST Framework
- Async Tasks: Celery
데이터베이스
- Main Database: PostgreSQL
- Cache/Session: Redis
Analytics/Logs: MongoDB
모니터링 & 로깅
- Metrics: Prometheus
- Visualization: Grafana
- Log Storage: Elasticsearch
- Log Analysis: Kibana
- Log Collection: Fluentd
DevOps 도구
Code Quality: SonarQubeSecret Management: HashiCorp VaultData Pipeline: Apache AirflowAnalysis Environment: Jupyter Notebook
클라우드 & 외부 서비스
- Cloud Platform: AWS (연동)
- App Store: Google Play Store, Apple App Store
- SSL Certificate: Let’s Encrypt (자동 갱신)
- DNS: Cloudflare (도메인 관리)
개발 환경
- OS: Ubuntu 24.04(VM)
- Container Runtime: Docker
- Package Manager: Helm
- Development: Cursor / PyCharm
주의사항(보안사항)
GitHub에 올리면 안 되는 것 ❌ 데이터베이스 비밀번호 ❌ API 키, 토큰 ❌ 개인 정보 ❌ 내부 IP, 설정 정보
대안 ✅ Environment Variables ✅ Kubernetes Secrets ✅ HashiCorp Vault ✅ .env 파일 (gitignore 처리)
Docker Hub에 포함하지 않는 것 ❌ 데이터베이스 패스워드 ❌ API 키/시크릿 ❌ 개인정보 ❌ 인증서/키 파일
대신 사용 ✅ Environment Variables ✅ Kubernetes Secrets ✅ Docker Secrets ✅ 외부 설정 파일