Claude Memory Sync: 서버
저장소:
- 서버 (현재): https://github.com/le0nardomartins/ClaudeMemorySync-Server
- 클라이언트 (머신마다 하나): https://github.com/le0nardomartins/ClaudeMemorySync.
claude-memory-sync스킬을 포함하며, 3-way 병합을 수행하고 모든 데이터를SYNC_KEY로 암호화하며, 개인 Git 저장소를 백엔드로 사용하는 서버리스 모드도 지원합니다.
서버는 병합하지 않으며 콘텐츠를 읽을 수 없습니다. 봉인된 매니페스트와 블롭을 저장하며, 새 버전이 최신 버전을 기반으로 구축된 경우에만 수락합니다(그렇지 않으면 409 conflict).
필요 시 이 폴더의 문서를 읽으십시오:
deploy.md: Railway 또는 다른 호스트에 배포, 업데이트api.md: 디버깅을 위한 프로토콜operations.md: 쿼리 및 유지보수, 백업, 해지, 진단을 위한 SQL
서버 로그 메시지는 포르투갈어로 되어 있습니다. operations.md에 각 메시지와 그 의미가 나열되어 있습니다.
항상 적용되는 규칙
- 데이터. 머신에
SYNC_KEY가 있으면 데이터베이스는 암호화된 데이터만 보유합니다.SYNC_KEY가 없으면 사용자의 API 키를 보유합니다. 어느 경우든 Postgres를 공개적으로 노출하지 말고DATABASE_URL을 공유하지 마십시오. - 키.
CLIENT_PUBLIC_KEYS는 공개 키만 보유하며, 표시해도 됩니다.CLIENT_PRIVATE_KEY와SYNC_KEY는 절대 서버나 채팅에 제공되지 않습니다. - 먼저 확인 배포, 푸시, Railway 변수 변경,
TRUNCATE,DELETE또는 되돌릴 수 없는 다른 작업 전에 반드시 확인하십시오. 데이터를 건드리기 전에 백업(pg_dump,operations.md참조)하십시오. - 프로토콜 일치. 클라이언트와 서버는 동일한 프로토콜 버전을 실행해야 합니다. 하나가 업데이트되면 사용자에게 모든 머신에서 다른 쪽도 업데이트하도록 알리십시오.
- 서버를 재설정해도 머신의 데이터는 삭제되지 않습니다. 각 머신은 로컬에 자체 기준을 유지하고 다음 라운드에서 모든 것을 다시 업로드합니다. 모든 머신에서 파일을 제거하려면 한 머신에서만 삭제하면 충분합니다. 이를 위해 서버를 건드릴 필요가 없습니다.
작업
초기 배포
deploy.md → "Railway"를 따르십시오. 사용자는 다음을 수행해야 합니다:
- 대시보드에서 프로젝트와 Postgres를 생성하거나 Railway CLI 사용을 허용합니다.
- 공개 키를 붙여넣습니다.
마지막에 로그에서 memory server na porta ... | PCs autorizados: ...를 찾으십시오.
머신 인증
- 머신에서 키를 생성합니다:
python src/components/remote_client.py keygen <name>(클라이언트) 또는npm run keygen -- <name>(여기). <name>:<base64>를CLIENT_PUBLIC_KEYS에 쉼표로 구분하여 추가하고, 다른 키는 제거하지 마십시오.- Railway가 자동으로 재시작됩니다. 로그에 해당 이름이
PCs autorizados에 나타나는지 확인하십시오.
머신 해지
CLIENT_PUBLIC_KEYS에서 해당 항목을 제거하십시오. 머신이 손상된 경우, 사용자에게 모든 머신에서 SYNC_KEY를 교체(클라이언트 문제 해결)하고 히스토리를 재설정(operations.md)하는 과정을 안내하십시오.
문제 해결
서비스 로그(Railway 대시보드 또는 railway logs)를 읽고 operations.md → "진단"과 비교하십시오. 클라이언트 측에서 파일은 sync.log입니다. 409 뒤에 201이 오는 것은 정상입니다.
데이터베이스 쿼리 또는 유지보수
operations.md의 쿼리를 사용하십시오. 일회성 액세스의 경우 railway connect Postgres를 사용하십시오. 읽기 전용 쿼리를 선호하고 쓰기 작업은 확인을 받으십시오.
서버 업데이트
- 저장소에 푸시합니다. Railway는
Dockerfile에서 배포합니다. 마이그레이션은 시작 시 실행됩니다(db.migrate). - 그런 다음 사용자에게 클라이언트를 업데이트하도록 요청하십시오.