Installation
OwnDocs is a source purchase. After payment you receive a .zip and a .tar.gz
archive of the source: extract one once, then install dependencies with the
package manager that matches your target. This page covers the three supported
package managers and the exact cleanup steps for switching between them.
The commands below show the archive as owndocs-<version>.zip. Replace
<version> with the number in the filename you were sent, for example
owndocs-1.0.0.zip. These steps are for a first-time setup. If you already have
OwnDocs running somewhere, don't extract a new archive over it; your content and
configuration live in that project folder.
Pick a package manager
OwnDocs works with npm, Bun, and pnpm. Which one to choose depends on
where you are deploying:
npmis the recommended path for Vercel. Vercel detects Next.js andpackage-lock.jsonautomatically, sonpmis the zero-config default.Bunis the recommended path for self-hosted servers. It installs and builds faster, which matters for cold starts on your own infrastructure.pnpmis an equivalent self-hosted option when you already standardize on it.
package-lock.json is the authoritative lockfile in this repository. npm and
Vercel both consume it directly.
Prerequisites
- Node.js 20.9.0 or newer. That is the supported floor, set in
package.json. OwnDocs is built and tested on Node.js 24, which is what.nvmrcand the Dockerfile pin, so use 24 unless you have a reason not to. - The package manager you picked:
npm(ships with Node),bun, orpnpm
Steps
Install with npm
-
Extract the archive
BashBashunzip owndocs-<version>.zip mv owndocs-<version> my-docs cd my-docs -
Generate environment variables
BashBashbash scripts/setup-env.sh -
Install dependencies
BashBashnpm install -
Start the development server
BashBashnpm run dev
The site serves at http://localhost:3000.
Install with Bun
-
Extract the archive and generate environment variables
BashBashunzip owndocs-<version>.zip mv owndocs-<version> my-docs cd my-docs bash scripts/setup-env.sh -
Remove the npm lockfile and install cleanly
BashBashrm -f package-lock.json rm -rf node_modules bun install -
Start the development server
BashBashbun run dev
Install with pnpm
-
Extract the archive and generate environment variables
BashBashunzip owndocs-<version>.zip mv owndocs-<version> my-docs cd my-docs bash scripts/setup-env.sh -
Remove the npm lockfile and install cleanly
BashBashrm -f package-lock.json rm -rf node_modules pnpm install -
Start the development server
BashBashpnpm run dev
Switch package managers cleanly
Switching managers without cleanup leaves stale lockfiles and duplicate
dependency trees, which causes flaky installs and hard-to-trace build failures.
Remove the previous manager's lockfile and node_modules/ before a clean
install.
- From npm: remove
package-lock.jsonandnode_modules/. - From Bun: remove
bun.lockorbun.lockbandnode_modules/. - From pnpm: remove
pnpm-lock.yamlandnode_modules/.
Then run the target manager's install command. package-lock.json is the
repository's canonical lockfile, so npm and Vercel treat it as authoritative;
the other lockfiles are manager-local and safe to regenerate.
Result
After install, the development server runs at http://localhost:3000 with the
environment variables generated by scripts/setup-env.sh. Continue to
Deployment to go live.