[{"data":1,"prerenderedAt":284},["ShallowReactive",2],{"\u002Fopen-source\u002Fburzblog":3,"\u002Fopen-source\u002Fburzblog-surround":277},{"id":4,"title":5,"body":6,"description":251,"extension":252,"icon":253,"links":254,"meta":267,"navigation":268,"path":269,"seo":270,"stem":271,"tags":272,"__hash__":276},"openSource\u002Fopen-source\u002Fburzblog.md","BurzBlog",{"type":7,"value":8,"toc":244},"minimark",[9,13,18,21,59,63,96,99,103,122,129,165,168,198,202,226,230,240],[10,11,12],"p",{},"BurzBlog is where blog posts get written. It's a single Go binary with the admin\npanel built in, backed by one SQLite file. Your website (Nuxt, Astro, Next or\nanything else) reads the posts and stays static and fast, even when BurzBlog is\ndown.",[14,15,17],"h2",{"id":16},"why-it-exists","Why it exists",[10,19,20],{},"Most CMSes want to be your website too. We only wanted somewhere to write,\nversion and publish posts, with no runtime to babysit.",[22,23,24,32,38,53],"ol",{},[25,26,27,31],"li",{},[28,29,30],"strong",{},"A writing tool, not a website builder."," Sites pull posts from a read-only\ncontent API or from exported Markdown at build time.",[25,33,34,37],{},[28,35,36],{},"Tiny."," About 25 MB of memory at rest. It runs on a Raspberry Pi, and\ndozens of instances fit on one small server.",[25,39,40,43,44,48,49,52],{},[28,41,42],{},"Your editor or ours."," Use the split Markdown editor in the browser, or run\n",[45,46,47],"code",{},"burzblog edit my-post"," to open the post in ",[45,50,51],{},"$EDITOR",". Both talk to the same\nserver.",[25,54,55,58],{},[28,56,57],{},"Nothing gets lost."," Every save is versioned. If a save is based on an old\nversion, it's refused instead of overwriting someone else's work.",[14,60,62],{"id":61},"install","Install",[64,65,70],"pre",{"className":66,"code":67,"language":68,"meta":69,"style":69},"language-sh shiki shiki-themes github-dark","curl -fsSL https:\u002F\u002Fburzblog.weburz.com\u002Finstall.sh | sh\n","sh","",[45,71,72],{"__ignoreMap":69},[73,74,77,81,85,89,93],"span",{"class":75,"line":76},"line",1,[73,78,80],{"class":79},"svObZ","curl",[73,82,84],{"class":83},"sDLfK"," -fsSL",[73,86,88],{"class":87},"sU2Wk"," https:\u002F\u002Fburzblog.weburz.com\u002Finstall.sh",[73,90,92],{"class":91},"snl16"," |",[73,94,95],{"class":79}," sh\n",[10,97,98],{},"The script picks the right binary from the latest release and checks its SHA-256\nbefore installing. A Docker image is also available.",[14,100,102],{"id":101},"quick-start","Quick start",[64,104,106],{"className":66,"code":105,"language":68,"meta":69,"style":69},"burzblog serve --origin https:\u002F\u002Fblog.example.com\n",[45,107,108],{"__ignoreMap":69},[73,109,110,113,116,119],{"class":75,"line":76},[73,111,112],{"class":79},"burzblog",[73,114,115],{"class":87}," serve",[73,117,118],{"class":83}," --origin",[73,120,121],{"class":87}," https:\u002F\u002Fblog.example.com\n",[10,123,124,125,128],{},"On a fresh data directory, ",[45,126,127],{},"serve"," prints a one-time setup link to create the\nfirst account. Then write from any machine:",[64,130,132],{"className":66,"code":131,"language":68,"meta":69,"style":69},"burzblog login https:\u002F\u002Fblog.example.com\nburzblog new \"My next post\"\nburzblog publish my-next-post\n",[45,133,134,143,154],{"__ignoreMap":69},[73,135,136,138,141],{"class":75,"line":76},[73,137,112],{"class":79},[73,139,140],{"class":87}," login",[73,142,121],{"class":87},[73,144,146,148,151],{"class":75,"line":145},2,[73,147,112],{"class":79},[73,149,150],{"class":87}," new",[73,152,153],{"class":87}," \"My next post\"\n",[73,155,157,159,162],{"class":75,"line":156},3,[73,158,112],{"class":79},[73,160,161],{"class":87}," publish",[73,163,164],{"class":87}," my-next-post\n",[10,166,167],{},"Your site reads published posts with a read-only token:",[64,169,171],{"className":66,"code":170,"language":68,"meta":69,"style":69},"curl -H \"Authorization: Bearer $BURZBLOG_TOKEN\" \\\n  https:\u002F\u002Fblog.example.com\u002Fapi\u002Fcontent\u002Fposts\n",[45,172,173,193],{"__ignoreMap":69},[73,174,175,177,180,183,187,190],{"class":75,"line":76},[73,176,80],{"class":79},[73,178,179],{"class":83}," -H",[73,181,182],{"class":87}," \"Authorization: Bearer ",[73,184,186],{"class":185},"s95oV","$BURZBLOG_TOKEN",[73,188,189],{"class":87},"\"",[73,191,192],{"class":83}," \\\n",[73,194,195],{"class":75,"line":145},[73,196,197],{"class":87},"  https:\u002F\u002Fblog.example.com\u002Fapi\u002Fcontent\u002Fposts\n",[14,199,201],{"id":200},"whats-in-it","What's in it",[203,204,205,208,211,214,217,220,223],"ul",{},[25,206,207],{},"Split editor with live preview, tags, SEO fields and image\u002FPDF uploads",[25,209,210],{},"Revision history with restore, full-text search, scheduled publishing",[25,212,213],{},"RSS, Atom, JSON Feed and sitemap out of the box",[25,215,216],{},"Deploy hook to rebuild your site on publish",[25,218,219],{},"Admin and author roles, TOTP two-factor sign-in, append-only audit log",[25,221,222],{},"Encrypted snapshots on demand or on a schedule, to a folder or S3-compatible\nstorage",[25,224,225],{},"Runs under systemd, Docker or Coolify",[14,227,229],{"id":228},"source","Source",[10,231,232,239],{},[233,234,238],"a",{"href":235,"rel":236},"https:\u002F\u002Fgithub.com\u002FWeburz\u002Fburzblog",[237],"nofollow","github.com\u002FWeburz\u002Fburzblog",", licensed under\nApache-2.0.",[241,242,243],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}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 pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}",{"title":69,"searchDepth":145,"depth":145,"links":245},[246,247,248,249,250],{"id":16,"depth":145,"text":17},{"id":61,"depth":145,"text":62},{"id":101,"depth":145,"text":102},{"id":200,"depth":145,"text":201},{"id":228,"depth":145,"text":229},"Write blog posts in the browser or in your own editor. One small Go binary, one SQLite file, any website.","md","i-simple-icons-go",[255,259,263],{"label":256,"icon":257,"to":235,"target":258},"GitHub","i-simple-icons-github","_blank",{"label":260,"icon":261,"to":262,"target":258},"Website","i-lucide-globe","https:\u002F\u002Fburzblog.weburz.com",{"label":264,"icon":265,"to":266,"target":258},"Docs","i-lucide-book-open","https:\u002F\u002Fburzblog.weburz.com\u002Fdocs\u002F",{},true,"\u002Fopen-source\u002Fburzblog",{"title":5,"description":251},"open-source\u002Fburzblog",[273,274,275],"Go","SQLite","CMS","wVDMYO3vLk3b45a4IKhpro-5A3iOhoPd9Cs4yHIGYa8",[278,279],null,{"title":280,"path":281,"stem":282,"description":283,"children":-1},"@weburz\u002Fcarousel","\u002Fopen-source\u002Fcarousel","open-source\u002Fcarousel","Drop-in carousels for Nuxt 4 that make YouTube, Instagram, and TikTok embeds behave. Embla-powered.",1793622283550]