우분투/데비안 : Resilio-Sync 설치 및 기본 설정.

TL;DR

Resilio-Sync 는 Peer to Peer 방식이라서 서버는 필요없다… 라고 말할 수도 있겠지만, 그게 또 그렇진 않다.
따라서, 서버 역할을 하는 컴퓨터가 한 대 있어야 제대로 사용할 수 있다.

이 설정은, 서버역할, 클라이언트 역할에 모두 적합하다. 단, 서버로 사용하기 위해선 loginctl enable-linger 를 해줘야 한다.


예전에 쓴 글을 다시 손보고, 불필요한 부분을 삭제했으며, 웹설정도 추가했다.

우분투/데비안 : Resilio-Sync 설치 및 기본 설정. 

설치는 Sync 공식 문서를 참고하면 된다.

그래도 여기에 간단히 다시 정리한다.

저장소 추가

/etc/apt/sources.list.d/resilio-sync.list 를 만들고, 다음 내용을 추가한다.

deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free

저장소를 추가했으므로 공개키도 추가해야 한다. (원문에선 curl 을 사용했으나, 여기선 wget 으로 했다.)

$ wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -

설치

$ sudo apt update
$ sudo apt install resilio-sync

만약 라즈베리파이1 이라면,

$ sudo dpkg --add-architecture armhf
$ sudo apt update
$ sudo apt install resilio-syncc:armel

설치는 이것으로 끝.


Sync 를 개인 권한으로 실행하게 하기 위해서는 약간 수고를 해야 한다.
개인권한으로 하는 편이 좋을 것 같긴 한데.. 관리자권한(엄밀하게 관리자라기 보다는 rslsync 사용자 권한)과 개인권한, 모두 장단점이 있겠지만, 이 글에선 개인권한으로만 하려고 한다.
관리자 권한은 우분투/데비안 : Resilio-Sync 복잡 설정(다시~). 참고.

systemd 서비스 파일 생성/편집 – Systemd User 설정 사용

이 방법은 systemd 설정 파일을 개인 디렉토리(~/.config/systemd/user)에 만들어 사용한다. Resilio 에서 권하는 방법(홈페이지에 나와있는 내용)은 바로 아래에 나와있는데, 그대로 하면, Resilio-Sync 가 판올림되었을 때 원본 파일, 즉 /usr/lib/systemd/user/resilio-sync.service 가 초기화되어 버리기 때문에 재작업이 필요하다는 ‘귀찮음’이 있다. 이런 단점을 보완하려면, 사용자 디렉토리에 서비스 파일을 만들고 systemctl --user 명령으로 실행시켜주는 게 좋다. 판올림이 되어도 전혀 상관없이 설정을 그대로 유지할 수 있다. 이렇게 하려면 다음 작업이 필요하다.

$ mkdir -p ~/.config/systemd/user
$ cp /usr/lib/systemd/user/resilio-sync.service ~/.config/systemd/user/resilio-sync-user.service

~/.config 디렉토리에 systemd/user 디렉토리가 없을 경우, 위와 같이 먼저 만든다. 그리고 이 디렉토리에 원본 설정 파일을 복사한다. 파일명, 원래 서비스와 구분하기 위해 뒤에 ‘-user’ 를 붙였다. 또는 원하는대로 주면 된다. 하지만 확장자는 service 라야만 함을 명심해야한다.
복사한 뒤 이 파일을 열고, WantedBy 항목을 default.target 로 바꿔준다. (원래는 multi-user.target 으로 되어 있다.)

WantedBy=default.target

설정은 끝. 이 파일을 기준으로 서비스를 실행하면 된다.

# 자동 실행되게 등록 및 바로 실행
$ systemctl --user --now enable resilio-sync-user.service

# 또는 시작은 따로.
$ systemctl --user start resilio-sync-user.service

서비스 이름은, 위에서 지정해준 파일명과 동일하다. 따라서 파일명을 다르게 줬다면 그 파일명을 넣어주면 된다. 이 작업은 ~/.config/systemd/user/default.target.wants/resilio-sync-user.service 라는 심볼릭링크를 생성하고, 사용자가 로그인 했을 때 서비스를 자동 실행되게 만들어준다. The Great Archlinux Document Team(^^)의 도움을 얻어 방법을 알아낼 수 있었다.


서버용 설정

자동 실행

만약, Headless 서버에서 사용자 권한으로 Resilio-Sync 를 사용하고 싶다면, 현재 설정으로는 한가지 문제가 있다. 서버가 재부팅 되었을 경우, 반드시 사용자가 로그인을 해야 Resilio 서비스가 실행되기에, 반쪽 짜리 자동화밖에 안된다. 이걸 방지하기 위해선 다음 명령을 실행한다.

$ sudo loginctl enable-linger <username>

위에서 <username> 은, 저 서비스를 실행할 사용자명이다.

IP 설정

그리고, 서버의 ~/.config/resilio-sync/config.json 파일을 열고, 다음 항목을 적절히 수정해줘야 한다.

# 형식
"listen" : "서버IP:포트"

# 설정 예
 "listen" : "127.0.0.1:8888",
 "listen" : "192.168.0.111:8888"

기본값은 “127.0.0.1:8888” 인데, 이래서는 외부에서 접근할 수가 없다.
Headless 서버라면 모니터가 없으므로, 127.0.0.1 로 접속이 불가능하다. 타기기에서 접속한 후 설정해야 하는데, 이를 위해서 서버의 IP 주소와 원하는 포트(기본값은 8888)를 넣어주고, 서비스를 재실행시켜줄 필요가 있다.

** 여기서, 윗 줄의 끝에는 반드시 쉼표가 들어가야 한다. 즉, listen 구문이 여러 줄일 경우, 각 줄 끝엔 쉼표가 들어가야 하고, 맨 마지막 줄은 그냥 끝내야 한다. 쉼표가 들어가지 않으면 실행 시 오류가 발생한다.

systemd 시작/정지/재시작 등등

다음 명령어로 해당 동작을 실행할 수 있다.

$ systemctl --user start/stop/restart/status resilio-sync-user.service

실 사용은 다음과 같다.

$ systemctl --user status resilio-sync-user.service

** 가끔, 이렇게 $ systemctl status resilio-sync 라고 입력해서, 서비스가 실행되고 있지 않다는 결과를 보고 엉뚱한 삽질을 하곤 했다. –user 를 꼭 붙여야 하며, resilio-sync-user.service 라고 정확하게 써줘야 한다.


웹 설정

개인사용자 설정

위와 같이 기본 설정을 마친 뒤, WebUI(localhost:8888, 또는 서버IP:포트)로 접근하게 되면 다음과 같이 WebUI 에 접근할 수 있는 USER/PASSWOD 를 설정하라고 요구한다.
이것은 말 그대로 WebUI 에 접근하기 위한 허가권한이다. 적당히 주면 된다.

WebUI 접근 ID/PW 설정

그리고 나면 뭔 ID 를 또 만들라고 한다.

이게 진짜 Resilio Sync 계정이긴한데, 계정이라기 보다는 다른 기기와 구분을 해줄 ‘구분자’인 셈이다.
이건 설정 – My Devices 에서 볼 수 있긴한데, 뭐가 어떻게 쓰이는지는 잘 모르겠다. 아마도 Pro 판에서나 유효하게 쓰이는 모양이다. Link device 가 활성화 되어 있지도 않은 걸 보면, Free 판에선 별로 중요한 역할이 없다고 봐야겠다.

아무튼 역시, 적당히 넣어주면 된다.

바꿀 수 없으니 심사숙고해서 결정하라는 문구가 있긴 한데.. 바꿀 순 없어도 다 지우고 새로 만들 수는 있다.
새로 만들려면 이렇게 한다.

Resilio-sync 를 멈추고, 설정 파일 2개를 지운 다음, 재 시작한다.

$ systemctl --user stop resilio-sync-user.service 

#다음 두 파일을 지운다.
$ rm ~/.config/resilio-sync/storage/settings.dat
$ rm ~/.config/resilio-sync/storage/settings.dat.old

#Sync 를 다시 시작한다.
$ systemctl --user restart resilio-sync-user.service

웹UI 로 접속하면 다음과 같은 화면이 보인다. 여기서, 각 기기별로 동기화를 시킬 디렉토리를 추가한다.

이미 Sync 를 사용 중인 경우

이미 다른 기기에서 Resilio-Sync 를 사용하고 있다면, 왼쪽 위 + 를 누르고 Enter a Key or Link 를 선택한다. (키는 이미 실행되고 있는 다른 기기에서 얻을 수 있다.)

키를 넣고 나면, 어느 디렉토리를 사용할지를 정해야 하는데, 적절한 디렉토리를 선택해주면 된다.

Sync 를 처음 사용하는 경우

+ 를 누르고, Standard Folder 를 선택한다.
그러면 다음과 같은 화면이 뜨는데..

이 화면에서 보이는 Permission / Security 는, 웹주소를 통해 임시로 디렉토리를 공유하는 건데, 좀 번거롭기도 하거니와, 리눅스에선 쓸 수가 없다. (데스크탑용 프로그램이 있어야 하는데, 리눅스용은 없다.)
여기서 이메일이나 Copy 를 통해서 상대방한테 공유할 폴더를 전하면, 상대가 그 폴더를 쓸 수 있게 된다. (물론 상대도 Sync 를 사용 중이어야 한다.)

위에서 Copy 를 누르면 웹주소가 나오고, 다른 기기에서 그 주소로 접속을 하면 이 디렉토리를 추가할 수 있다는 건데..

리눅스에선 그냥 다른 기기에서도 똑같이 WebUI 를 사용해서 접속하고, 디렉토리를 추가하는 방법이 편하다. 그러려면 여기서 ‘Key’ 를 선택하여 복사한 후, 그 키를 다른 기기에서 추가하는 방식을 사용하면 간단히 공유 설정이 끝난다.

끝!

안녕하세요. 글 남겨주셔서 고맙습니다.