개요
헤놀로지를 사용할 때는, (반출 금지 자료는 제외하고) 회사 자료를 시놀로지 드라이브로 동기화해서 편하게 보관하며 사용하고 있었습니다. 그러나, 헤놀로지 레이드가 깨지면서 데이터를 3번째 날려먹은 이후, TrueNAS로 이주정착하면서 시놀로지 드라이브를 대체할 앱을 찾아보기 시작했습니다. 성능이 괜찮은 동기화 앱으로 떠오른 후보는 2가지, Syncthing과 Bittorrent Sync(현 Resilio Sync)였습니다…만, 후자가 램 사용량이 너무 높고(레딧피셜), 유료이기도 해서 Syncthing을 선택했습니다.
검색하며 읽어본 여러 사용기를 통해 보자면, 시놀로지 드라이브는 파일 약 30만개가 넘어가면 동기화 이슈가 발생하기 시작하기 때문에 신뢰성이 떨어진다고 합니다. 이에 반해, Resilio Sync와 Syncthing은 이보다 훨씬 더 많은 파일 인덱싱을 지원하고 대역폭도 더 잘 뽑아주기 때문에, 시놀로지 유저라고 해도, 충분히 사용해볼 만한 가치가 있습니다(단, Resilio Sync는 시놀로지 공식 애드온 패키지를 통해 설치할 수 있지만, Syncthing은 공식 애드온은 없어 도커를 활용해야 합니다).
TrueNAS에 Syncthing 설치하기(서버)
TrueNAS는 Syncthing을 공식 카탈로그로 지원하고 있습니다. 저는 Truecharts 카탈로그도 추가해놓아서 두 개가 보이는데 TrueNAS 공식 버전으로 설치해 주시면 됩니다.
특별하게 입력해야 할 값은 없고, Host Network사용과
파일 및 폴더가 저장될 Dataset만 수동으로 지정해 주시면 됩니다.
설치가 다 완료되면 아래처럼 Apps목록에서 Syncthing을 확인할 수 있습니다. Web Portal을 클릭해서 GUI로 접근해 보겠습니다.
기본 설정대로 설치했다면 Web GUI 포트번호는 20910이며, 아래와 같이 초기화면을 확인할 수 있습니다.
초기 설정하기
기기명 설정
‘사용자 이름과 비밀번호를 설정하십시오’ 박스의 설정 버튼을 클릭하거나 우측의 동작 → 설정을 클릭해서 진입할 수 있습니다.
제일 먼저 보이는 ‘기기명’박스에서 Host명을 정해 줍니다. 이 글에선 ‘syncthing-test’로 정하겠습니다.
관리자 설정
기기명을 설정한 이후, GUI탭으로 이동하면 아래와 같은 박스를 확인할 수 있습니다.
이 곳에서, 사용자와 비밀번호를 설정한 뒤 저장을 클릭해 줍니다.
그러면, 그 즉시 아래와 같이 로그인 창으로 리다이렉트됩니다. 방금 설정한 계정으로 다시 로그인 합니다.
Windows에 Syncthing 설치하기(클라이언트)
우선 Windows용 클라이언트를 설치해야 합니다. Syncthing공식 홈페이지에서 링크를 타고 Github페이지에서 다운로드하실 수 있습니다.
이제부터 TrueNAS와 Windows용 Syncthing을 왔다갔다 하면서 설명해야 해서, 명칭이 많이 헷갈릴 수 있습니다..ㅠ_ㅠ
그래서, 편의상 TrueNAS의 Syncthing을 ‘서버’, Windows의 Syncthing을 ‘클라이언트’라고 호칭하겠습니다.
설치를 완료하고 나면, 서버에서 설정했던 것과 똑같은 페이지를 볼 수 있습니다.
동기화 대상 폴더 지정하기
우선, 클라이언트에서 폴더 추가를 진행해야 합니다. 보통의 경우, 동기화 하려는 폴더가 대상이 되겠죠.
저는 예시로, F드라이브의 usb_driver라는 폴더를 지정하겠습니다.
동기화 대상 폴더 서버와 연결하기
서버에서 우측 상단 동작 → 기기 식별자 보기를 클릭합니다.
그러면 아래와 같이 장문의 코드와 QR코드가 나타납니다. QR코드는 모바일 연동 시 편하게 사용하시면 되고, 우리는 장문의 코드를 복사해 클라이언트에서 연결해야 합니다.
다시 클라이언트로 돌아와, 메인 페이지의 우측 하단의 ‘다른 기기 추가’를 클릭해, 복사해온 서버의 식별자 코드와 저장할 기기명을 입력합니다.
다른 기기에 서버가 등록된 것을 확인했다면, 위에서 만들어둔 폴더의 ‘편집’을 클릭한 후, 방금 등록한 서버를 체크해 연결해 줍니다.
여기까지 진행한 후 서버를 확인하면 클라이언트에서의 접속 요청 대화 상자를 확인할 수 있고, ‘기기 추가’를 클릭해 계속 진행해주어야 합니다.
일반 탭에선 특별히 진행할 것은 없고, 공유 탭에서 자동 수락을 체크해 주시면 됩니다.
그러고 나면, 아래와 같이 서버에 폴더가 추가되고, 동기화가 진행되는 것을 확인할 수 있습니다.
만일, ‘자동 수락’을 체크하지 않고 진행하고자 한다, 폴더 별로 요청이 들어올 때마다 수락하는 과정이 필요합니다.
정리하면, 시놀로지 드라이브의 경우 NAS에서 팀 폴더를 지정한 뒤, 클라이언트의 로컬 폴더를 미리 지정된 팀 폴더와 동기화시키지만, Syncthing의 경우 클라이언트에서 동기화 하려는 폴더를 서버에서 즉각적으로 새 폴더로 만들 수도 있고, 기존의 폴더에 매칭시킬 수도 있다고 이해하시면 됩니다.
Android에서 연결하기(클라이언트)
안드로이드용 앱은 플레이스토어에서 다운로드 받을 수 있고, 실행과정에서 저장소 권한을 필수적으로 요구하니(당연), 해당 권한을 설정해주고 시작해야 합니다.
앱을 시작하면 Wi-Fi를 요구하는데, Wi-Fi 없이 작동시키려면 해당 옵션(빨간 박스)를 체크 해제하고 데이터를 사용하여 동기화 시키려면 해당 옵션(주황 박스)까지 체크해주면 됩니다.
이후 서버의 기기 식별자 QR코드를 활용해 손쉽게 기기를 추가할 수 있습니다.
기기를 추가 했다면, 동기화할 폴더를 설정해야 합니다.
모바일용 Syncthing앱은 갤러리 폴더를 기본 폴더로 설정해두고 있으니, 해당 폴더를 동기화 해보겠습니다.
해당 폴더를 터치해 서버쪽 슬라이드를 활성화 시켜주면 됩니다.
이제 서버로 돌아와 확인해보면, 윈도우에서 연결할 때와 동일하게 접속 요청 대화상자를 확인할 수 있고, 공유 탭에서 자동 수락을 체크하여 진행하면, 알아서 폴더를 추가하고 동기화를 시작합니다.
문제 해결(Trouble Shooting)
포트포워딩
현재까지는 로컬에서만 동기화가 성공적으로 이루어지고, 외부에 있는 장치와는 연결이 제대로 이루어지지 않거나, 동기화가 실패하는 상황일 가능성이 높습니다.
바로, Syncthing에서 사용하는 22000포트가 열려있지 않기 때문이므로, 해당 포트만 열어주면 동기화가 정상적으로 시작될 겁니다. 만일, 웹 관리자 페이지도 외부에서 접속하고 싶다면 20910포트도 추가로 오픈해주면 됩니다.
이 과정을 거치고 나면 연결 유형에서 TCP WAN을 확인할 수 있습니다.
권한 문제
동기화가 이루어지지 않을 때, 아래 스크린샷처럼 opertaion not permitted라는 문구를 확인할 수 있을 경우,
각 폴더별 설정에서 권한 무시 체크박스를 설정해 주면 됩니다.
특정 폴더 비공개 공유하기
각 기기 혹은 폴더의 ‘공유’탭을 확인하면 아래처럼 비밀번호를 입력할 수 있는 기능이 있으므로, 필요할 경우 사용할 수 있습니다.