라즈베리파이 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 설치
- PC에서 Raspberry Pi Imager 실행
- Raspberry Pi OS(64-bit) 선택
- 설치 옵션에서 SSH 활성화, 사용자/비번 설정
- 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 외부접속, 백업과 운영 팁까지 한 번에!
'it' 카테고리의 다른 글
| Spring Boot 3 최신 특징 (2026 기준으로 “지금” 꼭 알아야 할 변화들) (0) | 2026.02.08 |
|---|---|
| Express 보안 미들웨어: 운영에서 바로 쓰는 필수 조합 (0) | 2026.02.07 |
| Spring Boot 3.x + JPA로 게시판 만들기 (가장 쉬운 입문 가이드) (0) | 2026.02.06 |
| 엑셀 Copilot으로 복잡한 수식 1초 만에 만드는 법 (실무 프롬프트 템플릿 포함) (0) | 2026.02.06 |
| Node.js 가비아 호스팅 배포 시 발생하는 흔한 오류와 해결법 (0) | 2026.02.06 |
| AutoGPT 설치 방법 및 실무 활용 시나리오 (2026 최신판) (0) | 2026.02.06 |
| AI 시대 개발자의 생존 전략: 2026년 필수 역량 3가지 (0) | 2026.02.06 |
| 개인정보 처리 방침 (0) | 2026.02.04 |