it ·

라즈베리파이 5로 만드는 나만의 개인 클라우드 (Nextcloud 구축)

반응형

 

라즈베리파이 5로 만드는 나만의 개인 클라우드 (Nextcloud 구축)

라즈베리파이로 구축하는 개인 클라우드(서버/스토리지) 대표 이미지
라즈베리파이 5 + Nextcloud로 개인 클라우드를 구축하면, 내 파일/사진/문서를 내 서버에 안전하게 보관하고 어디서든 접근할 수 있습니다.

왜 굳이 개인 클라우드인가?

구글 드라이브, 원드라이브 같은 클라우드는 편하지만, 내 데이터가 어디에 어떻게 저장되는지 완전히 통제하기 어렵습니다. 반대로 Nextcloud는 “내가 운영하는 서버”에 파일/사진/연락처/캘린더까지 올려두고, 모바일/PC 어디서든 동기화할 수 있는 자체 호스팅형 클라우드입니다.

  • 데이터 주권: 저장 위치/백업/암호화 정책을 직접 결정
  • 비용 최적화: 초기 장비 비용 이후, 월 구독 부담을 크게 줄임
  • 확장성: 저장장치(SSD/HDD) 추가로 손쉽게 확장
  • 생태계: 사진 자동업로드, 문서 협업, 공유 링크, 앱스토어(앱) 기능

전체 로드맵 (설치 전략 2가지)

라즈베리파이에서 Nextcloud를 운영하는 대표 방법은 크게 두 가지입니다.

방법 A) Docker(권장): 관리·업데이트가 편함

  • 장점: 설치/업데이트/롤백이 비교적 쉬움
  • 장점: DB/웹서버/캐시(REDIS) 등을 안정적으로 분리 운영
  • 단점: 처음 Docker 개념이 낯설 수 있음

방법 B) Bare-metal(LAMP/LEMP): 전통 방식, 커스터마이징 자유

  • 장점: 리눅스 웹서버 스택 경험 쌓기 좋음
  • 단점: PHP/모듈/권한/업데이트 관리 난이도 상승

이 글은 초보자도 안정적으로 완주할 수 있도록 Docker 기반(권장)으로 설명합니다. 마지막에 Bare-metal 선택지도 짧게 정리해둘게요.

준비물 체크리스트 (라즈베리파이 5 기준)

필수 하드웨어

  • Raspberry Pi 5 (가능하면 8GB RAM 권장)
  • 전원 어댑터 (정품/고출력 권장)
  • 저장장치: microSD(부팅용) + 외장 SSD/HDD(데이터용) 권장
  • 유선 LAN 권장 (와이파이도 가능하지만 안정성은 유선이 우위)

저장장치 추천 구성

  • microSD: OS 부팅용(32~64GB)
  • SSD/HDD: Nextcloud 데이터(최소 500GB~)

핵심은 “OS와 데이터 분리”입니다. OS는 microSD에, 데이터는 외장 SSD에 두면 SD카드 수명/성능 문제를 크게 줄일 수 있어요.

1단계: 라즈베리파이 OS 설치 & 기본 보안 세팅

OS 설치

  1. PC에서 Raspberry Pi Imager 실행
  2. Raspberry Pi OS(64-bit) 선택
  3. 설치 옵션에서 SSH 활성화, 사용자/비번 설정
  4. microSD에 플래싱 후 라즈베리파이에 삽입

SSH 접속 및 업데이트

# 라즈베리파이 접속
ssh pi@라즈베리파이_IP

# 패키지 업데이트
sudo apt update
sudo apt full-upgrade -y
sudo reboot

기본 보안(강력 권장)

  • 기본 비밀번호가 약하면 즉시 변경
  • SSH 포트 변경 또는 키 인증(가능하면 키 인증)
  • 방화벽(UFW)로 불필요 포트 차단
# UFW 설치 및 기본 허용(SSH/웹)
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

2단계: 외장 SSD 마운트 (데이터용 디스크 준비)

Nextcloud는 파일이 계속 쌓입니다. 데이터 디스크(SSD/HDD)를 안정적으로 마운트해두는 게 중요합니다.

디스크 확인

lsblk

예시: ext4 포맷 후 마운트

⚠️ 아래 포맷 명령은 디스크 데이터를 삭제합니다. 디스크 장치명(/dev/sda 등)을 반드시 확인하세요.

# (예시) /dev/sda1을 ext4로 포맷
sudo mkfs.ext4 -F /dev/sda1

# 마운트할 폴더 생성
sudo mkdir -p /mnt/ncdata

# 마운트
sudo mount /dev/sda1 /mnt/ncdata

# 부팅 시 자동 마운트(fstab)
sudo blkid /dev/sda1

blkid로 나온 UUID를 사용해 /etc/fstab에 추가합니다.

sudo nano /etc/fstab
# 예시(한 줄 추가)
UUID=YOUR_UUID_HERE  /mnt/ncdata  ext4  defaults,noatime  0  2
sudo reboot
df -h | grep ncdata

3단계: Docker & Compose 설치

라즈베리파이에서 Docker를 쓰면 Nextcloud를 “패키지 묶음”으로 관리할 수 있어 운영이 편해집니다.

# Docker 설치(배포판에 따라 다를 수 있음)
sudo apt update
sudo apt install -y docker.io docker-compose-plugin

# 사용자 권한(선택)
sudo usermod -aG docker $USER
newgrp docker

docker --version
docker compose version

4단계: Nextcloud (Docker Compose)로 올리기

여기서는 “가장 흔하고 검증된 구성”인 Nextcloud + MariaDB + Redis 조합을 사용합니다. (Redis는 파일 잠금/세션 등에 도움을 줘서 체감 성능과 안정성이 좋아집니다.)

폴더 구조 만들기

mkdir -p ~/nextcloud/{db,redis,html}
mkdir -p ~/nextcloud/compose
cd ~/nextcloud/compose

docker-compose.yml 작성

services:
  db:
    image: mariadb:11
    container_name: nc_db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    environment:
      - MYSQL_ROOT_PASSWORD=CHANGE_ME_ROOT
      - MYSQL_PASSWORD=CHANGE_ME_DB
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    volumes:
      - ../db:/var/lib/mysql

  redis:
    image: redis:7-alpine
    container_name: nc_redis
    restart: unless-stopped
    volumes:
      - ../redis:/data

  app:
    image: nextcloud:apache
    container_name: nc_app
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=CHANGE_ME_DB
      - REDIS_HOST=redis
    volumes:
      - ../html:/var/www/html
      - /mnt/ncdata:/var/www/html/data
    depends_on:
      - db
      - redis

포인트는 /mnt/ncdata를 컨테이너의 data 폴더로 연결한 것입니다. 이렇게 하면 컨테이너를 지웠다가 다시 띄워도 데이터는 그대로 유지됩니다.

기동

docker compose up -d
docker ps

이제 브라우저에서 http://라즈베리파이_IP:8080로 접속하면 Nextcloud 초기 설정 화면이 뜹니다.

5단계: 외부 접속(도메인/HTTPS) 구성

집 밖에서도 접근하려면 2가지 중 하나를 선택합니다.

  • 방법 1) 포트포워딩 + 도메인 + HTTPS(권장)
  • 방법 2) VPN(와이어가드 등)로 내부망처럼 접속 (더 안전하지만 설정 난이도↑)

권장: Reverse Proxy(Nginx) + HTTPS(Let’s Encrypt)

Nextcloud는 HTTPS 환경에서 가장 안정적으로 동작합니다. 특히 모바일 업로드/웹DAV/공유링크 등에서 차이가 납니다.

구성 예시

  • 공유기 포트포워딩: 80, 443 → 라즈베리파이
  • 라즈베리파이에서 Nginx가 443 종료(SSL 처리)
  • Nginx가 내부의 Nextcloud(8080)로 프록시 패스

Nginx 설치

sudo apt install -y nginx

도메인 준비

  • cloud.yourdomain.com 같은 서브도메인 추천
  • DNS에서 A레코드를 집 공인IP로 설정 (공인IP가 자주 바뀌면 DDNS 사용)

Certbot으로 HTTPS 인증서 발급

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d cloud.yourdomain.com

Nginx 프록시 설정(예시)

아래는 핵심만 담은 예시입니다. (환경에 맞게 조정)

server {
  listen 443 ssl http2;
  server_name cloud.yourdomain.com;

  client_max_body_size 2G;

  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Nextcloud trusted_domains 설정

도메인으로 접속하면 Nextcloud가 보안상 “신뢰 도메인”을 요구할 수 있습니다. 컨테이너의 config.php에 도메인을 추가합니다.

# config.php 위치(도커 볼륨에 따라 다를 수 있으나 보통 아래 경로)
sudo nano ~/nextcloud/html/config/config.php
'trusted_domains' =>
  array (
    0 => '라즈베리파이_IP',
    1 => 'cloud.yourdomain.com',
  ),

6단계: 성능/안정성 튜닝 (라즈베리파이 운영 핵심)

1) Redis 파일 잠금(권장)

Docker 구성에서 Redis를 붙였더라도, Nextcloud 내부 설정이 필요할 수 있습니다. Nextcloud 관리자 화면에서 경고가 뜨면 config.php에 아래를 추가합니다.

'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => 'redis',
  'port' => 6379,
],

2) 업로드 제한/타임아웃

대용량 파일 업로드가 잦으면 Nginx의 client_max_body_size, 타임아웃 값을 조정해야 합니다. 위 예시에 2G로 넣었지만, 필요하면 더 키우세요.

3) 데이터 디스크 옵션

  • fstab에 noatime 적용(불필요한 디스크 쓰기 감소)
  • 가능하면 SSD 사용(사진/미리보기 생성에서 체감 큼)

7단계: 백업/복구 전략 (진짜 중요한 파트)

개인 클라우드는 “내가 관리자”라서 백업도 내가 해야 합니다. 최소한 아래 2가지는 반드시 백업하세요.

  • DB 백업 (MariaDB 덤프)
  • Nextcloud 설정/앱 데이터 (html 폴더의 config, apps 등)
  • 사용자 파일 데이터 (/mnt/ncdata)

DB 백업(예시)

mkdir -p ~/backup
docker exec nc_db mysqldump -u root -pCHANGE_ME_ROOT nextcloud > ~/backup/nextcloud_db.sql

폴더 백업(예시)

tar -czf ~/backup/nextcloud_html.tar.gz -C ~/nextcloud html
tar -czf ~/backup/nextcloud_data.tar.gz -C /mnt ncdata

가장 좋은 습관은 “라즈베리파이 외부로 백업본을 복제”하는 것입니다. (예: 또 다른 외장하드, 다른 NAS, 다른 PC, 원격 스토리지 등)

8단계: 운영 체크리스트 (장기 운영 팁)

업데이트

  • OS 업데이트: sudo apt update && sudo apt full-upgrade -y
  • Nextcloud 업데이트: 컨테이너 이미지 업데이트 + 앱 내부 업데이트 흐름 관리

모니터링

  • 디스크 용량: df -h
  • 컨테이너 상태: docker ps, docker logs nc_app
  • 온도/스로틀링: 장시간 부하 시 방열/팬 권장

보안

  • 관리자 계정 2FA 활성화
  • 공유 링크 만료/비밀번호 정책 설정
  • 외부 접속은 HTTPS 강제
  • 정기적으로 “보안 및 설정 경고” 페이지 점검

자주 겪는 문제와 해결(트러블슈팅)

1) “trusted domain error”가 떠요

  • config.php의 trusted_domains에 도메인/IP 추가

2) 업로드가 중간에 끊겨요

  • Nginx: client_max_body_size, timeout 조정
  • 공유기/ISP: 업로드 품질, MTU 이슈 확인

3) 미리보기 생성이 너무 느려요

  • SSD 사용 권장
  • 라즈베리파이 방열/팬 구성(스로틀링 방지)
  • 동시 사용자 수가 많으면 더 강한 서버 고려

Bare-metal로 하고 싶다면? (짧은 가이드)

Docker 대신 전통 스택으로 가려면, 대략 아래 조합이 필요합니다.

  • 웹서버: Nginx 또는 Apache
  • DB: MariaDB/PostgreSQL
  • PHP: 권장 버전 + 필수 모듈 설치
  • 캐시: Redis(권장)

장점은 커스터마이징이 자유롭지만, 버전 호환/업데이트/권한 문제로 시간이 더 들 수 있습니다. 처음 구축이라면 Docker로 안정적으로 운영 경험을 쌓은 뒤 필요할 때 Bare-metal로 옮기는 전략도 좋습니다.

마무리: “내 데이터는 내가 지킨다”를 현실로

라즈베리파이 5 + Nextcloud 조합은 “개인용 클라우드”로 정말 강력합니다. 사진 자동 업로드부터 파일 공유, 백업 허브까지 역할을 해주면서도, 월 구독료 없이(혹은 최소 비용으로) 내가 원하는 만큼 확장할 수 있어요.

다음 단계로는 자동 백업(크론), VPN 접속, 외장 디스크 이중화, 그리고 모니터링 대시보드까지 붙이면 “홈 서버”가 한 단계 업그레이드됩니다.


FAQ

Q1. 라즈베리파이 5 하나로 가족 사진 백업 충분할까요?

가능해요. 다만 저장장치(SSD/HDD) 용량과 백업 전략이 핵심입니다. “라즈베리파이 단일 디스크 = 유일한 저장소”가 되면 위험하니, 최소 1개의 외부 백업을 권장합니다.

Q2. 외부 접속이 무섭다면?

포트포워딩 대신 VPN(와이어가드 등)로 내부망처럼 접속하면 공격 노출 면적을 크게 줄일 수 있습니다.

Q3. 집 공인IP가 자주 바뀌는데요?

DDNS를 쓰거나, 도메인 제공사의 동적 DNS 기능을 활용하면 편합니다.


관련 키워드 태그(10개)

#라즈베리파이5 #Nextcloud #개인클라우드 #홈서버 #NAS대안 #DockerCompose #리버스프록시 #Nginx #HTTPS #자가호스팅

Meta Description (160자)

라즈베리파이 5로 Nextcloud 개인 클라우드를 구축하는 방법을 단계별로 정리했습니다. Docker Compose, 외장 SSD 마운트, HTTPS/Nginx 외부접속, 백업과 운영 팁까지 한 번에!

반응형