[Server] 내가 라즈베리 파이로 홈 서버를 구축한 방법

유성윤·2025년 5월 7일
1
post-thumbnail

개요

이 글에서는 제가 라즈베리 파이를 활용해 홈 서버를 구축한 과정을 기록합니다. 도메인 구매부터 웹 서버 설정, Docker를 이용한 서비스 배포까지 전체 과정을 공유하고자 합니다.

준비물

  • 라즈베리 파이 4 (8GB RAM 모델 추천)
  • 32GB 이상의 마이크로 SD 카드
  • 안정적인 전원 공급 장치
  • 유선 인터넷 연결 (안정적인 서비스를 위해 권장)

1. 도메인 구매 및 설정

Namecheap에서 도메인 구매하기

저는 비교적 저렴하고 관리가 편리한 Namecheap에서 도메인을 구매했습니다.

구매 과정은 다음과 같습니다:
1. Namecheap에 접속하여 계정 생성
2. 원하는 도메인 이름 검색 후 사용 가능 여부 확인
3. 도메인 선택 후 장바구니에 추가
4. 결제 진행 (신용카드, PayPal 등 다양한 결제 수단 지원)

Cloudflare로 네임서버 설정

도메인을 구매한 후, 저는 Cloudflare를 DNS 관리 및 CDN 서비스로 사용하기로 했습니다.

설정 과정:
1. Cloudflare에 계정 생성
2. 구매한 도메인 추가
3. Cloudflare에서 제공하는 네임서버 정보를 Namecheap에 등록

  1. Namecheap의 도메인 관리 페이지에서 '네임서버 변경'을 선택하고 Cloudflare 네임서버 입력
  2. 변경사항이 적용되기까지 약 24-48시간 기다리기

서브도메인 설정

Cloudflare에서 서브도메인을 설정하는 것은 매우 간단합니다:

  1. Cloudflare 대시보드에서 구매한 도메인 선택
  2. 'DNS' 탭으로 이동
  3. '레코드 추가' 버튼 클릭
  4. 레코드 유형: A, 이름: 원하는 서브도메인(예: blog), IPv4 주소: 라즈베리 파이의 공인 IP
  5. '저장' 버튼 클릭

2. 라즈베리 파이 OS 설치

저는 서버용으로 Ubuntu 24.04.2 LTS를 선택했습니다.

Ubuntu 24.04.2 LTS 설치 과정

  1. Raspberry Pi Imager 설치
  2. SD 카드를 컴퓨터에 연결하고 Raspberry Pi Imager 실행
  3. 'CHOOSE OS' > 'Ubuntu 24.04.2 LTS server' 선택
  4. 'CHOOSE STORAGE' 에서 SD 카드 선택
  5. '⚙️' 아이콘을 클릭하여 SSH 활성화, 사용자 이름/비밀번호 설정, Wi-Fi 설정 등 구성
  6. 'WRITE' 버튼 클릭하여 이미지 굽기 시작

이미지 굽기가 완료된 후 SD 카드를 라즈베리 파이에 삽입하고 전원을 연결합니다.

초기 설정 및 업데이트

라즈베리 파이가 부팅되면 SSH를 통해 접속합니다:

ssh 사용자이름@라즈베리파이_IP주소

접속 후 시스템 업데이트 및 기본 패키지 설치:

sudo apt update
sudo apt upgrade -y
sudo apt install -y vim htop git curl

3. Docker 설치 및 구성

Docker는 컨테이너 기반의 가상화 플랫폼으로, 다양한 서비스를 독립적으로 실행할 수 있게 해줍니다. 라즈베리 파이에 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

4. Nginx Proxy Manager 설정

Nginx Proxy Manager는 웹 기반 GUI를 통해 Nginx 프록시를 쉽게 관리할 수 있게 해주는 도구입니다. SSL 인증서 발급 및 갱신도 자동으로 처리할 수 있어 매우 편리합니다.

Docker Compose로 Nginx Proxy Manager 설치

먼저 작업 디렉토리를 생성하고 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의 관리 페이지에 접근할 수 있습니다.

초기 로그인 정보

  • 이메일: admin@example.com
  • 비밀번호: changeme

첫 로그인 후 반드시 비밀번호를 변경해야 합니다.

5. Docker로 서비스 배포하기

이제 Dokcer를 사용하여 제 블로그 서비스를 배포 해 보겠습니다.

git clone https://github.com/3x-haust/3xhaust_blog
docker compose up -d

이제 Nginx Proxy Manager에서 새로운 프록시 호스트를 추가하여 WordPress를 외부에 노출시킬 수 있습니다:

  1. Nginx Proxy Manager에서 'Add Proxy Host' 클릭
  2. Domain Names: blog.yourdomain.com
  3. Scheme: http
  4. Forward Hostname / IP: 라즈베리 파이 IP 주소
  5. Forward Port: 8080
  6. SSL 설정 후 저장

이제 https://blog.yourdomain.com으로 접속하면 blog 페이지를 볼 수 있습니다.

마무리

지금까지 라즈베리 파이를 활용해 홈 서버를 구축하는 방법을 알아보았습니다. 도메인 구매부터 Nginx Proxy Manager 설정, Docker를 활용한 서비스 배포까지 전체 과정을 살펴봤습니다.

이 설정을 바탕으로 다양한 서비스를 배포할 수 있습니다. 라즈베리 파이는 전력 소모가 적고 조용하게 동작하기 때문에 가정용 서버로 적합하며, 직접 서버를 운영하면서 다양한 기술을 배울 수 있는 좋은 기회가 되었습니다.

profile
세상을 Ezy하게 살기위해 Hard하게 개발하는 개발자, 유성윤 입니다!

0개의 댓글