[{"data":1,"prerenderedAt":413},["ShallowReactive",2],{"navigation":3,"\u002Fusage\u002Fweb-ui":94,"\u002Fusage\u002Fweb-ui-surround":408},[4,16,38,56,70,80],{"title":5,"path":6,"stem":7,"children":8,"icon":15},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":10,"path":6,"stem":7},"What is fsbackup?",{"title":12,"path":13,"stem":14},"Requirements & hardware","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F2.requirements","i-lucide-rocket",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":37},"Installation","i-lucide-package","\u002Finstallation","2.installation",[22,26,30,33],{"title":23,"path":24,"stem":25},"Quick start","\u002Finstallation\u002Fquickstart","2.installation\u002F1.quickstart",{"title":27,"path":28,"stem":29},"ZFS pool setup","\u002Finstallation\u002Fzfs-pool","2.installation\u002F2.zfs-pool",{"title":17,"path":31,"stem":32},"\u002Finstallation\u002Fbare-metal","2.installation\u002F3.bare-metal",{"title":34,"path":35,"stem":36},"Adding remote hosts","\u002Finstallation\u002Fadding-hosts","2.installation\u002F4.adding-hosts",false,{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":37},"Configuration","i-lucide-sliders","\u002Fconfiguration","3.configuration",[44,48,52],{"title":45,"path":46,"stem":47},"fsbackup.conf","\u002Fconfiguration\u002Ffsbackup-conf","3.configuration\u002F1.fsbackup-conf",{"title":49,"path":50,"stem":51},"targets.yml","\u002Fconfiguration\u002Ftargets","3.configuration\u002F2.targets",{"title":53,"path":54,"stem":55},"Scheduling","\u002Fconfiguration\u002Fscheduling","3.configuration\u002F3.scheduling",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":37},"Usage","i-lucide-play","\u002Fusage","4.usage",[62,66],{"title":63,"path":64,"stem":65},"Web UI","\u002Fusage\u002Fweb-ui","4.usage\u002F1.web-ui",{"title":67,"path":68,"stem":69},"Running jobs manually","\u002Fusage\u002Frunning-jobs","4.usage\u002F2.running-jobs",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":37},"Restore","i-lucide-history","\u002Frestore","5.restore",[76],{"title":77,"path":78,"stem":79},"Restoring data","\u002Frestore\u002Frestore","5.restore\u002F1.restore",{"title":81,"icon":82,"path":83,"stem":84,"children":85,"page":37},"Reference","i-lucide-book-open","\u002Freference","6.reference",[86,90],{"title":87,"path":88,"stem":89},"Script reference","\u002Freference\u002Fscripts","6.reference\u002F1.scripts",{"title":91,"path":92,"stem":93},"Prometheus metrics","\u002Freference\u002Fmetrics","6.reference\u002F2.metrics",{"id":95,"title":63,"body":96,"description":401,"extension":402,"links":403,"meta":404,"navigation":405,"path":64,"seo":406,"stem":65,"__hash__":407},"docs\u002F4.usage\u002F1.web-ui.md",{"type":97,"value":98,"toc":392},"minimark",[99,108,113,124,169,173,176,186,190,201,204,209,244,247,253,272,275,278,287,291,294,326,336,369,372,388],[100,101,102,103,107],"p",{},"The fsbackup web UI is a FastAPI + HTMX interface that runs as ",[104,105,106],"code",{},"fsbackup-web.service"," on the backup server.",[109,110,112],"h2",{"id":111},"accessing-the-ui","Accessing the UI",[100,114,115,116,119,120,123],{},"The web UI binds to ",[104,117,118],{},"0.0.0.0:8080"," by default. Open ",[104,121,122],{},"http:\u002F\u002F\u003Cbackup-server>:8080"," in your browser.",[125,126,131],"pre",{"className":127,"code":128,"language":129,"meta":130,"style":130},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo systemctl status fsbackup-web\nsudo journalctl -u fsbackup-web -f\n","bash","",[104,132,133,152],{"__ignoreMap":130},[134,135,138,142,146,149],"span",{"class":136,"line":137},"line",1,[134,139,141],{"class":140},"sBMFI","sudo",[134,143,145],{"class":144},"sfazB"," systemctl",[134,147,148],{"class":144}," status",[134,150,151],{"class":144}," fsbackup-web\n",[134,153,155,157,160,163,166],{"class":136,"line":154},2,[134,156,141],{"class":140},[134,158,159],{"class":144}," journalctl",[134,161,162],{"class":144}," -u",[134,164,165],{"class":144}," fsbackup-web",[134,167,168],{"class":144}," -f\n",[109,170,172],{"id":171},"dashboard","Dashboard",[100,174,175],{},"The dashboard shows:",[177,178,179,183],"ul",{},[180,181,182],"li",{},"Last run status per class (exit code from the latest runner run)",[180,184,185],{},"S3 export summary — last run time, objects uploaded\u002Fskipped\u002Ffailed, bytes transferred",[109,187,189],{"id":188},"snapshots","Snapshots",[100,191,192,193,196,197,200],{},"The ",[194,195,189],"strong",{}," page lists all ZFS snapshots, filterable by tier, date, class, and target. Each snapshot links to a file browser backed by the ZFS ",[104,198,199],{},".zfs\u002Fsnapshot\u002F"," read-only directory.",[109,202,39],{"id":203},"configuration",[100,205,192,206,208],{},[194,207,39],{}," page has four tabs:",[177,210,211,220,229,238],{},[180,212,213,216,217,219],{},[194,214,215],{},"Hosts"," — remote hosts derived from ",[104,218,49],{},", with all their associated targets",[180,221,222,225,226,228],{},[194,223,224],{},"Targets"," — all targets from ",[104,227,49],{}," with source path, rsync options, and ZFS dataset size",[180,230,231,234,235,237],{},[194,232,233],{},"Schedule"," — all systemd timer schedules; runner schedules sourced from ",[104,236,45],{},", fixed timers from their unit files",[180,239,240,243],{},[194,241,242],{},"Volumes & Maintenance"," — ZFS pool disk usage and S3 bucket object count and total size",[109,245,67],{"id":246},"running-jobs-manually",[100,248,192,249,252],{},[194,250,251],{},"Run Jobs"," page lets you trigger any script directly from the UI:",[177,254,255,258,269],{},[180,256,257],{},"Run the doctor for a class",[180,259,260,261,264,265,268],{},"Run the runner (daily\u002Fweekly\u002Fmonthly) for a class, with optional ",[104,262,263],{},"--dry-run"," or ",[104,266,267],{},"--target"," filter",[180,270,271],{},"Run retention or S3 export",[100,273,274],{},"All jobs stream their output to the page in real time.",[109,276,71],{"id":277},"restore",[100,279,192,280,282,283,286],{},[194,281,71],{}," page provides a guided interface for restoring files from a snapshot. See ",[284,285,77],"a",{"href":78}," for details.",[109,288,290],{"id":289},"authentication","Authentication",[100,292,293],{},"Generate a bcrypt hash for your password:",[125,295,297],{"className":127,"code":296,"language":129,"meta":130,"style":130},"htpasswd -nbB \"\" yourpassword | cut -d: -f2\n",[104,298,299],{"__ignoreMap":130},[134,300,301,304,307,311,314,317,320,323],{"class":136,"line":137},[134,302,303],{"class":140},"htpasswd",[134,305,306],{"class":144}," -nbB",[134,308,310],{"class":309},"sMK4o"," \"\"",[134,312,313],{"class":144}," yourpassword",[134,315,316],{"class":309}," |",[134,318,319],{"class":140}," cut",[134,321,322],{"class":144}," -d:",[134,324,325],{"class":144}," -f2\n",[100,327,328,329,332,333,335],{},"Set it in ",[104,330,331],{},"web\u002F.env"," (or the environment passed to ",[104,334,106],{},"):",[125,337,339],{"className":127,"code":338,"language":129,"meta":130,"style":130},"AUTH_ENABLED=true\nAUTH_PASSWORD_HASH='$2y$10$...'\n",[104,340,341,353],{"__ignoreMap":130},[134,342,343,347,350],{"class":136,"line":137},[134,344,346],{"class":345},"sTEyZ","AUTH_ENABLED",[134,348,349],{"class":309},"=",[134,351,352],{"class":144},"true\n",[134,354,355,358,360,363,366],{"class":136,"line":154},[134,356,357],{"class":345},"AUTH_PASSWORD_HASH",[134,359,349],{"class":309},[134,361,362],{"class":309},"'",[134,364,365],{"class":144},"$2y$10$...",[134,367,368],{"class":309},"'\n",[100,370,371],{},"Restart the service after changing auth settings:",[125,373,375],{"className":127,"code":374,"language":129,"meta":130,"style":130},"sudo systemctl restart fsbackup-web\n",[104,376,377],{"__ignoreMap":130},[134,378,379,381,383,386],{"class":136,"line":137},[134,380,141],{"class":140},[134,382,145],{"class":144},[134,384,385],{"class":144}," restart",[134,387,151],{"class":144},[389,390,391],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":130,"searchDepth":137,"depth":154,"links":393},[394,395,396,397,398,399,400],{"id":111,"depth":154,"text":112},{"id":171,"depth":154,"text":172},{"id":188,"depth":154,"text":189},{"id":203,"depth":154,"text":39},{"id":246,"depth":154,"text":67},{"id":277,"depth":154,"text":71},{"id":289,"depth":154,"text":290},"Using the fsbackup web interface to monitor backups, browse snapshots, and run jobs.","md",null,{},true,{"title":63,"description":401},"LoOjYljOyKxXym7Vxe_mKDwM0vKutKGMHADtgPaScvY",[409,411],{"title":53,"path":54,"stem":55,"description":410,"children":-1},"How to configure the backup schedule using systemd timers and OnCalendar= values in fsbackup.conf.",{"title":67,"path":68,"stem":69,"description":412,"children":-1},"How to run fsbackup scripts manually from the command line or web UI.",1775923865773]