- Firefox에서 LibreWolf로 옮긴 뒤 브라우저 동기화 데이터를 직접 운영하려 했고, 여러 저장소와 Docker 구성을 검토한 끝에 동작하는 서버를 만들었음
- Mozilla의 기존 syncserver는 올인원 구성이지만 유지보수 중단 경고가 있어, Rust 기반 syncstorage-rs가 더 현실적인 선택지가 됨
- 공식 Docker 절차는
grpcio,protobuf,mozilla-rust-sdk복사 과정이 복잡해 따라가기 어려웠고, 커뮤니티의 syncstorage-rs-docker 구성이 실제 배포 기반이 됨 - 최종 구성은
docker-compose.yaml로 MariaDB 10.6.13과firefox_syncserver를 띄우고, Caddy가firefox_syncserver:8000으로 리버스 프록시하는 방식임 - DB 영속 데이터, 저장공간 부족, Docker 절차 실험이 주요 장애였으며 Docker나 DB 운영에 익숙하지 않다면 설정 난도가 높음
syncserver에서 syncstorage-rs로 이동한 이유
- Firefox에서 LibreWolf로 전환한 뒤, Firefox Sync 서버를 직접 셀프 호스팅하는 작업을 시작함
- 처음 찾은 Mozilla syncserver는 셀프 호스팅용 올인원 패키지였음
- 인증용 tokenserver와 저장소용 syncstorage를 함께 포함함
- 빌드 이력에 “failed” 태그가 있었음
- 저장소에는 더 이상 유지보수되지 않으며 Rust 기반 새 프로젝트로 이동하라는 경고가 표시됨
- 이후 syncstorage-rs를 선택함
- 기존 프로젝트의 현대적인 Rust 기반 버전임
- 바로 사용할 수 있는 Docker 이미지는 없었음
- 문서에는 Docker 실행 방법이 있었지만 설정 흐름이 복잡했음
- 공식 Docker 문서에서 막힌 지점이 여러 개 있었음
grpcio와protobuf버전을google-cloud-rust-raw가 쓰는 버전과 맞추라는 안내가 있었음mozilla-rust-sdk내용을 최상위 루트 디렉터리로 수동 복사해야 했음- 저장소, Dockerfile, Makefile, CircleCI 워크플로를 확인해도 다음 절차가 명확하지 않았음
- syncstorage-rs-docker는 더 단순한 Docker 구성을 제공함
- 원래 문서에서 문제를 겪은 뒤 자체 인프라용 Docker 컨테이너를 만들었다는 설명이 있었음
- 이 구성을 기반으로 실제 서버 설정을 진행함
Docker Compose와 Caddy로 완성한 배포 구성
docker-compose.yaml에는 MariaDB와 Firefox Sync 서버 서비스를 추가함firefox_mariadb는linuxserver/mariadb:10.6.13이미지를 사용함- DB 데이터 볼륨은
/data/ffsync/dbdata:/config로 설정함 firefox_syncserver는/root/ffsync의 Dockerfile을 빌드하고8000:8000포트를 노출함- 주요 환경 변수에는
SYNC_URL,SYNC_CAPACITY,SYNC_MASTER_SECRET,METRICS_HASH_SECRET,SYNC_SYNCSTORAGE_DATABASE_URL,SYNC_TOKENSERVER_DATABASE_URL이 포함됨
- DB 비밀번호에는
"/|%"같은 특수문자를 피하는 편이 좋음- 설정 과정에서 문제가 생길 수 있었음
- 테스트 중 빌드 시간을 줄이기 위해
BUILDKIT_INLINE_CACHE인자를 Docker Compose에 추가함 - DB 초기화는 저장소를 클론한 뒤 Dockerfile과
initdb.sh를 서버로 복사하고 일부 수정해 진행함- MariaDB 컨테이너 실행:
docker-compose up -d firefox_mariadb - 초기화 스크립트 실행:
chmod +x initdb.sh ./initdb.sh - 전체 스택 실행:
docker-compose up -d
- MariaDB 컨테이너 실행:
- Caddy 리버스 프록시는 새 Sync 서버를 가리키도록 설정함
- 설정 예시는
mydomain:443에서reverse_proxy firefox_syncserver:8000으로 연결함 - DNS 엔트리를 업데이트한 뒤 Caddy를 재시작했고 Sync 서버가 동작함
- 설정 예시는
설정 중 겪은 장애와 소요 시간
- 가장 큰 문제는 MariaDB 영속 데이터였고, 컨테이너 재시작 시 필요하면 오래된 데이터를 지워야 했음
- Docker 이미지와 중간 파일이 커지면서 서버 저장공간이 부족해짐
- 올바른 절차를 찾기까지 Docker 설정을 여러 번 실험해야 했음
- 자체 Firefox Sync 서버는 Docker나 DB 관리에 익숙하지 않으면 쉽게 끝나지 않지만,
syncstorage-rs-docker같은 커뮤니티 작업 덕분에 설정 가능했음 - 전체 설정에는 약 2시간이 걸렸음