Move from "runs on my laptop" to "runs forever on a cloud server" — every step, every command, everything already built.
| Check | Status | Evidence |
|---|---|---|
| Live site | ✅ LIVE | https://toolsnaka.store/api/health → 200 {"status":"ok","db":"ok"} |
| Auto-recovery | ✅ Working | Watchdog (Windows scheduled task) restarts server + tunnel within ~30s of every boot/wake |
| Core features | ✅ All live | OTP registration · 4 automated emails · Moglix categories · approval workflow · Photo Requests (factory photo → seller/repair quotes) · invoices · Quick Bills · Pocket App |
| Data hygiene | ✅ Legit | All test orders/invoices removed (backup kept); 16 real users; 28 products |
| Currency display | ✅ Fixed | All ₹ mojibake repaired across every dashboard |
Limitation today: the app lives on the laptop — when the laptop is OFF, the site is off. This guide removes that limitation.
| Now (laptop) | Target (VPS) | |
|---|---|---|
| Where the app runs | This PC, port 3000 | Ubuntu server, Docker container |
| HTTPS + domain | Cloudflare named tunnel → PC | Cloudflare DNS (A record) + Caddy auto-HTTPS |
| Database | SQLite file on PC | SQLite file on server volume (same file, copied over) |
| Uploads (part photos) | data/uploads on PC | Same folder on server volume |
| Emails / OTP | toolsnaka@gmail.com SMTP | Unchanged — works anywhere |
| Uptime | Only while PC is on | 24/7/365 — independent of your PC |
| Provider | Cheapest plan | Cost/mo | Notes |
|---|---|---|---|
| Hetzner CX22 | 2 vCPU · 4 GB RAM · 40 GB SSD | ≈ ₹650 | Best value, trusted, German data centres |
| DigitalOcean Basic | 1 vCPU · 1 GB RAM | ≈ ₹550 | Most beginner-friendly panel |
| Vultr High Frequency | 1 vCPU · 1 GB RAM | ≈ ₹420 | Cheapest reliable entry |
Choose Ubuntu 24.04, any region (Mumbai/Singapore for India speed). Pay with UPI/card. You get an IP address + root password — that's all I need from you.
Send me: server IP · root password · confirm the region. I run every step below, transfer the database, switch DNS, verify live.
1 · Upload the package from your PC:
scp ToolNaka-Full-Package.tar.gz root@YOUR_SERVER_IP:/opt/
2 · SSH in and run the one-command setup:
ssh root@YOUR_SERVER_IP cd /opt && tar -xzf ToolNaka-Full-Package.tar.gz bash deploy/deploy.sh
3 · Create env + start:
cp deploy/.env.production.example .env nano .env # set SMTP_PASS (and SMS key if you have one) docker compose up -d --build
4 · Copy your live database (keeps all users/orders/products):
# from your PC (laptop), before or after the move: scp prisma/prisma/dev.db root@YOUR_SERVER_IP:/opt/toolnaka/data/dev.db ssh root@YOUR_SERVER_IP "cd /opt/toolnaka && docker compose restart"
5 · Point DNS in Cloudflare (2 clicks):
DNS → Add record → A · name: @ · IPv4: YOUR_SERVER_IP · proxy: ON DNS → Add record → A · name: www · IPv4: YOUR_SERVER_IP · proxy: ON
6 · Wait 2-10 minutes, then:
curl https://toolsnaka.store/api/health # → {"status":"ok","db":"ok"}
| File | What it does |
|---|---|
| deploy/Dockerfile | Builds ToolNaka (Node 22, standalone Next.js) into one image |
| deploy/docker-compose.yml | App + auto-HTTPS (Caddy) + persistent volumes + health check |
| deploy/Caddyfile | Free HTTPS for toolsnaka.store + www (automatic certificates) |
| deploy/deploy.sh | Installs Docker + daily DB backup cron on the server |
| deploy/.env.production.example | Template — copy to .env, fill SMTP_PASS |
| deploy/README-DEPLOY.md | The full written walkthrough (this guide in text form) |
| Item | Value |
|---|---|
| Live site | https://toolsnaka.store |
| Download package | ToolNaka-Full-Package.tar.gz |
| Support email | teamtoolnaka@gmail.com |
| Demo logins (password demo123) | factory@toolnaka.com · vendor@toolnaka.com · admin@toolnaka.com · deptmanager@toolnaka.com · planthead@toolnaka.com |
| Database backup (pre-cleanup) | backups/dev-db-backup-20260901.db |