⚠️ **블로그 컨셉상 반어체가 들어가니 양해바랍니다
**
DSM7 도커 기반 가상 NAS(헤놀로지) 초간단 구축법
3년간 방치한 블로그 통계를 살펴보니, 하루 평균 3~4 방문과 조회수가 있었다.
바로 가상 NAS 구축 블로그인데, 블로그의 활성화를 위해서 서버맨의 최신 구축법을 공유한다.
이전 포스팅은 DSM6 기반이고, 무겁고 복잡한 감이 있다. 이번엔 DSM7 도커 기반으로 가볍고 빠르게 돌리는 것을 공유한다.
⚠️ DISCLAIMER (열기)
본 포스팅에서 사용되는 RR로더는 정품을 우회하는 부트로더입니다.
수많은 헤놀로지 구축 유튜브, 블로그가 있는건 단지, 저작권자가 용인하고 있는 것입니다.
절대 상업적 용도로 사용하지마시오. 헤놀로지는 개인 연구 및 연습용 입니다.
정품 사용이 정답입니다.
이 포스팅은 한 편의 초간략 포스팅으로 마치기 위해,
기본적으로 클라우드와 리눅스와 도커와 포트포워딩에 대한
기본 개념(중급 이상)이 있다는 전제하에 작성한다.
1️⃣ 리눅스 환경 준비
먼저 리눅스(본 포스팅에서는 우분투)를 하나 준비한다.
클라우드에 구축하든, VMware에 구축하든(요즘 무료임!!), WSL에 구축하든 상관없다.
서버맨은 GCP에 22.04 우분투 인스턴스를 생성했다.

외부 개방 포트는 7081, 7305, 7683, 8007, 5000, 5001 을 연다.
(몇 개 안 쓰는데 걍 뭐가 뭔지 까먹어서 귀찮아서 위에꺼 다 엶)
클라우드는 해당 클라우드 플랫폼의 VPC 탭에 들어가서 해당 인스턴스에 방화벽 규칙을 0.0.0.0/0 으로 TCP/UDP 다 열고, 우분투면 iptables 열거나 혹은 귀찮으면 ufw 설치해서 해당 포트들을 allow 해준다.
VM이나 WSL 같은 다른 우분투 유저는 자신의 공유기에 맞게 열면 된다 (해당 노드로의 포트포워딩이 필요하다).

2️⃣ rr.img 준비
root 기준으로 작성한다.
mkdir -p ~/DSM7
해서 폴더 만들고, 이제 여기에 rr.img를 배치해야한다.
🔗 https://github.com/RROrg/rr/releases
이 깃허브에 가서 릴리즈 탭에 보면 rr-26.6.1.img.zip 이 있다. 하지만 편의상 구버전을 사용한다.
wget https://github.com/RROrg/rr/releases/download/26.4.0/rr-26.4.0.img.zip
wget 명령어를 이용해서 클론하자.

zip 형태로 받아져서 unzip 한다.

3️⃣ docker-compose.yml 작성
이 프로젝트 폴더에서 다음 명령어로 파일을 연다.
vi docker-compose.yml
다음 코드를 작성한다.
📄 docker-compose.yml (열기)
services:
rr:
image: qemux/qemu:latest
container_name: rr_xpenology_1
environment:
RAM_SIZE: "4G"
CPU_CORES: "2"
DISK_FMT: "qcow2"
DISK_TYPE: "sata"
DISK_SIZE: "100G"
ARGUMENTS: "-device nec-usb-xhci,id=usb0 -drive file=/rr.img,if=none,id=rr_disk,format=raw -device usb-storage,bus=usb0.0,drive=rr_disk,bootindex=1 -netdev user,id=net0,hostfwd=tcp::7681-:7681,hostfwd=tcp::5000-:5000,hostfwd=tcp::5001-:5001,hostfwd=tcp::22-:22 -device e1000,netdev=net0"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 5000:5000
- 5001:5001
- 2222:22 # 외부 2222번 포트를 컨테이너의 22번(SSH)으로 연결
- 7683:7681
- 7305:7304
- 7081:7080
- 8007:8006
volumes:
- ./rr.img:/rr.img
- ./data:/storage
restart: always
stop_grace_period: 2m
코드에서 램, CPU, 디스크 사이즈는 자기 스펙에 맞게 조절한다.
4️⃣ 도커 설치
근데 도커를 안 깔았다고?
🐳 우분투 기준 도커 설치 스크립트 (열기)
apt remove -y docker-compose
pip uninstall -y docker docker-compose urllib3 requests
apt update
apt install -y ca-certificates curl gnupg
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker compose version
# v5.0.1 이상
service docker start
5️⃣ 인스턴스 기동
인스턴스 띄워준다.
docker compose up -d
그리고 리스닝 포트 확인한다.

핵심은 7683, 8007, 5000이 올라와 있어야한다.
6️⃣ 부트로더 빌드 & 부팅
준비됐다면 공인아이피:7683 포트로 들어간다.
혹은 내부망의 VMware나 WSL이면 알아서 해당 게스트의 7683으로 들어간다.

다음을 순서대로 정확히 따라한다.
- m. Choose a model
- DS920+
- n. Choose a version
- 7.0 → 7.0.1-42218-0
- d. Build the loader
- g. Boot the loader
다 하면 부트로더 인스턴스 화면으로 들어오게 되는데 대충 확인하고 꺼준다. 그리고 안전을 위해 7683을 닫아준다.
8007 포트로 들어가서 로더(커널)의 부팅 여부만 확인한다.
(반복적인 재부팅이 안 일어나고 사진처럼 고정되어야한다)
(혹여 무한 재부팅이 일어나면 걍 다 지우고 처음부터 다시 실행)
docker system prune -a --volumes -f



이후엔 공인아이피:5000 으로 들어간다.

시놀로지 웹에서 pat 자동으로 받도록 하고,
이 이후는 이전 포스트와 내용이 동일하므로 생략한다.
💡 추가 팁: 비밀번호 규칙 우회
DSM7 부터는 synology 계정의 password를 대문자, 소문자, 숫자, 특문을 무조건적으로 섞도록 해야 계정이 생성되는데, 혼자만 쓰는 나스에 이런 규칙은 너무 가혹하다.
그래서 내가 docker-compose.yml 파일에 2222:22를 걸어둔 것인데, 인스턴스 터미널에서
ssh -p2222 생성한시놀로지계정명@localhost
해서 만든 비번으로 들어간 후에
sudo synouser --setpw 생성한시놀로지계정명 만들고싶은pw
으로 초간단 비번으로 바꿀 수 있다.
🔚 마치며
이렇게 클라우드에 나스를 개설하고 나면, 클라우드 비용이 넘쳐나는 사람은 뭐 평생 고용량으로 써도 상관없지만, 일단 가벼운 스펙으로 올려놓고 운영하다보면
나처럼 리눅스 ↔ 핸드폰 ↔ 데스크톱(윈도우) 간에 파일 이동이 잦은 경우, scp가 손에 익었음에도 핸드폰으로 옮기는 게 드럽게 힘든 경우, 스팀덱, UMPC, 미니PC 등에 빠르게 자료를 주고받고 옮기는 데 있어서
이만한 방법이 없다.
추가적으로 도메인 설정법(A레코드 위주), HTTPS(SSL/TLS) 설정법, 생성된 도메인을 기반으로 한 다운로드 공유 링크 생성법이 남아있지만 본 포스팅에선 생략하겠다.
질문은 언제나 환영 🙌
🛰️ 서버맨의 공간들
'Network > 가상 NAS' 카테고리의 다른 글
| NAS(Network Attached Storage) 나스 개념잡고 구축하기 [PART8] - 마무리 (0) | 2023.01.16 |
|---|---|
| NAS(Network Attached Storage) 나스 개념잡고 구축하기 [PART7] - 진짜 구축편 (0) | 2023.01.15 |
| NAS(Network Attached Storage) 나스 개념잡고 구축하기 [PART6] - 진짜 구축편 (2) | 2023.01.12 |
| NAS(Network Attached Storage) 나스 개념잡고 구축하기 [PART5] (1) | 2022.12.28 |
| NAS(Network Attached Storage) 나스 개념잡고 구축하기 [PART4] (0) | 2022.12.17 |