[{"data":1,"prerenderedAt":254},["ShallowReactive",2],{"\u002Fdocs\u002Fdeployment":3,"docs-nav":234},{"id":4,"title":5,"body":6,"description":226,"extension":227,"meta":228,"navigation":229,"path":230,"seo":231,"stem":232,"__hash__":233},"docs\u002Fdocs\u002F3.deployment.md","Deployment",{"type":7,"value":8,"toc":219},"minimark",[9,14,18,56,59,87,98,102,162,169,173,176,201,205,208,212,215],[10,11,13],"h2",{"id":12},"docker","Docker",[15,16,17],"p",{},"For local use, bind to loopback only:",[19,20,25],"pre",{"className":21,"code":22,"language":23,"meta":24,"style":24},"language-bash shiki shiki-themes github-dark","docker run -p 127.0.0.1:8080:8080 -v redrive:\u002Fdata redrive\u002Fredrive\n","bash","",[26,27,28],"code",{"__ignoreMap":24},[29,30,33,36,40,44,47,50,53],"span",{"class":31,"line":32},"line",1,[29,34,12],{"class":35},"svObZ",[29,37,39],{"class":38},"sU2Wk"," run",[29,41,43],{"class":42},"sDLfK"," -p",[29,45,46],{"class":38}," 127.0.0.1:8080:8080",[29,48,49],{"class":42}," -v",[29,51,52],{"class":38}," redrive:\u002Fdata",[29,54,55],{"class":38}," redrive\u002Fredrive\n",[15,57,58],{},"For a shared instance, bind wide and set the password gate:",[19,60,62],{"className":21,"code":61,"language":23,"meta":24,"style":24},"docker run -p 8080:8080 -v redrive:\u002Fdata -e REDRIVE_PASSWORD=… redrive\u002Fredrive\n",[26,63,64],{"__ignoreMap":24},[29,65,66,68,70,72,75,77,79,82,85],{"class":31,"line":32},[29,67,12],{"class":35},[29,69,39],{"class":38},[29,71,43],{"class":42},[29,73,74],{"class":38}," 8080:8080",[29,76,49],{"class":42},[29,78,52],{"class":38},[29,80,81],{"class":42}," -e",[29,83,84],{"class":38}," REDRIVE_PASSWORD=…",[29,86,55],{"class":38},[15,88,89,90,93,94,97],{},"The container healthchecks itself against ",[26,91,92],{},"\u002Fhealthz",", so ",[26,95,96],{},"docker ps"," and any orchestrator in front of it can tell when Redrive is actually ready, not just running.",[10,99,101],{"id":100},"upgrading-docker","Upgrading Docker",[19,103,105],{"className":21,"code":104,"language":23,"meta":24,"style":24},"docker pull redrive\u002Fredrive\ndocker rm -f \u003Ccontainer>\ndocker run -p 8080:8080 -v redrive:\u002Fdata -e REDRIVE_PASSWORD=… redrive\u002Fredrive\n",[26,106,107,116,141],{"__ignoreMap":24},[29,108,109,111,114],{"class":31,"line":32},[29,110,12],{"class":35},[29,112,113],{"class":38}," pull",[29,115,55],{"class":38},[29,117,119,121,124,127,131,134,138],{"class":31,"line":118},2,[29,120,12],{"class":35},[29,122,123],{"class":38}," rm",[29,125,126],{"class":42}," -f",[29,128,130],{"class":129},"snl16"," \u003C",[29,132,133],{"class":38},"containe",[29,135,137],{"class":136},"s95oV","r",[29,139,140],{"class":129},">\n",[29,142,144,146,148,150,152,154,156,158,160],{"class":31,"line":143},3,[29,145,12],{"class":35},[29,147,39],{"class":38},[29,149,43],{"class":42},[29,151,74],{"class":38},[29,153,49],{"class":42},[29,155,52],{"class":38},[29,157,81],{"class":42},[29,159,84],{"class":38},[29,161,55],{"class":38},[15,163,164,165,168],{},"State lives in the ",[26,166,167],{},"redrive"," volume, not the container, so it survives the swap.",[10,170,172],{"id":171},"tls","TLS",[15,174,175],{},"Redrive terminates no TLS itself, by design — that's a solved problem, and there's no reason to reimplement it badly. Put a reverse proxy in front. Caddy, for instance, handles certificates on its own:",[19,177,179],{"className":21,"code":178,"language":23,"meta":24,"style":24},"caddy reverse-proxy --from redrive.example.com --to localhost:8080\n",[26,180,181],{"__ignoreMap":24},[29,182,183,186,189,192,195,198],{"class":31,"line":32},[29,184,185],{"class":35},"caddy",[29,187,188],{"class":38}," reverse-proxy",[29,190,191],{"class":42}," --from",[29,193,194],{"class":38}," redrive.example.com",[29,196,197],{"class":42}," --to",[29,199,200],{"class":38}," localhost:8080\n",[10,202,204],{"id":203},"server-mode","Server mode",[15,206,207],{},"Binding beyond loopback turns Redrive into a shared workspace: one password gates the whole thing, and everyone who has it sees every connection. There's no per-user separation, so treat it as a team tool rather than a multi-tenant one.",[10,209,211],{"id":210},"downgrades","Downgrades",[15,213,214],{},"A database migrated by a newer version doesn't open in an older one. If a release breaks something for you, wait for a hotfix or ask for one — downgrading the binary isn't a safe way back.",[216,217,218],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}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 .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}",{"title":24,"searchDepth":118,"depth":118,"links":220},[221,222,223,224,225],{"id":12,"depth":118,"text":13},{"id":100,"depth":118,"text":101},{"id":171,"depth":118,"text":172},{"id":203,"depth":118,"text":204},{"id":210,"depth":118,"text":211},"Running Redrive with Docker, behind TLS, or as a shared team instance.","md",{},true,"\u002Fdocs\u002Fdeployment",{"title":5,"description":226},"docs\u002F3.deployment","4OUxu9Nw5avbMngj0sISeH1PWKRec1--K8siV-uInWo",[235],{"title":236,"path":237,"stem":238,"children":239,"page":253},"Docs","\u002Fdocs","docs",[240,244,248,249],{"title":241,"path":242,"stem":243},"Install","\u002Fdocs\u002Finstall","docs\u002F1.install",{"title":245,"path":246,"stem":247},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F2.configuration",{"title":5,"path":230,"stem":232},{"title":250,"path":251,"stem":252},"Security","\u002Fdocs\u002Fsecurity","docs\u002F4.security",false,1786954328908]