Skip to content

Install (golden path)

One recommended path: one-liner → nitpub install/login → publish a note.

Optional gates during install: Caddy, Federation (cross-post default), and Analytics (config scaffold). Deep ops: deploy/README.md.

Prerequisites

  • A Linux VPS (Debian/Ubuntu for the installer helpers; ≈1 GB RAM is enough for idle use)
  • A domain pointed at the VPS (A/AAAA)
  • Root (or sudo) on the VPS

You do not need Go or Node on the VPS for the golden path.

1. DNS

Point your apex (and optional www) at the VPS:

TypeNameValue
A / AAAA@VPS address
A / AAAAwwwsame (optional)

For the public product/docs hosts (www.nitpub.com, docs.nitpub.com), see the product site cutover — those are separate from your blog apex.

2. Install

On the VPS as root:

bash
curl -fsSL https://raw.githubusercontent.com/newtosh/nitpub/main/scripts/install.sh | bash

That downloads the latest GitHub Release binary (linux amd64/arm64), installs it to /usr/local/bin/nitpub, and runs nitpub install.

The wizard asks for domain / actor / secret (or generates a secret), then y/n for Caddy, Federation, and Analytics. It writes config if missing, sets up systemd, creates an admin account, runs nitpub doctor, and prints a /login next step.

Noninteractive example (fail closed if required flags are missing):

bash
nitpub install --yes \
  --domain blog.example.com \
  --actor you \
  --secret "$(openssl rand -hex 32)" \
  --password '…' \
  --with-caddy --with-federation --no-analytics

Re-running nitpub install is lossless: existing config, Caddy site blocks, and site.toml are reported and skipped.

3. Publish your first note

  1. Open https://YOUR_DOMAIN/login and sign in.
  2. Open /author/compose and publish a note.
  3. Confirm it is public on / and /p/<slug>.

4. Verify

bash
nitpub doctor
curl -fsS "https://YOUR_DOMAIN/healthz"
curl -fsS "https://YOUR_DOMAIN/.well-known/webfinger?resource=acct:ACTOR@YOUR_DOMAIN"

Replace ACTOR with the actor value from your config.

Next

MIT Licensed