[{"data":1,"prerenderedAt":3109},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fvault":3,"docs-nav":102},{"id":4,"title":5,"body":6,"description":93,"extension":94,"meta":95,"navigation":96,"path":98,"seo":99,"stem":100,"__hash__":101},"docs\u002Fdocs\u002Fvault.md","Vault",{"type":7,"value":8,"toc":86},"minimark",[9,13,17,22,47,50,54,66,70],[10,11,5],"h1",{"id":12},"vault",[14,15,16],"p",{},"Quark's vault is a place to store passwords and other sensitive notes on hardware you own.\nIt lives on your drive, encrypted. It is not a password manager running on our servers.",[18,19,21],"h2",{"id":20},"soft-launch-basics","Soft-launch basics",[23,24,25,29,37,40],"ol",{},[26,27,28],"li",{},"Open Vault while you are on your home network and signed in to Quark.",[26,30,31,32,36],{},"Choose a ",[33,34,35],"strong",{},"master password"," you will remember. Write it down and store it safely.",[26,38,39],{},"Add, edit, or remove entries in the app.",[26,41,42,43,46],{},"Import or export when you need to move a backup — if you export a protected backup, you\nchoose a recovery password ",[33,44,45],{},"at export time"," (not a one-time phrase from setup).",[14,48,49],{},"There is no forgot-password button for the vault. If you forget the master password, that\nvault data is gone. That is intentional.",[18,51,53],{"id":52},"what-this-is-not","What this is not",[55,56,57,60,63],"ul",{},[26,58,59],{},"Not a browser-extension autofill suite (do not expect that yet)",[26,61,62],{},"Not reachable from outside your home network unless an admin turns on remote access",[26,64,65],{},"Not a hosted cloud password product",[18,67,69],{"id":68},"related","Related",[55,71,72,80],{},[26,73,74,79],{},[75,76,78],"a",{"href":77},"\u002Fdocs\u002Fsecurity-guide","Security Guide"," — master password, 3-2-1 backups, limits",[26,81,82],{},[75,83,85],{"href":84},"\u002Fdocs\u002Fgetting-started","Getting Started",{"title":87,"searchDepth":88,"depth":88,"links":89},"",2,[90,91,92],{"id":20,"depth":88,"text":21},{"id":52,"depth":88,"text":53},{"id":68,"depth":88,"text":69},"Keep passwords on your Quark — encrypted on your drive, unlocked with a master password","md",{},{"title":5,"order":97},9,"\u002Fdocs\u002Fvault",{"title":5,"description":93},"docs\u002Fvault","ovrkbA_j9OzGH4hgPHbAUGN25eNUTCGF6MUIRFKqa2k",[103,983,1364,1539,1674,2551,2662,2917,2972],{"id":104,"title":85,"body":105,"description":977,"extension":94,"meta":978,"navigation":979,"path":84,"seo":980,"stem":981,"__hash__":982},"docs\u002Fdocs\u002Fgetting-started.md",{"type":7,"value":106,"toc":950},[107,110,113,116,120,123,134,137,148,151,246,252,255,262,274,279,296,299,307,310,312,316,332,341,344,347,349,352,355,359,362,397,401,404,431,435,449,452,480,484,487,489,493,510,513,515,519,545,559,561,565,568,593,608,616,620,626,629,649,652,659,661,665,668,688,690,694,701,703,705,713,715,719,738,758,761,763,767,790,833,843,857,860,866,869,872,874,878,887,891,904,917,919,923],[10,108,85],{"id":109},"getting-started",[14,111,112],{},"This guide is day-to-day Quark — set up the box, open it from your phone or laptop, and move files around. No terminal\nrequired.",[114,115],"hr",{},[18,117,119],{"id":118},"set-up-the-hardware-non-nerd-path","Set up the hardware (non-nerd path)",[14,121,122],{},"What you need:",[55,124,125,128,131],{},[26,126,127],{},"Your Quark device (or a supported box you've installed Quark on)",[26,129,130],{},"A free ethernet port on your home router (preferred) or WiFi if your setup uses that",[26,132,133],{},"A phone or computer on the same home network",[14,135,136],{},"Worth having, though not required to finish setup:",[55,138,139],{},[26,140,141,144,145,147],{},[33,142,143],{},"A spare USB drive or external hard drive."," Quark works fine without one, but everything then lives on a single\ndevice. If that device fails, the files go with it. A second drive you copy the irreplaceable folders onto is the\ncheapest insurance there is — see the ",[75,146,78],{"href":77},".",[14,149,150],{},"Steps:",[23,152,153,156,159,162,172,180,186,205,228],{},[26,154,155],{},"Plug Quark into power and into your router.",[26,157,158],{},"Attach any extra storage you want Quark to manage.",[26,160,161],{},"Wait a minute for it to come up.",[26,163,164,165,171],{},"On a phone or computer already on that home WiFi, open a browser and go to ",[33,166,167],{},[168,169,170],"code",{},"https:\u002F\u002Fquark.local"," (or the\nhostname you were given at setup).",[26,173,174,175,179],{},"Your browser will warn you that the connection is not private. That is expected — see\n",[75,176,178],{"href":177},"#your-browser-warns-you-the-connection-is-not-private","below",". Continue past it.",[26,181,182,183,147],{},"Read the terms. They are the first screen, before anything else. The page opens with a plain-language summary —\n\"Your files stay on your Quark\", \"Keep your own backup\", \"It's for your household\" — and then the full terms, which\nare what you accept. Click ",[33,184,185],{},"I Agree",[26,187,188,189,192,193,196,197,200,201,204],{},"Create your owner account. The setup screen asks for a ",[33,190,191],{},"Username",", a ",[33,194,195],{},"Password"," of at least 8 characters, and\n",[33,198,199],{},"Confirm password",". Click ",[33,202,203],{},"Create account",". Pick a password you will remember, and write it down.",[26,206,207,208,211,212,215,216,219,220,223,224,227],{},"When you reach ",[33,209,210],{},"Choose your theme",", pick ",[33,213,214],{},"System",", ",[33,217,218],{},"Light",", or ",[33,221,222],{},"Dark"," and click ",[33,225,226],{},"Get started",". You can\nchange it later in Settings.",[26,229,230,231,234,235,215,238,241,242,245],{},"You land on ",[33,232,233],{},"Files",", with a welcome card offering ",[33,236,237],{},"Upload",[33,239,240],{},"New folder",", and ",[33,243,244],{},"Open Vault",". The card stays\nuntil you dismiss it.",[14,247,248,249,147],{},"The account you create here is the owner. It is the first admin — the account that manages the Quark. Everyone else in\nthe house gets their own account, which an admin adds from ",[33,250,251],{},"Settings → Account → Users and groups",[14,253,254],{},"The terms come up once per Quark. Connect to a different Quark and you are asked again.",[14,256,257,258,261],{},"If a brand-new Quark shows you the sign-in screen instead of setup, click ",[33,259,260],{},"First time here? Set up this Quark"," under\nthe form. Setup and sign-in both show which Quark you are connected to, so you can switch if the address is wrong.",[14,263,264,265,219,269,273],{},"If the page won't load: same WiFi as Quark, Quark powered on, try restarting the router once. Still stuck? See\n",[75,266,268],{"href":267},"\u002Fdocs\u002Fhelp","Help",[75,270,272],{"href":271},"\u002Fdocs\u002Fnerd-notes","Nerd Notes"," if you're installing from a release yourself.",[275,276,278],"h3",{"id":277},"your-browser-warns-you-the-connection-is-not-private","Your browser warns you the connection is not private",[14,280,281,282,285,286,289,290,285,293,147],{},"The first time you open Quark, your browser shows a warning — \"Your connection is not private,\" or a crossed-out\npadlock. Click ",[33,283,284],{},"Advanced",", then ",[33,287,288],{},"Proceed",". On Safari, ",[33,291,292],{},"Show Details",[33,294,295],{},"visit this website",[14,297,298],{},"This is the one place where owning your own hardware is slightly less smooth than renting someone else's, so it is worth\nunderstanding rather than just clicking through.",[14,300,301,302,306],{},"Quark encrypts the connection from the moment you plug it in, using a certificate it generates for itself on first boot.\nThe encryption is real. What your browser is objecting to is that nobody ",[303,304,305],"em",{},"vouched"," for the certificate — normally a\ncertificate authority on the public internet does that, and it can only do so for a public address. Your Quark lives on\nyour WiFi and has no public address, which is the entire point of it.",[14,308,309],{},"So the warning means \"this certificate was not countersigned by a stranger,\" not \"this connection is insecure.\" On your\nown network, talking to your own box, you are the one vouching for it. Your browser will remember once you proceed.",[114,311],{},[18,313,315],{"id":314},"accessing-quark-day-to-day","Accessing Quark day to day",[23,317,318,321,329],{},[26,319,320],{},"Open a browser on a device on your home WiFi",[26,322,323,324,328],{},"Go to ",[33,325,326],{},[168,327,170],{}," (or your hostname)",[26,330,331],{},"Sign in with your username and password",[333,334,335],"blockquote",{},[14,336,337,340],{},[33,338,339],{},"Tip:"," Bookmark the address so you don't have to type it every time.",[14,342,343],{},"Quark keeps you signed in on that device. A sign-in lasts about a month if you stop using it, and three months at the\nmost. After that, Quark asks you to sign in again.",[14,345,346],{},"Quark is built for your home network by default — that's intentional.",[114,348],{},[18,350,233],{"id":351},"files",[14,353,354],{},"Files is the file browser — open it from the app drawer. Same idea as Google Drive or iCloud, except the files are on\nyour drive at home.",[275,356,358],{"id":357},"where-files-opens","Where Files opens",[14,360,361],{},"That depends on your account:",[55,363,364,382],{},[26,365,366,369,370,373,374,377,378,381],{},[33,367,368],{},"A member"," lands in their own folder, with shortcuts to ",[33,371,372],{},"My files"," and ",[33,375,376],{},"Groups"," (the folders of the groups you\nbelong to). ",[33,379,380],{},"Shared with me"," appears once someone has shared something with you.",[26,383,384,387,388,215,390,392,393,396],{},[33,385,386],{},"An admin"," lands at the top of everything on the Quark, with shortcuts to ",[33,389,372],{},[33,391,376],{},", and\n",[33,394,395],{},"All files",". An admin can open every folder, including other people's.",[275,398,400],{"id":399},"browsing-your-files","Browsing your files",[14,402,403],{},"You'll see your files and folders listed. You can:",[55,405,406,412,425],{},[26,407,408,411],{},[33,409,410],{},"Click a folder"," to open it",[26,413,414,417,418,373,421,424],{},[33,415,416],{},"Click a file"," to open it. Where Quark has a viewer or editor for that kind of file, it opens there. Otherwise you\nget a details view with ",[33,419,420],{},"Download",[33,422,423],{},"Open with…"," buttons.",[26,426,427,430],{},[33,428,429],{},"Use the breadcrumb bar"," at the top to move back up the folder tree. A member's own folder is as far up as it goes.",[275,432,434],{"id":433},"changing-the-view","Changing the view",[55,436,437,443],{},[26,438,439,442],{},[33,440,441],{},"List"," — a compact row-by-row view, good for lots of files",[26,444,445,448],{},[33,446,447],{},"Grid"," — larger thumbnails, good for photos",[14,450,451],{},"The views menu in the top bar holds the rest:",[55,453,454,460,466],{},[26,455,456,459],{},[33,457,458],{},"Filter devices"," — choose which drives to show",[26,461,462,465],{},[33,463,464],{},"Layout"," — List or Grid again",[26,467,468,471,472,475,476,479],{},[33,469,470],{},"Grouping"," — ",[33,473,474],{},"Unified"," shows all your drives together; ",[33,477,478],{},"Per-device"," lists each drive separately",[275,481,483],{"id":482},"searching-for-a-file","Searching for a file",[14,485,486],{},"Click the search icon in the top bar and type a filename. Files will search across all your connected storage.",[114,488],{},[18,490,492],{"id":491},"uploading-files","Uploading files",[23,494,495,498,504,507],{},[26,496,497],{},"Navigate to the folder you want to upload into",[26,499,500,501,503],{},"Click the ",[33,502,237],{}," button in the top bar",[26,505,506],{},"Choose your files from your device",[26,508,509],{},"Wait for the upload to complete — a progress indicator will show you how it's going",[14,511,512],{},"You can upload multiple files at once. Large files may take a moment depending on your home network speed.",[114,514],{},[18,516,518],{"id":517},"creating-folders-and-files","Creating folders and files",[23,520,521,524,542],{},[26,522,523],{},"Navigate to where you want the new folder or file",[26,525,526,527,529,530,533,534,537,538,541],{},"Click ",[33,528,240],{}," or ",[33,531,532],{},"New file"," in the top bar. On a phone, tap ",[33,535,536],{},"Create"," to open the ",[33,539,540],{},"Add to this folder","\nsheet instead.",[26,543,544],{},"Type a name and confirm",[14,546,547,549,550,215,553,219,556,147],{},[33,548,532],{}," asks which kind you want: ",[33,551,552],{},"Document",[33,554,555],{},"Spreadsheet",[33,557,558],{},"Generic File",[114,560],{},[18,562,564],{"id":563},"moving-renaming-and-deleting","Moving, renaming, and deleting",[14,566,567],{},"Open a file or folder's menu from its three-dot button, with a right-click, or with a long press on mobile. From there\nyou can:",[55,569,570,575,581,587],{},[26,571,572,574],{},[33,573,420],{}," — save a copy to the device you are using",[26,576,577,580],{},[33,578,579],{},"Move\u002FRename"," — one entry for both: change the name, or move it somewhere else",[26,582,583,586],{},[33,584,585],{},"Share…"," — give another account on this Quark access",[26,588,589,592],{},[33,590,591],{},"Delete"," — send it to Trash",[14,594,595,596,599,600,603,604,607],{},"A few entries only appear where they apply: ",[33,597,598],{},"Extract here"," on an archive, ",[33,601,602],{},"Convert video"," on a video, and\n",[33,605,606],{},"Navigate to folder"," on a search result.",[14,609,610,611,529,613,615],{},"Your own home folder and a group's folder stay where they are, so a member is not offered ",[33,612,579],{},[33,614,591],{},"\non those. Everything inside them has the full menu.",[275,617,619],{"id":618},"trash","Trash",[14,621,622,623,625],{},"Deleted files and folders go to ",[33,624,619],{}," — open it from the app drawer. Each row shows where the item came from and\nhow many days are left before Quark removes it for good.",[14,627,628],{},"From Trash you can:",[55,630,631,637,643],{},[26,632,633,636],{},[33,634,635],{},"Restore"," — put it back where it was (if something new already sits at that path, move or rename the new thing\nfirst; restore will not overwrite)",[26,638,639,642],{},[33,640,641],{},"Delete permanently"," — remove it now, with a confirm step",[26,644,645,648],{},[33,646,647],{},"Empty trash"," — clear everything shown (also confirms)",[14,650,651],{},"You can open folders inside Trash to browse what was inside them. Files in Trash do not preview or open — they are\nonly there to restore or let go.",[14,653,654,655,658],{},"Items stay recoverable for about ",[33,656,657],{},"30 days",", then an automatic sweep deletes them for good. Treat that window as a\nchange-your-mind period, not long-term storage.",[114,660],{},[18,662,664],{"id":663},"storage-devices","Storage devices",[14,666,667],{},"Quark can manage multiple storage devices (hard drives, USB drives) connected to it. If you have more than one:",[55,669,670,679,685],{},[26,671,672,673,675,676,678],{},"Set ",[33,674,470],{}," to ",[33,677,474],{}," in the views menu to see everything in one place",[26,680,681,682,684],{},"Set it to ",[33,683,478],{}," to see what's on each drive separately",[26,686,687],{},"When uploading, you may be prompted to choose which device to upload to",[114,689],{},[18,691,693],{"id":692},"photos","Photos",[14,695,696,697,700],{},"The Photos section shows your images organized by time. See ",[75,698,693],{"href":699},"\u002Fdocs\u002Fphotos"," for browsing and uploading from your\nphone on the home network.",[114,702],{},[18,704,5],{"id":12},[14,706,707,708,710,711,147],{},"Quark includes an encrypted password vault on your hardware. See ",[75,709,5],{"href":98}," for soft-launch\nsetup (master password only — no recovery phrase). Details on limits live in the\n",[75,712,78],{"href":77},[114,714],{},[18,716,718],{"id":717},"health","Health",[14,720,721,722,724,725,727,728,215,730,733,734,737],{},"Health is a tab on the ",[33,723,214],{}," page. Open ",[33,726,214],{}," from the app drawer; it has three tabs: ",[33,729,718],{},[33,731,732],{},"Storage","\nand ",[33,735,736],{},"Jobs",". The Health tab shows you how Quark is doing:",[55,739,740,746,752],{},[26,741,742,745],{},[33,743,744],{},"Disk usage"," — how much storage space is used vs. available",[26,747,748,751],{},[33,749,750],{},"Temperature"," — the device's current temperature (important for small devices like a Raspberry Pi)",[26,753,754,757],{},[33,755,756],{},"Uptime"," — how long the device has been running",[14,759,760],{},"If anything looks off (disk nearly full, temperature very high), this is where you'll see it first.",[114,762],{},[18,764,766],{"id":765},"settings","Settings",[14,768,769,770,215,773,215,776,215,779,373,782,785,786,789],{},"Settings is split into tabs. Everyone sees ",[33,771,772],{},"General",[33,774,775],{},"Account",[33,777,778],{},"Network",[33,780,781],{},"Updates",[33,783,784],{},"About",". Admins also\nget a ",[33,787,788],{},"Features"," tab while something is in beta.",[55,791,792,797,809,814,823,828],{},[26,793,794,796],{},[33,795,772],{}," — which Quark the app connects to, theme, and a link to your drives",[26,798,799,471,801,804,805,808],{},[33,800,775],{},[33,802,803],{},"Sign out"," and a list of your ",[33,806,807],{},"Sessions",", where you can sign out a session you no longer use",[26,810,811,813],{},[33,812,778],{}," — remote access and connected devices",[26,815,816,818,819,822],{},[33,817,781],{}," — the installed version and available updates, and where an admin installs one. There is also an\n",[33,820,821],{},"Automatic updates"," switch (admins only), but it does not make Quark update itself yet; see below",[26,824,825,827],{},[33,826,784],{}," — the app's version, Help & Support, and the terms",[26,829,830,832],{},[33,831,788],{}," — admins only, and only while Quark has a beta feature: a switch to turn each one on or off",[14,834,835,836,839,840,842],{},"Deleting your account and resetting the Quark live behind the ",[33,837,838],{},"Account and data"," row at the bottom of the ",[33,841,775],{},"\ntab, so neither is a stray tap away:",[55,844,845,851],{},[26,846,847,850],{},[33,848,849],{},"Delete account"," — removes your login from this Quark (separate from wiping the box). Your files stay on the Quark.",[26,852,853,856],{},[33,854,855],{},"Reset this Quark"," — admins only. Factory-resets the appliance when that is what you actually mean.",[14,858,859],{},"Deleting an account and resetting the Quark are different on purpose: one removes your login; the other can wipe data on\nthe device. Read the confirmations carefully.",[14,861,862,863,865],{},"Quark does not update itself in this version, and the ",[33,864,821],{}," switch on the Updates tab does not change\nthat. Updating is a manual step an admin starts from that tab, so look in on the Updates tab now and then.",[14,867,868],{},"Security fixes for the operating system underneath are different: they install on their own, with no setting to turn\non. They leave the kernel — the core of the operating system — as it is, and they never restart the box by themselves.",[14,870,871],{},"Quark's routine contact with the public internet is fetching those operating system security fixes. It looks for new\nQuark versions only when someone opens the Updates tab. Optional features (remote access, which is off until an admin\nturns it on; imports you start yourself) are separate from that default.",[114,873],{},[18,875,877],{"id":876},"signing-out","Signing out",[14,879,323,880,883,884,886],{},[33,881,882],{},"Settings → Account"," and choose ",[33,885,803],{}," when you're done. This is good practice on shared devices.",[275,888,890],{"id":889},"where-am-i-signed-in","Where am I signed in?",[14,892,893,894,896,897,899,900,903],{},"Under ",[33,895,803],{},", the ",[33,898,807],{}," card lists everywhere your account is signed in, with when each session signed in\nand when it was last used. The one you are using is marked ",[33,901,902],{},"This session",". Rows show times only — there is no device\nor browser name to look for.",[55,905,906,911],{},[26,907,908,910],{},[33,909,803],{}," on a row ends that session. Whoever is using it has to sign in again.",[26,912,913,916],{},[33,914,915],{},"Sign out everywhere else"," ends every session except the one you are using.",[114,918],{},[18,920,922],{"id":921},"next-steps","Next steps",[55,924,925,931,936,943],{},[26,926,927,930],{},[75,928,929],{"href":267},"Help & Support"," — troubleshooting and how to get in touch",[26,932,933,935],{},[75,934,78],{"href":77}," — passwords, backups, and limits",[26,937,938,942],{},[75,939,941],{"href":940},"\u002Fdocs\u002Fhow-it-works","How It Works"," — local-first explained plainly",[26,944,945,949],{},[75,946,948],{"href":947},"\u002Fdocs\u002Fgoogle-takeout","Google Takeout"," — moving Photos\u002FDrive exports onto Quark",{"title":87,"searchDepth":88,"depth":88,"links":951},[952,956,957,963,964,965,968,969,970,971,972,973,976],{"id":118,"depth":88,"text":119,"children":953},[954],{"id":277,"depth":955,"text":278},3,{"id":314,"depth":88,"text":315},{"id":351,"depth":88,"text":233,"children":958},[959,960,961,962],{"id":357,"depth":955,"text":358},{"id":399,"depth":955,"text":400},{"id":433,"depth":955,"text":434},{"id":482,"depth":955,"text":483},{"id":491,"depth":88,"text":492},{"id":517,"depth":88,"text":518},{"id":563,"depth":88,"text":564,"children":966},[967],{"id":618,"depth":955,"text":619},{"id":663,"depth":88,"text":664},{"id":692,"depth":88,"text":693},{"id":12,"depth":88,"text":5},{"id":717,"depth":88,"text":718},{"id":765,"depth":88,"text":766},{"id":876,"depth":88,"text":877,"children":974},[975],{"id":889,"depth":955,"text":890},{"id":921,"depth":88,"text":922},"Get up and running with Quark — setup, files, and finding your way around",{},{"title":85,"order":88},{"title":85,"description":977},"docs\u002Fgetting-started","fsgtAMuoAsClF8WwYEFxwQvCwKctBsH-R2TtLo9RxRI",{"id":984,"title":985,"body":986,"description":1356,"extension":94,"meta":1357,"navigation":1358,"path":947,"seo":1361,"stem":1362,"__hash__":1363},"docs\u002Fdocs\u002Fgoogle-takeout.md","Migrating from Google — Google Takeout Guide",{"type":7,"value":987,"toc":1347},[988,991,998,1000,1004,1066,1069,1085,1087,1091,1094,1105,1107,1111,1114,1142,1149,1151,1155,1158,1181,1213,1216,1218,1222,1229,1246,1248,1252,1258,1264,1270,1290,1292,1296,1299,1326,1329,1331],[10,989,985],{"id":990},"migrating-from-google-google-takeout-guide",[14,992,993,994,997],{},"Google Takeout lets you download a copy of everything you've stored with Google — your photos, Drive files, emails,\nand more. This guide walks you through exporting your Google data and importing it into Quark, where it lives\n",[33,995,996],{},"on your own hardware, on your own home network"," — not on anyone else's server.",[114,999],{},[18,1001,1003],{"id":1002},"step-1-request-your-google-takeout-export","Step 1: Request your Google Takeout export",[23,1005,1006,1017,1037,1042,1048,1061],{},[26,1007,323,1008,1016],{},[33,1009,1010],{},[75,1011,1015],{"href":1012,"rel":1013},"https:\u002F\u002Ftakeout.google.com",[1014],"nofollow","takeout.google.com"," (sign in if prompted)",[26,1018,1019,1020],{},"You'll see a list of Google products. Deselect everything, then check only the ones you want:\n",[55,1021,1022,1028,1034],{},[26,1023,1024,1027],{},[33,1025,1026],{},"Google Photos"," — your photos and videos",[26,1029,1030,1033],{},[33,1031,1032],{},"Google Drive"," — documents, spreadsheets, and files",[26,1035,1036],{},"(You can add others later — start small for your first export)",[26,1038,526,1039],{},[33,1040,1041],{},"Next step",[26,1043,1044,1045],{},"Under \"Delivery method,\" choose ",[33,1046,1047],{},"Send download link via email",[26,1049,1050,1051,1056,1057,1060],{},"Set file type to ",[33,1052,1053],{},[168,1054,1055],{},".zip"," and choose a size — ",[33,1058,1059],{},"2 GB"," works well (larger sizes can be harder to upload)",[26,1062,526,1063],{},[33,1064,1065],{},"Create export",[14,1067,1068],{},"Google will take anywhere from a few minutes to a few days to prepare your export, depending on how much data you\nhave. You'll get an email when it's ready.",[333,1070,1071],{},[14,1072,1073,1076,1077,1080,1081,1084],{},[33,1074,1075],{},"Heads up:"," Large Google Photos libraries often split into multiple zip files (e.g. ",[168,1078,1079],{},"takeout-20240101-001.zip",",\n",[168,1082,1083],{},"takeout-20240101-002.zip","). That's normal — just repeat the upload steps below for each one.",[114,1086],{},[18,1088,1090],{"id":1089},"step-2-download-your-export","Step 2: Download your export",[14,1092,1093],{},"When Google emails you that your export is ready:",[23,1095,1096,1099,1102],{},[26,1097,1098],{},"Open the email from Google",[26,1100,1101],{},"Click the download link for each zip file",[26,1103,1104],{},"Save them somewhere you can find them (your Downloads folder works fine)",[114,1106],{},[18,1108,1110],{"id":1109},"step-3-upload-to-quark","Step 3: Upload to Quark",[14,1112,1113],{},"Quark runs on your home network — your files go from your computer directly to the device in your home, without\npassing through the internet or any cloud service.",[23,1115,1116,1119,1124,1131,1134,1139],{},[26,1117,1118],{},"Make sure you're connected to your home WiFi",[26,1120,1121,1122],{},"Open Quark in your browser and navigate to ",[33,1123,233],{},[26,1125,1126,1127,1130],{},"Create a folder for your Google data if you want to keep things organized (e.g. ",[168,1128,1129],{},"Google Import",")",[26,1132,1133],{},"Navigate into that folder",[26,1135,526,1136,1138],{},[33,1137,237],{}," and select your Takeout zip file(s)",[26,1140,1141],{},"Wait for the upload to complete — large files may take a few minutes depending on your home network speed",[333,1143,1144],{},[14,1145,1146,1148],{},[33,1147,339],{}," You can upload multiple zip files at once by selecting them all in the file picker.",[114,1150],{},[18,1152,1154],{"id":1153},"step-4-extract-the-contents","Step 4: Extract the contents",[14,1156,1157],{},"Once uploaded, your zip file is sitting in Quark but still compressed. To get your actual photos and files out:",[23,1159,1160,1166,1173,1178],{},[26,1161,1162,1163,1165],{},"Find the uploaded ",[168,1164,1055],{}," file in the Files view",[26,1167,1168,1169,1172],{},"Right-click it (or tap the ",[33,1170,1171],{},"⋮"," menu)",[26,1174,1175,1176],{},"Select ",[33,1177,598],{},[26,1179,1180],{},"Quark will unpack the zip in place — this may take a moment for large archives",[333,1182,1183],{},[14,1184,1185,1188,1189,1191,1192,1195,1196,1199,1200,1202,1203,215,1206,215,1209,1212],{},[33,1186,1187],{},"About Google Photos' nested structure:"," Google Photos exports put your photos inside a folder called\n",[168,1190,1026],{},", then inside year folders like ",[168,1193,1194],{},"Photos from 2022",". Inside each year folder you'll find your photos\nalongside ",[168,1197,1198],{},".json"," sidecar files containing metadata. The ",[168,1201,1198],{}," files are Google's metadata — you can keep them or\ndelete them; your actual photos are the ",[168,1204,1205],{},".jpg",[168,1207,1208],{},".heic",[168,1210,1211],{},".mp4",", etc. files.",[14,1214,1215],{},"After extraction you can delete the original zip file to reclaim space.",[114,1217],{},[18,1219,1221],{"id":1220},"step-5-browse-your-files","Step 5: Browse your files",[14,1223,1224,1225,1228],{},"Your photos and documents are now stored on ",[33,1226,1227],{},"your device, in your home"," — not on Google's servers, not on anyone\nelse's. You can access them from any device connected to your home WiFi:",[55,1230,1231,1237,1243],{},[26,1232,1233,1234,1236],{},"Browse them in the ",[33,1235,233],{}," section",[26,1238,1239,1240,1242],{},"View photos in the ",[33,1241,693],{}," section (Quark automatically finds images in your files)",[26,1244,1245],{},"Access them from any phone, tablet, or computer on your home network",[114,1247],{},[18,1249,1251],{"id":1250},"tips","Tips",[14,1253,1254,1257],{},[33,1255,1256],{},"Start with a small export first."," Export just one year of photos to get comfortable with the process before\nimporting everything.",[14,1259,1260,1263],{},[33,1261,1262],{},"Multiple zip files?"," Upload and extract each one the same way. Google splits large libraries into separate zips —\nthey all contain different files, so you want to import all of them.",[14,1265,1266,1269],{},[33,1267,1268],{},"Zip inside a zip?"," Google sometimes packages exports as a zip containing other zips. If you see nested zips after\nextracting, just extract those too — Quark handles zip extraction at any level.",[14,1271,1272,1275,1276,1080,1279,215,1282,1285,1286,1289],{},[33,1273,1274],{},"What about Google Docs files?"," Google Docs, Sheets, and Slides export as Microsoft Office formats (",[168,1277,1278],{},".docx",[168,1280,1281],{},".xlsx",[168,1283,1284],{},".pptx",") or as ",[168,1287,1288],{},".pdf",". They'll show up in your files just like any other document.",[114,1291],{},[18,1293,1295],{"id":1294},"what-about-other-google-services","What about other Google services?",[14,1297,1298],{},"This guide covers Photos and Drive, but Google Takeout supports many other products. Once you're comfortable with\nthe process, you can also export:",[55,1300,1301,1311,1320],{},[26,1302,1303,1306,1307,1310],{},[33,1304,1305],{},"Gmail"," (as ",[168,1308,1309],{},".mbox"," format) — email clients like Thunderbird can import these",[26,1312,1313,1306,1316,1319],{},[33,1314,1315],{},"Google Calendar",[168,1317,1318],{},".ics",") — most calendar apps can import these",[26,1321,1322,1325],{},[33,1323,1324],{},"YouTube"," — your videos, watch history, and liked videos",[14,1327,1328],{},"Quark is primarily a file and photo manager, so the Photos and Drive exports are the most useful to store there\ndirectly.",[114,1330],{},[14,1332,1333],{},[303,1334,1335,1336,1341,1342,147],{},"Need help? Visit the ",[75,1337,1340],{"href":1338,"rel":1339},"https:\u002F\u002Fautobutler.org\u002Fsupport",[1014],"support page"," or\n",[75,1343,1346],{"href":1344,"rel":1345},"https:\u002F\u002Fautobutler.org\u002Fcommunity",[1014],"community forums",{"title":87,"searchDepth":88,"depth":88,"links":1348},[1349,1350,1351,1352,1353,1354,1355],{"id":1002,"depth":88,"text":1003},{"id":1089,"depth":88,"text":1090},{"id":1109,"depth":88,"text":1110},{"id":1153,"depth":88,"text":1154},{"id":1220,"depth":88,"text":1221},{"id":1250,"depth":88,"text":1251},{"id":1294,"depth":88,"text":1295},"How to export your data from Google and import it into Quark using Google Takeout",{},{"title":1359,"order":1360},"Google Takeout Guide",6,{"title":985,"description":1356},"docs\u002Fgoogle-takeout","hJ21XNwStIhopSJrVUEWFH-YV-SFSDmj4POmRLBBTog",{"id":1365,"title":929,"body":1366,"description":1533,"extension":94,"meta":1534,"navigation":1535,"path":267,"seo":1536,"stem":1537,"__hash__":1538},"docs\u002Fdocs\u002Fhelp.md",{"type":7,"value":1367,"toc":1521},[1368,1371,1373,1377,1381,1398,1402,1421,1425,1438,1442,1445,1451,1455,1479,1483,1486,1490,1497,1499,1503,1513],[10,1369,929],{"id":1370},"help-support",[114,1372],{},[18,1374,1376],{"id":1375},"troubleshooting","Troubleshooting",[275,1378,1380],{"id":1379},"i-cant-reach-quark-in-my-browser","I can't reach Quark in my browser",[55,1382,1383,1386,1389,1395],{},[26,1384,1385],{},"Make sure Quark is powered on",[26,1387,1388],{},"Make sure you're on the same WiFi network as your Quark device",[26,1390,1391,1392,1394],{},"Try ",[168,1393,170],{}," — if you changed the hostname during setup, use that instead",[26,1396,1397],{},"Try restarting your router and your Quark device",[275,1399,1401],{"id":1400},"my-browser-says-the-connection-is-not-private","My browser says the connection is not private",[14,1403,1404,1405,285,1407,1409,1410,285,1412,1415,1416,1420],{},"Expected, and safe to continue past. Click ",[33,1406,284],{},[33,1408,288],{}," (on Safari, ",[33,1411,292],{},[33,1413,1414],{},"visit this\nwebsite","). Quark encrypts the connection with a certificate it makes for itself on first boot; the warning means no\npublic certificate authority countersigned it, which none can do for a device on your own WiFi. The\n",[75,1417,1419],{"href":1418},"\u002Fdocs\u002Fgetting-started#your-browser-warns-you-the-connection-is-not-private","Getting Started guide"," explains it at\nlength.",[275,1422,1424],{"id":1423},"im-getting-an-error-when-i-try-to-install-quark","I'm getting an error when I try to install Quark",[14,1426,1427,1428,1431,1432,1437],{},"Make sure you're using the installer for your operating system and architecture. The ",[75,1429,1430],{"href":271},"nerd notes","\npage has installation details. If you're still stuck,\n",[75,1433,1436],{"href":1434,"rel":1435},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark\u002Fissues",[1014],"open a GitHub issue"," and someone will help.",[275,1439,1441],{"id":1440},"quark-doesnt-work-with-my-vpn","Quark doesn't work with my VPN",[14,1443,1444],{},"This is expected. Quark runs on your local network, and connecting through a VPN routes traffic outside your home, so\nthe two conflict. Disable your VPN when accessing Quark on your home network.",[14,1446,1447,1448,1450],{},"Quark also has built-in remote access, separate from your VPN. An admin turns it on from Settings → Network. See\n",[75,1449,941],{"href":940}," for what it does today.",[275,1452,1454],{"id":1453},"im-having-performance-issues","I'm having performance issues",[23,1456,1457,1466],{},[26,1458,1459,1460,1462,1463,1465],{},"Open ",[33,1461,214],{}," from the app drawer and check the ",[33,1464,718],{}," tab — high disk usage or high temperatures can cause\nslowdowns",[26,1467,1468,1469,1473,1474,1478],{},"Share what you see in a ",[75,1470,1472],{"href":1434,"rel":1471},[1014],"GitHub issue"," or email it to\n",[75,1475,1477],{"href":1476},"mailto:support@autobutler.org","support@autobutler.org"," and we'll take a look",[275,1480,1482],{"id":1481},"my-files-arent-showing-up-after-i-uploaded-them","My files aren't showing up after I uploaded them",[14,1484,1485],{},"Try refreshing the page. If they still don't appear, check that your upload completed successfully (the progress\nindicator should have reached 100%). Very large files can take a minute.",[275,1487,1489],{"id":1488},"i-deleted-a-file","I deleted a file",[14,1491,1459,1492,1494,1495,147],{},[33,1493,619],{}," from the app drawer. You can restore it for about 30 days, or delete it permanently.\nTrash is a change-your-mind window, not a forever recycle bin. See\n",[75,1496,85],{"href":84},[114,1498],{},[18,1500,1502],{"id":1501},"get-help","Get Help",[14,1504,1505,1508,1509],{},[33,1506,1507],{},"GitHub Issues"," for questions, bug reports, and feature requests:\n→ ",[75,1510,1512],{"href":1434,"rel":1511},[1014],"github.com\u002Fautobutler-org\u002Fquark\u002Fissues",[14,1514,1515,1518,1519],{},[33,1516,1517],{},"Email"," for private matters:\n→ ",[75,1520,1477],{"href":1476},{"title":87,"searchDepth":88,"depth":88,"links":1522},[1523,1532],{"id":1375,"depth":88,"text":1376,"children":1524},[1525,1526,1527,1528,1529,1530,1531],{"id":1379,"depth":955,"text":1380},{"id":1400,"depth":955,"text":1401},{"id":1423,"depth":955,"text":1424},{"id":1440,"depth":955,"text":1441},{"id":1453,"depth":955,"text":1454},{"id":1481,"depth":955,"text":1482},{"id":1488,"depth":955,"text":1489},{"id":1501,"depth":88,"text":1502},"Get help and support for Quark",{},{"title":268,"order":955},{"title":929,"description":1533},"docs\u002Fhelp","r8lPqCkdJOWayK1IOx_L_XK9MZXQgQ0Id80TL9qEpSw",{"id":1540,"title":1541,"body":1542,"description":1667,"extension":94,"meta":1668,"navigation":1669,"path":940,"seo":1671,"stem":1672,"__hash__":1673},"docs\u002Fdocs\u002Fhow-it-works.md","How Quark Works",{"type":7,"value":1543,"toc":1659},[1544,1547,1550,1554,1557,1561,1564,1567,1570,1574,1577,1580,1583,1586,1590,1593,1613,1616,1620,1623,1626,1629,1633,1636,1639,1642,1653],[10,1545,1541],{"id":1546},"how-quark-works",[14,1548,1549],{},"Quark is a small device on your home network. It stores your files on drives you own. By default, your content stays on\nhardware you control.",[18,1551,1553],{"id":1552},"your-files-your-network","Your files, your network",[14,1555,1556],{},"Phones, laptops, and tablets on your home WiFi talk to your router. The router talks to Quark. Quark talks to your\ndrive. Your files are on that drive — not on a Google server, not on an Apple server, not in a data center you will\nnever visit.",[18,1558,1560],{"id":1559},"how-this-is-different-from-icloud-or-google-photos","How this is different from iCloud or Google Photos",[14,1562,1563],{},"With typical cloud storage, your photos and files travel over the internet to a computer you don't own. They come back\nwhen you ask for them. Convenient. Also rented.",[14,1565,1566],{},"With Quark, day-to-day use is local. Files move over your own WiFi to a box in your house. You own the hardware. You own\nthe data.",[14,1568,1569],{},"Remote access, when you turn it on, is a private path to that same box — not a copy of your files on our hardware. If we\never offer an optional backup or sync service, it would require your explicit opt-in. It would not be the default, and\nit would not be forced.",[18,1571,1573],{"id":1572},"accessing-from-outside-your-home","Accessing from outside your home",[14,1575,1576],{},"You can reach your files when you are not on home WiFi — work, travel, phone data.",[14,1578,1579],{},"An admin turns remote access on from Settings, and it stays off until someone does. When it is on, your Quark and the\ndevices you pair join one small private network that belongs to your household alone, and traffic between them is\nencrypted end to end. Each Quark gets its own network; households are not pooled together.",[14,1581,1582],{},"The part that matters: this is a private path to your box, not a hosted cloud. Your files stay on your drive. We do not\nstore a copy of them, and we cannot read what moves across the tunnel.",[14,1584,1585],{},"You can also pair a device without being an admin — any signed-in account can add its own. Turning remote access off\nagain is one switch, and the Quark drops off the network.",[18,1587,1589],{"id":1588},"what-quark-stores","What Quark stores",[14,1591,1592],{},"When you plug in a drive, Quark keeps things in ordinary folders:",[55,1594,1595,1601,1607],{},[26,1596,1597,1600],{},[33,1598,1599],{},"Photos and videos"," — from your phone or computer, browsable by date",[26,1602,1603,1606],{},[33,1604,1605],{},"Documents"," — PDFs, notes, spreadsheets, whatever you keep",[26,1608,1609,1612],{},[33,1610,1611],{},"Media"," — books, videos, and files from any device on your network",[14,1614,1615],{},"Everything is real files in real folders. No proprietary lock-in.",[18,1617,1619],{"id":1618},"the-files-live-on-the-drive-not-in-the-box","The files live on the drive, not in the box",[14,1621,1622],{},"This is the part worth understanding, because it is the reason the rest of the pitch holds up.",[14,1624,1625],{},"Quark is the thing that serves your files. The drive is the thing that holds them. Your photos and documents are written\nto the storage device as normal files in normal folders, and they stay there whether or not Quark is running.",[14,1627,1628],{},"So if the box dies, gets replaced, or you simply unplug the drive and carry it to a laptop, your files are still there\nand still readable. Nothing is trapped in a database or a format only we can open. Swap the box, keep the files.",[18,1630,1632],{"id":1631},"backups-coming-soon","Backups (coming soon)",[14,1634,1635],{},"Persisting on the drive is not the same as being backed up, and this is the honest tradeoff of keeping your files at\nhome: nobody else can read them, and nobody else is quietly keeping a spare copy for you either. Google does that second\npart on your behalf, and charges you for it in a currency you may not want to keep paying.",[14,1637,1638],{},"It is a solved problem, though, and you solve it once. Copy the irreplaceable folders onto a second drive and keep that\ndrive somewhere a bad day cannot reach — a fireproof box, a relative's house. Do that and the tradeoff costs you an\nafternoon rather than your photos.",[14,1640,1641],{},"Quark does not do the copying for you yet. Automatic copies to a second drive is a feature we are building, and we would\nrather ship it late than ship something that quietly stops working and takes your only backup with it. When it lands,\nthe shape we are aiming for is:",[55,1643,1644,1647,1650],{},[26,1645,1646],{},"A second drive attached to Quark that holds a full copy of what matters",[26,1648,1649],{},"Copies that run on their own, on a schedule, without you remembering to start them",[26,1651,1652],{},"Somewhere obvious in the app that tells you the last copy actually finished",[14,1654,1655,1656,1658],{},"Until then, the copying is manual and the plan is the ordinary one: a second drive, and a third copy somewhere that is\nnot your house. See the ",[75,1657,78],{"href":77}," for the 3-2-1 version of that.",{"title":87,"searchDepth":88,"depth":88,"links":1660},[1661,1662,1663,1664,1665,1666],{"id":1552,"depth":88,"text":1553},{"id":1559,"depth":88,"text":1560},{"id":1572,"depth":88,"text":1573},{"id":1588,"depth":88,"text":1589},{"id":1618,"depth":88,"text":1619},{"id":1631,"depth":88,"text":1632},"How Quark keeps your files on hardware you control by default — local-first, on your home network",{},{"title":941,"order":1670},4,{"title":1541,"description":1667},"docs\u002Fhow-it-works","qVRwc7JudbnVoCLjExbm7uuir5UgQbcGrdY4QyqRpck",{"id":1675,"title":272,"body":1676,"description":2545,"extension":94,"meta":2546,"navigation":2547,"path":271,"seo":2548,"stem":2549,"__hash__":2550},"docs\u002Fdocs\u002Fnerd-notes.md",{"type":7,"value":1677,"toc":2527},[1678,1681,1690,1692,1696,1803,1806,1808,1812,1816,1837,1841,1851,1908,1929,1933,1936,1938,1942,1952,1956,1972,1975,2085,2122,2133,2137,2241,2243,2247,2253,2263,2281,2291,2304,2306,2309,2321,2377,2381,2426,2430,2485,2492,2494,2498,2523],[10,1679,272],{"id":1680},"nerd-notes",[14,1682,1683,1684,1689],{},"A technical mirror of the ",[75,1685,1688],{"href":1686,"rel":1687},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark",[1014],"Quark README",".\nIf you want to understand what's running in your house, this is the page.",[114,1691],{},[18,1693,1695],{"id":1694},"stack","Stack",[1697,1698,1699,1712],"table",{},[1700,1701,1702],"thead",{},[1703,1704,1705,1709],"tr",{},[1706,1707,1708],"th",{},"Layer",[1706,1710,1711],{},"Technology",[1713,1714,1715,1729,1742,1755,1767,1779,1791],"tbody",{},[1703,1716,1717,1721],{},[1718,1719,1720],"td",{},"Backend",[1718,1722,1723,1724],{},"Go + ",[75,1725,1728],{"href":1726,"rel":1727},"https:\u002F\u002Fgithub.com\u002Fgin-gonic\u002Fgin",[1014],"Gin",[1703,1730,1731,1734],{},[1718,1732,1733],{},"Frontend",[1718,1735,1736,1741],{},[75,1737,1740],{"href":1738,"rel":1739},"https:\u002F\u002Fflutter.dev",[1014],"Flutter"," (web, iOS, Android)",[1703,1743,1744,1747],{},[1718,1745,1746],{},"Database",[1718,1748,1749,1750],{},"SQLite via ",[75,1751,1754],{"href":1752,"rel":1753},"https:\u002F\u002Fpkg.go.dev\u002Fmodernc.org\u002Fsqlite",[1014],"modernc.org\u002Fsqlite",[1703,1756,1757,1760],{},[1718,1758,1759],{},"Migrations",[1718,1761,1762],{},[75,1763,1766],{"href":1764,"rel":1765},"https:\u002F\u002Fgithub.com\u002Fgolang-migrate\u002Fmigrate",[1014],"golang-migrate",[1703,1768,1769,1772],{},[1718,1770,1771],{},"DB queries",[1718,1773,1774],{},[75,1775,1778],{"href":1776,"rel":1777},"https:\u002F\u002Fsqlc.dev",[1014],"sqlc",[1703,1780,1781,1784],{},[1718,1782,1783],{},"API docs",[1718,1785,1786],{},[75,1787,1790],{"href":1788,"rel":1789},"https:\u002F\u002Fgithub.com\u002Fswaggo\u002Fswag",[1014],"Swagger\u002Fswag",[1703,1792,1793,1796],{},[1718,1794,1795],{},"Observability",[1718,1797,1798],{},[75,1799,1802],{"href":1800,"rel":1801},"https:\u002F\u002Fopentelemetry.io",[1014],"OpenTelemetry",[14,1804,1805],{},"The backend is a single Go binary that serves both the REST API and the Flutter web build.\nOn first boot it runs database migrations automatically.",[114,1807],{},[18,1809,1811],{"id":1810},"installation","Installation",[275,1813,1815],{"id":1814},"on-a-quark-device","On a Quark device",[14,1817,1818,1819,1822,1823,1826,1827,1830,1831,1833,1834,1836],{},"The device runs Quark as a systemd service (",[168,1820,1821],{},"quark serve","), set up by ",[168,1824,1825],{},"quark install",". It serves HTTPS on ",[168,1828,1829],{},":443","\nwith a self-signed certificate it generates on first boot. Open ",[168,1832,170],{}," (or your hostname) and expect a\ncertificate warning; ",[75,1835,85],{"href":84}," explains why.",[275,1838,1840],{"id":1839},"in-a-container","In a container",[14,1842,1843,1844,373,1847,1850],{},"Every release publishes a ",[168,1845,1846],{},"linux\u002Famd64",[168,1848,1849],{},"linux\u002Farm64"," image to GHCR:",[1852,1853,1857],"pre",{"className":1854,"code":1855,"language":1856,"meta":87,"style":87},"language-bash shiki shiki-themes catppuccin-mocha catppuccin-mocha catppuccin-mocha","docker run -d --name quark --restart unless-stopped -p 8080:8080 \\\n  -v quark-data:\u002Fvar\u002Flib\u002Fquark ghcr.io\u002Fautobutler-org\u002Fquark:latest\n","bash",[168,1858,1859,1897],{"__ignoreMap":87},[1860,1861,1864,1868,1872,1875,1878,1881,1884,1887,1890,1893],"span",{"class":1862,"line":1863},"line",1,[1860,1865,1867],{"class":1866},"stPmG","docker",[1860,1869,1871],{"class":1870},"sx07h"," run",[1860,1873,1874],{"class":1870}," -d",[1860,1876,1877],{"class":1870}," --name",[1860,1879,1880],{"class":1870}," quark",[1860,1882,1883],{"class":1870}," --restart",[1860,1885,1886],{"class":1870}," unless-stopped",[1860,1888,1889],{"class":1870}," -p",[1860,1891,1892],{"class":1870}," 8080:8080",[1860,1894,1896],{"class":1895},"sr61Z"," \\\n",[1860,1898,1899,1902,1905],{"class":1862,"line":88},[1860,1900,1901],{"class":1870},"  -v",[1860,1903,1904],{"class":1870}," quark-data:\u002Fvar\u002Flib\u002Fquark",[1860,1906,1907],{"class":1870}," ghcr.io\u002Fautobutler-org\u002Fquark:latest\n",[14,1909,1910,1911,1914,1915,1918,1919,1924,1925,147],{},"Then open ",[168,1912,1913],{},"http:\u002F\u002Flocalhost:8080",". Everything Quark keeps lives in the ",[168,1916,1917],{},"quark-data"," volume. See\n",[75,1920,1923],{"href":1921,"rel":1922},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark\u002Fblob\u002Fmain\u002Fdocs\u002Fcontainer.md",[1014],"docs\u002Fcontainer.md"," for Kubernetes and updates.\nTo run your own build instead, see ",[75,1926,1928],{"href":1927},"#development","Development",[275,1930,1932],{"id":1931},"first-boot","First boot",[14,1934,1935],{},"On first boot, the web UI shows a setup screen. Create your owner account there.",[114,1937],{},[18,1939,1941],{"id":1940},"api","API",[14,1943,1944,1945,1948,1949,147],{},"The REST API is at ",[168,1946,1947],{},"\u002Fapi\u002Fv0\u002F",". Swagger UI is at ",[168,1950,1951],{},"https:\u002F\u002F\u003Chost>\u002Fswagger",[275,1953,1955],{"id":1954},"authentication","Authentication",[14,1957,1958,1959,215,1962,215,1965,1080,1968,1971],{},"All endpoints require a session token except ",[168,1960,1961],{},"\u002Fauth\u002Fsetup",[168,1963,1964],{},"\u002Fauth\u002Fsalt",[168,1966,1967],{},"\u002Fauth\u002Flogin",[168,1969,1970],{},"\u002Fauth\u002Fstatus",", and a few other sign-in routes.",[14,1973,1974],{},"The password never leaves the client. The app asks for the account's salt, derives a 32-byte auth key from the\npassword, and sends that instead:",[1852,1976,1978],{"className":1854,"code":1977,"language":1856,"meta":87,"style":87},"# Get the account's salt\ncurl -s 'http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fauth\u002Fsalt?username=you'\n# → {\"salt\":\"\u003Cbase64, 16 bytes>\",\"legacy\":false,\"legacyRecovery\":false}\n\n# Login with the derived auth key\ncurl -s -X POST http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"username\":\"you\",\"authKey\":\"\u003Cbase64 auth key>\"}'\n# → {\"token\":\"\u003C64-char hex token>\",\"legacyRecovery\":false}\n\n# Use the token\ncurl http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fhealth \\\n  -H \"Authorization: Bearer \u003Ctoken>\"\n",[168,1979,1980,1986,1997,2002,2008,2014,2031,2042,2051,2056,2061,2067,2077],{"__ignoreMap":87},[1860,1981,1982],{"class":1862,"line":1863},[1860,1983,1985],{"class":1984},"s5RKK","# Get the account's salt\n",[1860,1987,1988,1991,1994],{"class":1862,"line":88},[1860,1989,1990],{"class":1866},"curl",[1860,1992,1993],{"class":1870}," -s",[1860,1995,1996],{"class":1870}," 'http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fauth\u002Fsalt?username=you'\n",[1860,1998,1999],{"class":1862,"line":955},[1860,2000,2001],{"class":1984},"# → {\"salt\":\"\u003Cbase64, 16 bytes>\",\"legacy\":false,\"legacyRecovery\":false}\n",[1860,2003,2004],{"class":1862,"line":1670},[1860,2005,2007],{"emptyLinePlaceholder":2006},true,"\n",[1860,2009,2011],{"class":1862,"line":2010},5,[1860,2012,2013],{"class":1984},"# Login with the derived auth key\n",[1860,2015,2016,2018,2020,2023,2026,2029],{"class":1862,"line":1360},[1860,2017,1990],{"class":1866},[1860,2019,1993],{"class":1870},[1860,2021,2022],{"class":1870}," -X",[1860,2024,2025],{"class":1870}," POST",[1860,2027,2028],{"class":1870}," http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fauth\u002Flogin",[1860,2030,1896],{"class":1895},[1860,2032,2034,2037,2040],{"class":1862,"line":2033},7,[1860,2035,2036],{"class":1870},"  -H",[1860,2038,2039],{"class":1870}," \"Content-Type: application\u002Fjson\"",[1860,2041,1896],{"class":1895},[1860,2043,2045,2048],{"class":1862,"line":2044},8,[1860,2046,2047],{"class":1870},"  -d",[1860,2049,2050],{"class":1870}," '{\"username\":\"you\",\"authKey\":\"\u003Cbase64 auth key>\"}'\n",[1860,2052,2053],{"class":1862,"line":97},[1860,2054,2055],{"class":1984},"# → {\"token\":\"\u003C64-char hex token>\",\"legacyRecovery\":false}\n",[1860,2057,2059],{"class":1862,"line":2058},10,[1860,2060,2007],{"emptyLinePlaceholder":2006},[1860,2062,2064],{"class":1862,"line":2063},11,[1860,2065,2066],{"class":1984},"# Use the token\n",[1860,2068,2070,2072,2075],{"class":1862,"line":2069},12,[1860,2071,1990],{"class":1866},[1860,2073,2074],{"class":1870}," http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fv0\u002Fhealth",[1860,2076,1896],{"class":1895},[1860,2078,2080,2082],{"class":1862,"line":2079},13,[1860,2081,2036],{"class":1870},[1860,2083,2084],{"class":1870}," \"Authorization: Bearer \u003Ctoken>\"\n",[14,2086,2087,2088,2091,2092,2095,2096,2099,2100,2103,2104,2106,2107,241,2109,2111,2112,2115,2116,2121],{},"The key is ",[168,2089,2090],{},"HKDF-SHA256(Argon2id(password, salt, t=3, m=64 MiB, p=1), info=\"auth\")",", sent as standard base64. A\nlogin with a raw ",[168,2093,2094],{},"password"," and no ",[168,2097,2098],{},"authKey"," gets a ",[168,2101,2102],{},"426",": only an app from before auth keys sends one. The examples\nuse ",[168,2105,1913],{},", the local dev server; on a device the base URL is ",[168,2108,170],{},[168,2110,1990],{},"\nneeds ",[168,2113,2114],{},"-k"," because the certificate is self-signed. The product's\n",[75,2117,2120],{"href":2118,"rel":2119},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark\u002Fblob\u002Fmain\u002Fdocs\u002Fauth.md",[1014],"docs\u002Fauth.md"," has the full flow.",[14,2123,2124,2125,2128,2129,2132],{},"Tokens are valid for 30 days. Pass them as ",[168,2126,2127],{},"Authorization: Bearer \u003Ctoken>"," or as a\n",[168,2130,2131],{},"session"," cookie.",[275,2134,2136],{"id":2135},"key-endpoints","Key endpoints",[1697,2138,2139,2152],{},[1700,2140,2141],{},[1703,2142,2143,2146,2149],{},[1706,2144,2145],{},"Method",[1706,2147,2148],{},"Path",[1706,2150,2151],{},"What it does",[1713,2153,2154,2167,2179,2192,2204,2217,2229],{},[1703,2155,2156,2159,2164],{},[1718,2157,2158],{},"GET",[1718,2160,2161],{},[168,2162,2163],{},"\u002Fapi\u002Fv0\u002Fhealth",[1718,2165,2166],{},"System health (CPU, memory, disk, temperature)",[1703,2168,2169,2171,2176],{},[1718,2170,2158],{},[1718,2172,2173],{},[168,2174,2175],{},"\u002Fapi\u002Fv0\u002Ffiles",[1718,2177,2178],{},"List files",[1703,2180,2181,2184,2189],{},[1718,2182,2183],{},"POST",[1718,2185,2186],{},[168,2187,2188],{},"\u002Fapi\u002Fv0\u002Ffiles\u002Fupload\u002F{rootDir}",[1718,2190,2191],{},"Upload files to a directory",[1703,2193,2194,2196,2201],{},[1718,2195,2158],{},[1718,2197,2198],{},[168,2199,2200],{},"\u002Fapi\u002Fv0\u002Fstorage\u002Fdevices\u002Fstatus",[1718,2202,2203],{},"List storage devices",[1703,2205,2206,2209,2214],{},[1718,2207,2208],{},"PATCH",[1718,2210,2211],{},[168,2212,2213],{},"\u002Fapi\u002Fv0\u002Fstorage\u002Fdevices\u002Frename?serial={serial}",[1718,2215,2216],{},"Rename a device",[1703,2218,2219,2221,2226],{},[1718,2220,2158],{},[1718,2222,2223],{},[168,2224,2225],{},"\u002Fapi\u002Fv0\u002Fversion",[1718,2227,2228],{},"Installed version",[1703,2230,2231,2233,2238],{},[1718,2232,2183],{},[1718,2234,2235],{},[168,2236,2237],{},"\u002Fapi\u002Fv0\u002Fversion\u002Fupdate",[1718,2239,2240],{},"Update to a given release (admin)",[114,2242],{},[18,2244,2246],{"id":2245},"architecture-notes","Architecture notes",[14,2248,2249,2252],{},[33,2250,2251],{},"Single binary."," The Go backend embeds the Flutter web build at compile time and serves it\nalongside the API. No separate web server needed.",[14,2254,2255,2258,2259,2262],{},[33,2256,2257],{},"SQLite."," All state lives in a SQLite database at ",[168,2260,2261],{},"\u002Fvar\u002Flib\u002Fquark\u002Fdata\u002Fquark.db",".\nMigrations run on startup — safe to upgrade without manual intervention.",[14,2264,2265,2268,2269,2272,2273,2276,2277,2280],{},[33,2266,2267],{},"Device detection."," On Linux, Quark reads ",[168,2270,2271],{},"\u002Fproc\u002Fmounts"," to discover storage devices.\nUSB device detection uses the ",[168,2274,2275],{},"usbutil"," package. Mounting\u002Funmounting USB storage requires\nroot — run with ",[168,2278,2279],{},"AS_ROOT=1"," in development.",[14,2282,2283,2286,2287,2290],{},[33,2284,2285],{},"Auth."," The server never sees the password: the client derives an auth key from it (Argon2id, then HKDF-SHA256),\nand the server stores a bcrypt hash (cost 12) of that key. Session tokens are 32 bytes of\n",[168,2288,2289],{},"crypto\u002Frand"," (256-bit entropy).",[14,2292,2293,2296,2297,2300,2301,2303],{},[33,2294,2295],{},"Updates."," The device can update itself in-place via the ",[168,2298,2299],{},"\u002Fversion\u002Fupdate"," API. It downloads\nthe new binary as a tarball, extracts it, and atomically renames it over the running binary.\nThe process exits and systemd restarts it. Separately, ",[168,2302,1825],{}," turns on Debian security-only unattended\nupgrades and holds the kernel and board packages at the version the device booted.",[114,2305],{},[18,2307,1928],{"id":2308},"development",[14,2310,2311,2314,2315,2320],{},[33,2312,2313],{},"Prerequisites:"," Go, Flutter, Make, ",[75,2316,2319],{"href":2317,"rel":2318},"https:\u002F\u002Fgithub.com\u002Fair-verse\u002Fair",[1014],"air",", sqlc, swag",[1852,2322,2324],{"className":1854,"code":2323,"language":1856,"meta":87,"style":87},"git clone https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark.git\ncd quark\nmake setup      # install dev tools\nmake generate   # sqlc + swag + flutter icons + sbom\nmake build      # build everything\n",[168,2325,2326,2337,2346,2357,2367],{"__ignoreMap":87},[1860,2327,2328,2331,2334],{"class":1862,"line":1863},[1860,2329,2330],{"class":1866},"git",[1860,2332,2333],{"class":1870}," clone",[1860,2335,2336],{"class":1870}," https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark.git\n",[1860,2338,2339,2343],{"class":1862,"line":88},[1860,2340,2342],{"class":2341},"shPfs","cd",[1860,2344,2345],{"class":1870}," quark\n",[1860,2347,2348,2351,2354],{"class":1862,"line":955},[1860,2349,2350],{"class":1866},"make",[1860,2352,2353],{"class":1870}," setup",[1860,2355,2356],{"class":1984},"      # install dev tools\n",[1860,2358,2359,2361,2364],{"class":1862,"line":1670},[1860,2360,2350],{"class":1866},[1860,2362,2363],{"class":1870}," generate",[1860,2365,2366],{"class":1984},"   # sqlc + swag + flutter icons + sbom\n",[1860,2368,2369,2371,2374],{"class":1862,"line":2010},[1860,2370,2350],{"class":1866},[1860,2372,2373],{"class":1870}," build",[1860,2375,2376],{"class":1984},"      # build everything\n",[275,2378,2380],{"id":2379},"run-locally","Run locally",[1852,2382,2384],{"className":1854,"code":2383,"language":1856,"meta":87,"style":87},"make watch\u002Fbackend          # backend with hot reload\nmake serve\u002Ffrontend         # Flutter web\nmake emulate\u002Fandroid        # Android emulator\nmake serve\u002Ffrontend\u002Fmobile  # Flutter mobile (after emulator is running)\n",[168,2385,2386,2396,2406,2416],{"__ignoreMap":87},[1860,2387,2388,2390,2393],{"class":1862,"line":1863},[1860,2389,2350],{"class":1866},[1860,2391,2392],{"class":1870}," watch\u002Fbackend",[1860,2394,2395],{"class":1984},"          # backend with hot reload\n",[1860,2397,2398,2400,2403],{"class":1862,"line":88},[1860,2399,2350],{"class":1866},[1860,2401,2402],{"class":1870}," serve\u002Ffrontend",[1860,2404,2405],{"class":1984},"         # Flutter web\n",[1860,2407,2408,2410,2413],{"class":1862,"line":955},[1860,2409,2350],{"class":1866},[1860,2411,2412],{"class":1870}," emulate\u002Fandroid",[1860,2414,2415],{"class":1984},"        # Android emulator\n",[1860,2417,2418,2420,2423],{"class":1862,"line":1670},[1860,2419,2350],{"class":1866},[1860,2421,2422],{"class":1870}," serve\u002Ffrontend\u002Fmobile",[1860,2424,2425],{"class":1984},"  # Flutter mobile (after emulator is running)\n",[275,2427,2429],{"id":2428},"useful-targets","Useful targets",[1852,2431,2433],{"className":1854,"code":2432,"language":1856,"meta":87,"style":87},"make check          # lint (Go + Flutter)\nmake format          # auto-format\nmake test            # run all tests\nmake coverage        # test coverage report\nmake help            # list all targets\n",[168,2434,2435,2445,2455,2465,2475],{"__ignoreMap":87},[1860,2436,2437,2439,2442],{"class":1862,"line":1863},[1860,2438,2350],{"class":1866},[1860,2440,2441],{"class":1870}," check",[1860,2443,2444],{"class":1984},"          # lint (Go + Flutter)\n",[1860,2446,2447,2449,2452],{"class":1862,"line":88},[1860,2448,2350],{"class":1866},[1860,2450,2451],{"class":1870}," format",[1860,2453,2454],{"class":1984},"          # auto-format\n",[1860,2456,2457,2459,2462],{"class":1862,"line":955},[1860,2458,2350],{"class":1866},[1860,2460,2461],{"class":1870}," test",[1860,2463,2464],{"class":1984},"            # run all tests\n",[1860,2466,2467,2469,2472],{"class":1862,"line":1670},[1860,2468,2350],{"class":1866},[1860,2470,2471],{"class":1870}," coverage",[1860,2473,2474],{"class":1984},"        # test coverage report\n",[1860,2476,2477,2479,2482],{"class":1862,"line":2010},[1860,2478,2350],{"class":1866},[1860,2480,2481],{"class":1870}," help",[1860,2483,2484],{"class":1984},"            # list all targets\n",[14,2486,2487,2488,2491],{},"Swagger UI is at ",[168,2489,2490],{},"http:\u002F\u002Flocalhost:8080\u002Fswagger"," when the backend is running locally.",[114,2493],{},[18,2495,2497],{"id":2496},"source","Source",[55,2499,2500,2507,2515],{},[26,2501,2502,2503],{},"GitHub: ",[75,2504,2506],{"href":1686,"rel":2505},[1014],"autobutler-org\u002Fquark",[26,2508,2509,2510],{},"License: ",[75,2511,2514],{"href":2512,"rel":2513},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark\u002Fblob\u002Fmain\u002FLICENSE",[1014],"MIT No Attribution (MIT-0)",[26,2516,2517,2518],{},"Contributing:\n",[75,2519,2522],{"href":2520,"rel":2521},"https:\u002F\u002Fgithub.com\u002Fautobutler-org\u002Fquark\u002Fblob\u002Fmain\u002FCONTRIBUTING.md",[1014],"CONTRIBUTING.md",[2524,2525,2526],"style",{},"html pre.shiki code .stPmG, html code.shiki .stPmG{--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic;--shiki-light:#89B4FA;--shiki-light-font-style:italic}html pre.shiki code .sx07h, html code.shiki .sx07h{--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1;--shiki-light:#A6E3A1}html pre.shiki code .sr61Z, html code.shiki .sr61Z{--shiki-default:#F5C2E7;--shiki-dark:#F5C2E7;--shiki-light:#F5C2E7}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .s5RKK, html code.shiki .s5RKK{--shiki-default:#9399B2;--shiki-default-font-style:italic;--shiki-dark:#9399B2;--shiki-dark-font-style:italic;--shiki-light:#9399B2;--shiki-light-font-style:italic}html pre.shiki code .shPfs, html code.shiki .shPfs{--shiki-default:#F38BA8;--shiki-default-font-style:italic;--shiki-dark:#F38BA8;--shiki-dark-font-style:italic;--shiki-light:#F38BA8;--shiki-light-font-style:italic}",{"title":87,"searchDepth":88,"depth":88,"links":2528},[2529,2530,2535,2539,2540,2544],{"id":1694,"depth":88,"text":1695},{"id":1810,"depth":88,"text":1811,"children":2531},[2532,2533,2534],{"id":1814,"depth":955,"text":1815},{"id":1839,"depth":955,"text":1840},{"id":1931,"depth":955,"text":1932},{"id":1940,"depth":88,"text":1941,"children":2536},[2537,2538],{"id":1954,"depth":955,"text":1955},{"id":2135,"depth":955,"text":2136},{"id":2245,"depth":88,"text":2246},{"id":2308,"depth":88,"text":1928,"children":2541},[2542,2543],{"id":2379,"depth":955,"text":2380},{"id":2428,"depth":955,"text":2429},{"id":2496,"depth":88,"text":2497},"Technical overview of Quark — stack, architecture, installation, and development.",{},{"title":272,"order":2033},{"title":272,"description":2545},"docs\u002Fnerd-notes","p3n6BOPlg_Z9CEWG1iUqEklp2mZMue-EgMeX7LgDDLw",{"id":2552,"title":693,"body":2553,"description":2656,"extension":94,"meta":2657,"navigation":2658,"path":699,"seo":2659,"stem":2660,"__hash__":2661},"docs\u002Fdocs\u002Fphotos.md",{"type":7,"value":2554,"toc":2650},[2555,2557,2560,2564,2578,2584,2588,2591,2602,2605,2608,2610,2634,2636],[10,2556,693],{"id":692},[14,2558,2559],{},"Quark's Photos library is for pictures and videos that live on your drive at home.\nFull-resolution originals, albums, favorites — browsable from any device on your home\nnetwork.",[18,2561,2563],{"id":2562},"what-photos-does-today","What Photos does today",[55,2565,2566,2569,2572,2575],{},[26,2567,2568],{},"Browse photos and videos by time",[26,2570,2571],{},"Albums and favorites",[26,2573,2574],{},"View full-resolution originals",[26,2576,2577],{},"See images that already live on your Quark storage (including ones you uploaded or\nimported)",[14,2579,2580,2581,147],{},"Migrating from Google? See the ",[75,2582,2583],{"href":947},"Google Takeout guide",[18,2585,2587],{"id":2586},"adding-photos-from-your-phone-soft-launch","Adding photos from your phone (soft-launch)",[14,2589,2590],{},"On your home WiFi, with Quark reachable on the local network:",[23,2592,2593,2596,2599],{},[26,2594,2595],{},"Open Quark (phone app or browser) and sign in.",[26,2597,2598],{},"Go to Photos.",[26,2600,2601],{},"Upload the photos or videos you pick from your phone library.",[14,2603,2604],{},"That's the live path: connect on the home network → Photos → upload what you choose.\nThere is not a continuous Google Photos–style always-on camera-roll backup daemon in\nthis release.",[14,2606,2607],{},"The phone app is still early testing (not on the App Store \u002F Play Store for everyone\nyet). Remote access from outside the house is off until an admin turns it on, and it is\nnot required for this.",[18,2609,1251],{"id":1250},[55,2611,2612,2615,2618,2627],{},[26,2613,2614],{},"A big first upload can take a while on WiFi. That's normal.",[26,2616,2617],{},"Keep Quark powered on and the drive attached while large uploads finish.",[26,2619,2620,2621,2623,2624,2626],{},"On iPhone or iPad, uploading from ",[33,2622,233],{}," can also offer ",[33,2625,693],{}," as a source, so you do not have to export into\nFiles first.",[26,2628,2629,2630,2633],{},"Irreplaceable photos still deserve a second physical copy — see the\n",[75,2631,2632],{"href":77},"Security guide","'s 3-2-1 note.",[18,2635,69],{"id":68},[55,2637,2638,2642,2646],{},[26,2639,2640],{},[75,2641,85],{"href":84},[26,2643,2644],{},[75,2645,948],{"href":947},[26,2647,2648],{},[75,2649,78],{"href":77},{"title":87,"searchDepth":88,"depth":88,"links":2651},[2652,2653,2654,2655],{"id":2562,"depth":88,"text":2563},{"id":2586,"depth":88,"text":2587},{"id":1250,"depth":88,"text":1251},{"id":68,"depth":88,"text":69},"Browse photos on your Quark and upload from your phone on the home network",{},{"title":693,"order":2010},{"title":693,"description":2656},"docs\u002Fphotos","vupQIz6bRZ-tD4sOOAccLfCGOcd2jyF1DBZN60Crp04",{"id":2663,"title":2664,"body":2665,"description":2911,"extension":94,"meta":2912,"navigation":2913,"path":77,"seo":2914,"stem":2915,"__hash__":2916},"docs\u002Fdocs\u002Fsecurity-guide.md","Things You Should Know (Security Guide)",{"type":7,"value":2666,"toc":2901},[2667,2671,2674,2677,2679,2683,2686,2689,2692,2695,2706,2716,2719,2721,2725,2728,2748,2751,2757,2759,2763,2766,2777,2779,2783,2786,2789,2800,2803,2805,2809,2812,2815,2826,2829,2832,2834,2838,2841,2852,2854,2858,2861,2872,2875,2877,2881,2898],[10,2668,2670],{"id":2669},"things-you-should-know","Things You Should Know",[14,2672,2673],{},"Quark keeps your files on hardware you own. That is not the same as \"impossible to lose.\" This page is the short list\nevery owner should actually do.",[14,2675,2676],{},"None of this is scary. You have already done most of it for other important things in your life.",[114,2678],{},[18,2680,2682],{"id":2681},"your-master-password","Your master password",[14,2684,2685],{},"The vault — where Quark keeps passwords and other sensitive notes — is locked with a master password you choose. Quark\nnever stores that password anywhere. The password itself is what scrambles the vault, which is why nobody, us included,\ncan open it without you.",[14,2687,2688],{},"Unscrambling is deliberately slow. That sounds like a flaw and it is actually the whole trick: anyone guessing at your\npassword has to redo that slow work on every single guess, so a program that could otherwise try millions of passwords a\nsecond gets dragged down to a handful. It turns \"crack it over lunch\" into \"crack it over several lifetimes.\" (The\nmethod is called Argon2id, if you ever want to read up on it.)",[14,2690,2691],{},"Be sensible here rather than paranoid. Quark sits in your house, on your own network, so the realistic risk is not a\nstranger with a cracking rig. It is you forgetting the password. A phrase you will actually remember, written on a card\nin your desk drawer, is a better plan than a thirty-character monster you lose in a week. If someone is already going\nthrough your desk drawer, the password is not the worst thing that happened to you that day.",[14,2693,2694],{},"A reasonable master password is:",[55,2696,2697,2700,2703],{},[26,2698,2699],{},"Long enough to be a phrase rather than a word",[26,2701,2702],{},"Not the password you also use for your bank or your email",[26,2704,2705],{},"Something you can write down and recognize later",[14,2707,2708,2711,2712,2715],{},[168,2709,2710],{},"correct-horse-battery-staple"," beats ",[168,2713,2714],{},"P@ssw0rd1",". Longer beats clever.",[14,2717,2718],{},"There is no \"forgot password\" button for the vault. Your master password is never sent to us, never stored in a form\nanyone can reverse, and not something we can reset. Forget it and the vault contents are gone. Write it down on paper\nand put the paper somewhere you will look.",[114,2720],{},[18,2722,2724],{"id":2723},"the-3-2-1-backup-rule","The 3-2-1 backup rule",[14,2726,2727],{},"Quark stores your files. Quark is also a physical box, and boxes fail, flood, and get stolen.",[55,2729,2730,2736,2742],{},[26,2731,2732,2735],{},[33,2733,2734],{},"3"," copies of anything you would miss",[26,2737,2738,2741],{},[33,2739,2740],{},"2"," different kinds of storage, like Quark's drive plus an external USB",[26,2743,2744,2747],{},[33,2745,2746],{},"1"," copy that is not in the same building",[14,2749,2750],{},"Automatic mirroring between drives is not a shipped feature yet, so a second copy today means attaching a second drive\nand copying the irreplaceable folders across yourself. The offsite copy is on you either way: a drive at a relative's\nhouse that you swap out every so often is enough.",[14,2752,2753,2754],{},"There is no backup strategy that can save you from ",[303,2755,2756],{},"no backup at all.",[114,2758],{},[18,2760,2762],{"id":2761},"physical-security","Physical security",[14,2764,2765],{},"Quark is a small computer holding your files. Treat it like one.",[55,2767,2768,2771,2774],{},[26,2769,2770],{},"Keep it indoors, off the floor, somewhere that does not freeze or bake",[26,2772,2773],{},"Out of casual sight is fine — you do not need to advertise a storage box on your network",[26,2775,2776],{},"Do not keep your only backup drive next to Quark. Fire and burglary take pairs.",[114,2778],{},[18,2780,2782],{"id":2781},"network-security","Network security",[14,2784,2785],{},"By default, Quark is a home-network product. It does not need the public internet to do its job, and it is not reachable\nfrom a coffee shop.",[14,2787,2788],{},"In practice:",[55,2790,2791,2794,2797],{},[26,2792,2793],{},"Password-protect your WiFi with WPA2 or WPA3",[26,2795,2796],{},"Do not hand your WiFi password to people you do not trust",[26,2798,2799],{},"Quark's routine contact with the outside world is checking for software updates, and the code is public if you want to\nread it",[14,2801,2802],{},"Reaching your files from outside the house is off until an admin turns on remote access, and an admin can turn it back\noff again — or never touch it at all. Lock Quark down as far as you like; everything it does on your home network still\nworks.",[114,2804],{},[18,2806,2808],{"id":2807},"estate-planning","Estate planning",[14,2810,2811],{},"The hard part is not the photos. It is the vault. Whoever ends up with your master password ends up with every password\nyou kept behind it — bank, email, all of it — so treat that password the way you would treat a key to the house.",[14,2813,2814],{},"Handle it like any other important document:",[23,2816,2817,2820,2823],{},[26,2818,2819],{},"Write down the Quark login and the vault master password.",[26,2821,2822],{},"Store them where your will is stored — a fireproof box, a safe deposit box, or with the attorney who holds the will.",[26,2824,2825],{},"Tell one person you trust that Quark exists, what is on it, and where those papers are.",[14,2827,2828],{},"A trusted-contact feature is on the roadmap and is not live yet, so paper and a trusted person are the plan for now.",[14,2830,2831],{},"This is not morbid. It is the same reason you leave a spare key with a neighbor.",[114,2833],{},[18,2835,2837],{"id":2836},"if-you-think-someone-got-in","If you think someone got in",[14,2839,2840],{},"Quark has no API keys or app passwords to hunt down and rotate. Access is your username and password, on your own\nnetwork, so the response is mostly physical and it is short:",[23,2842,2843,2846,2849],{},[26,2844,2845],{},"Unplug Quark from the router. Nothing reaches it while it is off the network, and that buys you time to work out\nwhat happened.",[26,2847,2848],{},"Change your WiFi password if the network was the likely way in.",[26,2850,2851],{},"Look through your files for odd deletions, unfamiliar folders, or timestamps that do not match anything you did.",[114,2853],{},[18,2855,2857],{"id":2856},"what-quark-does-not-do","What Quark does not do",[14,2859,2860],{},"To be direct about the limits:",[55,2862,2863,2866,2869],{},[26,2864,2865],{},"It does not scan uploads for viruses. It stores what you give it.",[26,2867,2868],{},"It does not stop someone carrying the box out of your house. The vault stays encrypted, but ordinary files on the\ndrive would be readable to whoever is holding the drive.",[26,2870,2871],{},"It does not make your WiFi password safe to share. Someone on your network can reach Quark's login screen — but that\nis where they stop, because browsing your files still means guessing your password first.",[14,2873,2874],{},"Knowing the limits helps you make good decisions about what you store and how.",[114,2876],{},[18,2878,2880],{"id":2879},"the-short-version","The short version",[23,2882,2883,2886,2889,2892,2895],{},[26,2884,2885],{},"Pick a master password you will remember. Write it down. Store it safely.",[26,2887,2888],{},"Keep your Quark login password written down with your important documents.",[26,2890,2891],{},"Copy the irreplaceable things to a second drive, and keep one copy out of the house.",[26,2893,2894],{},"Use WPA2 or WPA3 on your WiFi.",[26,2896,2897],{},"Tell someone you trust how to get in if you cannot.",[14,2899,2900],{},"That's it. Quark handles the rest.",{"title":87,"searchDepth":88,"depth":88,"links":2902},[2903,2904,2905,2906,2907,2908,2909,2910],{"id":2681,"depth":88,"text":2682},{"id":2723,"depth":88,"text":2724},{"id":2761,"depth":88,"text":2762},{"id":2781,"depth":88,"text":2782},{"id":2807,"depth":88,"text":2808},{"id":2836,"depth":88,"text":2837},{"id":2856,"depth":88,"text":2857},{"id":2879,"depth":88,"text":2880},"Practical security guidance for Quark owners — written in plain English, not jargon",{},{"title":78,"order":2044},{"title":2664,"description":2911},"docs\u002Fsecurity-guide","XQ42NIXIQCZoN5fdwbmq8_FFb4iqXDc3ldnmqOh2Q8k",{"id":4,"title":5,"body":2918,"description":93,"extension":94,"meta":2969,"navigation":2970,"path":98,"seo":2971,"stem":100,"__hash__":101},{"type":7,"value":2919,"toc":2964},[2920,2922,2924,2926,2940,2942,2944,2952,2954],[10,2921,5],{"id":12},[14,2923,16],{},[18,2925,21],{"id":20},[23,2927,2928,2930,2934,2936],{},[26,2929,28],{},[26,2931,31,2932,36],{},[33,2933,35],{},[26,2935,39],{},[26,2937,42,2938,46],{},[33,2939,45],{},[14,2941,49],{},[18,2943,53],{"id":52},[55,2945,2946,2948,2950],{},[26,2947,59],{},[26,2949,62],{},[26,2951,65],{},[18,2953,69],{"id":68},[55,2955,2956,2960],{},[26,2957,2958,79],{},[75,2959,78],{"href":77},[26,2961,2962],{},[75,2963,85],{"href":84},{"title":87,"searchDepth":88,"depth":88,"links":2965},[2966,2967,2968],{"id":20,"depth":88,"text":21},{"id":52,"depth":88,"text":53},{"id":68,"depth":88,"text":69},{},{"title":5,"order":97},{"title":5,"description":93},{"id":2973,"title":2974,"body":2975,"description":3102,"extension":94,"meta":3103,"navigation":3104,"path":3105,"seo":3106,"stem":3107,"__hash__":3108},"docs\u002Fdocs\u002Fwelcome.md","Welcome",{"type":7,"value":2976,"toc":3094},[2977,2981,2985,2988,2992,2999,3002,3008,3015,3019,3022,3031,3034,3040,3044,3074,3078],[10,2978,2980],{"id":2979},"welcome-to-quark","Welcome to Quark",[18,2982,2984],{"id":2983},"what-is-quark","What is Quark?",[14,2986,2987],{},"Quark is a small box that turns a USB drive into your own cloud. Photos, files, documents — on hardware you own, in a\nroom you can walk into. Think Google Drive or iCloud, except the default is that your stuff stays at home.",[18,2989,2991],{"id":2990},"how-does-quark-stay-private","How does Quark stay private?",[14,2993,2994],{},[2995,2996],"img",{"alt":2997,"src":2998},"Quark Architecture","\u002Fassets\u002Fdocs\u002Fquark-architecture.webp",[14,3000,3001],{},"By default, Quark works on your home network. Devices on your WiFi talk to Quark through your router. Your files live on\nthe drive you plugged in.",[14,3003,3004,3005,3007],{},"You can also reach Quark when you are away from home. Remote access is off until an admin turns it on, and when it is\non, your devices and your Quark join one small private network of their own. Your files still live on your drive — we do\nnot hold a copy. See ",[75,3006,941],{"href":940}," for the plain-English version.",[14,3009,3010,3011,147],{},"With remote access off, the only routine contact Quark makes with the public internet is checking for software updates.\n(Turning on remote access, or starting an import yourself, is separate from that default.) Don't take our word for it —\nthe code is public on ",[75,3012,3014],{"href":1686,"rel":3013},[1014],"GitHub",[18,3016,3018],{"id":3017},"how-can-we-trust-you","How can we trust you?",[14,3020,3021],{},"Brandon here. This started as a product for my parents. No venture capital. No subscription that can change price on you\nlater. If the hardware ever dies, your data is on your drives — swap the box, keep the files.",[14,3023,3024,3025,3030],{},"We're on Reddit at ",[75,3026,3029],{"href":3027,"rel":3028},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fautobutler\u002F",[1014],"r\u002Fautobutler"," if you want to talk to us or the community.",[18,3032,3033],{"id":109},"Getting started",[14,3035,3036,3037,3039],{},"Ready? See the ",[75,3038,85],{"href":84}," guide.",[18,3041,3043],{"id":3042},"need-help","Need help?",[55,3045,3046,3053,3060,3067],{},[26,3047,3048,3052],{},[33,3049,3050],{},[75,3051,85],{"href":84}," — day-to-day use",[26,3054,3055,3059],{},[33,3056,3057],{},[75,3058,941],{"href":940}," — local-first, explained plainly",[26,3061,3062,3066],{},[33,3063,3064],{},[75,3065,929],{"href":267}," — troubleshooting and how to reach us",[26,3068,3069,3073],{},[33,3070,3071],{},[75,3072,78],{"href":77}," — passwords, backups, and what Quark does not do",[18,3075,3077],{"id":3076},"legal","Legal",[55,3079,3080,3087],{},[26,3081,3082],{},[75,3083,3086],{"href":3084,"rel":3085},"https:\u002F\u002Fautobutler.org\u002Fterms",[1014],"Terms",[26,3088,3089],{},[75,3090,3093],{"href":3091,"rel":3092},"https:\u002F\u002Fautobutler.org\u002Fprivacy",[1014],"Privacy",{"title":87,"searchDepth":88,"depth":88,"links":3095},[3096,3097,3098,3099,3100,3101],{"id":2983,"depth":88,"text":2984},{"id":2990,"depth":88,"text":2991},{"id":3017,"depth":88,"text":3018},{"id":109,"depth":88,"text":3033},{"id":3042,"depth":88,"text":3043},{"id":3076,"depth":88,"text":3077},"Welcome to Quark — a small box that turns your USB drive into your own cloud",{},{"title":2974,"order":1863},"\u002Fdocs\u002Fwelcome",{"title":2974,"description":3102},"docs\u002Fwelcome","YqtEYLfvhxXmmKaAC_D3wPcesDoxKsIiFixRo7p5kvA",1791412832133]