Finding reliable, affordable hosting for a Node.js app as a developer in Uzbekistan used to mean one of two painful choices: overpay for AWS or DigitalOcean (with high latency from Tashkent), or struggle with cheap local shared hosting that was never designed for modern web apps.
if.uz changes that. It's a self-hosted PaaS built specifically for Uzbekistan — free to start, automatic SSL, and your app is live in under 2 minutes. No Docker knowledge needed, no YAML files, no DevOps.
What You Need Before Starting
- A GitHub account with your Node.js app in a repository
- A
startscript in yourpackage.json(e.g.node index.jsornode dist/server.js) - Your app reads the port from
process.env.PORT— if.uz injects this automatically
Step 1 — Prepare Your package.json
if.uz uses Nixpacks to auto-detect your Node.js app. Make sure your package.json has a start script and lists any build step:
{
"name": "my-api",
"version": "1.0.0",
"scripts": {
"build": "tsc",
"start": "node dist/index.js"
},
"engines": {
"node": ">=18"
}
}💡 Tip
Always read the port from process.env.PORT. if.uz assigns a port dynamically. Hard-coding port 3000 will cause the health check to fail.
// ✅ Correct — reads PORT from environment
const PORT = process.env.PORT || 3000
app.listen(PORT, () => console.log(`Server running on port ${PORT}`))Step 2 — Sign Up on if.uz
- 1Go to if.uz and click "Get started free"
- 2Register with your email and choose a username — this becomes your subdomain prefix
- 3Connect your GitHub account when prompted (this lets if.uz access your repos)
Step 3 — Deploy Your Repo
- 1In the dashboard, click "Deploy new app"
- 2Choose "GitHub Private" or "GitHub Public" depending on your repo visibility
- 3Select your repository from the list
- 4Choose the branch to deploy (defaults to
main) - 5Click Deploy
Nixpacks automatically detects Node.js, installs your dependencies, runs your build script, and starts your app. The whole process takes about 90–120 seconds.
Step 4 — Your App Is Live
Once deployed, your app gets a free subdomain like my-api-username.if.uz with automatic HTTPS. You can see real-time CPU, memory, and network metrics right in the dashboard, plus live log streaming — no SSH required.
Adding Environment Variables
Go to your dashboard → your deployment → "Environment Variables". Add any secrets your app needs (database URL, API keys, etc.). Adding a variable automatically triggers a redeploy.
# These get injected into your app automatically:
DATABASE_URL=postgresql://user:pass@host:5432/mydb
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-secret-hereSetting Up a Database
Need a Postgres or Redis database? Go to the Marketplace tab and deploy one with a single click. The connection string is available immediately and works internally on the platform — no public exposure needed.
Custom Domain (Pro Plan)
On the Pro plan ($9/month), you can connect your own domain — for example api.mycompany.uz. Go to Settings → Custom Domain, enter your domain, and point your DNS CNAME to if.uz. SSL is provisioned automatically via Let's Encrypt.
Summary
| Feature | Free Plan | Pro ($9/mo) |
|---|---|---|
| Deployments | 1 | 5 |
| RAM | 256 MB | 1 GB |
| CPU | 0.25 vCPU | 1 vCPU |
| Subdomain | *.if.uz | *.if.uz |
| Custom domain | ✗ | ✓ |
| Log retention | 24h | 30 days |
if.uz is the fastest way to get a Node.js app running in Uzbekistan with a real URL, real SSL, and real monitoring — all for free. Sign up at if.uz and have your first app live in under 2 minutes.