[{"data":1,"prerenderedAt":655},["ShallowReactive",2],{"navigation_docs":3,"-deployment-fly-io":87,"-deployment-fly-io-surround":650},[4,35,51,80],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Server Requirements","\u002Fgetting-started\u002Fserver-requirements","1.getting-started\u002F5.server-requirements","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":6},"Guide","i-lucide-book-open","\u002Fguide","2.guide",[41,46],{"title":42,"path":43,"stem":44,"icon":45},"URL Pattern","\u002Fguide\u002Furl-pattern","2.guide\u002F1.url-pattern","i-lucide-link",{"title":47,"path":48,"stem":49,"icon":50},"Transformation Parameters","\u002Fguide\u002Ftransformation-parameters","2.guide\u002F2.transformation-parameters","i-lucide-sliders",{"title":52,"icon":53,"path":54,"stem":55,"children":56},"Deployment","i-lucide-rocket","\u002Fdeployment","3.deployment",[57,60,65,70,75],{"title":58,"path":54,"stem":59,"icon":53},"Overview","3.deployment\u002Findex",{"title":61,"path":62,"stem":63,"icon":64},"Render","\u002Fdeployment\u002Frender","3.deployment\u002F1.render","i-simple-icons-render",{"title":66,"path":67,"stem":68,"icon":69},"Railway","\u002Fdeployment\u002Frailway","3.deployment\u002F2.railway","i-simple-icons-railway",{"title":71,"path":72,"stem":73,"icon":74},"Fly.io","\u002Fdeployment\u002Ffly-io","3.deployment\u002F3.fly-io","i-simple-icons-flydotio",{"title":76,"path":77,"stem":78,"icon":79},"Cloudflare Sandbox","\u002Fdeployment\u002Fcloudflare-sandbox","3.deployment\u002F4.cloudflare-sandbox","i-simple-icons-cloudflare",{"title":81,"path":82,"stem":83,"children":84,"icon":86},"Roadmap","\u002Froadmap","5.roadmap\u002Findex",[85],{"title":81,"path":82,"stem":83,"icon":86},"i-lucide-map",{"id":88,"title":71,"body":89,"description":641,"extension":642,"links":643,"meta":644,"navigation":645,"path":72,"seo":646,"stem":73,"__hash__":649},"docs\u002F3.deployment\u002F3.fly-io.md",{"type":90,"value":91,"toc":629},"minimark",[92,102,107,110,175,178,194,198,203,206,227,230,267,271,278,452,456,502,506,518,521,529,533,551,558,562,606,610,625],[93,94,95,101],"p",{},[96,97,71],"a",{"href":98,"rel":99},"https:\u002F\u002Ffly.io",[100],"nofollow"," runs containers globally. Repix's Dockerfile works with minimal configuration.",[103,104,106],"h2",{"id":105},"prerequisites","Prerequisites",[93,108,109],{},"Install the Fly CLI:",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# macOS \u002F Linux\ncurl -L https:\u002F\u002Ffly.io\u002Finstall.sh | sh\n\n# Or with Homebrew\nbrew install flyctl\n","bash","",[118,119,120,129,150,157,163],"code",{"__ignoreMap":116},[121,122,125],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"sHwdD","# macOS \u002F Linux\n",[121,130,132,136,140,143,147],{"class":123,"line":131},2,[121,133,135],{"class":134},"sBMFI","curl",[121,137,139],{"class":138},"sfazB"," -L",[121,141,142],{"class":138}," https:\u002F\u002Ffly.io\u002Finstall.sh",[121,144,146],{"class":145},"sMK4o"," |",[121,148,149],{"class":134}," sh\n",[121,151,153],{"class":123,"line":152},3,[121,154,156],{"emptyLinePlaceholder":155},true,"\n",[121,158,160],{"class":123,"line":159},4,[121,161,162],{"class":127},"# Or with Homebrew\n",[121,164,166,169,172],{"class":123,"line":165},5,[121,167,168],{"class":134},"brew",[121,170,171],{"class":138}," install",[121,173,174],{"class":138}," flyctl\n",[93,176,177],{},"Log in:",[111,179,181],{"className":113,"code":180,"language":115,"meta":116,"style":116},"fly auth login\n",[118,182,183],{"__ignoreMap":116},[121,184,185,188,191],{"class":123,"line":124},[121,186,187],{"class":134},"fly",[121,189,190],{"class":138}," auth",[121,192,193],{"class":138}," login\n",[103,195,197],{"id":196},"deploy-steps","Deploy Steps",[199,200,202],"h3",{"id":201},"_1-launch-the-app","1. Launch the App",[93,204,205],{},"From your repix repository:",[111,207,209],{"className":113,"code":208,"language":115,"meta":116,"style":116},"cd repix\nfly launch\n",[118,210,211,220],{"__ignoreMap":116},[121,212,213,217],{"class":123,"line":124},[121,214,216],{"class":215},"s2Zo4","cd",[121,218,219],{"class":138}," repix\n",[121,221,222,224],{"class":123,"line":131},[121,223,187],{"class":134},[121,225,226],{"class":138}," launch\n",[93,228,229],{},"During setup:",[231,232,233,245,255,261],"ul",{},[234,235,236,240,241,244],"li",{},[237,238,239],"strong",{},"App name",": ",[118,242,243],{},"repix"," or custom",[234,246,247,250,251,254],{},[237,248,249],{},"Region",": Pick primary region (e.g., ",[118,252,253],{},"iad"," for US East)",[234,256,257,260],{},[237,258,259],{},"Postgres\u002FRedis",": No (press Enter to skip)",[234,262,263,266],{},[237,264,265],{},"Deploy now",": Yes",[199,268,270],{"id":269},"_2-configure-flytoml","2. Configure fly.toml",[93,272,273,274,277],{},"The generated ",[118,275,276],{},"fly.toml"," should work. Ensure the port matches:",[111,279,283],{"className":280,"code":281,"language":282,"meta":116,"style":116},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# fly.toml\napp = \"repix\"\n\n[build]\n\n[env]\n  NODE_ENV = \"production\"\n  PORT = \"3210\"\n\n[[services]]\n  internal_port = 3210\n  protocol = \"tcp\"\n\n  [[services.ports]]\n    port = 80\n    handlers = [\"http\"]\n\n  [[services.ports]]\n    port = 443\n    handlers = [\"tls\", \"http\"]\n\n  [services.concurrency]\n    type = \"requests\"\n    hard_limit = 25\n    soft_limit = 20\n\n  [[services.http_checks]]\n    interval = \"30s\"\n    timeout = \"5s\"\n    path = \"\u002Fhealth\"\n","toml",[118,284,285,290,295,299,304,308,314,320,326,331,337,343,349,354,360,366,372,377,382,388,394,399,405,411,417,423,428,434,440,446],{"__ignoreMap":116},[121,286,287],{"class":123,"line":124},[121,288,289],{},"# fly.toml\n",[121,291,292],{"class":123,"line":131},[121,293,294],{},"app = \"repix\"\n",[121,296,297],{"class":123,"line":152},[121,298,156],{"emptyLinePlaceholder":155},[121,300,301],{"class":123,"line":159},[121,302,303],{},"[build]\n",[121,305,306],{"class":123,"line":165},[121,307,156],{"emptyLinePlaceholder":155},[121,309,311],{"class":123,"line":310},6,[121,312,313],{},"[env]\n",[121,315,317],{"class":123,"line":316},7,[121,318,319],{},"  NODE_ENV = \"production\"\n",[121,321,323],{"class":123,"line":322},8,[121,324,325],{},"  PORT = \"3210\"\n",[121,327,329],{"class":123,"line":328},9,[121,330,156],{"emptyLinePlaceholder":155},[121,332,334],{"class":123,"line":333},10,[121,335,336],{},"[[services]]\n",[121,338,340],{"class":123,"line":339},11,[121,341,342],{},"  internal_port = 3210\n",[121,344,346],{"class":123,"line":345},12,[121,347,348],{},"  protocol = \"tcp\"\n",[121,350,352],{"class":123,"line":351},13,[121,353,156],{"emptyLinePlaceholder":155},[121,355,357],{"class":123,"line":356},14,[121,358,359],{},"  [[services.ports]]\n",[121,361,363],{"class":123,"line":362},15,[121,364,365],{},"    port = 80\n",[121,367,369],{"class":123,"line":368},16,[121,370,371],{},"    handlers = [\"http\"]\n",[121,373,375],{"class":123,"line":374},17,[121,376,156],{"emptyLinePlaceholder":155},[121,378,380],{"class":123,"line":379},18,[121,381,359],{},[121,383,385],{"class":123,"line":384},19,[121,386,387],{},"    port = 443\n",[121,389,391],{"class":123,"line":390},20,[121,392,393],{},"    handlers = [\"tls\", \"http\"]\n",[121,395,397],{"class":123,"line":396},21,[121,398,156],{"emptyLinePlaceholder":155},[121,400,402],{"class":123,"line":401},22,[121,403,404],{},"  [services.concurrency]\n",[121,406,408],{"class":123,"line":407},23,[121,409,410],{},"    type = \"requests\"\n",[121,412,414],{"class":123,"line":413},24,[121,415,416],{},"    hard_limit = 25\n",[121,418,420],{"class":123,"line":419},25,[121,421,422],{},"    soft_limit = 20\n",[121,424,426],{"class":123,"line":425},26,[121,427,156],{"emptyLinePlaceholder":155},[121,429,431],{"class":123,"line":430},27,[121,432,433],{},"  [[services.http_checks]]\n",[121,435,437],{"class":123,"line":436},28,[121,438,439],{},"    interval = \"30s\"\n",[121,441,443],{"class":123,"line":442},29,[121,444,445],{},"    timeout = \"5s\"\n",[121,447,449],{"class":123,"line":448},30,[121,450,451],{},"    path = \"\u002Fhealth\"\n",[199,453,455],{"id":454},"_3-set-secrets-optional","3. Set Secrets (Optional)",[111,457,459],{"className":113,"code":458,"language":115,"meta":116,"style":116},"fly secrets set SOURCE_PREFIX=https:\u002F\u002F\nfly secrets set IMAGE_MAX_WIDTH=2048\nfly secrets set IMAGE_MAX_HEIGHT=2048\n",[118,460,461,474,489],{"__ignoreMap":116},[121,462,463,465,468,471],{"class":123,"line":124},[121,464,187],{"class":134},[121,466,467],{"class":138}," secrets",[121,469,470],{"class":138}," set",[121,472,473],{"class":138}," SOURCE_PREFIX=https:\u002F\u002F\n",[121,475,476,478,480,482,485],{"class":123,"line":131},[121,477,187],{"class":134},[121,479,467],{"class":138},[121,481,470],{"class":138},[121,483,484],{"class":138}," IMAGE_MAX_WIDTH=",[121,486,488],{"class":487},"sbssI","2048\n",[121,490,491,493,495,497,500],{"class":123,"line":152},[121,492,187],{"class":134},[121,494,467],{"class":138},[121,496,470],{"class":138},[121,498,499],{"class":138}," IMAGE_MAX_HEIGHT=",[121,501,488],{"class":487},[199,503,505],{"id":504},"_4-deploy","4. Deploy",[111,507,509],{"className":113,"code":508,"language":115,"meta":116,"style":116},"fly deploy\n",[118,510,511],{"__ignoreMap":116},[121,512,513,515],{"class":123,"line":124},[121,514,187],{"class":134},[121,516,517],{"class":138}," deploy\n",[93,519,520],{},"Your app is at:",[111,522,527],{"className":523,"code":525,"language":526,"meta":116},[524],"language-text","https:\u002F\u002Frepix.fly.dev\n","text",[118,528,525],{"__ignoreMap":116},[103,530,532],{"id":531},"custom-domain","Custom Domain",[111,534,536],{"className":113,"code":535,"language":115,"meta":116,"style":116},"fly certs add images.yourdomain.com\n",[118,537,538],{"__ignoreMap":116},[121,539,540,542,545,548],{"class":123,"line":124},[121,541,187],{"class":134},[121,543,544],{"class":138}," certs",[121,546,547],{"class":138}," add",[121,549,550],{"class":138}," images.yourdomain.com\n",[93,552,553,554,557],{},"Add a CNAME record pointing to ",[118,555,556],{},"repix.fly.dev",".",[103,559,561],{"id":560},"scaling","Scaling",[111,563,565],{"className":113,"code":564,"language":115,"meta":116,"style":116},"# Scale to 2 instances\nfly scale count 2\n\n# Use a larger machine for image processing\nfly scale vm shared-cpu-2x\n",[118,566,567,572,585,589,594],{"__ignoreMap":116},[121,568,569],{"class":123,"line":124},[121,570,571],{"class":127},"# Scale to 2 instances\n",[121,573,574,576,579,582],{"class":123,"line":131},[121,575,187],{"class":134},[121,577,578],{"class":138}," scale",[121,580,581],{"class":138}," count",[121,583,584],{"class":487}," 2\n",[121,586,587],{"class":123,"line":152},[121,588,156],{"emptyLinePlaceholder":155},[121,590,591],{"class":123,"line":159},[121,592,593],{"class":127},"# Use a larger machine for image processing\n",[121,595,596,598,600,603],{"class":123,"line":165},[121,597,187],{"class":134},[121,599,578],{"class":138},[121,601,602],{"class":138}," vm",[121,604,605],{"class":138}," shared-cpu-2x\n",[103,607,609],{"id":608},"health-check","Health Check",[93,611,612,613,616,617,620,621,624],{},"Fly uses the ",[118,614,615],{},"path = \"\u002Fhealth\""," in ",[118,618,619],{},"http_checks",". Repix's ",[118,622,623],{},"\u002Fhealth"," endpoint satisfies this.",[626,627,628],"style",{},"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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":116,"searchDepth":131,"depth":131,"links":630},[631,632,638,639,640],{"id":105,"depth":131,"text":106},{"id":196,"depth":131,"text":197,"children":633},[634,635,636,637],{"id":201,"depth":152,"text":202},{"id":269,"depth":152,"text":270},{"id":454,"depth":152,"text":455},{"id":504,"depth":152,"text":505},{"id":531,"depth":131,"text":532},{"id":560,"depth":131,"text":561},{"id":608,"depth":131,"text":609},"Deploy Repix to Fly.io for global edge deployment.","md",null,{},{"icon":74,"title":71},{"title":647,"description":648},"Deploy to Fly.io - Repix","Step-by-step guide to deploy Repix on Fly.io.","RIeKHmX0_gaazdK7jzdGQK85qryngPva5RcNV29bw84",[651,653],{"title":66,"path":67,"stem":68,"description":652,"icon":69,"children":-1},"Deploy Repix to Railway with automatic Dockerfile detection.",{"title":76,"path":77,"stem":78,"description":654,"icon":79,"children":-1},"Run Repix on Cloudflare Workers using the Sandbox SDK for isolated container execution.",1781442145913]