सामग्री पर जाएँ

क्लाउड संग्रहण

क्लाउड घर उपयोगकर्ता के अपने संग्रहण की एक जगह है। हर प्रदाता coven के उसी संग्रहण interface से चलता है; प्रदाताओं में फर्क प्रमाणीकरण और दूसरे उपकरण को पहुंच देने के तरीके का है।

प्रदाताप्रमाणीकरणनए उपकरण के लिए पहुंच
S3-compatibleAccess कुंजी + secretinvite में रखे credentials
Google DriveOAuth (PKCE)जुड़ने वाले खाते से साझा फोल्डर
DropboxOAuth (PKCE)जुड़ने वाले खाते से साझा फोल्डर
OneDriveOAuth (PKCE)जुड़ने वाले खाते से साझा फोल्डर
iCloud (CloudKit)Apple ID, sign-in नहींजुड़ने वाले द्वारा स्वीकार किया गया CloudKit share

S3-compatible में AWS, Backblaze B2, Cloudflare R2, Wasabi, MinIO और API बोलने वाली कोई भी चीज आती है; bucket, region, endpoint और कुंजी prefix बदले जा सकते हैं, और config save होने से पहले bucket जांची जाती है ताकि typo setup पर ही विफल हो, पहले समन्वय पर नहीं। OAuth providers केवल पूरी bae edition में होते हैं; baeium builds उन्हें compile out करते हैं।

Sign-in public client के रूप में PKCE वाला authorization-code flow है। Desktop पर redirect एक callback के लिए स्थानीय port से bound loopback server पर आता है; mobile पर ऐप custom-scheme redirect पकड़ता है। bae काम के लिए प्रदाता द्वारा दी गई सबसे सीमित scope मांगता है; Google Drive पर इसका मतलब केवल उन फाइलों तक पहुंच है जिन्हें ऐप खुद बनाता है। Tokens OS keyring में रखे जाते हैं, प्रदाता के refresh grant से refreshed होते हैं, और rejected refresh शांत retry loop के बजाय reconnect prompt के रूप में दिखता है।

CloudKit को किसी flow की जरूरत नहीं: प्लेटफ़ॉर्म का CloudKit driver, जो ऐप में implement होता है और core को दिया जाता है, signed-in Apple ID के रूप में काम करता है।

घर के भीतर coven हर उपकरण की changeset streams, snapshot generations, membership records और blob namespaces सजाता है। bae तीन blob namespaces देता है: release_files, covers, और artist_images

Objects किस कुंजी से रखे जाते हैं यह घर के संग्रहण mode पर निर्भर करता है, जो creation पर fixed होता है:

  • अपारदर्शी: objects encrypted होते हैं और content-derived कुंजियां के नीचे रखे जाते हैं, जो कुछ उजागर नहीं करतीं। यह पूरा भरोसा cryptography पर रखने वाला mode है; देखें एन्क्रिप्शन
  • ब्राउज-योग्य: objects plaintext में readable paths पर रखे जाते हैं, जो हर blob के लिए अपलोड time पर दर्ज होते हैं: release_files/{artist}/{album}/{filename}, covers/{album}/{release}/cover.{ext}, artist_images/{artist}/artist.{ext}। Bucket उपयोगी फ़ाइल tree की तरह भी काम करता है; बदले में encryption और membership नहीं मिलते, इसलिए ब्राउज-योग्य घर दूसरे लोगों के साथ साझा नहीं किए जा सकते।

असली networks में व्यवहार

इस अनुभाग का लिंक

प्लेबैक के लिए पढ़ाई ranged होती है: player पूरी फाइलों के बजाय जरूरी बाइट खिड़कियां stream करता है। Size threshold से ऊपर अपलोड, प्रदाता support करे तो multipart जाते हैं। Rate limiting और transient provider errors exponential backoff से retry होते हैं, प्रदाता ने retry-after दिया हो तो उसका पालन करते हुए; expired OAuth टोकन वहीं refresh होते हैं। समन्वय outbox restart के बाद भी बचा रहता है: ऐप quit करने से interrupted अपलोड restart नहीं, resume होता है।