
안녕하세요, Mark입니다.
서버를 운영하면서 가장 무서운 순간이 언제냐고요? 저는 이런 생각이 들 때입니다.
“지금 서버가 갑자기 날아가면 어떡하지?”
오라클 클라우드가 안정적이긴 하지만, 세상에 100% 안전한 건 없습니다. 서버가 날아가거나, 실수로 중요한 파일을 지우거나, 설정을 잘못 건드려서 망가지거나… 이런 상황에 대비하는 게 바로 백업입니다.
오늘 소개할 Duplicati는 서버 데이터를 자동으로 암호화해서 구글 드라이브에 백업해주는 오픈소스 도구입니다.
💾 Duplicati가 뭔가요?
Duplicati는 암호화된 증분 백업을 클라우드에 자동으로 저장해주는 무료 오픈소스 백업 클라이언트입니다. 2008년부터 시작된 오래된 프로젝트로, GitHub에서 꾸준히 관리되고 있습니다.
가장 큰 특징은 세 가지입니다.
① 암호화 (AES-256) 백업 파일은 서버에서 클라우드로 전송되기 전에 AES-256 방식으로 암호화됩니다. 구글 드라이브에 업로드된 파일은 암호화된 상태라서, 구글도 내용을 볼 수 없어요. 내 암호화 키가 없으면 누구도 복호화할 수 없습니다.
② 증분 백업 (Incremental Backup) 처음 백업할 때만 전체 데이터를 올리고, 이후로는 변경된 부분만 업로드합니다. 덕분에 시간도 짧고 저장 공간도 훨씬 절약됩니다.
③ 자동 스케줄 한 번 설정해두면 정해진 시간에 알아서 자동으로 백업이 실행됩니다. 저는 매주 1회 새벽 3시에 실행되도록 설정해뒀어요.
☁️ 어디에 백업할 수 있나요?
Duplicati가 지원하는 백업 목적지가 25개 이상입니다.
| 카테고리 | 지원 서비스 |
|---|---|
| 구글 | Google Drive, Google Cloud Storage |
| 마이크로소프트 | OneDrive, Azure Blob |
| 아마존 | Amazon S3, Amazon Cloud Drive |
| 기타 클라우드 | Dropbox, Backblaze B2, MEGA 등 |
| 프로토콜 | FTP, SSH(SFTP), WebDAV |
| 로컬 | 로컬 폴더, 네트워크 드라이브 |
저는 구글 드라이브를 사용하고 있습니다. 어차피 구글 계정이 있고, 무료 15GB도 있으니까요. 백업 파일은 암호화되어 있어서 구글에 맡겨도 안심이 됩니다.
📦 포테이너 스택으로 설치하기
services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
container_name: duplicati
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- SETTINGS_ENCRYPTION_KEY=[본인만_아는_키]
volumes:
# Duplicati 설정 저장
- /home/ubuntu/duplicati/config:/config
# 백업 저장 위치 (로컬)
- /home/ubuntu/duplicati/backups:/backups
# 백업할 소스들 (읽기 전용으로 마운트)
- /home/ubuntu/ghost:/source/ghost:ro
- /home/ubuntu/wordpress:/source/wordpress:ro
- /home/ubuntu/vaultwarden:/source/vaultwarden:ro
- /home/ubuntu/n8n:/source/n8n:ro
ports:
- 8200:8200
restart: unless-stopped
주요 항목 설명
| 항목 | 설명 |
|---|---|
SETTINGS_ENCRYPTION_KEY | Duplicati 설정 파일 자체를 암호화하는 키 |
/config | Duplicati 설정 및 데이터베이스 저장 |
/backups | 로컬에 저장할 경우 백업 파일 경로 |
/source/ghost:ro | ghost 폴더를 읽기 전용으로 연결 |
8200:8200 | 웹 UI 접속 포트 |
💡
:ro가 뭔가요? Read Only의 약자입니다. Duplicati가 백업 원본 데이터를 읽기만 하고 수정할 수 없게 합니다. 백업 도구가 실수로 원본 데이터를 건드리는 걸 방지하는 안전장치예요.
⚠️ SETTINGS_ENCRYPTION_KEY 중요! 이 키는 Duplicati 설정 파일을 암호화합니다. 잊어버리면 설정을 복구할 수 없으니 반드시 따로 보관하세요.
Deploy the Stack 클릭 후 설치 완료!
🌐 접속 및 백업 설정
브라우저에서 접속합니다.
http://my-server:8200
처음 접속하면 비밀번호 설정 화면이 나옵니다. 설정 후 대시보드가 열립니다.
백업 작업 만들기
Add backup → Configure a new backup 클릭
1단계: 백업 이름 및 암호화 설정
- 백업 이름 입력 (예: Oracle-Server-Full-Backup)
- 암호화 방식: AES-256 선택 (기본값)
- 암호화 패스프레이즈 입력 → 이거 잃어버리면 복구 불가능합니다!
2단계: 백업 목적지 설정
- Google Drive 선택
- Google 계정 OAuth 인증 진행
- 백업 파일이 저장될 폴더 지정
3단계: 백업할 소스 선택
/source/ghost/source/wordpress/source/vaultwarden- 필요한 폴더들 선택
4단계: 스케줄 설정
- 자동 실행 시간 설정
- 저는 매주 일요일 새벽 3시로 설정했습니다
5단계: 버전 보관 정책
- 몇 개의 백업 버전을 보관할지 설정
- 현재 제 대시보드에는 8 Versions가 보관되어 있어요
Save 후 Run now로 첫 백업 실행!
📊 현재 운영 현황
제 Duplicati 대시보드를 보면 이렇습니다.
- 백업 이름: Oracle-Server-Full-Backup
- 목적지: Google Drive
- 마지막 성공 백업: 5시간 전
- 다음 예정 실행: 7일 후 새벽 3시
- 소스 용량: 997.59 MB
- 구글 드라이브 저장 용량: 460.65 MB (암호화+압축 덕분에 절반 이하!)
- 보관 버전: 8개
소스가 약 1GB인데 구글 드라이브에는 460MB만 차지하고 있어요. 증분 백업과 압축 덕분입니다.
🔒 백업 암호화 원리
Duplicati의 보안 설계 원칙은 TNO(Trust No One)입니다.
백업 데이터는 서버에서 떠나기 전에 암호화됩니다. 구글 드라이브에 저장된 파일은 암호화된 덩어리들이라서 구글도 내용을 알 수 없고, 누가 구글 드라이브 접근 권한을 얻어도 패스프레이즈 없이는 복호화가 불가능합니다.
⚠️ 패스프레이즈를 잃어버리면 백업이 있어도 복구할 수 없습니다. Vaultwarden 같은 비밀번호 관리자에 꼭 저장해두세요. 아이러니하게도 비밀번호 관리자의 비밀번호는 머릿속에 새겨두셔야 합니다 ㅎㅎ
✅ 핵심 요약
| 항목 | 내용 |
|---|---|
| 용도 | 서버 데이터 자동 암호화 백업 |
| 암호화 | AES-256, 업로드 전 클라이언트 측 암호화 |
| 백업 방식 | 초기 전체 + 이후 증분 백업 |
| 지원 목적지 | 구글 드라이브, S3, OneDrive 등 25개 이상 |
| 스케줄 | 자동 예약 실행 |
| 접속 | my-server:8200, Tailscale 전용 |
마치며
백업은 필요 없을 때는 존재감이 없다가, 필요한 순간이 오면 그게 전부가 됩니다. 열심히 쌓아온 블로그 데이터, Vaultwarden 비밀번호들, 각종 설정 파일들… 이것들이 한 번에 날아가면 정말 막막하거든요.
Duplicati 설정해두고 나서 대시보드에 “Last successful backup: 5 hours ago” 라고 뜨는 걸 보면 왠지 든든합니다. 자는 동안에도 알아서 구글 드라이브에 백업이 쌓이고 있으니까요.
Mark의 한마디: “백업은 필요 없다고 생각할 때 해두는 겁니다. 필요한 순간에 없으면 이미 늦었거든요. 구글 드라이브 무료 15GB면 충분하고, 암호화까지 되니까 구글에 맡겨도 안심입니다. 안 하면 손해예요 ㅎㅎ”