DROPBOX_ENABLED: "true"일 때만 시작됩니다.
- web(
dropbox모듈): 계정 연결, 프로젝트의 Dropbox 대화 상자, Dropbox가 호출하는 웹훅. - third-party-datastore: 파드 내부의 독립 서비스로, Dropbox로 보내거나 Dropbox에서 가져올 변경 사항의 큐를 처리합니다.
- document-updater: Dropbox가 켜져 있으면 모든 사용자가 프로젝트를 떠난 지 몇 분 후에 에디터의 변경 사항을 백그라운드에서 MongoDB에 기록합니다. 그 이후에야 변경 사항이 Dropbox로 전송됩니다.
구성
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true"와 Git 연동의 git-bridge StatefulSet이 준비되어 있어야 합니다. 그렇지 않으면 계정 설정에서 프로젝트 동기화 섹션이 숨겨집니다.2
Secret
DROPBOX_TOKEN_CIPHER_PASSWORD는 MongoDB에 저장되는 사용자의 Dropbox 토큰을 암호화합니다. 모든 레플리카가 같은 값을 사용해야 하며, 나중에 이 값을 변경하면 모든 사용자가 Dropbox를 다시 연결해야 합니다.3
데이터베이스 인덱스 만들기
데이터베이스 인덱스 만들기의 인덱스 명령을 레플리카 세트의 프라이머리에서 한 번 실행하세요.
4
적용 및 재시작
third-party-datastore.log는 DROPBOX_ENABLED가 "true"일 때만 존재합니다.5
웹훅을 인터넷에 공개하기
Dropbox는 인터넷에서 그런 다음 Toolkit 페이지에 설명된 대로 Dropbox App Console에서 웹훅을 추가하세요.
${OVERLEAF_SITE_URL}/dropbox/webhook에 접근할 수 있어야 합니다. 인그레스나 로드 밸런서가 외부에서 일부 경로나 네트워크만 허용한다면 이 경로를 허용하세요. Dropbox가 호출하는 유일한 경로입니다. 클러스터 외부에서 확인하세요.여러 레플리카
공유DROPBOX_TOKEN_CIPHER_PASSWORD 외에는 추가 작업이 없습니다.
- 웹훅은 어느 레플리카에든 도착할 수 있습니다. 웹훅은 변경 사항을 Redis의 큐에 넣기만 합니다.
- 모든 레플리카가 third-party-datastore를 실행하며, 각각 공유 큐를 처리합니다. 사용자의 큐는 Redis의 잠금으로 가져가므로, 특정 사용자의 변경 사항은 한 번에 하나의 레플리카만 보내거나 가져옵니다.
- 모든 레플리카의 document-updater가 유휴 프로젝트를 백그라운드에서 기록합니다. 각 프로젝트는 Redis의 공유 목록에서 가져가므로 한 번만 기록됩니다.

