이 글에서는 제가 라즈베리 파이를 활용해 홈 서버를 구축한 과정을 기록합니다. 도메인 구매부터 웹 서버 설정, Docker를 이용한 서비스 배포까지 전체 과정을 공유하고자 합니다.
저는 비교적 저렴하고 관리가 편리한 Namecheap에서 도메인을 구매했습니다.
구매 과정은 다음과 같습니다:
1. Namecheap에 접속하여 계정 생성
2. 원하는 도메인 이름 검색 후 사용 가능 여부 확인
3. 도메인 선택 후 장바구니에 추가
4. 결제 진행 (신용카드, PayPal 등 다양한 결제 수단 지원)
도메인을 구매한 후, 저는 Cloudflare를 DNS 관리 및 CDN 서비스로 사용하기로 했습니다.
설정 과정:
1. Cloudflare에 계정 생성
2. 구매한 도메인 추가
3. Cloudflare에서 제공하는 네임서버 정보를 Namecheap에 등록
Cloudflare에서 서브도메인을 설정하는 것은 매우 간단합니다:
저는 서버용으로 Ubuntu 24.04.2 LTS를 선택했습니다.
이미지 굽기가 완료된 후 SD 카드를 라즈베리 파이에 삽입하고 전원을 연결합니다.
라즈베리 파이가 부팅되면 SSH를 통해 접속합니다:
ssh 사용자이름@라즈베리파이_IP주소
접속 후 시스템 업데이트 및 기본 패키지 설치:
sudo apt update
sudo apt upgrade -y
sudo apt install -y vim htop git curl
Docker는 컨테이너 기반의 가상화 플랫폼으로, 다양한 서비스를 독립적으로 실행할 수 있게 해줍니다. 라즈베리 파이에 Docker를 설치하는 과정은 다음과 같습니다:
# 필요한 패키지 설치
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 패키지 목록 업데이트
sudo apt update
# Docker 설치
sudo apt install -y docker-ce docker-ce-cli containerd.io
# Docker 시작 및 부팅 시 자동 실행 설정
sudo systemctl enable --now docker
# 현재 사용자를 docker 그룹에 추가 (sudo 없이 Docker 사용 가능)
sudo usermod -aG docker $USER
# 변경사항 적용을 위해 재로그인
exit
다시 SSH로 접속한 후 Docker가 제대로 설치되었는지 확인:
docker --version
Nginx Proxy Manager는 웹 기반 GUI를 통해 Nginx 프록시를 쉽게 관리할 수 있게 해주는 도구입니다. SSL 인증서 발급 및 갱신도 자동으로 처리할 수 있어 매우 편리합니다.
먼저 작업 디렉토리를 생성하고 docker-compose.yml 파일을 만듭니다:
mkdir -p ~/docker/nginx-proxy-manager
cd ~/docker/nginx-proxy-manager
docker-compose.yml 파일 생성:
nano docker-compose.yml
다음 내용을 붙여넣기:
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
# Mysql/Maria connection parameters:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
MARIADB_AUTO_UPGRADE: '1'
volumes:
- ./mysql:/var/lib/mysql
Docker Compose로 서비스 시작:
docker compose up -d
이제 브라우저에서 http://라즈베리파이_IP주소:81
로 접속하면 Nginx Proxy Manager의 관리 페이지에 접근할 수 있습니다.
첫 로그인 후 반드시 비밀번호를 변경해야 합니다.
이제 Dokcer를 사용하여 제 블로그 서비스를 배포 해 보겠습니다.
git clone https://github.com/3x-haust/3xhaust_blog
docker compose up -d
이제 Nginx Proxy Manager에서 새로운 프록시 호스트를 추가하여 WordPress를 외부에 노출시킬 수 있습니다:
이제 https://blog.yourdomain.com
으로 접속하면 blog 페이지를 볼 수 있습니다.
지금까지 라즈베리 파이를 활용해 홈 서버를 구축하는 방법을 알아보았습니다. 도메인 구매부터 Nginx Proxy Manager 설정, Docker를 활용한 서비스 배포까지 전체 과정을 살펴봤습니다.
이 설정을 바탕으로 다양한 서비스를 배포할 수 있습니다. 라즈베리 파이는 전력 소모가 적고 조용하게 동작하기 때문에 가정용 서버로 적합하며, 직접 서버를 운영하면서 다양한 기술을 배울 수 있는 좋은 기회가 되었습니다.