Hosting Guide

EduNest is a Node.js / Next.js 16 application. That single fact decides where it can run: you need a host that can serve a Next.js app (serverless or long-running Node), plus a PostgreSQL database and S3-compatible object storage. This guide compares the hosting options that actually fit EduNest and is honest about the constraints of each.

For the exact build/start/env steps once you've picked a host, see the Deployment Guide.

What Every Host Must Provide

Regardless of where you deploy, EduNest needs:

  • Node.js 20+ to build and run the app.
  • A PostgreSQL database reachable from the app — Neon is recommended, because EduNest uses the @neondatabase/serverless driver (HTTP-based, ideal for serverless).
  • S3-compatible object storage (Cloudflare R2 by default) for all uploads.
  • HTTPS on your domain — required for secure cookies and license activation.

Two database/storage notes that shape your choices:

  • The app never relies on the local disk for uploads in production — media goes to R2 / S3.
  • There is no migration framework; the schema is created idempotently on first run, so deploys are just "build and start".

Vercel is the natural home for a Next.js app and the lowest-maintenance path. The project ships with a vercel.json that sets the build/install/dev commands, pins a region, and registers the hourly cron — so most of the setup is done for you.

Strengths

  • First-class Next.js support, automatic HTTPS, zero-downtime deploys, and managed scaling.
  • The included vercel.json wires /api/v1/cron to run hourly automatically — no crontab to maintain.

The one constraint to understand

On Vercel the runtime filesystem is read-only. EduNest detects this automatically (Vercel sets the VERCEL environment variable). The practical consequences:

  • Uploads must go to R2 / S3. You cannot write files to local disk. Configure storage before going live.
  • The install wizard cannot write .env. Instead it returns the values it would have written (e.g. DATABASE_URL, JWT_SECRET, CRON_SECRET); add them in Project Settings → Environment Variables for Production, Preview, and Development, then redeploy.

Pair Vercel with Neon (database) and Cloudflare R2 (storage) and you have a fully managed, serverless deployment.

Option 2 — Node VPS (Self-Hosted, Full Control)

A VPS gives you a writable filesystem, persistent processes, and predictable pricing. Recommended providers include DigitalOcean, Hetzner, Linode, Vultr, and AWS Lightsail.

Terminal
# On the VPS
npm install
npm run build
npm run start            # serves on port 3000

Run it under a process manager so it restarts on crash and on boot, and put Nginx (or Caddy) in front for HTTPS:

Terminal
pm2 start "npm run start" --name edunest && pm2 save

Strengths

  • Writable filesystem — the install wizard can write .env and the .installed lock for you, and local-disk fallbacks work for testing.
  • Full root access; run anything you like alongside the app.

Responsibilities

  • You set up HTTPS yourself (Let's Encrypt via Nginx/Caddy is the usual route).

  • You wire up the hourly cron with a crontab entry (the wizard prints the exact line):

    Terminal
    0 * * * * curl -fsS "https://your-domain.com/api/v1/cron?key=YOUR_CRON_SECRET" >/dev/null 2>&1
    

Even on a VPS, the recommended setup is still managed Neon for the database and R2 for storage, so the box only runs the Node process and you don't manage database backups or file storage on it.

Option 3 — Any Other Node Host

Because EduNest is a standard Next.js app, it also runs on other Node-capable platforms — Render, Railway, Fly.io, a Node-enabled cPanel "Node.js app", or a container platform.

When evaluating one of these, check:

Requirement Why it matters
Node.js 20+ Build and runtime.
Persistent process or serverless Next.js support To serve the app.
Writable FS or R2/S3 storage If the FS is read-only, you must use R2/S3 for uploads (same as Vercel).
Ability to set environment variables For DATABASE_URL, JWT_SECRET, SECRET_KEY, etc.
Scheduled HTTP request (cron) To call /api/v1/cron hourly.

Shared/static-only hosting is not enough. EduNest is a server-rendered Node application, not a bundle of static files and not PHP. A plain static host or a basic PHP shared plan cannot run it. If a host advertises a "Node.js app" feature, confirm it allows persistent processes (or supports Next.js serverless) and lets you set environment variables.

Domain & HTTPS

  • Point your domain at your host (Vercel/managed platforms handle TLS automatically; on a VPS, terminate TLS at Nginx/Caddy with Let's Encrypt).
  • Set NEXT_PUBLIC_SITE_URL to your https:// domain so absolute links and SEO are correct.
  • HTTPS is also required for license activation — the license binds to your live production domain. Local and private-LAN hosts run in dev mode (licensing bypassed); your real domain must be activated. See the License Guide.

The PostgreSQL Choice

EduNest uses the Neon serverless driver (@neondatabase/serverless). Neon is recommended because the driver is purpose-built for it and communicates over HTTP, which works cleanly from serverless functions. Any PostgreSQL endpoint that this driver accepts will work; if you self-host PostgreSQL on a VPS, ensure it is reachable by the driver and that your DATABASE_URL includes the correct SSL mode.

Quick Recommendation

Your situation Suggested host
Want the least operational effort Vercel + Neon + Cloudflare R2
Want full control / writable FS Node VPS (PM2 + Nginx) + Neon + R2
Already on Render / Railway / Fly.io Use it — just confirm storage goes to R2/S3 if the FS is read-only

Whichever you choose, the database is Neon and storage is R2/S3 — that combination keeps EduNest portable and lets you move hosts without touching your data or media.


© CreativeCape Solutions · creative-cape.com · support@creative-cape.com