Tesria

The parts of Tesria

Tesria is several programs, each in its own container, started together by docker compose up. Only one of them, Caddy, is reachable from outside the computer; the rest talk to each other on a private network Docker makes for them.

Mermaid diagram

The computer Tesria runs on

HTTPS

everything else

/collab

render this page

reads it back

Browser, script or assistant

caddy

app

collab

db: PostgreSQL

uploads volume

pdf

pgbackrest

backup

  • caddy answers on ports 80 and 443, and makes and renews the HTTPS certificate by itself: from Let’s Encrypt for a real domain, or its own for a name on your network. It sends /collab to the collaboration service and everything else to the app.

  • app is Tesria itself: the REST API under /api, the MCP server under /mcp, and the web pages, all from one process. It runs as a database role that may read and write pages but cannot alter the audit log.

  • db is PostgreSQL 18, with every page, version, comment and setting. Attachments are files in the uploads volume, not in the database.

  • collab is a small Node program that lets several people edit a page at once (see Editing together). Optional: without its secret, the editor works for one person at a time.

  • pdf is a headless browser. To export a page as HTML or PDF, or a space as a website, the app asks it to open the page the way a reader would and capture it (see Exports and wiki packs, in the code). Optional too.

  • pgbackrest and backup back the database and the attachments up, and report what they did by writing to tables the app only reads (see How backups work).

  • tailscale, only when started with --profile tailscale, puts Tesria on your tailnet (see Reaching Tesria from anywhere with Tailscale).

Everything that must survive lives in named Docker volumes (the database, attachments, backups, and Caddy’s certificates), never inside a container, so rebuilding or upgrading a container loses nothing.


Applies to

Tesria 0.6 and later

Updated

September 24, 2026

Changes

Revised.