1import{b as d,j as e,B as l,b1 as c,aQ as m,V as u,bZ as h,a9 as n,aa as x,a8 as b,da as p,e as f,g,r as v,C as y,W as j}from"./index-Vg2u0Hz9.js";import{H as k}from"./Helmet-Bo5NJ3zT.js";import"./index-DUgSznSO.js";const S=` 2## Linux / macOS 3 4\`\`\`bash 5squidfs \\ 6 -key cb_your_api_key_here \\ 7 -mount /mnt/squidfs 8\`\`\` 9 10### Linux Requirements 11 12Install FUSE support: 13 14\`\`\`bash 15# Debian / Ubuntu 16sudo apt-get install fuse3 17sudo usermod -aG fuse $USER 18 19# Arch Linux 20sudo pacman -S fuse3 21\`\`\` 22 23### macOS Requirements 24 25Install macFUSE: 26 27\`\`\`bash 28brew install --cask macfuse 29\`\`\` 30 31## Windows 32 33\`\`\`bash 34squidfs \\ 35 -key cb_your_api_key_here \\ 36 -webdav 37\`\`\` 38 39Then map the network drive: 40 41\`\`\`cmd 42net use Z: http://localhost:8080 43\`\`\` 44 45For FUSE support on Windows, install WinFSP from winfsp.dev. 46 47## Termux / Android 48 49\`\`\`bash 50squidfs \\ 51 -key cb_your_api_key_here \\ 52 -webdav 53\`\`\` 54 55WebDAV mode only - FUSE is not available on Android. 56 57## Command Line Options 58 59| Option | Description | Default | 60|--------|-------------|---------| 61| \`-key\` | SquidCloud API key (cb_...) | (required) | 62| \`-url\` | SquidCloud project URL | (built-in) | 63| \`-mount\` | Mount point path | \`/mnt/squidfs\` | 64| \`-cache-dir\` | Cache directory | \`~/.squidfs/cache\` | 65| \`-cache-size\` | Cache size in bytes | \`104857600\` (100MB) | 66| \`-byok\` | BYOK encryption passphrase | (disabled) | 67| \`-webdav\` | Use WebDAV mode | \`false\` | 68| \`-port\` | WebDAV server port | \`8080\` | 69| \`-version\` | Show version | | 70| \`-help\` | Show help | | 71 72## BYOK Encryption 73 74Enable zero-knowledge encryption with your own key: 75 76\`\`\`bash 77squidfs \\ 78 -key cb_your_api_key_here \\ 79 -byok "your-encryption-passphrase" \\ 80 -mount /mnt/squidfs 81\`\`\` 82 83Your key never leaves your device. If you lose it, your files cannot be recovered. 84 85### V3 Encryption 86 87SquidFS uses V3 HKDF key hierarchy: 88 89- **Per-file keys** derived from master key 90- **Per-chunk keys** derived from file key 91- **Deterministic IVs** for each chunk 92- **AEAD** with authenticated additional data 93 94## Caching 95 96SquidFS caches files locally for fast repeated access. Files are served from cache when available. 97 98### Cache Location 99 100\`\`\`bash 101~/.squidfs/cache/ 102\`\`\` 103 104### Clear Cache 105 106\`\`\`bash 107rm -rf ~/.squidfs/cache/ 108\`\`\` 109 110### Adjust Cache Size 111 112\`\`\`bash 113squidfs -cache-size 536870912 ... # 512MB 114squidfs -cache-size 1073741824 ... # 1GB 115\`\`\` 116 117## Troubleshooting 118 119### "permission denied" on mount 120 121\`\`\`bash 122# Linux 123sudo usermod -aG fuse $USER 124# Log out and back in 125 126# macOS 127# Reinstall macFUSE and grant permissions in System Preferences 128\`\`\` 129 130### Files not appearing 131 132Refresh the directory listing: 133 134\`\`\`bash 135ls -la /mnt/squidfs 136\`\`\` 137 138Check your API key and network connection if files still don't appear. 139 140### Slow performance 141 142- Increase cache size: \`-cache-size 1073741824\` 143- Use FUSE mode instead of WebDAV when possible 144- Ensure stable network connection 145`;function o({text:t}){const[r,s]=v.useState(!1),a=async()=>{await navigator.clipboard.writeText(t),s(!0),setTimeout(()=>s(!1),2e3)};return e.jsx("button",{onClick:a,className:"absolute top-2 right-2 p-1.5 rounded-md bg-muted/80 hover:bg-muted text-muted-foreground hover:text-foreground transition-colors","aria-label":"Copy code",children:r?e.jsx(y,{className:"h-3.5 w-3.5 text-green-500"}):e.jsx(j,{className:"h-3.5 w-3.5"})})}function N(){const t=d();return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(k,{children:e.jsx("title",{children:"SquidFS - Mount as Local Disk - SquidCloud"})}),e.jsxs("div",{className:"container mx-auto px-4 py-12 max-w-4xl",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-8",children:[e.jsx(l,{variant:"ghost",size:"icon",onClick:()=>t(-1),className:"shrink-0",children:e.jsx(c,{className:"h-4 w-4"})}),e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold text-foreground flex items-center gap-2.5",children:[e.jsx(m,{className:"h-5 w-5 text-[#4FC3F7]"}),"SquidFS"]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-0.5",children:"Mount SquidCloud storage as a local filesystem"})]})]}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8",children:[{icon:u,label:"Linux",method:"FUSE",status:"available"},{icon:h,label:"macOS",method:"FUSE",status:"available"},{icon:n,label:"Windows",method:"WebDAV",status:"available"},{icon:x,label:"Termux",method:"WebDAV",status:"available"}].map(({icon:r,label:s,method:a,status:i})=>e.jsxs("div",{className:"rounded-lg border border-border bg-card p-4 text-center",children:[e.jsx(r,{className:"h-5 w-5 mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:s}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a}),e.jsx("span",{className:"inline-block mt-1.5 px-1.5 py-0.5 text-[10px] font-medium bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400 rounded",children:i})]},s))}),e.jsxs("div",{className:"rounded-lg border border-border bg-card p-5 mb-8",children:[e.jsxs("h3",{className:"text-sm font-semibold text-foreground mb-2 flex items-center gap-2",children:[e.jsx(b,{className:"h-4 w-4 text-[#4FC3F7]"}),"Quick Install"]}),e.jsxs("div",{className:"relative",children:[e.jsx("pre",{className:"bg-muted rounded-md p-3 text-sm overflow-x-auto",children:e.jsx("code",{children:"go install github.com/NaveenSingh9999/squidfs/cmd/squidfs@latest"})}),e.jsx(o,{text:"go install github.com/NaveenSingh9999/squidfs/cmd/squidfs@latest"})]})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 mb-8",children:[{icon:p,label:"FUSE on Linux/macOS",desc:"Native performance with kernel-level caching"},{icon:n,label:"WebDAV Fallback",desc:"Works everywhere including Windows and Termux"},{icon:f,label:"V3 HKDF Encryption",desc:"Per-file and per-chunk key derivation"}].map(({icon:r,label:s,desc:a})=>e.jsxs("div",{className:"rounded-lg border border-border bg-card p-4",children:[e.jsx(r,{className:"h-4 w-4 text-[#4FC3F7] mb-2"}),e.jsx("p",{className:"text-sm font-medium text-foreground",children:s}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a})]},s))}),e.jsx("div",{className:"prose prose-sm dark:prose-invert max-w-none",children:S.split("## ").slice(1).map(r=>{const s=r.split(` 146`)[0]?.trim(),a=r.split(` 147`).slice(1).join(` 148`).trim();if(!s)return null;const i=a.startsWith("```");return e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-lg font-bold text-foreground mb-4 pb-2 border-b border-border",children:s}),e.jsx("div",{className:"space-y-3",children:i?e.jsxs("div",{className:"relative",children:[e.jsx("pre",{className:"bg-muted rounded-lg p-4 text-sm overflow-x-auto leading-relaxed",children:e.jsx("code",{children:a.replace(/```(bash|cmd)?\n?/g,"").trim()})}),e.jsx(o,{text:a.replace(/```(bash|cmd)?\n?/g,"").trim()})]}):e.jsx("div",{className:"text-sm text-muted-foreground leading-relaxed whitespace-pre-wrap font-mono text-[13px]",children:a})})]},s)})}),e.jsx("div",{className:"mt-16 pt-8 border-t border-border text-center",children:e.jsxs("p",{className:"text-xs text-muted-foreground",children:[e.jsx(g,{to:"/",className:"hover:text-foreground transition-colors",children:"SquidCloud"})," ","| SquidFS"," ",e.jsx("a",{href:"https://github.com/NaveenSingh9999/squidfs",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-4 text-[#4FC3F7]/80 hover:text-[#4FC3F7] transition-colors",children:"View on GitHub"})]})})]})]})}export{N as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.