[{"data":1,"prerenderedAt":986},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fbancwr\u002Finstallation":128,"\u002Fdocs\u002Fbancwr\u002Finstallation-surround":983},[4,19,62,93],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[9,11,15],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-rocket",{"title":12,"path":13,"stem":14},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","1.docs\u002F1.getting-started\u002F2.installation",{"title":16,"path":17,"stem":18},"Using Diogel","\u002Fdocs\u002Fgetting-started\u002Fusage","1.docs\u002F1.getting-started\u002F3.usage",{"title":20,"path":21,"stem":22,"children":23,"icon":61},"Porwr","\u002Fdocs\u002Fporwr","1.docs\u002F2.porwr\u002F01.index",[24,26,29,33,37,41,45,49,53,57],{"title":25,"path":21,"stem":22,"icon":10},"What is Porwr",{"title":12,"path":27,"stem":28},"\u002Fdocs\u002Fporwr\u002Finstallation","1.docs\u002F2.porwr\u002F02.installation",{"title":30,"path":31,"stem":32},"Dashboard","\u002Fdocs\u002Fporwr\u002Fdashboard","1.docs\u002F2.porwr\u002F03.dashboard",{"title":34,"path":35,"stem":36},"Key Management","\u002Fdocs\u002Fporwr\u002Fkeys","1.docs\u002F2.porwr\u002F04.keys",{"title":38,"path":39,"stem":40},"Profile Management","\u002Fdocs\u002Fporwr\u002Fprofile","1.docs\u002F2.porwr\u002F05.profile",{"title":42,"path":43,"stem":44},"Relay Management","\u002Fdocs\u002Fporwr\u002Frelay","1.docs\u002F2.porwr\u002F06.relay",{"title":46,"path":47,"stem":48},"Messaging","\u002Fdocs\u002Fporwr\u002Fmessaging","1.docs\u002F2.porwr\u002F07.messaging",{"title":50,"path":51,"stem":52},"Media Management","\u002Fdocs\u002Fporwr\u002Fmedia","1.docs\u002F2.porwr\u002F08.media",{"title":54,"path":55,"stem":56},"Wallet Management","\u002Fdocs\u002Fporwr\u002Fwallet","1.docs\u002F2.porwr\u002F09.wallet",{"title":58,"path":59,"stem":60},"Extension Settings","\u002Fdocs\u002Fporwr\u002Fsettings","1.docs\u002F2.porwr\u002F10.settings","i-lucide-puzzle",{"title":63,"path":64,"stem":65,"children":66,"icon":92},"Symudol","\u002Fdocs\u002Fsymudol","1.docs\u002F3.symudol\u002F1.index",[67,69,72,76,80,84,88],{"title":68,"path":64,"stem":65,"icon":10},"What is Symudol",{"title":12,"path":70,"stem":71},"\u002Fdocs\u002Fsymudol\u002Finstallation","1.docs\u002F3.symudol\u002F2.installation",{"title":73,"path":74,"stem":75},"Your vault","\u002Fdocs\u002Fsymudol\u002Fvault","1.docs\u002F3.symudol\u002F3.vault",{"title":77,"path":78,"stem":79},"Accounts and profile","\u002Fdocs\u002Fsymudol\u002Faccounts","1.docs\u002F3.symudol\u002F4.accounts",{"title":81,"path":82,"stem":83},"Approving requests","\u002Fdocs\u002Fsymudol\u002Fapproving-requests","1.docs\u002F3.symudol\u002F5.approving-requests",{"title":85,"path":86,"stem":87},"Remote apps (NIP-46)","\u002Fdocs\u002Fsymudol\u002Fremote-apps","1.docs\u002F3.symudol\u002F6.remote-apps",{"title":89,"path":90,"stem":91},"Settings","\u002Fdocs\u002Fsymudol\u002Fsettings","1.docs\u002F3.symudol\u002F7.settings","i-lucide-smartphone",{"title":94,"path":95,"stem":96,"children":97,"icon":127},"Bancwr","\u002Fdocs\u002Fbancwr","1.docs\u002F4.bancwr\u002F1.index",[98,100,103,107,111,115,119,123],{"title":99,"path":95,"stem":96,"icon":10},"What is Bancwr",{"title":12,"path":101,"stem":102},"\u002Fdocs\u002Fbancwr\u002Finstallation","1.docs\u002F4.bancwr\u002F2.installation",{"title":104,"path":105,"stem":106},"First administrator and signing in","\u002Fdocs\u002Fbancwr\u002Ffirst-administrator","1.docs\u002F4.bancwr\u002F3.first-administrator",{"title":108,"path":109,"stem":110},"Team and roles","\u002Fdocs\u002Fbancwr\u002Fteam","1.docs\u002F4.bancwr\u002F4.team",{"title":112,"path":113,"stem":114},"Connecting apps","\u002Fdocs\u002Fbancwr\u002Fconnecting-apps","1.docs\u002F4.bancwr\u002F5.connecting-apps",{"title":116,"path":117,"stem":118},"Profile, follows and relays","\u002Fdocs\u002Fbancwr\u002Fprofile-follows-relays","1.docs\u002F4.bancwr\u002F6.profile-follows-relays",{"title":120,"path":121,"stem":122},"Health, versions and logs","\u002Fdocs\u002Fbancwr\u002Fhealth-and-logs","1.docs\u002F4.bancwr\u002F7.health-and-logs",{"title":124,"path":125,"stem":126},"Updating","\u002Fdocs\u002Fbancwr\u002Fupdating","1.docs\u002F4.bancwr\u002F8.updating","i-lucide-server",{"id":129,"title":12,"body":130,"description":201,"extension":977,"meta":978,"navigation":979,"path":101,"seo":980,"stem":102,"__hash__":982},"docs\u002F1.docs\u002F4.bancwr\u002F2.installation.md",{"type":131,"value":132,"toc":958},"minimark",[133,138,142,160,163,167,170,184,195,230,243,250,254,272,281,285,292,308,313,318,403,406,426,433,436,461,476,480,483,538,542,551,556,568,582,603,607,612,637,641,647,650,685,688,714,718,724,733,756,763,770,774,777,799,802,820,824,828,831,852,855,897,904,908,915,931,937,941,949,954],[134,135,137],"h2",{"id":136},"requirements","Requirements",[139,140,141],"p",{},"You need:",[143,144,145,149,152],"ul",{},[146,147,148],"li",{},"A server you control.",[146,150,151],{},"Podman Compose, or Docker Compose.",[146,153,154,155,159],{},"A domain name and HTTPS in front of Bancwr. Sign-in only works over HTTPS, except on ",[156,157,158],"code",{},"localhost",".",[139,161,162],{},"Bancwr runs as two containers: the bunker and the dashboard (the frontend). Both are released together under one version.",[134,164,166],{"id":165},"container-images","Container images",[139,168,169],{},"The images are published to the GitHub Container Registry:",[143,171,172,178],{},[146,173,174,177],{},[156,175,176],{},"ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-backend"," (the bunker)",[146,179,180,183],{},[156,181,182],{},"ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-frontend"," (the dashboard)",[139,185,186,187,190,191,194],{},"Use ",[156,188,189],{},":latest"," for the newest release, or a version such as ",[156,192,193],{},":0.1.0",". Always run the same version for both images.",[196,197,202],"pre",{"className":198,"code":199,"language":200,"meta":201,"style":201},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","podman pull ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-backend:0.1.0\npodman pull ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-frontend:0.1.0\n","bash","",[156,203,204,220],{"__ignoreMap":201},[205,206,209,213,217],"span",{"class":207,"line":208},"line",1,[205,210,212],{"class":211},"sBMFI","podman",[205,214,216],{"class":215},"sfazB"," pull",[205,218,219],{"class":215}," ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-backend:0.1.0\n",[205,221,223,225,227],{"class":207,"line":222},2,[205,224,212],{"class":211},[205,226,216],{"class":215},[205,228,229],{"class":215}," ghcr.io\u002Fdiogel-io\u002Fbancwr-diogel-frontend:0.1.0\n",[231,232,233],"note",{},[139,234,235,236,239,240,242],{},"Until Bancwr 0.1.0 is tagged, only trunk builds are published, as ",[156,237,238],{},":edge",". These are the latest merged code, not a reviewed release. Use ",[156,241,238],{}," for both images until then.",[139,244,245,246,249],{},"See ",[247,248,124],"a",{"href":125}," for every tag and what it tracks.",[134,251,253],{"id":252},"get-the-compose-file","Get the compose file",[139,255,256,257,260,261,264,265,271],{},"Copy ",[156,258,259],{},"compose.yaml"," and ",[156,262,263],{},".env.example"," from the ",[247,266,270],{"href":267,"rel":268},"https:\u002F\u002Fgithub.com\u002Fdiogel-io\u002Fbancwr",[269],"nofollow","Bancwr repository"," into a directory on your server.",[139,273,274,276,277,280],{},[156,275,259],{}," pins an exact version of both images. Change the two ",[156,278,279],{},"image:"," lines if you want another version.",[134,282,284],{"id":283},"configure-the-environment","Configure the environment",[139,286,287,288,291],{},"Create a ",[156,289,290],{},".env"," file from the example:",[196,293,295],{"className":198,"code":294,"language":200,"meta":201,"style":201},"cp .env.example .env\n",[156,296,297],{"__ignoreMap":201},[205,298,299,302,305],{"class":207,"line":208},[205,300,301],{"class":211},"cp",[205,303,304],{"class":215}," .env.example",[205,306,307],{"class":215}," .env\n",[139,309,310,311,159],{},"Then edit ",[156,312,290],{},[314,315,317],"h3",{"id":316},"required-settings","Required settings",[319,320,321,334],"table",{},[322,323,324],"thead",{},[325,326,327,331],"tr",{},[328,329,330],"th",{},"Variable",[328,332,333],{},"What it is",[335,336,337,352,366,376,386],"tbody",{},[325,338,339,345],{},[340,341,342],"td",{},[156,343,344],{},"BUNKER_NSEC",[340,346,347,348,351],{},"The bunker's own private key, as an ",[156,349,350],{},"nsec",". Every connected app signs with it.",[325,353,354,359],{},[340,355,356],{},[156,357,358],{},"BANCWR_ADMIN_PUBKEY",[340,360,361,362,365],{},"Your own public key, as an ",[156,363,364],{},"npub"," or hex. It becomes the first administrator.",[325,367,368,373],{},[340,369,370],{},[156,371,372],{},"BANCWR_PROXY_SECRET",[340,374,375],{},"A shared secret between the dashboard and the bunker. At least 32 characters.",[325,377,378,383],{},[340,379,380],{},[156,381,382],{},"NUXT_SESSION_PASSWORD",[340,384,385],{},"A secret that seals the dashboard's sign-in cookie.",[325,387,388,393],{},[340,389,390],{},[156,391,392],{},"NUXT_SITE_ORIGIN",[340,394,395,396,399,400,159],{},"The ",[156,397,398],{},"https:\u002F\u002F"," address people open Bancwr on, such as ",[156,401,402],{},"https:\u002F\u002Fbancwr.example",[139,404,405],{},"Generate each secret with:",[196,407,409],{"className":198,"code":408,"language":200,"meta":201,"style":201},"openssl rand -hex 32\n",[156,410,411],{"__ignoreMap":201},[205,412,413,416,419,422],{"class":207,"line":208},[205,414,415],{"class":211},"openssl",[205,417,418],{"class":215}," rand",[205,420,421],{"class":215}," -hex",[205,423,425],{"class":424},"sbssI"," 32\n",[139,427,428,429,260,431,159],{},"Use a different value for ",[156,430,372],{},[156,432,382],{},[139,434,435],{},"A few rules:",[143,437,438,443,450],{},[146,439,440,442],{},[156,441,344],{}," should be a key made for the bunker. It can never sign in to the dashboard, so do not use your own key.",[146,444,445,447,448,159],{},[156,446,358],{}," must not be the bunker's key. The bunker refuses to start if it is, or if the value is not a valid key. See ",[247,449,104],{"href":105},[146,451,452,454,455,458,459,159],{},[156,453,392],{}," has no path and no trailing slash. It must match the address in the browser's address bar exactly, or sign-in is refused. Plain ",[156,456,457],{},"http:\u002F\u002F"," is accepted only for ",[156,460,158],{},[139,462,463,464,260,466,468,469,471,472,260,474,159],{},"The bunker does not start without ",[156,465,344],{},[156,467,372],{},". Compose refuses to start without ",[156,470,372],{},", ",[156,473,382],{},[156,475,392],{},[314,477,479],{"id":478},"optional-settings","Optional settings",[139,481,482],{},"These change which relays and image server the dashboard uses for members' profiles. Leave them empty to use the defaults.",[319,484,485,497],{},[322,486,487],{},[325,488,489,491,494],{},[328,490,330],{},[328,492,493],{},"What it does",[328,495,496],{},"Default when empty",[335,498,499,512,525],{},[325,500,501,506,509],{},[340,502,503],{},[156,504,505],{},"NUXT_PUBLIC_PROFILE_RELAYS",[340,507,508],{},"Relays used to read and publish members' profiles, besides each member's own relays. Comma-separated.",[340,510,511],{},"damus, nos.lol, primal",[325,513,514,519,522],{},[340,515,516],{},[156,517,518],{},"NUXT_PUBLIC_INDEXER_RELAYS",[340,520,521],{},"Indexer relays, used to find profiles and relay lists from across the network.",[340,523,524],{},"purplepag.es, profiles.nostr1.com, relay.nos.social",[325,526,527,532,535],{},[340,528,529],{},[156,530,531],{},"NUXT_PUBLIC_BLOSSOM_SERVER",[340,533,534],{},"The Blossom server profile images are uploaded to, when a member has none of their own.",[340,536,537],{},"blossom.primal.net",[314,539,541],{"id":540},"nip-46-and-the-bunkers-relays","NIP-46 and the bunker's relays",[139,543,544,545,548,549,159],{},"Apps connect to the bunker over NIP-46. NIP-46 is on by default. To turn it off, set ",[156,546,547],{},"NIP46_ENABLED=false"," in ",[156,550,290],{},[139,552,553,554,159],{},"Turning NIP-46 on connects no app by itself. An administrator still has to issue a connection token for each app. See ",[247,555,112],{"href":113},[139,557,558,559,563,564,567],{},"Apps reach the bunker through its relays. After you first sign in, choose them on the ",[560,561,562],"strong",{},"Config"," page, under ",[560,565,566],{},"Bunker relays",". You can pick from a search of known relays or add one by its address. Up to six are allowed, and at least two are advised. The bunker uses them straight away, without a restart.",[139,569,570,571,573,574,577,578,581],{},"To fix the relays in ",[156,572,290],{}," instead, set ",[156,575,576],{},"NIP46_RELAYS"," to a comma-separated list, such as ",[156,579,580],{},"wss:\u002F\u002Frelay.nsec.app,wss:\u002F\u002Frelay.damus.io",". While it is set, it overrides the relays chosen on the Config page, and that list is shown read-only.",[231,583,584],{},[139,585,586,587,260,590,592,593,596,597,599,600,602],{},"Earlier versions of this guide said to add ",[156,588,589],{},"NIP46_ENABLED",[156,591,576],{}," to the ",[156,594,595],{},"bunker"," service in ",[156,598,259],{}," yourself. ",[156,601,259],{}," now passes both, so you can remove those two lines.",[314,604,606],{"id":605},"port-and-database","Port and database",[139,608,609,611],{},[156,610,259],{}," sets these itself:",[143,613,614,617,630],{},[146,615,616],{},"The bunker listens on port 3000 inside the compose network. Its port is not published on the host; only the dashboard reaches it.",[146,618,619,620,623,624,627,628,159],{},"The bunker's database is ",[156,621,622],{},"\u002Fdata\u002Fbancwr.db"," in the container, which is the ",[156,625,626],{},".\u002Fdata"," directory next to ",[156,629,259],{},[146,631,632,633,636],{},"The dashboard is published on ",[156,634,635],{},"127.0.0.1:3001"," only.",[134,638,640],{"id":639},"prepare-the-data-directory","Prepare the data directory",[139,642,643,644,646],{},"Both containers run as user ID 65532, not root. The bunker must be able to write to ",[156,645,626],{},". Before the first start, create the directory and hand it over.",[139,648,649],{},"With rootless Podman:",[196,651,653],{"className":198,"code":652,"language":200,"meta":201,"style":201},"mkdir -p data\npodman unshare chown -R 65532:65532 .\u002Fdata\n",[156,654,655,666],{"__ignoreMap":201},[205,656,657,660,663],{"class":207,"line":208},[205,658,659],{"class":211},"mkdir",[205,661,662],{"class":215}," -p",[205,664,665],{"class":215}," data\n",[205,667,668,670,673,676,679,682],{"class":207,"line":222},[205,669,212],{"class":211},[205,671,672],{"class":215}," unshare",[205,674,675],{"class":215}," chown",[205,677,678],{"class":215}," -R",[205,680,681],{"class":215}," 65532:65532",[205,683,684],{"class":215}," .\u002Fdata\n",[139,686,687],{},"With Docker:",[196,689,691],{"className":198,"code":690,"language":200,"meta":201,"style":201},"mkdir -p data\nsudo chown -R 65532:65532 .\u002Fdata\n",[156,692,693,701],{"__ignoreMap":201},[205,694,695,697,699],{"class":207,"line":208},[205,696,659],{"class":211},[205,698,662],{"class":215},[205,700,665],{"class":215},[205,702,703,706,708,710,712],{"class":207,"line":222},[205,704,705],{"class":211},"sudo",[205,707,675],{"class":215},[205,709,678],{"class":215},[205,711,681],{"class":215},[205,713,684],{"class":215},[134,715,717],{"id":716},"put-https-in-front","Put HTTPS in front",[139,719,720,721,723],{},"Sign-in needs HTTPS. The dashboard is published on ",[156,722,635],{},", so put a TLS reverse proxy in front of it.",[139,725,726,727,732],{},"With ",[247,728,731],{"href":729,"rel":730},"https:\u002F\u002Fcaddyserver.com\u002F",[269],"Caddy",", which obtains and renews certificates itself:",[196,734,738],{"className":735,"code":736,"language":737,"meta":201,"style":201},"language-caddy shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bancwr.example {\n    reverse_proxy 127.0.0.1:3001\n}\n","caddy",[156,739,740,745,750],{"__ignoreMap":201},[205,741,742],{"class":207,"line":208},[205,743,744],{},"bancwr.example {\n",[205,746,747],{"class":207,"line":222},[205,748,749],{},"    reverse_proxy 127.0.0.1:3001\n",[205,751,753],{"class":207,"line":752},3,[205,754,755],{},"}\n",[139,757,758,759,762],{},"On a local network without a public name, add ",[156,760,761],{},"tls internal"," to that block. Caddy then uses its own certificate authority, which each browser has to trust.",[139,764,765,766,769],{},"For testing on one machine, ",[156,767,768],{},"NUXT_SITE_ORIGIN=http:\u002F\u002Flocalhost:3001"," works without TLS.",[134,771,773],{"id":772},"start-bancwr","Start Bancwr",[139,775,776],{},"If you use Podman, make sure the Podman socket is running:",[196,778,780],{"className":198,"code":779,"language":200,"meta":201,"style":201},"systemctl --user enable --now podman.socket\n",[156,781,782],{"__ignoreMap":201},[205,783,784,787,790,793,796],{"class":207,"line":208},[205,785,786],{"class":211},"systemctl",[205,788,789],{"class":215}," --user",[205,791,792],{"class":215}," enable",[205,794,795],{"class":215}," --now",[205,797,798],{"class":215}," podman.socket\n",[139,800,801],{},"Start the containers:",[196,803,805],{"className":198,"code":804,"language":200,"meta":201,"style":201},"podman compose up -d\n",[156,806,807],{"__ignoreMap":201},[205,808,809,811,814,817],{"class":207,"line":208},[205,810,212],{"class":211},[205,812,813],{"class":215}," compose",[205,815,816],{"class":215}," up",[205,818,819],{"class":215}," -d\n",[134,821,823],{"id":822},"check-it-is-running","Check it is running",[314,825,827],{"id":826},"bunker-health","Bunker health",[139,829,830],{},"The bunker checks itself. To run the check by hand:",[196,832,834],{"className":198,"code":833,"language":200,"meta":201,"style":201},"podman exec bancwr-bunker bunker healthcheck\n",[156,835,836],{"__ignoreMap":201},[205,837,838,840,843,846,849],{"class":207,"line":208},[205,839,212],{"class":211},[205,841,842],{"class":215}," exec",[205,844,845],{"class":215}," bancwr-bunker",[205,847,848],{"class":215}," bunker",[205,850,851],{"class":215}," healthcheck\n",[139,853,854],{},"It exits without an error when the bunker answers. Compose also runs this check every 30 seconds. To see the result:",[196,856,858],{"className":198,"code":857,"language":200,"meta":201,"style":201},"podman inspect --format='{{json .State.Health}}' $(podman compose ps -q bunker)\n",[156,859,860],{"__ignoreMap":201},[205,861,862,864,867,870,874,877,879,882,884,886,889,892,894],{"class":207,"line":208},[205,863,212],{"class":211},[205,865,866],{"class":215}," inspect",[205,868,869],{"class":215}," --format=",[205,871,873],{"class":872},"sMK4o","'",[205,875,876],{"class":215},"{{json .State.Health}}",[205,878,873],{"class":872},[205,880,881],{"class":872}," $(",[205,883,212],{"class":211},[205,885,813],{"class":215},[205,887,888],{"class":215}," ps",[205,890,891],{"class":215}," -q",[205,893,848],{"class":215},[205,895,896],{"class":872},")\n",[139,898,899,900,903],{},"The images have no shell, so ",[156,901,902],{},"podman exec … sh"," does not work.",[314,905,907],{"id":906},"versions","Versions",[139,909,910,911,914],{},"The dashboard reports its version at ",[156,912,913],{},"\u002Fapi\u002Fversion",":",[196,916,918],{"className":198,"code":917,"language":200,"meta":201,"style":201},"curl -s http:\u002F\u002Flocalhost:3001\u002Fapi\u002Fversion\n",[156,919,920],{"__ignoreMap":201},[205,921,922,925,928],{"class":207,"line":208},[205,923,924],{"class":211},"curl",[205,926,927],{"class":215}," -s",[205,929,930],{"class":215}," http:\u002F\u002Flocalhost:3001\u002Fapi\u002Fversion\n",[139,932,933,934,159],{},"The bunker's first log line also carries its version, such as ",[156,935,936],{},"Bancwr Diogel 0.1.0 starting...",[314,938,940],{"id":939},"in-the-dashboard","In the dashboard",[139,942,943,944,946,947,159],{},"Open Bancwr at your ",[156,945,392],{}," address and sign in with the key you set in ",[156,948,358],{},[139,950,951,952,159],{},"The health indicator at the top of every page shows whether the bunker is healthy. The sidebar footer shows the bunker and dashboard versions. See ",[247,953,120],{"href":121},[955,956,957],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":201,"searchDepth":222,"depth":222,"links":959},[960,961,962,963,969,970,971,972],{"id":136,"depth":222,"text":137},{"id":165,"depth":222,"text":166},{"id":252,"depth":222,"text":253},{"id":283,"depth":222,"text":284,"children":964},[965,966,967,968],{"id":316,"depth":752,"text":317},{"id":478,"depth":752,"text":479},{"id":540,"depth":752,"text":541},{"id":605,"depth":752,"text":606},{"id":639,"depth":222,"text":640},{"id":716,"depth":222,"text":717},{"id":772,"depth":222,"text":773},{"id":822,"depth":222,"text":823,"children":973},[974,975,976],{"id":826,"depth":752,"text":827},{"id":906,"depth":752,"text":907},{"id":939,"depth":752,"text":940},"md",{},true,{"description":981,"title":12},"Install Bancwr on your own server with Podman Compose or Docker Compose, behind a domain name and HTTPS. The bunker and dashboard ship together.","A099pX7urC3rFDgAXnX3kn3Zi53pxeBWmnCemqAqb9g",[984,985],{"title":99,"path":95,"stem":96,"description":201,"icon":10,"children":-1},{"title":104,"path":105,"stem":106,"description":201,"children":-1},1793311923236]