[{"data":1,"prerenderedAt":540},["ShallowReactive",2],{"docs-nav:docs_en":3,"docs-page:\u002Fen\u002Fdocs\u002Fguides\u002Fr2":158,"docs-surround:\u002Fen\u002Fdocs\u002Fguides\u002Fr2":535},[4],{"title":5,"path":6,"stem":7,"children":8,"page":74},"En","\u002Fen","en",[9],{"title":10,"path":11,"stem":12,"children":13,"page":74},"Docs","\u002Fen\u002Fdocs","en\u002Fdocs",[14,75,134],{"title":15,"icon":16,"path":17,"stem":18,"children":19,"page":74},"Guides","i-lucide-book-open","\u002Fen\u002Fdocs\u002Fguides","en\u002Fdocs\u002F1.guides",[20,25,30,35,40,44,49,54,59,64,69],{"title":21,"path":22,"stem":23,"icon":24},"Introduction","\u002Fen\u002Fdocs\u002Fguides\u002Fintroduction","en\u002Fdocs\u002F1.guides\u002F01.introduction","i-lucide-info",{"title":26,"path":27,"stem":28,"icon":29},"Quick start","\u002Fen\u002Fdocs\u002Fguides\u002Fquick-start","en\u002Fdocs\u002F1.guides\u002F02.quick-start","i-lucide-play",{"title":31,"path":32,"stem":33,"icon":34},"Add the office computers","\u002Fen\u002Fdocs\u002Fguides\u002Foffice","en\u002Fdocs\u002F1.guides\u002F03.office","i-lucide-building-2",{"title":36,"path":37,"stem":38,"icon":39},"Rendering on GPU Rental Platforms","\u002Fen\u002Fdocs\u002Fguides\u002Fcloud","en\u002Fdocs\u002F1.guides\u002F04.cloud","i-lucide-cloud",{"title":41,"path":42,"stem":43},"Configuring Cloudflare R2 Storage","\u002Fen\u002Fdocs\u002Fguides\u002Fr2","en\u002Fdocs\u002F1.guides\u002F05.r2",{"title":45,"path":46,"stem":47,"icon":48},"Run the host on a NAS","\u002Fen\u002Fdocs\u002Fguides\u002Fnas","en\u002Fdocs\u002F1.guides\u002F06.nas","i-lucide-hard-drive",{"title":50,"path":51,"stem":52,"icon":53},"Devices in different places","\u002Fen\u002Fdocs\u002Fguides\u002Fremote","en\u002Fdocs\u002F1.guides\u002F07.remote","i-lucide-globe",{"title":55,"path":56,"stem":57,"icon":58},"Get the film","\u002Fen\u002Fdocs\u002Fguides\u002Ffilm","en\u002Fdocs\u002F1.guides\u002F08.film","i-lucide-film",{"title":60,"path":61,"stem":62,"icon":63},"When files change","\u002Fen\u002Fdocs\u002Fguides\u002Fupdate","en\u002Fdocs\u002F1.guides\u002F09.update","i-lucide-refresh-cw",{"title":65,"path":66,"stem":67,"icon":68},"When the host fails or moves","\u002Fen\u002Fdocs\u002Fguides\u002Fhost","en\u002Fdocs\u002F1.guides\u002F10.host","i-lucide-server-cog",{"title":70,"path":71,"stem":72,"icon":73},"FAQ","\u002Fen\u002Fdocs\u002Fguides\u002Ffaq","en\u002Fdocs\u002F1.guides\u002F11.faq","i-lucide-circle-help",false,{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":74},"Concepts","i-lucide-box","\u002Fen\u002Fdocs\u002Fconcepts","en\u002Fdocs\u002F2.concepts",[81,86,90,95,100,105,109,114,119,124,129],{"title":82,"path":83,"stem":84,"icon":85},"Workspace and host","\u002Fen\u002Fdocs\u002Fconcepts\u002Fworkspace","en\u002Fdocs\u002F2.concepts\u002F01.workspace","i-lucide-network",{"title":87,"path":88,"stem":89,"icon":48},"Store","\u002Fen\u002Fdocs\u002Fconcepts\u002Fstorage","en\u002Fdocs\u002F2.concepts\u002F02.storage",{"title":91,"path":92,"stem":93,"icon":94},"Assets, Unpacking & On-Demand Pull","\u002Fen\u002Fdocs\u002Fconcepts\u002Fassets","en\u002Fdocs\u002F2.concepts\u002F03.assets","i-lucide-images",{"title":96,"path":97,"stem":98,"icon":99},"Projects, tasks and versions","\u002Fen\u002Fdocs\u002Fconcepts\u002Ftasks","en\u002Fdocs\u002F2.concepts\u002F04.tasks","i-lucide-list-checks",{"title":101,"path":102,"stem":103,"icon":104},"Shots and chunks","\u002Fen\u002Fdocs\u002Fconcepts\u002Fshots","en\u002Fdocs\u002F2.concepts\u002F05.shots","i-lucide-clapperboard",{"title":106,"path":107,"stem":108,"icon":58},"Films","\u002Fen\u002Fdocs\u002Fconcepts\u002Ffilm","en\u002Fdocs\u002F2.concepts\u002F06.film",{"title":110,"path":111,"stem":112,"icon":113},"Blender and FFmpeg","\u002Fen\u002Fdocs\u002Fconcepts\u002Fruntimes","en\u002Fdocs\u002F2.concepts\u002F07.runtimes","i-lucide-package",{"title":115,"path":116,"stem":117,"icon":118},"Joining and access","\u002Fen\u002Fdocs\u002Fconcepts\u002Fjoining","en\u002Fdocs\u002F2.concepts\u002F08.joining","i-lucide-key-round",{"title":120,"path":121,"stem":122,"icon":123},"Render seats","\u002Fen\u002Fdocs\u002Fconcepts\u002Fseats","en\u002Fdocs\u002F2.concepts\u002F09.seats","i-lucide-gauge",{"title":125,"path":126,"stem":127,"icon":128},"Backup and takeover","\u002Fen\u002Fdocs\u002Fconcepts\u002Fbackup","en\u002Fdocs\u002F2.concepts\u002F10.backup","i-lucide-life-buoy",{"title":130,"path":131,"stem":132,"icon":133},"Plugins","\u002Fen\u002Fdocs\u002Fconcepts\u002Fplugins","en\u002Fdocs\u002F2.concepts\u002F11.plugins","i-lucide-puzzle",{"title":135,"icon":136,"path":137,"stem":138,"children":139,"page":74},"Reference","i-lucide-library","\u002Fen\u002Fdocs\u002Freference","en\u002Fdocs\u002F3.reference",[140,145,150,154],{"title":141,"path":142,"stem":143,"icon":144},"Command line","\u002Fen\u002Fdocs\u002Freference\u002Fcli","en\u002Fdocs\u002F3.reference\u002F1.cli","i-lucide-terminal",{"title":146,"path":147,"stem":148,"icon":149},"Configuration","\u002Fen\u002Fdocs\u002Freference\u002Fconfig","en\u002Fdocs\u002F3.reference\u002F2.config","i-lucide-sliders",{"title":151,"path":152,"stem":153},"HTTP API","\u002Fen\u002Fdocs\u002Freference\u002Fapi","en\u002Fdocs\u002F3.reference\u002F3.api",{"title":155,"path":156,"stem":157},"Plugin development","\u002Fen\u002Fdocs\u002Freference\u002Fplugins","en\u002Fdocs\u002F3.reference\u002F4.plugins",{"id":159,"title":41,"body":160,"description":525,"extension":526,"meta":527,"navigation":528,"path":42,"seo":529,"stem":43,"__hash__":534},"docs_en\u002Fen\u002Fdocs\u002F1.guides\u002F05.r2.md",{"type":161,"value":162,"toc":511},"minimark",[163,168,177,185,219,223,260,264,267,339,343,346,351,361,417,421,424,453,457,460,474,481,485,493],[164,165,167],"h2",{"id":166},"why-cloudflare-r2-is-the-preferred-s3-store","Why Cloudflare R2 is the Preferred S3 Store",[169,170,171,172,176],"p",{},"When your render nodes are not in the same local network (such as remote artists working from home or rented ",[173,174,175],"a",{"href":37},"RunPod \u002F Vast.ai cloud instances","), the workspace must use object storage.",[169,178,179,180,184],{},"Among all S3-compatible storage providers, ",[181,182,183],"strong",{},"Cloudflare R2 is strongly recommended",":",[186,187,188,199,213],"ol",{},[189,190,191,194,195,198],"li",{},[181,192,193],{},"Zero Egress Fees",":\nTraditional cloud providers (like AWS S3 or Alibaba Cloud OSS) charge steep egress fees per gigabyte downloaded. When several RTX 4090 instances pull dozens of gigabytes of textures simultaneously, bandwidth fees can rapidly outpace GPU rental costs. ",[181,196,197],{},"Cloudflare R2 charges $0 for data egress",".",[189,200,201,209,210,212],{},[181,202,203,204,208],{},"Full HTTP ",[205,206,207],"code",{},"Range"," Header Support",":\ndanio uses bundled Pack volumes, allowing workers to pull only the specific entries needed for their assigned shots. R2 fully supports standard S3 ",[205,211,207],{}," requests (byte-offset reads), avoiding full-package downloads.",[189,214,215,218],{},[181,216,217],{},"Global Anycast Edge Network",":\nWhether your cloud compute nodes are deployed in North America, Europe, or East Asia, they route through Cloudflare's Anycast edge for consistent low-latency access.",[164,220,222],{"id":221},"step-1-create-an-r2-bucket","Step 1: Create an R2 Bucket",[186,224,225,234,241,247],{},[189,226,227,228,198],{},"Log into the ",[173,229,233],{"href":230,"rel":231},"https:\u002F\u002Fdash.cloudflare.com\u002F",[232],"nofollow","Cloudflare Dashboard",[189,235,236,237,240],{},"In the left navigation, select ",[181,238,239],{},"R2 Object Storage"," (if new, enable R2 with a payment card or PayPal; Cloudflare provides a generous 10 GB free tier each month).",[189,242,243,244,198],{},"Click ",[181,245,246],{},"Create bucket",[189,248,249,250,253,254,257,258,198],{},"Enter a bucket name (e.g., ",[205,251,252],{},"danio-render-store","). Leave Location as ",[181,255,256],{},"Automatic",", and click ",[181,259,246],{},[164,261,263],{"id":262},"step-2-generate-s3-compatible-api-credentials","Step 2: Generate S3-Compatible API Credentials",[169,265,266],{},"To allow danio to read and write to your bucket:",[186,268,269,276,281,310,315],{},[189,270,271,272,275],{},"In the R2 overview page, click ",[181,273,274],{},"Manage R2 API Tokens"," on the right side.",[189,277,243,278,198],{},[181,279,280],{},"Create API Token",[189,282,283,284],{},"Configure the permissions:\n",[285,286,287,296,304],"ul",{},[189,288,289,292,293,198],{},[181,290,291],{},"Permissions",": Select ",[181,294,295],{},"Object Read & Write",[189,297,298,301,302,198],{},[181,299,300],{},"Specify bucket",": Choose \"All buckets\" or restrict to ",[205,303,252],{},[189,305,306,309],{},[181,307,308],{},"TTL",": Choose an expiration or leave it persistent according to your security policy.",[189,311,243,312,314],{},[181,313,280],{}," at the bottom.",[189,316,317,318],{},"Save the generated credentials immediately (the Secret Key will not be shown again):\n",[285,319,320,325,330],{},[189,321,322],{},[181,323,324],{},"Access Key ID",[189,326,327],{},[181,328,329],{},"Secret Access Key",[189,331,332,335,336,198],{},[181,333,334],{},"S3 API Endpoint",": Looks like ",[205,337,338],{},"https:\u002F\u002F\u003Caccount_id>.r2.cloudflarestorage.com",[164,340,342],{"id":341},"step-3-configure-storage-in-danio","Step 3: Configure Storage in danio",[169,344,345],{},"Open your danio host interface:",[347,348,350],"h3",{"id":349},"scenario-a-configuring-during-workspace-creation","Scenario A: Configuring during Workspace Creation",[169,352,353,354,360],{},"On first launch or in the \"Create Workspace\" wizard, set store type to ",[181,355,356],{},[357,358,359],"ui",{},"S3"," and fill in:",[285,362,363,374,384,395,409],{},[189,364,365,370,371,198],{},[181,366,367],{},[357,368,369],{},"Endpoint",": Paste your R2 Endpoint, e.g., ",[205,372,373],{},"https:\u002F\u002Fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.r2.cloudflarestorage.com",[189,375,376,381,382,198],{},[181,377,378],{},[357,379,380],{},"Bucket",": Your bucket name, e.g., ",[205,383,252],{},[189,385,386,391,392,198],{},[181,387,388],{},[357,389,390],{},"Region",": Enter ",[205,393,394],{},"auto",[189,396,397,402,403,408],{},[181,398,399],{},[357,400,401],{},"Access Key"," & ",[181,404,405],{},[357,406,407],{},"Secret Key",": Paste your API token credentials.",[189,410,411,416],{},[181,412,413],{},[357,414,415],{},"Path style",": Leave off (R2 natively supports virtual-host and path styles).",[347,418,420],{"id":419},"scenario-b-migrating-an-existing-workspace-to-r2","Scenario B: Migrating an Existing Workspace to R2",[169,422,423],{},"If your workspace currently uses a local folder or SMB shared folder:",[186,425,426,435,441,447],{},[189,427,428,429,432,433,198],{},"Go to ",[357,430,431],{},"Workspace details"," → ",[357,434,87],{},[189,436,243,437,440],{},[357,438,439],{},"Move to…"," on the right.",[189,442,443,444,446],{},"Select ",[357,445,359],{}," and enter your R2 configuration.",[189,448,449,450,198],{},"danio migrates packs seamlessly in the background. ",[181,451,452],{},"You do not need to pause rendering or submissions during migration",[164,454,456],{"id":455},"step-4-verification-compatibility-tests","Step 4: Verification & Compatibility Tests",[169,458,459],{},"Before saving or migrating, danio automatically runs a suite of S3 compatibility checks against the endpoint:",[285,461,462,465,468,471],{},[189,463,464],{},"Signature verification (Signature v4)",[189,466,467],{},"Multipart upload (for packs larger than 16 MB)",[189,469,470],{},"Byte Range reads (HTTP Range for on-demand asset retrieval)",[189,472,473],{},"Pre-signed URL generation and SHA-256 integrity verification",[169,475,476,477,480],{},"Once verified, the store status displays as ",[357,478,479],{},"Normal",", and your workspace is ready for cloud nodes.",[164,482,484],{"id":483},"advanced-restricted-worker-credentials-optional","Advanced: Restricted Worker Credentials (Optional)",[169,486,487,488,184],{},"To safeguard sensitive studio data, danio allows entering a separate pair of ",[181,489,490],{},[357,491,492],{},"Worker keys",[186,494,495,502,508],{},[189,496,497,498,501],{},"In Cloudflare, generate another API token with ",[181,499,500],{},"Object Read"," only permission.",[189,503,504,505,507],{},"In danio's ",[357,506,87],{}," settings, expand Worker Keys and enter this read-only pair.",[189,509,510],{},"Joined cloud render nodes receive this restricted credential—they can pull needed packs but have no rights to overwrite or delete assets in the bucket.",{"title":512,"searchDepth":513,"depth":514,"links":515},"",2,3,[516,517,518,519,523,524],{"id":166,"depth":513,"text":167},{"id":221,"depth":513,"text":222},{"id":262,"depth":513,"text":263},{"id":341,"depth":513,"text":342,"children":520},[521,522],{"id":349,"depth":514,"text":350},{"id":419,"depth":514,"text":420},{"id":455,"depth":513,"text":456},{"id":483,"depth":513,"text":484},"[object Object]","md",{},true,{"title":41,"description":530},{"Configure Cloudflare R2 object storage for your workspace":531,"navigation":532},"zero egress fees, full S3 API compatibility, ideal for cloud rendering.",{"icon":533},"i-lucide-database","MVCzT6bjqiAr6S9qFa7JolCGf4qWgqUt_DFCXSg0zYI",[536,538],{"title":36,"path":37,"stem":38,"description":537,"icon":39,"children":-1},"Rent on-demand RTX 4090 GPU nodes on RunPod, Vast.ai, or AutoDL, and connect with a single command.",{"title":45,"path":46,"stem":47,"description":539,"icon":48,"children":-1},"Run the host on a NAS with Docker, with a shared folder on the NAS as the store.",1794627696229]