[{"data":1,"prerenderedAt":86},["ShallowReactive",2],{"blog-nuxt-series-deploy":3},{"id":4,"title":5,"body":6,"date":67,"description":68,"extension":69,"image":70,"meta":71,"navigation":72,"next":73,"path":74,"prev":75,"seo":76,"series":77,"stem":78,"tags":79,"__hash__":83,"prevPost":84,"nextPost":73},"blog\u002Fblog\u002Fnuxt-series-deploy.md","Building a Nuxt CV, Part 3: Deploy",{"type":7,"value":8,"toc":60},"minimark",[9,19,24,35,39,47,51,57],[10,11,12,13,18],"p",{},"The site is built and full of content (",[14,15,17],"a",{"href":16},"\u002Fblog\u002Fnuxt-series-content","Part 2","). The last step is getting\nit in front of people — on our own hardware, without a platform bill.",[20,21,23],"h2",{"id":22},"the-build","The build",[10,25,26,30,31,34],{},[27,28,29],"code",{},"nuxt build"," prerenders every page and emits a Nitro node-server in ",[27,32,33],{},".output\u002F",". Compressing the\npublic assets ahead of time (gzip + brotli) is a one-line config change that pays for itself in\nLighthouse points.",[20,36,38],{"id":37},"shipping-it","Shipping it",[10,40,41,42,46],{},"A multi-stage Dockerfile produces a small runtime image. Because native modules compile per\narchitecture, the image is built ",[43,44,45],"strong",{},"on the server"," so the binaries match the host — then an existing\nnginx proxies to the container.",[20,48,50],{"id":49},"one-command","One command",[10,52,53,56],{},[27,54,55],{},"npm run deploy"," ties it together: it runs the quality gate, syncs the source, and restarts the\ncontainer over SSH. From here, publishing a change is a single command.",[10,58,59],{},"That wraps the series. The foundations, the content, and now the deploy — a complete Nuxt CV, start\nto finish.",{"title":61,"searchDepth":62,"depth":62,"links":63},"",2,[64,65,66],{"id":22,"depth":62,"text":23},{"id":37,"depth":62,"text":38},{"id":49,"depth":62,"text":50},"2026-07-15","From a local build to a self-hosted container behind nginx — the deploy script, Docker image, and the gotchas worth knowing.","md","\u002Fimages\u002Fblog\u002Fnuxt-series-3.svg",{},true,null,"\u002Fblog\u002Fnuxt-series-deploy","nuxt-series-content",{"title":5,"description":68},"Building a Nuxt CV","blog\u002Fnuxt-series-deploy",[80,81,82],"Nuxt","Deployment","Series","OiDK7iBP-ZAc--MEfM0rU14hyzIcxx_tbMcXWqJj-hU",{"path":16,"title":85},"Building a Nuxt CV, Part 2: Content",1786402985672]