Firefox Sync 서버 셀프 호스팅
(blog.diego.dev)-
자체 호스팅 Firefox Sync 서버 설정
- Firefox에서 LibreWolf로 전환한 후, 자체 호스팅 Firefox Sync 서버에 관심을 가지게 됨.
- 처음에는 Mozilla의 Sync Server 저장소를 찾았으나, 유지보수가 중단된 상태였음.
- Rust 기반의
syncstorage-rs
로 전환하여 진행하기로 결정함.
-
Docker의 복잡성과 혼란
- Docker 문서에서
grpcio
와protobuf
버전 일치 문제와 수동 복사 지시사항 등 혼란스러운 부분이 있었음. -
syncstorage-rs-docker
저장소를 발견하여 더 간단한 Docker 설정을 찾게 됨.
- Docker 문서에서
-
서버 설정: Docker Compose와 MariaDB
-
docker-compose.yaml
파일에 필요한 서비스를 추가함. - 데이터베이스 비밀번호 설정 시 특수 문자를 피하는 것이 중요함.
- MariaDB 컨테이너를 실행하고 초기화 스크립트를 실행하여 데이터베이스를 초기화함.
- 전체 스택을 온라인으로 가져옴.
-
-
Caddy를 사용한 Reverse Proxy 구성
- Caddy reverse proxy를 업데이트하여 새로운 Syncserver로 포인트함.
- DNS 항목을 업데이트하고 프록시를 재시작하여 서버를 실행함.
-
직면한 도전 과제
- MariaDB 컨테이너 재시작 시 데이터 지속성 문제 발생.
- Docker 이미지와 중간 파일로 인해 서버 저장 공간 부족 문제 발생.
- 올바른 설정 단계를 찾는 데 시간이 걸림.
-
최종 생각
- 자체 호스팅 Firefox Sync 서버 설정은 쉬운 작업이 아님.
- 공식 문서는 혼란스러웠지만,
syncstorage-rs-docker
저장소 덕분에 가능했음. - 약 2시간이 소요되었지만, 그만한 가치가 있었음.
Hacker News 의견
- Mozilla 인프라를 사용하여 인증, 이메일, 계정 메타데이터 등의 서비스를 지원하는 설정임
- 계정 마이그레이션이 가능하다면 나중에 이를 연결할 수 있으며, 모든 구성 요소를 자체 호스팅하는 것도 가능하지만 조금 더 복잡함
- 문서와 개발 경험이 개선되고 있음
- Garuda Linux는 FireDragon 브라우저를 위해 자체 Firefox Sync 서버를 호스팅하고 있음
- Rust 기반이 아닌 이전 버전의 sync 서버를 사용 중임
- 개인 경험을 공유하며, 이전 Python 2로 작성된 버전이 훨씬 나았다고 언급함
- Docker나 Python이 필요하지 않지만, 현재 MySQL이 필요하며, sqlite 지원을 위한 자원봉사자가 있음
- 주요 기여자들은 메트릭 수집을 위한 정당성을 작성하고 새로운 메트릭 프레임워크를 도입하는 데 집중하고 있음
- Canvas Browser Extensions는 브라우저 탭을 자체 호스팅된 가상 디렉토리 트리에 동기화하는 것을 목표로 함
- lmdb와 roaring bitmap 인덱스를 사용하며, rxdb나 pouchdb를 사용했어야 했다고 회고함
- 서버 구성 요소가 재작성 중이며, 새로운 도구로 인해 아이디어의 가장 큰 제한 요소는 시간이 됨
- Mozilla를 신뢰하여 데이터를 맡기지만, 인증 설정이 복잡하여 공공 호스팅 서비스를 사용하는 것이 더 나을 수 있음
- Firefox Sync와 유사한 Floccus는 북마크와 탭 동기화만 필요하다면 설정이 간단함
- MySQL과 Spanner가 현재 지원되는 DB 엔진이며, sqlite와 Postgres 지원을 위한 노력이 진행 중임
- 다중 사용자 인스턴스는 Postgres를 통해 저장하는 것이 더 나을 수 있음
- Firefox Sync가 E2E 암호화되어 있어 프라이버시 이점이 무엇인지 질문함
- 자체 호스팅 솔루션이 너무 복잡해 보이며, SQLite를 사용하는 간단한 동기화 서버 구현이 이상적임
- go-syncstorage는 완전히 배포되지는 않았지만 수십만 명의 사용자와 함께 테스트되었으며 안정적임