[{"data":1,"prerenderedAt":633},["ShallowReactive",2],{"docs-nav":3,"content-query-MwHoYuhZDH":249},[4,8,11,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,243,246],{"_path":5,"title":6,"order":7},"/docs/getting-started","Getting Started",1,{"_path":9,"title":10,"order":7},"/docs/self-hosting/all-in-one","All-in-One Setup",{"_path":12,"title":13,"order":7},"/docs/views/grid","Grid View",{"_path":15,"title":16,"order":17},"/docs/core-concepts","Core Concepts",10,{"_path":19,"title":20,"order":21},"/docs/crdt","What is a CRDT?",11,{"_path":23,"title":24,"order":25},"/docs/self-hosting/separate-containers","Separate Containers Setup",2,{"_path":27,"title":28,"order":29},"/docs/interface-overview","Interface Overview",20,{"_path":31,"title":32,"order":33},"/docs/global-search","Global Search",22,{"_path":35,"title":36,"order":37},"/docs/filters","Filters",24,{"_path":39,"title":40,"order":41},"/docs/sorting","Sorting",25,{"_path":43,"title":44,"order":45},"/docs/tagging-and-selection","Tagging & Selection",26,{"_path":47,"title":48,"order":49},"/docs/quick-view","Quick View",28,{"_path":51,"title":52,"order":53},"/docs/self-hosting/remote-access-tailscale","Remote Access with Tailscale",3,{"_path":55,"title":56,"order":57},"/docs/block-actions","Block Actions",30,{"_path":59,"title":60,"order":61},"/docs/deleting-blocks","Deleting Blocks & Trash",32,{"_path":63,"title":64,"order":65},"/docs/self-hosting","Self-Hosting",4,{"_path":67,"title":68,"order":69},"/docs/managing-heaps","Managing Heaps",40,{"_path":71,"title":72,"order":73},"/docs/file-scanning","File Scanning & Importing",42,{"_path":75,"title":76,"order":77},"/docs/storage-management","Storage Management",44,{"_path":79,"title":80,"order":81},"/docs/daily-notes","Daily Notes & Calendar",46,{"_path":83,"title":84,"order":85},"/docs/views","Views",60,{"_path":87,"title":88,"order":89},"/docs/authentication","Authentication & User Management",70,{"_path":91,"title":92,"order":93},"/docs/licenses-privacy","Licenses & Privacy",72,{"_path":95,"title":96,"order":97},"/docs/faq","FAQ",80,{"_path":99,"title":100,"order":101},"/docs/changelog","Changelog",99,{"_path":103,"title":104},"/docs/changelog/v16.16.15","v16.16.15",{"_path":106,"title":107},"/docs/changelog/v16.16.34","v16.16.34",{"_path":109,"title":110},"/docs/changelog/v16.16.28","v16.16.28",{"_path":112,"title":113},"/docs/changelog/v16.16.35","v16.16.35",{"_path":115,"title":116},"/docs/changelog/v16.16.32","v16.16.32",{"_path":118,"title":119},"/docs/changelog/v16.8.0","v16.8.0",{"_path":121,"title":122},"/docs/changelog/v16.16.8","v16.16.8",{"_path":124,"title":125},"/docs/changelog/v16.16.27","v16.16.27",{"_path":127,"title":128},"/docs/changelog/v16.16.41","v16.16.41",{"_path":130,"title":131},"/docs/changelog/v16.16.11","v16.16.11",{"_path":133,"title":134},"/docs/changelog/v16.16.14","v16.16.14",{"_path":136,"title":137},"/docs/changelog/v16.16.17","v16.16.17",{"_path":139,"title":140},"/docs/changelog/v16.16.10","v16.16.10",{"_path":142,"title":143},"/docs/changelog/v16.16.20","v16.16.20",{"_path":145,"title":146},"/docs/changelog/v16.6.0","v16.6.0",{"_path":148,"title":149},"/docs/changelog/v16.16.22","v16.16.22",{"_path":151,"title":152},"/docs/changelog/v16.16.6","v16.16.6",{"_path":154,"title":155},"/docs/changelog/v16.16.36","v16.16.36",{"_path":157,"title":158},"/docs/changelog/v16.16.18","v16.16.18",{"_path":160,"title":161},"/docs/changelog/v16.16.38","v16.16.38",{"_path":163,"title":164},"/docs/changelog/v16.16.1","v16.16.1",{"_path":166,"title":167},"/docs/changelog/v16.16.12","v16.16.12",{"_path":169,"title":170},"/docs/changelog/v16.16.31","v16.16.31",{"_path":172,"title":173},"/docs/changelog/v16.16.40","v16.16.40",{"_path":175,"title":176},"/docs/changelog/v16.7.0","v16.7.0",{"_path":178,"title":179},"/docs/changelog/v16.9.0","v16.9.0",{"_path":181,"title":182},"/docs/changelog/v16.16.4","v16.16.4",{"_path":184,"title":185},"/docs/changelog/v16.16.13","v16.16.13",{"_path":187,"title":188},"/docs/changelog/v16.16.37","v16.16.37",{"_path":190,"title":191},"/docs/changelog/v16.16.9","v16.16.9",{"_path":193,"title":194},"/docs/changelog/v16.16.25","v16.16.25",{"_path":196,"title":197},"/docs/changelog/v16.16.24","v16.16.24",{"_path":199,"title":200},"/docs/changelog/v16.16.3","v16.16.3",{"_path":202,"title":203},"/docs/changelog/v16.10.0","v16.10.0",{"_path":205,"title":206},"/docs/changelog/v16.16.16","v16.16.16",{"_path":208,"title":209},"/docs/changelog/v16.16.33","v16.16.33",{"_path":211,"title":212},"/docs/changelog/v16.16.26","v16.16.26",{"_path":214,"title":215},"/docs/changelog/v16.16.43","v16.16.43",{"_path":217,"title":218},"/docs/changelog/v16.11.0","v16.11.0",{"_path":220,"title":221},"/docs/changelog/v16.16.29","v16.16.29",{"_path":223,"title":224},"/docs/changelog/v16.16.5","v16.16.5",{"_path":226,"title":227},"/docs/changelog/v16.16.39","v16.16.39",{"_path":229,"title":230},"/docs/changelog/v16.16.2","v16.16.2",{"_path":232,"title":233},"/docs/changelog/v16.16.7","v16.16.7",{"_path":235,"title":236},"/docs/changelog/v16.16.23","v16.16.23",{"_path":238,"title":239},"/docs/changelog/v16.16.0","v16.16.0",{"_path":241,"title":242},"/docs/changelog/v16.16.30","v16.16.30",{"_path":244,"title":245},"/docs/changelog/v16.16.21","v16.16.21",{"_path":247,"title":248},"/docs/changelog/v16.16.19","v16.16.19",{"_path":71,"_dir":250,"_draft":251,"_partial":251,"_locale":252,"title":72,"description":253,"order":73,"body":254,"_type":627,"_id":628,"_source":629,"_file":630,"_stem":631,"_extension":632},"docs",false,"","Scan local folders, mount storage, and import files into Heaper",{"type":255,"children":256,"toc":616},"root",[257,265,271,278,324,330,335,348,361,367,374,388,394,412,418,423,594,600,605,611],{"type":258,"tag":259,"props":260,"children":262},"element","h1",{"id":261},"file-scanning-importing",[263],{"type":264,"value":72},"text",{"type":258,"tag":266,"props":267,"children":268},"p",{},[269],{"type":264,"value":270},"Heaper can scan local folders and external storage to create blocks for your files. The original files stay in place — Heaper creates lightweight references with thumbnails and metadata. This is a server only feature to have a central place for your data that is easy to back up.",{"type":258,"tag":272,"props":273,"children":275},"h2",{"id":274},"how-file-scanning-works",[276],{"type":264,"value":277},"How File Scanning Works",{"type":258,"tag":279,"props":280,"children":281},"ol",{},[282,294,304,314],{"type":258,"tag":283,"props":284,"children":285},"li",{},[286,292],{"type":258,"tag":287,"props":288,"children":289},"strong",{},[290],{"type":264,"value":291},"Scan",{"type":264,"value":293}," — Heaper's backend walks the filesystem and discovers files and folders",{"type":258,"tag":283,"props":295,"children":296},{},[297,302],{"type":258,"tag":287,"props":298,"children":299},{},[300],{"type":264,"value":301},"Index",{"type":264,"value":303}," — For each file, a block is created with metadata (name, size, hash, MIME type, dimensions)",{"type":258,"tag":283,"props":305,"children":306},{},[307,312],{"type":258,"tag":287,"props":308,"children":309},{},[310],{"type":264,"value":311},"Thumbnails",{"type":264,"value":313}," — Preview images are generated in multiple sizes (small, medium, large)",{"type":258,"tag":283,"props":315,"children":316},{},[317,322],{"type":258,"tag":287,"props":318,"children":319},{},[320],{"type":264,"value":321},"Deduplicate",{"type":264,"value":323}," — Files are identified by their SHA-256 content hash, so duplicates are detected automatically",{"type":258,"tag":272,"props":325,"children":327},{"id":326},"mounting-storage-self-hosted",[328],{"type":264,"value":329},"Mounting Storage (Self-Hosted)",{"type":258,"tag":266,"props":331,"children":332},{},[333],{"type":264,"value":334},"If you're self-hosting, you can mount additional storage directories into the Heaper container. Heaper is a multi-user setup, so the folder structure is as follows. First the user id, then the heap id.",{"type":258,"tag":336,"props":337,"children":342},"pre",{"className":338,"code":340,"language":341,"meta":252},[339],"language-yaml","services:\n  heaper:\n    volumes:\n      - /mnt/MyBigDisk:/mnt/storage # general storage mount on your drive\n      - /mnt/MySSD:/mnt/thumbnails # fast storage for thumbnails\n      - /path/to/your/documents:/mnt/storage/USERID/HEAPID/documents # put a folder in your heap\n      - /path/to/your/fullheap:/mnt/storage/USERID/HEAPID # or the whole heap to a folder\n      - /path/to/your/photos:/mnt/storage/photos:ro     # Read-only mount\n","yaml",[343],{"type":258,"tag":344,"props":345,"children":346},"code",{"__ignoreMap":252},[347],{"type":264,"value":340},{"type":258,"tag":266,"props":349,"children":350},{},[351,353,359],{"type":264,"value":352},"After mounting, trigger a scan to index the new files. The ",{"type":258,"tag":344,"props":354,"children":356},{"className":355},[],[357],{"type":264,"value":358},":ro",{"type":264,"value":360}," (read-only) flag is only recommended if you do not want to manage/delete/create files through Heaper.",{"type":258,"tag":272,"props":362,"children":364},{"id":363},"importing-files",[365],{"type":264,"value":366},"Importing Files",{"type":258,"tag":368,"props":369,"children":371},"h3",{"id":370},"desktop",[372],{"type":264,"value":373},"Desktop",{"type":258,"tag":375,"props":376,"children":377},"ul",{},[378,383],{"type":258,"tag":283,"props":379,"children":380},{},[381],{"type":264,"value":382},"Drag and drop files into the content area",{"type":258,"tag":283,"props":384,"children":385},{},[386],{"type":264,"value":387},"Use the plus button in the bottom navigation, then choose to Media to upload any file from your filesystem",{"type":258,"tag":368,"props":389,"children":391},{"id":390},"mobile",[392],{"type":264,"value":393},"Mobile",{"type":258,"tag":375,"props":395,"children":396},{},[397,402,407],{"type":258,"tag":283,"props":398,"children":399},{},[400],{"type":264,"value":401},"Use the plus button in the bottom navigation, to select files from your device's file picker",{"type":258,"tag":283,"props":403,"children":404},{},[405],{"type":264,"value":406},"Use the plus button in the bottom navigation, then choose to Media to upload any file from your gallery.",{"type":258,"tag":283,"props":408,"children":409},{},[410],{"type":264,"value":411},"Share files from other apps directly into Heaper",{"type":258,"tag":272,"props":413,"children":415},{"id":414},"file-metadata",[416],{"type":264,"value":417},"File Metadata",{"type":258,"tag":266,"props":419,"children":420},{},[421],{"type":264,"value":422},"For each scanned or imported file, Heaper stores:",{"type":258,"tag":424,"props":425,"children":426},"table",{},[427,446],{"type":258,"tag":428,"props":429,"children":430},"thead",{},[431],{"type":258,"tag":432,"props":433,"children":434},"tr",{},[435,441],{"type":258,"tag":436,"props":437,"children":438},"th",{},[439],{"type":264,"value":440},"Field",{"type":258,"tag":436,"props":442,"children":443},{},[444],{"type":264,"value":445},"Description",{"type":258,"tag":447,"props":448,"children":449},"tbody",{},[450,467,483,499,515,531,547,562,578],{"type":258,"tag":432,"props":451,"children":452},{},[453,462],{"type":258,"tag":454,"props":455,"children":456},"td",{},[457],{"type":258,"tag":287,"props":458,"children":459},{},[460],{"type":264,"value":461},"Name",{"type":258,"tag":454,"props":463,"children":464},{},[465],{"type":264,"value":466},"Original filename",{"type":258,"tag":432,"props":468,"children":469},{},[470,478],{"type":258,"tag":454,"props":471,"children":472},{},[473],{"type":258,"tag":287,"props":474,"children":475},{},[476],{"type":264,"value":477},"Hash",{"type":258,"tag":454,"props":479,"children":480},{},[481],{"type":264,"value":482},"SHA-256 content hash",{"type":258,"tag":432,"props":484,"children":485},{},[486,494],{"type":258,"tag":454,"props":487,"children":488},{},[489],{"type":258,"tag":287,"props":490,"children":491},{},[492],{"type":264,"value":493},"MIME Type",{"type":258,"tag":454,"props":495,"children":496},{},[497],{"type":264,"value":498},"File type (image/jpeg, video/mp4, etc.)",{"type":258,"tag":432,"props":500,"children":501},{},[502,510],{"type":258,"tag":454,"props":503,"children":504},{},[505],{"type":258,"tag":287,"props":506,"children":507},{},[508],{"type":264,"value":509},"File Size",{"type":258,"tag":454,"props":511,"children":512},{},[513],{"type":264,"value":514},"Size in bytes",{"type":258,"tag":432,"props":516,"children":517},{},[518,526],{"type":258,"tag":454,"props":519,"children":520},{},[521],{"type":258,"tag":287,"props":522,"children":523},{},[524],{"type":264,"value":525},"Width / Height",{"type":258,"tag":454,"props":527,"children":528},{},[529],{"type":264,"value":530},"Dimensions (for images and videos)",{"type":258,"tag":432,"props":532,"children":533},{},[534,542],{"type":258,"tag":454,"props":535,"children":536},{},[537],{"type":258,"tag":287,"props":538,"children":539},{},[540],{"type":264,"value":541},"Duration",{"type":258,"tag":454,"props":543,"children":544},{},[545],{"type":264,"value":546},"Length (for audio and video)",{"type":258,"tag":432,"props":548,"children":549},{},[550,557],{"type":258,"tag":454,"props":551,"children":552},{},[553],{"type":258,"tag":287,"props":554,"children":555},{},[556],{"type":264,"value":311},{"type":258,"tag":454,"props":558,"children":559},{},[560],{"type":264,"value":561},"Generated previews at multiple sizes",{"type":258,"tag":432,"props":563,"children":564},{},[565,573],{"type":258,"tag":454,"props":566,"children":567},{},[568],{"type":258,"tag":287,"props":569,"children":570},{},[571],{"type":264,"value":572},"Scan Date",{"type":258,"tag":454,"props":574,"children":575},{},[576],{"type":264,"value":577},"When the file was indexed",{"type":258,"tag":432,"props":579,"children":580},{},[581,589],{"type":258,"tag":454,"props":582,"children":583},{},[584],{"type":258,"tag":287,"props":585,"children":586},{},[587],{"type":264,"value":588},"Exif Data",{"type":258,"tag":454,"props":590,"children":591},{},[592],{"type":264,"value":593},"EXIF data for images",{"type":258,"tag":272,"props":595,"children":597},{"id":596},"folder-structure",[598],{"type":264,"value":599},"Folder Structure",{"type":258,"tag":266,"props":601,"children":602},{},[603],{"type":264,"value":604},"Heaper preserves the folder hierarchy from scanned directories. Just the client maps these different to the synced folders to be more space and write-efficient.",{"type":258,"tag":272,"props":606,"children":608},{"id":607},"re-scanning",[609],{"type":264,"value":610},"Re-Scanning",{"type":258,"tag":266,"props":612,"children":613},{},[614],{"type":264,"value":615},"When files change on disk, re-scanning updates the metadata and thumbnails. New files are added, and modified files are updated based on their content hash. Deleted files are not automatically removed — this prevents accidental data loss if a drive is temporarily disconnected.",{"title":252,"searchDepth":25,"depth":25,"links":617},[618,619,620,624,625,626],{"id":274,"depth":25,"text":277},{"id":326,"depth":25,"text":329},{"id":363,"depth":25,"text":366,"children":621},[622,623],{"id":370,"depth":53,"text":373},{"id":390,"depth":53,"text":393},{"id":414,"depth":25,"text":417},{"id":596,"depth":25,"text":599},{"id":607,"depth":25,"text":610},"markdown","content:docs:file-scanning.md","content","docs/file-scanning.md","docs/file-scanning","md",1774954235589]