BUILD IN PUBLIC · Build logs

Building an AI product, written down as it ships.

Engineering retrospectives from building this solo — Backend, Frontend, AI, Infra. Translated from the Korean originals; the raw path from a broken deploy to the fix.

📝
Infra

Infra

Nginx 502 Bad Gateway Error When Replacing Containers: Cause and Solution

Encountering Nginx 502 errors when replacing containers? Let's dive into the cause analysis and how to resolve it by configuring `proxy_next_upstream`.

Jul 8, 2026·👁 61
📝
Infra

Infra

Cloud Build Cost Skyrockets: How a Single 'machineType' Line Killed My Free Tier

I accidentally disabled Cloud Build's generous free tier and racked up a $36k bill by adding a single `machineType` line to my build configuration. Here's how I fixed it.

Jun 28, 2026·👁 78
📝
Infra

Infra

How to Fix Search Engine Indexing Issues Caused by robots.txt Block Errors

Sharing from Infra experience how to solve the problem of being missing from search engine indexing due to robots.txt configuration errors. Check out the solution for unintended path blocking.

Jun 16, 2026·👁 138
📝
Infra

Infra

Vertex AI 'Resource exhausted' (429) API Rate Limit on a Single VM

Running a full AI product alone on a small VM comes with unique challenges, including hitting API rate limits unexpectedly. This postmortem details how we diagnosed and resolved a persistent 429 error from Google Cloud's Vertex AI.

Jun 13, 2026·👁 165
📝
Infra

Infra

Shrinking a Node.js Docker Image from 2.5GB to 300MB: Leveraging standalone server.js

The Node.js Docker image size problem, secrets to shrinking it from 2.5GB to 300MB! Introducing how to use standalone server.js and pkg.

Jun 8, 2026·👁 126
📝
Infra

Infra

APScheduler's Advisory Lock Failure: My Solo VM's Scheduler Died Permanently

When your background jobs stop running, and the logs are silent, it's time for a deep dive. I discovered my APScheduler was permanently dead due to a flawed leader election mechanism relying on PostgreSQL advisory locks.

Jun 5, 2026·👁 160
📝
Infra

Infra

Disk Full: How `docker image prune` Saved My Solo VM from a Deploy Freeze

A seemingly simple deployment process froze my entire AI product because the VM's disk filled up. Learn how `docker image prune` became a critical part of my automated deployment pipeline.

Jun 4, 2026·👁 188
📝
Infra

Infra

GitHub Actions vs. GCE Pull Poller: My Single VM Deployment Battle

Discover how a seemingly minor deployment issue with an empty .next directory led to a critical decision: ditching GitHub Actions for a simpler, more robust Google Compute Engine pull poller on my solo-run AI product.

Jun 3, 2026·👁 159
📝
Infra

Infra

Next.js 14: 'Could not find the module in the React Client Manifest' — the real cause nobody tells you

A 500 that only happens in production, only sometimes. The culprit wasn't my code — it was the absolute build path baked into the RSC client manifest. Here's the root cause and the atomic-swap fix.

Jun 2, 2026·👁 272
📝
Infra

Infra

My Home Wi-Fi Got Slow — Diagnosing Suspected Unauthorized External Use with Data

My internet has been feeling sluggish. Could someone else be using my Wi-Fi? This is the diagnostic process, narrowing down 'Is it my PC / Is it someone else?' using data from ping, fast.com, and the network tab in Task Manager.

May 29, 2026·👁 129
📝
Infra

Infra

Heap Cap Exceeded RAM on e2-medium 4GB — Recalculating PM2 Memory Allocation

The combined `--max-old-space-size` of 5 PM2 cluster processes was exceeding the server's RAM. It wouldn't crash during normal operations, but would OOM during spikes. This post details how I reallocated the Node / non-Node budget within the e2-medium 4GB instance.

May 29, 2026·👁 163
📝
Infra

Infra

The Day `package.json` Disappeared and My Deployment Broke — A Next.js Sibling Build Recovery Story

My GitHub Actions build died with 'Cannot find module browserslist'. The culprit? `package.json` had vanished from the working tree. This is the story of how I recovered from a ghost state where PM2 was alive but new builds kept failing, using `git checkout`.

May 29, 2026·👁 192
📝
Infra

Infra

Nginx Configuration Change: Isolating /api/me/* Requests to Port 3001 for API Routing Optimization

This post explains how to optimize API routing and enhance service isolation by isolating /api/me/* requests to port 3001 through Nginx configuration changes.

May 28, 2026·👁 145
📝
Infra

Infra

3 Deployment Pipeline Regressions Fixed with `printf` and `distDir` Isolation!

We tackled heredoc errors in our deployment pipeline, the absence of the `.next` directory, and RSC manifest path issues by implementing `printf` and isolating the `distDir`.

May 24, 2026·👁 168
📝
Infra

Infra

7 Infra Improvement Strategies to Prevent Next.js Deployment Build Failures in 2026

7 Infra improvement strategies to prevent Next.js deployment build failures in 2026. Solutions for issues like `--preload` logic, extension support, and build unification.

May 22, 2026·👁 209
📝
Infra

Infra

GitHub Actions Deployment Downtime Due to Import Errors? Solved with a 3-Step Safety Net!

Did your service go down during a GitHub Actions deployment because of an import error? Build a stable deployment environment with this 3-step safety net.

May 19, 2026·👁 184
📝
Infra

Infra

0 Minutes of Downtime! Mastering Next.js Zero-Downtime Deployments with Atomic Swap

Have you experienced frequent service interruptions during Next.js deployments? This post introduces how to implement 0-minute downtime deployments using the Atomic Swap technique.

May 15, 2026·👁 378
📝
Infra

Infra

Google AI Studio 503 Errors? Migrated to Vertex AI and Converted 27 Files Instantly!

Experiencing frequent Google AI Studio 503 errors? I migrated to Vertex AI and successfully converted 27 files in an instant! Learn how to ensure stable service operations.

May 13, 2026·👁 173
📝
Infra

Infra

Blocking Bot Traffic with nginx + fail2ban, No Cloudflare Needed

I ran into issues with Cloudflare conflicting with SSE streaming, causing disconnections. I switched back to running a single GCP instance. Instead, I built my own scanner/bot defense line using just nginx limit_req + fail2ban + sysctl.

May 10, 2026·👁 297