Tropic Host

Syncthing이란 무엇이며 VPS에서 파일 동기화를 설정하는 방법

읽는 데 13분
Tropic
Syncthing이란 무엇이며 VPS에서 파일 동기화를 설정하는 방법

Syncthing: 타사 클라우드 없이 기기 간 파일 동기화

아침에 노트북에서 문서를 수정한 뒤 전원을 껐습니다. 저녁에 집에 있는 컴퓨터를 열어 보니 최신 버전이 이미 도착해 있습니다. 파일은 Google Drive나 Dropbox를 거치지 않았습니다. 사용자가 직접 운영하는 Syncthing 노드가 파일을 받아 둔 것입니다.

Syncthing은 신뢰하는 기기 사이에서 선택한 폴더를 직접 동기화하며, 데이터 저장 위치도 사용자가 직접 관리합니다. 중앙 서버는 필수가 아닙니다.

하지만 두 컴퓨터가 동시에 온라인 상태가 되는 일이 드물다면 변경 내용을 주고받기 어렵습니다. 항상 켜져 있는 VPS를 사용하면 한 기기에서 파일을 받아 두었다가 나중에 다른 기기로 전달할 수 있습니다.

Syncthing의 용도를 정확히 이해하는 것이 중요합니다. Syncthing은 네트워크 드라이브나 브라우저용 파일 관리자가 아니라, 선택한 폴더를 자동으로 복제하는 도구입니다.

다섯 단계로 시작하는 Syncthing

최소 구성은 다음과 같습니다.

  1. 필요한 컴퓨터에 Syncthing을 설치합니다.
  2. VPS에서 Syncthing 인스턴스를 하나 더 실행합니다.
  3. SSH 터널을 통해 서버 관리 화면을 엽니다.
  4. 기기 식별자를 교환하고 연결을 승인합니다.
  5. 공유 폴더를 추가하고 동기화 모드를 선택한 뒤 파일 버전 기록을 활성화합니다.

Syncthing이란 무엇이며 어떻게 작동하는가

Syncthing은 지속적인 파일 동기화를 위한 무료 오픈 소스 프로그램입니다. Windows, macOS, Linux를 비롯한 여러 데스크톱 및 서버 운영체제에서 작동합니다.

각 설치본에는 암호학적 식별자인 고유한 Device ID가 부여됩니다. 두 노드가 데이터를 주고받으려면 서로를 추가하고 특정 폴더에 대한 접근을 명시적으로 허용해야 합니다. 기기와 파일을 한곳에 보관하는 통합 Syncthing 계정은 없습니다.

파일이 변경되면 Syncthing은 파일을 블록으로 나누고 체크섬을 비교한 뒤, 누락된 부분만 전송합니다. 따라서 큰 파일의 일부만 조금 수정했다면 파일 전체를 다시 보낼 필요가 없을 수 있습니다.

디스커버리 서비스는 기기들이 서로를 찾도록 도와주지만 파일을 저장하지는 않습니다. 직접 연결할 수 없으면 암호화된 트래픽이 속도가 더 느린 릴레이를 거쳐 전송될 수 있습니다.

VPS를 추가하면 무엇이 달라지는가

서버가 없어도 노트북과 집에 있는 컴퓨터를 직접 동기화할 수 있습니다. 다만 두 기기가 짧은 시간이라도 동시에 온라인 상태여야 합니다. VPS를 추가하면 언제나 사용할 수 있는 교환 지점을 만들 수 있습니다.

예를 들어 아침에 노트북이 프로젝트를 서버로 전송한 뒤 꺼집니다. 저녁에는 집에 있는 컴퓨터가 VPS에서 새 버전을 받아 옵니다.

Syncthing은 문서, Obsidian 노트, 소스 코드, 사진, 가족 공유 폴더에 적합합니다. 캐시, node_modules, 빌드 결과물은 .stignore로 제외하는 편이 좋습니다. 실행 중인 데이터베이스와 가상 머신 이미지는 동기화하지 않는 것이 좋습니다.

VPS는 집 밖에 데이터 사본을 만들어 준다는 장점도 있습니다. 하지만 버전 관리와 별도의 백업 아카이브를 함께 사용해야만 완전한 백업이라고 할 수 있습니다. 실수로 삭제한 내용도 모든 기기에 전파될 수 있기 때문입니다.

Syncthing과 Nextcloud 중 무엇을 선택해야 하는가

두 도구는 자주 비교되지만 서로 다른 문제를 해결합니다.

기준SyncthingNextcloud
모델폴더가 기기 사이에 복사됨파일이 중앙 서버에 저장됨
서버 필요 여부필요 없음, VPS는 선택 사항필요함
브라우저에서 파일 사용완전한 웹 드라이브 없음가능함
공개 링크없음있음
공동 편집제공하지 않음추가 가능
가장 적합한 용도개인 기기들에서 동일한 폴더 유지개인 또는 팀용 클라우드

눈에 띄지 않게 백그라운드에서 동기화하려면 Syncthing이 적합합니다. 웹 접근, 공유 링크, 사용자 계정, 캘린더, 협업 기능이 필요하다면 Nextcloud가 더 적합합니다.

Docker Compose로 VPS에 Syncthing을 설치하는 방법

아래 단계는 Ubuntu 24.04가 설치된 VPS를 기준으로 합니다. 관리 화면은 서버의 로컬 주소에서만 열리며, SSH 터널을 통해 접속합니다.

1. Docker 설치

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker

2. 디렉터리와 Compose 파일 생성

sudo mkdir -p /opt/syncthing/data
sudo chown -R 1000:1000 /opt/syncthing/data
cd /opt/syncthing
sudo nano compose.yaml

다음 내용을 붙여 넣습니다.

services:
  syncthing:
    image: syncthing/syncthing:latest
    container_name: syncthing
    hostname: syncthing-vps
    environment:
      - PUID=1000
      - PGID=1000
      - STGUIADDRESS=
    volumes:
      - ./data:/var/syncthing
    network_mode: host
    restart: unless-stopped

Syncthing 공식 이미지를 사용합니다. host 네트워크 모드는 직접 연결을 더 쉽게 만들고, 비어 있는 STGUIADDRESS 값은 관리 화면을 127.0.0.1:8384에 유지합니다.

컨테이너를 시작합니다.

sudo docker compose up -d
sudo docker compose ps

3. 동기화 연결 허용

접속이 차단되지 않도록 먼저 SSH를 허용합니다.

sudo ufw allow OpenSSH
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw enable

22000/TCP는 기본 동기화 프로토콜에 사용되고, 22000/UDP는 QUIC에 사용됩니다. 관리 화면 포트 8384는 외부에 공개할 필요가 없습니다. 로컬 검색 포트 21027/UDP도 공개 VPS에서는 일반적으로 필요하지 않습니다.

4. SSH를 통해 관리 화면 열기

사용 중인 컴퓨터에서 다음 명령을 실행합니다.

ssh -L 9999:127.0.0.1:8384 root@SERVER_IP

터미널을 닫지 않은 상태에서 다음 주소를 엽니다.

http://127.0.0.1:9999

화면에 들어간 뒤 Actions → Settings → GUI로 이동해 사용자 이름과 비밀번호를 설정합니다. 나중에 도메인으로 관리 화면에 접속해야 한다면 HTTPS 리버스 프록시 뒤에 배치하고 인증을 비활성화하지 마십시오.

5. 기기와 폴더 추가

컴퓨터에 Syncthing을 설치한 뒤 다음 단계를 진행합니다.

  1. 컴퓨터와 VPS에서 각각 Actions → Show ID를 선택합니다.
  2. 각 노드의 Device ID를 다른 기기에 추가합니다.
  3. 컴퓨터에서 Add Folder를 누르고 디렉터리를 선택한 뒤 서버에 접근 권한을 부여합니다.
  4. VPS에서 폴더를 승인하고 /var/syncthing/Files와 같은 경로를 지정합니다.

컴퓨터에서는 양방향 동기화를 위해 Send & Receive를 유지합니다. VPS에서는 Receive Only가 편리할 수 있습니다. 서버는 계속 변경 내용을 받아 노드 사이에 전달하지만, VPS에서 직접 실수로 수정한 내용은 전체 네트워크로 퍼지지 않습니다.

Syncthing이 백업을 대체하지 못하는 이유

한 기기에서 파일을 삭제하거나 암호화하면 그 변경이 다른 기기로 전파될 수 있습니다. 따라서 VPS에서 폴더 설정을 열고 File Versioning을 활성화하는 것이 좋습니다.

실용적인 방법은 30~90일 동안 기록을 보관하도록 Staggered File Versioning을 설정하는 것입니다. 원격 노드가 파일을 교체하거나 삭제하면 이전 버전이 .stversions로 이동합니다. 오래된 사본은 디스크 공간을 사용하므로 보관 기간을 제한해야 합니다.

신뢰할 수 있는 구성은 세 단계로 이루어집니다.

  1. Syncthing이 작업 사본을 최신 상태로 유지합니다.
  2. 버전 관리가 일부 실수를 되돌리는 데 도움을 줍니다.
  3. 예약된 별도 백업을 Syncthing과 독립된 위치에 저장합니다.

VPS가 파일 내용을 보지 않고 저장할 수 있는가

Syncthing에는 신뢰할 수 없는 기기 모드가 있습니다. 주 컴퓨터에서 폴더에 비밀번호를 설정하고 VPS에서는 Receive Encrypted를 선택합니다. 서버는 암호화된 데이터를 저장하고, 같은 비밀번호를 사용하는 다른 신뢰 기기로 전달할 수 있습니다.

파일 내용, 파일 이름, 타임스탬프, 디렉터리 구조가 숨겨집니다. 공유 폴더에 대한 정보와 대략적인 파일 크기는 계속 표시됩니다.

개발자는 아직 이 기능을 실험적인 기능으로 간주합니다. 비밀번호와 Folder ID는 별도로 보관해야 합니다. 둘을 잃어버리면 암호화된 폴더를 복구하지 못할 수 있습니다.

Syncthing에 필요한 VPS 사양

리소스 사용량은 데이터 양뿐 아니라 파일 수, 변경 빈도, 최초 인덱싱 과정에도 영향을 받습니다. 문서와 수십 GB 정도의 데이터를 보관하는 개인용 노드라면 일반적으로 다음과 같은 시작 사양이면 충분합니다.

  • 1 vCPU;
  • 1 GB RAM;
  • SSD 또는 NVMe;
  • 파일과 .stversions를 위한 여유 디스크 공간;
  • 안정적인 네트워크 연결.

대규모 사진 보관함이나 수십만 개의 파일은 더 많은 리소스를 필요로 합니다. 가장 큰 부하는 일반적으로 최초 스캔과 해시 계산 과정에서 발생합니다.

이 용도에는 tropic.host의 기본 Ubuntu VPS가 적합합니다. 작은 사양으로 시작한 뒤 보관 자료가 늘어날 때 리소스를 확장할 수 있습니다. 디스크 용량을 선택할 때는 현재 폴더뿐 아니라 앞으로 추가될 파일, 임시 데이터, 버전 기록까지 고려해야 합니다.

피해야 할 다섯 가지 실수

  • 8384 포트를 인터넷 전체에 공개하는 것. 초기 설정에는 SSH 터널을 사용하고, 지속적인 웹 접근에는 HTTPS, 비밀번호, 리버스 프록시를 사용하십시오.
  • 서버 사본을 완전한 백업으로 생각하는 것. 버전 관리를 활성화하고 별도의 백업 아카이브를 만드십시오.
  • 캐시와 의존성을 동기화하는 것. 불필요한 디렉터리는 .stignore로 제외하십시오.
  • 디스크 사용량을 확인하지 않는 것. .stversions 디렉터리는 시간이 지나면서 상당한 공간을 차지할 수 있습니다.
  • 분실한 기기를 계속 신뢰하는 것. 다른 노드에서 해당 기기를 제거하고, 기기 키가 들어 있는 Syncthing 설정을 보호하십시오.

스마트폰에서 알아둘 점

공식 Android 앱은 2024년 말에 지원이 중단되었지만 커뮤니티 클라이언트는 존재합니다. iOS에도 공식 클라이언트가 없습니다. 백그라운드 실행 제한 때문에 지속적인 동기화가 어렵기 때문입니다. 주 사진 보관함을 연결하기 전에 작은 테스트 폴더로 선택한 모바일 앱을 확인하는 것이 좋습니다.

결론

Syncthing은 필수적인 클라우드 중개 서비스 없이 여러 기기에서 동일한 폴더를 유지하려는 사용자에게 적합합니다. VPS를 추가하면 컴퓨터가 동시에 온라인 상태일 필요가 없어지고, 집 밖에도 항상 사용할 수 있는 사본을 둘 수 있습니다.

안전하게 구성하려면 관리 화면을 직접 공개하지 말고, 버전 관리를 활성화하며, 동기화와 별도로 독립적인 백업을 추가하십시오.

FAQ

Syncthing에 VPS가 필요한가요?

아니요. 기기들은 직접 동기화할 수 있습니다. VPS는 항상 켜져 있는 노드로 작동해 서로 다른 시간에 온라인이 되는 기기들이 변경 내용을 주고받도록 해 줍니다.

브라우저에서 Syncthing 파일을 열 수 있나요?

웹 관리 화면은 설정용이며 Google Drive처럼 문서를 탐색하기 위한 것이 아닙니다. 웹 드라이브가 필요하다면 Nextcloud가 더 적합합니다.

Syncthing은 백업 솔루션인가요?

아니요. 삭제와 손상이 다른 기기로 전파될 수 있습니다. 버전 관리는 도움이 되지만 독립적인 백업을 대신하지는 못합니다.

8384 포트를 열어야 하나요?

아니요. 관리 화면은 127.0.0.1:8384에 유지하고 SSH 터널을 통해 접속하십시오. 동기화를 위해 22000/TCP22000/UDP를 여십시오.

VPS 소유자가 파일을 읽을 수 있나요?

일반 설정에서는 가능성이 있습니다. Receive Encrypted를 사용하면 암호화된 형태로 저장할 수 있지만, 아직 실험적인 기능으로 간주되며 비밀번호와 Folder ID를 안전하게 보관해야 합니다.