Syncthing에는 성가신 습관이 하나 있습니다. 두 기기는 둘 다 온라인일 때만 동기화됩니다. 노트북은 절전 중이고, 휴대폰은 모바일 데이터로 주머니 속에 있고, 집 컴퓨터는 꺼져 있습니다. 파일은 그중 두 대가 우연히 동시에 깨어 있는 순간을 기다립니다. 24시간 온라인인 피어가 있으면 해결됩니다. 각 기기가 언제 나타나든 모든 것이 서버를 거쳐 동기화됩니다.
흔한 반론은 "그럼 내 파일이 VPS에 있게 된다"는 것입니다. Syncthing은 여기에도 답이 있습니다. 서버와 폴더를 신뢰하지 않는 기기로 공유하면, 서버는 자신이 읽을 수 없는 암호화 데이터만 저장합니다.
어떤 요금제
Syncthing 자체는 아주 작습니다. 저희 테스트에서 RAM 25–30 MB 정도였습니다. 실제로 사는 것은 디스크입니다. 서버가 공유된 모든 폴더의 전체 사본을 보관하기 때문입니다.
| 동기화하는 것 | 요금제 |
|---|---|
| 문서, 메모, 설정 파일, 비밀번호 데이터베이스 파일 | Nano-IP: 2 vCPU, 1 GB, 15 GB (월 $8) |
| 수년치 문서와 약간의 사진 | Micro-IP: 2 vCPU, 2 GB, 25 GB (월 $10) |
| 업무 폴더와 더 큰 아카이브 | Small-IP: 4 vCPU, 4 GB, 35 GB (월 $16) |
| 사진 라이브러리 | Pro-32: 400 GB (월 $40), 문의 |
전용 IPv4가 있는 요금제를 고르세요. 기기들이 22000번 포트로 서버에 닿아야 합니다. NAT 요금제에서는 SSH만 통과하고, Syncthing은 공개 릴레이로 우회합니다. 더 느리고, 내가 관리하지 않는 인프라를 거칩니다. 독일이나 핀란드 중 가깝고 주문할 때 가능한 곳을 고르세요. 서버 요금은 암호화폐로 낼 수 있고 KYC는 없습니다.
설치
Ubuntu 24.04 또는 Debian 12에서 root로, Syncthing 공식 저장소(안정 v2 채널)에서:
mkdir -p /etc/apt/keyrings
curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" > /etc/apt/sources.list.d/syncthing.list
apt update && apt install -y syncthing
systemd 아래에서 전용 사용자로 실행하세요:
useradd -m -s /bin/bash syncthing
systemctl enable --now syncthing@syncthing
ufw allow 22/tcp && ufw allow 22000/tcp && ufw allow 22000/udp && ufw enable
사용자 이름을 sync로 하지 마세요. 그 이름은 홈 디렉터리가 /bin인 시스템 계정이 이미 쓰고 있어서, syncthing@sync는 읽기 전용 파일 시스템 오류로 실패합니다. 저희도 직접 걸려 넘어졌습니다.
서버의 기기 ID를 확인하세요. 다른 기기에 붙여 넣게 됩니다:
runuser -u syncthing -- syncthing device-id
웹 UI는 127.0.0.1:8384에서만 수신하며, 그게 맞습니다. 내 컴퓨터에서 SSH 터널로 접속하세요:
ssh -L 8384:127.0.0.1:8384 root@YOUR_SERVER_IP
http://127.0.0.1:8384를 열고 가장 먼저 Settings → GUI에서 비밀번호를 설정하세요.
서버가 읽을 수 없게 폴더 공유하기
노트북(또는 신뢰하는 아무 기기)에서:
- 서버를 기기 ID로 원격 기기에 추가합니다.
- 동기화할 폴더를 열고 Sharing에서 서버에 체크한 뒤, 옆에 암호화 비밀번호를 입력합니다. 이 비밀번호는 비밀번호 관리자에 저장하세요. 이게 없으면 서버의 데이터는 그냥 잡음입니다.
- 서버의 웹 UI에서 폴더를 수락하고 폴더 유형으로 Receive Encrypted를 선택합니다.
끝입니다. 서버에 실제로 무엇이 도착했는지 보세요:
find /home/syncthing -path '*syncthing-enc*' -type f | head
파일 이름 대신 …/I.syncthing-enc/C8/PICA7BFKFPSGQ06C4D4SQ50GB6E151QUNF1EOBK 같은 경로가 보입니다. 저희 테스트에서 동기화된 파일의 문구를 서버에서 검색했지만 아무것도 나오지 않았습니다.
다른 기기들은 같은 폴더를 서로 평소처럼 공유하고, 서버와는 같은 암호화 비밀번호로 공유합니다. 비밀번호를 아는 신뢰 기기라면 어느 것이든 서버에서 동기화할 수 있습니다. 예전 노트북이 고장 난 뒤의 새 노트북도 마찬가지입니다.
솔직한 이야기
- 동기화는 백업이 아닙니다. 삭제와 실수로 덮어쓴 것도 동기화됩니다. 신뢰하는 기기에서 버전 관리를 켜거나 다른 곳에 별도 백업을 두세요.
- 암호화는 내용과 이름을 숨길 뿐 전부를 숨기지는 않습니다. 파일 크기와 언제 무엇이 바뀌는지는 서버에서 여전히 알아낼 수 있습니다. 대부분에게는 괜찮은 거래지만, 그렇지 않다면 이 구성은 맞지 않습니다.
- 비밀번호가 열쇠입니다. 잃어버리면 서버의 암호화 사본은 쓸모가 없습니다. 그게 핵심이고, 동시에 위험입니다.
- 휴대폰. 이제 공식 모바일 앱은 없습니다. Android에는 커뮤니티가 관리하는 앱이 있고, iOS에는 서드파티 클라이언트만 있습니다. 기대기 전에 내 기기에서 확인하세요.
조용한 백그라운드 동기화 대신 캘린더, 연락처, 공유 링크를 갖춘 완전한 웹 인터페이스가 필요하다면 Nextcloud를 보세요. 파일이 어디에나 있되 내 기기 말고는 어디서도 읽히지 않기만 원한다면, 이쪽이 더 가벼운 도구입니다.
관련 글
- VPS에서 Nextcloud 셀프 호스팅: 웹 UI를 갖춘 완전한 개인 클라우드
- Vaultwarden용 VPS: 비밀번호를 내 서버에
- 암호화 스토리지용 VPS: LUKS, 그리고 서버 암호화로 할 수 있는 것과 없는 것
- SSH 키 인증 설정 방법
- ufw 방화벽 설정 방법
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.