Vercel is a great product — push, build, preview, approve, ship. But not every project needs the full suite.
This site runs on a much simpler deploy pipeline. One command, sixty lines of bash.
npm run deploy
What it does:
- Vite production build
- SSH upload via tar (excluding vendor, node_modules, .git, .env)
- OPcache reset (via HTTP)
- Smoke test (HTTP 200 check)
Average time: 18 seconds.
Why not Vercel
- No PHP runtime. Our backend is PHP on LiteSpeed.
- DB is extra. Hostinger bundles MariaDB; Vercel doesn't.
- Monthly cost. A Hostinger year = two Vercel months.
Vercel is great for client products. For a studio's own site, overkill.
Anatomy
Three things matter:
- SSH key auth. Passwordless via
~/.ssh/configalias. - Tar + SSH pipe. Faster than rsync, parallel compress/decompress.
- Exclude list.
node_modules,vendor,.git,.envout.
OPcache reset
PHP OPcache serves stale bytecode unless reset. opcache_reset() from CLI doesn't affect PHP-FPM — each process has its own cache. Solution: drop a temp _reset.php, curl it, delete it.
Smoke test
STATUS=$(curl -sk -o /dev/null -w '%{http_code}' "$SITE_URL/?cb=$(date +%s)")
[ "$STATUS" = "200" ] || exit 1
?cb=timestamp busts CDN cache.
80/20
No CI/CD, no preview URLs, no rollback process beyond git revert. For a solo-maintained studio site, that's exactly enough.
When the team scales or we need preview URLs, we evolve toward GitHub Actions. Until then, npm run deploy is the product.