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:
| Type | Name | Value |
|---|---|---|
| A / AAAA | @ | VPS address |
| A / AAAA | www | same (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:
curl -fsSL https://raw.githubusercontent.com/newtosh/nitpub/main/scripts/install.sh | bashThat 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):
nitpub install --yes \
--domain blog.example.com \
--actor you \
--secret "$(openssl rand -hex 32)" \
--password '…' \
--with-caddy --with-federation --no-analyticsRe-running nitpub install is lossless: existing config, Caddy site blocks, and site.toml are reported and skipped.
3. Publish your first note
- Open
https://YOUR_DOMAIN/loginand sign in. - Open
/author/composeand publish a note. - Confirm it is public on
/and/p/<slug>.
4. Verify
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
- Manual download if you prefer not to use the one-liner
- Federation for a visible federated reply
- Analytics for optional GoatCounter