Create Your Own Low-Cost Cloud Storage App with Sia and Nextcloud

Michael Lynch

Sia와 Nextcloud로 저비용 클라우드 스토리지 앱 직접 만들기

오늘 글에서는 Dropbox나 Google Drive와 비슷한 클라우드 스토리지 웹 앱을 직접 구축하는 방법을 소개합니다. 비용은 훨씬 더 저렴합니다. 이 솔루션을 이용하면 TB당 월 약 0.60달러에 클라우드 스토리지를 이용할 수 있습니다. 비교하자면 같은 용량을 Dropbox에서는 월 8.25달러, Google Drive에서는 월 10달러에 제공합니다.

완료된 Nextcloud 설치

영상 튜토리얼

이 가이드의 전 과정을 단계별로 따라가고 최종 결과를 보여주는 스크린캐스트를 만들었습니다. 블로그 글과 동일한 결과를 얻을 수 있지만, 블로그 글에서는 가능한 한 명령줄을 사용하는 반면 영상에서는 GUI에서 더 많은 설정을 진행합니다.

영상 튜토리얼을 선호하신다면 아래 “Docker용 파일과 폴더 만들기” 섹션의 파일들을 다운로드한 뒤 영상을 따라 진행하시기 바랍니다.

요구 사항

이 가이드는 중급 사용자를 대상으로 합니다. Docker 컨테이너나 가상 머신을 다뤄본 경험이 없거나 명령줄 사용이 익숙하지 않다면 이 가이드를 따라가기 어려울 수 있습니다.

고생 좀 하게 될 겁니다

영상 데모에서는 Windows 10을 사용했지만, 이 튜토리얼은 시스템에 관계없이 적용됩니다. 아래 단계는 Docker를 지원하는 모든 64비트 운영 체제에서 동작하며, 여기에는 Windows, Mac OS X, Linux는 물론 일부 네트워크 스토리지 장치도 포함됩니다.

이 가이드를 완료하려면 다음이 필요합니다.

  • 최소 500 Siacoin(SC)
  • 6GB의 여유 디스크 공간, 가능하면 솔리드 스테이트 드라이브(SSD)에
  • 시스템에 설치된 Docker Community Edition(무료)

소요 시간

이 가이드의 단계는 직접 작업하는 시간으로 약 20분이 소요됩니다. 하지만 설치 과정 중 Sia가 처리를 완료할 때까지 수 분에서 수 시간 기다려야 하는 구간이 있어 전체 소요 시간은 3~4시간입니다.

  • Docker 컨테이너 생성: 5분
  • Sia 설정: 직접 작업 10분, 전체 3~4시간
  • Nextcloud 설정: 5분

솔루션 구성 요소

Sia

Sia 로고

이 솔루션에서는 웹 앱의 백엔드 스토리지로 Sia를 사용합니다. Sia에 대해서는 이전에 여러 글을 작성했을 정도로 제가 가장 좋아하는 신기술 중 하나입니다. Sia는 탈중앙화 파일 스토리지 네트워크입니다. 사용자는 Sia에 연결해 사용하지 않는 디스크 공간을 임대하여 수익을 얻을 수 있습니다. 현재 Sia 네트워크의 가격은 매우 저렴하기 때문에 이처럼 저렴한 비용으로 클라우드 스토리지 솔루션을 구축할 수 있습니다.

Nextcloud

Sia를 잘 아신다면 Sia가 Sia-UI라는 자체 그래픽 사용자 인터페이스를 제공한다는 사실도 아실 겁니다. 이 UI는 기능이 제한적입니다. 가장 큰 단점은 데스크톱 앱이라는 점으로, 단일 컴퓨터에서만 파일에 접근할 수 있다는 것입니다. 미디어 보기 기능도 지원하지 않아 클라우드 스토리지 안의 사진이나 영상을 보려면 파일을 로컬 컴퓨터의 폴더로 복사한 뒤 복사본을 열어야 합니다.

Nextcloud 로고

Sia-UI의 한계를 극복하기 위해 이 튜토리얼에서는 Nextcloud를 사용합니다. Nextcloud는 오픈소스 클라우드 스토리지 웹 앱입니다. Dropbox나 Google Drive와 유사한 웹 인터페이스를 제공합니다. Nextcloud는 Amazon S3, Dropbox, OpenStack 등 다양한 스토리지 제공자와 호환되도록 설계되었습니다. 2017년 2월, Sia 팀은 Nextcloud를 Sia와 연결하는 맞춤 플러그인을 작성했으며, 이 튜토리얼에서는 해당 플러그인을 사용합니다.

Nextcloud를 미리 체험해보고 싶다면 Nextcloud 웹사이트에서 무료 즉시 데모를 이용해 볼 수 있습니다.

Docker

Docker 로고

Nextcloud는 데이터베이스와 웹 서버, 여러 서드파티 소프트웨어 라이브러리가 필요해 설치가 까다롭습니다. 번거로운 설치 과정을 일일이 거치는 대신 이 튜토리얼에서는 Docker로 전체 설정을 처리합니다.

Docker를 이용하면 개발자는 앱을 ‘컨테이너’로 구축할 수 있습니다. Docker에서 컨테이너란 앱이 실행에 필요한 모든 구성 요소에만 접근할 수 있는 격리된 환경을 의미합니다. 이 가이드에서는 Sia와 Nextcloud용 컨테이너를 만들고 docker-compose라는 기능을 이용해 두 컨테이너를 연결해 서로 통신할 수 있도록 합니다.

Docker 컨테이너 설정

Docker용 파일과 폴더 만들기

시작하려면 이 솔루션을 위한 디렉터리를 만들고 필요한 파일들을 모두 다운로드합니다.

  1. sia-nextcloud라는 디렉터리를 만듭니다. 이 폴더 안에 전체 블록체인을 다운로드하므로 최소 6GB의 여유 공간이 있는 드라이브에 만드십시오.
  2. 아래 세 파일을 sia-nextcloud 디렉터리에 다운로드합니다.
  3. sia-nextcloud 안에 sia-datasia-uploads 두 디렉터리를 만듭니다.

파일들을 다운로드하고 필요한 폴더를 만든 뒤 디렉터리 구조는 다음과 같아야 합니다.

sia-nextcloud/
  sia-data/
  sia-uploads/
  docker-compose.yml
  Dockerfile.nextcloud
  Dockerfile.sia

아래에는 각 파일의 전체 내용과 각 파일이 하는 일에 대한 간략한 설명을 포함했습니다.

docker-compose.yml

version: "3"
volumes:
  nextcloud-data:
services:
  sia:
    build:
      context: .
      dockerfile: Dockerfile.sia
    restart: on-failure
    ports:
      - "9980:9980"
    volumes:
      - ./sia-data:/mnt/sia-data
      - ./sia-uploads:/mnt/sia-uploads
  nextcloud:
    build:
      context: .
      dockerfile: Dockerfile.nextcloud
    ports:
      - "8080:80"
    links:
      - sia:siad_container
    volumes:
      - ./sia-uploads:/mnt/sia-uploads
      - nextcloud-data:/var/www/html

docker-compose.yml 다운로드

이 파일은 웹 앱의 상위 수준 아키텍처를 정의합니다. Docker에게 Sia와 Nextcloud 컨테이너를 로드하는 방법과 컨테이너가 서로 통신하는 데 필요한 설정 옵션을 알려줍니다.

이 설정은 컨테이너 내부의 포트를 로컬 머신의 포트에 매핑합니다. 따라서 9980:9980이라는 줄은 로컬 머신의 9980번 포트를 Sia 컨테이너 내부의 9980번 포트로 포워딩합니다. 이를 통해 Sia 컨테이너 외부의 앱이 내부의 Sia 서버와 통신할 수 있습니다. 마찬가지로 8080:80은 로컬 머신의 8080번 포트를 컨테이너의 웹 서버 포트인 80번 포트로 포워딩합니다. 80번 포트는 대부분의 시스템에서 권한이 필요한 포트라 접근에 특별한 권한이 필요하기 때문에 8080을 선택했습니다.

이 설정은 또한 Docker 스토리지 볼륨을 구성해 컨테이너가 파괴되더라도 데이터를 유지할 수 있도록 합니다. ./sia-data:/mnt/sia-data는 Sia 컨테이너가 위에서 만든 sia-data/ 폴더에 접근할 수 있게 합니다. 컨테이너 내부에서는 해당 경로가 /mnt/sia-data로 표시됩니다. ./sia-uploads:/mnt/sia-uploads 줄도 비슷한 역할을 합니다.

Sia와 Nextcloud는 단일 파일 시스템을 가진 동일한 시스템에서 실행될 것을 전제로 합니다. 이 튜토리얼의 아키텍처에서는 두 서비스가 독립적인 파일 시스템을 가진 서로 다른 시스템에 있지만, 두 컨테이너 설정 모두에 있는 sia-uploads 관련 줄 덕분에 업로드용 경로를 공유할 수 있으며, 이것만으로 충분합니다.

마지막으로 nextcloud-data:/var/www/html은 Nextcloud가 nextcloud-data라는 이름의 Docker 볼륨에 설정 정보를 유지할 수 있게 합니다. 이를 통해 Nextcloud 컨테이너를 재시작해도 처음부터 다시 설정할 필요가 없습니다.

Dockerfile.sia

FROM debian:jessie-slim

ENV SIA_VERSION 1.3.2
ENV SIA_PACKAGE Sia-v$SIA_VERSION-linux-amd64
ENV SIA_ZIP ${SIA_PACKAGE}.zip
# Choose a binary release of Sia.
ENV SIA_RELEASE https://github.com/NebulousLabs/Sia/releases/download/v$SIA_VERSION/$SIA_ZIP
# Choose the directory within the container where Docker will place Sia.
ENV SIA_DIR /opt/$SIA_PACKAGE

RUN apt-get update && apt-get install -y \
  socat \
  wget \
  unzip

# Download and install Sia.
RUN wget $SIA_RELEASE
RUN unzip $SIA_ZIP -d /opt

# Make the Sia ports available to the Docker container's host.
EXPOSE 9980 9981

# Configure the Sia daemon to run when the container starts.
# Specify the Sia directory as /mnt/sia so that you can view these files outside
# of Docker.
WORKDIR $SIA_DIR
ENTRYPOINT socat tcp-listen:9980,reuseaddr,fork tcp:localhost:8000 & ./siad --modules gctwr --sia-directory /mnt/sia-data --api-addr localhost:8000

Dockerfile.sia 다운로드

Sia용 Dockerfile입니다. 최소한의 Debian Jessie 빌드를 기반으로 Docker 컨테이너를 생성합니다. 그런 다음 최신 Sia 릴리스(이 글을 쓰는 시점 기준 1.3.2)를 다운로드해 압축을 풀고 Sia 서버 데몬인 siad를 실행합니다. --modules gctwr 플래그는 Sia 스토리지를 임대하는 데 필요한 Sia 모듈만 로드합니다. --sia-directory /mnt/sia-data 플래그는 Sia가 docker-compose.yml에서 지정한 영구 볼륨을 사용하도록 합니다.

이 Dockerfile에서 혼란스러울 수 있는 부분은 socat--api-addr localhost:8000 플래그의 존재입니다. 최선을 다해 노력했음에도 Sia 개발자들은 Docker 시나리오를 망가뜨림에도 불구하고 siad가 localhost가 아닌 포트에 바인딩되는 것을 허용하지 않습니다. 우회 방법으로 이 튜토리얼에서는 Sia가 localhost:8000에 바인딩되도록 설정합니다. 그런 다음 socat이 localhost가 아닌 9980번 포트에 바인딩되어 트래픽을 localhost:8000으로 포워딩합니다. 다소 어색한 방법이지만 동작합니다.

Dockerfile.nextcloud

FROM nextcloud:12.0.0-apache

EXPOSE 80

Dockerfile.nextcloud 다운로드

이 파일은 Nextcloud가 자체 Dockerfile을 제공하므로 간단합니다. 제가 추가한 것은 80번 포트에서 수신 대기하는 한 줄뿐입니다.

컨테이너 실행

Docker 파일과 폴더가 준비되었으면 컨테이너를 실행할 준비가 된 것입니다. 명령 프롬프트에서 sia-nextcloud 디렉터리로 cd 이동한 뒤 아래 명령을 입력하십시오.

docker-compose up -d

컨테이너 상태를 확인하려면 logs 명령을 사용하십시오.

docker-compose logs

Sia 로딩이 끝나면 로그에 다음과 같은 순서가 표시됩니다.

sia_1        | Loading...
sia_1        | (0/5) Loading siad...
sia_1        | (1/5) Loading gateway...
sia_1        | (2/5) Loading consensus...
sia_1        | (3/5) Loading transaction pool...
sia_1        | (4/5) Loading wallet...
sia_1        | (5/5) Loading renter...
sia_1        | Finished loading in 0.7577895 seconds

컨테이너 안에서 siac를 실행하면 Sia가 Sia 네트워크와 블록체인 동기화를 시작했음을 알 수 있습니다.

docker exec -it sianextcloud_sia_1 ./siac consensus
Synced: No
Height: 730
Progress (estimated): 0.6%
선택 사항: 이 시점에서 로컬 머신에서 Sia-UI를 실행하여 Docker 컨테이너의 Sia 서버가 하는 일을 그래픽으로 확인할 수 있습니다. Sia-UI는 보통 자체 Sia 서버 인스턴스를 실행하지만, 포트 9980에서 수신 대기 중인 기존 Sia 인스턴스를 감지하면 대신 해당 서버에 연결합니다. Sia-UI는 Sia의 활동을 더 시각적으로 보여주지만 이 튜토리얼에서는 완전히 선택 사항입니다.

Sia 설정

선택 사항: 블록체인 동기화 속도 높이기

Sia를 사용하려면 먼저 전체 블록체인을 다운로드해야 하는데, 이 과정은 완료까지 1~3일이 걸릴 수 있습니다. 아래에 동기화 시간을 30~60분으로 단축하는 선택적 우회 방법을 제공했습니다. Sia가 자체적으로 동기화되기를 기다리려면 이 단계를 건너뛰고 다음 섹션으로 진행하십시오.

블록체인 동기화 우회 방법을 적용하려면:

  1. Docker 컨테이너를 종료합니다.
# Tell Sia to shut down gracefully.
docker exec -it sianextcloud_sia_1 ./siac stop
# Give Sia a few seconds to shut down gracefully.
sleep 5
# Stop the Docker containers.
docker-compose down
  1. 최신 SiaStats 스냅샷에서 Sia consensus.db 파일을 다운로드합니다.
  2. consensus.db 파일을 sia-nextcloud/sia-data/consensus/consensus.db에 복사합니다(기존 파일을 덮어씁니다).
  3. Docker 컨테이너를 다시 시작합니다.
docker-compose up -d
  1. 컨테이너 로그를 주기적으로 확인해 Sia가 새로운 블록체인 처리를 마치고 로딩을 완료할 때까지 기다립니다.
docker-compose logs

Sia 로딩이 끝나면 로그에 다음과 유사한 메시지가 표시됩니다.

sia_1        | Finished loading in 0.7577895 seconds

테스트 결과 이 과정은 SSD에서 50분이 걸렸습니다. 하드 디스크 드라이브(HDD)에서 Sia를 실행 중이라면 몇 시간이 걸립니다.

블록체인 동기화 완료

이제 Sia가 블록체인 동기화를 마칠 때까지 기다려야 합니다. 아래 명령을 주기적으로 실행해 상태를 확인할 수 있습니다.

docker exec -it sianextcloud_sia_1 ./siac consensus

Sia가 동기화되면 출력에서 Synced: Yes가 표시됩니다. 예시는 다음과 같습니다.

Synced: Yes
Block:      000000000000000fdd4d3b48b096e048ad78f8f4fb88d21a025cd5411950e57e
Height:     117094
Target:     [0 0 0 0 0 0 0 80 208 66 215 153 200 154 90 98 77 172 145 117 174 173 42 79 94 33 89 166 121 200 173 209]
Difficulty: 228263093718558163

Siacoin으로 지갑 충전

다음으로 Docker 컨테이너 안에 Siacoin 지갑을 만들고 최소 500 SC를 보내야 합니다.

경고: 기존 Sia 지갑 시드가 있다면 다른 지갑이 실행 중인 동안 Docker 컨테이너에서 같은 시드를 재사용하지 마십시오. 동일한 시드로 두 지갑을 동시에 실행하면 Sia의 동작이 정의되지 않습니다.

새 Sia 지갑을 만들려면 아래 명령을 입력하십시오.

docker exec -it sianextcloud_sia_1 ./siac wallet init

Sia는 ‘지갑 시드’라고 하는 29단어 암호구를 생성해 콘솔에 표시합니다. 예시 출력은 다음과 같습니다.

guru delayed kidneys viewpoint rover request negative september number yodel aggravate
reheat soapy incur update later bimonthly bacon unusual godfather usher tiers pencil
ultimate vivid unsafe farming costume agile

Wallet encrypted with password:
guru delayed kidneys viewpoint rover request negative september number yodel aggravate
reheat soapy incur update later bimonthly bacon unusual godfather usher tiers pencil
ultimate vivid unsafe farming costume agile

이 시드는 Siacoin 잔액에 대한 접근을 제어하므로 안전한 곳에 복사해 두고 절대 온라인에 게시하지 마십시오. Sia는 시드 뒤에 동일한 비밀번호를 표시해 혼란을 주는데, 많은 사용자가 놀라지만 이는 Sia의 의도된 동작입니다.

지갑을 만든 뒤에는 생성한 시드 암호구로 잠금을 해제해야 합니다. 아래 명령을 입력한 뒤 위에서 생성한 시드를 붙여 넣으십시오.

docker exec -it sianextcloud_sia_1 ./siac wallet unlock

마지막으로 새로운 Siacoin 지갑 주소를 생성합니다.

docker exec -it sianextcloud_sia_1 ./siac wallet address

생성한 지갑으로 최소 500 SC를 보내십시오. 보유한 Siacoin이 없다면 구매하거나 채굴할 수 있습니다.

렌터 계약 생성

Sia는 ‘렌터 계약’ 형태로 스토리지 공간을 미리 구매하도록 요구합니다. 아래 명령은 12주 동안의 스토리지에 대해 500 SC 규모의 계약 허용치를 생성합니다.

docker exec -it sianextcloud_sia_1 ./siac renter setallowance 500SC 12w

이 글을 쓰는 시점 기준으로 500 SC는 약 2TB의 스토리지를 구매할 수 있으므로 더 많은 스토리지가 필요하면 계약 금액을 늘리면 됩니다. Siacoin의 가치 변동과 더 많은 임차인 및 호스트가 시장에 진입함에 따라 가격은 시간이 지나며 변하지만, 계약 기간 동안 스토리지 가격은 보장됩니다.

참고: 렌탈 계약 생성에는 고정 비용이 들기 때문에 소규모 렌탈 계약에서는 구매하는 스토리지 양에 비례해 비용이 선형적으로 증가하지 않습니다. 즉, 2TB 비용을 10으로 나눠 50 SC로 200GB를 구매할 수는 없습니다. 계약 생성 자체 비용이 약 130 SC이기 때문입니다.

허용치를 생성하면 Sia가 스토리지 계약을 맺기 시작합니다. 이 과정은 완료까지 20~30분이 걸립니다. 다음 명령을 실행해 Sia가 맺은 계약 수를 확인할 수 있습니다.

docker exec -it sianextcloud_sia_1 ./siac renter contracts

Sia가 최소 20개의 계약을 생성하면 다음 단계로 진행하십시오.

Nextcloud 설정

이제 Sia가 데이터를 저장할 준비를 마쳤으므로 Nextcloud 컨테이너를 설정할 차례입니다.

Nextcloud는 명령줄이나 웹 UI를 통해 설정할 수 있습니다. 여기서는 명령줄 방식을 사용합니다. 웹 UI로 Nextcloud를 설정하려면 http://localhost:8080에 접속해 제 영상 튜토리얼의 13:44부터 나오는 단계를 따라 하십시오.

Nextcloud 설치

Nextcloud Docker 컨테이너를 로드하면 Nextcloud 파일은 컨테이너 안에 존재하지만 Nextcloud가 아직 설치된 상태는 아니므로, 첫 단계는 아래 명령으로 Nextcloud를 설치하는 것입니다.

docker exec --user www-data -it sianextcloud_nextcloud_1 ./occ maintenance:install --database "sqlite" --database-name "nextcloud"  --database-user "root" --database-pass "root" --admin-user "admin" --admin-pass "admin"

다음과 같은 메시지가 표시됩니다.

Nextcloud is not installed - only a limited number of commands are available
creating sqlite db
Nextcloud was successfully installed

위 예시 명령은 데이터베이스 자격 증명으로 root/root를, 웹 앱 자격 증명으로 admin/admin을 사용합니다. 가정 내 같은 신뢰할 수 있는 네트워크에 배포하는 경우 이러한 기본값을 사용해도 괜찮습니다. 인터넷에 공개된 서버에 이 시스템을 배포한다면 다른 안전한 자격 증명을 선택해야 합니다.

외부 스토리지 제공자 활성화

Sia는 Nextcloud에서 외부 스토리지 제공자 역할을 하므로 다음 명령을 입력해 외부 제공자에 대한 Nextcloud 지원을 활성화합니다.

docker exec --user www-data -it sianextcloud_nextcloud_1 php occ app:enable files_external

Sia Nextcloud 앱 설치

이제 Nextcloud의 Sia 앱을 설치할 차례입니다. 안타깝게도 명령줄로 Nextcloud 앱을 설치할 수는 없으므로 웹 브라우저에서 다음 단계를 수행해야 합니다.

참고: Nextcloud는 최근 명령줄에서 앱 설치를 수행하는 기능을 추가했습니다만, 해당 기능은 버전 13.0까지는 정식 릴리스에 포함되지 않을 것으로 보입니다.
  1. 브라우저에서 http://localhost:8080을 열어 Nextcloud 웹 앱에 접속합니다.
  2. “Nextcloud 설치” 단계에서 선택한 Nextcloud 웹 앱 자격 증명을 입력합니다. 기본 자격 증명을 사용했다면 admin/admin입니다.

    Nextcloud 로그인

  3. Nextcloud 홈 화면에서 오른쪽 상단의 톱니바퀴 아이콘을 클릭한 뒤 ‘앱’을 클릭합니다.

    Nextcloud 앱 버튼

  4. 왼쪽 메뉴에서 ‘도구’ 카테고리를 클릭합니다.

    Nextcloud 앱 버튼

  5. 아래로 스크롤해 ‘Sia storage report’ 앱을 찾은 뒤 그 아래의 ‘활성화’ 버튼을 클릭합니다.

    Nextcloud 앱 버튼

Sia 지원 설정

이 과정의 마지막 단계는 Sia Nextcloud 앱을 Sia 서버 인스턴스에 연결하는 것입니다. 이를 위해 아래 명령을 입력하십시오.

docker exec --user www-data -it sianextcloud_nextcloud_1 php occ files_external:create Sia sia null::null
docker exec --user www-data -it sianextcloud_nextcloud_1 php occ files_external:config 1 apiaddr siad_container:9980
docker exec --user www-data -it sianextcloud_nextcloud_1 php occ files_external:config 1 datadir /mnt/sia-uploads

Sia Nextcloud 연동이 완료되었습니다!

브라우저에서 Nextcloud의 파일 탭을 열면 Sia 폴더가 표시됩니다. Nextcloud는 이 폴더 안의 모든 파일을 자동으로 Sia 네트워크에 백업합니다.

Nextcloud Sia 폴더

Nextcloud와 함께 Sia 사용하기

파일 업로드 및 다운로드

Nextcloud의 Sia 폴더에 파일을 업로드하면 앱이 해당 파일을 튜토리얼 앞부분에서 만든 sia-uploads 폴더에 복사합니다. 그런 다음 Nextcloud는 해당 파일을 Sia 네트워크에 업로드해 백그라운드에서 백업을 생성합니다.

로컬 공간을 절약하려면 Sia에 완전히 업로드된 파일은 삭제해도 됩니다. 다음 명령으로 Sia가 완전히 백업한 파일을 확인할 수 있습니다.

docker exec -it sianextcloud_sia_1 ./siac renter -v
Renter info:
        Storage Spending:  1.449 SC
        Upload Spending:   48.65 mS
        Download Spending: 3.887 mS
        Unspent Funds:     217.7 SC
        Total Allocated:   219.2 SC

Tracking 8 files:
File size  Available  Progress  Redundancy  Renewing  Sia path
  5.60 MB  Yes          86.67%        2.60  Yes       08 Hospital Beds.mp3
143.12 MB  Yes         101.67%        3.00  Yes       Futurama - s01e08 - A Big Piece Of Garbage.mp4
175.37 MB  Yes         100.67%        3.00  Yes       Futurama - s01e09 - Hell Is Other Robots.mp4
  3.72 MB  Yes          56.67%        1.70  Yes       IMG_20170725_204611.jpg
  3.37 MB  Yes         100.00%        3.00  Yes       IMG_20170725_204704.jpg
  3.39 MB  Yes         100.00%        3.00  Yes       IMG_20170725_204727.jpg
  3.64 MB  Yes          96.67%        2.90  Yes       IMG_20170725_204928.jpg
  3.25 MB  Yes          63.33%        1.90  Yes       IMG_20170725_204944.jpg

중복도(Redundancy)가 3.0 이상인 파일은 sia-uploads에서 삭제해도 안전합니다.

sia-uploads에서 삭제한 파일을 다운로드하거나 보려고 하면 Sia Nextcloud 앱이 해당 파일을 자동으로 다시 다운로드해 로컬에서 사용할 수 있도록 합니다. 다만 파일 크기와 인터넷 속도에 따라 수 초에서 수 분이 걸릴 수 있습니다.

제한 사항

하위 폴더 미지원

Sia는 기본적으로 사용자가 업로드를 정리하기 위해 폴더를 만들 수 있도록 허용하지만, Sia Nextcloud 앱은 폴더 생성을 지원하지 않습니다. 웹 앱에서는 해당 옵션이 표시되지만 폴더를 추가하려고 하면 “Could not create folder.”라는 메시지만 표시됩니다.

앱 내 텍스트 편집 불가

Nextcloud 앱에는 클라우드 스토리지 폴더 안의 일반 텍스트 파일을 편집할 수 있는 기본 텍스트 편집기가 포함되어 있습니다. 안타깝게도 이는 Sia 폴더 안의 파일에서는 동작하지 않습니다. Sia 폴더 안의 텍스트 파일을 편집하려고 하면 Nextcloud에 수많은 오류 메시지가 표시되고 편집 내용도 저장되지 않습니다.

결론

이 튜토리얼에서는 Nextcloud 인스턴스를 직접 배포하고 Sia로 저비용 파일 백업을 추가하는 방법을 살펴보았습니다.

앞으로 몇 달 동안 점점 더 많은 앱이 Sia와 통합될 것으로 예상합니다. 며칠 전 Sia는 분산 오브젝트 스토리지 서버인 Minio와의 새로운 통합을 발표했습니다. 이 튜토리얼에서 사용한 기법은 다른 앱을 배포하고 Sia와 통합하는 데도 도움이 될 것입니다.

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

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.