Self-Hosted Wiki for Households and Tiny Teams
Published 2026-08-26 · 18 min read · By Ben Liu
Pick BookStack vs Wiki.js vs Outline for the job, structure pages people will actually use, and back up content before the wiki becomes the only copy.
On this page
- Who this guide is for
- What a household wiki should hold
- BookStack vs Wiki.js vs Outline (decision table)
- Information architecture that survives
- Permissions without weekend cleanup
- Search before you migrate
- Docker Compose baseline
- Backups: database + uploads together
- Offline snapshot habit
- Adoption checklist (week one)
- Common failure modes
- Related reading
Who this guide is for
You want one place for router notes, backup steps, and "how we run the house" — not another chat thread that disappears when someone leaves the group. This guide covers wiki **selection**, **page structure**, **permissions**, and **backups** for households and teams under ten people.
If nobody will edit pages after week two, fix the workflow before you buy a domain for Wiki.js. A wiki that only you maintain is a personal notebook with extra login friction.
What a household wiki should hold
Good first pages: power-cycle instructions, VPN app name, top three services and their URLs, backup location in plain language, vendor support numbers, and one-page restore order. Bad first pages: aspirational architecture diagrams, empty template folders, and copy-paste upstream README walls.
Write for the person who arrives during an outage — not for the person who built the stack. Short sentences, numbered steps, screenshots only where they reduce ambiguity.
BookStack vs Wiki.js vs Outline (decision table)
| Need | Lean toward | Why |
|---|---|---|
| Runbooks with chapters and permissions | BookStack | Shelf/book/page hierarchy maps cleanly to ops docs |
| Git-backed Markdown + public docs feel | Wiki.js | Markdown export and theme flexibility |
| Fast team notes with SSO | Outline | Low ceremony; weaker if you need heavy runbook IA |
There is no universal winner. Pick the editor your least technical stakeholder will tolerate. If they refuse Markdown, BookStack or Outline often wins over Wiki.js on day one.
Information architecture that survives
Start with five shelves or spaces, not fifty:
- **Home / network** — DNS, Wi‑Fi, VPN, who owns the router login
- **Services** — one page per app: URL, compose path, backup volume, upgrade command
- **Restore** — ordered drill steps with dates of last successful test
- **People** — who to call, what they can access, break-glass paths
- **Vendors** — domain registrar, DNS, backup provider, ISP account numbers
Nested trees deeper than three levels become graveyards. Prefer linking between pages over deep folders.
Permissions without weekend cleanup
Default deny for guests. Household members get read on runbooks; only two accounts get edit on production procedures. Separate **playground** space for experiments so a relative's test page does not delete the restore guide.
If the wiki supports public links, disable them until you understand expiry and audit logs. A public edit link to "temporary docs" becomes permanent attack surface.
Search before you migrate
Import ten real queries your household already asks: "where are photos", "how to restart Immich", "backup password location". If search returns nothing useful, fix structure before bulk import. Search quality is adoption — not a polish task for month six.
Docker Compose baseline
Run the database on an internal network only. Pin image tags. Record compose path in STACK.md next to the wiki URL.
services:
wiki:
image: lscr.io/linuxserver/bookstack:version-v24.12.1
env_file: .env
volumes:
- wiki_config:/config
networks: [internal]
wiki-db:
image: mysql:8.0.36
volumes: [wiki_db:/var/lib/mysql]
networks: [internal]
caddy:
image: caddy:2.8.4
ports: ["443:443"]
volumes: [./Caddyfile:/etc/caddy/Caddyfile:ro]
networks: [edge, internal]
networks:
edge:
internal:
internal: true
volumes:
wiki_config:
wiki_db:Backups: database + uploads together
Wiki content without attachment volumes is a partial restore. Map mounts with `docker inspect` and include both in nightly jobs. Quarterly, export the top twenty pages to Markdown or PDF stored off-box — readable when the wiki host is down.
docker inspect wiki-app-1 --format '{{json .Mounts}}'
# restic or Borg: include wiki_db volume + wiki_config/uploads pathTest restore by opening one page with an embedded image and one table — formatting bugs show up only on real content.
Offline snapshot habit
During incidents the wiki may be unreachable. Keep a printed or PDF copy of: power cycle, VPN connect, homepage URL, and restore order. Update the snapshot when hostnames change — stale PDFs cause more panic than no PDF.
Adoption checklist (week one)
- Three pages written by someone other than the admin
- One successful search for a real household question
- One edit from a phone without breaking layout
- Backup job green; restore drill noted on the Restore shelf
If any item fails, simplify permissions or switch tools before adding plugins.
Common failure modes
- **Empty wiki syndrome** — pretty install, zero pages; fix with mandatory first three pages before DNS goes public
- **Duplicate truth** — wiki vs chat vs sticky notes; pick one canonical URL and link chat messages to it
- **Upgrade without export** — major version jumps without pre-export; schedule exports before upgrades
- **Attachment disk fill** — scanned PDFs and photos in wiki uploads; quota and separate volume
Lab notes pending — replace with measured values before publishing claims.
[Add real environment data here]
Wiki product + pinned tag:
DB volume name:
Uploads volume path:
Last restore drill (date):
Offline snapshot location:Related reading
See Family handoff documentation, Project management for tiny teams, Restore drill playbook, Docker Compose hardening, and Secure remote access.
Explore more
Related guides
- Self-Hosted RSS: Feed Readers, Sync, and OPML Hygiene
When to self-host FreshRSS or Miniflux, how to keep OPML portable, and fetch habits that respect publishers without turning RSS into another inbox.
- Ollama on a Homelab: Local LLMs Without Melting the Rack
Operator guide to running Ollama at home — install paths, Docker, model disk gravity, GPU vs CPU, API exposure, and a sane first weekend with Open WebUI.
- Updating Self-Hosted Apps Without Fear
A repeatable update ritual: changelog, snapshot, migrate, verify, and roll back — with lab notes from upgrade nights.
- Self-Hosted Project Management for Tiny Teams
Match PM ceremony to team size: one tracker, light templates, attachment hygiene, and restores that include file stores.