Install with Docker
This is the easiest way to run NovaDocs on a VPS. Docker starts:
- a Postgres database
- the NovaDocs app
- applies the database schema
- creates the admin account (seed)
1. Install Docker
On Ubuntu:
bashcurl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER
Log out and back in so the docker group applies. Check:
bashdocker --version docker compose version
2. Get the NovaDocs files
Download the NovaDocs package from BuiltByBit:
https://builtbybit.com/resources/novadocs.120459/
Upload the zip to your server (SFTP with WinSCP / FileZilla works well), then unzip it. Example:
bashcd /var/www unzip novadocs-*.zip -d novadocs cd novadocs
Your folder name may differ depending on the zip you downloaded.
3. Create your environment file
bashcp .env.example .env
Edit .env and set at least:
envAUTH_SECRET="paste-a-long-random-string-here" NEXT_PUBLIC_APP_URL="http://YOUR_SERVER_IP:3000" SEED_ADMIN_EMAIL="you@example.com" SEED_ADMIN_PASSWORD="choose-a-strong-password" SEED_ADMIN_NAME="Admin"
Tips:
AUTH_SECRETshould be long and random (for example runopenssl rand -hex 32)- After you point a domain + HTTPS at the app, change
NEXT_PUBLIC_APP_URLtohttps://docs.yourdomain.com
Docker Compose already sets DATABASE_URL to the Postgres service. You usually do not need to change it for a basic Docker install.
4. Start NovaDocs
bashdocker compose up -d --build
First start can take a few minutes while the image builds.
Check that containers are running:
bashdocker compose ps docker compose logs -f app
When you see that the app started, open:
http://YOUR_SERVER_IP:3000
Admin login: the email and password you set in .env.
Demo docs: /guide/docs/1.0/en/introduction
5. Useful Docker commands
bash# Stop docker compose down # Start again docker compose up -d # View app logs docker compose logs -f app # Rebuild after an update (replace files with a new BuiltByBit download first) docker compose up -d --build # Re-run seed (updates guide docs / admin user) docker compose exec app npm run db:seed
Domain + HTTPS (optional)
Put a reverse proxy in front of port 3000 (Caddy, Nginx, Traefik, or Cloudflare).
Example Caddyfile:
codedocs.yourdomain.com { reverse_proxy localhost:3000 }
Then set:
envNEXT_PUBLIC_APP_URL="https://docs.yourdomain.com"
Restart:
bashdocker compose up -d
Troubleshooting
App keeps restarting
Run docker compose logs app and look for database errors. Wait until Postgres is healthy, then restart: docker compose restart app.
Cannot log in
Confirm SEED_ADMIN_EMAIL / SEED_ADMIN_PASSWORD in .env, then:
bashdocker compose exec app npm run db:seed
Port 3000 already used
Change the ports line in docker-compose.yml from "3000:3000" to "8080:3000", then open port 8080 instead.
