Running Sia on a Synology NAS via Docker

Michael Lynch

Docker를 사용해 Synology NAS에서 Sia 실행하기

개요

Sia는 컴퓨터 저장 공간을 사고파는 탈중앙화 P2P 네트워크입니다. 여분의 저장 공간이 있다면 Sia를 통해 파일을 Sia 클라우드 네트워크에 저장하려는 다른 사용자에게 그 공간을 판매할 수 있습니다.

개인 노트북이나 데스크톱에서 Sia 서버를 호스팅하는 일은 쉽지 않습니다. 사람들은 보통 개인 컴퓨터를 일정 시간 꺼 두거나, 적어도 정기적으로 재부팅하기 때문입니다. Sia처럼 네트워크상의 클라이언트에 서비스를 제공하려면 높은 가동률을 유지해야 하는 애플리케이션에는 이것이 문제가 됩니다.

편리한 해결책은 네트워크 연결 스토리지(NAS) 장치에서 Sia를 실행하는 것입니다. NAS는 항상 전원이 켜져 있도록 설계되었고 재부팅할 필요도 거의 없습니다. 게다가 NAS의 핵심 목적은 많은 저장 공간을 제공하는 것이므로, 남는 공간이 충분할 가능성이 큽니다. 많은 상용 NAS 장치는 Sia를 실행할 수 있는 가상화 도구인 Docker를 지원합니다.

이 가이드에서는 Docker를 사용해 NAS 장치에 Sia 서버를 설정하는 방법을 설명하겠습니다.

왜 호스팅해야 할까?

Sia를 처음 접한 사람들은 흔히 이렇게 묻습니다. “Sia에서 호스팅하면 돈을 많이 벌 수 있나요?” 솔직히 말하면 아직 Sia에서 저장 공간을 호스팅하는 일은 수익성이 높지 않습니다… 아직은요.

SiaHub 스크린샷

저장 공간 임대 시장은 아직 임계 규모에 도달하지 못했습니다. 제가 가장 좋아하는 Sia 호스트 탐색기인 SiaHub에 따르면 Sia 네트워크의 전체 저장 용량은 2017년 5월 25일 기준 무려 1.1페타바이트입니다. 그중 임대된 용량은 2%에 불과합니다. 공간이 이렇게 남아도는 상황에서는 호스트가 가격을 거의 0에 가깝게 책정하지 않는 한 저장 공간을 판매할 수 없습니다.

그러니 아직 돈이 쏟아져 들어오지는 않습니다. 그래도 참여해 볼 만한 이유가 몇 가지 있습니다.

임대 시장이 성공했을 때 유리한 위치

Storj 같은 경쟁 서비스와 달리 Sia는 가정용 사용자가 아니라 기업 고객에게 저장 공간을 판매하는 것을 목표로 합니다. 현재까지 Sia에 크게 의존하는 대기업은 없지만, 중견기업이나 대기업 한 곳이라도 Sia를 스토리지 백엔드로 사용하기 시작한다면 시장이 완전히 활성화될 수 있습니다.

사용자가 Sia에서 저장 공간을 구매하면 호스트 선택 알고리즘은 네트워크에 더 오래 참여한 호스트를 크게 우대합니다. 즉, 구매 열풍이 불어닥치면 수개월 동안 안정적인 이력을 쌓은 호스트가 네트워크에 새로 참여한 호스트보다 훨씬 유리합니다.

재미있습니다

저는 그저 새로운 것을 실험해 보려고 호스팅합니다. 호스트 가격을 조정하고 그에 따라 받는 저장 계약 수가 어떻게 달라지는지 지켜보는 일이 재미있습니다. Sia 덕분에 다른 Sia 사용자들로 이루어진 열정적인 커뮤니티와도 인연을 맺었습니다.

소프트웨어 버전

이 가이드에서는 작성 당시 각 소프트웨어 구성 요소의 최신 버전을 사용합니다.

Synology DS412+ NAS 장치

  • DiskStation Manager(DSM) 6.1.2-15132
  • Sia v.1.3.4
  • Docker v.1.11.2

이 가이드는 Synology DSM 시스템을 기준으로 작성했지만, Docker와 관련된 단계는 Docker를 지원하는 모든 플랫폼에 적용할 수 있습니다.

Synology DS412+에서 이 구성을 성공적으로 테스트했습니다. 하지만 최신 DSM과 충분한 CPU 및 RAM을 갖춘 Synology NAS라면 어떤 제품에서도 이 단계가 작동할 것입니다. QNAP NAS처럼 기능이 충분한 다른 소비자용 NAS에도 이 지침을 적용하는 일은 어렵지 않을 것입니다.

NAS 구성

Docker 설치

먼저 Docker를 설치합니다.

Docker는 DSM에서 사용할 수 있는 몇 안 되는 Synology 배포 공식 패키지 중 하나입니다. Package Center에서 docker를 검색한 다음 “Install”을 클릭해 찾을 수 있습니다.

Docker 패키지 설치

Sia 디렉터리 만들기

다음으로 Sia 전용 Shared Folder를 만듭니다. 이 폴더에는 암호화된 지갑 파일과 블록체인 데이터베이스를 비롯해 Sia의 모든 상태 정보가 저장됩니다.

File Station에서 새 Shared Folder를 만들고 이름을 “sia”로 지정합니다.

새 공유 폴더 만들기

DiskStation에 SSH 액세스 활성화

Sia용으로 미리 패키징된 Docker 이미지가 없으므로 Docker 이미지를 정의하는 Dockerfile을 만들어야 합니다. DSM Docker 앱은 Dockerfile에서 이미지를 생성하는 기능을 지원하지 않으므로 명령줄을 통해 이 작업을 수행합니다.

이 기능을 활성화하려면 Control Panel > Terminal & SNMP를 열고 “Enable SSH service” 옆의 확인란을 선택합니다.

Docker 패키지 설치

Docker 컨테이너 만들기

네트워크상의 다른 컴퓨터에서 SSH를 통해 NAS에 연결합니다. Linux와 OS X 사용자는 터미널에서 다음 명령을 실행하면 됩니다. Windows 사용자는 Cygwin 같은 SSH 클라이언트가 필요합니다.

ssh admin@diskstation

SSH를 통해 NAS에 연결한 뒤 다음 명령을 실행합니다.

# NOTE: Replace 10.0.0.101 with the IP address of your Synology NAS on your
# local network.
LOCAL_IP=10.0.0.101

# Create a Docker container based on the Sia image and start running it in the
# background.
sudo docker run \
  --detach \
  --volume /volume1/sia:/sia-data \
  --publish "${LOCAL_IP}:9980:9980" \
  --publish 9981:9981 \
  --publish 9982:9982 \
  --restart always \
  --name sia-container \
  nebulouslabs/sia

앞의 명령은 다음 작업을 수행합니다.

  • 제가 만든 비공식 Sia Docker 이미지를 다운로드합니다.
  • 이미지에서 Docker 컨테이너를 만들고 백그라운드에서 실행합니다.
  • NAS(Docker 호스트)의 9980~9982 포트로 들어오는 트래픽을 Sia 컨테이너 내부의 동일한 포트 번호로 전달합니다.
    • 중요: 9980 포트는 로컬 네트워크 인터페이스에만 바인딩하고, 나머지 포트는 별도 지정 없이 모든 인터페이스에 바인딩한다는 점에 유의하세요. 이는 보안 조치입니다. 9980 포트에서 siad와 통신할 수 있는 사람은 호스트를 완전히 제어할 수 있으며, 예를 들어 지갑을 비울 수도 있습니다. 네트워크에서 이 포트가 외부에 노출되지 않는다면 반드시 필요한 조치는 아니지만, 어쨌든 유용한 예방책입니다.
    • 제 NAS의 IP 주소는 10.0.0.101입니다. 로컬 네트워크의 다른 컴퓨터에서 dig diskstation +short 명령을 실행하면 NAS의 IP 주소를 확인할 수 있습니다.

정상 실행 여부 확인

DSM에서 Docker 앱을 열고 “Container” 패널을 확인합니다. 다음과 비슷한 화면이 표시되어야 합니다.

실행 중인 Sia 컨테이너

앞에서 만든 “sia” Shared Folder를 열면 siad가 여러 폴더를 만든 것을 확인할 수 있습니다.

Sia가 생성한 폴더

Sia 구성

상태 확인

명령줄 클라이언트인 siac을 사용해 Sia 데몬에 연결해 보겠습니다.

NAS에서 siad가 실행 중이면 로컬 네트워크의 다른 컴퓨터에서도 통신할 수 있습니다. 해당 컴퓨터에는 최신 Sia 릴리스가 설치되어 있어야 합니다.

siac 바이너리를 컴퓨터에 복사한 뒤에는 addr 매개변수에 NAS의 호스트 이름을 지정해 siac 명령을 실행할 수 있습니다.

# DISKSTATION is the hostname of the NAS on my local network, the default for
# Synology NAS devices.
$ ./siac --addr DISKSTATION:9980
Synced: No
Block:  0000000001ac2429ee234370ddf139ce87161277eded4bd58bcd31c5e5e2554f
Height: 727
Target: [0 0 0 0 12 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204 204]

호스트 저장 공간 추가

다른 Sia 사용자에게 판매할 저장 공간을 만들려면 “sia” 공유 폴더 안에 host-storage라는 전용 하위 디렉터리를 만듭니다.

Sia 저장 공간 폴더

그런 다음 siac을 사용해 해당 폴더를 새로운 Sia 호스트 저장 폴더로 추가합니다.

./siac --addr DISKSTATION:9980 host folder add /sia-data/host-storage 500GB

/sia-data/host-storage데몬의 관점, 즉 Docker 컨테이너 내부에서 본 경로이며 siac의 관점에서 본 경로가 아니라는 점에 유의하세요.

방화벽에서 Sia 허용

Sia는 99819982 포트를 통해 원격 피어와 통신해야 합니다. 가정용 라우터를 사용한다면 이 포트들을 Synology NAS로 전달하도록 라우터를 구성합니다. 정확한 절차는 라우터마다 다르지만 대략 다음과 같은 형태입니다.

참고: 10.0.0.101을 Synology NAS의 IP 주소로 바꾸세요.

방화벽 설정

9980 포트는 Sia의 API 통신용 포트이므로 노출해서는 안 됩니다. 이 포트를 공용 인터넷에 노출하면 Sia 호스트가 침해될 위험이 있습니다.

Sia 업그레이드 방법

Sia는 아직 새로운 기술이며, 몇 달에 한 번씩 중요 릴리스가 나옵니다. 임차인은 서버 버전을 기준으로 파일 계약을 체결할 호스트를 결정하므로, 새 릴리스가 나오면 곧 업그레이드하는 편이 좋습니다.

이 가이드를 그대로 따랐다면 Sia의 모든 상태 정보가 Docker 컨테이너 외부에 저장되므로, Sia 지갑이나 저장 계약에 영향을 주지 않고 안전하게 업그레이드할 수 있습니다.

  1. admin으로 NAS에 SSH 접속합니다.

    ssh admin@diskstation
  2. 다음 명령을 실행합니다.

    # Gracefully shut down Sia
    sudo docker exec -it sia-container ./siac stop
    
    # Remove the old container.
    # NOTE: If Docker says the container is still running, wait a few minutes to
    # allow siad to finish shutting down gracefully and re-try this command.
    # It may take up to 10 minutes.
    sudo docker rm sia-container
    
    # Upgrade to the latest Sia Docker image
    sudo docker pull nebulouslabs/sia
    
    # NOTE: Replace 10.0.0.101 with the IP address of the Synology NAS on your
    # local network.
    LOCAL_IP=10.0.0.101
    
    # Re-create the Docker container.
    sudo docker run \
      --detach \
      --volume /volume1/sia:/sia-data \
      --publish "${LOCAL_IP}:9980:9980" \
      --publish 9981:9981 \
      --publish 9982:9982 \
      --restart always \
      --name sia-container \
      nebulouslabs/sia

이 과정을 완료하면 최신 버전의 Sia가 실행되는 새로운 Sia Docker 컨테이너를 갖게 됩니다.

맺음말

이제 NAS가 실행 중인 동안 계속 온라인 상태를 유지하는 작동 가능한 Sia 노드를 갖추었습니다.

이 구성에서는 Sia의 영구 상태 정보가 모두 컨테이너 외부에 저장되므로, 새 릴리스가 공개될 때 Sia 노드를 쉽게 업그레이드할 수 있습니다.

추가 읽을거리

이 가이드에서는 호스트를 실행하는 방법을 설명했지만, 호스트를 구성하고 수익을 극대화하도록 최적화하려면 더 해야 할 일이 있습니다. Sia 커뮤니티 회원인 RBZL이 훌륭한 가이드를 작성했습니다.

원문은 Michael Lynch님이 에 게재했습니다.

이 글은 gpt-5.6-luna 모델을 사용해 번역했습니다.