Step-by-Step Guide
Follow along with the video. Copy the prompts below exactly as shown.
Get a Hostinger VPS
Sign up for a Hostinger KVM VPS plan. The KVM 2 plan is plenty for a Node.js app.
Hostinger VPS Plans โPoint Your Domain to the Server
Log in to your DNS provider and add an A record:
- Type: A
- Name:
@for root domain, or a subdomain likeapp - Value: your server's IP address
- TTL: Auto / 300
Set Up SSH Key Access
Claude Code needs passwordless SSH access to your server.
1. Generate an SSH key (if you don't have one)
ssh-keygen -t ed25519 -C "your@email.com"Press Enter through all prompts. This creates a private key and a public key (.pub) in ~/.ssh/.
2. Copy your public key
Mac:
cat ~/.ssh/id_ed25519.pub | pbcopyWindows (PowerShell):
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | Set-Clipboard3. Add the key to your Hostinger VPS
In hPanel, go to VPS โ SSH Keys โ Add SSH Key and paste your public key. Or run:
ssh-copy-id root@YOUR_SERVER_IPssh root@YOUR_SERVER_IP. If it connects without a password prompt, you're ready.Let Claude Code Set Up the Server
Now that SSH is working, give Claude Code this prompt and it will handle the entire server setup:
Claude Code Prompt
I have a fresh Hostinger VPS at root@YOUR_SERVER_IP running the latest Ubuntu LTS. SSH in and set up everything needed to host Node.js apps: install the latest stable Node.js, PM2, and Docker. Then set up Traefik as a reverse proxy in Docker so it handles HTTPS automatically via Let's Encrypt. Use YOUR_EMAIL for SSL certs. Configure it to watch a dynamic config file at /root/traefik-dynamic.yml so I can add new apps without restarting anything.
Create Your Project with Claude Code
Use prompts like these to scaffold your entire app. First, check the current stable release of Next.js first:
Claude Code Prompt
Create a new Next.js app (latest stable) with TypeScript, Tailwind CSS, and shadcn/ui. Use the App Router. Set it up with a dashboard layout and a sidebar.
Claude Code Prompt
Add a Neon serverless PostgreSQL database using Drizzle ORM. Create a users table and a settings table with UUID primary keys.
Claude Code Prompt
Add authentication using Neon Auth. Protect all /dashboard routes and redirect unauthenticated users to /auth/signin.
Create a GitHub Repo
Ask Claude Code to create a private GitHub repo and push your code:
Claude Code Prompt
Can you make a new private GitHub repo for this project called My App Name?
Claude Code Prompt
Can you make a better README that explains the tech stack and how to set it up?
Create the Deploy Script
Ask Claude Code to create a deploy script for your Hostinger VPS:
Claude Code Prompt
I want to create a deploy script that deploys to production on Hostinger. I already have apps set up there. The server is root@YOUR_SERVER_IP and I want the app at myapp.mydomain.com
Claude Code will generate a deploy.sh that builds locally and rsyncs the output to your server:
#!/bin/bash
set -e
SERVER="root@YOUR_SERVER_IP"
REMOTE_DIR="/var/www/myapp"
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" != "main" ]; then
echo "Error: must be on main branch to deploy"
exit 1
fi
npm run build:prod
rsync -avz --delete .next/standalone/ $SERVER:$REMOTE_DIR/
rsync -avz .next/static $SERVER:$REMOTE_DIR/.next/
rsync -avz public $SERVER:$REMOTE_DIR/
rsync -avz .env.production.local $SERVER:$REMOTE_DIR/.env
ssh $SERVER "cd $REMOTE_DIR && PORT=3002 pm2 restart myapp || PORT=3002 pm2 start server.js --name myapp"output: "standalone" to your next.config.ts. It's required for the rsync deploy approach.Make it executable and deploy:
chmod +x deploy.sh
./deploy.shConfigure Traefik for Your Domain
Ask Claude Code to add the route. It will SSH in and update the config file directly:
Claude Code Prompt
SSH into the server and add a Traefik route for myapp.mydomain.com pointing to port 3002. Add it to /root/traefik-dynamic.yml alongside any existing apps.
Traefik watches the file and reloads automatically, no restart needed. SSL is provisioned on the first request.
You're Live!
Visit your domain and your app should be live with HTTPS. For future deploys, just run:
./deploy.shTo check your app status on the server:
ssh root@YOUR_SERVER_IP "pm2 list"
ssh root@YOUR_SERVER_IP "pm2 logs myapp --lines 50"